From d33890f110f40318542c382640f95601a44bdb54 Mon Sep 17 00:00:00 2001 From: Vicent Marti Date: Sat, 3 May 2008 23:51:24 +0000 Subject: Rectangle drawing. svn-id: r31854 --- graphics/VectorRenderer.cpp | 21 ++++++++++++++++++++- graphics/VectorRenderer.h | 7 ++++++- 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 void VectorRendererSpec:: +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 +void VectorRendererSpec:: 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() */ -- cgit v1.2.3