From c7138bca7ea7d007198c544b2d8bc27ae414d2e2 Mon Sep 17 00:00:00 2001 From: dec05eba Date: Sat, 3 Nov 2018 22:49:29 +0100 Subject: Start with gif/image widget --- include/ChatMessage.hpp | 5 ++--- include/DynamicImage.hpp | 18 ++++++++++++++++++ include/GtkGif.hpp | 10 +++++----- 3 files changed, 25 insertions(+), 8 deletions(-) create mode 100644 include/DynamicImage.hpp (limited to 'include') diff --git a/include/ChatMessage.hpp b/include/ChatMessage.hpp index c1ef459..5259a9c 100644 --- a/include/ChatMessage.hpp +++ b/include/ChatMessage.hpp @@ -1,5 +1,6 @@ #pragma once +#include "DynamicImage.hpp" #include #include #include @@ -12,11 +13,9 @@ namespace dchat public: ChatMessage(const Glib::ustring &username, const Glib::ustring &text, uint32_t timestampSeconds); - Gtk::Grid avatar; + DynamicImage avatar; Gtk::Label username; Gtk::Label text; uint32_t timestampSeconds; - private: - bool updateContent(const Cairo::RefPtr &cairo); }; } \ No newline at end of file diff --git a/include/DynamicImage.hpp b/include/DynamicImage.hpp new file mode 100644 index 0000000..578b91a --- /dev/null +++ b/include/DynamicImage.hpp @@ -0,0 +1,18 @@ +#pragma once + +#include +#include + +namespace dchat +{ + class DynamicImage : public Gtk::DrawingArea + { + public: + DynamicImage(int downloadLimitBytes = 12582912); + + std::string url; + int downloadLimitBytes; + private: + bool updateContent(const Cairo::RefPtr &cairo); + }; +} \ No newline at end of file diff --git a/include/GtkGif.hpp b/include/GtkGif.hpp index 91b3a12..a4a28d7 100644 --- a/include/GtkGif.hpp +++ b/include/GtkGif.hpp @@ -1,23 +1,23 @@ #pragma once #include -#include -#include +#include +#include namespace dchat { - class GtkGif : public Gif, public Gtk::DrawingArea + class GtkGif : public Gif { public: GtkGif(StringView fileContent); virtual ~GtkGif(){} + + void draw(const Cairo::RefPtr &cairo, int width, int height); protected: // Return false if texture creation failed bool createTexture(int width, int height) override; // Size of texture data is same as the size that the texture was created with (also same size returned by @getSize function) void updateTexture(void *textureData) override; - private: - bool on_draw(const Cairo::RefPtr &cairo) override; private: Cairo::RefPtr surface; }; -- cgit v1.2.3