aboutsummaryrefslogtreecommitdiff
path: root/src/QuickMedia.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/QuickMedia.cpp')
-rw-r--r--src/QuickMedia.cpp30
1 files changed, 24 insertions, 6 deletions
diff --git a/src/QuickMedia.cpp b/src/QuickMedia.cpp
index bd4b2d4..a2c936f 100644
--- a/src/QuickMedia.cpp
+++ b/src/QuickMedia.cpp
@@ -349,6 +349,11 @@ namespace QuickMedia {
abort();
}
+ if(!circle_mask_shader.loadFromFile(resources_root + "shaders/circle_mask.glsl", sf::Shader::Type::Fragment)) {
+ fprintf(stderr, "Failed to load %s/shaders/circle_mask.glsl", resources_root.c_str());
+ abort();
+ }
+
struct sigaction action;
action.sa_handler = sigpipe_handler;
sigemptyset(&action.sa_mask);
@@ -2896,8 +2901,10 @@ namespace QuickMedia {
body_item->thumbnail_url = message->thumbnail_url;
else if(!message->url.empty() && message->type == MessageType::IMAGE)
body_item->thumbnail_url = message->url;
- else
+ else {
body_item->thumbnail_url = message->user->avatar_url;
+ body_item->thumbnail_mask_type = ThumbnailMaskType::CIRCLE;
+ }
// TODO: Show image thumbnail inline instead of url to image and showing it as the thumbnail of the body item
body_item->url = message->url;
body_item->author_color = message->user->display_name_color;
@@ -2931,6 +2938,7 @@ namespace QuickMedia {
messages_tab.body->thumbnail_resize_target_size.y = 337;
messages_tab.body->thumbnail_fallback_size.x = 32;
messages_tab.body->thumbnail_fallback_size.y = 32;
+ messages_tab.body->thumbnail_mask_shader = &circle_mask_shader;
//messages_tab.body->line_seperator_color = sf::Color::Transparent;
messages_tab.text = sf::Text("Messages", *font, tab_text_size);
tabs.push_back(std::move(messages_tab));
@@ -2942,6 +2950,7 @@ namespace QuickMedia {
//rooms_tab.body->line_seperator_color = sf::Color::Transparent;
rooms_tab.body->thumbnail_fallback_size.x = 32;
rooms_tab.body->thumbnail_fallback_size.y = 32;
+ rooms_tab.body->thumbnail_mask_shader = &circle_mask_shader;
rooms_tab.text = sf::Text("Rooms", *font, tab_text_size);
tabs.push_back(std::move(rooms_tab));
@@ -3182,7 +3191,7 @@ namespace QuickMedia {
const float tab_vertical_offset = 10.0f;
- sf::Text room_name_text("", *font, 18);
+ sf::Text room_name_text("", *bold_font, 18);
const float room_name_text_height = 20.0f;
const float room_name_text_padding_y = 10.0f;
const float room_name_total_height = room_name_text_height + room_name_text_padding_y * 2.0f;
@@ -3308,6 +3317,7 @@ namespace QuickMedia {
auto body_item = BodyItem::create(std::move(room_name));
body_item->thumbnail_url = room->avatar_url;
body_item->userdata = room.get(); // Note: this has to be valid as long as the room list is valid!
+ body_item->thumbnail_mask_type = ThumbnailMaskType::CIRCLE;
tabs[ROOMS_TAB_INDEX].body->items.push_back(body_item);
body_items_by_room[room] = { body_item, true, 0 };
}
@@ -3344,8 +3354,12 @@ namespace QuickMedia {
auto body_item = find_body_item_by_event_id(body_items, num_body_items, message->related_event_id);
if(body_item) {
body_item->set_description(message->body);
- if(message->related_event_type == RelatedEventType::REDACTION)
+ if(message->related_event_type == RelatedEventType::REDACTION) {
+ body_item->embedded_item = nullptr;
+ body_item->embedded_item_status = EmbeddedItemStatus::NONE;
body_item->thumbnail_url = message->user->avatar_url;
+ body_item->thumbnail_mask_type = ThumbnailMaskType::NONE;
+ }
it = unreferenced_events.erase(it);
} else {
++it;
@@ -3366,8 +3380,12 @@ namespace QuickMedia {
auto body_item = find_body_item_by_event_id(body_items.data(), body_items.size(), message->related_event_id);
if(body_item) {
body_item->set_description(message->body);
- if(message->related_event_type == RelatedEventType::REDACTION)
+ if(message->related_event_type == RelatedEventType::REDACTION) {
+ body_item->embedded_item = nullptr;
+ body_item->embedded_item_status = EmbeddedItemStatus::NONE;
body_item->thumbnail_url = message->user->avatar_url;
+ body_item->thumbnail_mask_type = ThumbnailMaskType::NONE;
+ }
} else {
unreferenced_events.push_back(message);
}
@@ -3883,10 +3901,10 @@ namespace QuickMedia {
room_avatar_texture_size.x *= room_avatar_sprite.getScale().x;
room_avatar_texture_size.y *= room_avatar_sprite.getScale().y;
room_avatar_sprite.setPosition(body_pos.x, room_name_total_height * 0.5f - room_avatar_texture_size.y * 0.5f + 5.0f);
- window.draw(room_avatar_sprite);
+ window.draw(room_avatar_sprite, &circle_mask_shader);
room_name_text_offset_x += room_avatar_texture_size.x + 10.0f;
}
- room_name_text.setPosition(body_pos.x + room_name_text_offset_x, room_name_text_padding_y);
+ room_name_text.setPosition(body_pos.x + room_name_text_offset_x, room_name_text_padding_y + 4.0f);
window.draw(room_name_text);
}