44 virtual SDL_Rect item_size(
const std::string&
item)
const;
45 virtual void draw_row_bg(
menu& menu_ref,
const std::size_t row_index,
const SDL_Rect&
rect,
ROW_TYPE type);
46 virtual void draw_row(
menu& menu_ref,
const std::size_t row_index,
const SDL_Rect& rect,
ROW_TYPE type);
47 void scale_images(
int max_width,
int max_height);
48 void adjust_image_bounds(
int&
w,
int&
h)
const;
49 std::size_t get_font_size()
const;
50 std::size_t get_cell_padding()
const;
51 std::size_t get_thickness()
const;
68 int normal_rgb,
int selected_rgb,
int heading_rgb,
69 double normal_alpha,
double selected_alpha,
double heading_alpha);
72 virtual SDL_Rect item_size(
const std::string&
item)
const;
73 virtual void draw_row_bg(
menu& menu_ref,
const std::size_t row_index,
const SDL_Rect&
rect,
ROW_TYPE type);
74 virtual void draw_row(
menu& menu_ref,
const std::size_t row_index,
const SDL_Rect& rect,
ROW_TYPE type);
76 virtual void init() { load_images(); }
85 bool load_image(
const std::string &img_sub);
103 item(
const std::vector<std::string>& fields, std::size_t
id)
104 : fields(fields), id(id)
115 virtual bool column_sortable(
int column)
const = 0;
116 virtual bool less(
int column,
const item& row1,
const item& row2)
const = 0;
129 basic_sorter& set_position_sort(
int column,
const std::vector<int>& pos);
131 virtual bool column_sortable(
int column)
const;
132 virtual bool less(
int column,
const item& row1,
const item& row2)
const;
140 menu(
const std::vector<std::string>&
items,
141 bool click_selects=
false,
int max_height=-1,
int max_width=-1,
142 const sorter* sorter_obj=
nullptr,
style *menu_style=
nullptr,
const bool auto_join=
true);
147 int selection()
const;
149 void move_selection(std::size_t
id);
150 void move_selection_keeping_viewport(std::size_t
id);
151 void reset_selection();
154 void change_item(
int pos1,
int pos2,
const std::string& str);
156 virtual void erase_item(std::size_t
index);
158 void set_heading(
const std::vector<std::string>& heading);
166 virtual void set_items(
const std::vector<std::string>&
items,
bool strip_spaces=
true,
167 bool keep_viewport=
false);
174 void set_max_height(
const int new_max_height);
175 void set_max_width(
const int new_max_width);
184 bool double_clicked();
186 void set_click_selects(
bool value);
187 void set_numeric_keypress_selection(
bool value);
190 void scroll(
unsigned int pos)
override;
195 void sort_by(
int column);
200 bool item_ends_with_image(
const std::string&
item)
const;
201 virtual void handle_event(
const SDL_Event& event)
override;
202 void set_inner_location(
const SDL_Rect&
rect)
override;
204 bool requires_event_focus(
const SDL_Event *event=
nullptr)
const override;
205 const std::vector<int>& column_widths()
const;
206 virtual void draw_row(
const std::size_t row_index,
const SDL_Rect& rect,
ROW_TYPE type);
211 int hit(
int x,
int y)
const;
213 int hit_column(
int x)
const;
215 int hit_heading(
int x,
int y)
const;
217 void invalidate_row(std::size_t
id);
218 void invalidate_row_pos(std::size_t pos);
219 void invalidate_heading();
222 std::size_t max_items_onscreen()
const;
224 std::size_t heading_height()
const;
229 void adjust_viewport_to_selection();
230 void key_press(SDL_Keycode key);
250 void column_widths_item(
const std::vector<std::string>& row, std::vector<int>& widths)
const;
252 void clear_item(
int item);
253 void draw_contents()
override;
257 SDL_Rect get_item_rect(
int item)
const;
258 SDL_Rect get_item_rect_internal(std::size_t pos)
const;
259 std::size_t get_item_height_internal(
const std::vector<std::string>& item)
const;
260 std::size_t get_item_height(
int item)
const;
261 int items_start()
const;
263 int items_end()
const;
264 int items_height()
const;
266 void update_scrollbar_grip_height();
291 void fill_items(
const std::vector<std::string>&
items,
bool strip_spaces);
294 void recalculate_pos();
299 void set_selection_pos(std::size_t pos,
bool silent=
false,
SELECTION_MOVE_VIEWPORT move_viewport=MOVE_VIEWPORT);
300 void move_selection_to(std::size_t
id,
bool silent=
false,
SELECTION_MOVE_VIEWPORT move_viewport=MOVE_VIEWPORT);
301 void move_selection_up(std::size_t dep);
302 void move_selection_down(std::size_t dep);
const std::vector< std::string > items
Wrapper class to encapsulate creation and management of an SDL_Texture.
std::string id
Text to match against addon_info.tags()
static map_location::DIRECTION s
An abstract description of a rectangle with integer coordinates.
std::size_t index(const std::string &str, const std::size_t index)
Codepoint index corresponding to the nth character in a UTF-8 string.
Functions to load and save images from/to disk.