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),
help(), id(id)
116 virtual bool column_sortable(
int column)
const = 0;
117 virtual bool less(
int column,
const item& row1,
const item& row2)
const = 0;
130 basic_sorter& set_position_sort(
int column,
const std::vector<int>& pos);
132 virtual bool column_sortable(
int column)
const;
133 virtual bool less(
int column,
const item& row1,
const item& row2)
const;
141 menu(
const std::vector<std::string>&
items,
142 bool click_selects=
false,
int max_height=-1,
int max_width=-1,
143 const sorter* sorter_obj=
nullptr,
style *menu_style=
nullptr,
const bool auto_join=
true);
148 int selection()
const;
150 void move_selection(std::size_t
id);
151 void move_selection_keeping_viewport(std::size_t
id);
152 void reset_selection();
155 void change_item(
int pos1,
int pos2,
const std::string& str);
157 virtual void erase_item(std::size_t
index);
159 void set_heading(
const std::vector<std::string>& heading);
167 virtual void set_items(
const std::vector<std::string>&
items,
bool strip_spaces=
true,
168 bool keep_viewport=
false);
175 void set_max_height(
const int new_max_height);
176 void set_max_width(
const int new_max_width);
185 bool double_clicked();
187 void set_click_selects(
bool value);
188 void set_numeric_keypress_selection(
bool value);
191 void scroll(
unsigned int pos)
override;
196 void sort_by(
int column);
201 bool item_ends_with_image(
const std::string&
item)
const;
202 virtual void handle_event(
const SDL_Event& event)
override;
203 void set_inner_location(
const SDL_Rect&
rect)
override;
205 bool requires_event_focus(
const SDL_Event *event=
nullptr)
const override;
206 const std::vector<int>& column_widths()
const;
207 virtual void draw_row(
const std::size_t row_index,
const SDL_Rect& rect,
ROW_TYPE type);
212 int hit(
int x,
int y)
const;
214 std::pair<int,int> hit_cell(
int x,
int y)
const;
215 int hit_column(
int x)
const;
217 int hit_heading(
int x,
int y)
const;
219 void invalidate_row(std::size_t
id);
220 void invalidate_row_pos(std::size_t pos);
221 void invalidate_heading();
224 std::size_t max_items_onscreen()
const;
226 std::size_t heading_height()
const;
231 void adjust_viewport_to_selection();
232 void key_press(SDL_Keycode key);
240 void create_help_strings();
241 void process_help_string(
int mousex,
int mousey)
override;
257 void column_widths_item(
const std::vector<std::string>& row, std::vector<int>& widths)
const;
259 void clear_item(
int item);
260 void draw_contents()
override;
264 SDL_Rect get_item_rect(
int item)
const;
265 SDL_Rect get_item_rect_internal(std::size_t pos)
const;
266 std::size_t get_item_height_internal(
const std::vector<std::string>& item)
const;
267 std::size_t get_item_height(
int item)
const;
268 int items_start()
const;
270 int items_end()
const;
271 int items_height()
const;
273 void update_scrollbar_grip_height();
298 void fill_items(
const std::vector<std::string>&
items,
bool strip_spaces);
301 void recalculate_pos();
306 void set_selection_pos(std::size_t pos,
bool silent=
false,
SELECTION_MOVE_VIEWPORT move_viewport=MOVE_VIEWPORT);
307 void move_selection_to(std::size_t
id,
bool silent=
false,
SELECTION_MOVE_VIEWPORT move_viewport=MOVE_VIEWPORT);
308 void move_selection_up(std::size_t dep);
309 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.