[shotwell/wip/transparent-background: 2/4] Add gsettings for transparency background
- From: Jens Georg <jensgeorg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [shotwell/wip/transparent-background: 2/4] Add gsettings for transparency background
- Date: Fri, 21 Apr 2017 23:07:43 +0000 (UTC)
commit 4de48a909dc292cda0108c63e5af2014fbd89315
Author: Jens Georg <mail jensge org>
Date: Fri Apr 21 22:51:52 2017 +0200
Add gsettings for transparency background
Signed-off-by: Jens Georg <mail jensge org>
misc/org.yorba.shotwell.gschema.xml | 14 ++++++++-
src/config/ConfigurationInterfaces.vala | 52 +++++++++++++++++++++++++++++++
src/config/GSettingsEngine.vala | 4 ++
src/util/image.vala | 22 ++++++++++++-
4 files changed, 89 insertions(+), 3 deletions(-)
---
diff --git a/misc/org.yorba.shotwell.gschema.xml b/misc/org.yorba.shotwell.gschema.xml
index afd2f02..2bd9003 100644
--- a/misc/org.yorba.shotwell.gschema.xml
+++ b/misc/org.yorba.shotwell.gschema.xml
@@ -161,7 +161,19 @@
<summary>background color</summary>
<description>A grayscale color for use as the background color.</description>
</key>
-
+
+ <key name="transparent-background-type" type="s">
+ <default>'checkered'</default>
+ <summary>background for transparent images</summary>
+ <description>The background to use for transparent images.</description>
+ </key>
+
+ <key name="transparent-background-color" type="s">
+ <default>'#444'</default>
+ <summary>color for solid transparency background</summary>
+ <description>Color to use if background for transparent images is set to solid color</description>
+ </key>
+
<key name="hide-photos-already-imported" type="b">
<default>false</default>
<summary>Selection state of “hide photos” option</summary>
diff --git a/src/config/ConfigurationInterfaces.vala b/src/config/ConfigurationInterfaces.vala
index a9636ef..bde99ce 100644
--- a/src/config/ConfigurationInterfaces.vala
+++ b/src/config/ConfigurationInterfaces.vala
@@ -22,6 +22,8 @@ public enum FuzzyPropertyState {
public enum ConfigurableProperty {
AUTO_IMPORT_FROM_LIBRARY = 0,
BG_COLOR_NAME,
+ TRANSPARENT_BACKGROUND_TYPE,
+ TRANSPARENT_BACKGROUND_COLOR,
COMMIT_METADATA_TO_MASTERS,
DESKTOP_BACKGROUND_FILE,
DESKTOP_BACKGROUND_MODE,
@@ -100,6 +102,12 @@ public enum ConfigurableProperty {
case BG_COLOR_NAME:
return "BG_COLOR_NAME";
+
+ case TRANSPARENT_BACKGROUND_TYPE:
+ return "TRANSPARENT_BACKGROUND_TYPE";
+
+ case TRANSPARENT_BACKGROUND_COLOR:
+ return "TRANSPARENT_BACKGROUND_COLOR";
case COMMIT_METADATA_TO_MASTERS:
return "COMMIT_METADATA_TO_MASTERS";
@@ -453,6 +461,50 @@ public abstract class ConfigurationFacade : Object {
}
//
+ // transparent background type
+ //
+ public virtual string get_transparent_background_type() {
+ try {
+ return get_engine().get_string_property(ConfigurableProperty.TRANSPARENT_BACKGROUND_TYPE);
+ } catch (ConfigurationError err) {
+ on_configuration_error(err);
+
+ return "checkered";
+ }
+ }
+
+ public virtual void set_transparent_background_type(string type) {
+ try {
+ get_engine().set_string_property(ConfigurableProperty.TRANSPARENT_BACKGROUND_TYPE, type);
+ } catch (ConfigurationError err) {
+ on_configuration_error(err);
+ return;
+ }
+ }
+
+ //
+ // transparent background color
+ //
+ public virtual string get_transparent_background_color() {
+ try {
+ return get_engine().get_string_property(ConfigurableProperty.TRANSPARENT_BACKGROUND_COLOR);
+ } catch (ConfigurationError err) {
+ on_configuration_error(err);
+
+ return "#444";
+ }
+ }
+
+ public virtual void set_transparent_background_color(string color_name) {
+ try {
+ get_engine().set_string_property(ConfigurableProperty.TRANSPARENT_BACKGROUND_COLOR, color_name);
+ } catch (ConfigurationError err) {
+ on_configuration_error(err);
+ return;
+ }
+ }
+
+ //
// commit metadata to masters
//
public virtual bool get_commit_metadata_to_masters() {
diff --git a/src/config/GSettingsEngine.vala b/src/config/GSettingsEngine.vala
index b4f32e2..89116a7 100644
--- a/src/config/GSettingsEngine.vala
+++ b/src/config/GSettingsEngine.vala
@@ -31,6 +31,8 @@ public class GSettingsConfigurationEngine : ConfigurationEngine, GLib.Object {
schema_names[ConfigurableProperty.AUTO_IMPORT_FROM_LIBRARY] = FILES_PREFS_SCHEMA_NAME;
schema_names[ConfigurableProperty.BG_COLOR_NAME] = UI_PREFS_SCHEMA_NAME;
+ schema_names[ConfigurableProperty.TRANSPARENT_BACKGROUND_TYPE] = UI_PREFS_SCHEMA_NAME;
+ schema_names[ConfigurableProperty.TRANSPARENT_BACKGROUND_COLOR] = UI_PREFS_SCHEMA_NAME;
schema_names[ConfigurableProperty.COMMIT_METADATA_TO_MASTERS] = FILES_PREFS_SCHEMA_NAME;
schema_names[ConfigurableProperty.DESKTOP_BACKGROUND_FILE] = SYSTEM_DESKTOP_SCHEMA_NAME;
schema_names[ConfigurableProperty.DESKTOP_BACKGROUND_MODE] = SYSTEM_DESKTOP_SCHEMA_NAME;
@@ -103,6 +105,8 @@ public class GSettingsConfigurationEngine : ConfigurationEngine, GLib.Object {
key_names[ConfigurableProperty.AUTO_IMPORT_FROM_LIBRARY] = "auto-import";
key_names[ConfigurableProperty.BG_COLOR_NAME] = "background-color";
+ key_names[ConfigurableProperty.TRANSPARENT_BACKGROUND_TYPE] = "transparent-background-type";
+ key_names[ConfigurableProperty.TRANSPARENT_BACKGROUND_COLOR] = "transparent-background-color";
key_names[ConfigurableProperty.COMMIT_METADATA_TO_MASTERS] = "commit-metadata";
key_names[ConfigurableProperty.DESKTOP_BACKGROUND_FILE] = "picture-uri";
key_names[ConfigurableProperty.DESKTOP_BACKGROUND_MODE] = "picture-options";
diff --git a/src/util/image.vala b/src/util/image.vala
index 09de328..86dad11 100644
--- a/src/util/image.vala
+++ b/src/util/image.vala
@@ -450,14 +450,32 @@ private static Cairo.Surface background_surface = null;
private Cairo.Surface get_background_surface() {
if (background_surface == null) {
+ string color_a;
+ string color_b;
+ var config = Config.Facade.get_instance();
+
+ var type = config.get_transparent_background_type();
+ switch (type) {
+ case "checkered":
+ color_a = "#808080";
+ color_b = "#ccc";
+ break;
+ case "solid":
+ color_a = color_b = config.get_transparent_background_color();
+ break;
+ default:
+ color_a = color_b = "#000";
+ break;
+ }
+
background_surface = new Cairo.ImageSurface(Cairo.Format.RGB24, 16, 16);
var ctx = new Cairo.Context(background_surface);
ctx.set_operator(Cairo.Operator.SOURCE);
- set_source_color_from_string(ctx, "#808080");
+ set_source_color_from_string(ctx, color_a);
ctx.rectangle(0,0,8,8);
ctx.rectangle(8,8,8,8);
ctx.fill();
- set_source_color_from_string(ctx, "#cccccc");
+ set_source_color_from_string(ctx, color_b);
ctx.rectangle(0,8,8,8);
ctx.rectangle(8,0,8,8);
ctx.fill();
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]