aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--graphics/macgui/macwindow.cpp20
-rw-r--r--graphics/macgui/macwindow.h4
-rw-r--r--graphics/macgui/macwindowborder.cpp21
-rw-r--r--graphics/macgui/macwindowborder.h9
4 files changed, 25 insertions, 29 deletions
diff --git a/graphics/macgui/macwindow.cpp b/graphics/macgui/macwindow.cpp
index 3c9372a745..96139b2508 100644
--- a/graphics/macgui/macwindow.cpp
+++ b/graphics/macgui/macwindow.cpp
@@ -78,9 +78,6 @@ MacWindow::MacWindow(int id, bool scrollable, bool resizable, bool editable, Mac
_draggedX = _draggedY = 0;
_type = kWindowWindow;
-
- _borders = nullptr;
-
}
MacWindow::~MacWindow() {
@@ -186,7 +183,7 @@ void MacWindow::drawBorder() {
ManagedSurface *g = &_borderSurface;
prepareBorderSurface(g);
- if (!_macBorder.empty())
+ if (_macBorder.hasBorder(_active))
drawBorderFromSurface(g);
else
drawSimpleBorder(g);
@@ -203,12 +200,7 @@ void MacWindow::prepareBorderSurface(ManagedSurface *g) {
}
void MacWindow::drawBorderFromSurface(ManagedSurface *g) {
-
- TransparentSurface srf;
- srf.create(_borderSurface.w, _borderSurface.h, _borders->format);
-
_macBorder.blitBorderInto(_borderSurface, _active);
- _borderSurface.transBlitFrom(srf, _borderSurface.format.ARGBToColor(0, 255, 255, 255));
}
void MacWindow::drawSimpleBorder(ManagedSurface *g) {
@@ -301,15 +293,13 @@ void MacWindow::setHighlight(WindowClick highlightedPart) {
_borderIsDirty = true;
}
- void MacWindow::setBorder(TransparentSurface *source, bool active) {
- _borders = new TransparentSurface(*source);
+ void MacWindow::setBorder(TransparentSurface &border, bool active) {
if (active)
- _macBorder.addActiveBorder(_borders);
- else
- _macBorder.addInactiveBorder(_borders);
+ _macBorder.addActiveBorder(border);
+ else
+ _macBorder.addInactiveBorder(border);
}
-
void MacWindow::drawBox(ManagedSurface *g, int x, int y, int w, int h) {
Common::Rect r(x, y, x + w + 1, y + h + 1);
diff --git a/graphics/macgui/macwindow.h b/graphics/macgui/macwindow.h
index bffeaf7104..e9e2ffd34c 100644
--- a/graphics/macgui/macwindow.h
+++ b/graphics/macgui/macwindow.h
@@ -138,7 +138,7 @@ public:
bool processEvent(Common::Event &event);
bool hasAllFocus() { return _beingDragged || _beingResized; }
- void setBorder(TransparentSurface *source, bool active);
+ void setBorder(TransparentSurface &border, bool active);
private:
void drawBorder();
@@ -155,8 +155,6 @@ private:
ManagedSurface _borderSurface;
ManagedSurface _composeSurface;
- TransparentSurface *_borders;
-
MacWindowBorder _macBorder;
bool _scrollable;
diff --git a/graphics/macgui/macwindowborder.cpp b/graphics/macgui/macwindowborder.cpp
index cbb2ef0571..761e1b6853 100644
--- a/graphics/macgui/macwindowborder.cpp
+++ b/graphics/macgui/macwindowborder.cpp
@@ -2,9 +2,9 @@
namespace Graphics {
-MacWindowBorder::MacWindowBorder() {
+MacWindowBorder::MacWindowBorder() : _activeInitialized(false), _inactiveInitialized(false) {
_activeBorder = nullptr;
- _inactiveBorder = nullptr;
+ _inactiveBorder = nullptr;
}
@@ -15,15 +15,20 @@ MacWindowBorder::~MacWindowBorder() {
delete _inactiveBorder;
}
-bool MacWindowBorder::empty() { return !(_activeBorder || _inactiveBorder); }
+bool MacWindowBorder::hasBorder(bool active) {
+ return active ? _activeInitialized : _inactiveInitialized;
+}
-void MacWindowBorder::addActiveBorder(TransparentSurface *source) {
- // Assumes NinePatchBitmap invariants hold
- _activeBorder = new NinePatchBitmap(source, false);
+void MacWindowBorder::addActiveBorder(TransparentSurface &source) {
+ assert(!_activeBorder);
+ _activeBorder = new NinePatchBitmap(&source, false);
+ _activeInitialized = true;
}
-void MacWindowBorder::addInactiveBorder(TransparentSurface *source) {
- _inactiveBorder = new NinePatchBitmap(source, false);
+void MacWindowBorder::addInactiveBorder(TransparentSurface &source) {
+ assert(!_inactiveBorder);
+ _inactiveBorder = new NinePatchBitmap(&source, false);
+ _inactiveInitialized = true;
}
void MacWindowBorder::blitBorderInto(ManagedSurface &destination, bool active) {
diff --git a/graphics/macgui/macwindowborder.h b/graphics/macgui/macwindowborder.h
index 0c98e23156..1e46e1a017 100644
--- a/graphics/macgui/macwindowborder.h
+++ b/graphics/macgui/macwindowborder.h
@@ -62,9 +62,9 @@ public:
MacWindowBorder();
~MacWindowBorder();
- bool empty();
- void addActiveBorder(TransparentSurface *source);
- void addInactiveBorder(TransparentSurface *source);
+ bool hasBorder(bool active);
+ void addActiveBorder(TransparentSurface &source);
+ void addInactiveBorder(TransparentSurface &source);
void blitBorderInto(ManagedSurface &destination, bool active);
private:
@@ -72,6 +72,9 @@ private:
NinePatchBitmap *_activeBorder;
NinePatchBitmap *_inactiveBorder;
+ bool _activeInitialized;
+ bool _inactiveInitialized;
+
};
} // End of namespace Graphics