Retooled pattern passing - much neater now. :)
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4119 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
parent
591ceb9982
commit
10aef7cbc0
@ -37,6 +37,7 @@
|
||||
#include <Locker.h>
|
||||
#include "RGBColor.h"
|
||||
#include <Region.h>
|
||||
#include "PatternHandler.h"
|
||||
|
||||
class ServerCursor;
|
||||
class ServerBitmap;
|
||||
@ -102,15 +103,15 @@ public:
|
||||
virtual void DrawBitmap(ServerBitmap *bmp, BRect src, BRect dest, LayerData *d);
|
||||
virtual void DrawString(const char *string, int32 length, BPoint pt, LayerData *d, escapement_delta *delta=NULL);
|
||||
|
||||
virtual void FillArc(BRect r, float angle, float span, LayerData *d, int8 *pat);
|
||||
virtual void FillBezier(BPoint *pts, LayerData *d, int8 *pat);
|
||||
virtual void FillEllipse(BRect r, LayerData *d, int8 *pat);
|
||||
virtual void FillPolygon(BPoint *ptlist, int32 numpts, BRect rect, LayerData *d, int8 *pat);
|
||||
virtual void FillRect(BRect r, LayerData *d, int8 *pat);
|
||||
virtual void FillRegion(BRegion *r, LayerData *d, int8 *pat);
|
||||
virtual void FillRoundRect(BRect r, float xrad, float yrad, LayerData *d, int8 *pat);
|
||||
// virtual void FillShape(SShape *sh, LayerData *d, int8 *pat);
|
||||
virtual void FillTriangle(BPoint *pts, BRect r, LayerData *d, int8 *pat);
|
||||
virtual void FillArc(BRect r, float angle, float span, LayerData *d, const Pattern &pat);
|
||||
virtual void FillBezier(BPoint *pts, LayerData *d, const Pattern &pat);
|
||||
virtual void FillEllipse(BRect r, LayerData *d, const Pattern &pat);
|
||||
virtual void FillPolygon(BPoint *ptlist, int32 numpts, BRect rect, LayerData *d, const Pattern &pat);
|
||||
virtual void FillRect(BRect r, LayerData *d, const Pattern &pat);
|
||||
virtual void FillRegion(BRegion *r, LayerData *d, const Pattern &pat);
|
||||
virtual void FillRoundRect(BRect r, float xrad, float yrad, LayerData *d, const Pattern &pat);
|
||||
// virtual void FillShape(SShape *sh, LayerData *d, const Pattern &pat);
|
||||
virtual void FillTriangle(BPoint *pts, BRect r, LayerData *d, const Pattern &pat);
|
||||
|
||||
virtual void HideCursor(void);
|
||||
virtual bool IsCursorHidden(void);
|
||||
@ -120,16 +121,16 @@ public:
|
||||
virtual void ObscureCursor(void);
|
||||
virtual void SetCursor(ServerCursor *cursor);
|
||||
|
||||
virtual void StrokeArc(BRect r, float angle, float span, LayerData *d, int8 *pat);
|
||||
virtual void StrokeBezier(BPoint *pts, LayerData *d, int8 *pat);
|
||||
virtual void StrokeEllipse(BRect r, LayerData *d, int8 *pat);
|
||||
virtual void StrokeLine(BPoint start, BPoint end, LayerData *d, int8 *pat);
|
||||
virtual void StrokePolygon(BPoint *ptlist, int32 numpts, BRect rect, LayerData *d, int8 *pat, bool is_closed=true);
|
||||
virtual void StrokeRect(BRect r, LayerData *d, int8 *pat);
|
||||
virtual void StrokeRegion(BRegion *r, LayerData *d, int8 *pat);
|
||||
virtual void StrokeRoundRect(BRect r, float xrad, float yrad, LayerData *d, int8 *pat);
|
||||
// virtual void StrokeShape(SShape *sh, LayerData *d, int8 *pat);
|
||||
virtual void StrokeTriangle(BPoint *pts, BRect r, LayerData *d, int8 *pat);
|
||||
virtual void StrokeArc(BRect r, float angle, float span, LayerData *d, const Pattern &pat);
|
||||
virtual void StrokeBezier(BPoint *pts, LayerData *d, const Pattern &pat);
|
||||
virtual void StrokeEllipse(BRect r, LayerData *d, const Pattern &pat);
|
||||
virtual void StrokeLine(BPoint start, BPoint end, LayerData *d, const Pattern &pat);
|
||||
virtual void StrokePolygon(BPoint *ptlist, int32 numpts, BRect rect, LayerData *d, const Pattern &pat, bool is_closed=true);
|
||||
virtual void StrokeRect(BRect r, LayerData *d, const Pattern &pat);
|
||||
virtual void StrokeRegion(BRegion *r, LayerData *d, const Pattern &pat);
|
||||
virtual void StrokeRoundRect(BRect r, float xrad, float yrad, LayerData *d, const Pattern &pat);
|
||||
// virtual void StrokeShape(SShape *sh, LayerData *d, const Pattern &pat);
|
||||
virtual void StrokeTriangle(BPoint *pts, BRect r, LayerData *d, const Pattern &pat);
|
||||
virtual void StrokeLineArray(BPoint *pts, int32 numlines, RGBColor *colors, LayerData *d);
|
||||
virtual void SetMode(int32 mode);
|
||||
virtual bool DumpToFile(const char *path);
|
||||
|
@ -25,15 +25,43 @@
|
||||
//
|
||||
//------------------------------------------------------------------------------
|
||||
#ifndef PATTERNHADLER_H
|
||||
#define PATTERNHADLER_H
|
||||
|
||||
#include <SupportDefs.h>
|
||||
#include "RGBColor.h"
|
||||
|
||||
typedef union
|
||||
class Pattern
|
||||
{
|
||||
uint64 type64;
|
||||
int8 type8[8];
|
||||
} pattern_union;
|
||||
public:
|
||||
|
||||
Pattern(void) {}
|
||||
|
||||
Pattern(const uint64 &pat) { _pat.type64=pat; }
|
||||
|
||||
Pattern(int8 *pat) { _pat.type64=*((uint64*)pat); }
|
||||
|
||||
Pattern(const Pattern &src) { _pat.type64=src._pat.type64; }
|
||||
|
||||
const int8 *GetInt8(void) const { return _pat.type8; }
|
||||
|
||||
uint64 GetInt64(void) const { return _pat.type64; }
|
||||
|
||||
void Set(int8 *pat) { _pat.type64=*((uint64*)pat); }
|
||||
|
||||
void Set(const uint64 &pat) { _pat.type64=pat; }
|
||||
|
||||
Pattern & operator=(const Pattern &from) { _pat.type64=from._pat.type64; return *this; }
|
||||
Pattern & operator=(const int64 &from) { _pat.type64=from; return *this; }
|
||||
private:
|
||||
|
||||
typedef union
|
||||
{
|
||||
uint64 type64;
|
||||
int8 type8[8];
|
||||
} pattern_union;
|
||||
|
||||
pattern_union _pat;
|
||||
};
|
||||
|
||||
/*!
|
||||
\brief Class for easy calculation and use of patterns
|
||||
@ -48,16 +76,24 @@ class PatternHandler
|
||||
public:
|
||||
PatternHandler(void);
|
||||
PatternHandler(int8 *pat);
|
||||
PatternHandler(const uint64 &pat);
|
||||
PatternHandler(const Pattern &pat);
|
||||
~PatternHandler(void);
|
||||
void SetTarget(int8 *pat);
|
||||
void SetTarget(const uint64 &pat);
|
||||
void SetTarget(const Pattern &pat);
|
||||
void SetColors(const RGBColor &high, const RGBColor &low);
|
||||
RGBColor GetColor(const BPoint &pt);
|
||||
RGBColor GetColor(const float &x, const float &y);
|
||||
bool GetValue(const float &x, const float &y);
|
||||
bool GetValue(const BPoint &pt);
|
||||
private:
|
||||
pattern_union _pat;
|
||||
Pattern _pat;
|
||||
RGBColor *_high,*_low;
|
||||
};
|
||||
|
||||
extern const Pattern pat_solidhigh;
|
||||
extern const Pattern pat_solidlow;
|
||||
extern const Pattern pat_mixedcolors;
|
||||
|
||||
#endif
|
||||
|
@ -507,7 +507,7 @@ void AccelerantDriver::DrawString(const char *string, int32 length, BPoint pt, L
|
||||
Bounds checking must be done in this call because only part of the arc may end up
|
||||
being clipped.
|
||||
*/
|
||||
void AccelerantDriver::FillArc(BRect r, float angle, float span, LayerData *d, int8 *pat)
|
||||
void AccelerantDriver::FillArc(BRect r, float angle, float span, LayerData *d, const Pattern &pat)
|
||||
{
|
||||
float xc = (r.left+r.right)/2;
|
||||
float yc = (r.top+r.bottom)/2;
|
||||
@ -1050,7 +1050,7 @@ void AccelerantDriver::FillArc(BRect r, float angle, float span, LayerData *d, i
|
||||
I am not sure if this correctly handles cases where the curve backtracks along the diagonal
|
||||
line. I should probably investigate how the be code handles that, but it is a low priority.
|
||||
*/
|
||||
void AccelerantDriver::FillBezier(BPoint *pts, LayerData *d, int8 *pat)
|
||||
void AccelerantDriver::FillBezier(BPoint *pts, LayerData *d, const Pattern &pat)
|
||||
{
|
||||
double Ax, Bx, Cx, Dx;
|
||||
double Ay, By, Cy, Dy;
|
||||
@ -1129,7 +1129,7 @@ void AccelerantDriver::FillBezier(BPoint *pts, LayerData *d, int8 *pat)
|
||||
Bounds checking must be done in this call because only part of the ellipse may end up
|
||||
being clipped.
|
||||
*/
|
||||
void AccelerantDriver::FillEllipse(BRect r, LayerData *d, int8 *pat)
|
||||
void AccelerantDriver::FillEllipse(BRect r, LayerData *d, const Pattern &pat)
|
||||
{
|
||||
float xc = (r.left+r.right)/2;
|
||||
float yc = (r.top+r.bottom)/2;
|
||||
@ -1216,7 +1216,7 @@ void AccelerantDriver::FillEllipse(BRect r, LayerData *d, int8 *pat)
|
||||
The points in the array are not guaranteed to be within the framebuffer's
|
||||
coordinate range.
|
||||
*/
|
||||
void AccelerantDriver::FillPolygon(BPoint *ptlist, int32 numpts, BRect rect, LayerData *d, int8 *pat)
|
||||
void AccelerantDriver::FillPolygon(BPoint *ptlist, int32 numpts, BRect rect, LayerData *d, const Pattern &pat)
|
||||
{
|
||||
/* Here's the plan. Record all line segments in polygon. If a line segments crosses
|
||||
the y-value of a point not in the segment, split the segment into 2 segments.
|
||||
@ -1349,9 +1349,10 @@ void AccelerantDriver::FillPolygon(BPoint *ptlist, int32 numpts, BRect rect, Lay
|
||||
\param pat 8-byte array containing the pattern to use. Always non-NULL.
|
||||
|
||||
*/
|
||||
void AccelerantDriver::FillRect(BRect r, LayerData *d, int8 *pat)
|
||||
void AccelerantDriver::FillRect(BRect r, LayerData *d, const Pattern &pattern)
|
||||
{
|
||||
Lock();
|
||||
const int8 *pat=pattern.GetInt8();
|
||||
#ifndef DISABLE_HARDWARE_ACCELERATION
|
||||
if ( accFillRect && AcquireEngine && (((uint8)*pat == 0xFF) || (*pat == 0)) )
|
||||
{
|
||||
@ -1431,8 +1432,8 @@ void AccelerantDriver::FillRect(BRect r, LayerData *d, int8 *pat)
|
||||
}
|
||||
#endif
|
||||
|
||||
PatternHandler pattern(pat);
|
||||
pattern.SetColors(d->highcolor, d->lowcolor);
|
||||
PatternHandler pathandler(pattern);
|
||||
pathandler.SetColors(d->highcolor, d->lowcolor);
|
||||
|
||||
switch (mDisplayMode.space)
|
||||
{
|
||||
@ -1445,7 +1446,7 @@ void AccelerantDriver::FillRect(BRect r, LayerData *d, int8 *pat)
|
||||
{
|
||||
for (x=(int)r.left; x<=r.right; x++)
|
||||
{
|
||||
fb[x] = pattern.GetColor(x,y).GetColor8();
|
||||
fb[x] = pathandler.GetColor(x,y).GetColor8();
|
||||
}
|
||||
fb += mFrameBufferConfig.bytes_per_row;
|
||||
}
|
||||
@ -1463,7 +1464,7 @@ void AccelerantDriver::FillRect(BRect r, LayerData *d, int8 *pat)
|
||||
{
|
||||
for (x=(int)r.left; x<=r.right; x++)
|
||||
{
|
||||
fb[x] = pattern.GetColor(x,y).GetColor16();
|
||||
fb[x] = pathandler.GetColor(x,y).GetColor16();
|
||||
}
|
||||
fb = (uint16 *)((uint8 *)fb + mFrameBufferConfig.bytes_per_row);
|
||||
}
|
||||
@ -1480,7 +1481,7 @@ void AccelerantDriver::FillRect(BRect r, LayerData *d, int8 *pat)
|
||||
{
|
||||
for (x=(int)r.left; x<=r.right; x++)
|
||||
{
|
||||
color = pattern.GetColor(x,y).GetColor32();
|
||||
color = pathandler.GetColor(x,y).GetColor32();
|
||||
fb[x] = (color.alpha << 24) | (color.red << 16) | (color.green << 8) | (color.blue);
|
||||
}
|
||||
fb = (uint32 *)((uint8 *)fb + mFrameBufferConfig.bytes_per_row);
|
||||
@ -1504,7 +1505,7 @@ void AccelerantDriver::FillRect(BRect r, LayerData *d, int8 *pat)
|
||||
Bounds checking must be done in this call because only part of the roundrect may end
|
||||
up being clipped.
|
||||
*/
|
||||
void AccelerantDriver::FillRoundRect(BRect r, float xrad, float yrad, LayerData *d, int8 *pat)
|
||||
void AccelerantDriver::FillRoundRect(BRect r, float xrad, float yrad, LayerData *d, const Pattern &pat)
|
||||
{
|
||||
float arc_x;
|
||||
float yrad2 = yrad*yrad;
|
||||
@ -1530,7 +1531,7 @@ void AccelerantDriver::FillRoundRect(BRect r, float xrad, float yrad, LayerData
|
||||
Unlock();
|
||||
}
|
||||
|
||||
//void AccelerantDriver::FillShape(SShape *sh, LayerData *d, int8 *pat)
|
||||
//void AccelerantDriver::FillShape(SShape *sh, LayerData *d, const Pattern &pat)
|
||||
//{
|
||||
//}
|
||||
|
||||
@ -1545,9 +1546,9 @@ void AccelerantDriver::FillRoundRect(BRect r, float xrad, float yrad, LayerData
|
||||
Bounds checking must be done in this call because only part of the triangle may end
|
||||
up being clipped.
|
||||
*/
|
||||
void AccelerantDriver::FillTriangle(BPoint *pts, BRect r, LayerData *d, int8 *pat)
|
||||
void AccelerantDriver::FillTriangle(BPoint *pts, BRect r, LayerData *d, const Pattern &pat)
|
||||
{
|
||||
if(!pts || !d || !pat)
|
||||
if(!pts || !d)
|
||||
return;
|
||||
|
||||
Lock();
|
||||
@ -1927,7 +1928,7 @@ void AccelerantDriver::SetCursor(ServerCursor *csr)
|
||||
|
||||
Bounds checking must be done in this call because only part of the arc may end up
|
||||
being clipped.
|
||||
*/void AccelerantDriver::StrokeArc(BRect r, float angle, float span, LayerData *d, int8 *pat)
|
||||
*/void AccelerantDriver::StrokeArc(BRect r, float angle, float span, LayerData *d, const Pattern &pat)
|
||||
{
|
||||
float xc = (r.left+r.right)/2;
|
||||
float yc = (r.top+r.bottom)/2;
|
||||
@ -2094,7 +2095,7 @@ void AccelerantDriver::SetCursor(ServerCursor *csr)
|
||||
|
||||
Bounds checking must be done in this call.
|
||||
*/
|
||||
void AccelerantDriver::StrokeBezier(BPoint *pts, LayerData *d, int8 *pat)
|
||||
void AccelerantDriver::StrokeBezier(BPoint *pts, LayerData *d, const Pattern &pat)
|
||||
{
|
||||
double Ax, Bx, Cx, Dx;
|
||||
double Ay, By, Cy, Dy;
|
||||
@ -2162,7 +2163,7 @@ void AccelerantDriver::StrokeBezier(BPoint *pts, LayerData *d, int8 *pat)
|
||||
Bounds checking must be done in this call because only part of the ellipse may end up
|
||||
being clipped.
|
||||
*/
|
||||
void AccelerantDriver::StrokeEllipse(BRect r, LayerData *d, int8 *pat)
|
||||
void AccelerantDriver::StrokeEllipse(BRect r, LayerData *d, const Pattern &pat)
|
||||
{
|
||||
float xc = (r.left+r.right)/2;
|
||||
float yc = (r.top+r.bottom)/2;
|
||||
@ -2244,7 +2245,7 @@ void AccelerantDriver::StrokeEllipse(BRect r, LayerData *d, int8 *pat)
|
||||
a thickness greater than 1 will need to be done.
|
||||
This is capable of handling lines with invalid points.
|
||||
*/
|
||||
void AccelerantDriver::StrokeLine(BPoint start, BPoint end, LayerData *d, int8 *pat)
|
||||
void AccelerantDriver::StrokeLine(BPoint start, BPoint end, LayerData *d, const Pattern &pat)
|
||||
{
|
||||
int x1 = ROUND(start.x);
|
||||
int y1 = ROUND(start.y);
|
||||
@ -2292,7 +2293,7 @@ void AccelerantDriver::StrokeLine(BPoint start, BPoint end, LayerData *d, int8 *
|
||||
The points in the array are not guaranteed to be within the framebuffer's
|
||||
coordinate range.
|
||||
*/
|
||||
void AccelerantDriver::StrokePolygon(BPoint *ptlist, int32 numpts, BRect rect, LayerData *d, int8 *pat, bool is_closed)
|
||||
void AccelerantDriver::StrokePolygon(BPoint *ptlist, int32 numpts, BRect rect, LayerData *d, const Pattern &pat, bool is_closed)
|
||||
{
|
||||
/* Bounds checking is handled by StrokeLine and the functions it uses */
|
||||
Lock();
|
||||
@ -2310,7 +2311,7 @@ void AccelerantDriver::StrokePolygon(BPoint *ptlist, int32 numpts, BRect rect, L
|
||||
\param pat 8-byte array containing the pattern to use. Always non-NULL.
|
||||
|
||||
*/
|
||||
void AccelerantDriver::StrokeRect(BRect r, LayerData *d, int8 *pat)
|
||||
void AccelerantDriver::StrokeRect(BRect r, LayerData *d, const Pattern &pat)
|
||||
{
|
||||
Lock();
|
||||
int thick = (int)d->pensize;
|
||||
@ -2335,7 +2336,7 @@ void AccelerantDriver::StrokeRect(BRect r, LayerData *d, int8 *pat)
|
||||
Bounds checking must be done in this call because only part of the roundrect may end
|
||||
up being clipped.
|
||||
*/
|
||||
void AccelerantDriver::StrokeRoundRect(BRect r, float xrad, float yrad, LayerData *d, int8 *pat)
|
||||
void AccelerantDriver::StrokeRoundRect(BRect r, float xrad, float yrad, LayerData *d, const Pattern &pat)
|
||||
{
|
||||
float hLeft, hRight;
|
||||
float vTop, vBottom;
|
||||
@ -2367,7 +2368,7 @@ void AccelerantDriver::StrokeRoundRect(BRect r, float xrad, float yrad, LayerDat
|
||||
Unlock();
|
||||
}
|
||||
|
||||
//void AccelerantDriver::StrokeShape(SShape *sh, LayerData *d, int8 *pat)
|
||||
//void AccelerantDriver::StrokeShape(SShape *sh, LayerData *d, const Pattern &pat)
|
||||
//{
|
||||
//}
|
||||
|
||||
@ -2382,7 +2383,7 @@ void AccelerantDriver::StrokeRoundRect(BRect r, float xrad, float yrad, LayerDat
|
||||
Bounds checking must be done in this call because only part of the triangle may end
|
||||
up being clipped.
|
||||
*/
|
||||
void AccelerantDriver::StrokeTriangle(BPoint *pts, BRect r, LayerData *d, int8 *pat)
|
||||
void AccelerantDriver::StrokeTriangle(BPoint *pts, BRect r, LayerData *d, const Pattern &pat)
|
||||
{
|
||||
/* Bounds checking is handled by StrokeLine and the functions it calls */
|
||||
Lock();
|
||||
|
@ -42,9 +42,6 @@
|
||||
#include <Accelerant.h>
|
||||
#include "DisplayDriver.h"
|
||||
#include "PatternHandler.h"
|
||||
//#include <ft2build.h>
|
||||
//#include FT_FREETYPE_H
|
||||
//#include FT_GLYPH_H
|
||||
#include "FontServer.h"
|
||||
#if 0
|
||||
class VDWindow;
|
||||
@ -68,14 +65,14 @@ public:
|
||||
virtual void DrawBitmap(ServerBitmap *bmp, BRect src, BRect dest, LayerData *d);
|
||||
virtual void DrawString(const char *string, int32 length, BPoint pt, LayerData *d, escapement_delta *edelta=NULL);
|
||||
|
||||
virtual void FillArc(BRect r, float angle, float span, LayerData *d, int8 *pat);
|
||||
virtual void FillBezier(BPoint *pts, LayerData *d, int8 *pat);
|
||||
virtual void FillEllipse(BRect r, LayerData *d, int8 *pat);
|
||||
virtual void FillPolygon(BPoint *ptlist, int32 numpts, BRect rect, LayerData *d, int8 *pat);
|
||||
virtual void FillRect(BRect r, LayerData *d, int8 *pat);
|
||||
virtual void FillRoundRect(BRect r, float xrad, float yrad, LayerData *d, int8 *pat);
|
||||
// virtual void FillShape(SShape *sh, LayerData *d, int8 *pat);
|
||||
virtual void FillTriangle(BPoint *pts, BRect r, LayerData *d, int8 *pat);
|
||||
virtual void FillArc(BRect r, float angle, float span, LayerData *d, const Pattern &pat);
|
||||
virtual void FillBezier(BPoint *pts, LayerData *d, const Pattern &pat);
|
||||
virtual void FillEllipse(BRect r, LayerData *d, const Pattern &pat);
|
||||
virtual void FillPolygon(BPoint *ptlist, int32 numpts, BRect rect, LayerData *d, const Pattern &pat);
|
||||
virtual void FillRect(BRect r, LayerData *d, const Pattern &pat);
|
||||
virtual void FillRoundRect(BRect r, float xrad, float yrad, LayerData *d, const Pattern &pat);
|
||||
// virtual void FillShape(SShape *sh, LayerData *d, const Pattern &pat);
|
||||
virtual void FillTriangle(BPoint *pts, BRect r, LayerData *d, const Pattern &pat);
|
||||
|
||||
virtual void HideCursor(void);
|
||||
virtual void MoveCursorTo(float x, float y);
|
||||
@ -84,15 +81,15 @@ public:
|
||||
virtual void ObscureCursor(void);
|
||||
virtual void SetCursor(ServerCursor *csr);
|
||||
|
||||
virtual void StrokeArc(BRect r, float angle, float span, LayerData *d, int8 *pat);
|
||||
virtual void StrokeBezier(BPoint *pts, LayerData *d, int8 *pat);
|
||||
virtual void StrokeEllipse(BRect r, LayerData *d, int8 *pat);
|
||||
virtual void StrokeLine(BPoint start, BPoint end, LayerData *d, int8 *pat);
|
||||
virtual void StrokePolygon(BPoint *ptlist, int32 numpts, BRect rect, LayerData *d, int8 *pat, bool is_closed=true);
|
||||
virtual void StrokeRect(BRect r, LayerData *d, int8 *pat);
|
||||
virtual void StrokeRoundRect(BRect r, float xrad, float yrad, LayerData *d, int8 *pat);
|
||||
// virtual void StrokeShape(SShape *sh, LayerData *d, int8 *pat);
|
||||
virtual void StrokeTriangle(BPoint *pts, BRect r, LayerData *d, int8 *pat);
|
||||
virtual void StrokeArc(BRect r, float angle, float span, LayerData *d, const Pattern &pat);
|
||||
virtual void StrokeBezier(BPoint *pts, LayerData *d, const Pattern &pat);
|
||||
virtual void StrokeEllipse(BRect r, LayerData *d, const Pattern &pat);
|
||||
virtual void StrokeLine(BPoint start, BPoint end, LayerData *d, const Pattern &pat);
|
||||
virtual void StrokePolygon(BPoint *ptlist, int32 numpts, BRect rect, LayerData *d, const Pattern &pat, bool is_closed=true);
|
||||
virtual void StrokeRect(BRect r, LayerData *d, const Pattern &pat);
|
||||
virtual void StrokeRoundRect(BRect r, float xrad, float yrad, LayerData *d, const Pattern &pat);
|
||||
// virtual void StrokeShape(SShape *sh, LayerData *d, const Pattern &pat);
|
||||
virtual void StrokeTriangle(BPoint *pts, BRect r, LayerData *d, const Pattern &pat);
|
||||
virtual void StrokeLineArray(BPoint *pts, int32 numlines, RGBColor *colors, LayerData *d);
|
||||
virtual void SetMode(int32 mode);
|
||||
virtual bool DumpToFile(const char *path);
|
||||
|
@ -205,7 +205,7 @@ void BitmapDriver::DrawBitmap(ServerBitmap *bitmap, BRect source, BRect dest, La
|
||||
Bounds checking must be done in this call because only part of the arc may end up
|
||||
being clipped.
|
||||
*/
|
||||
void BitmapDriver::FillArc(BRect r, float angle, float span, LayerData *d, int8 *pat)
|
||||
void BitmapDriver::FillArc(BRect r, float angle, float span, LayerData *d, const Pattern &pat)
|
||||
{
|
||||
}
|
||||
|
||||
@ -218,7 +218,7 @@ void BitmapDriver::FillArc(BRect r, float angle, float span, LayerData *d, int8
|
||||
|
||||
Bounds checking must be done in this call.
|
||||
*/
|
||||
void BitmapDriver::FillBezier(BPoint *pts, LayerData *d, int8 *pat)
|
||||
void BitmapDriver::FillBezier(BPoint *pts, LayerData *d, const Pattern &pat)
|
||||
{
|
||||
}
|
||||
|
||||
@ -231,7 +231,7 @@ void BitmapDriver::FillBezier(BPoint *pts, LayerData *d, int8 *pat)
|
||||
Bounds checking must be done in this call because only part of the ellipse may end up
|
||||
being clipped.
|
||||
*/
|
||||
void BitmapDriver::FillEllipse(BRect r, LayerData *ldata, int8 *pat)
|
||||
void BitmapDriver::FillEllipse(BRect r, LayerData *ldata, const Pattern &pat)
|
||||
{
|
||||
// Ellipse code shamelessly stolen from the graphics library gd v2.0.1 and bolted on
|
||||
// to support our API
|
||||
@ -326,7 +326,7 @@ void BitmapDriver::FillEllipse(BRect r, LayerData *ldata, int8 *pat)
|
||||
\param pat 8-byte array containing the pattern to use. Always non-NULL.
|
||||
|
||||
*/
|
||||
void BitmapDriver::FillRect(BRect r, LayerData *d, int8 *pat)
|
||||
void BitmapDriver::FillRect(BRect r, LayerData *d, const Pattern &pat)
|
||||
{
|
||||
Lock();
|
||||
if(_target)
|
||||
@ -350,7 +350,7 @@ void BitmapDriver::FillRect(BRect r, LayerData *d, int8 *pat)
|
||||
Bounds checking must be done in this call because only part of the roundrect may end
|
||||
up being clipped.
|
||||
*/
|
||||
void BitmapDriver::FillRoundRect(BRect r, float xrad, float yrad, LayerData *d, int8 *pat)
|
||||
void BitmapDriver::FillRoundRect(BRect r, float xrad, float yrad, LayerData *d, const Pattern &pat)
|
||||
{
|
||||
printf("BitmapDriver::FillRoundRect unimplemented\n");
|
||||
StrokeRoundRect(r,xrad,yrad,d,pat);
|
||||
@ -367,9 +367,9 @@ void BitmapDriver::FillRoundRect(BRect r, float xrad, float yrad, LayerData *d,
|
||||
Bounds checking must be done in this call because only part of the triangle may end
|
||||
up being clipped.
|
||||
*/
|
||||
void BitmapDriver::FillTriangle(BPoint *pts, BRect r, LayerData *d, int8 *pat)
|
||||
void BitmapDriver::FillTriangle(BPoint *pts, BRect r, LayerData *d, const Pattern &pat)
|
||||
{
|
||||
if(!pts || !d || !pat)
|
||||
if(!pts || !d)
|
||||
return;
|
||||
|
||||
Lock();
|
||||
@ -622,7 +622,7 @@ void BitmapDriver::SetMode(int32 space)
|
||||
Bounds checking must be done in this call because only part of the arc may end up
|
||||
being clipped.
|
||||
*/
|
||||
void BitmapDriver::StrokeArc(BRect r, float angle, float span, LayerData *d, int8 *pat)
|
||||
void BitmapDriver::StrokeArc(BRect r, float angle, float span, LayerData *d, const Pattern &pat)
|
||||
{
|
||||
// TODO: Add pattern support
|
||||
float xc = (r.left+r.right)/2;
|
||||
@ -783,7 +783,7 @@ void BitmapDriver::StrokeArc(BRect r, float angle, float span, LayerData *d, int
|
||||
|
||||
Bounds checking must be done in this call.
|
||||
*/
|
||||
void BitmapDriver::StrokeBezier(BPoint *pts, LayerData *d, int8 *pat)
|
||||
void BitmapDriver::StrokeBezier(BPoint *pts, LayerData *d, const Pattern &pat)
|
||||
{
|
||||
// TODO: Add pattern support
|
||||
double Ax, Bx, Cx, Dx;
|
||||
@ -846,7 +846,7 @@ void BitmapDriver::StrokeBezier(BPoint *pts, LayerData *d, int8 *pat)
|
||||
Bounds checking must be done in this call because only part of the ellipse may end up
|
||||
being clipped.
|
||||
*/
|
||||
void BitmapDriver::StrokeEllipse(BRect r, LayerData *ldata, int8 *pat)
|
||||
void BitmapDriver::StrokeEllipse(BRect r, LayerData *ldata, const Pattern &pat)
|
||||
{
|
||||
// Ellipse code shamelessly stolen from the graphics library gd v2.0.1 and bolted on
|
||||
// to support our API
|
||||
@ -951,7 +951,7 @@ void BitmapDriver::StrokeEllipse(BRect r, LayerData *ldata, int8 *pat)
|
||||
The endpoints themselves are guaranteed to be in bounds, but clipping for lines with
|
||||
a thickness greater than 1 will need to be done.
|
||||
*/
|
||||
void BitmapDriver::StrokeLine(BPoint start, BPoint end, LayerData *d, int8 *pat)
|
||||
void BitmapDriver::StrokeLine(BPoint start, BPoint end, LayerData *d, const Pattern &pat)
|
||||
{
|
||||
Lock();
|
||||
if(_target)
|
||||
@ -1008,7 +1008,7 @@ void BitmapDriver::StrokeLine(BPoint start, BPoint end, LayerData *d, int8 *pat)
|
||||
The points in the array are not guaranteed to be within the framebuffer's
|
||||
coordinate range.
|
||||
*/
|
||||
void BitmapDriver::StrokePolygon(BPoint *ptlist, int32 numpts, BRect rect, LayerData *d, int8 *pat, bool is_closed)
|
||||
void BitmapDriver::StrokePolygon(BPoint *ptlist, int32 numpts, BRect rect, LayerData *d, const Pattern &pat, bool is_closed)
|
||||
{
|
||||
Lock();
|
||||
if(_target)
|
||||
@ -1029,7 +1029,7 @@ void BitmapDriver::StrokePolygon(BPoint *ptlist, int32 numpts, BRect rect, Layer
|
||||
\param pat 8-byte array containing the pattern to use. Always non-NULL.
|
||||
|
||||
*/
|
||||
void BitmapDriver::StrokeRect(BRect r, LayerData *d, int8 *pat)
|
||||
void BitmapDriver::StrokeRect(BRect r, LayerData *d, const Pattern &pat)
|
||||
{
|
||||
Lock();
|
||||
if(_target)
|
||||
@ -1053,7 +1053,7 @@ void BitmapDriver::StrokeRect(BRect r, LayerData *d, int8 *pat)
|
||||
Bounds checking must be done in this call because only part of the roundrect may end
|
||||
up being clipped.
|
||||
*/
|
||||
void BitmapDriver::StrokeRoundRect(BRect r, float xrad, float yrad, LayerData *d, int8 *pat)
|
||||
void BitmapDriver::StrokeRoundRect(BRect r, float xrad, float yrad, LayerData *d, const Pattern &pat)
|
||||
{
|
||||
float hLeft, hRight;
|
||||
float vTop, vBottom;
|
||||
@ -1095,7 +1095,7 @@ void BitmapDriver::StrokeRoundRect(BRect r, float xrad, float yrad, LayerData *d
|
||||
Bounds checking must be done in this call because only part of the triangle may end
|
||||
up being clipped.
|
||||
*/
|
||||
void BitmapDriver::StrokeTriangle(BPoint *pts, BRect r, LayerData *d, int8 *pat)
|
||||
void BitmapDriver::StrokeTriangle(BPoint *pts, BRect r, LayerData *d, const Pattern &pat)
|
||||
{
|
||||
Lock();
|
||||
if(_target)
|
||||
@ -1151,7 +1151,7 @@ void BitmapDriver::SetPixelPattern(int x, int y, uint8 *pattern, uint8 patternin
|
||||
}
|
||||
}
|
||||
|
||||
void BitmapDriver::Line(BPoint start, BPoint end, LayerData *d, int8 *pat)
|
||||
void BitmapDriver::Line(BPoint start, BPoint end, LayerData *d, const Pattern &pat)
|
||||
{
|
||||
// Internal function which is called from within other functions
|
||||
|
||||
|
@ -79,14 +79,14 @@ public:
|
||||
// virtual void DrawPicture(SPicture *pic, BPoint pt);
|
||||
virtual void DrawString(const char *string, int32 length, BPoint pt, LayerData *d, escapement_delta *delta=NULL);
|
||||
|
||||
virtual void FillArc(BRect r, float angle, float span, LayerData *d, int8 *pat);
|
||||
virtual void FillBezier(BPoint *pts, LayerData *d, int8 *pat);
|
||||
virtual void FillEllipse(BRect r, LayerData *d, int8 *pat);
|
||||
// virtual void FillPolygon(BPoint *ptlist, int32 numpts, BRect rect, LayerData *d, int8 *pat);
|
||||
virtual void FillRect(BRect r, LayerData *d, int8 *pat);
|
||||
virtual void FillRoundRect(BRect r, float xrad, float yrad, LayerData *d, int8 *pat);
|
||||
// virtual void FillShape(SShape *sh, LayerData *d, int8 *pat);
|
||||
virtual void FillTriangle(BPoint *pts, BRect r, LayerData *d, int8 *pat);
|
||||
virtual void FillArc(BRect r, float angle, float span, LayerData *d, const Pattern &pat);
|
||||
virtual void FillBezier(BPoint *pts, LayerData *d, const Pattern &pat);
|
||||
virtual void FillEllipse(BRect r, LayerData *d, const Pattern &pat);
|
||||
// virtual void FillPolygon(BPoint *ptlist, int32 numpts, BRect rect, LayerData *d, const Pattern &pat);
|
||||
virtual void FillRect(BRect r, LayerData *d, const Pattern &pat);
|
||||
virtual void FillRoundRect(BRect r, float xrad, float yrad, LayerData *d, const Pattern &pat);
|
||||
// virtual void FillShape(SShape *sh, LayerData *d, const Pattern &pat);
|
||||
virtual void FillTriangle(BPoint *pts, BRect r, LayerData *d, const Pattern &pat);
|
||||
|
||||
virtual void HideCursor(void);
|
||||
virtual void MoveCursorTo(float x, float y);
|
||||
@ -95,15 +95,15 @@ public:
|
||||
virtual void ObscureCursor(void);
|
||||
virtual void SetCursor(ServerCursor *cursor);
|
||||
|
||||
virtual void StrokeArc(BRect r, float angle, float span, LayerData *d, int8 *pat);
|
||||
virtual void StrokeBezier(BPoint *pts, LayerData *d, int8 *pat);
|
||||
virtual void StrokeEllipse(BRect r, LayerData *d, int8 *pat);
|
||||
virtual void StrokeLine(BPoint start, BPoint end, LayerData *d, int8 *pat);
|
||||
virtual void StrokePolygon(BPoint *ptlist, int32 numpts, BRect rect, LayerData *d, int8 *pat, bool is_closed=true);
|
||||
virtual void StrokeRect(BRect r, LayerData *d, int8 *pat);
|
||||
virtual void StrokeRoundRect(BRect r, float xrad, float yrad, LayerData *d, int8 *pat);
|
||||
// virtual void StrokeShape(SShape *sh, LayerData *d, int8 *pat);
|
||||
virtual void StrokeTriangle(BPoint *pts, BRect r, LayerData *d, int8 *pat);
|
||||
virtual void StrokeArc(BRect r, float angle, float span, LayerData *d, const Pattern &pat);
|
||||
virtual void StrokeBezier(BPoint *pts, LayerData *d, const Pattern &pat);
|
||||
virtual void StrokeEllipse(BRect r, LayerData *d, const Pattern &pat);
|
||||
virtual void StrokeLine(BPoint start, BPoint end, LayerData *d, const Pattern &pat);
|
||||
virtual void StrokePolygon(BPoint *ptlist, int32 numpts, BRect rect, LayerData *d, const Pattern &pat, bool is_closed=true);
|
||||
virtual void StrokeRect(BRect r, LayerData *d, const Pattern &pat);
|
||||
virtual void StrokeRoundRect(BRect r, float xrad, float yrad, LayerData *d, const Pattern &pat);
|
||||
// virtual void StrokeShape(SShape *sh, LayerData *d, const Pattern &pat);
|
||||
virtual void StrokeTriangle(BPoint *pts, BRect r, LayerData *d, const Pattern &pat);
|
||||
// virtual void StrokeLineArray(BPoint *pts, int32 numlines, RGBColor *colors, LayerData *d);
|
||||
virtual void SetMode(int32 mode);
|
||||
float StringWidth(const char *string, int32 length, LayerData *d);
|
||||
@ -115,7 +115,7 @@ protected:
|
||||
void BlitBitmap(ServerBitmap *sourcebmp, BRect sourcerect, BRect destrect, drawing_mode mode=B_OP_COPY);
|
||||
void ExtractToBitmap(ServerBitmap *destbmp, BRect destrect, BRect sourcerect);
|
||||
void SetPixelPattern(int x, int y, uint8 *pattern, uint8 patternindex);
|
||||
void Line(BPoint start, BPoint end, LayerData *d, int8 *pat);
|
||||
void Line(BPoint start, BPoint end, LayerData *d, const Pattern &pat);
|
||||
void HLine(int32 x1, int32 x2, int32 y, RGBColor color);
|
||||
void HLineThick(int32 x1, int32 x2, int32 y, int32 thick, PatternHandler *pat);
|
||||
rgb_color GetBlitColor(rgb_color src, rgb_color dest, LayerData *d, bool use_high=true);
|
||||
|
@ -61,8 +61,6 @@ DefaultDecorator::DefaultDecorator(BRect rect, int32 wlook, int32 wfeel, int32 w
|
||||
|
||||
// This flag is used to determine whether or not we're moving the tab
|
||||
slidetab=false;
|
||||
solidhigh=0xFFFFFFFFFFFFFFFFLL;
|
||||
solidlow=0;
|
||||
|
||||
// tab_highcol=_colors->window_tab;
|
||||
// tab_lowcol=_colors->window_tab;
|
||||
@ -339,7 +337,7 @@ printf("DefaultDecorator: Draw(%.1f,%.1f,%.1f,%.1f)\n",update.left,update.top,up
|
||||
_layerdata.highcolor=_colors->document_background;
|
||||
|
||||
if(_borderrect.Intersects(update))
|
||||
_driver->FillRect(_borderrect & update,&_layerdata,(int8*)&solidhigh);
|
||||
_driver->FillRect(_borderrect & update,&_layerdata,pat_solidhigh);
|
||||
|
||||
_DrawFrame(update);
|
||||
|
||||
@ -353,7 +351,7 @@ void DefaultDecorator::Draw(void)
|
||||
// Draw the top view's client area - just a hack :)
|
||||
// _layerdata.highcolor=_colors->document_background;
|
||||
|
||||
// _driver->FillRect(_borderrect,&_layerdata,(int8*)&solidhigh);
|
||||
// _driver->FillRect(_borderrect,&_layerdata,pat_solidhigh);
|
||||
|
||||
DrawFrame();
|
||||
|
||||
@ -386,9 +384,9 @@ void DefaultDecorator::_DrawTab(BRect r)
|
||||
return;
|
||||
|
||||
_layerdata.highcolor=(GetFocus())?_colors->window_tab:_colors->inactive_window_tab;
|
||||
_driver->FillRect(_tabrect,&_layerdata,(int8*)&solidhigh);
|
||||
_driver->FillRect(_tabrect,&_layerdata,pat_solidhigh);
|
||||
_layerdata.highcolor=framecolors[3];
|
||||
_driver->StrokeLine(_tabrect.LeftBottom(),_tabrect.RightBottom(),&_layerdata,(int8*)&solidhigh);
|
||||
_driver->StrokeLine(_tabrect.LeftBottom(),_tabrect.RightBottom(),&_layerdata,pat_solidhigh);
|
||||
|
||||
_DrawTitle(_tabrect);
|
||||
|
||||
@ -442,7 +440,7 @@ void DefaultDecorator::DrawBlendedRect(BRect r, bool down)
|
||||
uint8(startcol.blue-(i*bstep)));
|
||||
_layerdata.highcolor=tmpcol;
|
||||
_driver->StrokeLine(BPoint(r.left,r.top+i),
|
||||
BPoint(r.left+i,r.top),&_layerdata,(int8*)&solidhigh);
|
||||
BPoint(r.left+i,r.top),&_layerdata,pat_solidhigh);
|
||||
|
||||
SetRGBColor(&tmpcol, uint8(halfcol.red-(i*rstep)),
|
||||
uint8(halfcol.green-(i*gstep)),
|
||||
@ -450,14 +448,14 @@ void DefaultDecorator::DrawBlendedRect(BRect r, bool down)
|
||||
|
||||
_layerdata.highcolor=tmpcol;
|
||||
_driver->StrokeLine(BPoint(r.left+steps,r.top+i),
|
||||
BPoint(r.left+i,r.top+steps),&_layerdata,(int8*)&solidhigh);
|
||||
BPoint(r.left+i,r.top+steps),&_layerdata,pat_solidhigh);
|
||||
|
||||
}
|
||||
|
||||
// _layerdata.highcolor=startcol;
|
||||
// _driver->FillRect(r,&_layerdata,(int8*)&solidhigh);
|
||||
// _driver->FillRect(r,&_layerdata,pat_solidhigh);
|
||||
_layerdata.highcolor=framecolors[3];
|
||||
_driver->StrokeRect(r,&_layerdata,(int8*)&solidhigh);
|
||||
_driver->StrokeRect(r,&_layerdata,pat_solidhigh);
|
||||
}
|
||||
|
||||
void DefaultDecorator::_DrawFrame(BRect invalid)
|
||||
@ -467,7 +465,7 @@ void DefaultDecorator::_DrawFrame(BRect invalid)
|
||||
// we must clip the lines drawn by this function to the invalid rectangle we are given
|
||||
|
||||
#ifdef USE_VIEW_FILL_HACK
|
||||
_driver->FillRect(_borderrect,&_layerdata,(int8*)&solidhigh);
|
||||
_driver->FillRect(_borderrect,&_layerdata,pat_solidhigh);
|
||||
#endif
|
||||
|
||||
if(!borderwidth)
|
||||
@ -744,8 +742,6 @@ void DefaultDecorator::_DrawFrame(BRect invalid)
|
||||
// Draw the resize thumb if we're supposed to
|
||||
if(!(_flags & B_NOT_RESIZABLE))
|
||||
{
|
||||
pattern_union highcolor;
|
||||
highcolor.type64=0xffffffffffffffffLL;
|
||||
r=_resizerect;
|
||||
|
||||
// int32 w=r.IntegerWidth(), h=r.IntegerHeight();
|
||||
@ -756,17 +752,18 @@ void DefaultDecorator::_DrawFrame(BRect invalid)
|
||||
r.right-=4;
|
||||
r.bottom-=4;
|
||||
_layerdata.highcolor=framecolors[2];
|
||||
_driver->StrokeLine(r.LeftTop(),r.RightTop(),&_layerdata,highcolor.type8);
|
||||
_driver->StrokeLine(r.LeftTop(),r.LeftBottom(),&_layerdata,highcolor.type8);
|
||||
|
||||
_driver->StrokeLine(r.LeftTop(),r.RightTop(),&_layerdata,pat_solidhigh);
|
||||
_driver->StrokeLine(r.LeftTop(),r.LeftBottom(),&_layerdata,pat_solidhigh);
|
||||
|
||||
r.OffsetBy(1,1);
|
||||
_layerdata.highcolor=framecolors[0];
|
||||
_driver->StrokeLine(r.LeftTop(),r.RightTop(),&_layerdata,highcolor.type8);
|
||||
_driver->StrokeLine(r.LeftTop(),r.LeftBottom(),&_layerdata,highcolor.type8);
|
||||
_driver->StrokeLine(r.LeftTop(),r.RightTop(),&_layerdata,pat_solidhigh);
|
||||
_driver->StrokeLine(r.LeftTop(),r.LeftBottom(),&_layerdata,pat_solidhigh);
|
||||
|
||||
r.OffsetBy(1,1);
|
||||
_layerdata.highcolor=framecolors[1];
|
||||
_driver->FillRect(r,&_layerdata,highcolor.type8);
|
||||
_driver->FillRect(r,&_layerdata,pat_solidhigh);
|
||||
|
||||
/* r.left+=2;
|
||||
r.top+=2;
|
||||
@ -802,25 +799,25 @@ void DefaultDecorator::_DrawFrame(BRect invalid)
|
||||
uint8(startcol.blue-(i*bstep)));
|
||||
|
||||
_driver->StrokeLine(BPoint(r.left,r.top+i),
|
||||
BPoint(r.left+i,r.top),&_layerdata,(int8*)&solidhigh);
|
||||
BPoint(r.left+i,r.top),&_layerdata,pat_solidhigh);
|
||||
|
||||
_layerdata.highcolor.SetColor(uint8(halfcol.red-(i*rstep)),
|
||||
uint8(halfcol.green-(i*gstep)),
|
||||
uint8(halfcol.blue-(i*bstep)));
|
||||
_driver->StrokeLine(BPoint(r.left+steps,r.top+i),
|
||||
BPoint(r.left+i,r.top+steps),&_layerdata,(int8*)&solidhigh);
|
||||
BPoint(r.left+i,r.top+steps),&_layerdata,pat_solidhigh);
|
||||
}
|
||||
_driver->Unlock();
|
||||
// _layerdata.highcolor=framecolors[4];
|
||||
// _driver->StrokeRect(r,&_layerdata,(int8*)&solidhigh);
|
||||
// _driver->StrokeRect(r,&_layerdata,pat_solidhigh);
|
||||
}
|
||||
else
|
||||
{
|
||||
_layerdata.highcolor=framecolors[4];
|
||||
_driver->StrokeLine(BPoint(r.right,r.top),BPoint(r.right-3,r.top),
|
||||
&_layerdata,(int8*)&solidhigh);
|
||||
&_layerdata,pat_solidhigh);
|
||||
_driver->StrokeLine(BPoint(r.left,r.bottom),BPoint(r.left,r.bottom-3),
|
||||
&_layerdata,(int8*)&solidhigh);
|
||||
&_layerdata,pat_solidhigh);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -143,12 +143,12 @@ void DisplayDriver::DrawString(const char *string, int32 length, BPoint pt, Laye
|
||||
\param angle Starting angle for the arc in degrees
|
||||
\param span Span of the arc in degrees. Ending angle = angle+span.
|
||||
\param d Data structure containing any other data necessary for the call. Always non-NULL.
|
||||
\param pat 8-byte array containing the pattern to use. Always non-NULL.
|
||||
\param pat 8-byte array containing the const Pattern &to use. Always non-NULL.
|
||||
|
||||
Bounds checking must be done in this call because only part of the arc may end up
|
||||
being clipped.
|
||||
*/
|
||||
void DisplayDriver::FillArc(BRect r, float angle, float span, LayerData *d, int8 *pat)
|
||||
void DisplayDriver::FillArc(BRect r, float angle, float span, LayerData *d, const Pattern &pat)
|
||||
{
|
||||
}
|
||||
|
||||
@ -157,11 +157,11 @@ void DisplayDriver::FillArc(BRect r, float angle, float span, LayerData *d, int8
|
||||
\param pts 4-element array of BPoints in the order of start, end, and then the two control
|
||||
points.
|
||||
\param d Data structure containing any other data necessary for the call. Always non-NULL.
|
||||
\param pat 8-byte array containing the pattern to use. Always non-NULL.
|
||||
\param pat 8-byte array containing the const Pattern &to use. Always non-NULL.
|
||||
|
||||
Bounds checking must be done in this call.
|
||||
*/
|
||||
void DisplayDriver::FillBezier(BPoint *pts, LayerData *d, int8 *pat)
|
||||
void DisplayDriver::FillBezier(BPoint *pts, LayerData *d, const Pattern &pat)
|
||||
{
|
||||
}
|
||||
|
||||
@ -169,12 +169,12 @@ void DisplayDriver::FillBezier(BPoint *pts, LayerData *d, int8 *pat)
|
||||
\brief Called for all BView::FillEllipse calls
|
||||
\param r BRect enclosing the ellipse to be drawn.
|
||||
\param d Data structure containing any other data necessary for the call. Always non-NULL.
|
||||
\param pat 8-byte array containing the pattern to use. Always non-NULL.
|
||||
\param pat 8-byte array containing the const Pattern &to use. Always non-NULL.
|
||||
|
||||
Bounds checking must be done in this call because only part of the ellipse may end up
|
||||
being clipped.
|
||||
*/
|
||||
void DisplayDriver::FillEllipse(BRect r, LayerData *d, int8 *pat)
|
||||
void DisplayDriver::FillEllipse(BRect r, LayerData *d, const Pattern &pat)
|
||||
{
|
||||
}
|
||||
|
||||
@ -184,12 +184,12 @@ void DisplayDriver::FillEllipse(BRect r, LayerData *d, int8 *pat)
|
||||
\param numpts Number of points in the BPoint array.
|
||||
\param rect Rectangle which contains the polygon
|
||||
\param d Data structure containing any other data necessary for the call. Always non-NULL.
|
||||
\param pat 8-byte array containing the pattern to use. Always non-NULL.
|
||||
\param pat 8-byte array containing the const Pattern &to use. Always non-NULL.
|
||||
|
||||
The points in the array are not guaranteed to be within the framebuffer's
|
||||
coordinate range.
|
||||
*/
|
||||
void DisplayDriver::FillPolygon(BPoint *ptlist, int32 numpts, BRect rect, LayerData *d, int8 *pat)
|
||||
void DisplayDriver::FillPolygon(BPoint *ptlist, int32 numpts, BRect rect, LayerData *d, const Pattern &pat)
|
||||
{
|
||||
}
|
||||
|
||||
@ -197,10 +197,10 @@ void DisplayDriver::FillPolygon(BPoint *ptlist, int32 numpts, BRect rect, LayerD
|
||||
\brief Called for all BView::FillRect calls
|
||||
\param r BRect to be filled. Guaranteed to be in the frame buffer's coordinate space
|
||||
\param d Data structure containing any other data necessary for the call. Always non-NULL.
|
||||
\param pat 8-byte array containing the pattern to use. Always non-NULL.
|
||||
\param pat 8-byte array containing the const Pattern &to use. Always non-NULL.
|
||||
|
||||
*/
|
||||
void DisplayDriver::FillRect(BRect r, LayerData *d, int8 *pat)
|
||||
void DisplayDriver::FillRect(BRect r, LayerData *d, const Pattern &pat)
|
||||
{
|
||||
}
|
||||
|
||||
@ -208,12 +208,12 @@ void DisplayDriver::FillRect(BRect r, LayerData *d, int8 *pat)
|
||||
\brief Convenience function for server use
|
||||
\param r BRegion to be filled
|
||||
\param d Data structure containing any other data necessary for the call. Always non-NULL.
|
||||
\param pat 8-byte array containing the pattern to use. Always non-NULL.
|
||||
\param pat 8-byte array containing the const Pattern &to use. Always non-NULL.
|
||||
|
||||
*/
|
||||
void DisplayDriver::FillRegion(BRegion *r, LayerData *d, int8 *pat)
|
||||
void DisplayDriver::FillRegion(BRegion *r, LayerData *d, const Pattern &pat)
|
||||
{
|
||||
if(!r || !d || !pat)
|
||||
if(!r || !d)
|
||||
return;
|
||||
|
||||
Lock();
|
||||
@ -230,16 +230,16 @@ void DisplayDriver::FillRegion(BRegion *r, LayerData *d, int8 *pat)
|
||||
\param xrad X radius of the corner arcs
|
||||
\param yrad Y radius of the corner arcs
|
||||
\param d Data structure containing any other data necessary for the call. Always non-NULL.
|
||||
\param pat 8-byte array containing the pattern to use. Always non-NULL.
|
||||
\param pat 8-byte array containing the const Pattern &to use. Always non-NULL.
|
||||
|
||||
Bounds checking must be done in this call because only part of the roundrect may end
|
||||
up being clipped.
|
||||
*/
|
||||
void DisplayDriver::FillRoundRect(BRect r, float xrad, float yrad, LayerData *d, int8 *pat)
|
||||
void DisplayDriver::FillRoundRect(BRect r, float xrad, float yrad, LayerData *d, const Pattern &pat)
|
||||
{
|
||||
}
|
||||
|
||||
//void DisplayDriver::FillShape(SShape *sh, LayerData *d, int8 *pat)
|
||||
//void DisplayDriver::FillShape(SShape *sh, LayerData *d, const Pattern &pat)
|
||||
//{
|
||||
//}
|
||||
|
||||
@ -249,12 +249,12 @@ void DisplayDriver::FillRoundRect(BRect r, float xrad, float yrad, LayerData *d,
|
||||
\param r BRect enclosing the triangle. While it will definitely enclose the triangle,
|
||||
it may not be within the frame buffer's bounds.
|
||||
\param d Data structure containing any other data necessary for the call. Always non-NULL.
|
||||
\param pat 8-byte array containing the pattern to use. Always non-NULL.
|
||||
\param pat 8-byte array containing the const Pattern &to use. Always non-NULL.
|
||||
|
||||
Bounds checking must be done in this call because only part of the triangle may end
|
||||
up being clipped.
|
||||
*/
|
||||
void DisplayDriver::FillTriangle(BPoint *pts, BRect r, LayerData *d, int8 *pat)
|
||||
void DisplayDriver::FillTriangle(BPoint *pts, BRect r, LayerData *d, const Pattern &pat)
|
||||
{
|
||||
}
|
||||
|
||||
@ -364,12 +364,12 @@ void DisplayDriver::SetCursor(ServerCursor *cursor)
|
||||
\param angle Starting angle for the arc in degrees
|
||||
\param span Span of the arc in degrees. Ending angle = angle+span.
|
||||
\param d Data structure containing any other data necessary for the call. Always non-NULL.
|
||||
\param pat 8-byte array containing the pattern to use. Always non-NULL.
|
||||
\param pat 8-byte array containing the const Pattern &to use. Always non-NULL.
|
||||
|
||||
Bounds checking must be done in this call because only part of the arc may end up
|
||||
being clipped.
|
||||
*/
|
||||
void DisplayDriver::StrokeArc(BRect r, float angle, float span, LayerData *d, int8 *pat)
|
||||
void DisplayDriver::StrokeArc(BRect r, float angle, float span, LayerData *d, const Pattern &pat)
|
||||
{
|
||||
}
|
||||
|
||||
@ -378,11 +378,11 @@ void DisplayDriver::StrokeArc(BRect r, float angle, float span, LayerData *d, in
|
||||
\param pts 4-element array of BPoints in the order of start, end, and then the two control
|
||||
points.
|
||||
\param d Data structure containing any other data necessary for the call. Always non-NULL.
|
||||
\param pat 8-byte array containing the pattern to use. Always non-NULL.
|
||||
\param pat 8-byte array containing the const Pattern &to use. Always non-NULL.
|
||||
|
||||
Bounds checking must be done in this call.
|
||||
*/
|
||||
void DisplayDriver::StrokeBezier(BPoint *pts, LayerData *d, int8 *pat)
|
||||
void DisplayDriver::StrokeBezier(BPoint *pts, LayerData *d, const Pattern &pat)
|
||||
{
|
||||
}
|
||||
|
||||
@ -390,12 +390,12 @@ void DisplayDriver::StrokeBezier(BPoint *pts, LayerData *d, int8 *pat)
|
||||
\brief Called for all BView::StrokeEllipse calls
|
||||
\param r BRect enclosing the ellipse to be drawn.
|
||||
\param d Data structure containing any other data necessary for the call. Always non-NULL.
|
||||
\param pat 8-byte array containing the pattern to use. Always non-NULL.
|
||||
\param pat 8-byte array containing the const Pattern &to use. Always non-NULL.
|
||||
|
||||
Bounds checking must be done in this call because only part of the ellipse may end up
|
||||
being clipped.
|
||||
*/
|
||||
void DisplayDriver::StrokeEllipse(BRect r, LayerData *d, int8 *pat)
|
||||
void DisplayDriver::StrokeEllipse(BRect r, LayerData *d, const Pattern &pat)
|
||||
{
|
||||
}
|
||||
|
||||
@ -404,12 +404,12 @@ void DisplayDriver::StrokeEllipse(BRect r, LayerData *d, int8 *pat)
|
||||
\param start Starting point
|
||||
\param end Ending point
|
||||
\param d Data structure containing any other data necessary for the call. Always non-NULL.
|
||||
\param pat 8-byte array containing the pattern to use. Always non-NULL.
|
||||
\param pat 8-byte array containing the const Pattern &to use. Always non-NULL.
|
||||
|
||||
The endpoints themselves are guaranteed to be in bounds, but clipping for lines with
|
||||
a thickness greater than 1 will need to be done.
|
||||
*/
|
||||
void DisplayDriver::StrokeLine(BPoint start, BPoint end, LayerData *d, int8 *pat)
|
||||
void DisplayDriver::StrokeLine(BPoint start, BPoint end, LayerData *d, const Pattern &pat)
|
||||
{
|
||||
}
|
||||
|
||||
@ -419,12 +419,12 @@ void DisplayDriver::StrokeLine(BPoint start, BPoint end, LayerData *d, int8 *pat
|
||||
\param numpts Number of points in the BPoint array.
|
||||
\param rect Rectangle which contains the polygon
|
||||
\param d Data structure containing any other data necessary for the call. Always non-NULL.
|
||||
\param pat 8-byte array containing the pattern to use. Always non-NULL.
|
||||
\param pat 8-byte array containing the const Pattern &to use. Always non-NULL.
|
||||
|
||||
The points in the array are not guaranteed to be within the framebuffer's
|
||||
coordinate range.
|
||||
*/
|
||||
void DisplayDriver::StrokePolygon(BPoint *ptlist, int32 numpts, BRect rect, LayerData *d, int8 *pat, bool is_closed)
|
||||
void DisplayDriver::StrokePolygon(BPoint *ptlist, int32 numpts, BRect rect, LayerData *d, const Pattern &pat, bool is_closed)
|
||||
{
|
||||
}
|
||||
|
||||
@ -432,10 +432,10 @@ void DisplayDriver::StrokePolygon(BPoint *ptlist, int32 numpts, BRect rect, Laye
|
||||
\brief Called for all BView::StrokeRect calls
|
||||
\param r BRect to be filled. Guaranteed to be in the frame buffer's coordinate space
|
||||
\param d Data structure containing any other data necessary for the call. Always non-NULL.
|
||||
\param pat 8-byte array containing the pattern to use. Always non-NULL.
|
||||
\param pat 8-byte array containing the const Pattern &to use. Always non-NULL.
|
||||
|
||||
*/
|
||||
void DisplayDriver::StrokeRect(BRect r, LayerData *d, int8 *pat)
|
||||
void DisplayDriver::StrokeRect(BRect r, LayerData *d, const Pattern &pat)
|
||||
{
|
||||
}
|
||||
|
||||
@ -443,12 +443,12 @@ void DisplayDriver::StrokeRect(BRect r, LayerData *d, int8 *pat)
|
||||
\brief Convenience function for server use
|
||||
\param r BRegion to be stroked
|
||||
\param d Data structure containing any other data necessary for the call. Always non-NULL.
|
||||
\param pat 8-byte array containing the pattern to use. Always non-NULL.
|
||||
\param pat 8-byte array containing the const Pattern &to use. Always non-NULL.
|
||||
|
||||
*/
|
||||
void DisplayDriver::StrokeRegion(BRegion *r, LayerData *d, int8 *pat)
|
||||
void DisplayDriver::StrokeRegion(BRegion *r, LayerData *d, const Pattern &pat)
|
||||
{
|
||||
if(!r || !d || !pat)
|
||||
if(!r || !d)
|
||||
return;
|
||||
|
||||
Lock();
|
||||
@ -465,16 +465,16 @@ void DisplayDriver::StrokeRegion(BRegion *r, LayerData *d, int8 *pat)
|
||||
\param xrad X radius of the corner arcs
|
||||
\param yrad Y radius of the corner arcs
|
||||
\param d Data structure containing any other data necessary for the call. Always non-NULL.
|
||||
\param pat 8-byte array containing the pattern to use. Always non-NULL.
|
||||
\param pat 8-byte array containing the const Pattern &to use. Always non-NULL.
|
||||
|
||||
Bounds checking must be done in this call because only part of the roundrect may end
|
||||
up being clipped.
|
||||
*/
|
||||
void DisplayDriver::StrokeRoundRect(BRect r, float xrad, float yrad, LayerData *d, int8 *pat)
|
||||
void DisplayDriver::StrokeRoundRect(BRect r, float xrad, float yrad, LayerData *d, const Pattern &pat)
|
||||
{
|
||||
}
|
||||
|
||||
//void DisplayDriver::StrokeShape(SShape *sh, LayerData *d, int8 *pat)
|
||||
//void DisplayDriver::StrokeShape(SShape *sh, LayerData *d, const Pattern &pat)
|
||||
//{
|
||||
//}
|
||||
|
||||
@ -484,12 +484,12 @@ void DisplayDriver::StrokeRoundRect(BRect r, float xrad, float yrad, LayerData *
|
||||
\param r BRect enclosing the triangle. While it will definitely enclose the triangle,
|
||||
it may not be within the frame buffer's bounds.
|
||||
\param d Data structure containing any other data necessary for the call. Always non-NULL.
|
||||
\param pat 8-byte array containing the pattern to use. Always non-NULL.
|
||||
\param pat 8-byte array containing the const Pattern &to use. Always non-NULL.
|
||||
|
||||
Bounds checking must be done in this call because only part of the triangle may end
|
||||
up being clipped.
|
||||
*/
|
||||
void DisplayDriver::StrokeTriangle(BPoint *pts, BRect r, LayerData *d, int8 *pat)
|
||||
void DisplayDriver::StrokeTriangle(BPoint *pts, BRect r, LayerData *d, const Pattern &pat)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -27,6 +27,10 @@
|
||||
#include <Point.h>
|
||||
#include "PatternHandler.h"
|
||||
|
||||
const Pattern pat_solidhigh(0xFFFFFFFFFFFFFFFFLL);
|
||||
const Pattern pat_solidlow((uint64)0);
|
||||
const Pattern pat_mixedcolors(0xAAAAAAAAAAAAAAAALL);
|
||||
|
||||
/*!
|
||||
\brief Void constructor
|
||||
|
||||
@ -35,7 +39,7 @@
|
||||
*/
|
||||
PatternHandler::PatternHandler(void)
|
||||
{
|
||||
_pat.type64=0xFFFFFFFFLL;
|
||||
_pat=0xFFFFFFFFFFFFFFFFLL;
|
||||
_high=new RGBColor(0,0,0,255);
|
||||
_low=new RGBColor(255,255,255,255);
|
||||
}
|
||||
@ -50,14 +54,35 @@ PatternHandler::PatternHandler(void)
|
||||
PatternHandler::PatternHandler(int8 *pat)
|
||||
{
|
||||
if(pat)
|
||||
_pat.type64=*((uint64*)pat);
|
||||
_pat.Set(pat);
|
||||
else
|
||||
_pat.type64=0xFFFFFFFFLL;
|
||||
_pat=0xFFFFFFFFFFFFFFFFLL;
|
||||
|
||||
_high=new RGBColor(0,0,0,255);
|
||||
_low=new RGBColor(255,255,255,255);
|
||||
}
|
||||
|
||||
/*!
|
||||
\brief Constructor initializes to given pattern
|
||||
\param pat Pattern to use.
|
||||
|
||||
This initializes to the given pattern or B_SOLID_HIGH if the pattern
|
||||
is NULL. High color is set to black, and low color is set to white.
|
||||
*/
|
||||
PatternHandler::PatternHandler(const uint64 &pat)
|
||||
{
|
||||
_pat=pat;
|
||||
_high=new RGBColor(0,0,0,255);
|
||||
_low=new RGBColor(255,255,255,255);
|
||||
}
|
||||
|
||||
PatternHandler::PatternHandler(const Pattern &pat)
|
||||
{
|
||||
_pat=pat;
|
||||
_high=new RGBColor(0,0,0,255);
|
||||
_low=new RGBColor(255,255,255,255);
|
||||
}
|
||||
|
||||
//! Destructor frees internal color variables
|
||||
PatternHandler::~PatternHandler(void)
|
||||
{
|
||||
@ -75,9 +100,27 @@ PatternHandler::~PatternHandler(void)
|
||||
void PatternHandler::SetTarget(int8 *pat)
|
||||
{
|
||||
if(pat)
|
||||
_pat.type64=*((uint64*)pat);
|
||||
_pat.Set(pat);
|
||||
else
|
||||
_pat.type64=0xFFFFFFFFLL;
|
||||
_pat=0xFFFFFFFFFFFFFFFFLL;
|
||||
}
|
||||
|
||||
/*!
|
||||
\brief Sets the pattern for the handler to the one given
|
||||
\param pat Pattern to use.
|
||||
*/
|
||||
void PatternHandler::SetTarget(const uint64 &pat)
|
||||
{
|
||||
_pat=pat;
|
||||
}
|
||||
|
||||
/*!
|
||||
\brief Sets the pattern for the handler to the one given
|
||||
\param pat Pattern to use.
|
||||
*/
|
||||
void PatternHandler::SetTarget(const Pattern &pat)
|
||||
{
|
||||
_pat=pat;
|
||||
}
|
||||
|
||||
/*!
|
||||
@ -109,7 +152,8 @@ RGBColor PatternHandler::GetColor(const BPoint &pt)
|
||||
*/
|
||||
RGBColor PatternHandler::GetColor(const float &x, const float &y)
|
||||
{
|
||||
int32 value=_pat.type8[(uint32)y%8] & (1 << (7-((uint32)x%8)) );
|
||||
const int8 *ptr=_pat.GetInt8();
|
||||
int32 value=ptr[(uint32)y%8] & (1 << (7-((uint32)x%8)) );
|
||||
|
||||
return (value==0)?*_low:*_high;
|
||||
}
|
||||
@ -122,7 +166,8 @@ RGBColor PatternHandler::GetColor(const float &x, const float &y)
|
||||
*/
|
||||
bool PatternHandler::GetValue(const float &x, const float &y)
|
||||
{
|
||||
int32 value=_pat.type8[(uint32)y%8] & (1 << (7-((uint32)x%8)) );
|
||||
const int8 *ptr=_pat.GetInt8();
|
||||
int32 value=ptr[(uint32)y%8] & (1 << (7-((uint32)x%8)) );
|
||||
|
||||
return (value==0)?false:true;
|
||||
}
|
||||
|
@ -35,7 +35,7 @@ PicturePlayer::PicturePlayer(DisplayDriver *d,void *data, int32 size)
|
||||
: fData(data, size)
|
||||
{
|
||||
fdriver=d;
|
||||
pat.type64=0xFFFFFFFFFFFFFFFFLL;
|
||||
pat=0xFFFFFFFFFFFFFFFFLL;
|
||||
}
|
||||
|
||||
PicturePlayer::~PicturePlayer()
|
||||
@ -148,47 +148,47 @@ status_t PicturePlayer::Play(int32 tableEntries,void *userData, LayerData *d)
|
||||
{
|
||||
BPoint start = GetCoord();
|
||||
BPoint end = GetCoord();
|
||||
fdriver->StrokeLine(start,end,&fldata,pat.type8);
|
||||
fdriver->StrokeLine(start,end,&fldata,pat);
|
||||
break;
|
||||
}
|
||||
case B_PIC_STROKE_RECT:
|
||||
{
|
||||
BRect rect = GetRect();
|
||||
fdriver->StrokeRect(rect,&fldata,pat.type8);
|
||||
fdriver->StrokeRect(rect,&fldata,pat);
|
||||
break;
|
||||
}
|
||||
case B_PIC_FILL_RECT:
|
||||
{
|
||||
BRect rect = GetRect();
|
||||
fdriver->FillRect(rect,&fldata,pat.type8);
|
||||
fdriver->FillRect(rect,&fldata,pat);
|
||||
break;
|
||||
}
|
||||
case B_PIC_STROKE_ROUND_RECT:
|
||||
{
|
||||
BRect rect = GetRect();
|
||||
BPoint radii = GetCoord();
|
||||
fdriver->StrokeRoundRect(rect,radii.x,radii.y,&fldata,pat.type8);
|
||||
fdriver->StrokeRoundRect(rect,radii.x,radii.y,&fldata,pat);
|
||||
break;
|
||||
}
|
||||
case B_PIC_FILL_ROUND_RECT:
|
||||
{
|
||||
BRect rect = GetRect();
|
||||
BPoint radii = GetCoord();
|
||||
fdriver->FillRoundRect(rect,radii.x,radii.y,&fldata,pat.type8);
|
||||
fdriver->FillRoundRect(rect,radii.x,radii.y,&fldata,pat);
|
||||
break;
|
||||
}
|
||||
case B_PIC_STROKE_BEZIER:
|
||||
{
|
||||
BPoint control[4];
|
||||
GetData(control, sizeof(control));
|
||||
fdriver->StrokeBezier(control,&fldata,pat.type8);
|
||||
fdriver->StrokeBezier(control,&fldata,pat);
|
||||
break;
|
||||
}
|
||||
case B_PIC_FILL_BEZIER:
|
||||
{
|
||||
BPoint control[4];
|
||||
GetData(control, sizeof(control));
|
||||
fdriver->FillBezier(control,&fldata,pat.type8);
|
||||
fdriver->FillBezier(control,&fldata,pat);
|
||||
break;
|
||||
}
|
||||
case B_PIC_STROKE_POLYGON:
|
||||
@ -197,7 +197,7 @@ status_t PicturePlayer::Play(int32 tableEntries,void *userData, LayerData *d)
|
||||
BPoint *points = new BPoint[numPoints];
|
||||
GetData(points, numPoints * sizeof(BPoint));
|
||||
bool isClosed = GetBool();
|
||||
fdriver->StrokePolygon(points,numPoints,BRect(0,0,0,0),&fldata,pat.type8,isClosed);
|
||||
fdriver->StrokePolygon(points,numPoints,BRect(0,0,0,0),&fldata,pat,isClosed);
|
||||
delete points;
|
||||
break;
|
||||
}
|
||||
@ -206,7 +206,7 @@ status_t PicturePlayer::Play(int32 tableEntries,void *userData, LayerData *d)
|
||||
int32 numPoints = GetInt32();
|
||||
BPoint *points = new BPoint[numPoints];
|
||||
GetData(points, numPoints * sizeof(BPoint));
|
||||
fdriver->FillPolygon(points,numPoints,BRect(0,0,0,0),&fldata,pat.type8);
|
||||
fdriver->FillPolygon(points,numPoints,BRect(0,0,0,0),&fldata,pat);
|
||||
delete points;
|
||||
break;
|
||||
}
|
||||
@ -260,7 +260,7 @@ status_t PicturePlayer::Play(int32 tableEntries,void *userData, LayerData *d)
|
||||
float startTheta = GetFloat();
|
||||
float arcTheta = GetFloat();
|
||||
fdriver->StrokeArc(BRect(center.x-radii.x,center.y-radii.y,center.x+radii.x,
|
||||
center.y+radii.y),startTheta, arcTheta, &fldata,pat.type8);
|
||||
center.y+radii.y),startTheta, arcTheta, &fldata,pat);
|
||||
break;
|
||||
}
|
||||
case B_PIC_FILL_ARC:
|
||||
@ -270,7 +270,7 @@ status_t PicturePlayer::Play(int32 tableEntries,void *userData, LayerData *d)
|
||||
float startTheta = GetFloat();
|
||||
float arcTheta = GetFloat();
|
||||
fdriver->FillArc(BRect(center.x-radii.x,center.y-radii.y,center.x+radii.x,
|
||||
center.y+radii.y),startTheta, arcTheta, &fldata,pat.type8);
|
||||
center.y+radii.y),startTheta, arcTheta, &fldata,pat);
|
||||
break;
|
||||
}
|
||||
case B_PIC_STROKE_ELLIPSE:
|
||||
@ -279,7 +279,7 @@ status_t PicturePlayer::Play(int32 tableEntries,void *userData, LayerData *d)
|
||||
BPoint center;
|
||||
BPoint radii((rect.Width() + 1) / 2.0f, (rect.Height() + 1) / 2.0f);
|
||||
center = rect.LeftTop() + radii;
|
||||
fdriver->StrokeEllipse(rect,&fldata,pat.type8);
|
||||
fdriver->StrokeEllipse(rect,&fldata,pat);
|
||||
break;
|
||||
}
|
||||
case B_PIC_FILL_ELLIPSE:
|
||||
@ -288,7 +288,7 @@ status_t PicturePlayer::Play(int32 tableEntries,void *userData, LayerData *d)
|
||||
BPoint center;
|
||||
BPoint radii((rect.Width() + 1) / 2.0f, (rect.Height() + 1) / 2.0f);
|
||||
center = rect.LeftTop() + radii;
|
||||
fdriver->FillEllipse(rect,&fldata,pat.type8);
|
||||
fdriver->FillEllipse(rect,&fldata,pat);
|
||||
break;
|
||||
}
|
||||
case B_PIC_ENTER_STATE_CHANGE:
|
||||
@ -375,7 +375,7 @@ status_t PicturePlayer::Play(int32 tableEntries,void *userData, LayerData *d)
|
||||
{
|
||||
pattern p;
|
||||
GetData(&p, sizeof(p));
|
||||
pat.type64=*((uint64*)p.data);
|
||||
pat=*((uint64*)p.data);
|
||||
break;
|
||||
}
|
||||
case B_PIC_ENTER_FONT_STATE:
|
||||
|
@ -88,7 +88,7 @@ private:
|
||||
DisplayDriver *fdriver;
|
||||
LayerData fldata;
|
||||
BPoint forigin;
|
||||
pattern_union pat;
|
||||
Pattern pat;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
@ -70,8 +70,6 @@ void RootLayer::RequestDraw(void)
|
||||
{
|
||||
if(!_is_dirty)
|
||||
return;
|
||||
pattern_union low;
|
||||
low.type64=0LL;
|
||||
|
||||
// Redraw the base
|
||||
if(_invalid)
|
||||
@ -79,7 +77,7 @@ void RootLayer::RequestDraw(void)
|
||||
for(int32 i=0; _invalid->CountRects();i++)
|
||||
{
|
||||
if(_invalid->RectAt(i).IsValid())
|
||||
_driver->FillRect(_invalid->RectAt(i),_layerdata, (int8*)low.type8);
|
||||
_driver->FillRect(_invalid->RectAt(i),_layerdata, pat_solidlow);
|
||||
else
|
||||
break;
|
||||
}
|
||||
|
@ -516,28 +516,28 @@ bool ScreenDriver::DumpToFile(const char *path)
|
||||
return true;
|
||||
}
|
||||
|
||||
void ScreenDriver::FillArc(BRect r, float angle, float span, LayerData *d, int8 *pat)
|
||||
void ScreenDriver::FillArc(BRect r, float angle, float span, LayerData *d, const Pattern &pat)
|
||||
{
|
||||
if(!pat || !d)
|
||||
if(!d)
|
||||
return;
|
||||
screenwin->Lock();
|
||||
framebuffer->Lock();
|
||||
SetLayerData(d);
|
||||
drawview->FillArc(r,angle,span,*((pattern*)pat));
|
||||
drawview->FillArc(r,angle,span,*((pattern*)pat.GetInt8()));
|
||||
drawview->Sync();
|
||||
screenwin->view->Invalidate(r);
|
||||
framebuffer->Unlock();
|
||||
screenwin->Unlock();
|
||||
}
|
||||
|
||||
void ScreenDriver::FillBezier(BPoint *pts, LayerData *d, int8 *pat)
|
||||
void ScreenDriver::FillBezier(BPoint *pts, LayerData *d, const Pattern &pat)
|
||||
{
|
||||
if(!pat || !pts)
|
||||
if(!pts)
|
||||
return;
|
||||
screenwin->Lock();
|
||||
framebuffer->Lock();
|
||||
SetLayerData(d);
|
||||
drawview->FillBezier(pts,*((pattern*)pat));
|
||||
drawview->FillBezier(pts,*((pattern*)pat.GetInt8()));
|
||||
drawview->Sync();
|
||||
|
||||
// Invalidate the whole view until I get around to adding in the invalid rect calc code
|
||||
@ -546,56 +546,56 @@ void ScreenDriver::FillBezier(BPoint *pts, LayerData *d, int8 *pat)
|
||||
screenwin->Unlock();
|
||||
}
|
||||
|
||||
void ScreenDriver::FillEllipse(BRect r, LayerData *d, int8 *pat)
|
||||
void ScreenDriver::FillEllipse(BRect r, LayerData *d, const Pattern &pat)
|
||||
{
|
||||
if(!pat || !d)
|
||||
if(!d)
|
||||
return;
|
||||
screenwin->Lock();
|
||||
framebuffer->Lock();
|
||||
SetLayerData(d);
|
||||
drawview->FillEllipse(r,*((pattern*)pat));
|
||||
drawview->FillEllipse(r,*((pattern*)pat.GetInt8()));
|
||||
drawview->Sync();
|
||||
screenwin->view->Invalidate(r);
|
||||
framebuffer->Unlock();
|
||||
screenwin->Unlock();
|
||||
}
|
||||
|
||||
void ScreenDriver::FillPolygon(BPoint *ptlist, int32 numpts, BRect rect, LayerData *d, int8 *pat)
|
||||
void ScreenDriver::FillPolygon(BPoint *ptlist, int32 numpts, BRect rect, LayerData *d, const Pattern &pat)
|
||||
{
|
||||
if(!pat || !d)
|
||||
if(!d)
|
||||
return;
|
||||
screenwin->Lock();
|
||||
framebuffer->Lock();
|
||||
SetLayerData(d);
|
||||
drawview->FillPolygon(ptlist,numpts,rect,*((pattern*)pat));
|
||||
drawview->FillPolygon(ptlist,numpts,rect,*((pattern*)pat.GetInt8()));
|
||||
drawview->Sync();
|
||||
screenwin->view->Invalidate(rect);
|
||||
framebuffer->Unlock();
|
||||
screenwin->Unlock();
|
||||
}
|
||||
|
||||
void ScreenDriver::FillRect(BRect r, LayerData *d, int8 *pat)
|
||||
void ScreenDriver::FillRect(BRect r, LayerData *d, const Pattern &pat)
|
||||
{
|
||||
if(!pat || !d)
|
||||
if(!d)
|
||||
return;
|
||||
screenwin->Lock();
|
||||
framebuffer->Lock();
|
||||
SetLayerData(d);
|
||||
drawview->FillRect(r,*((pattern*)pat));
|
||||
drawview->FillRect(r,*((pattern*)pat.GetInt8()));
|
||||
drawview->Sync();
|
||||
screenwin->view->Invalidate(r);
|
||||
framebuffer->Unlock();
|
||||
screenwin->Unlock();
|
||||
}
|
||||
|
||||
void ScreenDriver::FillRoundRect(BRect r, float xrad, float yrad, LayerData *d, int8 *pat)
|
||||
void ScreenDriver::FillRoundRect(BRect r, float xrad, float yrad, LayerData *d, const Pattern &pat)
|
||||
{
|
||||
if(!pat || !d)
|
||||
if(!d)
|
||||
return;
|
||||
screenwin->Lock();
|
||||
framebuffer->Lock();
|
||||
SetLayerData(d);
|
||||
drawview->FillRoundRect(r,xrad,yrad,*((pattern*)pat));
|
||||
drawview->FillRoundRect(r,xrad,yrad,*((pattern*)pat.GetInt8()));
|
||||
drawview->Sync();
|
||||
screenwin->view->Invalidate(r);
|
||||
framebuffer->Unlock();
|
||||
@ -603,15 +603,15 @@ void ScreenDriver::FillRoundRect(BRect r, float xrad, float yrad, LayerData *d,
|
||||
|
||||
}
|
||||
|
||||
void ScreenDriver::FillTriangle(BPoint *pts, BRect r, LayerData *d, int8 *pat)
|
||||
void ScreenDriver::FillTriangle(BPoint *pts, BRect r, LayerData *d, const Pattern &pat)
|
||||
{
|
||||
if(!pat || !pts)
|
||||
if(!pts)
|
||||
return;
|
||||
screenwin->Lock();
|
||||
framebuffer->Lock();
|
||||
BPoint first=pts[0],second=pts[1],third=pts[2];
|
||||
SetLayerData(d);
|
||||
drawview->FillTriangle(first,second,third,r,*((pattern*)pat));
|
||||
drawview->FillTriangle(first,second,third,r,*((pattern*)pat.GetInt8()));
|
||||
drawview->Sync();
|
||||
screenwin->view->Invalidate(r);
|
||||
framebuffer->Unlock();
|
||||
@ -707,14 +707,14 @@ void ScreenDriver::ShowCursor(void)
|
||||
|
||||
}
|
||||
|
||||
void ScreenDriver::StrokeArc(BRect r, float angle, float span, LayerData *d, int8 *pat)
|
||||
void ScreenDriver::StrokeArc(BRect r, float angle, float span, LayerData *d, const Pattern &pat)
|
||||
{
|
||||
if(!pat || !d)
|
||||
if(!d)
|
||||
return;
|
||||
screenwin->Lock();
|
||||
framebuffer->Lock();
|
||||
SetLayerData(d);
|
||||
drawview->StrokeArc(r,angle,span,*((pattern*)pat));
|
||||
drawview->StrokeArc(r,angle,span,*((pattern*)pat.GetInt8()));
|
||||
drawview->Sync();
|
||||
screenwin->view->Invalidate(r);
|
||||
framebuffer->Unlock();
|
||||
@ -722,14 +722,14 @@ void ScreenDriver::StrokeArc(BRect r, float angle, float span, LayerData *d, int
|
||||
|
||||
}
|
||||
|
||||
void ScreenDriver::StrokeBezier(BPoint *pts, LayerData *d, int8 *pat)
|
||||
void ScreenDriver::StrokeBezier(BPoint *pts, LayerData *d, const Pattern &pat)
|
||||
{
|
||||
if(!pat || !pts)
|
||||
if(!pts)
|
||||
return;
|
||||
screenwin->Lock();
|
||||
framebuffer->Lock();
|
||||
SetLayerData(d);
|
||||
drawview->StrokeBezier(pts,*((pattern*)pat));
|
||||
drawview->StrokeBezier(pts,*((pattern*)pat.GetInt8()));
|
||||
drawview->Sync();
|
||||
|
||||
// Invalidate the whole view until I get around to adding in the invalid rect calc code
|
||||
@ -739,14 +739,14 @@ void ScreenDriver::StrokeBezier(BPoint *pts, LayerData *d, int8 *pat)
|
||||
|
||||
}
|
||||
|
||||
void ScreenDriver::StrokeEllipse(BRect r, LayerData *d, int8 *pat)
|
||||
void ScreenDriver::StrokeEllipse(BRect r, LayerData *d, const Pattern &pat)
|
||||
{
|
||||
if(!pat || !d)
|
||||
if(!d)
|
||||
return;
|
||||
screenwin->Lock();
|
||||
framebuffer->Lock();
|
||||
SetLayerData(d);
|
||||
drawview->StrokeEllipse(r,*((pattern*)pat));
|
||||
drawview->StrokeEllipse(r,*((pattern*)pat.GetInt8()));
|
||||
drawview->Sync();
|
||||
screenwin->view->Invalidate(r);
|
||||
framebuffer->Unlock();
|
||||
@ -754,14 +754,14 @@ void ScreenDriver::StrokeEllipse(BRect r, LayerData *d, int8 *pat)
|
||||
|
||||
}
|
||||
|
||||
void ScreenDriver::StrokeLine(BPoint start, BPoint end, LayerData *d, int8 *pat)
|
||||
void ScreenDriver::StrokeLine(BPoint start, BPoint end, LayerData *d, const Pattern &pat)
|
||||
{
|
||||
if(!pat || !d)
|
||||
if(!d)
|
||||
return;
|
||||
screenwin->Lock();
|
||||
framebuffer->Lock();
|
||||
SetLayerData(d);
|
||||
drawview->StrokeLine(start,end,*((pattern*)pat));
|
||||
drawview->StrokeLine(start,end,*((pattern*)pat.GetInt8()));
|
||||
drawview->Sync();
|
||||
screenwin->view->Invalidate(BRect(start,end));
|
||||
framebuffer->Unlock();
|
||||
@ -775,9 +775,9 @@ printf("ScreenDriver:: StrokeLineArray unimplemented\n");
|
||||
#endif
|
||||
}
|
||||
|
||||
void ScreenDriver::StrokePolygon(BPoint *ptlist, int32 numpts, BRect rect, LayerData *d, int8 *pat, bool is_closed)
|
||||
void ScreenDriver::StrokePolygon(BPoint *ptlist, int32 numpts, BRect rect, LayerData *d, const Pattern &pat, bool is_closed)
|
||||
{
|
||||
if(!pat || !ptlist)
|
||||
if(!ptlist)
|
||||
return;
|
||||
screenwin->Lock();
|
||||
framebuffer->Lock();
|
||||
@ -806,28 +806,28 @@ void ScreenDriver::StrokePolygon(BPoint *ptlist, int32 numpts, BRect rect, Layer
|
||||
|
||||
}
|
||||
|
||||
void ScreenDriver::StrokeRect(BRect r, LayerData *d, int8 *pat)
|
||||
void ScreenDriver::StrokeRect(BRect r, LayerData *d, const Pattern &pat)
|
||||
{
|
||||
if(!pat || !d)
|
||||
if(!d)
|
||||
return;
|
||||
screenwin->Lock();
|
||||
framebuffer->Lock();
|
||||
SetLayerData(d);
|
||||
drawview->StrokeRect(r,*((pattern*)pat));
|
||||
drawview->StrokeRect(r,*((pattern*)pat.GetInt8()));
|
||||
drawview->Sync();
|
||||
screenwin->view->Invalidate(r);
|
||||
framebuffer->Unlock();
|
||||
screenwin->Unlock();
|
||||
}
|
||||
|
||||
void ScreenDriver::StrokeRoundRect(BRect r, float xrad, float yrad, LayerData *d, int8 *pat)
|
||||
void ScreenDriver::StrokeRoundRect(BRect r, float xrad, float yrad, LayerData *d, const Pattern &pat)
|
||||
{
|
||||
if(!pat || !d)
|
||||
if(!d)
|
||||
return;
|
||||
screenwin->Lock();
|
||||
framebuffer->Lock();
|
||||
SetLayerData(d);
|
||||
drawview->StrokeRoundRect(r,xrad,yrad,*((pattern*)pat));
|
||||
drawview->StrokeRoundRect(r,xrad,yrad,*((pattern*)pat.GetInt8()));
|
||||
drawview->Sync();
|
||||
screenwin->view->Invalidate(r);
|
||||
framebuffer->Unlock();
|
||||
@ -835,15 +835,15 @@ void ScreenDriver::StrokeRoundRect(BRect r, float xrad, float yrad, LayerData *d
|
||||
|
||||
}
|
||||
|
||||
void ScreenDriver::StrokeTriangle(BPoint *pts, BRect r, LayerData *d, int8 *pat)
|
||||
void ScreenDriver::StrokeTriangle(BPoint *pts, BRect r, LayerData *d, const Pattern &pat)
|
||||
{
|
||||
if(!pat || !pts || !d)
|
||||
if(!pts || !d)
|
||||
return;
|
||||
screenwin->Lock();
|
||||
framebuffer->Lock();
|
||||
BPoint first=pts[0],second=pts[1],third=pts[2];
|
||||
SetLayerData(d);
|
||||
drawview->StrokeTriangle(first,second,third,r,*((pattern*)pat));
|
||||
drawview->StrokeTriangle(first,second,third,r,*((pattern*)pat.GetInt8()));
|
||||
drawview->Sync();
|
||||
screenwin->view->Invalidate(r);
|
||||
framebuffer->Unlock();
|
||||
|
@ -38,10 +38,9 @@
|
||||
#include <Region.h>
|
||||
#include <Font.h>
|
||||
#include "DisplayDriver.h"
|
||||
//#include <ft2build.h>
|
||||
#include <WindowScreen.h>
|
||||
//#include FT_FREETYPE_H
|
||||
#include "FontServer.h"
|
||||
#include "PatternHandler.h"
|
||||
|
||||
class BBitmap;
|
||||
class PortLink;
|
||||
@ -145,14 +144,14 @@ public:
|
||||
// virtual void DrawPicture(SPicture *pic, BPoint pt);
|
||||
void DrawString(const char *string, int32 length, BPoint pt, LayerData *d, escapement_delta *delta=NULL);
|
||||
|
||||
void FillArc(BRect r, float angle, float span, LayerData *d, int8 *pat);
|
||||
void FillBezier(BPoint *pts, LayerData *d, int8 *pat);
|
||||
void FillEllipse(BRect r, LayerData *d, int8 *pat);
|
||||
void FillPolygon(BPoint *ptlist, int32 numpts, BRect rect, LayerData *d, int8 *pat);
|
||||
void FillRect(BRect r, LayerData *d, int8 *pat);
|
||||
void FillRoundRect(BRect r, float xrad, float yrad, LayerData *d, int8 *pat);
|
||||
// void FillShape(SShape *sh, LayerData *d, int8 *pat);
|
||||
void FillTriangle(BPoint *pts, BRect r, LayerData *d, int8 *pat);
|
||||
void FillArc(BRect r, float angle, float span, LayerData *d, const Pattern &pat);
|
||||
void FillBezier(BPoint *pts, LayerData *d, const Pattern &pat);
|
||||
void FillEllipse(BRect r, LayerData *d, const Pattern &pat);
|
||||
void FillPolygon(BPoint *ptlist, int32 numpts, BRect rect, LayerData *d, const Pattern &pat);
|
||||
void FillRect(BRect r, LayerData *d, const Pattern &pat);
|
||||
void FillRoundRect(BRect r, float xrad, float yrad, LayerData *d, const Pattern &pat);
|
||||
// void FillShape(SShape *sh, LayerData *d, const Pattern &pat);
|
||||
void FillTriangle(BPoint *pts, BRect r, LayerData *d, const Pattern &pat);
|
||||
|
||||
void HideCursor(void);
|
||||
void InvertRect(BRect r);
|
||||
@ -167,16 +166,16 @@ public:
|
||||
// void SetDrawingMode(drawing_mode mode);
|
||||
void ShowCursor(void);
|
||||
|
||||
void StrokeArc(BRect r, float angle, float span, LayerData *d, int8 *pat);
|
||||
void StrokeBezier(BPoint *pts, LayerData *d, int8 *pat);
|
||||
void StrokeEllipse(BRect r, LayerData *d, int8 *pat);
|
||||
void StrokeLine(BPoint start, BPoint end, LayerData *d, int8 *pat);
|
||||
void StrokeArc(BRect r, float angle, float span, LayerData *d, const Pattern &pat);
|
||||
void StrokeBezier(BPoint *pts, LayerData *d, const Pattern &pat);
|
||||
void StrokeEllipse(BRect r, LayerData *d, const Pattern &pat);
|
||||
void StrokeLine(BPoint start, BPoint end, LayerData *d, const Pattern &pat);
|
||||
void StrokeLineArray(BPoint *pts, int32 numlines, RGBColor *colors, LayerData *d);
|
||||
void StrokePolygon(BPoint *ptlist, int32 numpts, BRect rect, LayerData *d, int8 *pat, bool is_closed=true);
|
||||
void StrokeRect(BRect r, LayerData *d, int8 *pat);
|
||||
void StrokeRoundRect(BRect r, float xrad, float yrad, LayerData *d, int8 *pat);
|
||||
// void StrokeShape(SShape *sh, LayerData *d, int8 *pat);
|
||||
void StrokeTriangle(BPoint *pts, BRect r, LayerData *d, int8 *pat);
|
||||
void StrokePolygon(BPoint *ptlist, int32 numpts, BRect rect, LayerData *d, const Pattern &pat, bool is_closed=true);
|
||||
void StrokeRect(BRect r, LayerData *d, const Pattern &pat);
|
||||
void StrokeRoundRect(BRect r, float xrad, float yrad, LayerData *d, const Pattern &pat);
|
||||
// void StrokeShape(SShape *sh, LayerData *d, const Pattern &pat);
|
||||
void StrokeTriangle(BPoint *pts, BRect r, LayerData *d, const Pattern &pat);
|
||||
void SetMode(int32 mode);
|
||||
float StringWidth(const char *string, int32 length, LayerData *d);
|
||||
float StringHeight(const char *string, int32 length, LayerData *d);
|
||||
|
@ -789,28 +789,28 @@ bool ViewDriver::DumpToFile(const char *path)
|
||||
return true;
|
||||
}
|
||||
|
||||
void ViewDriver::FillArc(BRect r, float angle, float span, LayerData *d, int8 *pat)
|
||||
void ViewDriver::FillArc(BRect r, float angle, float span, LayerData *d, const Pattern &pat)
|
||||
{
|
||||
if(!pat || !d)
|
||||
if(!d)
|
||||
return;
|
||||
screenwin->Lock();
|
||||
framebuffer->Lock();
|
||||
SetLayerData(d);
|
||||
drawview->FillArc(r,angle,span,*((pattern*)pat));
|
||||
drawview->FillArc(r,angle,span,*((pattern*)pat.GetInt8()));
|
||||
drawview->Sync();
|
||||
screenwin->view->Invalidate(r);
|
||||
framebuffer->Unlock();
|
||||
screenwin->Unlock();
|
||||
}
|
||||
|
||||
void ViewDriver::FillBezier(BPoint *pts, LayerData *d, int8 *pat)
|
||||
void ViewDriver::FillBezier(BPoint *pts, LayerData *d, const Pattern &pat)
|
||||
{
|
||||
if(!pat || !pts)
|
||||
if(!pts)
|
||||
return;
|
||||
screenwin->Lock();
|
||||
framebuffer->Lock();
|
||||
SetLayerData(d);
|
||||
drawview->FillBezier(pts,*((pattern*)pat));
|
||||
drawview->FillBezier(pts,*((pattern*)pat.GetInt8()));
|
||||
drawview->Sync();
|
||||
|
||||
// Invalidate the whole view until I get around to adding in the invalid rect calc code
|
||||
@ -819,56 +819,56 @@ void ViewDriver::FillBezier(BPoint *pts, LayerData *d, int8 *pat)
|
||||
screenwin->Unlock();
|
||||
}
|
||||
|
||||
void ViewDriver::FillEllipse(BRect r, LayerData *d, int8 *pat)
|
||||
void ViewDriver::FillEllipse(BRect r, LayerData *d, const Pattern &pat)
|
||||
{
|
||||
if(!pat || !d)
|
||||
if(!d)
|
||||
return;
|
||||
screenwin->Lock();
|
||||
framebuffer->Lock();
|
||||
SetLayerData(d);
|
||||
drawview->FillEllipse(r,*((pattern*)pat));
|
||||
drawview->FillEllipse(r,*((pattern*)pat.GetInt8()));
|
||||
drawview->Sync();
|
||||
screenwin->view->Invalidate(r);
|
||||
framebuffer->Unlock();
|
||||
screenwin->Unlock();
|
||||
}
|
||||
|
||||
void ViewDriver::FillPolygon(BPoint *ptlist, int32 numpts, BRect rect, LayerData *d, int8 *pat)
|
||||
void ViewDriver::FillPolygon(BPoint *ptlist, int32 numpts, BRect rect, LayerData *d, const Pattern &pat)
|
||||
{
|
||||
if(!pat || !d)
|
||||
if(!d)
|
||||
return;
|
||||
screenwin->Lock();
|
||||
framebuffer->Lock();
|
||||
SetLayerData(d);
|
||||
drawview->FillPolygon(ptlist,numpts,rect,*((pattern*)pat));
|
||||
drawview->FillPolygon(ptlist,numpts,rect,*((pattern*)pat.GetInt8()));
|
||||
drawview->Sync();
|
||||
screenwin->view->Invalidate(rect);
|
||||
framebuffer->Unlock();
|
||||
screenwin->Unlock();
|
||||
}
|
||||
|
||||
void ViewDriver::FillRect(BRect r, LayerData *d, int8 *pat)
|
||||
void ViewDriver::FillRect(BRect r, LayerData *d, const Pattern &pat)
|
||||
{
|
||||
if(!pat || !d)
|
||||
if(!d)
|
||||
return;
|
||||
screenwin->Lock();
|
||||
framebuffer->Lock();
|
||||
SetLayerData(d);
|
||||
drawview->FillRect(r,*((pattern*)pat));
|
||||
drawview->FillRect(r,*((pattern*)pat.GetInt8()));
|
||||
drawview->Sync();
|
||||
screenwin->view->Invalidate(r);
|
||||
framebuffer->Unlock();
|
||||
screenwin->Unlock();
|
||||
}
|
||||
|
||||
void ViewDriver::FillRoundRect(BRect r, float xrad, float yrad, LayerData *d, int8 *pat)
|
||||
void ViewDriver::FillRoundRect(BRect r, float xrad, float yrad, LayerData *d, const Pattern &pat)
|
||||
{
|
||||
if(!pat || !d)
|
||||
if(!d)
|
||||
return;
|
||||
screenwin->Lock();
|
||||
framebuffer->Lock();
|
||||
SetLayerData(d);
|
||||
drawview->FillRoundRect(r,xrad,yrad,*((pattern*)pat));
|
||||
drawview->FillRoundRect(r,xrad,yrad,*((pattern*)pat.GetInt8()));
|
||||
drawview->Sync();
|
||||
screenwin->view->Invalidate(r);
|
||||
framebuffer->Unlock();
|
||||
@ -876,15 +876,15 @@ void ViewDriver::FillRoundRect(BRect r, float xrad, float yrad, LayerData *d, in
|
||||
|
||||
}
|
||||
|
||||
void ViewDriver::FillTriangle(BPoint *pts, BRect r, LayerData *d, int8 *pat)
|
||||
void ViewDriver::FillTriangle(BPoint *pts, BRect r, LayerData *d, const Pattern &pat)
|
||||
{
|
||||
if(!pat || !pts)
|
||||
if(!pts)
|
||||
return;
|
||||
screenwin->Lock();
|
||||
framebuffer->Lock();
|
||||
BPoint first=pts[0],second=pts[1],third=pts[2];
|
||||
SetLayerData(d);
|
||||
drawview->FillTriangle(first,second,third,r,*((pattern*)pat));
|
||||
drawview->FillTriangle(first,second,third,r,*((pattern*)pat.GetInt8()));
|
||||
drawview->Sync();
|
||||
screenwin->view->Invalidate(r);
|
||||
framebuffer->Unlock();
|
||||
@ -977,14 +977,14 @@ void ViewDriver::ShowCursor(void)
|
||||
|
||||
}
|
||||
|
||||
void ViewDriver::StrokeArc(BRect r, float angle, float span, LayerData *d, int8 *pat)
|
||||
void ViewDriver::StrokeArc(BRect r, float angle, float span, LayerData *d, const Pattern &pat)
|
||||
{
|
||||
if(!pat || !d)
|
||||
if(!d)
|
||||
return;
|
||||
screenwin->Lock();
|
||||
framebuffer->Lock();
|
||||
SetLayerData(d);
|
||||
drawview->StrokeArc(r,angle,span,*((pattern*)pat));
|
||||
drawview->StrokeArc(r,angle,span,*((pattern*)pat.GetInt8()));
|
||||
drawview->Sync();
|
||||
screenwin->view->Invalidate(r);
|
||||
framebuffer->Unlock();
|
||||
@ -992,14 +992,14 @@ void ViewDriver::StrokeArc(BRect r, float angle, float span, LayerData *d, int8
|
||||
|
||||
}
|
||||
|
||||
void ViewDriver::StrokeBezier(BPoint *pts, LayerData *d, int8 *pat)
|
||||
void ViewDriver::StrokeBezier(BPoint *pts, LayerData *d, const Pattern &pat)
|
||||
{
|
||||
if(!pat || !pts)
|
||||
if(!pts)
|
||||
return;
|
||||
screenwin->Lock();
|
||||
framebuffer->Lock();
|
||||
SetLayerData(d);
|
||||
drawview->StrokeBezier(pts,*((pattern*)pat));
|
||||
drawview->StrokeBezier(pts,*((pattern*)pat.GetInt8()));
|
||||
drawview->Sync();
|
||||
|
||||
// Invalidate the whole view until I get around to adding in the invalid rect calc code
|
||||
@ -1009,14 +1009,14 @@ void ViewDriver::StrokeBezier(BPoint *pts, LayerData *d, int8 *pat)
|
||||
|
||||
}
|
||||
|
||||
void ViewDriver::StrokeEllipse(BRect r, LayerData *d, int8 *pat)
|
||||
void ViewDriver::StrokeEllipse(BRect r, LayerData *d, const Pattern &pat)
|
||||
{
|
||||
if(!pat || !d)
|
||||
if(!d)
|
||||
return;
|
||||
screenwin->Lock();
|
||||
framebuffer->Lock();
|
||||
SetLayerData(d);
|
||||
drawview->StrokeEllipse(r,*((pattern*)pat));
|
||||
drawview->StrokeEllipse(r,*((pattern*)pat.GetInt8()));
|
||||
drawview->Sync();
|
||||
screenwin->view->Invalidate(r);
|
||||
framebuffer->Unlock();
|
||||
@ -1024,14 +1024,14 @@ void ViewDriver::StrokeEllipse(BRect r, LayerData *d, int8 *pat)
|
||||
|
||||
}
|
||||
|
||||
void ViewDriver::StrokeLine(BPoint start, BPoint end, LayerData *d, int8 *pat)
|
||||
void ViewDriver::StrokeLine(BPoint start, BPoint end, LayerData *d, const Pattern &pat)
|
||||
{
|
||||
if(!pat || !d)
|
||||
if(!d)
|
||||
return;
|
||||
screenwin->Lock();
|
||||
framebuffer->Lock();
|
||||
SetLayerData(d);
|
||||
drawview->StrokeLine(start,end,*((pattern*)pat));
|
||||
drawview->StrokeLine(start,end,*((pattern*)pat.GetInt8()));
|
||||
drawview->Sync();
|
||||
screenwin->view->Invalidate(BRect(start,end));
|
||||
framebuffer->Unlock();
|
||||
@ -1076,9 +1076,9 @@ void ViewDriver::StrokeLineArray(BPoint *pts, int32 numlines, RGBColor *colors,
|
||||
|
||||
}
|
||||
|
||||
void ViewDriver::StrokePolygon(BPoint *ptlist, int32 numpts, BRect rect, LayerData *d, int8 *pat, bool is_closed)
|
||||
void ViewDriver::StrokePolygon(BPoint *ptlist, int32 numpts, BRect rect, LayerData *d, const Pattern &pat, bool is_closed)
|
||||
{
|
||||
if(!pat || !ptlist)
|
||||
if(!ptlist)
|
||||
return;
|
||||
screenwin->Lock();
|
||||
framebuffer->Lock();
|
||||
@ -1107,28 +1107,28 @@ void ViewDriver::StrokePolygon(BPoint *ptlist, int32 numpts, BRect rect, LayerDa
|
||||
|
||||
}
|
||||
|
||||
void ViewDriver::StrokeRect(BRect r, LayerData *d, int8 *pat)
|
||||
void ViewDriver::StrokeRect(BRect r, LayerData *d, const Pattern &pat)
|
||||
{
|
||||
if(!pat || !d)
|
||||
if(!d)
|
||||
return;
|
||||
screenwin->Lock();
|
||||
framebuffer->Lock();
|
||||
SetLayerData(d);
|
||||
drawview->StrokeRect(r,*((pattern*)pat));
|
||||
drawview->StrokeRect(r,*((pattern*)pat.GetInt8()));
|
||||
drawview->Sync();
|
||||
screenwin->view->Invalidate(r);
|
||||
framebuffer->Unlock();
|
||||
screenwin->Unlock();
|
||||
}
|
||||
|
||||
void ViewDriver::StrokeRoundRect(BRect r, float xrad, float yrad, LayerData *d, int8 *pat)
|
||||
void ViewDriver::StrokeRoundRect(BRect r, float xrad, float yrad, LayerData *d, const Pattern &pat)
|
||||
{
|
||||
if(!pat || !d)
|
||||
if(!d)
|
||||
return;
|
||||
screenwin->Lock();
|
||||
framebuffer->Lock();
|
||||
SetLayerData(d);
|
||||
drawview->StrokeRoundRect(r,xrad,yrad,*((pattern*)pat));
|
||||
drawview->StrokeRoundRect(r,xrad,yrad,*((pattern*)pat.GetInt8()));
|
||||
drawview->Sync();
|
||||
screenwin->view->Invalidate(r);
|
||||
framebuffer->Unlock();
|
||||
@ -1136,15 +1136,15 @@ void ViewDriver::StrokeRoundRect(BRect r, float xrad, float yrad, LayerData *d,
|
||||
|
||||
}
|
||||
|
||||
void ViewDriver::StrokeTriangle(BPoint *pts, BRect r, LayerData *d, int8 *pat)
|
||||
void ViewDriver::StrokeTriangle(BPoint *pts, BRect r, LayerData *d, const Pattern &pat)
|
||||
{
|
||||
if(!pat || !pts || !d)
|
||||
if(!pts || !d)
|
||||
return;
|
||||
screenwin->Lock();
|
||||
framebuffer->Lock();
|
||||
BPoint first=pts[0],second=pts[1],third=pts[2];
|
||||
SetLayerData(d);
|
||||
drawview->StrokeTriangle(first,second,third,r,*((pattern*)pat));
|
||||
drawview->StrokeTriangle(first,second,third,r,*((pattern*)pat.GetInt8()));
|
||||
drawview->Sync();
|
||||
screenwin->view->Invalidate(r);
|
||||
framebuffer->Unlock();
|
||||
|
@ -37,8 +37,6 @@
|
||||
#include <Region.h>
|
||||
#include <Font.h>
|
||||
#include "DisplayDriver.h"
|
||||
//#include <ft2build.h>
|
||||
//#include FT_FREETYPE_H
|
||||
#include "FontServer.h"
|
||||
|
||||
class BBitmap;
|
||||
@ -115,14 +113,14 @@ public:
|
||||
// virtual void DrawPicture(SPicture *pic, BPoint pt);
|
||||
void DrawString(const char *string, int32 length, BPoint pt, LayerData *d, escapement_delta *delta=NULL);
|
||||
|
||||
void FillArc(BRect r, float angle, float span, LayerData *d, int8 *pat);
|
||||
void FillBezier(BPoint *pts, LayerData *d, int8 *pat);
|
||||
void FillEllipse(BRect r, LayerData *d, int8 *pat);
|
||||
void FillPolygon(BPoint *ptlist, int32 numpts, BRect rect, LayerData *d, int8 *pat);
|
||||
void FillRect(BRect r, LayerData *d, int8 *pat);
|
||||
void FillRoundRect(BRect r, float xrad, float yrad, LayerData *d, int8 *pat);
|
||||
// void FillShape(SShape *sh, LayerData *d, int8 *pat);
|
||||
void FillTriangle(BPoint *pts, BRect r, LayerData *d, int8 *pat);
|
||||
void FillArc(BRect r, float angle, float span, LayerData *d, const Pattern &pat);
|
||||
void FillBezier(BPoint *pts, LayerData *d, const Pattern &pat);
|
||||
void FillEllipse(BRect r, LayerData *d, const Pattern &pat);
|
||||
void FillPolygon(BPoint *ptlist, int32 numpts, BRect rect, LayerData *d, const Pattern &pat);
|
||||
void FillRect(BRect r, LayerData *d, const Pattern &pat);
|
||||
void FillRoundRect(BRect r, float xrad, float yrad, LayerData *d, const Pattern &pat);
|
||||
// void FillShape(SShape *sh, LayerData *d, const Pattern &pat);
|
||||
void FillTriangle(BPoint *pts, BRect r, LayerData *d, const Pattern &pat);
|
||||
|
||||
void HideCursor(void);
|
||||
void InvertRect(BRect r);
|
||||
@ -137,16 +135,16 @@ public:
|
||||
// void SetDrawingMode(drawing_mode mode);
|
||||
void ShowCursor(void);
|
||||
|
||||
void StrokeArc(BRect r, float angle, float span, LayerData *d, int8 *pat);
|
||||
void StrokeBezier(BPoint *pts, LayerData *d, int8 *pat);
|
||||
void StrokeEllipse(BRect r, LayerData *d, int8 *pat);
|
||||
void StrokeLine(BPoint start, BPoint end, LayerData *d, int8 *pat);
|
||||
void StrokeArc(BRect r, float angle, float span, LayerData *d, const Pattern &pat);
|
||||
void StrokeBezier(BPoint *pts, LayerData *d, const Pattern &pat);
|
||||
void StrokeEllipse(BRect r, LayerData *d, const Pattern &pat);
|
||||
void StrokeLine(BPoint start, BPoint end, LayerData *d, const Pattern &pat);
|
||||
void StrokeLineArray(BPoint *pts, int32 numlines, RGBColor *colors, LayerData *d);
|
||||
void StrokePolygon(BPoint *ptlist, int32 numpts, BRect rect, LayerData *d, int8 *pat, bool is_closed=true);
|
||||
void StrokeRect(BRect r, LayerData *d, int8 *pat);
|
||||
void StrokeRoundRect(BRect r, float xrad, float yrad, LayerData *d, int8 *pat);
|
||||
// void StrokeShape(SShape *sh, LayerData *d, int8 *pat);
|
||||
void StrokeTriangle(BPoint *pts, BRect r, LayerData *d, int8 *pat);
|
||||
void StrokePolygon(BPoint *ptlist, int32 numpts, BRect rect, LayerData *d, const Pattern &pat, bool is_closed=true);
|
||||
void StrokeRect(BRect r, LayerData *d, const Pattern &pat);
|
||||
void StrokeRoundRect(BRect r, float xrad, float yrad, LayerData *d, const Pattern &pat);
|
||||
// void StrokeShape(SShape *sh, LayerData *d, const Pattern &pat);
|
||||
void StrokeTriangle(BPoint *pts, BRect r, LayerData *d, const Pattern &pat);
|
||||
void SetMode(int32 mode);
|
||||
float StringWidth(const char *string, int32 length, LayerData *d);
|
||||
float StringHeight(const char *string, int32 length, LayerData *d);
|
||||
|
Loading…
Reference in New Issue
Block a user