aboutsummaryrefslogtreecommitdiff
path: root/include/ImageViewer.hpp
diff options
context:
space:
mode:
authordec05eba <dec05eba@protonmail.com>2020-09-17 19:20:36 +0200
committerdec05eba <dec05eba@protonmail.com>2020-09-17 19:27:00 +0200
commit3b21eda9ad3b2ece9c6e5472eb419fb4d88424bd (patch)
tree033558bb30d6ca9e580a59696e330e4e6bc1274a /include/ImageViewer.hpp
parent5e7215b4675955fee8197076914599fe62f39c26 (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.hpp16
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