diff options
author | Johannes Schickel | 2006-05-29 14:00:00 +0000 |
---|---|---|
committer | Johannes Schickel | 2006-05-29 14:00:00 +0000 |
commit | 0a557cf2a47038ea290fd13b3d64e7ce887c484c (patch) | |
tree | 852ec18d7b84b5bef279176563d4346d0a7e60b1 /gui | |
parent | af25e65c31cf01026ba8baf84ab01595b16b1ddd (diff) | |
download | scummvm-rg350-0a557cf2a47038ea290fd13b3d64e7ce887c484c.tar.gz scummvm-rg350-0a557cf2a47038ea290fd13b3d64e7ce887c484c.tar.bz2 scummvm-rg350-0a557cf2a47038ea290fd13b3d64e7ce887c484c.zip |
- changes transparency parameter of Theme::drawSurface to alpha parameter.
- adds possibility to draw GraphicsWidgets with alpha values.
svn-id: r22738
Diffstat (limited to 'gui')
-rw-r--r-- | gui/ThemeClassic.cpp | 2 | ||||
-rw-r--r-- | gui/ThemeNew.cpp | 25 | ||||
-rw-r--r-- | gui/launcher.cpp | 2 | ||||
-rw-r--r-- | gui/theme.h | 6 | ||||
-rw-r--r-- | gui/widget.cpp | 6 | ||||
-rw-r--r-- | gui/widget.h | 4 |
6 files changed, 15 insertions, 30 deletions
diff --git a/gui/ThemeClassic.cpp b/gui/ThemeClassic.cpp index 7f1f41e315..e9ed6066c4 100644 --- a/gui/ThemeClassic.cpp +++ b/gui/ThemeClassic.cpp @@ -219,7 +219,7 @@ void ThemeClassic::drawButton(const Common::Rect &r, const Common::String &str, addDirtyRect(r); } -void ThemeClassic::drawSurface(const Common::Rect &r, const Graphics::Surface &surface, kState state, bool transparency) { +void ThemeClassic::drawSurface(const Common::Rect &r, const Graphics::Surface &surface, kState state, int alpha) { if (!_initOk) return; diff --git a/gui/ThemeNew.cpp b/gui/ThemeNew.cpp index 94fc94a4db..55bb334485 100644 --- a/gui/ThemeNew.cpp +++ b/gui/ThemeNew.cpp @@ -624,7 +624,7 @@ void ThemeNew::drawButton(const Common::Rect &r, const Common::String &str, kSta addDirtyRect(r2); } -void ThemeNew::drawSurface(const Common::Rect &r, const Graphics::Surface &surface, kState state, bool transparency) { +void ThemeNew::drawSurface(const Common::Rect &r, const Graphics::Surface &surface, kState state, int alpha) { if (!_initOk) return; @@ -636,25 +636,12 @@ void ThemeNew::drawSurface(const Common::Rect &r, const Graphics::Surface &surfa assert(surface.bytesPerPixel == sizeof(OverlayColor)); - if (transparency) { - drawSurface(rect, &surface, false, false, 256); - addDirtyRect(r); - return; - } - - OverlayColor *src = (OverlayColor *)surface.pixels; - OverlayColor *dst = (OverlayColor *)_screen.getBasePtr(rect.left, rect.top); - - int w = rect.width(); - int h = rect.height(); + if (alpha != 256) + restoreBackground(rect); - while (h--) { - memcpy(dst, src, surface.pitch); - src += w; - // FIXME: this should be pitch - dst += _screen.w; - } - addDirtyRect(r); + drawSurface(rect, &surface, false, false, alpha); + addDirtyRect(rect); + return; } void ThemeNew::drawSlider(const Common::Rect &rr, int width, kState state) { diff --git a/gui/launcher.cpp b/gui/launcher.cpp index a68a514b05..11896f9a09 100644 --- a/gui/launcher.cpp +++ b/gui/launcher.cpp @@ -452,7 +452,6 @@ LauncherDialog::LauncherDialog() if (g_gui.evaluator()->getVar("launcher_logo.visible") == 1) { _logo = new GraphicsWidget(this, "launcher_logo"); ThemeNew *th = (ThemeNew *)g_gui.theme(); - _logo->useTransparency(true); _logo->setGfx(th->getImageSurface(th->kThemeLogo)); @@ -782,7 +781,6 @@ void LauncherDialog::handleScreenChanged() { if (!_logo) _logo = new GraphicsWidget(this, "launcher_logo"); ThemeNew *th = (ThemeNew *)g_gui.theme(); - _logo->useTransparency(true); _logo->setGfx(th->getImageSurface(th->kThemeLogo)); } else { diff --git a/gui/theme.h b/gui/theme.h index 401f34046e..98446e8a6a 100644 --- a/gui/theme.h +++ b/gui/theme.h @@ -142,7 +142,7 @@ public: virtual void drawWidgetBackground(const Common::Rect &r, uint16 hints, kWidgetBackground background = kWidgetBackgroundPlain, kState state = kStateEnabled) = 0; virtual void drawButton(const Common::Rect &r, const Common::String &str, kState state = kStateEnabled) = 0; - virtual void drawSurface(const Common::Rect &r, const Graphics::Surface &surface, kState state = kStateEnabled, bool transparency = false) = 0; + virtual void drawSurface(const Common::Rect &r, const Graphics::Surface &surface, kState state = kStateEnabled, int alpha = 256) = 0; virtual void drawSlider(const Common::Rect &r, int width, kState state = kStateEnabled) = 0; virtual void drawCheckbox(const Common::Rect &r, const Common::String &str, bool checked, kState state = kStateEnabled) = 0; virtual void drawTab(const Common::Rect &r, int tabHeight, int tabWidth, const Common::Array<Common::String> &tabs, int active, uint16 hints, kState state = kStateEnabled) = 0; @@ -244,7 +244,7 @@ public: void drawWidgetBackground(const Common::Rect &r, uint16 hints, kWidgetBackground background, kState state); void drawButton(const Common::Rect &r, const String &str, kState state); - void drawSurface(const Common::Rect &r, const Graphics::Surface &surface, kState state, bool transparency); + void drawSurface(const Common::Rect &r, const Graphics::Surface &surface, kState state, int alpha); void drawSlider(const Common::Rect &r, int width, kState state); void drawCheckbox(const Common::Rect &r, const String &str, bool checked, kState state); void drawTab(const Common::Rect &r, int tabHeight, int tabWidth, const Common::Array<String> &tabs, int active, uint16 hints, kState state); @@ -321,7 +321,7 @@ public: void drawWidgetBackground(const Common::Rect &r, uint16 hints, kWidgetBackground background, kState state); void drawButton(const Common::Rect &r, const String &str, kState state); - void drawSurface(const Common::Rect &r, const Graphics::Surface &surface, kState state, bool transparency); + void drawSurface(const Common::Rect &r, const Graphics::Surface &surface, kState state, int alpha); void drawSlider(const Common::Rect &r, int width, kState state); void drawCheckbox(const Common::Rect &r, const String &str, bool checked, kState state); void drawTab(const Common::Rect &r, int tabHeight, int tabWidth, const Common::Array<String> &tabs, int active, uint16 hints, kState state); diff --git a/gui/widget.cpp b/gui/widget.cpp index e744c0f220..5ae42e6500 100644 --- a/gui/widget.cpp +++ b/gui/widget.cpp @@ -316,7 +316,7 @@ int SliderWidget::posToValue(int pos) { #pragma mark - GraphicsWidget::GraphicsWidget(GuiObject *boss, int x, int y, int w, int h) - : Widget(boss, x, y, w, h), _gfx(), _transparency(false) { + : Widget(boss, x, y, w, h), _gfx(), _alpha(256) { _flags = WIDGET_ENABLED | WIDGET_CLEARBG; _type = kGraphicsWidget; // HACK: Don't save the background. We want to be sure that redrawing @@ -326,7 +326,7 @@ GraphicsWidget::GraphicsWidget(GuiObject *boss, int x, int y, int w, int h) } GraphicsWidget::GraphicsWidget(GuiObject *boss, String name) - : Widget(boss, name), _gfx(), _transparency(false) { + : Widget(boss, name), _gfx(), _alpha(256) { _flags = WIDGET_ENABLED | WIDGET_CLEARBG; _type = kGraphicsWidget; // HACK: Don't save the background. We want to be sure that redrawing @@ -352,7 +352,7 @@ void GraphicsWidget::setGfx(const Graphics::Surface *gfx) { void GraphicsWidget::drawWidget(bool hilite) { if (sizeof(OverlayColor) == _gfx.bytesPerPixel && _gfx.pixels) { - g_gui.theme()->drawSurface(Common::Rect(_x, _y, _x+_w, _y+_h), _gfx, Theme::kStateEnabled, _transparency); + g_gui.theme()->drawSurface(Common::Rect(_x, _y, _x+_w, _y+_h), _gfx, Theme::kStateEnabled, _alpha); } } diff --git a/gui/widget.h b/gui/widget.h index 6c712ef264..9f366c46b7 100644 --- a/gui/widget.h +++ b/gui/widget.h @@ -271,13 +271,13 @@ public: void setGfx(const Graphics::Surface *gfx); - void useTransparency(bool state) { _transparency = state; } + void useAlpha(int alpha) { _alpha = alpha; } protected: void drawWidget(bool hilite); Graphics::Surface _gfx; - bool _transparency; + int _alpha; }; /* ContainerWidget */ |