22#ifndef GRAPHICS_MACGUI_MACWINDOW_H
23#define GRAPHICS_MACGUI_MACWINDOW_H
25#include "common/stream.h"
27#include "graphics/managed_surface.h"
28#include "graphics/nine_patch.h"
29#include "graphics/font.h"
31#include "graphics/macgui/macwidget.h"
32#include "graphics/macgui/macwindowborder.h"
36class MacWindowManager;
40namespace MacWindowConstants {
67 kBorderMaximizeButton,
71 kWindowModeDynamicScrollbar = 1 << 0
74using namespace MacWindowConstants;
147 bool draw(
bool forceRedraw =
false)
override = 0;
239 virtual void resize(
int w,
int h);
246 virtual void resizeInner(
int w,
int h);
277 bool draw(
bool forceRedraw =
false)
override;
340 bool hasAllFocus()
override {
return _beingDragged || _beingResized; }
356 void disableBorder();
357 void loadInternalBorder(uint32 flags);
390 void mergeDirtyRects();
392 void clearDirtyRects() { _dirtyRects.
clear(); }
395 bool isDirty()
override {
return _borderIsDirty || _contentIsDirty; }
397 void setBorderDirty(
bool dirty) { _borderIsDirty = dirty; }
398 void setContentDirty(
bool dirty) { _contentIsDirty = dirty; }
399 void resizeBorderSurface();
401 void setMode(uint32 mode) { _mode = mode; }
402 void setBorderOffsets(BorderOffsets &offsets) { _macBorder.
setOffsets(offsets); }
403 const BorderOffsets &getBorderOffsets()
const {
return _macBorder.
getOffset(); }
405 void updateInnerDims();
408 void rebuildSurface();
409 void drawBorderFromSurface(ManagedSurface *g, uint32 flags);
411 void drawBox(ManagedSurface *g,
int x,
int y,
int w,
int h);
412 void fillRect(ManagedSurface *g,
int x,
int y,
int w,
int h,
int color);
413 const Font *getTitleFont();
414 void updateOuterDims();
416 bool isInCloseButton(
int x,
int y)
const;
417 bool isInResizeButton(
int x,
int y)
const;
418 WindowClick isInScroll(
int x,
int y)
const;
422 WindowClick isInBorder(
int x,
int y)
const;
425 ManagedSurface _borderSurface;
435 MacWindowBorder _macBorder;
444 bool _isTitleVisible;
448 bool _beingDragged, _beingResized;
449 int _draggedX, _draggedY;
451 WindowClick _highlightedPart;
void clear()
Definition: list.h:245
Definition: macwindow.h:80
virtual ManagedSurface * getBorderSurface()=0
bool draw(bool forceRedraw=false) override=0
virtual const Common::Rect & getInnerDimensions()=0
BaseMacWindow(int id, bool editable, MacWindowManager *wm)
int getId()
Definition: macwindow.h:95
ManagedSurface * getWindowSurface()
Definition: macwindow.h:125
void setCallback(bool(*callback)(WindowClick, Common::Event &, void *), void *data)
Definition: macwindow.h:179
bool isEditable() override
Definition: macwindow.h:108
WindowType getType()
Definition: macwindow.h:102
bool draw(ManagedSurface *g, bool forceRedraw=false) override=0
bool processEvent(Common::Event &event) override=0
virtual void setVisible(bool visible, bool silent=false)
void setDraggable(bool draggable)
Definition: macwindow.h:185
void setOffsets(int left, int right, int top, int bottom)
BorderOffsets & getOffset()
Definition: macwindow.h:205
void setActive(bool active) override
void setInnerDimensions(const Common::Rect &r)
const Common::String & getTitle() const
Definition: macwindow.h:322
bool draw(bool forceRedraw=false) override
MacWindow(int id, bool scrollable, bool resizable, bool editable, MacWindowManager *wm)
const Common::Rect & getInnerDimensions() override
Definition: macwindow.h:280
void loadBorder(Common::SeekableReadStream &file, uint32 flags, int lo=-1, int ro=-1, int to=-1, int bo=-1)
void center(bool toCenter=true)
void setCloseable(bool closeable)
MacWindow(const MacWindow &source)
void setDimensions(const Common::Rect &r) override
void setHighlight(WindowClick highlightedPart)
int getBorderType() const
Definition: macwindow.h:379
ManagedSurface * getBorderSurface() override
Definition: macwindow.h:281
void enableScrollbar(bool active)
Definition: macwindow.h:362
void setScroll(float scrollPos, float scrollSize)
void setBorderType(int borderType)
bool draw(ManagedSurface *g, bool forceRedraw=false) override
bool isDirty() override
Definition: macwindow.h:395
void setBackgroundPattern(int pattern)
bool processEvent(Common::Event &event) override
virtual void setTitleVisible(bool visible)
uint32 getBorderFlags() const
void setTitle(const Common::String &title)
Definition: macwindowmanager.h:149
Definition: managed_surface.h:51
Definition: formatinfo.h:28
Definition: macwindowborder.h:57