aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--graphics/VectorRenderer.cpp21
-rw-r--r--graphics/VectorRenderer.h7
2 files changed, 26 insertions, 2 deletions
diff --git a/graphics/VectorRenderer.cpp b/graphics/VectorRenderer.cpp
index 256739c614..f62ff92092 100644
--- a/graphics/VectorRenderer.cpp
+++ b/graphics/VectorRenderer.cpp
@@ -64,7 +64,7 @@ void vector_renderer_test(OSystem *_system) {
vr->setColor(255, 0, 0 );
vr->drawLine(25, 25, 125, 300);
vr->drawCircle(250, 250, 100);
-
+ vr->drawSquare(150, 150, 100, 100, false);
_system->copyRectToOverlay((OverlayColor*)_screen.getBasePtr(0, 0), _screen.w, 0, 0, _screen.w, _screen.w);
_system->updateScreen();
_system->delayMillis(100);
@@ -75,6 +75,25 @@ void vector_renderer_test(OSystem *_system) {
template<typename PixelType, typename PixelFormat>
void VectorRendererSpec<PixelType, PixelFormat>::
+drawSquare(int x, int y, int w, int h, bool fill) {
+ if ( fill ) {
+ PixelType *ptr = (PixelType *)_activeSurface->getBasePtr(x, y);
+ int pitch = surfacePitch();
+
+ while (h--) {
+ Common::set_to(ptr, ptr + w, (PixelType)_color);
+ ptr += pitch;
+ }
+ } else {
+ drawLine( x, y, x + w, y );
+ drawLine( x + w, y, x + w, y + w );
+ drawLine( x, y + w, x + w, y + w );
+ drawLine( x, y, x, y + w );
+ }
+}
+
+template<typename PixelType, typename PixelFormat>
+void VectorRendererSpec<PixelType,PixelFormat>::
drawLineAlg(int x1, int y1, int x2, int y2, int dx, int dy) {
PixelType *ptr = (PixelType *)_activeSurface->getBasePtr(x1, y1);
int pitch = surfacePitch();
diff --git a/graphics/VectorRenderer.h b/graphics/VectorRenderer.h
index 2f648b9c56..b29a8aa633 100644
--- a/graphics/VectorRenderer.h
+++ b/graphics/VectorRenderer.h
@@ -74,6 +74,9 @@ public:
*/
virtual void drawCircle(int x, int y, int r) = 0;
+
+ virtual void drawSquare(int x, int y, int w, int h, bool fill) = 0;
+
/**
* Gets the pixel pitch for the current drawing surface.
* Note: This is a real pixel-pitch, not a byte-pitch.
@@ -206,12 +209,14 @@ public:
/**
* @see VectorRenderer::drawLine()
*/
- void drawLine(int x1, int x2, int y1, int y2);
+ void drawLine(int x1, int y1, int x2, int y2);
void drawCircle(int x, int y, int r) {
drawCircleAlg(x, y, r);
}
+ void drawSquare(int x, int y, int w, int h, bool fill);
+
/**
* @see VectorRenderer::setColor()
*/