diff options
| author | Robert Tari <robert@tari.in> | 2025-05-12 04:41:21 +0200 |
|---|---|---|
| committer | Robert Tari <robert@tari.in> | 2025-05-12 04:41:21 +0200 |
| commit | 508631878e53106dfe0ffbe5cec4a3d62856fac0 (patch) | |
| tree | 9702c4a56a38493c878597cfefa09db11e24a6be /src/background.vala | |
| parent | d1d8d80ed9665d66874c100165600d36207f2967 (diff) | |
| download | arctica-greeter-508631878e53106dfe0ffbe5cec4a3d62856fac0.tar.gz arctica-greeter-508631878e53106dfe0ffbe5cec4a3d62856fac0.tar.bz2 arctica-greeter-508631878e53106dfe0ffbe5cec4a3d62856fac0.zip | |
Add background image position
Diffstat (limited to 'src/background.vala')
| -rw-r--r-- | src/background.vala | 30 |
1 files changed, 28 insertions, 2 deletions
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); |
