From 0d573ac0374a68810b07eda111d243edbfa0ec91 Mon Sep 17 00:00:00 2001 From: bjoern Date: Wed, 23 Oct 2024 01:43:50 +0200 Subject: [PATCH] feat: add delta chat logo to QR codes (#6093) the chosen error correction allows tolerates about 15% "erroneous codewords", the logo is of a similar size as the old avatars, so it should be fine. --- assets/qr_overlay_delta.svg-part | 12 ++++++++++++ src/qr_code_generator.rs | 14 +++++++++++++- 2 files changed, 25 insertions(+), 1 deletion(-) create mode 100755 assets/qr_overlay_delta.svg-part diff --git a/assets/qr_overlay_delta.svg-part b/assets/qr_overlay_delta.svg-part new file mode 100755 index 000000000..9830f7b35 --- /dev/null +++ b/assets/qr_overlay_delta.svg-part @@ -0,0 +1,12 @@ + + + + + diff --git a/src/qr_code_generator.rs b/src/qr_code_generator.rs index 043b61407..d8d6d4327 100644 --- a/src/qr_code_generator.rs +++ b/src/qr_code_generator.rs @@ -18,6 +18,7 @@ use crate::stock_str::{self, backup_transfer_qr}; pub fn create_qr_svg(qrcode_content: &str) -> Result { let all_size = 512.0; let qr_code_size = 416.0; + let logo_size = 96.0; let qr = QrCode::encode_text(qrcode_content, QrCodeEcc::Medium)?; let mut svg = String::with_capacity(28000); @@ -67,7 +68,18 @@ pub fn create_qr_svg(qrcode_content: &str) -> Result { d.attr("d", path_data)?; d.attr("transform", format!("scale({scale})")) }) - }) + })?; + w.elem("g", |d| { + d.attr( + "transform", + format!( + "translate({},{}) scale(2)", // data in qr_overlay_delta.svg-part are 48 x 48, scaling by 2 results in desired logo_size of 96 + (all_size - logo_size) / 2.0, + (all_size - logo_size) / 2.0 + ), + ) + })? + .build(|w| w.put_raw_escapable(include_str!("../assets/qr_overlay_delta.svg-part"))) })?; Ok(svg)