diff options
author | dec05eba <dec05eba@protonmail.com> | 2020-09-17 19:20:36 +0200 |
---|---|---|
committer | dec05eba <dec05eba@protonmail.com> | 2020-09-17 19:27:00 +0200 |
commit | 3b21eda9ad3b2ece9c6e5472eb419fb4d88424bd (patch) | |
tree | 033558bb30d6ca9e580a59696e330e4e6bc1274a /include/ImageViewer.hpp | |
parent | 5e7215b4675955fee8197076914599fe62f39c26 (diff) |
Add image upscaling with waifu2x-ncnn-vulkan, async load images in scroll image view mode
Diffstat (limited to 'include/ImageViewer.hpp')
-rw-r--r-- | include/ImageViewer.hpp | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/include/ImageViewer.hpp b/include/ImageViewer.hpp index 7fe4921..93e7d7c 100644 --- a/include/ImageViewer.hpp +++ b/include/ImageViewer.hpp @@ -9,14 +9,22 @@ #include <SFML/Graphics/Font.hpp> #include <SFML/Graphics/Text.hpp> #include <SFML/System/Clock.hpp> +#include <thread> namespace QuickMedia { class Manga; + enum class ImageStatus { + WAITING, + LOADING, + FAILED_TO_LOAD, + LOADED + }; + struct ImageData { sf::Texture texture; sf::Sprite sprite; - bool failed_to_load_image; + ImageStatus image_status; bool visible_on_screen; }; @@ -39,6 +47,7 @@ namespace QuickMedia { int get_focused_page() const; int get_num_pages() const { return num_pages; } private: + void load_image_async(const Path &path, std::shared_ptr<ImageData> image_data, int page); bool render_page(sf::RenderWindow &window, int page, double offset_y); sf::Vector2<double> get_page_size(int page); private: @@ -61,7 +70,7 @@ namespace QuickMedia { sf::Clock frame_timer; sf::Text page_text; - std::vector<std::unique_ptr<ImageData>> image_data; + std::vector<std::shared_ptr<ImageData>> image_data; std::vector<PageSize> page_size; sf::Vector2<double> window_size; @@ -77,5 +86,8 @@ namespace QuickMedia { bool up_pressed = false; bool down_pressed = false; + + std::thread image_loader_thread; + bool loading_image = false; }; }
\ No newline at end of file |