GRAPHICS: Refactor MacWindow to accept MacWindowBorder

This commit is contained in:
Borja Lorente
2016-07-31 14:45:37 +02:00
parent 1bfb1a561c
commit f642ad1cae
4 changed files with 26 additions and 30 deletions
+5 -15
View File
@@ -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);
+1 -3
View File
@@ -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;
+14 -9
View File
@@ -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); }
void MacWindowBorder::addActiveBorder(TransparentSurface *source) {
// Assumes NinePatchBitmap invariants hold
_activeBorder = new NinePatchBitmap(source, false);
bool MacWindowBorder::hasBorder(bool active) {
return active ? _activeInitialized : _inactiveInitialized;
}
void MacWindowBorder::addInactiveBorder(TransparentSurface *source) {
_inactiveBorder = new NinePatchBitmap(source, false);
void MacWindowBorder::addActiveBorder(TransparentSurface &source) {
assert(!_activeBorder);
_activeBorder = new NinePatchBitmap(&source, false);
_activeInitialized = true;
}
void MacWindowBorder::addInactiveBorder(TransparentSurface &source) {
assert(!_inactiveBorder);
_inactiveBorder = new NinePatchBitmap(&source, false);
_inactiveInitialized = true;
}
void MacWindowBorder::blitBorderInto(ManagedSurface &destination, bool active) {
+6 -3
View File
@@ -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