View for an area of the user interface. More...
#include <view.h>
Public Member Functions | |
View () | |
virtual | ~View () |
const std::vector< std::shared_ptr< ViewAction > > & | actions () const |
List of all action recognizers. More... | |
void | add_action (const std::shared_ptr< ViewAction > &action) |
Add an action recognizer. More... | |
template<typename T , typename... Types> | |
std::shared_ptr< T > | add_action (Types &&... args) |
void | add_child (const std::shared_ptr< View > &view) |
Add a child view. More... | |
template<typename T , typename... Types> | |
std::shared_ptr< T > | add_child (Types &&... args) |
std::shared_ptr< View > | add_child () |
void | animate (float from, float to, const std::function< void(float)> &setter, int duration_ms=400, const std::function< float(float)> &easing=Easing::linear, std::function< void()> animation_end=std::function< void()>()) |
Continously call an animation function for the specified duration. More... | |
Canvas | canvas () const |
const std::vector< std::shared_ptr< View > > & | children () const |
List of all immediate child views. More... | |
void | clear_exception_encountered () |
bool | content_clipped () const |
Content clipping flag. More... | |
float | definite_height () |
The content height used for percentages or other definite calculations. More... | |
float | definite_width () |
The content width used for percentages or other definite calculations. More... | |
void | draw_without_layout () |
Render view and its children directly, without re-layout. More... | |
std::shared_ptr< View > | find_view_at (const Pointf &pos) const |
Find descendant view at the specified content relative position. More... | |
float | first_baseline_offset (Canvas &canvas, float width) |
Calculates the offset to the first baseline. More... | |
FocusPolicy | focus_policy () const |
Focus policy active for this view. More... | |
View * | focus_view () const |
The view receiving keyboard events or nullptr if no view has the focus. More... | |
Pointf | from_root_pos (const Pointf &pos) |
Map from root content to local content coordinates. More... | |
Pointf | from_screen_pos (const Pointf &pos) |
Map from screen to local content coordinates. More... | |
const ViewGeometry & | geometry () const |
Actual view position and size after layout. More... | |
bool | has_focus () const |
Test if this view is receiving keyboard input. More... | |
bool | hidden () const |
Test if view is set to hidden. More... | |
bool | is_height_definite () |
Test if the view has a definite height. More... | |
bool | is_static_position_and_visible () const |
Test if view should participate in static layout calculations (layout_children) More... | |
bool | is_width_definite () |
Test if the view has a definite width. More... | |
float | last_baseline_offset (Canvas &canvas, float width) |
Calculates the offset to the last baseline. More... | |
virtual void | layout_children (Canvas &canvas) |
Sets the view geometry for all children of this view. More... | |
bool | needs_layout () const |
Test if view geometry needs to be recalculated. More... | |
void | next_focus () |
Give focus to the next view in the keyboard tab index order. More... | |
View * | parent () const |
Parent view node or nullptr if the view is the current root node. More... | |
float | preferred_height (Canvas &canvas, float width) |
Calculates the preferred height of this view. More... | |
float | preferred_width (Canvas &canvas) |
Calculates the preferred width of this view. More... | |
void | prev_focus () |
Give focus to the previous view in the keyboard tab index order. More... | |
void | remove_focus () |
Remove focus from this view. More... | |
void | remove_from_parent () |
Remove view from parent. More... | |
bool | render_exception_encountered () const |
Test if this view generated an exception during rendering. More... | |
void | set_content_clipped (bool clipped) |
Specifies if content should be clipped during rendering. More... | |
void | set_cursor (const CursorDescription &cursor) |
Set the cursor icon used when cursor is above this view. More... | |
void | set_cursor (StandardCursor type) |
void | set_focus () |
Set this view as the focused view. More... | |
void | set_focus_policy (FocusPolicy policy) |
Set if this view automatically can gain focus. More... | |
void | set_geometry (const ViewGeometry &geometry) |
void | set_hidden (bool value=true) |
Hides a view from layout and rendering. More... | |
void | set_inherit_cursor () |
Specify that the cursor icon is inherited from the parent view. More... | |
void | set_needs_layout () |
Forces recalculation of view geometry before next rendering. More... | |
void | set_needs_render () |
Signals this view needs to be rendered again. More... | |
void | set_state (const std::string &name, bool value) |
Set or clear style state. More... | |
void | set_state_cascade (const std::string &name, bool value) |
Sets the state for this view and all children recursively, until a manually set state of the same name is found. More... | |
void | set_tab_index (unsigned int index) |
Sets the tab index used for keyboard focus changes. More... | |
void | set_view_transform (const Mat4f &transform) |
Specifies the view transform to be applied before its contents and children are rendered. More... | |
Signal< void(ActivationChangeEvent &)> & | sig_activated (bool use_capture=false) |
Window activated event. More... | |
Signal< void(CloseEvent &)> & | sig_close (bool use_capture=false) |
Window close button clicked event. More... | |
Signal< void(ActivationChangeEvent &)> & | sig_deactivated (bool use_capture=false) |
Window deactivated event. More... | |
Signal< void(FocusChangeEvent &)> & | sig_focus_gained (bool use_capture=false) |
View gained focus event. More... | |
Signal< void(FocusChangeEvent &)> & | sig_focus_lost (bool use_capture=false) |
View lost focus event. More... | |
Signal< void(KeyEvent &)> & | sig_key_press (bool use_capture=false) |
Key pressed event. More... | |
Signal< void(KeyEvent &)> & | sig_key_release (bool use_capture=false) |
Key released event. More... | |
Signal< void(PointerEvent &)> & | sig_pointer_double_click (bool use_capture=false) |
Pointer button double clicked event. More... | |
Signal< void(PointerEvent &)> & | sig_pointer_enter (bool use_capture=false) |
Pointer entering view geometry event. More... | |
Signal< void(PointerEvent &)> & | sig_pointer_leave (bool use_capture=false) |
Pointer leaving view geometry event. More... | |
Signal< void(PointerEvent &)> & | sig_pointer_move (bool use_capture=false) |
Pointer moved above view event. More... | |
Signal< void(PointerEvent &)> & | sig_pointer_press (bool use_capture=false) |
Pointer button pressed event. More... | |
Signal< void(PointerEvent &)> & | sig_pointer_proximity_change (bool use_capture=false) |
Pointer proximity change event. More... | |
Signal< void(PointerEvent &)> & | sig_pointer_release (bool use_capture=false) |
Pointer button released event. More... | |
Signal< void(ResizeEvent &)> & | sig_resize (bool use_capture=false) |
Window resize event. More... | |
bool | state (const std::string &name) const |
Test if a style state is currently set. More... | |
void | stop_animations () |
Stop all activate animation functions. More... | |
const std::shared_ptr< Style > & | style (const std::string &state=std::string()) const |
Style properties for the specified state. More... | |
const StyleCascade & | style_cascade () const |
Style cascade currently active for this view. More... | |
unsigned int | tab_index () const |
Tab index for keyboard focus changes. More... | |
Pointf | to_root_pos (const Pointf &pos, bool relative_to_margin=false) |
Map from local content to root content or margin (plus content, padding, border and margin) coordinates. More... | |
Pointf | to_screen_pos (const Pointf &pos) |
Map from local content to screen coordinates. More... | |
void | update_cursor (DisplayWindow &window) |
Update window cursor to the cursor used by this view. More... | |
const Mat4f & | view_transform () const |
Current view transform. More... | |
const ViewTree * | view_tree () const |
Tree in view hierachy. More... | |
ViewTree * | view_tree () |
Static Public Member Functions | |
static void | dispatch_event (View *target, EventUI *e, bool no_propagation=false) |
Dispatch event to signals listening for events. More... | |
Public Attributes | |
SlotContainer | slots |
Slot container helping with automatic disconnection of connected slots when the view is destroyed. More... | |
Protected Member Functions | |
virtual float | calculate_definite_height (bool &out_is_definite) |
The content height used for percentages or other definite calculations. More... | |
virtual float | calculate_definite_width (bool &out_is_definite) |
The content width used for percentages or other definite calculations. More... | |
virtual float | calculate_first_baseline_offset (Canvas &canvas, float width) |
Calculates the offset to the first baseline. More... | |
virtual float | calculate_last_baseline_offset (Canvas &canvas, float width) |
Calculates the offset to the last baseline. More... | |
virtual float | calculate_preferred_height (Canvas &canvas, float width) |
Calculates the preferred height of this view. More... | |
virtual float | calculate_preferred_width (Canvas &canvas) |
Calculates the preferred width of this view. More... | |
virtual void | child_added (const std::shared_ptr< View > &view) |
Child view was added to this view. More... | |
virtual void | child_removed (const std::shared_ptr< View > &view) |
Child view was removed from this view. More... | |
virtual void | render_background (Canvas &canvas) |
Renders the background of a view. More... | |
virtual void | render_border (Canvas &canvas) |
Renders the border of a view. More... | |
virtual void | render_content (Canvas &canvas) |
Renders the content of a view. More... | |
virtual void | updated_view_tree () |
Friends | |
class | ViewAction |
class | ViewImpl |
class | ViewTree |
View for an area of the user interface.
clan::View::View | ( | ) |
|
virtual |
const std::vector<std::shared_ptr<ViewAction> >& clan::View::actions | ( | ) | const |
List of all action recognizers.
void clan::View::add_action | ( | const std::shared_ptr< ViewAction > & | action | ) |
Add an action recognizer.
Referenced by add_action().
|
inline |
References add_action().
void clan::View::add_child | ( | const std::shared_ptr< View > & | view | ) |
Add a child view.
|
inline |
References add_child().
|
inline |
Referenced by add_child().
void clan::View::animate | ( | float | from, |
float | to, | ||
const std::function< void(float)> & | setter, | ||
int | duration_ms = 400 , |
||
const std::function< float(float)> & | easing = Easing::linear , |
||
std::function< void()> | animation_end = std::function< void()>() |
||
) |
Continously call an animation function for the specified duration.
|
protectedvirtual |
The content height used for percentages or other definite calculations.
|
protectedvirtual |
The content width used for percentages or other definite calculations.
|
protectedvirtual |
Calculates the offset to the first baseline.
Reimplemented in clan::TextFieldView, clan::LabelView, clan::TextView, clan::ScrollView, and clan::SpanLayoutView.
|
protectedvirtual |
Calculates the offset to the last baseline.
Reimplemented in clan::TextFieldView, clan::LabelView, clan::TextView, clan::ScrollView, and clan::SpanLayoutView.
|
protectedvirtual |
Calculates the preferred height of this view.
Reimplemented in clan::TextFieldView, clan::LabelView, clan::TextView, clan::ScrollView, clan::ImageView, and clan::SpanLayoutView.
|
protectedvirtual |
Calculates the preferred width of this view.
Reimplemented in clan::TextFieldView, clan::LabelView, clan::TextView, clan::ScrollView, clan::ImageView, and clan::SpanLayoutView.
Canvas clan::View::canvas | ( | ) | const |
Gets the current canvas used to render this view
This function may return a null canvas if the view does not have a canvas attached to it yet.
|
inlineprotectedvirtual |
Child view was added to this view.
Reimplemented in clan::SpanLayoutView.
|
inlineprotectedvirtual |
Child view was removed from this view.
Reimplemented in clan::SpanLayoutView.
const std::vector<std::shared_ptr<View> >& clan::View::children | ( | ) | const |
List of all immediate child views.
void clan::View::clear_exception_encountered | ( | ) |
Clears exception encountered flag
If a view generates an exception during rendering the view's render_content function will not be called again until this function is called.
bool clan::View::content_clipped | ( | ) | const |
Content clipping flag.
float clan::View::definite_height | ( | ) |
The content height used for percentages or other definite calculations.
float clan::View::definite_width | ( | ) |
The content width used for percentages or other definite calculations.
|
static |
Dispatch event to signals listening for events.
void clan::View::draw_without_layout | ( | ) |
Render view and its children directly, without re-layout.
Find descendant view at the specified content relative position.
float clan::View::first_baseline_offset | ( | Canvas & | canvas, |
float | width | ||
) |
Calculates the offset to the first baseline.
FocusPolicy clan::View::focus_policy | ( | ) | const |
Focus policy active for this view.
View* clan::View::focus_view | ( | ) | const |
The view receiving keyboard events or nullptr if no view has the focus.
Referenced by has_focus().
Map from root content to local content coordinates.
Map from screen to local content coordinates.
const ViewGeometry& clan::View::geometry | ( | ) | const |
Actual view position and size after layout.
|
inline |
Test if this view is receiving keyboard input.
References focus_view().
bool clan::View::hidden | ( | ) | const |
Test if view is set to hidden.
bool clan::View::is_height_definite | ( | ) |
Test if the view has a definite height.
bool clan::View::is_static_position_and_visible | ( | ) | const |
Test if view should participate in static layout calculations (layout_children)
bool clan::View::is_width_definite | ( | ) |
Test if the view has a definite width.
float clan::View::last_baseline_offset | ( | Canvas & | canvas, |
float | width | ||
) |
Calculates the offset to the last baseline.
|
virtual |
Sets the view geometry for all children of this view.
Reimplemented in clan::LabelView, clan::ScrollBarView, clan::SliderView, clan::ScrollView, clan::ListBoxView, and clan::SpanLayoutView.
bool clan::View::needs_layout | ( | ) | const |
Test if view geometry needs to be recalculated.
void clan::View::next_focus | ( | ) |
Give focus to the next view in the keyboard tab index order.
View* clan::View::parent | ( | ) | const |
Parent view node or nullptr if the view is the current root node.
float clan::View::preferred_height | ( | Canvas & | canvas, |
float | width | ||
) |
Calculates the preferred height of this view.
float clan::View::preferred_width | ( | Canvas & | canvas | ) |
Calculates the preferred width of this view.
void clan::View::prev_focus | ( | ) |
Give focus to the previous view in the keyboard tab index order.
void clan::View::remove_focus | ( | ) |
Remove focus from this view.
void clan::View::remove_from_parent | ( | ) |
Remove view from parent.
|
protectedvirtual |
Renders the background of a view.
Reimplemented in clan::CheckBoxView.
|
protectedvirtual |
Renders the border of a view.
|
inlineprotectedvirtual |
Renders the content of a view.
Reimplemented in clan::TextFieldView, clan::LabelView, clan::TextView, clan::ImageView, and clan::SpanLayoutView.
bool clan::View::render_exception_encountered | ( | ) | const |
Test if this view generated an exception during rendering.
void clan::View::set_content_clipped | ( | bool | clipped | ) |
Specifies if content should be clipped during rendering.
void clan::View::set_cursor | ( | const CursorDescription & | cursor | ) |
Set the cursor icon used when cursor is above this view.
void clan::View::set_cursor | ( | StandardCursor | type | ) |
void clan::View::set_focus | ( | ) |
Set this view as the focused view.
void clan::View::set_focus_policy | ( | FocusPolicy | policy | ) |
Set if this view automatically can gain focus.
void clan::View::set_geometry | ( | const ViewGeometry & | geometry | ) |
Sets the view position and size
This function should only be called by layout_children.
void clan::View::set_hidden | ( | bool | value = true | ) |
Hides a view from layout and rendering.
void clan::View::set_inherit_cursor | ( | ) |
Specify that the cursor icon is inherited from the parent view.
void clan::View::set_needs_layout | ( | ) |
Forces recalculation of view geometry before next rendering.
void clan::View::set_needs_render | ( | ) |
Signals this view needs to be rendered again.
void clan::View::set_state | ( | const std::string & | name, |
bool | value | ||
) |
Set or clear style state.
void clan::View::set_state_cascade | ( | const std::string & | name, |
bool | value | ||
) |
Sets the state for this view and all children recursively, until a manually set state of the same name is found.
void clan::View::set_tab_index | ( | unsigned int | index | ) |
Sets the tab index used for keyboard focus changes.
void clan::View::set_view_transform | ( | const Mat4f & | transform | ) |
Specifies the view transform to be applied before its contents and children are rendered.
Signal<void(ActivationChangeEvent &)>& clan::View::sig_activated | ( | bool | use_capture = false | ) |
Window activated event.
Signal<void(CloseEvent &)>& clan::View::sig_close | ( | bool | use_capture = false | ) |
Window close button clicked event.
Signal<void(ActivationChangeEvent &)>& clan::View::sig_deactivated | ( | bool | use_capture = false | ) |
Window deactivated event.
Signal<void(FocusChangeEvent &)>& clan::View::sig_focus_gained | ( | bool | use_capture = false | ) |
View gained focus event.
Signal<void(FocusChangeEvent &)>& clan::View::sig_focus_lost | ( | bool | use_capture = false | ) |
View lost focus event.
Key released event.
Signal<void(PointerEvent &)>& clan::View::sig_pointer_double_click | ( | bool | use_capture = false | ) |
Pointer button double clicked event.
Signal<void(PointerEvent &)>& clan::View::sig_pointer_enter | ( | bool | use_capture = false | ) |
Pointer entering view geometry event.
Signal<void(PointerEvent &)>& clan::View::sig_pointer_leave | ( | bool | use_capture = false | ) |
Pointer leaving view geometry event.
Signal<void(PointerEvent &)>& clan::View::sig_pointer_move | ( | bool | use_capture = false | ) |
Pointer moved above view event.
Signal<void(PointerEvent &)>& clan::View::sig_pointer_press | ( | bool | use_capture = false | ) |
Pointer button pressed event.
Signal<void(PointerEvent &)>& clan::View::sig_pointer_proximity_change | ( | bool | use_capture = false | ) |
Pointer proximity change event.
Signal<void(PointerEvent &)>& clan::View::sig_pointer_release | ( | bool | use_capture = false | ) |
Pointer button released event.
Signal<void(ResizeEvent &)>& clan::View::sig_resize | ( | bool | use_capture = false | ) |
Window resize event.
bool clan::View::state | ( | const std::string & | name | ) | const |
Test if a style state is currently set.
void clan::View::stop_animations | ( | ) |
Stop all activate animation functions.
const std::shared_ptr<Style>& clan::View::style | ( | const std::string & | state = std::string() | ) | const |
Style properties for the specified state.
Referenced by clan::ColumnView::ColumnView(), clan::RowView::RowView(), and clan::SpacerView::SpacerView().
const StyleCascade& clan::View::style_cascade | ( | ) | const |
Style cascade currently active for this view.
unsigned int clan::View::tab_index | ( | ) | const |
Tab index for keyboard focus changes.
Map from local content to root content or margin (plus content, padding, border and margin) coordinates.
Map from local content to screen coordinates.
void clan::View::update_cursor | ( | DisplayWindow & | window | ) |
Update window cursor to the cursor used by this view.
|
inlineprotectedvirtual |
const Mat4f& clan::View::view_transform | ( | ) | const |
Current view transform.
const ViewTree* clan::View::view_tree | ( | ) | const |
Tree in view hierachy.
ViewTree* clan::View::view_tree | ( | ) |
|
friend |
|
friend |
|
friend |
SlotContainer clan::View::slots |
Slot container helping with automatic disconnection of connected slots when the view is destroyed.