aboutsummaryrefslogtreecommitdiff
path: root/src/Body.cpp
diff options
context:
space:
mode:
authordec05eba <dec05eba@protonmail.com>2020-09-13 02:58:13 +0200
committerdec05eba <dec05eba@protonmail.com>2020-09-13 02:58:13 +0200
commit66bcacf7cd9cbc4bcecceeaf2b7c736cc1da85ed (patch)
tree73cba36d14ec50702be8a9b1198eb60c198ee34f /src/Body.cpp
parent25db36afb97fa9be2ec61cc992586a483a9f6613 (diff)
Use glScissor to cut off area outside body
Diffstat (limited to 'src/Body.cpp')
-rw-r--r--src/Body.cpp8
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)