Convert to LayerData independent drawing API
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@5598 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -21,6 +21,7 @@
|
|||||||
//
|
//
|
||||||
// File Name: DisplayDriver.h
|
// File Name: DisplayDriver.h
|
||||||
// Author: DarkWyrm <[email protected]>
|
// Author: DarkWyrm <[email protected]>
|
||||||
|
// Gabe Yoder <[email protected]>
|
||||||
// Description: Mostly abstract class which handles all graphics output
|
// Description: Mostly abstract class which handles all graphics output
|
||||||
// for the server
|
// for the server
|
||||||
//
|
//
|
||||||
@@ -79,21 +80,31 @@ typedef struct
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
class AccLineCalc
|
class DisplayDriver;
|
||||||
|
|
||||||
|
typedef void (DisplayDriver::* SetPixelFuncType)(int x, int y);
|
||||||
|
typedef void (DisplayDriver::* SetHorizontalLineFuncType)(int xstart, int xend, int y);
|
||||||
|
typedef void (DisplayDriver::* SetVerticalLineFuncType)(int x, int ystart, int yend);
|
||||||
|
typedef void (DisplayDriver::* SetRectangleFuncType)(int left, int top, int right, int bottom);
|
||||||
|
|
||||||
|
class LineCalc
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
AccLineCalc();
|
LineCalc();
|
||||||
AccLineCalc(const BPoint &pta, const BPoint &ptb);
|
LineCalc(const BPoint &pta, const BPoint &ptb);
|
||||||
void SetPoints(const BPoint &pta, const BPoint &ptb);
|
void SetPoints(const BPoint &pta, const BPoint &ptb);
|
||||||
float GetX(float y);
|
float GetX(float y);
|
||||||
float GetY(float x);
|
float GetY(float x);
|
||||||
float Slope(void) { return slope; }
|
float Slope(void) { return slope; }
|
||||||
float Offset(void) { return offset; }
|
float Offset(void) { return offset; }
|
||||||
float MinX();
|
float MinX() { return minx; }
|
||||||
float MinY();
|
float MinY() { return miny; }
|
||||||
float MaxX();
|
float MaxX() { return maxx; }
|
||||||
float MaxY();
|
float MaxY() { return maxy; }
|
||||||
void Swap(AccLineCalc &from);
|
void Swap(LineCalc &from);
|
||||||
|
bool ClipToRect(const BRect& rect);
|
||||||
|
BPoint GetStart() { return start; }
|
||||||
|
BPoint GetEnd() { return end; }
|
||||||
private:
|
private:
|
||||||
float slope;
|
float slope;
|
||||||
float offset;
|
float offset;
|
||||||
@@ -129,15 +140,23 @@ public:
|
|||||||
virtual void DrawBitmap(ServerBitmap *bmp, BRect src, BRect dest, LayerData *d);
|
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 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, const Pattern &pat);
|
virtual void FillArc(const BRect r, float angle, float span, RGBColor& color);
|
||||||
virtual void FillBezier(BPoint *pts, LayerData *d, const Pattern &pat);
|
virtual void FillArc(const BRect r, float angle, float span, const Pattern& pattern, RGBColor& high_color, RGBColor& low_color);
|
||||||
virtual void FillEllipse(BRect r, LayerData *d, const Pattern &pat);
|
virtual void FillBezier(BPoint *pts, RGBColor& color);
|
||||||
virtual void FillPolygon(BPoint *ptlist, int32 numpts, BRect rect, LayerData *d, const Pattern &pat);
|
virtual void FillBezier(BPoint *pts, const Pattern& pattern, RGBColor& high_color, RGBColor& low_color);
|
||||||
virtual void FillRect(BRect r, LayerData *d, const Pattern &pat);
|
virtual void FillEllipse(BRect r, RGBColor& color);
|
||||||
virtual void FillRegion(BRegion *r, LayerData *d, const Pattern &pat);
|
virtual void FillEllipse(BRect r, const Pattern& pattern, RGBColor& high_color, RGBColor& low_color);
|
||||||
virtual void FillRoundRect(BRect r, float xrad, float yrad, LayerData *d, const Pattern &pat);
|
virtual void FillPolygon(BPoint *ptlist, int32 numpts, RGBColor& color);
|
||||||
|
virtual void FillPolygon(BPoint *ptlist, int32 numpts, const Pattern& pattern, RGBColor& high_color, RGBColor& low_color);
|
||||||
|
virtual void FillRect(const BRect r, RGBColor& color);
|
||||||
|
virtual void FillRect(const BRect r, const Pattern& pattern, RGBColor& high_color, RGBColor& low_color);
|
||||||
|
virtual void FillRegion(BRegion& r, RGBColor& color);
|
||||||
|
virtual void FillRegion(BRegion& r, const Pattern& pattern, RGBColor& high_color, RGBColor& low_color);
|
||||||
|
virtual void FillRoundRect(BRect r, float xrad, float yrad, RGBColor& color);
|
||||||
|
virtual void FillRoundRect(BRect r, float xrad, float yrad, const Pattern& pattern, RGBColor& high_color, RGBColor& low_color);
|
||||||
// virtual void FillShape(SShape *sh, 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 FillTriangle(BPoint *pts, RGBColor& color);
|
||||||
|
virtual void FillTriangle(BPoint *pts, const Pattern& pattern, RGBColor& high_color, RGBColor& low_color);
|
||||||
|
|
||||||
virtual void HideCursor(void);
|
virtual void HideCursor(void);
|
||||||
virtual bool IsCursorHidden(void);
|
virtual bool IsCursorHidden(void);
|
||||||
@@ -147,17 +166,29 @@ public:
|
|||||||
virtual void ObscureCursor(void);
|
virtual void ObscureCursor(void);
|
||||||
virtual void SetCursor(ServerCursor *cursor);
|
virtual void SetCursor(ServerCursor *cursor);
|
||||||
|
|
||||||
virtual void StrokeArc(BRect r, float angle, float span, LayerData *d, const Pattern &pat);
|
virtual void StrokeArc(BRect r, float angle, float span, float pensize, RGBColor& color);
|
||||||
virtual void StrokeBezier(BPoint *pts, LayerData *d, const Pattern &pat);
|
virtual void StrokeArc(BRect r, float angle, float span, float pensize, const Pattern& pattern, RGBColor& high_color, RGBColor& low_color);
|
||||||
virtual void StrokeEllipse(BRect r, LayerData *d, const Pattern &pat);
|
virtual void StrokeBezier(BPoint *pts, float pensize, RGBColor& color);
|
||||||
virtual void StrokeLine(BPoint start, BPoint end, LayerData *d, const Pattern &pat);
|
virtual void StrokeBezier(BPoint *pts, float pensize, const Pattern& pattern, RGBColor& high_color, RGBColor& low_color);
|
||||||
virtual void StrokePolygon(BPoint *ptlist, int32 numpts, BRect rect, LayerData *d, const Pattern &pat, bool is_closed=true);
|
virtual void StrokeEllipse(BRect r, float pensize, RGBColor& color);
|
||||||
virtual void StrokeRect(BRect r, LayerData *d, const Pattern &pat);
|
virtual void StrokeEllipse(BRect r, float pensize, const Pattern& pattern, RGBColor& high_color, RGBColor& low_color);
|
||||||
virtual void StrokeRegion(BRegion *r, LayerData *d, const Pattern &pat);
|
virtual void StrokeLine(BPoint start, BPoint end, float pensize, RGBColor& color);
|
||||||
virtual void StrokeRoundRect(BRect r, float xrad, float yrad, LayerData *d, const Pattern &pat);
|
virtual void StrokeLine(BPoint start, BPoint end, float pensize, const Pattern& pattern, RGBColor& high_color, RGBColor& low_color);
|
||||||
|
virtual void StrokePoint(BPoint& pt, RGBColor& color);
|
||||||
|
virtual void StrokePolygon(BPoint *ptlist, int32 numpts, float pensize, RGBColor& color, bool is_closed=true);
|
||||||
|
virtual void StrokePolygon(BPoint *ptlist, int32 numpts, float pensize, const Pattern& pattern, RGBColor& high_color, RGBColor& low_color, bool is_closed=true);
|
||||||
|
virtual void StrokeRect(BRect r, float pensize, RGBColor& color);
|
||||||
|
virtual void StrokeRect(BRect r, float pensize, const Pattern& pattern, RGBColor& high_color, RGBColor& low_color);
|
||||||
|
virtual void StrokeRegion(BRegion& r, float pensize, RGBColor& color);
|
||||||
|
virtual void StrokeRegion(BRegion& r, float pensize, const Pattern& pattern, RGBColor& high_color, RGBColor& low_color);
|
||||||
|
virtual void StrokeRoundRect(BRect r, float xrad, float yrad, float pensize, RGBColor& color);
|
||||||
|
virtual void StrokeRoundRect(BRect r, float xrad, float yrad, float pensize, const Pattern& pattern, RGBColor& high_color, RGBColor& low_color);
|
||||||
// virtual void StrokeShape(SShape *sh, 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 StrokeTriangle(BPoint *pts, float pensize, RGBColor& color);
|
||||||
virtual void StrokeLineArray(BPoint *pts, int32 numlines, RGBColor *colors, LayerData *d);
|
virtual void StrokeTriangle(BPoint *pts, float pensize, const Pattern& pattern, RGBColor& high_color, RGBColor& low_color);
|
||||||
|
|
||||||
|
virtual void StrokeLineArray(BPoint *pts, int32 numlines, float pensize, RGBColor *colors);
|
||||||
|
|
||||||
virtual void SetMode(int32 mode);
|
virtual void SetMode(int32 mode);
|
||||||
virtual bool DumpToFile(const char *path);
|
virtual bool DumpToFile(const char *path);
|
||||||
virtual ServerBitmap *DumpToBitmap(void);
|
virtual ServerBitmap *DumpToBitmap(void);
|
||||||
@@ -204,10 +235,34 @@ protected:
|
|||||||
void _SetDPMSState(uint32 state);
|
void _SetDPMSState(uint32 state);
|
||||||
void _SetDeviceInfo(const accelerant_device_info &infO);
|
void _SetDeviceInfo(const accelerant_device_info &infO);
|
||||||
ServerCursor *_GetCursor(void);
|
ServerCursor *_GetCursor(void);
|
||||||
virtual void HLine(int32 x1, int32 x2, int32 y, PatternHandler *pat);
|
//virtual void HLine(int32 x1, int32 x2, int32 y, PatternHandler *pat);
|
||||||
virtual void HLineThick(int32 x1, int32 x2, int32 y, int32 thick, PatternHandler *pat);
|
//virtual void HLineThick(int32 x1, int32 x2, int32 y, int32 thick, PatternHandler *pat);
|
||||||
virtual void SetPixel(int x, int y, RGBColor col);
|
virtual void HLinePatternThick(int32 x1, int32 x2, int32 y);
|
||||||
virtual void SetThickPixel(int x, int y, int thick, PatternHandler *pat);
|
virtual void VLinePatternThick(int32 x, int32 y1, int32 y2);
|
||||||
|
virtual void FillSolidRect(int32 left, int32 top, int32 right, int32 bottom);
|
||||||
|
virtual void FillPatternRect(int32 left, int32 top, int32 right, int32 bottom);
|
||||||
|
//virtual void SetPixel(int x, int y, RGBColor col);
|
||||||
|
//virtual void SetThickPixel(int x, int y, int thick, PatternHandler *pat);
|
||||||
|
virtual void SetThickPatternPixel(int x, int y);
|
||||||
|
|
||||||
|
void FillArc(const BRect r, float angle, float span, DisplayDriver*, SetHorizontalLineFuncType setLine);
|
||||||
|
void FillBezier(BPoint *pts, DisplayDriver* driver, SetHorizontalLineFuncType setLine);
|
||||||
|
void FillEllipse(BRect r, DisplayDriver* driver, SetHorizontalLineFuncType setLine);
|
||||||
|
void FillPolygon(BPoint *ptlist, int32 numpts, DisplayDriver* driver, SetHorizontalLineFuncType setLine);
|
||||||
|
void FillRegion(BRegion& r, DisplayDriver* driver, SetRectangleFuncType setRect);
|
||||||
|
void FillRoundRect(BRect r, float xrad, float yrad, DisplayDriver* driver, SetRectangleFuncType setRect, SetHorizontalLineFuncType setLine);
|
||||||
|
void FillTriangle(BPoint *pts, DisplayDriver* driver, SetHorizontalLineFuncType setLine);
|
||||||
|
void StrokeArc(BRect r, float angle, float span, DisplayDriver* driver, SetPixelFuncType setPixel);
|
||||||
|
void StrokeBezier(BPoint *pts, DisplayDriver* driver, SetPixelFuncType setPixel);
|
||||||
|
void StrokeEllipse(BRect r, DisplayDriver* driver, SetPixelFuncType setPixel);
|
||||||
|
void StrokeLine(BPoint start, BPoint end, DisplayDriver* driver, SetPixelFuncType setPixel);
|
||||||
|
void StrokePolygon(BPoint *ptlist, int32 numpts, DisplayDriver* driver, SetPixelFuncType setPixel, bool is_closed=true);
|
||||||
|
void StrokeRect(BRect r, DisplayDriver* driver, SetHorizontalLineFuncType setHLine, SetVerticalLineFuncType setVLine);
|
||||||
|
void StrokeRoundRect(BRect r, float xrad, float yrad, DisplayDriver* driver, SetHorizontalLineFuncType setHLine, SetVerticalLineFuncType setVLine, SetPixelFuncType setPixel);
|
||||||
|
|
||||||
|
PatternHandler fDrawPattern;
|
||||||
|
RGBColor fDrawColor;
|
||||||
|
int fLineThickness;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
BLocker *_locker;
|
BLocker *_locker;
|
||||||
|
|||||||
Reference in New Issue
Block a user