From 275c6c9d801fffbf30fc702c1f683e519f66798f Mon Sep 17 00:00:00 2001 From: dec05eba Date: Sat, 2 Oct 2021 03:38:32 +0200 Subject: Change tab style, floor cleanup --- include/Utils.hpp | 3 +++ src/Body.cpp | 28 +++++++++++++--------------- src/QuickMedia.cpp | 24 ++++++++++++------------ src/SearchBar.cpp | 2 +- src/Tabs.cpp | 9 +++++---- src/Utils.cpp | 6 +++++- 6 files changed, 39 insertions(+), 33 deletions(-) diff --git a/include/Utils.hpp b/include/Utils.hpp index 0bdf69f..245f1df 100644 --- a/include/Utils.hpp +++ b/include/Utils.hpp @@ -2,6 +2,7 @@ #include #include +#include namespace QuickMedia { void show_virtual_keyboard(); @@ -10,4 +11,6 @@ namespace QuickMedia { bool is_running_wayland(); time_t iso_utc_to_unix_time(const char *time_str); std::string unix_time_to_local_time_str(time_t unix_time); + + sf::Vector2f vec2f_round(float x, float y); } \ No newline at end of file diff --git a/src/Body.cpp b/src/Body.cpp index 3f24e7d..ea43781 100644 --- a/src/Body.cpp +++ b/src/Body.cpp @@ -582,8 +582,8 @@ namespace QuickMedia { if(!show_drop_shadow) return; - const sf::Color color(0, 0, 0, 50); - const float height = 5.0f; + const sf::Color color = get_theme().background_color; + const float height = 20.0f; sf::Vertex gradient_points[4]; gradient_points[0] = sf::Vertex(body_pos + sf::Vector2f(0.0f, 0.0f), color); @@ -792,7 +792,8 @@ namespace QuickMedia { double scrollbar_offset_y = body_total_height == 0.0 ? 0.0 : (std::abs(page_scroll) / body_total_height); RoundedRectangle scrollbar( - sf::Vector2f(std::floor(5.0f * get_config().scale), std::floor(scrollbar_max_height * scrolling_bar_height_ratio)), std::floor(3.0f * get_config().scale), + vec2f_round(5.0f * get_config().scale, scrollbar_max_height * scrolling_bar_height_ratio), + std::floor(3.0f * get_config().scale), get_theme().selected_color, rounded_rectangle_shader); @@ -1457,7 +1458,7 @@ namespace QuickMedia { const float timestamp_text_y = std::floor(item_pos.y + padding_y - text_offset_y); if(item->author_text && !merge_with_previous) { - item->author_text->setPosition(std::floor(item_pos.x + text_offset_x), std::floor(item_pos.y + padding_y - text_offset_y)); + item->author_text->setPosition(vec2f_round(item_pos.x + text_offset_x, item_pos.y + padding_y - text_offset_y)); item->author_text->draw(window); sf::Vector2f replies_text_pos = item->author_text->getPosition() + sf::Vector2f(0.0f, 5.0f); @@ -1481,7 +1482,7 @@ namespace QuickMedia { float embedded_item_height = item->embedded_item ? get_item_height(item->embedded_item.get(), embedded_item_width, true, false) : ((body_spacing[body_theme].embedded_item_font_size + 5.0f) + body_spacing[body_theme].embedded_item_padding_y * 2.0f); sf::RectangleShape border_left(sf::Vector2f(embedded_item_border_width, std::floor(embedded_item_height))); border_left.setFillColor(get_theme().embedded_item_border_color); - border_left.setPosition(std::floor(item_pos.x + text_offset_x), std::floor(item_pos.y + body_spacing[body_theme].embedded_item_padding_y + 2.0f)); + border_left.setPosition(vec2f_round(item_pos.x + text_offset_x, item_pos.y + body_spacing[body_theme].embedded_item_padding_y + 2.0f)); window.draw(border_left); if(item->embedded_item) { @@ -1490,24 +1491,21 @@ namespace QuickMedia { draw_item(window, item->embedded_item, embedded_item_pos, embedded_item_size, false, true); } else { embedded_item_load_text.setString(embedded_item_status_to_string(item->embedded_item_status)); - embedded_item_load_text.setPosition(std::floor(item_pos.x + text_offset_x + embedded_item_border_width + body_spacing[body_theme].padding_x), std::floor(item_pos.y + embedded_item_height * 0.5f - (body_spacing[body_theme].embedded_item_font_size + 5.0f) * 0.5f + 6.0f)); + embedded_item_load_text.setPosition(vec2f_round(item_pos.x + text_offset_x + embedded_item_border_width + body_spacing[body_theme].padding_x, item_pos.y + embedded_item_height * 0.5f - (body_spacing[body_theme].embedded_item_font_size + 5.0f) * 0.5f + 6.0f)); window.draw(embedded_item_load_text); } item_pos.y += embedded_item_height + 4.0f; } - //title_text.setString(item->title); - //title_text.setPosition(std::floor(item_pos.x + text_offset_x), std::floor(item_pos.y + padding_y)); - //window.draw(title_text); if(item->title_text) { - item->title_text->setPosition(std::floor(item_pos.x + text_offset_x), std::floor(item_pos.y + padding_y - text_offset_y)); + item->title_text->setPosition(vec2f_round(item_pos.x + text_offset_x, item_pos.y + padding_y - text_offset_y)); item->title_text->draw(window); item_pos.y += item->title_text->getHeight() - 2.0f + std::floor(3.0f * get_config().scale); } if(item->description_text) { float height_offset = 0.0f; - item->description_text->setPosition(std::floor(item_pos.x + text_offset_x), std::floor(item_pos.y + padding_y - text_offset_y) + height_offset); + item->description_text->setPosition(vec2f_round(item_pos.x + text_offset_x, item_pos.y + padding_y - text_offset_y + height_offset)); item->description_text->draw(window); item_pos.y += item->description_text->getHeight() - 2.0f; } @@ -1521,8 +1519,8 @@ namespace QuickMedia { auto &reaction = item->reactions[i]; reaction.text->updateGeometry(); reaction_max_height = std::max(reaction_max_height, reaction.text->getHeight()); - reaction.text->setPosition(std::floor(item_pos.x + text_offset_x + reaction_offset_x + body_spacing[body_theme].reaction_background_padding_x), std::floor(item_pos.y + padding_y - 4.0f + body_spacing[body_theme].reaction_background_padding_y)); - reaction_background.set_position(sf::Vector2f(std::floor(item_pos.x + text_offset_x + reaction_offset_x), std::floor(item_pos.y + padding_y))); + reaction.text->setPosition(vec2f_round(item_pos.x + text_offset_x + reaction_offset_x + body_spacing[body_theme].reaction_background_padding_x, item_pos.y + padding_y - 4.0f + body_spacing[body_theme].reaction_background_padding_y)); + reaction_background.set_position(vec2f_round(item_pos.x + text_offset_x + reaction_offset_x, item_pos.y + padding_y)); reaction_background.set_size(sf::Vector2f(reaction.text->getWidth() + body_spacing[body_theme].reaction_background_padding_x * 2.0f, reaction.text->getHeight() + body_spacing[body_theme].reaction_background_padding_y * 2.0f)); reaction_background.draw(window); reaction_offset_x += reaction.text->getWidth() + body_spacing[body_theme].reaction_background_padding_x * 2.0f + body_spacing[body_theme].reaction_spacing_x; @@ -1537,7 +1535,7 @@ namespace QuickMedia { } if(item_index == selected_item && item->timestamp_text) { - item->timestamp_text->setPosition(std::floor(item_pos.x + size.x - item->timestamp_text->getLocalBounds().width - body_spacing[body_theme].padding_x), timestamp_text_y + 8.0f); + item->timestamp_text->setPosition(vec2f_round(item_pos.x + size.x - item->timestamp_text->getLocalBounds().width - body_spacing[body_theme].padding_x, timestamp_text_y + 8.0f)); window.draw(*item->timestamp_text); } @@ -1553,7 +1551,7 @@ namespace QuickMedia { if(current_json.isNumeric() && total_json.isNumeric()) { progress_text.setString(std::string("Page: ") + std::to_string(current_json.asInt()) + "/" + std::to_string(total_json.asInt())); auto bounds = progress_text.getLocalBounds(); - progress_text.setPosition(std::floor(item_pos.x + size.x - bounds.width - body_spacing[body_theme].padding_x), timestamp_text_y + text_offset_y); + progress_text.setPosition(vec2f_round(item_pos.x + size.x - bounds.width - body_spacing[body_theme].padding_x, timestamp_text_y + text_offset_y)); window.draw(progress_text); } } diff --git a/src/QuickMedia.cpp b/src/QuickMedia.cpp index 9483d6b..cdf20f8 100644 --- a/src/QuickMedia.cpp +++ b/src/QuickMedia.cpp @@ -3669,7 +3669,7 @@ namespace QuickMedia { redraw = false; if(error) { auto bounds = error_message.getLocalBounds(); - error_message.setPosition(std::floor(content_size.x * 0.5f - bounds.width * 0.5f), std::floor(content_size.y * 0.5f - bounds.height)); + error_message.setPosition(vec2f_round(content_size.x * 0.5f - bounds.width * 0.5f, content_size.y * 0.5f - bounds.height)); } else { sf::Vector2f image_scale; if(fit_image_to_window) @@ -3681,7 +3681,7 @@ namespace QuickMedia { auto image_size = texture_size_f; image_size.x *= image_scale.x; image_size.y *= image_scale.y; - image.setPosition(std::floor(content_size.x * 0.5f - image_size.x * 0.5f), std::floor(content_size.y * 0.5f - image_size.y * 0.5f)); + image.setPosition(vec2f_round(content_size.x * 0.5f - image_size.x * 0.5f, content_size.y * 0.5f - image_size.y * 0.5f)); } window.clear(get_theme().background_color); @@ -3697,7 +3697,7 @@ namespace QuickMedia { window.draw(chapter_text_background); auto text_bounds = chapter_text.getLocalBounds(); - chapter_text.setPosition(std::floor(window_size.x * 0.5f - text_bounds.width * 0.5f), std::floor(window_size.y - bottom_panel_height * 0.5f - font_height * 0.5f)); + chapter_text.setPosition(vec2f_round(window_size.x * 0.5f - text_bounds.width * 0.5f, window_size.y - bottom_panel_height * 0.5f - font_height * 0.5f)); window.draw(chapter_text); window.display(); @@ -4349,7 +4349,7 @@ namespace QuickMedia { redraw = false; comment_input.set_max_width(window_size.x - (logo_padding_x + logo_size.x + chat_input_padding_x + logo_padding_x)); - comment_input.set_position(sf::Vector2f(std::floor(logo_padding_x + logo_size.x + chat_input_padding_x), chat_input_padding_y)); + comment_input.set_position(vec2f_round(logo_padding_x + logo_size.x + chat_input_padding_x, chat_input_padding_y)); const float body_width = window_size.x; @@ -4390,7 +4390,7 @@ namespace QuickMedia { auto captcha_image_size = captcha_texture_size_f; captcha_image_size.x *= image_scale.x; captcha_image_size.y *= image_scale.y; - captcha_sprite.setPosition(std::floor(content_size.x * 0.5f - captcha_image_size.x * 0.5f), std::floor(content_size.y * 0.5f - captcha_image_size.y * 0.5f)); + captcha_sprite.setPosition(vec2f_round(content_size.x * 0.5f - captcha_image_size.x * 0.5f, content_size.y * 0.5f - captcha_image_size.y * 0.5f)); image_height = (int)captcha_image_size.y; if(has_captcha_bg && captcha_bg_texture.getNativeHandle() != 0) { @@ -4405,7 +4405,7 @@ namespace QuickMedia { image_size.x *= image_scale.x; image_size.y *= image_scale.y; const float width_diff = image_size.x - captcha_image_size.x; - captcha_bg_sprite.setPosition(std::floor(captcha_sprite.getPosition().x + width_diff*1.0f - captcha_slide*(width_diff + width_diff*2.0f)), std::floor(captcha_sprite.getPosition().y)); + captcha_bg_sprite.setPosition(vec2f_round(captcha_sprite.getPosition().x + width_diff*1.0f - captcha_slide*(width_diff + width_diff*2.0f), captcha_sprite.getPosition().y)); window.draw(captcha_bg_sprite); image_height = std::max(image_height, (int)image_size.y); @@ -4427,7 +4427,7 @@ namespace QuickMedia { captcha_slide_bg.set_position(sf::Vector2f(captcha_sprite.getPosition().x, captcha_sprite.getPosition().y + image_height + 10.0f)); const sf::Vector2f captcha_slide_fg_size = captcha_slide_bg.get_size() - sf::Vector2f(captcha_slide_padding_x * 2.0f, captcha_slide_padding_y * 2.0f); - captcha_slide_fg.set_size(sf::Vector2f(std::floor(captcha_slide_fg_size.x * captcha_slide), captcha_slide_fg_size.y)); + captcha_slide_fg.set_size(vec2f_round(captcha_slide_fg_size.x * captcha_slide, captcha_slide_fg_size.y)); captcha_slide_fg.set_position(captcha_slide_bg.get_position() + sf::Vector2f(captcha_slide_padding_x, captcha_slide_padding_y)); if(has_captcha_bg) { @@ -4458,7 +4458,7 @@ namespace QuickMedia { auto image_size = texture_size_f; image_size.x *= image_scale.x; image_size.y *= image_scale.y; - attached_image_sprite.setPosition(std::floor(content_size.x * 0.5f - image_size.x * 0.5f), std::floor(content_size.y * 0.5f - image_size.y * 0.5f)); + attached_image_sprite.setPosition(vec2f_round(content_size.x * 0.5f - image_size.x * 0.5f, content_size.y * 0.5f - image_size.y * 0.5f)); window.draw(attached_image_sprite); } } else { @@ -4467,7 +4467,7 @@ namespace QuickMedia { auto content_size = window_size; auto rect_size = clamp_to_size(rect.getSize(), content_size); rect.setSize(rect_size); - rect.setPosition(std::floor(content_size.x * 0.5f - rect_size.x * 0.5f), std::floor(content_size.y * 0.5f - rect_size.y * 0.5f)); + rect.setPosition(vec2f_round(content_size.x * 0.5f - rect_size.x * 0.5f, content_size.y * 0.5f - rect_size.y * 0.5f)); window.draw(rect); load_sprite.setPosition(window_size.x * 0.5f, window_size.y * 0.5f); @@ -6550,7 +6550,7 @@ namespace QuickMedia { this->body_pos = sf::Vector2f(0.0f, tab_shade_height); if(window_size.x > 900.0f * get_config().scale * get_config().font_scale && show_room_side_panel) { - this->body_size = sf::Vector2f(std::floor(300.0f * get_config().scale * get_config().font_scale), window_size.y - tab_shade_height); + this->body_size = vec2f_round(300.0f * get_config().scale * get_config().font_scale, window_size.y - tab_shade_height); draw_room_list = true; } else { this->body_size = sf::Vector2f(0.0f, 0.0f); @@ -6564,7 +6564,7 @@ namespace QuickMedia { chat_input_shade.setPosition(body_pos.x, window_size.y - chat_input_shade.getSize().y); chat_input.set_max_width(window_size.x - (logo_padding_x + logo_size.x + chat_input_padding_x + logo_padding_x + body_pos.x)); - chat_input.set_position(sf::Vector2f(std::floor(body_pos.x + logo_padding_x + logo_size.x + chat_input_padding_x), window_size.y - chat_height - chat_input_padding_y)); + chat_input.set_position(vec2f_round(body_pos.x + logo_padding_x + logo_size.x + chat_input_padding_x, window_size.y - chat_height - chat_input_padding_y)); more_messages_below_rect.setSize(sf::Vector2f(chat_input_shade.getSize().x, gradient_height)); more_messages_below_rect.setPosition(chat_input_shade.getPosition().x, std::floor(window_size.y - chat_input_height_full - gradient_height)); @@ -7315,7 +7315,7 @@ namespace QuickMedia { redraw = false; loading_bar_background.set_size(sf::Vector2f(window_size.x - padding_x * 2.0f, loading_bar_height)); loading_bar_background.set_position(window_size * 0.5f - loading_bar_background.get_size() * 0.5f + sf::Vector2f(0.0f, download_speed_text.getLocalBounds().height * 0.5f)); - loading_bar_background.set_position(sf::Vector2f(std::floor(loading_bar_background.get_position().x), std::floor(loading_bar_background.get_position().y))); + loading_bar_background.set_position(vec2f_round(loading_bar_background.get_position().x, loading_bar_background.get_position().y)); loading_bar.set_position(loading_bar_background.get_position() + sf::Vector2f(loading_bar_padding_x, loading_bar_padding_y)); filename_text.setPosition( loading_bar_background.get_position() + sf::Vector2f(0.0f, -(filename_text.getLocalBounds().height + spacing_y))); diff --git a/src/SearchBar.cpp b/src/SearchBar.cpp index 085f23e..0a86bba 100644 --- a/src/SearchBar.cpp +++ b/src/SearchBar.cpp @@ -166,7 +166,7 @@ namespace QuickMedia { background.set_size(sf::Vector2f(width, rect_height)); shade.setSize(sf::Vector2f(size.x, padding_top + rect_height + padding_bottom)); - caret.setSize(sf::Vector2f(std::floor(2.0f * get_config().scale), text.getCharacterSize() + std::floor(2.0f * get_config().scale))); + caret.setSize(vec2f_round(2.0f * get_config().scale, text.getCharacterSize() + std::floor(2.0f * get_config().scale))); background.set_position(sf::Vector2f(pos.x + offset_x, pos.y + padding_top)); shade.setPosition(pos); diff --git a/src/Tabs.cpp b/src/Tabs.cpp index 2a4c2f0..d22f959 100644 --- a/src/Tabs.cpp +++ b/src/Tabs.cpp @@ -3,6 +3,7 @@ #include "../include/ResourceLoader.hpp" #include "../include/Config.hpp" #include "../include/Theme.hpp" +#include "../include/Utils.hpp" #include #include #include @@ -23,7 +24,7 @@ namespace QuickMedia { return tab_height + std::floor(10.0f * get_config().scale); } - Tabs::Tabs(sf::Shader *rounded_rectangle_shader, sf::Color shade_color) : background(sf::Vector2f(1.0f, 1.0f), 10.0f, get_theme().selected_color, rounded_rectangle_shader), shade_color(shade_color) { + Tabs::Tabs(sf::Shader *rounded_rectangle_shader, sf::Color shade_color) : background(sf::Vector2f(1.0f, 1.0f), 10.0f, get_theme().background_color, rounded_rectangle_shader), shade_color(shade_color) { shade.setFillColor(shade_color); } @@ -100,7 +101,7 @@ namespace QuickMedia { width_per_tab = std::floor(width / num_visible_tabs); const float tab_text_y = std::floor(pos.y + tab_height*0.5f - (tab_text_size + 5.0f*get_config().scale)*0.5f); tab_background_width = std::floor(width_per_tab - tab_margin_x*2.0f); - background.set_size(sf::Vector2f(tab_background_width, tab_height)); + background.set_size(sf::Vector2f(tab_background_width, get_shade_height() + std::floor(10.0f * get_config().scale))); if(shade_color != sf::Color::Transparent) { shade.setSize(sf::Vector2f(width, get_shade_height())); @@ -172,7 +173,7 @@ namespace QuickMedia { window.draw(gradient_points, 4, sf::Quads); - sf::RectangleShape line(sf::Vector2f(std::floor(10.0f * get_config().scale), std::floor(2.0f * get_config().scale))); + sf::RectangleShape line(vec2f_round(10.0f * get_config().scale, 2.0f * get_config().scale)); line.setFillColor(get_theme().arrow_color); line.setOrigin(line.getSize().x * 0.5f, line.getSize().y * 0.5f); @@ -199,7 +200,7 @@ namespace QuickMedia { window.draw(gradient_points, 4, sf::Quads); - sf::RectangleShape line(sf::Vector2f(std::floor(10.0f * get_config().scale), std::floor(2.0f * get_config().scale))); + sf::RectangleShape line(vec2f_round(10.0f * get_config().scale, 2.0f * get_config().scale)); line.setFillColor(get_theme().arrow_color); line.setOrigin(line.getSize().x * 0.5f, line.getSize().y * 0.5f); diff --git a/src/Utils.cpp b/src/Utils.cpp index fec8bb9..67c739b 100644 --- a/src/Utils.cpp +++ b/src/Utils.cpp @@ -77,4 +77,8 @@ namespace QuickMedia { strftime(time_str, sizeof(time_str) - 1, "%Y %b %d, %a %H:%M", &time_tm); return time_str; } -} \ No newline at end of file + + sf::Vector2f vec2f_round(float x, float y) { + return { int(x), int(y) }; + } +} -- cgit v1.2.3