From 508631878e53106dfe0ffbe5cec4a3d62856fac0 Mon Sep 17 00:00:00 2001 From: Robert Tari Date: Mon, 12 May 2025 04:41:21 +0200 Subject: Add background image position --- .../org.ArcticaProject.arctica-greeter.gschema.xml | 11 ++++++++ src/background.vala | 30 ++++++++++++++++++++-- src/settings.vala | 1 + 3 files changed, 40 insertions(+), 2 deletions(-) diff --git a/data/org.ArcticaProject.arctica-greeter.gschema.xml b/data/org.ArcticaProject.arctica-greeter.gschema.xml index b5c2cab..540d87f 100644 --- a/data/org.ArcticaProject.arctica-greeter.gschema.xml +++ b/data/org.ArcticaProject.arctica-greeter.gschema.xml @@ -347,5 +347,16 @@ '#000000' The background color of the menubar in #RRGGBB format. + + + + + + + + + 'center' + The position of the background image. + diff --git a/src/background.vala b/src/background.vala index bf1ca6f..07dce7e 100644 --- a/src/background.vala +++ b/src/background.vala @@ -173,17 +173,43 @@ class BackgroundLoader : Object var target_aspect = (double) width / height; var aspect = (double) image.width / image.height; double scale, offset_x = 0, offset_y = 0; + string sPosition = AGSettings.get_string (AGSettings.KEY_BACKGROUND_POSITION); + if (aspect > target_aspect) { /* Fit height and trim sides */ scale = (double) height / image.height; - offset_x = (image.width * scale - width) / 2; + + if (sPosition == "center") + { + offset_x = (image.width * scale - width) / 2; + } + else if (sPosition == "top-left" || sPosition == "bottom-left") + { + offset_x = 0; + } + else if (sPosition == "top-right" || sPosition == "bottom-right") + { + offset_x = (image.width * scale - width); + } } else { /* Fit width and trim top and bottom */ scale = (double) width / image.width; - offset_y = (image.height * scale - height) / 2; + + if (sPosition == "center") + { + offset_y = (image.height * scale - height) / 2; + } + else if (sPosition == "top-left" || sPosition == "top-right") + { + offset_y = 0; + } + else if (sPosition == "bottom-left" || sPosition == "bottom-right") + { + offset_y = (image.height * scale - height); + } } var scaled_image = new Gdk.Pixbuf (image.colorspace, image.has_alpha, image.bits_per_sample, width, height); diff --git a/src/settings.vala b/src/settings.vala index 865fe4a..d479aa6 100644 --- a/src/settings.vala +++ b/src/settings.vala @@ -101,6 +101,7 @@ public class AGSettings : Object public const string KEY_LOGO_OFFSET_VERTICAL = "logo-offset-vertical"; public const string KEY_ERROR_BELOW_ENTRY = "error-below-entry"; public const string KEY_MENUBAR_BGCOLOR = "menubar-bgcolor"; + public const string KEY_BACKGROUND_POSITION = "background-position"; public static bool get_boolean (string key) { -- cgit v1.2.3