|
trase
|
Base class for drawable objects in a figure. More...
#include <Drawable.hpp>


Public Member Functions | |
| Drawable (Drawable *parent, const bfloat2_t &area_of_parent) | |
constructs a Drawable under parent in the tree structure, and assigns it an drawable area given by area_of_parent More... | |
| void | resize (const bfloat2_t &parent_pixels) |
| resize the drawable area (in raw pixels) using the parents area (in raw pixels) | |
| void | update_time_span (float time) |
if time is outside the current animation time span of this object then this time span is increased to include it | |
| void | add_frame_time (float time) |
| adds a keyframe time to the animation | |
| void | update_frame_info (float time) |
fills out m_frame_info using a given time More... | |
| const FrameInfo & | get_frame_info () const |
| returns the current FrameInfo More... | |
| const bfloat2_t & | pixels () const |
| returns this objects drawable area in raw pixels | |
| const bfloat2_t & | area () const |
| returns this objects drawable area as a ratio of the parents drawable area | |
| bfloat2_t & | area () |
| returns this objects drawable area as a ratio of the parents drawable area | |
| Style & | style () noexcept |
| returns modifiable current style | |
| const float & | time_span () const |
| returns time span of the animation | |
| virtual void | dispatch (BackendSVG &file, float time)=0 |
| virtual void | dispatch (BackendSVG &file)=0 |
| template<typename AnimatedBackend > | |
| void | draw (AnimatedBackend &backend) |
| draw this object using the given AnimatedBackend | |
| template<typename Backend > | |
| void | draw (Backend &backend, float time) |
| draw this object using the given Backend | |
Protected Attributes | |
| std::vector< std::shared_ptr< Drawable > > | m_children |
| a list of Drawables that are children of this object | |
| Drawable * | m_parent |
| parent of this object | |
| bfloat2_t | m_area |
| the area of this object as a ratio of its parent object | |
| bfloat2_t | m_pixels |
| the area of this object in raw pixels (updated by resize()) | |
| float | m_time_span |
| the animation time span (see update_time_span()) | |
| std::vector< float > | m_times |
| the animation frame times (see add_frame_time()) | |
| FrameInfo | m_frame_info |
| stores information on the current draw time (see update_frame_info()) | |
| Style | m_style |
| fully styling information for each drawable | |
Base class for drawable objects in a figure.
A figure consists of a tree structure of Drawable objects, with the Figure object at the top of the tree. Each Drawable in the tree has a parent Drawable and zero or more child Drawables.
Each Drawable is given a size as a ratio of its parents size, so that resizing of the entire tree can be done easily.
Each Drawable also has a set of times at which animation frames are defined and, given a time, can calculate where this time sits in the list of frames
Finally, each Drawable has functions for drawing itself, given a Backend as a templated argument. These are overridden in derived classes (but can't be virtual as they are templated on the Backend type). Instead, each draw function is implemented in a header file ending in *Draw.hpp (e.g. AxisDraw.hpp), and included when compiling each Backend
| const FrameInfo & trase::Drawable::get_frame_info | ( | ) | const |
returns the current FrameInfo
| void trase::Drawable::update_frame_info | ( | float | time | ) |
fills out m_frame_info using a given time