18 #ifndef HEADER_SUPERTUX_EDITOR_TILEBOX_HPP 19 #define HEADER_SUPERTUX_EDITOR_TILEBOX_HPP 21 #include "editor/widget.hpp" 25 #include "editor/tip.hpp" 26 #include "interface/control_scrollbar.hpp" 27 #include "math/rectf.hpp" 28 #include "math/vector.hpp" 29 #include "supertux/tile_set.hpp" 47 enum class HoveredItem {
51 enum class TileScrolling {
55 enum class InputType {
64 virtual bool on_mouse_button_up(
const SDL_MouseButtonEvent& button)
override;
65 virtual bool on_mouse_button_down(
const SDL_MouseButtonEvent& button)
override;
66 virtual bool on_mouse_motion(
const SDL_MouseMotionEvent& motion)
override;
67 virtual bool on_mouse_wheel(
const SDL_MouseWheelEvent& wheel)
override;
69 virtual void setup()
override;
70 virtual void resize()
override;
72 void set_rect(
const Rectf& rect);
73 Rectf get_rect()
const {
return m_rect; }
75 void on_select(
const std::function<
void(
EditorTilebox&)>& callback);
77 void select_tilegroup(
int id);
78 void set_tilegroup(std::unique_ptr<Tilegroup> tilegroup);
79 void select_objectgroup(
int id);
80 bool select_layers_objectgroup();
82 const ObjectInfo& get_object_info()
const {
return *m_object_info; }
83 InputType get_input_type()
const {
return m_input_type; }
84 void set_input_type(InputType input_type) { m_input_type = input_type; }
87 const std::string& get_object()
const {
return m_object; }
88 void set_object(
const std::string&
object) { m_object = object; }
90 float get_tiles_height()
const;
92 bool has_active_object_tip()
const {
return m_object_tip->get_visible(); }
95 Vector get_tile_coords(
int pos,
bool relative =
true)
const;
96 int get_tile_pos(
const Vector& coords)
const;
97 Rectf get_tile_rect()
const;
99 void update_selection();
100 Rectf normalize_selection(
bool rounded)
const;
101 Rectf selection_draw_rect()
const;
103 void update_hovered_tile();
105 void reset_scrollbar();
115 std::unique_ptr<TileSelection> m_tiles;
117 std::string m_object;
118 std::unique_ptr<Tip> m_object_tip;
119 InputType m_input_type;
121 std::unique_ptr<Tilegroup> m_active_tilegroup;
123 std::unique_ptr<ObjectInfo> m_object_info;
125 std::function<void(EditorTilebox&)> m_on_select_callback;
127 std::unique_ptr<ControlScrollbar> m_scrollbar;
128 float m_scroll_progress;
130 HoveredItem m_hovered_item;
Definition: object_info.hpp:24
Definition: tile_selection.hpp:24
The tilebox allows selection of tiles or objects from a specified tilegroup/objectgroup.
Definition: tilebox.hpp:44
Definition: object_group.hpp:27
Definition: editor.hpp:49
This class provides functions for drawing things on screen.
Definition: drawing_context.hpp:42