Woopsi 1.0
GUI Framework for Nintendo DS Homebrew
|
#include <gadget.h>
Classes | |
struct | Flags |
struct | GadgetBorderSize |
struct | NameValuePair |
Public Types | |
enum | CloseType { CLOSE_TYPE_CLOSE = 0, CLOSE_TYPE_HIDE = 1, CLOSE_TYPE_SHELVE = 2 } |
enum | GadgetFlagType { GADGET_BORDERLESS = 0x0001, GADGET_DRAGGABLE = 0x0002, GADGET_PERMEABLE = 0x0004, GADGET_DOUBLE_CLICKABLE = 0x0008, GADGET_NO_RAISE_EVENTS = 0x0010, GADGET_DECORATION = 0x0020 } |
Public Member Functions | |
Gadget (s16 x, s16 y, u16 width, u16 height, u32 flags, GadgetStyle *style=NULL) | |
const s16 | getX () const |
const s16 | getY () const |
const s16 | getRelativeX () const |
const s16 | getRelativeY () const |
const u32 | getRefcon () const |
const CloseType | getCloseType () const |
const bool | hasFocus () const |
const bool | isDeleted () const |
const bool | isDrawingEnabled () const |
const bool | isHidden () const |
const bool | isEnabled () const |
const bool | isDecoration () const |
const bool | isPermeable () const |
const bool | isDoubleClickable () const |
const bool | isBorderless () const |
const bool | isClicked () const |
const bool | isBeingDragged () const |
const bool | isShelved () const |
const bool | isModal () const |
const bool | canReceiveFocus () const |
u16 | getWidth () const |
u16 | getHeight () const |
Gadget * | getParent () const |
Gadget * | getFocusedGadget () |
virtual const u8 | getPhysicalScreenNumber () const |
const bool | raisesEvents () const |
virtual void | getPreferredDimensions (Rect &rect) const |
void | getClientRect (Rect &rect) const |
void | getRectClippedToHierarchy (Rect &rect) const |
GraphicsPort * | newGraphicsPort (bool isForeground) |
GraphicsPort * | newGraphicsPort (Rect clipRect) |
WoopsiArray< Rect > * | getForegroundRegions () |
FontBase * | getFont () const |
FontBase * | getGlyphFont () const |
const u16 | getBackColour () const |
const u16 | getShineColour () const |
const u16 | getHighlightColour () const |
const u16 | getShadowColour () const |
const u16 | getFillColour () const |
const u16 | getDarkColour () const |
u32 | setRefcon (u32 refcon) |
void | setBorderless (bool isBorderless) |
void | setDraggable (const bool isDraggable) |
void | setPermeable (const bool isPermeable) |
void | setDoubleClickable (const bool isDoubleClickable) |
void | addGadgetEventHandler (GadgetEventHandler *eventHandler) |
void | removeGadgetEventHandler (GadgetEventHandler *eventHandler) |
void | setRaisesEvents (const bool raisesEvents) |
void | setBackColour (const u16 colour) |
void | setShineColour (const u16 colour) |
void | setHighlightColour (const u16 colour) |
void | setShadowColour (const u16 colour) |
void | setFillColour (const u16 colour) |
void | setDarkColour (const u16 colour) |
void | setCloseType (const CloseType closeType) |
virtual void | setFont (FontBase *font) |
virtual void | setGlyphFont (FontBase *font) |
void | redraw (const Rect &rect) |
bool | enable () |
bool | disable () |
void | close () |
bool | shelve () |
bool | unshelve () |
bool | show () |
bool | hide () |
bool | click (s16 x, s16 y) |
virtual bool | isDoubleClick (s16 x, s16 y) |
bool | doubleClick (s16 x, s16 y) |
bool | shiftClick (s16 x, s16 y) |
bool | release (s16 x, s16 y) |
bool | drag (s16 x, s16 y, s16 vX, s16 vY) |
bool | keyPress (KeyCode keyCode) |
bool | keyRepeat (KeyCode keyCode) |
bool | keyRelease (KeyCode keyCode) |
void | lidClose () |
void | lidOpen () |
bool | focus () |
bool | blur () |
bool | moveTo (s16 x, s16 y) |
bool | resize (u16 width, u16 height) |
bool | changeDimensions (s16 x, s16 y, u16 width, u16 height) |
bool | raiseToTop () |
bool | lowerToBottom () |
bool | raiseGadgetToTop (Gadget *child) |
bool | lowerGadgetToBottom (Gadget *gadget) |
void | moveChildToDeleteQueue (Gadget *gadget) |
bool | moveChildToShelvedList (Gadget *gadget) |
bool | moveShelvedToChildList (Gadget *gadget) |
void | setFocusedGadget (Gadget *gadget) |
bool | checkCollision (s16 x, s16 y) const |
bool | checkCollision (s16 x, s16 y, u16 width, u16 height) const |
bool | checkCollision (Gadget *gadget) const |
bool | checkCollision (const Rect &rect) const |
void | invalidateLowerGadgetsVisibleRectCache (Gadget *gadget) |
void | addGadget (Gadget *gadget) |
void | insertGadget (Gadget *gadget) |
void | setParent (Gadget *parent) |
void | cacheVisibleRects () const |
void | invalidateVisibleRectCache () |
void | clipRectToHierarchy (Rect &rect) const |
virtual bool | swapGadgetDepth (Gadget *gadget) |
bool | swapDepth () |
void | destroy () |
bool | remove () |
bool | removeChild (Gadget *gadget) |
void | addContextMenuItem (const WoopsiString &name, u32 value) |
void | showContextMenu (s16 x, s16 y) |
virtual bool | handleContextMenuSelection (const ListDataItem *item) |
void | goModal () |
void | stopModal () |
const s32 | getGadgetIndex (const Gadget *gadget) const |
Gadget * | getChild (u32 index) const |
const s32 | getChildCount () const |
const s32 | getDecorationCount () const |
RectCache * | getRectCache () const |
void | setBorderSize (const GadgetBorderSize &borderSize) |
void | markRectsDamaged () |
void | markRectDamaged (const Rect &rect) |
Protected Member Functions | |
virtual | ~Gadget () |
virtual void | drawContents (GraphicsPort *port) |
virtual void | drawBorder (GraphicsPort *port) |
bool | checkCollisionWithForegroundRects (s16 x, s16 y) const |
const s16 | calculatePhysicalScreenY (s16 y) const |
const u8 | calculatePhysicalScreenNumber (s16 y) const |
void | closeChild (Gadget *gadget) |
void | shelveChild (Gadget *gadget) |
GraphicsPort * | newInternalGraphicsPort (Rect clipRect) |
const s32 | getHigherVisibleGadget (const s32 startIndex) const |
const s32 | getLowerVisibleGadget (const s32 startIndex) const |
void | startDragging (s16 x, s16 y) |
void | stopDragging (s16 x, s16 y) |
Gadget (const Gadget &gadget) | |
virtual void | onClick (s16 x, s16 y) |
virtual void | onDoubleClick (s16 x, s16 y) |
virtual void | onShiftClick (s16 x, s16 y) |
virtual void | onRelease (s16 x, s16 y) |
virtual void | onReleaseOutside (s16 x, s16 y) |
virtual void | onDrag (s16 x, s16 y, s16 vX, s16 vY) |
virtual void | onDragStart () |
virtual void | onDragStop () |
virtual void | onKeyPress (KeyCode keyCode) |
virtual void | onKeyRelease (KeyCode keyCode) |
virtual void | onKeyRepeat (KeyCode keyCode) |
virtual void | onFocus () |
virtual void | onBlur () |
virtual void | onLidOpen () |
virtual void | onLidClose () |
virtual void | onEnable () |
virtual void | onDisable () |
virtual void | onResize (u16 width, u16 height) |
Protected Attributes | |
Rect | _rect |
u32 | _refcon |
s16 | _grabPointX |
s16 | _grabPointY |
s16 | _newX |
s16 | _newY |
GadgetStyle | _style |
Flags | _flags |
GadgetEventHandlerList * | _gadgetEventHandlers |
u32 | _lastClickTime |
s16 | _lastClickX |
s16 | _lastClickY |
s16 | _doubleClickBounds |
Gadget * | _parent |
Gadget * | _focusedGadget |
WoopsiArray< Gadget * > | _gadgets |
WoopsiArray< Gadget * > | _shelvedGadgets |
u8 | _decorationCount |
RectCache * | _rectCache |
CloseType | _closeType |
GadgetBorderSize | _borderSize |
WoopsiArray< NameValuePair > | _contextMenuItems |
Class providing all the basic functionality of a Woopsi gadget. All Woopsi gadgets must inherit from this class.
Enum listing flags that can be set in the constructor's "flags" parameter.
GADGET_BORDERLESS |
Gadget has no border |
GADGET_DRAGGABLE |
Gadget can be dragged by the user |
GADGET_PERMEABLE |
Gadget's children can exceed this gadget's edges |
GADGET_DOUBLE_CLICKABLE |
Gadget can be double-clicked |
GADGET_NO_RAISE_EVENTS |
Gadget does not raise events |
GADGET_DECORATION |
Gadget is a decoration |
WoopsiUI::Gadget::Gadget | ( | s16 | x, |
s16 | y, | ||
u16 | width, | ||
u16 | height, | ||
u32 | flags, | ||
GadgetStyle * | style = NULL |
||
) |
Constructor.
x | The x co-ordinate of the gadget. |
y | The y co-ordinate of the gadget. |
width | The width of the gadget. |
height | The height of the gadget. |
flags | Bitmask specifying some set-up values for the gadget. |
style | The style that the gadget should use. If this is not specified, the gadget will use the values stored in the global defaultGadgetStyle object. The gadget will copy the properties of the style into its own internal style object. data. If no object is specified the gadget will use the default style. |
virtual WoopsiUI::Gadget::~Gadget | ( | ) | [protected, virtual] |
Destructor.
WoopsiUI::Gadget::Gadget | ( | const Gadget & | gadget | ) | [inline, protected] |
Copy constructor is protected to prevent usage.
void WoopsiUI::Gadget::addContextMenuItem | ( | const WoopsiString & | name, |
u32 | value | ||
) |
Add a context menu item definition to the gadget.
name | The name of the menu item. |
value | The value of the menu item. |
void WoopsiUI::Gadget::addGadget | ( | Gadget * | gadget | ) |
Adds a gadget to this gadget's child stack. The gadget is added to the top of the stack. Note that the gadget can only be added if it is not already a child of another gadget.
If the gadget is a decoration, the gadget will be inserted to the bottom of the stack instead of the top. Decorations are always at the bottom of the gadget stack. This is automatic and cannot be overridden.
Once a gadget has been added to another, it becomes the responsibility of Woopsi to delete it once it it no longer needed. Attempts to manually call "delete" on child gadgets will result in crashes due to dereferencing deleted objects.
gadget | A pointer to the gadget to add to the child list. |
void WoopsiUI::Gadget::addGadgetEventHandler | ( | GadgetEventHandler * | eventHandler | ) | [inline] |
Adds a gadget event handler. The event handler will receive all events raised by this gadget.
eventHandler | A pointer to the event handler. |
bool WoopsiUI::Gadget::blur | ( | ) |
void WoopsiUI::Gadget::cacheVisibleRects | ( | ) | const |
Rebuild the list of this gadget's visible regions. If the cache is already up to date this function will just exit.
const u8 WoopsiUI::Gadget::calculatePhysicalScreenNumber | ( | s16 | y | ) | const [protected] |
Get the current physical display number for the supplied y co-ordinate. Should be used in conjunction with calculatePhysicalScreenY() to convert to a y co-ordinate that can be displayed.
y | The y co-ordinate to check. |
const s16 WoopsiUI::Gadget::calculatePhysicalScreenY | ( | s16 | y | ) | const [protected] |
Get the current physical display co-ordinate for the supplied y co-ordinate. Woopsi treats the two displays as two viewports on the same logical space. The lower half of the range of y co-ordinates is displayed on the bottom screen, whilst the upper half of the range of y co-ordinates is displayed on the top screen. This function converts back into a value that can be displayed on one of the screens. Should be used in conjunction with calculatePhysicalScreenNumber() to work out which screen to draw on.
y | The y co-ordinate to check. |
const bool WoopsiUI::Gadget::canReceiveFocus | ( | ) | const |
Check if the gadget can receive focus or not.
bool WoopsiUI::Gadget::changeDimensions | ( | s16 | x, |
s16 | y, | ||
u16 | width, | ||
u16 | height | ||
) |
Resize and move the gadget in one operation.
x | The new x co-ordinate. |
y | The new y co-ordinate. |
width | The new width. |
height | The new height. |
bool WoopsiUI::Gadget::checkCollision | ( | s16 | x, |
s16 | y, | ||
u16 | width, | ||
u16 | height | ||
) | const |
Checks if the supplied rectangle definition collides with this gadget. Co-ordinates must be in Woopsi-space.
x | The x co-ordinate of the rectangle to check. |
y | The y co-ordinate of the rectangle to check. |
width | The width of the rectangle to check. |
height | The height of the rectangle to check. |
bool WoopsiUI::Gadget::checkCollision | ( | s16 | x, |
s16 | y | ||
) | const |
Checks if the supplied co-ordinates collide with this gadget. Co-ordinates must be in Woopsi-space.
x | The x co-ordinate to check. |
y | The y co-ordinate to check. |
bool WoopsiUI::Gadget::checkCollision | ( | const Rect & | rect | ) | const |
Checks if the supplied rect collides with this gadget. Co-ordinates must be in Woopsi-space.
rect | A rect to check for collisions with. |
bool WoopsiUI::Gadget::checkCollision | ( | Gadget * | gadget | ) | const |
Checks if the supplied gadget collides with this gadget.
gadget | A pointer to another gadget to check for collisions with. |
bool WoopsiUI::Gadget::checkCollisionWithForegroundRects | ( | s16 | x, |
s16 | y | ||
) | const [protected] |
Checks if the supplied co-ordinates collide with a portion of this gadget that is not obscured by its siblings or ancestors, but that may be obscured by its children. Co-ordinates should be in Woopsi-space.
x | X co-ordinate of the click. |
y | Y co-ordinate of the click. |
bool WoopsiUI::Gadget::click | ( | s16 | x, |
s16 | y | ||
) |
Click this gadget at the supplied co-ordinates.
x | X co-ordinate of the click. |
y | Y co-ordinate of the click. |
void WoopsiUI::Gadget::clipRectToHierarchy | ( | Rect & | rect | ) | const |
Clips a rectangular region to the dimensions of this gadget and its ancestors.
rect | The region that needs to be clipped. |
void WoopsiUI::Gadget::close | ( | ) |
Erases the gadget, marks it as deleted, and moves it to Woopsi's deletion queue. Gadgets are automatically deleted by the framework and should not be deleted externally.
void WoopsiUI::Gadget::closeChild | ( | Gadget * | gadget | ) | [protected] |
Erase and remove the supplied child gadget from this gadget and send it to the deletion queue.
gadget | The gadget to close. |
void WoopsiUI::Gadget::destroy | ( | ) | [inline] |
Delete this gadget. This should never be called in user code; gadget deletion is handled by Woopsi.
bool WoopsiUI::Gadget::disable | ( | ) |
bool WoopsiUI::Gadget::doubleClick | ( | s16 | x, |
s16 | y | ||
) |
Double-click this gadget at the supplied co-ordinates.
x | X co-ordinate of the click. |
y | Y co-ordinate of the click. |
bool WoopsiUI::Gadget::drag | ( | s16 | x, |
s16 | y, | ||
s16 | vX, | ||
s16 | vY | ||
) |
Drag the gadget to the supplied co-ordinates.
x | The x co-ordinate of the stylus. |
y | The y co-ordinate of the stylus. |
vX | The horizontal distance that the stylus was dragged. |
vY | The vertical distance that the stylus was dragged. |
virtual void WoopsiUI::Gadget::drawBorder | ( | GraphicsPort * | port | ) | [inline, protected, virtual] |
Draw the area of this gadget that falls within the clipping region.
port | The GraphicsPort to draw to. |
Reimplemented in WoopsiUI::AmigaScreen, WoopsiUI::AmigaWindow, WoopsiUI::AnimButton, WoopsiUI::BitmapButton, WoopsiUI::Calendar, WoopsiUI::Label, WoopsiUI::ListBox, WoopsiUI::MultiLineTextBox, WoopsiUI::ProgressBar, WoopsiUI::Screen, WoopsiUI::ScrollingPanel, WoopsiUI::SliderHorizontal, WoopsiUI::SliderHorizontalGrip, WoopsiUI::SliderVertical, WoopsiUI::SliderVerticalGrip, WoopsiUI::SuperBitmap, WoopsiUI::TextBox, WoopsiUI::Window, and WoopsiUI::WoopsiKeyboard.
virtual void WoopsiUI::Gadget::drawContents | ( | GraphicsPort * | port | ) | [inline, protected, virtual] |
Draw the area of this gadget that falls within the clipping region.
port | The GraphicsPort to draw to. |
Reimplemented in WoopsiUI::AnimButton, WoopsiUI::BitmapButton, WoopsiUI::Calendar, WoopsiUI::FileListBox, WoopsiUI::Gradient, WoopsiUI::Label, WoopsiUI::ListBox, WoopsiUI::MultiLineTextBox, WoopsiUI::ProgressBar, WoopsiUI::RadioButtonGroup, WoopsiUI::ScrollingListBox, WoopsiUI::ScrollingPanel, WoopsiUI::ScrollingTextBox, WoopsiUI::SliderHorizontal, WoopsiUI::SliderHorizontalGrip, WoopsiUI::SliderVertical, WoopsiUI::SliderVerticalGrip, WoopsiUI::SuperBitmap, and WoopsiUI::TextBox.
bool WoopsiUI::Gadget::enable | ( | ) |
bool WoopsiUI::Gadget::focus | ( | ) |
const u16 WoopsiUI::Gadget::getBackColour | ( | ) | const [inline] |
Gets the colour used as the background fill.
Gadget* WoopsiUI::Gadget::getChild | ( | u32 | index | ) | const |
Get the child gadget at the specified index.
index | Index of the child to retrieve. |
const s32 WoopsiUI::Gadget::getChildCount | ( | ) | const [inline] |
Get the quantity of child gadgets, including decoration gadgets. The quantity of child gadgets not including decorations can be found by calling getChildCount() - getDecorationCount().
void WoopsiUI::Gadget::getClientRect | ( | Rect & | rect | ) | const |
Insert the properties of the space within this gadget that is available for children into the rect passed in as a parameter. All co-ordinates are relative to this gadget.
rect | Reference to a rect to populate with data. |
const CloseType WoopsiUI::Gadget::getCloseType | ( | ) | const [inline] |
Get the type of close routine that should be called by other gadgets interacting with this gadget.
const u16 WoopsiUI::Gadget::getDarkColour | ( | ) | const [inline] |
Gets the colour used as the fill in scrollbar gutters.
const s32 WoopsiUI::Gadget::getDecorationCount | ( | ) | const [inline] |
Get the quantity of decoration gadgets.
const u16 WoopsiUI::Gadget::getFillColour | ( | ) | const [inline] |
Gets the colour used as the fill in unfocused window borders.
Gadget* WoopsiUI::Gadget::getFocusedGadget | ( | ) | [inline] |
Get a pointer to this gadget's focused child.
FontBase* WoopsiUI::Gadget::getFont | ( | ) | const |
Gets a pointer to the gadget's font.
WoopsiArray<Rect>* WoopsiUI::Gadget::getForegroundRegions | ( | ) |
Gets a pointer to the vector of all of the visible regions of this gadget, including any covered by children.
const s32 WoopsiUI::Gadget::getGadgetIndex | ( | const Gadget * | gadget | ) | const |
Get the index of the specified child gadget.
gadget | The gadget to get the index of. |
FontBase* WoopsiUI::Gadget::getGlyphFont | ( | ) | const |
Gets a pointer to the gadget's glyph font.
u16 WoopsiUI::Gadget::getHeight | ( | ) | const [inline] |
Get the height of the gadget.
const s32 WoopsiUI::Gadget::getHigherVisibleGadget | ( | const s32 | startIndex | ) | const [protected] |
Get the index of the next visible gadget higher up the z-order.
startIndex | The starting index. |
const u16 WoopsiUI::Gadget::getHighlightColour | ( | ) | const [inline] |
Gets the colour used as the fill in focused window borders.
const s32 WoopsiUI::Gadget::getLowerVisibleGadget | ( | const s32 | startIndex | ) | const [protected] |
Get the index of the next visible gadget lower down the z-order.
startIndex | The starting index. |
Gadget* WoopsiUI::Gadget::getParent | ( | ) | const [inline] |
Get a pointer to this gadget's parent.
virtual const u8 WoopsiUI::Gadget::getPhysicalScreenNumber | ( | ) | const [virtual] |
Get the number of the screen that this gadget is currently displayed on.
Reimplemented in WoopsiUI::Screen.
virtual void WoopsiUI::Gadget::getPreferredDimensions | ( | Rect & | rect | ) | const [virtual] |
Insert the dimensions that this gadget wants to have into the rect passed in as a parameter. All co-ordinates are relative to the gadget's parent.
rect | Reference to a rect to populate with data. |
Reimplemented in WoopsiUI::AnimButton, WoopsiUI::BitmapButton, WoopsiUI::Calendar, WoopsiUI::ContextMenu, WoopsiUI::Label, WoopsiUI::ListBox, WoopsiUI::RadioButtonGroup, WoopsiUI::ScrollingListBox, and WoopsiUI::TextBox.
RectCache* WoopsiUI::Gadget::getRectCache | ( | ) | const [inline] |
Get a pointer to the cache of visible rects.
void WoopsiUI::Gadget::getRectClippedToHierarchy | ( | Rect & | rect | ) | const |
Clips the supplied rect to the boundaries defined by this gadget and this gadget's parents. Co-ordinates are in Woopsi-space.
rect | Reference to a rect to populate with data. |
const u32 WoopsiUI::Gadget::getRefcon | ( | ) | const [inline] |
Get the reference constant for this gadget.
const s16 WoopsiUI::Gadget::getRelativeX | ( | ) | const |
Get the x co-ordinate of the gadget relative to its parent.
const s16 WoopsiUI::Gadget::getRelativeY | ( | ) | const |
Get the y co-ordinate of the gadget relative to its parent.
const u16 WoopsiUI::Gadget::getShadowColour | ( | ) | const [inline] |
Gets the colour used as the dark edge in bevelled boxes.
const u16 WoopsiUI::Gadget::getShineColour | ( | ) | const [inline] |
Gets the colour used as the light edge in bevelled boxes.
u16 WoopsiUI::Gadget::getWidth | ( | ) | const [inline] |
Get the width of the gadget.
const s16 WoopsiUI::Gadget::getX | ( | ) | const |
Get the x co-ordinate of the gadget in "Woopsi space".
const s16 WoopsiUI::Gadget::getY | ( | ) | const |
Get the y co-ordinate of the gadget in "Woopsi space".
void WoopsiUI::Gadget::goModal | ( | ) |
Run the gadget modally. All other gadgets will become non-responsive and only this gadget will be interactive. Useful for requesters that must be dealt with before the application can continue.
Reimplemented in WoopsiUI::Woopsi.
virtual bool WoopsiUI::Gadget::handleContextMenuSelection | ( | const ListDataItem * | item | ) | [virtual] |
Raises the context menu selection event to the gadget's event handlers.
item | The selected menu item. |
const bool WoopsiUI::Gadget::hasFocus | ( | ) | const [inline] |
Is the gadget active? A value of true indicates that this gadget has focus or is an ancestor of the gadget with focus.
bool WoopsiUI::Gadget::hide | ( | ) |
Erases the gadget and makes it invisible. Does not re-assign focus to another gadget.
void WoopsiUI::Gadget::insertGadget | ( | Gadget * | gadget | ) |
Inserts a gadget into this gadget's child stack at the bottom of the stack. Note that the gadget can only be added if it is not already a child of another gadget.
Once a gadget has been added to another, it becomes the responsibility of Woopsi to delete it once it it no longer needed. Attempts to manually call "delete" on child gadgets will result in crashes due to dereferencing deleted objects.
gadget | A pointer to the gadget to add to the child list. |
void WoopsiUI::Gadget::invalidateLowerGadgetsVisibleRectCache | ( | Gadget * | gadget | ) |
Invalidate the visible region cache for all gadgets below the supplied gadget in this gadget's child stack. This will cause those gadgets to recalculate their visible regions next time they try to draw themselves. This should be called when the gadget passed as a pointer has swapped positions with another gadget in the gadget array (ie. it has moved towards the front of the screen or towards the back).
gadget | A pointer to a child gadget. |
void WoopsiUI::Gadget::invalidateVisibleRectCache | ( | ) |
Mark this gadget's visible region cache as invalid, and do the same to its child gadgets.
const bool WoopsiUI::Gadget::isBeingDragged | ( | ) | const [inline] |
Is the gadget being dragged?
const bool WoopsiUI::Gadget::isBorderless | ( | ) | const [inline] |
Does the gadget have a border?
const bool WoopsiUI::Gadget::isClicked | ( | ) | const [inline] |
Is the gadget clicked?
const bool WoopsiUI::Gadget::isDecoration | ( | ) | const [inline] |
Is the gadget a decoration? Decoration gadgets are children of, but also an essential component of, another gadget. They are always at the start of the child gadget array, so will always be at the bottom of the gadget stack. They can be thought of as background gadgets.
const bool WoopsiUI::Gadget::isDeleted | ( | ) | const |
Has the gadget been marked for deletion? This function recurses up the gadget hierarchy and only returns true if all of the gadgets in the ancestor chain are not deleted. Gadgets marked for deletion are automatically deleted and should not be interacted with.
virtual bool WoopsiUI::Gadget::isDoubleClick | ( | s16 | x, |
s16 | y | ||
) | [virtual] |
Check if the click is a double-click.
x | X co-ordinate of the click. |
y | Y co-ordinate of the click. |
Reimplemented in WoopsiUI::ListBox.
const bool WoopsiUI::Gadget::isDoubleClickable | ( | ) | const [inline] |
Is the gadget double-clickable? If this is false, double-clicks will be detected and processed as single-clicks.
const bool WoopsiUI::Gadget::isDrawingEnabled | ( | ) | const |
Is the gadget allowed to draw? This function recurses up the gadget hierarchy and only returns true if all of the gadgets in the ancestor chain are visible.
const bool WoopsiUI::Gadget::isEnabled | ( | ) | const |
Is the gadget enabled? This function recurses up the gadget hierarchy and only returns true if all of the gadgets in the ancestor chain are enabled.
const bool WoopsiUI::Gadget::isHidden | ( | ) | const |
Is the gadget hidden? This function recurses up the gadget hierarchy and returns true if any of the gadgets in the ancestor chain are hidden.
const bool WoopsiUI::Gadget::isModal | ( | ) | const |
Is the gadget modal? Only true if the Woopsi singleton is also modal.
const bool WoopsiUI::Gadget::isPermeable | ( | ) | const [inline] |
Are the gadget's edges permeable or solid? Permeable gadgets do not enforce their dimensions on the co-ordinates and dimensions of child gadgets. For example, windows belonging to non-permeable screens cannot be dragged outside the screen. Windows belonging to permeable screens *can* be dragged outside their parent screen.
const bool WoopsiUI::Gadget::isShelved | ( | ) | const [inline] |
Is the gadget shelved?
bool WoopsiUI::Gadget::keyPress | ( | KeyCode | keyCode | ) |
Send a keypress to the gadget.
keyCode | The keycode to send to the gadget. |
bool WoopsiUI::Gadget::keyRelease | ( | KeyCode | keyCode | ) |
Send a key release to the gadget.
keyCode | The keycode to send to the gadget. |
bool WoopsiUI::Gadget::keyRepeat | ( | KeyCode | keyCode | ) |
Send a key repeat to the gadget.
keyCode | The keycode to send to the gadget. |
void WoopsiUI::Gadget::lidClose | ( | ) |
Inform the gadget that the lid has closed.
void WoopsiUI::Gadget::lidOpen | ( | ) |
Inform the gadget that the lid has opened.
bool WoopsiUI::Gadget::lowerGadgetToBottom | ( | Gadget * | gadget | ) |
Lowers the supplied gadget to the bottom of this gadget's child stack. The supplied gadget pointer must be a child of this gadget.
gadget | A pointer to the child gadget to lower. |
bool WoopsiUI::Gadget::lowerToBottom | ( | ) |
Lowers the gadget to the bottom of its parent's gadget stack.
void WoopsiUI::Gadget::markRectDamaged | ( | const Rect & | rect | ) |
Marks a particular rect for drawing. Can be called instead of markRectsDamaged() if only a portion of a gadget has changed. The rect is automatically clipped to the visible portions of the gadget. Its co-ordinates should be in gadget co-ordinates (ie. relative to the top-left corner of the gadget, which is (0,0)). It will automatically be converted to Woopsi co-ordinates.
rect | Rect to queue for redraw. |
void WoopsiUI::Gadget::markRectsDamaged | ( | ) |
Marks all visible portions of the gadget for redrawing. Should be called when a gadget's appearance has changed.
void WoopsiUI::Gadget::moveChildToDeleteQueue | ( | Gadget * | gadget | ) |
Moves the supplied child gadget to the deletion queue. For framework use only.
gadget | A pointer to the child gadget. |
bool WoopsiUI::Gadget::moveChildToShelvedList | ( | Gadget * | gadget | ) |
Moves the supplied child gadget to the shelved gadget list. For framework use only.
gadget | A pointer to the child gadget. |
bool WoopsiUI::Gadget::moveShelvedToChildList | ( | Gadget * | gadget | ) |
Moves the supplied child gadget from the shelved list back to the child gadget list. For framework use only.
gadget | A pointer to the shelved gadget. |
bool WoopsiUI::Gadget::moveTo | ( | s16 | x, |
s16 | y | ||
) |
Move the gadget to the new co-ordinates. Co-ordinates are relative to the parent gadget.
x | The new x co-ordinate. |
y | The new y co-ordinate. |
GraphicsPort* WoopsiUI::Gadget::newGraphicsPort | ( | bool | isForeground | ) |
Gets a pointer to a new instance of the GraphicsPort class to allow drawing within this gadget's client space. The GraphicsPort object must be deleted when it is no longer required.
isForeground | True to use the foreground clipping list (draw over all space, including that overlapped by children) or background clipping list (not including that overlapped by children). |
GraphicsPort* WoopsiUI::Gadget::newGraphicsPort | ( | Rect | clipRect | ) |
Gets a pointer to a new instance of the GraphicsPort class to allow drawing within this gadget's client space. The GraphicsPort can only draw within the supplied region.
The GraphicsPort object must be deleted when it is no longer required. Drawing is clipped only to the supplied rect. If the rect is not within the visible regions of this gadget graphical anomalies will occur. This should only be called by the Woopsi hierarchy.
clipRect | The region to clip to. Co-ordinates are in Woopsi- space. |
GraphicsPort* WoopsiUI::Gadget::newInternalGraphicsPort | ( | Rect | clipRect | ) | [protected] |
Get a graphics port that can draw within the region of the supplied clipping rect. The port must be deleted when it is no longer required.
Note that the clipping rect should be clipped to the gadget's visible region before creating the graphics port. The rect should be in Woopsi-space co-ordinates.
virtual void WoopsiUI::Gadget::onBlur | ( | ) | [inline, protected, virtual] |
Called when the gadget loses focus. Override this when creating new gadgets if the gadget should exhibit additional behaviour when losing focus.
Reimplemented in WoopsiUI::AmigaWindow, and WoopsiUI::TextBox.
virtual void WoopsiUI::Gadget::onClick | ( | s16 | x, |
s16 | y | ||
) | [inline, protected, virtual] |
Called when the gadget is clicked. Override this when creating new gadgets if the gadget should exhibit additional behaviour when it is clicked.
x | The x co-ordinate of the click. |
y | The y co-ordinate of the click. |
Reimplemented in WoopsiUI::AmigaScreen, WoopsiUI::AmigaWindow, WoopsiUI::AnimButton, WoopsiUI::BitmapButton, WoopsiUI::ListBox, WoopsiUI::MultiLineTextBox, WoopsiUI::ScrollingPanel, WoopsiUI::SliderHorizontal, WoopsiUI::SliderHorizontalGrip, WoopsiUI::SliderVertical, WoopsiUI::SliderVerticalGrip, WoopsiUI::SuperBitmap, and WoopsiUI::TextBox.
virtual void WoopsiUI::Gadget::onDisable | ( | ) | [inline, protected, virtual] |
Called when the gadget is disabled. Override this when creating new gadgets if the gadget should exhibit additional behaviour when disabled.
Reimplemented in WoopsiUI::AnimButton.
virtual void WoopsiUI::Gadget::onDoubleClick | ( | s16 | x, |
s16 | y | ||
) | [inline, protected, virtual] |
Called when the gadget is double-clicked. Override this when creating new gadgets if the gadget should exhibit additional behaviour when it is double-clicked. To change the conditions that apply in detecting a double-click, override the isDoubleClicked() method.
x | The x co-ordinate of the click. |
y | The y co-ordinate of the click. |
Reimplemented in WoopsiUI::ListBox, WoopsiUI::MultiLineTextBox, and WoopsiUI::TextBox.
virtual void WoopsiUI::Gadget::onDrag | ( | s16 | x, |
s16 | y, | ||
s16 | vX, | ||
s16 | vY | ||
) | [inline, protected, virtual] |
Called when the gadget is dragged. Override this when creating new gadgets if the gadget should exhibit additional behaviour when it is dragged.
x | The x co-ordinate of the stylus. |
y | The y co-ordinate of the stylus. |
vX | X distance dragged. |
vY | Y distance dragged. |
Reimplemented in WoopsiUI::Screen, WoopsiUI::ScrollingPanel, WoopsiUI::SliderHorizontalGrip, WoopsiUI::SliderVerticalGrip, WoopsiUI::SuperBitmap, and WoopsiUI::Window.
virtual void WoopsiUI::Gadget::onDragStart | ( | ) | [inline, protected, virtual] |
Called when the gadget starts being dragged. Override this when creating new gadgets if the gadget should exhibit additional behaviour when dragging starts.
Reimplemented in WoopsiUI::Window.
virtual void WoopsiUI::Gadget::onDragStop | ( | ) | [inline, protected, virtual] |
Called when the gadget stops being dragged. Override this when creating new gadgets if the gadget should exhibit additional behaviour when dragging stops.
Reimplemented in WoopsiUI::Window.
virtual void WoopsiUI::Gadget::onEnable | ( | ) | [inline, protected, virtual] |
Called when the gadget is enabled. Override this when creating new gadgets if the gadget should exhibit additional behaviour when enabled.
Reimplemented in WoopsiUI::AnimButton.
virtual void WoopsiUI::Gadget::onFocus | ( | ) | [inline, protected, virtual] |
Called when the gadget gains focus. Override this when creating new gadgets if the gadget should exhibit additional behaviour when gaining focus.
Reimplemented in WoopsiUI::AmigaWindow, and WoopsiUI::Screen.
virtual void WoopsiUI::Gadget::onKeyPress | ( | KeyCode | keyCode | ) | [inline, protected, virtual] |
Called when the a key (d-pad or physical button) is pressed. Override this when creating new gadgets if the gadget should exhibit additional behaviour when a key is pressed.
keyCode | The key that was pressed. |
Reimplemented in WoopsiUI::MultiLineTextBox, and WoopsiUI::TextBox.
virtual void WoopsiUI::Gadget::onKeyRelease | ( | KeyCode | keyCode | ) | [inline, protected, virtual] |
Called when a key (d-pad or physical button) is released. Override this when creating new gadgets if the gadget should exhibit additional behaviour when a key is released.
keyCode | The key that was released. |
virtual void WoopsiUI::Gadget::onKeyRepeat | ( | KeyCode | keyCode | ) | [inline, protected, virtual] |
Called when a key (d-pad or physical button) is pressed and repeats. Override this when creating new gadgets if the gadget should exhibit additional behaviour when a key repeats.
keyCode | The key that repeated. |
Reimplemented in WoopsiUI::MultiLineTextBox, and WoopsiUI::TextBox.
virtual void WoopsiUI::Gadget::onLidClose | ( | ) | [inline, protected, virtual] |
Called when the lid is closed. Override this when creating new gadgets if the gadget should exhibit additional behaviour when the lid is closed.
virtual void WoopsiUI::Gadget::onLidOpen | ( | ) | [inline, protected, virtual] |
Called when the lid is opened. Override this when creating new gadgets if the gadget should exhibit additional behaviour when the lid is opened.
virtual void WoopsiUI::Gadget::onRelease | ( | s16 | x, |
s16 | y | ||
) | [inline, protected, virtual] |
Called when the gadget is released. Override this when creating new gadgets if the gadget should exhibit additional behaviour when it is released.
x | The x co-ordinate of the stylus when released. |
y | The y co-ordinate of the stylus when released. |
Reimplemented in WoopsiUI::AnimButton, WoopsiUI::BitmapButton, WoopsiUI::SliderHorizontalGrip, and WoopsiUI::SliderVerticalGrip.
virtual void WoopsiUI::Gadget::onReleaseOutside | ( | s16 | x, |
s16 | y | ||
) | [inline, protected, virtual] |
Called when the gadget is released outside of its boundaries. Override this when creating new gadgets if the gadget should exhibit additional behaviour when it is released outside of its boundaries.
x | The x co-ordinate of the stylus when released. |
y | The y co-ordinate of the stylus when released. |
Reimplemented in WoopsiUI::AnimButton, WoopsiUI::BitmapButton, WoopsiUI::SliderHorizontalGrip, and WoopsiUI::SliderVerticalGrip.
virtual void WoopsiUI::Gadget::onResize | ( | u16 | width, |
u16 | height | ||
) | [inline, protected, virtual] |
Called when the gadget is resized. Override this when creating new gadgets if the gadget should exhibit additional behaviour when resized.
width | The new width. |
height | The new height. |
Reimplemented in WoopsiUI::Alert, WoopsiUI::AmigaWindow, WoopsiUI::Calendar, WoopsiUI::ColourPicker, WoopsiUI::FileListBox, WoopsiUI::FileRequester, WoopsiUI::Gradient, WoopsiUI::Label, WoopsiUI::MultiLineTextBox, WoopsiUI::Requester, WoopsiUI::ScrollbarHorizontal, WoopsiUI::ScrollbarVertical, WoopsiUI::ScrollingListBox, WoopsiUI::ScrollingTextBox, WoopsiUI::SliderHorizontal, and WoopsiUI::SliderVertical.
virtual void WoopsiUI::Gadget::onShiftClick | ( | s16 | x, |
s16 | y | ||
) | [inline, protected, virtual] |
Called when the gadget is shift-clicked. Override this when creating new gadgets if the gadget should exhibit additional behaviour when it is shift-clicked.
x | The x co-ordinate of the click. |
y | The y co-ordinate of the click. |
bool WoopsiUI::Gadget::raiseGadgetToTop | ( | Gadget * | child | ) |
Raises the supplied gadget to the top of this gadget's child stack. The supplied gadget pointer must be a child of this gadget.
child | A pointer to the child gadget to raise. |
const bool WoopsiUI::Gadget::raisesEvents | ( | ) | const [inline] |
Check if this gadget raises events or not.
bool WoopsiUI::Gadget::raiseToTop | ( | ) |
Raises the gadget to the top of its parent's gadget stack.
void WoopsiUI::Gadget::redraw | ( | const Rect & | rect | ) |
Redraws the region of the gadget represented by rect. Rect should be supplied in Woopsi-space co-ordinates and should be pre-clipped to the visible regions of the gadget. This function should only ever be called by the DisplayController.
rect | The rect to draw. |
bool WoopsiUI::Gadget::release | ( | s16 | x, |
s16 | y | ||
) |
Release this gadget at the supplied co-ordinates.
x | X co-ordinate of the release. |
y | Y co-ordinate of the release. |
bool WoopsiUI::Gadget::remove | ( | ) |
Remove this gadget from Woopsi's gadget hierarchy. Returns responsibility for deleting the gadget back to the developer. Does not unregister the gadget from the VBL system.
bool WoopsiUI::Gadget::removeChild | ( | Gadget * | gadget | ) |
Remove a child gadget from Woopsi's gadget hierarchy. Returns responsibility for deleting the gadget back to the developer. Does not unregister the gadget from the VBL system.
gadget | Pointer to the gadget to remove from the hierarchy. |
void WoopsiUI::Gadget::removeGadgetEventHandler | ( | GadgetEventHandler * | eventHandler | ) | [inline] |
Remove a gadget event handler.
eventHandler | A pointer to the event handler to remove. |
bool WoopsiUI::Gadget::resize | ( | u16 | width, |
u16 | height | ||
) |
Resize the gadget to the new dimensions.
width | The new width. |
height | The new height. |
void WoopsiUI::Gadget::setBackColour | ( | const u16 | colour | ) | [inline] |
Sets the background colour.
colour | The new background colour. |
void WoopsiUI::Gadget::setBorderless | ( | bool | isBorderless | ) |
Sets this gadget's border state.
isBorderless | The border state. |
Reimplemented in WoopsiUI::AmigaScreen, and WoopsiUI::AmigaWindow.
void WoopsiUI::Gadget::setBorderSize | ( | const GadgetBorderSize & | borderSize | ) |
Sets the border size. The border cannot be drawn over in the drawContents() method.
borderSize | The new border size. |
void WoopsiUI::Gadget::setCloseType | ( | const CloseType | closeType | ) | [inline] |
Sets the close type other gadgets should use when closing this gadget.
closeType | The close type to use. |
void WoopsiUI::Gadget::setDarkColour | ( | const u16 | colour | ) | [inline] |
Sets the dark colour.
colour | The new dark colour. |
void WoopsiUI::Gadget::setDoubleClickable | ( | const bool | isDoubleClickable | ) | [inline] |
Sets whether or not the gadgets processes double-clicks.
isDoubleClickable | The double-clickable state. |
void WoopsiUI::Gadget::setDraggable | ( | const bool | isDraggable | ) | [inline] |
Sets whether or not this gadget can be dragged.
isDraggable | The draggable state. |
void WoopsiUI::Gadget::setFillColour | ( | const u16 | colour | ) | [inline] |
Sets the fill colour.
colour | The new fill colour. |
void WoopsiUI::Gadget::setFocusedGadget | ( | Gadget * | gadget | ) |
Sets the supplied gadget as the focused child. The gadget must be a child of this gadget.
gadget | A pointer to the child gadget. |
virtual void WoopsiUI::Gadget::setFont | ( | FontBase * | font | ) | [virtual] |
Sets the font.
font | A pointer to the font to use. |
Reimplemented in WoopsiUI::Label, WoopsiUI::MultiLineTextBox, WoopsiUI::ScrollingListBox, and WoopsiUI::ScrollingTextBox.
virtual void WoopsiUI::Gadget::setGlyphFont | ( | FontBase * | font | ) | [virtual] |
Sets the glyph font.
font | A pointer to the font to use. |
void WoopsiUI::Gadget::setHighlightColour | ( | const u16 | colour | ) | [inline] |
Sets the highlight colour.
colour | The new highlight colour. |
void WoopsiUI::Gadget::setParent | ( | Gadget * | parent | ) | [inline] |
Set the gadget's parent to the gadget passed in as a parameter. Called automatically when a gadget is added as a child. It shouldn't be called in user code.
parent | A pointer to the parent gadget. |
void WoopsiUI::Gadget::setPermeable | ( | const bool | isPermeable | ) | [inline] |
Sets whether or not child gadgets can exceed this gadget's dimensions.
isPermeable | The permeable state. |
void WoopsiUI::Gadget::setRaisesEvents | ( | const bool | raisesEvents | ) | [inline] |
Enables or disables event firing for this gadget.
raisesEvents | True to enable events, false to disable. |
u32 WoopsiUI::Gadget::setRefcon | ( | u32 | refcon | ) |
Sets this gadget's reference constant. This should be unique, at least amongst this gadget's siblings.
refcon | The reference constant. |
void WoopsiUI::Gadget::setShadowColour | ( | const u16 | colour | ) | [inline] |
Sets the shadow colour.
colour | The new shadow colour. |
void WoopsiUI::Gadget::setShineColour | ( | const u16 | colour | ) | [inline] |
Sets the shine colour.
colour | The new shine colour. |
bool WoopsiUI::Gadget::shelve | ( | ) |
Erases the gadget, removes it from the main hierarchy and sets it to invisible. Gadgets hidden in this way will be partioned off from other gadgets and will no longer be processed.
void WoopsiUI::Gadget::shelveChild | ( | Gadget * | gadget | ) | [protected] |
Erase the supplied child gadget and move it out of the main child list into the shelved list. The gadget remains in memory and can be restored by calling "unshelve()" on the gadget.
gadget | The gadget to hide. |
bool WoopsiUI::Gadget::shiftClick | ( | s16 | x, |
s16 | y | ||
) |
Shift-click this gadget at the supplied co-ordinates.
x | X co-ordinate of the click. |
y | Y co-ordinate of the click. |
bool WoopsiUI::Gadget::show | ( | ) |
Draws the gadget and makes it visible. Does not steal focus from other gadgets.
void WoopsiUI::Gadget::showContextMenu | ( | s16 | x, |
s16 | y | ||
) |
Show the context menu for this gadget at the specified co-ordinates.
x | The x co-ordinate of the context menu, relative to the topmost screen on the bottom display. |
y | The y co-ordinate of the context menu, relative to the topmost screen on the bottom display. |
void WoopsiUI::Gadget::startDragging | ( | s16 | x, |
s16 | y | ||
) | [protected] |
Notify this gadget that it is being dragged, and set its drag point.
x | The x co-ordinate of the drag position relative to this gadget. |
y | The y co-ordinate of the drag position relative to this gadget. |
void WoopsiUI::Gadget::stopDragging | ( | s16 | x, |
s16 | y | ||
) | [protected] |
Notify this gadget that it is no longer being dragged.
x | The x co-ordinate at which dragging stopped. |
y | The y co-ordinate at which dragging stopped. |
void WoopsiUI::Gadget::stopModal | ( | ) | [inline] |
Stop the gadget running modally.
bool WoopsiUI::Gadget::swapDepth | ( | ) |
Swap the depth of this gadget. Calls the parent gadget's swapGadgetDepth() method to perform the swap, so the behaviour of this method is dictated by the gadget's parent.
virtual bool WoopsiUI::Gadget::swapGadgetDepth | ( | Gadget * | gadget | ) | [virtual] |
Swaps the depth of the supplied child gadget. Raises it up one place unless the gadget is at the top of the stack, in which case it is pushed to the bottom. Typically called by Woopsi to cycle through screens when their depth buttons are pushed.
gadget | A pointer to the child gadget that needs to swap depths. |
Reimplemented in WoopsiUI::Screen, and WoopsiUI::Woopsi.
bool WoopsiUI::Gadget::unshelve | ( | ) |
Moves the gadget back into the hierarchy and marks it for redraw. Gadgets shown in this way will be unpartioned and will be processed again.
GadgetBorderSize WoopsiUI::Gadget::_borderSize [protected] |
Size of the gadget borders.
CloseType WoopsiUI::Gadget::_closeType [protected] |
Type of close method that should be called for the gadget.
WoopsiArray<NameValuePair> WoopsiUI::Gadget::_contextMenuItems [protected] |
List of all context menu name/value pairs.
u8 WoopsiUI::Gadget::_decorationCount [protected] |
Total number of decoration child gadgets.
s16 WoopsiUI::Gadget::_doubleClickBounds [protected] |
Area in which a click is assumed to be a double-click.
Flags WoopsiUI::Gadget::_flags [protected] |
Flags struct.
Gadget* WoopsiUI::Gadget::_focusedGadget [protected] |
Pointer to the child gadget that has focus.
List of event handlers.
WoopsiArray<Gadget*> WoopsiUI::Gadget::_gadgets [protected] |
List of child gadgets.
s16 WoopsiUI::Gadget::_grabPointX [protected] |
Physical space x co-ordinate where dragging began.
s16 WoopsiUI::Gadget::_grabPointY [protected] |
Physical space y co-ordinate where dragging began.
u32 WoopsiUI::Gadget::_lastClickTime [protected] |
VBL count when last clicked.
s16 WoopsiUI::Gadget::_lastClickX [protected] |
X co-ordinate of last click.
s16 WoopsiUI::Gadget::_lastClickY [protected] |
Y co-ordinate of last click.
s16 WoopsiUI::Gadget::_newX [protected] |
Physical x co-ordinate where gadget is being dragged to.
s16 WoopsiUI::Gadget::_newY [protected] |
Physical y co-ordinate where gadget is being dragged to.
Gadget* WoopsiUI::Gadget::_parent [protected] |
Pointer to the gadget's parent.
Rect WoopsiUI::Gadget::_rect [protected] |
Rect describing the gadget.
RectCache* WoopsiUI::Gadget::_rectCache [protected] |
List of the gadget's visible regions.
u32 WoopsiUI::Gadget::_refcon [protected] |
Identifying number of the gadget.
WoopsiArray<Gadget*> WoopsiUI::Gadget::_shelvedGadgets [protected] |
List of shelved child gadgets.
GadgetStyle WoopsiUI::Gadget::_style [protected] |
All style information used by a gadget.