aboutsummaryrefslogtreecommitdiff
path: root/graphics/VectorRenderer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'graphics/VectorRenderer.cpp')
-rw-r--r--graphics/VectorRenderer.cpp103
1 files changed, 83 insertions, 20 deletions
diff --git a/graphics/VectorRenderer.cpp b/graphics/VectorRenderer.cpp
index 9bd2ca7e01..c34b73d4bd 100644
--- a/graphics/VectorRenderer.cpp
+++ b/graphics/VectorRenderer.cpp
@@ -60,28 +60,53 @@ void vector_renderer_test(OSystem *_system) {
_system->showOverlay();
+ DrawStep *steps = new DrawStep[5];
+
+ steps[0].color1.r = 214;
+ steps[0].color1.g = 113;
+ steps[0].color1.b = 8;
+ steps[0].color2.r = 240;
+ steps[0].color2.g = 200;
+ steps[0].color2.b = 25;
+ steps[0].fill_mode = kFillMode_Gradient;
+ steps[0].drawing_call = &VectorRenderer::drawCallback_FILLSURFACE;
+ steps[0].flags = kDrawStep_SetGradient | kDrawStep_SetFillMode;
+
+ steps[1].color1.r = 206;
+ steps[1].color1.g = 121;
+ steps[1].color1.b = 99;
+ steps[1].color2.r = 173;
+ steps[1].color2.g = 40;
+ steps[1].color2.b = 8;
+ steps[1].x = 500;
+ steps[1].y = 95;
+ steps[1].r = 8;
+ steps[1].w = 120;
+ steps[1].h = 30;
+ steps[1].drawing_call = &VectorRenderer::drawCallback_ROUNDSQ;
+ steps[1].flags = kDrawStep_SetGradient;
+
+ steps[2].x = 500;
+ steps[2].y = 135;
+ steps[2].r = 8;
+ steps[2].w = 120;
+ steps[2].h = 30;
+ steps[2].drawing_call = &VectorRenderer::drawCallback_ROUNDSQ;
+ steps[2].flags = kDrawStep_CallbackOnly;
+
+ steps[3].x = 500;
+ steps[3].y = 175;
+ steps[3].r = 8;
+ steps[3].w = 120;
+ steps[3].h = 30;
+ steps[3].drawing_call = &VectorRenderer::drawCallback_ROUNDSQ;
+ steps[3].flags = kDrawStep_CallbackOnly;
+
bool running = true;
while (running) { // draw!!
- vr->setFgColor(255, 0, 206);
- vr->setGradientFactor(1);
- vr->setGradientColors(214, 113, 8, 240, 200, 25);
- vr->fillSurface(kFillMode_Gradient);
-
- vr->setBgColor(25, 25, 175);
- vr->shadowEnable(3);
- vr->setFgColor(240, 204, 120);
- vr->setStrokeWidth(1);
- vr->setFillMode(kFillMode_Gradient);
-
- vr->setGradientFactor(3);
- vr->setGradientColors(255, 231, 140, 255, 243, 206);
- vr->drawRoundedSquare(25, 95, 18, 465, 290);
-
- vr->setGradientFactor(1);
- vr->setGradientColors(206, 121, 99, 173, 40, 8);
- vr->drawRoundedSquare(500, 95, 8, 120, 30);
- vr->drawRoundedSquare(500, 135, 8, 120, 30);
- vr->drawRoundedSquare(500, 175, 8, 120, 30);
+
+ for (int i = 0; i < 4; ++i)
+ vr->drawStep(&steps[i]);
_system->copyRectToOverlay((OverlayColor*)_screen.getBasePtr(0, 0), _screen.w, 0, 0, _screen.w, _screen.w);
_system->updateScreen();
@@ -98,6 +123,44 @@ void vector_renderer_test(OSystem *_system) {
}
/********************************************************************
+ * DRAWSTEP handling functions
+ ********************************************************************/
+void VectorRenderer::drawStep(DrawStep *step) {
+
+ if (step->flags & kDrawStep_CallbackOnly) {
+ (this->*(step->drawing_call))(step);
+ return;
+ }
+
+ if (step->flags & kDrawStep_SetBG)
+ setBgColor(step->color2.r, step->color2.g, step->color2.b);
+
+ if (step->flags & kDrawStep_SetFG)
+ setFgColor(step->color1.r, step->color1.g, step->color1.b);
+
+ if (step->flags & kDrawStep_SetGradient)
+ setGradientColors(step->color1.r, step->color1.g, step->color1.b,
+ step->color2.r, step->color2.g, step->color2.b);
+
+ if (step->flags & kDrawStep_SetShadow)
+ shadowEnable(step->shadow);
+
+ if (step->flags & kDrawStep_SetGradientFactor)
+ setGradientFactor(step->factor);
+
+ if (step->flags & kDrawStep_SetStroke)
+ setStrokeWidth(step->stroke);
+
+ if (step->flags & kDrawStep_SetFillMode)
+ setFillMode(step->fill_mode);
+
+ if (step->flags & kDrawStep_SettingsOnly)
+ return;
+
+ (this->*(step->drawing_call))(step);
+}
+
+/********************************************************************
* MISCELANEOUS functions
********************************************************************/
/** Fixed point SQUARE ROOT **/