From 38114eb760f842eb3145c9d1af62366cf2fab8ca Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Wed, 7 May 2014 13:12:59 +0300 Subject: GUI: Plug NinePatch bitmaps into parser --- graphics/VectorRenderer.h | 3 ++- graphics/VectorRendererSpec.cpp | 4 ++++ gui/ThemeParser.cpp | 9 ++++++--- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/graphics/VectorRenderer.h b/graphics/VectorRenderer.h index fb19fa3156..0a83dc5d49 100644 --- a/graphics/VectorRenderer.h +++ b/graphics/VectorRenderer.h @@ -71,7 +71,8 @@ struct DrawStep { enum AutoScaleMode { kAutoScaleNone = 0, kAutoScaleStretch = 1, - kAutoScaleFit = 2 + kAutoScaleFit = 2, + kAutoScaleNinePatch = 3 }; VectorAlignment xAlign; diff --git a/graphics/VectorRendererSpec.cpp b/graphics/VectorRendererSpec.cpp index 68b77d20ee..f3e496af70 100644 --- a/graphics/VectorRendererSpec.cpp +++ b/graphics/VectorRendererSpec.cpp @@ -26,6 +26,7 @@ #include "graphics/surface.h" #include "graphics/transparent_surface.h" +#include "graphics/nine_patch.h" #include "graphics/colormasks.h" #include "gui/ThemeEngine.h" @@ -902,6 +903,9 @@ blitAlphaBitmap(Graphics::TransparentSurface *source, const Common::Rect &r, Gra nullptr, TS_ARGB(255, 255, 255, 255), (int)(source->w * ratio), (int)(source->h * ratio)); + } else if (autoscale == Graphics::DrawStep::kAutoScaleNinePatch) { + Graphics::NinePatchBitmap nine(source, false); + nine.blit(*_activeSurface, r.left, r.top, r.width(), r.height()); } else { source->blit(*_activeSurface, r.left, r.top); } diff --git a/gui/ThemeParser.cpp b/gui/ThemeParser.cpp index 226281122f..d4701c49f6 100644 --- a/gui/ThemeParser.cpp +++ b/gui/ThemeParser.cpp @@ -469,12 +469,15 @@ bool ThemeParser::parseDrawStep(ParserNode *stepNode, Graphics::DrawStep *drawst drawstep->blitAlphaSrc = _theme->getAlphaBitmap(stepNode->values["file"]); if (stepNode->values.contains("autoscale")) - if (stepNode->values["autoscale"] == "true" || stepNode->values["autoscale"] == "stretch") + if (stepNode->values["autoscale"] == "true" || stepNode->values["autoscale"] == "stretch") { drawstep->autoscale = Graphics::DrawStep::kAutoScaleStretch; - else if (stepNode->values["autoscale"] == "fit") + } else if (stepNode->values["autoscale"] == "fit") { drawstep->autoscale = Graphics::DrawStep::kAutoScaleFit; - else + } else if (stepNode->values["autoscale"] == "9patch") { + drawstep->autoscale = Graphics::DrawStep::kAutoScaleNinePatch; + } else { drawstep->autoscale = Graphics::DrawStep::kAutoScaleNone; + } if (!drawstep->blitAlphaSrc) return parserError("The given filename hasn't been loaded into the GUI."); -- cgit v1.2.3