From ede1a8476acd54941c20b809455ba62b30302a4e Mon Sep 17 00:00:00 2001 From: dec05eba Date: Mon, 7 Nov 2022 01:01:28 +0100 Subject: Add option to limit number of lines of text drawn in Text class --- include/BodyItem.hpp | 17 +++++++++++++++++ include/Text.hpp | 7 ++++--- 2 files changed, 21 insertions(+), 3 deletions(-) (limited to 'include') diff --git a/include/BodyItem.hpp b/include/BodyItem.hpp index b7dc48a..647d344 100644 --- a/include/BodyItem.hpp +++ b/include/BodyItem.hpp @@ -104,6 +104,14 @@ namespace QuickMedia { force_title_color = new_force_color; } + // Set to 0 to disable max lines + void set_title_max_lines(int max_lines) { + if(max_lines == title_max_lines) + return; + title_max_lines = max_lines; + dirty = true; + } + void set_description_color(mgl::Color new_color, bool new_force_color = false) { if(new_color == description_color && new_force_color == force_description_color) return; @@ -112,6 +120,13 @@ namespace QuickMedia { force_description_color = new_force_color; } + void set_description_max_lines(int max_lines) { + if(max_lines == description_max_lines) + return; + description_max_lines = max_lines; + dirty_description = true; + } + void set_author_color(mgl::Color new_color, bool new_force_color = false) { if(new_color == author_color && new_force_color == force_description_color) return; @@ -153,6 +168,8 @@ namespace QuickMedia { // TODO: Use a list of strings instead, not all plugins need all of these fields std::string url; std::string thumbnail_url; + int title_max_lines = 0; + int description_max_lines = 0; bool visible; // TODO: Make private and when set by user, set a |visible_force| variable to true or false which makes the item invisible even after filtering bool dirty; bool dirty_description; diff --git a/include/Text.hpp b/include/Text.hpp index 73dd565..601f1a2 100644 --- a/include/Text.hpp +++ b/include/Text.hpp @@ -100,6 +100,8 @@ namespace QuickMedia // text_flags is bit-or of FormattedTextFlag static std::string formatted_text(const std::string &text, mgl::Color color, uint8_t text_flags); void insert_text_at_caret_position(const std::string &str); + // Set to 0 to disable max lines + void set_max_lines(int max_lines); static std::string to_printable_string(const std::string &str); @@ -186,7 +188,7 @@ namespace QuickMedia float maxWidth; mgl::vec2f position; mgl::Color color; - bool force_color; + bool force_color = false; bool dirty; bool dirtyText; bool dirtyCaret; @@ -202,10 +204,9 @@ namespace QuickMedia int caretIndex; float caret_offset_x; mgl::vec2f caretPosition; - mgl::vec2u renderTarget_size; + int max_lines = 0; std::vector vertices_linear; // TODO: Use textElements instead - std::vector url_ranges; }; } -- cgit v1.2.3