23 #include <boost/optional.hpp> 33 class graphics_context;
54 virtual const i_widget& as_widget()
const = 0;
70 struct not_a_tag : std::logic_error {
not_a_tag() : std::logic_error(
"neogfx::i_shape::not_a_tag") {} };
81 virtual bool is_tag()
const = 0;
82 virtual i_shape& tag_of()
const = 0;
83 virtual void set_tag_of(
i_shape& aTagOf,
const vec3& aOffset =
vec3{}) = 0;
84 virtual const vec3& tag_offset()
const = 0;
85 virtual void set_tag_offset(
const vec3& aOffset) = 0;
86 virtual void unset_tag_of() = 0;
89 virtual frame_index frame_count()
const = 0;
93 virtual void add_frame(std::shared_ptr<i_shape_frame> aFrame) = 0;
94 virtual void replace_frame(frame_index aFrameIndex,
i_shape_frame& aFrame) = 0;
95 virtual void replace_frame(frame_index aFrameIndex, std::shared_ptr<i_shape_frame> aFrame) = 0;
96 virtual void remove_frame(frame_index aFrameIndex) = 0;
99 virtual const animation_frames& animation()
const = 0;
100 virtual bool repeat_animation()
const = 0;
101 virtual const animation_frame& current_animation_frame()
const = 0;
102 virtual bool has_animation_finished()
const = 0;
103 virtual void animation_finished() = 0;
104 virtual frame_index current_frame_index()
const = 0;
107 virtual vec3 origin()
const = 0;
108 virtual vec3 position()
const = 0;
110 virtual rect bounding_box_2d(
bool aWithPosition =
true)
const = 0;
111 virtual void set_animation(
const animation_frames& aAnimation) = 0;
112 virtual void set_current_frame(frame_index aFrameIndex) = 0;
113 virtual void set_origin(
const vec3& aOrigin) = 0;
114 virtual void set_position(
const vec3& aPosition) = 0;
115 virtual void clear_extents() = 0;
116 virtual void set_extents(
const vec3& aExtents) = 0;
117 virtual bool has_transformation_matrix()
const = 0;
118 virtual void clear_transformation_matrix() = 0;
119 virtual void set_transformation_matrix(
const mat33& aTransformationMatrix) = 0;
120 virtual void set_transformation_matrix(
const mat44& aTransformationMatrix) = 0;
123 virtual bool update(time_interval aNow) = 0;
129 set_origin(
vec3{ aOrigin.x, aOrigin.y, 0.0 });
133 set_origin(
vec3{ aOrigin.
x, aOrigin.
y, 0.0 });
137 set_position(
vec3{ aPosition.x, aPosition.y, 0.0 });
141 set_position(
vec3{ aPosition.
x, aPosition.
y, 0.0 });
145 set_extents(
vec3{ aExtents.x, aExtents.y, 0.0 });
149 set_extents(
vec3{ aExtents.
cx, aExtents.
cy, 0.0 });
virtual texture_list_pointer textures() const =0
virtual const optional_mat33 & transformation() const =0
boost::optional< mat33 > optional_mat33
boost::optional< colour_or_gradient > optional_colour_or_gradient
void set_extents(const size &aExtents)
void set_origin(const vec2 &aOrigin)
void set_position(const point &aPosition)
std::vector< animation_frame > animation_frames
void set_extents(const vec2 &aExtents)
virtual void set_textures(texture_list_pointer aTextures)=0
virtual void set_transformation(const optional_mat33 &aTransformation)=0
virtual void set_colour(const optional_colour_or_gradient &aColour)=0
std::shared_ptr< texture_list > texture_list_pointer
void set_origin(const point &aOrigin)
std::pair< frame_index, time_interval > animation_frame
virtual const optional_colour_or_gradient & colour() const =0
virtual bool has_extents() const =0
void set_position(const vec2 &aPosition)
boost::optional< time_interval > optional_time_interval
virtual size extents() const =0