Home2L - C/C++ API v1.4-0-g38cc (2024-05-25)
Smart Tools for a Private Home
|
Canvas widget.
A canvas is a widget with a virtual drawable area, which is not equivalent to the actually visible area. This is the base class for all potentially scrollable widgets such as CListBox or CMenu. Scroll bars are displayed automatically as needed, and wiping finger events are evaluated for scrolling.
Finger events on the right (lower) half are handled for scrolling, events on the other half of the widget are ignored and may be interpreted for other widget functionality (selecting etc.). The right/bottom 1/8 of the canvas contains the scroll bar.
Definition at line 213 of file ui_screen.H.
#include "ui_screen.H"
Public Member Functions | |
Setup ... | |
void | SetDefaults () |
Set default colors and scrollbar appearance. | |
void | SetColors (TColor _backColor=BLACK, TColor _scrollbarColor=ToColor(255, 255, 255, 32)) |
void | SetScrollbarWidth (int width=8) |
void | SetArea (SDL_Rect _area) |
Virtual area and scrolling ... | |
void | SetVirtArea (SDL_Rect r) |
Set the virtual area in screen coordinates; ('virtArea' == 'area' represents no displacement); The areas of all subwidgets are relative to the virtual area. | |
SDL_Rect * | GetVirtArea () |
void | MoveVirtArea (int toX0, int toY0) |
void | LimitVirtArea (SDL_Rect *r=NULL) |
Move virtual area (or 'r') so that the visible area is completely filled. | |
void | ScrollTo (SDL_Rect r, int hAlign=0, int vAlign=-1) |
Scroll such that 'r' is aligned according to '[vh]Align' (-1 = left/up, 0 = center, 1 = right/down). | |
void | ScrollIn (SDL_Rect r) |
Scroll just enough to get 'r' fully visible. | |
Coordinate transformations (screen <-> sub-widget system) ... | |
void | WidgetToScreenCoords (int *x, int *y) |
void | ScreenToWidgetCoords (int *x, int *y) |
Sub-Widget management ... | |
"Add"/"Del" methods do not pass ownership, the caller remains owner. | |
void | AddWidget (CWidget *widget) |
void | DelWidget (CWidget *widget) |
void | DelAllWidgets () |
Helpers ... | |
bool | IsVisible (SDL_Rect *r) |
bool | IsVisible (CWidget *w) |
Callbacks... | |
virtual void | Render (SDL_Renderer *ren) |
Render this widget. More... | |
virtual bool | HandleEvent (SDL_Event *ev) |
Handle wiping/scrolling events, if virtual area is wider (higher) than physical area. | |
Public Member Functions inherited from CWidget | |
void | Set (SDL_Surface *_surf, int x0, int y0) |
void | SetArea (SDL_Rect _area) |
SDL_Rect * | GetArea () |
class CScreen * | GetScreen () |
bool | IsOnScreen (class CScreen *_screen) |
class CCanvas * | GetCanvas () |
void | LocalToScreenCoords (int *x, int *y) |
void | ScreenToLocalCoords (int *x, int *y) |
void | GetMouseEventPos (SDL_Event *ev, int *x, int *y) |
void | SetSurface (SDL_Surface *_surface) |
Set the static surface to display. The caller stays owner of surface, must not delete it as long as it is set here. The surface dimensions must match 'area'. | |
virtual SDL_Surface * | GetSurface () |
Get an up-to-date surface or 'NULL' if none is available. | |
void | GetRenderArea (SDL_Rect *ra) |
Transpose 'area' to the current screen coordinates to be passed to all SDL rendering functions. | |
virtual SDL_Texture * | GetTexture () |
Return an up-to-date texture. More... | |
void | SetTextureBlendMode (SDL_BlendMode _sdlBlendMode) |
Set the blend mode for the texture created by the default implementation of GetTexture(). The default is SDL_BLENDMODE_NONE. | |
void | ClearTexture () |
Clear the internally cached texture object to save memory. | |
Additional Inherited Members | |
Protected Member Functions inherited from CWidget | |
void | ChangedSurface () |
Mark (only) the surface as changed to trigger a redrawing at next occasion. | |
void | Changed () |
Anything may have changed: Trigger a redrawing at next occasion. | |
|
virtual |
Render this widget.
The default implementation uses the 'GetTexture()' method above. By overriding this method it is possible to define widgets with a custom SDL rendering procedure, which may be more efficient than preparing a single texture containing the complete widget.
It is allowed to pass 'ren == NULL', in which case all textures and internal data structures are (re-)calculated, but nothing is actually rendered.
Reimplemented from CWidget.
Reimplemented in CListbox, CMenu, and CInputLine.