diff options
author | dec05eba <dec05eba@protonmail.com> | 2020-09-13 02:58:13 +0200 |
---|---|---|
committer | dec05eba <dec05eba@protonmail.com> | 2020-09-13 02:58:13 +0200 |
commit | 66bcacf7cd9cbc4bcecceeaf2b7c736cc1da85ed (patch) | |
tree | 73cba36d14ec50702be8a9b1198eb60c198ee34f /src | |
parent | 25db36afb97fa9be2ec61cc992586a483a9f6613 (diff) |
Use glScissor to cut off area outside body
Diffstat (limited to 'src')
-rw-r--r-- | src/Body.cpp | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/Body.cpp b/src/Body.cpp index a9dc18f..0297072 100644 --- a/src/Body.cpp +++ b/src/Body.cpp @@ -3,6 +3,7 @@ #include "../plugins/Plugin.hpp" #include <SFML/Graphics/RectangleShape.hpp> #include <SFML/Graphics/Sprite.hpp> +#include <SFML/OpenGL.hpp> #include <assert.h> #include <cmath> @@ -136,6 +137,8 @@ namespace QuickMedia { // TODO: Load thumbnails with more than one thread. // TODO: Show chapters (rows) that have been read differently to make it easier to see what hasn't been read yet. void Body::draw(sf::RenderWindow &window, sf::Vector2f pos, sf::Vector2f size, const Json::Value &content_progress) { + sf::Vector2f scissor_pos = pos; + const float image_max_height = 100.0f; const float spacing_y = 15.0f; const float padding_x = 10.0f; @@ -209,6 +212,10 @@ namespace QuickMedia { } } + sf::Vector2u window_size = window.getSize(); + glEnable(GL_SCISSOR_TEST); + glScissor(scissor_pos.x, (int)window_size.y - (int)scissor_pos.y - (int)size.y, size.x, size.y); + for(int i = first_visible_item + 1; i < num_items; ++i) { const auto &item = items[i]; @@ -331,6 +338,7 @@ namespace QuickMedia { pos.y += item_height + spacing_y; } + glDisable(GL_SCISSOR_TEST); for(auto it = item_thumbnail_textures.begin(); it != item_thumbnail_textures.end();) { if(!it->second.referenced) |