From 2c1626da05104efaa286251c9ff7fa108a81c731 Mon Sep 17 00:00:00 2001 From: Ronny Dobra Date: Fri, 7 Jul 2017 11:32:16 +0200 Subject: [PATCH] save most recent zoomlevel --- data/com.github.ronnydo.colorpicker.gschema.xml | 5 +++++ src/Services/Settings.vala | 1 + src/Widgets/Picker.vala | 17 +++++++++++------ 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/data/com.github.ronnydo.colorpicker.gschema.xml b/data/com.github.ronnydo.colorpicker.gschema.xml index d7897c4..c9488f2 100644 --- a/data/com.github.ronnydo.colorpicker.gschema.xml +++ b/data/com.github.ronnydo.colorpicker.gschema.xml @@ -23,5 +23,10 @@ Color History Color History + + 3 + Most recent zoomlevel of the picker's magnifier. + Most recent zoomlevel of the picker's magnifier. + diff --git a/src/Services/Settings.vala b/src/Services/Settings.vala index 69b01e6..20821de 100644 --- a/src/Services/Settings.vala +++ b/src/Services/Settings.vala @@ -29,6 +29,7 @@ namespace ColorPicker.Services { public int window_y { get; set; } public int color_format_index { get; set; } public string[] color_history { get; set; } + public int zoomlevel { get; set; } public static Settings get_instance () { if (instance == null) { diff --git a/src/Widgets/Picker.vala b/src/Widgets/Picker.vala index 4ee436c..20ef166 100644 --- a/src/Widgets/Picker.vala +++ b/src/Widgets/Picker.vala @@ -33,12 +33,11 @@ namespace ColorPicker.Widgets { const string bright_border_color_string = "#FFFFFF"; private Gdk.RGBA bright_border_color = Gdk.RGBA(); - - int snapsize = 35; // must be odd - int zoomlevel = 3; + int snapsize = 35; // must be odd to have a 1px magnifier center int min_zoomlevel = 2; - int max_zoomlevel = 7; + int max_zoomlevel = 7; + int zoomlevel = 3; construct { @@ -56,6 +55,11 @@ namespace ColorPicker.Widgets { dark_border_color.parse (dark_border_color_string); bright_border_color.parse (bright_border_color_string); + + // restore zoomlevel + if (settings.zoomlevel >= min_zoomlevel && settings.zoomlevel <= max_zoomlevel) { + zoomlevel = settings.zoomlevel; + } var screen = get_screen (); set_default_size (screen.get_width (), screen.get_height ()); @@ -126,12 +130,10 @@ namespace ColorPicker.Widgets { // Zoom that screenshot up, and grab a snapsize-sized piece from the middle var scaled_pb = latest_pb.scale_simple (snapsize * zoomlevel + shadow_width * 2 , snapsize * zoomlevel + shadow_width * 2 , Gdk.InterpType.NEAREST); - // var scaled_pb_subset = new Gdk.Pixbuf.subpixbuf(scaled_pb, snapsize / 2 + 1, snapsize / 2 + 1, snapsize, snapsize); // Create the base surface for our cursor var base_surface = new Cairo.ImageSurface (Cairo.Format.ARGB32, snapsize * zoomlevel + shadow_width * 2 , snapsize * zoomlevel + shadow_width * 2); var base_context = new Cairo.Context (base_surface); - //base_context.scale (zoomlevel, zoomlevel); // Create the circular path on our base surface base_context.arc (radius + shadow_width, radius + shadow_width, radius, 0, 2 * Math.PI); @@ -293,6 +295,9 @@ namespace ColorPicker.Widgets { } public new void close () { + // save zoomlevel + settings.zoomlevel = zoomlevel; + get_window ().set_cursor (null); base.close (); }