diff options
Diffstat (limited to 'include/Tabs.hpp')
-rw-r--r-- | include/Tabs.hpp | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/include/Tabs.hpp b/include/Tabs.hpp new file mode 100644 index 0000000..d5aa5b6 --- /dev/null +++ b/include/Tabs.hpp @@ -0,0 +1,47 @@ +#pragma once + +#include "../external/RoundedRectangleShape.hpp" +#include <SFML/Graphics/RectangleShape.hpp> +#include <SFML/Graphics/Text.hpp> +#include <vector> +#include <functional> + +namespace sf { + class Event; + class RenderWindow; +} + +namespace QuickMedia { + class Tabs { + public: + Tabs(sf::Color shade_color = sf::Color(33, 37, 44)); + + static float get_height(); + static float get_shade_height(); + + // Returns the id (index) of the tab. The ids start from 0 + int add_tab(const std::string &title); + void on_event(sf::Event &event); + void draw(sf::RenderWindow &window, sf::Vector2f pos, float width); + + void set_text(int index, const std::string &text); + + void set_selected(int index); + int get_selected() const; + + std::function<void(int)> on_change_tab = nullptr; + private: + float tab_index_to_x_offset(int index); + private: + std::vector<sf::Text> tab_texts; + sf::RoundedRectangleShape background; + sf::RectangleShape shade; + int selected_tab = 0; + float scroll = 0.0f; + float width_per_tab = 0.0f; + float tab_background_width = 0.0f; + float container_width = 0.0f; + int tab_offset = 0; + sf::Color shade_color; + }; +}
\ No newline at end of file |