mirror of
https://github.com/scummvm/scummvm.git
synced 2026-06-20 05:45:29 +00:00
GRAPHICS: Refactor MacWindow to accept MacWindowBorder
This commit is contained in:
@@ -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);
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user