aboutsummaryrefslogtreecommitdiff
path: root/graphics/VectorRenderer.h
diff options
context:
space:
mode:
Diffstat (limited to 'graphics/VectorRenderer.h')
-rw-r--r--graphics/VectorRenderer.h87
1 files changed, 38 insertions, 49 deletions
diff --git a/graphics/VectorRenderer.h b/graphics/VectorRenderer.h
index c2f7b40ed0..9be55460c2 100644
--- a/graphics/VectorRenderer.h
+++ b/graphics/VectorRenderer.h
@@ -39,7 +39,7 @@ class VectorRenderer;
struct DrawStep;
-typedef void (VectorRenderer::*DrawingFunctionCallback)(const Common::Rect &, const Graphics::DrawStep &, const Common::Rect &);
+typedef void (VectorRenderer::*DrawingFunctionCallback)(const Common::Rect &, const Graphics::DrawStep &);
struct DrawStep {
@@ -165,7 +165,6 @@ public:
* @param y2 Vertical (Y) coordinate for the line end
*/
virtual void drawLine(int x1, int y1, int x2, int y2) = 0;
- virtual void drawLineClip(int x1, int y1, int x2, int y2, Common::Rect clipping) = 0;
/**
* Draws a circle centered at (x,y) with radius r.
@@ -175,7 +174,6 @@ public:
* @param r Radius of the circle.
*/
virtual void drawCircle(int x, int y, int r) = 0;
- virtual void drawCircleClip(int x, int y, int r, Common::Rect clipping) = 0;
/**
* Draws a square starting at (x,y) with the given width and height.
@@ -186,7 +184,6 @@ public:
* @param h Height of the square
*/
virtual void drawSquare(int x, int y, int w, int h) = 0;
- virtual void drawSquareClip(int x, int y, int w, int h, Common::Rect clipping) = 0;
/**
* Draws a rounded square starting at (x,y) with the given width and height.
@@ -199,7 +196,6 @@ public:
* @param r Radius of the corners.
*/
virtual void drawRoundedSquare(int x, int y, int r, int w, int h) = 0;
- virtual void drawRoundedSquareClip(int x, int y, int r, int w, int h, Common::Rect clipping) = 0;
/**
* Draws a triangle starting at (x,y) with the given base and height.
@@ -213,7 +209,6 @@ public:
* @param orient Orientation of the triangle.
*/
virtual void drawTriangle(int x, int y, int base, int height, TriangleOrientation orient) = 0;
- virtual void drawTriangleClip(int x, int y, int base, int height, TriangleOrientation orient, Common::Rect clipping) = 0;
/**
* Draws a beveled square like the ones in the Classic GUI themes.
@@ -226,8 +221,7 @@ public:
* @param h Height of the square
* @param bevel Amount of bevel. Must be positive.
*/
- virtual void drawBeveledSquare(int x, int y, int w, int h, int bevel) = 0;
- virtual void drawBeveledSquareClip(int x, int y, int w, int h, int bevel, Common::Rect clipping) = 0;
+ virtual void drawBeveledSquare(int x, int y, int w, int h) = 0;
/**
* Draws a tab-like shape, specially thought for the Tab widget.
@@ -241,8 +235,6 @@ public:
* @param r Radius of the corners of the tab (0 for squared tabs).
*/
virtual void drawTab(int x, int y, int r, int w, int h) = 0;
- virtual void drawTabClip(int x, int y, int r, int w, int h, Common::Rect clipping) = 0;
-
/**
* Simple helper function to draw a cross.
@@ -252,11 +244,6 @@ public:
drawLine(x + w, y, x, y + h);
}
- virtual void drawCrossClip(int x, int y, int w, int h, Common::Rect clipping) {
- drawLineClip(x, y, x + w, y + w, clipping);
- drawLineClip(x + w, y, x, y + h, clipping);
- }
-
/**
* Set the active foreground painting color for the renderer.
* All the foreground drawing from then on will be done with that color, unless
@@ -320,7 +307,6 @@ public:
* Defaults to using the active Foreground color for filling.
*/
virtual void fillSurface() = 0;
- virtual void fillSurfaceClip(Common::Rect clipping) = 0;
/**
* Clears the active surface.
@@ -384,6 +370,16 @@ public:
}
/**
+ * Sets the clipping rectangle to be used by draw calls.
+ *
+ * Draw calls are restricted to pixels that are inside of the clipping
+ * rectangle. Pixels outside the clipping rectangle are not modified.
+ * To disable the clipping rectangle, call this method with a rectangle
+ * the same size as the target surface.
+ */
+ virtual void setClippingRect(const Common::Rect &clippingArea) = 0;
+
+ /**
* Translates the position data inside a DrawStep into actual
* screen drawing positions.
*/
@@ -398,74 +394,74 @@ public:
/**
* DrawStep callback functions for each drawing feature
*/
- void drawCallback_CIRCLE(const Common::Rect &area, const DrawStep &step, const Common::Rect &clip) {
+ void drawCallback_CIRCLE(const Common::Rect &area, const DrawStep &step) {
uint16 x, y, w, h, radius;
radius = stepGetRadius(step, area);
stepGetPositions(step, area, x, y, w, h);
- drawCircleClip(x + radius, y + radius, radius, clip);
+ drawCircle(x + radius, y + radius, radius);
}
- void drawCallback_SQUARE(const Common::Rect &area, const DrawStep &step, const Common::Rect &clip) {
+ void drawCallback_SQUARE(const Common::Rect &area, const DrawStep &step) {
uint16 x, y, w, h;
stepGetPositions(step, area, x, y, w, h);
- drawSquareClip(x, y, w, h, clip);
+ drawSquare(x, y, w, h);
}
- void drawCallback_LINE(const Common::Rect &area, const DrawStep &step, const Common::Rect &clip) {
+ void drawCallback_LINE(const Common::Rect &area, const DrawStep &step) {
uint16 x, y, w, h;
stepGetPositions(step, area, x, y, w, h);
- drawLineClip(x, y, x + w, y + w, clip);
+ drawLine(x, y, x + w, y + w);
}
- void drawCallback_ROUNDSQ(const Common::Rect &area, const DrawStep &step, const Common::Rect &clip) {
+ void drawCallback_ROUNDSQ(const Common::Rect &area, const DrawStep &step) {
uint16 x, y, w, h;
stepGetPositions(step, area, x, y, w, h);
- drawRoundedSquareClip(x, y, stepGetRadius(step, area), w, h, clip);
+ drawRoundedSquare(x, y, stepGetRadius(step, area), w, h);
}
- void drawCallback_FILLSURFACE(const Common::Rect &area, const DrawStep &step, const Common::Rect &clip) {
- fillSurfaceClip(clip);
+ void drawCallback_FILLSURFACE(const Common::Rect &area, const DrawStep &step) {
+ fillSurface();
}
- void drawCallback_TRIANGLE(const Common::Rect &area, const DrawStep &step, const Common::Rect &clip) {
+ void drawCallback_TRIANGLE(const Common::Rect &area, const DrawStep &step) {
uint16 x, y, w, h;
stepGetPositions(step, area, x, y, w, h);
- drawTriangleClip(x, y, w, h, (TriangleOrientation)step.extraData, clip);
+ drawTriangle(x, y, w, h, (TriangleOrientation)step.extraData);
}
- void drawCallback_BEVELSQ(const Common::Rect &area, const DrawStep &step, const Common::Rect &clip) {
+ void drawCallback_BEVELSQ(const Common::Rect &area, const DrawStep &step) {
uint16 x, y, w, h;
stepGetPositions(step, area, x, y, w, h);
- drawBeveledSquareClip(x, y, w, h, _bevel, clip);
+ drawBeveledSquare(x, y, w, h);
}
- void drawCallback_TAB(const Common::Rect &area, const DrawStep &step, const Common::Rect &clip) {
+ void drawCallback_TAB(const Common::Rect &area, const DrawStep &step) {
uint16 x, y, w, h;
stepGetPositions(step, area, x, y, w, h);
- drawTabClip(x, y, stepGetRadius(step, area), w, h, clip);
+ drawTab(x, y, stepGetRadius(step, area), w, h);
}
- void drawCallback_BITMAP(const Common::Rect &area, const DrawStep &step, const Common::Rect &clip) {
+ void drawCallback_BITMAP(const Common::Rect &area, const DrawStep &step) {
uint16 x, y, w, h;
stepGetPositions(step, area, x, y, w, h);
- blitKeyBitmapClip(step.blitSrc, Common::Rect(x, y, x + w, y + h), clip);
+ blitKeyBitmap(step.blitSrc, Common::Point(x, y));
}
- void drawCallback_ALPHABITMAP(const Common::Rect &area, const DrawStep &step, const Common::Rect &clip) {
+ void drawCallback_ALPHABITMAP(const Common::Rect &area, const DrawStep &step) {
uint16 x, y, w, h;
stepGetPositions(step, area, x, y, w, h);
blitAlphaBitmap(step.blitAlphaSrc, Common::Rect(x, y, x + w, y + h), step.autoscale, step.xAlign, step.yAlign); // TODO
}
- void drawCallback_CROSS(const Common::Rect &area, const DrawStep &step, const Common::Rect &clip) {
+ void drawCallback_CROSS(const Common::Rect &area, const DrawStep &step) {
uint16 x, y, w, h;
stepGetPositions(step, area, x, y, w, h);
- drawCrossClip(x, y, w, h, clip);
+ drawCross(x, y, w, h);
}
- void drawCallback_VOID(const Common::Rect &area, const DrawStep &step, const Common::Rect &clip) {}
+ void drawCallback_VOID(const Common::Rect &area, const DrawStep &step) {}
/**
* Draws the specified draw step on the screen.
@@ -474,8 +470,7 @@ public:
* @param area Zone to paint on
* @param step Pointer to a DrawStep struct.
*/
- virtual void drawStep(const Common::Rect &area, const DrawStep &step, uint32 extra = 0);
- virtual void drawStepClip(const Common::Rect &area, const Common::Rect &clip, const DrawStep &step, uint32 extra = 0);
+ virtual void drawStep(const Common::Rect &area, const Common::Rect &clip, const DrawStep &step, uint32 extra = 0);
/**
* Copies the part of the current frame to the system overlay.
@@ -509,17 +504,11 @@ public:
virtual void blitSurface(const Graphics::Surface *source, const Common::Rect &r) = 0;
/**
- * Blits a given graphics surface into a small area of the current drawing surface.
- *
- * Note that the given surface is expected to be smaller than the
- * active drawing surface, hence the WHOLE source surface will be
- * blitted into the active surface, at the position specified by "r".
+ * Blits a given graphics surface at the specified position of the current drawing surface.
*/
- virtual void blitSubSurface(const Graphics::Surface *source, const Common::Rect &r) = 0;
- virtual void blitSubSurfaceClip(const Graphics::Surface *source, const Common::Rect &r, const Common::Rect &clipping) = 0;
+ virtual void blitSubSurface(const Graphics::Surface *source, const Common::Point &p) = 0;
- virtual void blitKeyBitmap(const Graphics::Surface *source, const Common::Rect &r) = 0;
- virtual void blitKeyBitmapClip(const Graphics::Surface *source, const Common::Rect &r, const Common::Rect &clipping) = 0;
+ virtual void blitKeyBitmap(const Graphics::Surface *source, const Common::Point &p) = 0;
virtual void blitAlphaBitmap(Graphics::TransparentSurface *source, const Common::Rect &r,
GUI::ThemeEngine::AutoScaleMode autoscale = GUI::ThemeEngine::kAutoScaleNone,