From 7ad52d9335579d03613036a7da9967fcf0c5d6b3 Mon Sep 17 00:00:00 2001 From: fiaxh Date: Fri, 16 Sep 2022 11:23:18 +0200 Subject: OMEMO QR code: Switch to paintable, fix css --- plugins/omemo/src/ui/contact_details_dialog.vala | 6 +++--- plugins/omemo/vapi/libqrencode.vapi | 9 ++++----- 2 files changed, 7 insertions(+), 8 deletions(-) (limited to 'plugins') diff --git a/plugins/omemo/src/ui/contact_details_dialog.vala b/plugins/omemo/src/ui/contact_details_dialog.vala index ab216c58..2de28572 100644 --- a/plugins/omemo/src/ui/contact_details_dialog.vala +++ b/plugins/omemo/src/ui/contact_details_dialog.vala @@ -104,9 +104,9 @@ public class ContactDetailsDialog : Gtk.Dialog { const int QUIET_ZONE_MODULES = 4; // MUST be at least 4 const int MODULE_SIZE_PX = 4; // arbitrary - var qr_pixbuf = new QRcode(iri, 2) - .to_pixbuf(MODULE_SIZE_PX * qrcode_image.scale_factor); - qrcode_image.set_from_pixbuf(qr_pixbuf); + var qr_paintable = new QRcode(iri, 2) + .to_paintable(MODULE_SIZE_PX * qrcode_image.scale_factor); + qrcode_image.paintable = qr_paintable; qrcode_image.margin_top = qrcode_image.margin_end = qrcode_image.margin_bottom = qrcode_image.margin_start = QUIET_ZONE_MODULES*MODULE_SIZE_PX; qrcode_popover.add_css_class("qrcode-container"); diff --git a/plugins/omemo/vapi/libqrencode.vapi b/plugins/omemo/vapi/libqrencode.vapi index 79f98b62..360f74a5 100644 --- a/plugins/omemo/vapi/libqrencode.vapi +++ b/plugins/omemo/vapi/libqrencode.vapi @@ -1,5 +1,3 @@ -using Gdk; - [CCode (cheader_filename = "qrencode.h")] namespace Qrencode { @@ -36,13 +34,14 @@ namespace Qrencode { [CCode (cname = "QRcode_encodeString")] public QRcode (string str, int version = 0, ECLevel level = ECLevel.L, EncodeMode hint = EncodeMode.EIGHT_BIT, bool casesensitive = true); - public Pixbuf to_pixbuf(int module_size) { + public Gdk.Paintable to_paintable(int module_size) { GLib.assert(module_size > 0); var dst_width = width*module_size; var dst_data = new uint8[dst_width*dst_width*3]; expand_and_upsample(data,width,width, dst_data,dst_width,dst_width); - return new Pixbuf.from_data(dst_data, - Colorspace.RGB, false, 8, dst_width, dst_width, dst_width*3); + return new Gdk.MemoryTexture(dst_width, dst_width, Gdk.MemoryFormat.R8G8B8, + new GLib.Bytes.take((owned) dst_data), dst_width*3); + } /** Does 2D nearest-neighbor upsampling of an array of single-byte -- cgit v1.2.3-54-g00ecf