Modules | |
Slider widget options | |
These options can be ORed together to specify the behaviour of a slider widget when creating it with wtk_slider_create. | |
Functions | |
struct win_window * | wtk_slider_as_child (struct wtk_slider *slider) |
Get pointer to slider window. More... | |
struct wtk_slider * | wtk_slider_create (struct win_window *parent, struct win_area const *area, uint8_t maximum, uint8_t value, uint8_t option, win_command_t command_data) |
Create a new slider widget. More... | |
win_command_t | wtk_slider_get_command (struct wtk_slider *slider) |
This function returns the window command of the specified slider, as set when the widget was created. More... | |
uint8_t | wtk_slider_get_value (struct wtk_slider const *slider) |
Get slider value. More... | |
bool | wtk_slider_is_moving (struct wtk_slider const *slider) |
Get slider status. More... | |
bool | wtk_slider_set_value (struct wtk_slider *slider, uint8_t value) |
Set new slider value. More... | |
#define | WTK_SLIDER_PARENT_MOVE_SUPPORT false |
Move support for sliders. More... | |
#define | WTK_SLIDER_KNOB_WIDTH 10 |
Width of the slider knob, including borders, in pixels. More... | |
#define | WTK_SLIDER_BORDER_COLOR GFX_COLOR_BLACK |
Color of all the slider's borders. More... | |
#define | WTK_SLIDER_BACKGROUND_COLOR GFX_COLOR_GRAY |
Color of the slider's background. More... | |
#define | WTK_SLIDER_KNOB_COLOR_NORMAL GFX_COLOR_RED |
Color of the slider knob when normal. More... | |
#define | WTK_SLIDER_KNOB_COLOR_MOVING GFX_COLOR_WHITE |
Color of the slider knob when moving. More... | |
#define | WTK_SLIDER_PARENT_MOVE_SUPPORT false |
Move support for sliders. More... | |
#define | WTK_SLIDER_KNOB_WIDTH 10 |
Width of the slider knob, including borders, in pixels. More... | |
#define | WTK_SLIDER_BORDER_COLOR GFX_COLOR_BLACK |
Color of all the slider's borders. More... | |
#define | WTK_SLIDER_BACKGROUND_COLOR GFX_COLOR_GRAY |
Color of the slider's background. More... | |
#define | WTK_SLIDER_KNOB_COLOR_NORMAL GFX_COLOR_RED |
Color of the slider knob when normal. More... | |
#define | WTK_SLIDER_KNOB_COLOR_MOVING GFX_COLOR_WHITE |
Color of the slider knob when moving. More... | |
#define | WTK_SLIDER_PARENT_MOVE_SUPPORT false |
Move support for sliders. More... | |
#define | WTK_SLIDER_KNOB_WIDTH 10 |
Width of the slider knob, including borders, in pixels. More... | |
#define | WTK_SLIDER_BORDER_COLOR GFX_COLOR_BLACK |
Color of all the slider's borders. More... | |
#define | WTK_SLIDER_BACKGROUND_COLOR GFX_COLOR_GRAY |
Color of the slider's background. More... | |
#define | WTK_SLIDER_KNOB_COLOR_NORMAL GFX_COLOR_RED |
Color of the slider knob when normal. More... | |
#define | WTK_SLIDER_KNOB_COLOR_MOVING GFX_COLOR_WHITE |
Color of the slider knob when moving. More... | |
#define | WTK_SLIDER_PARENT_MOVE_SUPPORT false |
Move support for sliders. More... | |
#define | WTK_SLIDER_KNOB_WIDTH 10 |
Width of the slider knob, including borders, in pixels. More... | |
#define | WTK_SLIDER_BORDER_COLOR GFX_COLOR_BLACK |
Color of all the slider's borders. More... | |
#define | WTK_SLIDER_BACKGROUND_COLOR GFX_COLOR_GRAY |
Color of the slider's background. More... | |
#define | WTK_SLIDER_KNOB_COLOR_NORMAL GFX_COLOR_RED |
Color of the slider knob when normal. More... | |
#define | WTK_SLIDER_KNOB_COLOR_MOVING GFX_COLOR_WHITE |
Color of the slider knob when moving. More... | |
#define | WTK_SLIDER_PARENT_MOVE_SUPPORT false |
Move support for sliders. More... | |
#define | WTK_SLIDER_KNOB_WIDTH 10 |
Width of the slider knob, including borders, in pixels. More... | |
#define | WTK_SLIDER_BORDER_COLOR GFX_COLOR_BLACK |
Color of all the slider's borders. More... | |
#define | WTK_SLIDER_BACKGROUND_COLOR GFX_COLOR_GRAY |
Color of the slider's background. More... | |
#define | WTK_SLIDER_KNOB_COLOR_NORMAL GFX_COLOR_RED |
Color of the slider knob when normal. More... | |
#define | WTK_SLIDER_KNOB_COLOR_MOVING GFX_COLOR_WHITE |
Color of the slider knob when moving. More... | |
enum | wtk_slider_state { WTK_SLIDER_NORMAL, WTK_SLIDER_MOVING } |
Valid states for slider, relevant to pointer operations. More... | |
static bool | wtk_slider_handler (struct win_window *win, enum win_event_type type, void const *data) |
Slider event handler. More... | |
#define WTK_SLIDER_BACKGROUND_COLOR GFX_COLOR_GRAY |
Color of the slider's background.
Referenced by wtk_slider_handler().
#define WTK_SLIDER_BACKGROUND_COLOR GFX_COLOR_GRAY |
Color of the slider's background.
#define WTK_SLIDER_BACKGROUND_COLOR GFX_COLOR_GRAY |
Color of the slider's background.
#define WTK_SLIDER_BACKGROUND_COLOR GFX_COLOR_GRAY |
Color of the slider's background.
#define WTK_SLIDER_BACKGROUND_COLOR GFX_COLOR_GRAY |
Color of the slider's background.
#define WTK_SLIDER_BORDER_COLOR GFX_COLOR_BLACK |
Color of all the slider's borders.
Referenced by wtk_slider_handler().
#define WTK_SLIDER_BORDER_COLOR GFX_COLOR_BLACK |
Color of all the slider's borders.
#define WTK_SLIDER_BORDER_COLOR GFX_COLOR_BLACK |
Color of all the slider's borders.
#define WTK_SLIDER_BORDER_COLOR GFX_COLOR_BLACK |
Color of all the slider's borders.
#define WTK_SLIDER_BORDER_COLOR GFX_COLOR_BLACK |
Color of all the slider's borders.
#define WTK_SLIDER_KNOB_COLOR_MOVING GFX_COLOR_WHITE |
Color of the slider knob when moving.
#define WTK_SLIDER_KNOB_COLOR_MOVING GFX_COLOR_WHITE |
Color of the slider knob when moving.
Referenced by wtk_slider_handler().
#define WTK_SLIDER_KNOB_COLOR_MOVING GFX_COLOR_WHITE |
Color of the slider knob when moving.
#define WTK_SLIDER_KNOB_COLOR_MOVING GFX_COLOR_WHITE |
Color of the slider knob when moving.
#define WTK_SLIDER_KNOB_COLOR_MOVING GFX_COLOR_WHITE |
Color of the slider knob when moving.
#define WTK_SLIDER_KNOB_COLOR_NORMAL GFX_COLOR_RED |
Color of the slider knob when normal.
Referenced by wtk_slider_handler().
#define WTK_SLIDER_KNOB_COLOR_NORMAL GFX_COLOR_RED |
Color of the slider knob when normal.
#define WTK_SLIDER_KNOB_COLOR_NORMAL GFX_COLOR_RED |
Color of the slider knob when normal.
#define WTK_SLIDER_KNOB_COLOR_NORMAL GFX_COLOR_RED |
Color of the slider knob when normal.
#define WTK_SLIDER_KNOB_COLOR_NORMAL GFX_COLOR_RED |
Color of the slider knob when normal.
#define WTK_SLIDER_KNOB_WIDTH 10 |
Width of the slider knob, including borders, in pixels.
#define WTK_SLIDER_KNOB_WIDTH 10 |
Width of the slider knob, including borders, in pixels.
Referenced by wtk_slider_create(), wtk_slider_handler(), and wtk_slider_set_value().
#define WTK_SLIDER_KNOB_WIDTH 10 |
Width of the slider knob, including borders, in pixels.
#define WTK_SLIDER_KNOB_WIDTH 10 |
Width of the slider knob, including borders, in pixels.
#define WTK_SLIDER_KNOB_WIDTH 10 |
Width of the slider knob, including borders, in pixels.
#define WTK_SLIDER_PARENT_MOVE_SUPPORT false |
Move support for sliders.
This define enables and disables move support for sliders. Move support is needed if the application is using moving parent widgets/windows. If not needed, disable it to save CPU cycles.
Set to true
to enable move support or false
to disable move support.
#define WTK_SLIDER_PARENT_MOVE_SUPPORT false |
Move support for sliders.
This define enables and disables move support for sliders. Move support is needed if the application is using moving parent widgets/windows. If not needed, disable it to save CPU cycles.
Set to true
to enable move support or false
to disable move support.
#define WTK_SLIDER_PARENT_MOVE_SUPPORT false |
Move support for sliders.
This define enables and disables move support for sliders. Move support is needed if the application is using moving parent widgets/windows. If not needed, disable it to save CPU cycles.
Set to true
to enable move support or false
to disable move support.
#define WTK_SLIDER_PARENT_MOVE_SUPPORT false |
Move support for sliders.
This define enables and disables move support for sliders. Move support is needed if the application is using moving parent widgets/windows. If not needed, disable it to save CPU cycles.
Set to true
to enable move support or false
to disable move support.
#define WTK_SLIDER_PARENT_MOVE_SUPPORT false |
Move support for sliders.
This define enables and disables move support for sliders. Move support is needed if the application is using moving parent widgets/windows. If not needed, disable it to save CPU cycles.
Set to true
to enable move support or false
to disable move support.
enum wtk_slider_state |
struct win_window* wtk_slider_as_child | ( | struct wtk_slider * | slider | ) |
Get pointer to slider window.
Returns a reference to the window that should be used when managing the widget, such as destroying, moving or reparenting it.
slider | Pointer to wtk_slider struct to manage. |
References Assert, and wtk_slider::container.
Referenced by app_widget_launch().
struct wtk_slider* wtk_slider_create | ( | struct win_window * | parent, |
struct win_area const * | area, | ||
uint8_t | maximum, | ||
uint8_t | value, | ||
uint8_t | option, | ||
win_command_t | command | ||
) |
Create a new slider widget.
Allocates the necessary memory and intializes the window and data for slider widgets. If there is not enough memory, the function returns NULL.
To destroy a slider widget and all its contents, and free its memory, call win_destroy() on the slider's child reference, given by wtk_slider_as_child(), like this: "win_destroy(wtk_slider_as_child(my_slider_ptr));".
Slider widgets fill the specified area and perform a mapping of the slider knob's position to a value between 0 and maximum. The length of the slider cannot exceed 255 pixels.
By default, the value 0 corresponds to the top-most position for a vertical slider, and the left-most position for a horizontal one. The slider's orientation and inversion of the value can be configured.
A slider can be configured to issue command events whenever its value is changed by a pointer and/or when a pointer releases it.
Refer to <gfx/wtk.h> for available configuration options.
parent | Pointer to parent win_window struct. |
area | Pointer to win_area struct with position and size of the slider. |
maximum | Maximum value of the slider. |
value | Initial value of the slider. |
option | Configuration options for slider. See Slider widget options |
command | Command to send to parent window. Must be non-zero if used. |
References win_attributes::area, Assert, win_attributes::background, win_attributes::behavior, wtk_slider::command, wtk_slider::container, win_attributes::custom, win_attributes::event_handler, wtk_slider::maximum, membag_alloc(), membag_free(), wtk_slider::option, wtk_slider::position, wtk_slider::root_pos, win_area::size, slider, wtk_slider::state, wtk_slider::value, win_create(), win_translate_win_to_root(), wtk_rescale_value(), WTK_SLIDER_CMD_MOVE, WTK_SLIDER_CMD_RELEASE, wtk_slider_handler(), WTK_SLIDER_INVERT, WTK_SLIDER_KNOB_WIDTH, WTK_SLIDER_NORMAL, WTK_SLIDER_VERTICAL, win_point::x, and win_point::y.
Referenced by app_widget_launch().
win_command_t wtk_slider_get_command | ( | struct wtk_slider * | slider | ) |
This function returns the window command of the specified slider, as set when the widget was created.
slider | Slider widget to manage. |
References Assert, and wtk_slider::command.
uint8_t wtk_slider_get_value | ( | struct wtk_slider const * | slider | ) |
Get slider value.
Returns the slider value, inverted if such behavior is configured.
slider | Pointer to wtk_slider struct to get value from. |
References Assert, wtk_slider::maximum, wtk_slider::option, wtk_slider::value, and WTK_SLIDER_INVERT.
Referenced by widget_frame_command_handler().
|
static |
Slider event handler.
This is the window event handler for slider widgets. It handles the three relevant event types sent to a slider's container window, i.e., drawing, pointer and destroy events.
For POINTER events, the slider value is only updated when the pointer moves, and not upon press or release events. The handler will grab the pointer and allow for it to move outside the actual widget window and still control the slider knob.
win | Window receiving the event. |
type | The event type. |
data | Custom data, depending on event type. |
References Assert, win_command_event::data, gfx_draw_filled_rect, gfx_draw_rect, membag_free(), win_clip_region::origin, win_area::pos, win_command_event::recipient, win_command_event::sender, win_area::size, slider, win_pointer_event::type, WIN_EVENT_DESTROY, WIN_EVENT_DRAW, WIN_EVENT_POINTER, win_get_area(), win_get_custom_data(), win_grab_pointer(), win_inflate_area(), WIN_POINTER_MOVE, WIN_POINTER_PRESS, WIN_POINTER_RELEASE, win_queue_command_event(), win_redraw(), win_translate_win_to_root(), wtk_rescale_value(), WTK_SLIDER_BACKGROUND_COLOR, WTK_SLIDER_BORDER_COLOR, WTK_SLIDER_CMD_MOVE, WTK_SLIDER_CMD_RELEASE, WTK_SLIDER_KNOB_COLOR_MOVING, WTK_SLIDER_KNOB_COLOR_NORMAL, WTK_SLIDER_KNOB_WIDTH, WTK_SLIDER_MOVING, WTK_SLIDER_NORMAL, WTK_SLIDER_VERTICAL, win_point::x, and win_point::y.
Referenced by wtk_slider_create().
bool wtk_slider_is_moving | ( | struct wtk_slider const * | slider | ) |
Get slider status.
Returns whether or not the slider is currently being manipulated by pointer events, i.e., it is moving.
slider | Pointer to wtk_slider struct to get status of. |
References Assert, wtk_slider::state, and WTK_SLIDER_MOVING.
bool wtk_slider_set_value | ( | struct wtk_slider * | slider, |
uint8_t | value | ||
) |
Set new slider value.
Updates the current value and issues a redrawing of the slider if its value was indeed changed. In this case, the new position of the slider knob is also computed.
slider | Pointer to wtk_slider struct to set new value for. |
value | New value for the slider. |
References Assert, wtk_slider::container, wtk_slider::maximum, wtk_slider::option, wtk_slider::position, win_area::size, wtk_slider::value, win_get_area(), win_redraw(), wtk_rescale_value(), WTK_SLIDER_INVERT, WTK_SLIDER_KNOB_WIDTH, WTK_SLIDER_VERTICAL, win_point::x, and win_point::y.
Referenced by widget_frame_command_handler().