[gnome-mines] Fixed rough image rendering. https://bugzilla.gnome.org/show_bug.cgi?id=730056



commit 9a887750fb286f8a55a0abf1f7072d9ff73bb032
Author: Robert Roth <robert roth off gmail com>
Date:   Wed Jul 2 00:48:32 2014 +0300

    Fixed rough image rendering.
    https://bugzilla.gnome.org/show_bug.cgi?id=730056
    
    Fixed rough image rendering by rescaling the SVG images on resize,
    instead of rescaling the pixbuf rendered from the SVG at the initial size.

 data/{1mine.svg => 1mines.svg}        |    0
 data/Makefile.am                      |    6 ++--
 data/{bang.svg => exploded.svg}       |    0
 data/flag-symbolic.svg                |   23 ++++++++--------
 data/gnome-mines.css.in               |   46 +--------------------------------
 data/{flag-question.svg => maybe.svg} |    0
 data/{warning.svg => overmine.svg}    |    0
 src/minefield-view.vala               |   23 +++++++++++++++-
 8 files changed, 38 insertions(+), 60 deletions(-)
---
diff --git a/data/1mine.svg b/data/1mines.svg
similarity index 100%
rename from data/1mine.svg
rename to data/1mines.svg
diff --git a/data/Makefile.am b/data/Makefile.am
index 3969212..7be8f41 100644
--- a/data/Makefile.am
+++ b/data/Makefile.am
@@ -6,10 +6,10 @@ gsettings_SCHEMAS = org.gnome.mines.gschema.xml
 man_MANS = gnome-mines.6
 
 pixmapdir   = $(pkgdatadir)
-pixmap_DATA = mine.svg bang.svg warning.svg \
-            1mine.svg 2mines.svg 3mines.svg 4mines.svg \
+pixmap_DATA = mine.svg exploded.svg overmine.svg \
+            1mines.svg 2mines.svg 3mines.svg 4mines.svg \
             5mines.svg 6mines.svg 7mines.svg 8mines.svg \
-            flag-symbolic.svg flag.svg flag-question.svg
+            flag-symbolic.svg flag.svg maybe.svg
 
 gnome-mines.css: gnome-mines.css.in Makefile
        $(AM_V_GEN) sed -e "s|\ pkgdatadir\@|$(pkgdatadir)|" $< > $@
diff --git a/data/bang.svg b/data/exploded.svg
similarity index 100%
rename from data/bang.svg
rename to data/exploded.svg
diff --git a/data/flag-symbolic.svg b/data/flag-symbolic.svg
index 8418ac5..4eca601 100644
--- a/data/flag-symbolic.svg
+++ b/data/flag-symbolic.svg
@@ -11,8 +11,8 @@
    width="16"
    height="16"
    id="svg9373"
-   inkscape:version="0.48.4 r9939"
-   sodipodi:docname="flag-symbolic.svg">
+   inkscape:version="0.48+devel r"
+   sodipodi:docname="flag-symbolic-ltr.svg">
   <metadata
      id="metadata9418">
     <rdf:RDF>
@@ -28,27 +28,28 @@
   <defs
      id="defs9416" />
   <sodipodi:namedview
-     pagecolor="#ffffff"
+     pagecolor="#666666"
      bordercolor="#666666"
      borderopacity="1"
      objecttolerance="10"
      gridtolerance="10"
      guidetolerance="10"
-     inkscape:pageopacity="0"
+     inkscape:pageopacity="1"
      inkscape:pageshadow="2"
-     inkscape:window-width="1920"
-     inkscape:window-height="1014"
+     inkscape:window-width="1052"
+     inkscape:window-height="537"
      id="namedview9414"
      showgrid="false"
      inkscape:snap-nodes="true"
      inkscape:snap-bbox="false"
      inkscape:zoom="4"
-     inkscape:cx="-7.077932"
+     inkscape:cx="-37.077932"
      inkscape:cy="-2.8623575"
-     inkscape:window-x="1280"
-     inkscape:window-y="27"
-     inkscape:window-maximized="1"
-     inkscape:current-layer="svg9373">
+     inkscape:window-x="331"
+     inkscape:window-y="409"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg9373"
+     showborder="false">
     <inkscape:grid
        type="xygrid"
        id="grid9641"
diff --git a/data/gnome-mines.css.in b/data/gnome-mines.css.in
index 23a9c0b..9fbd361 100644
--- a/data/gnome-mines.css.in
+++ b/data/gnome-mines.css.in
@@ -18,6 +18,7 @@ Changes are applied instantly and globally, for the whole application.
   font-weight: bold;
   background-size: 60%;
   background-position: 50%;
+  padding:0px;
   background-repeat: no-repeat;
   box-shadow:none;
   border-width:2px;
@@ -45,55 +46,10 @@ Changes are applied instantly and globally, for the whole application.
   background-color:#dededc;
 }
 
-.flag {
-  background-image:url('@pkgdatadir@/flag.svg');
-}
-
-.exploded {
-  background-image:url('@pkgdatadir@/bang.svg');
-}
-
-.maybe {
-  background-image:url('@pkgdatadir@/flag-question.svg');
-}
-
 .mine {
-  background-image:url('@pkgdatadir@/mine.svg');
   background-color:#729fcf;
 }
 
-.mines1 {
-  background-image:url('@pkgdatadir@/1mine.svg');
-}
-
-.mines2 {
-  background-image:url('@pkgdatadir@/2mines.svg');
-}
-
-.mines3 {
-  background-image:url('@pkgdatadir@/3mines.svg');
-}
-
-.mines4 {
-  background-image:url('@pkgdatadir@/4mines.svg');
-}
-
-.mines5 {
-  background-image:url('@pkgdatadir@/5mines.svg');
-}
-
-.mines6 {
-  background-image:url('@pkgdatadir@/6mines.svg');
-}
-
-.mines7 {
-  background-image:url('@pkgdatadir@/7mines.svg');
-}
-
-.mines8 {
-  background-image:url('@pkgdatadir@/8mines.svg');
-}
-
 .cursor {
   background-color:#e9b96e;
 }
diff --git a/data/flag-question.svg b/data/maybe.svg
similarity index 100%
rename from data/flag-question.svg
rename to data/maybe.svg
diff --git a/data/warning.svg b/data/overmine.svg
similarity index 100%
rename from data/warning.svg
rename to data/overmine.svg
diff --git a/src/minefield-view.vala b/src/minefield-view.vala
index 989a3ba..e83bb9b 100644
--- a/src/minefield-view.vala
+++ b/src/minefield-view.vala
@@ -97,6 +97,11 @@ private class Tile : Gtk.Button
     public signal void tile_mouse_over (int x, int y);
     public signal void tile_pressed (int x, int y, Gdk.EventButton event);
     public signal void tile_released (int x, int y, Gdk.EventButton event);
+    private static string[] IMAGE_CLASSES = {"mine", "flag", "maybe", "overmine",
+                                             "exploded", "1mines", "2mines",
+                                             "3mines", "4mines", "5mines",
+                                             "6mines", "7mines", "8mines"};
+    private Gtk.Image scaling_image;
 
     public int row
     {
@@ -111,13 +116,19 @@ private class Tile : Gtk.Button
     {
         _row = prow;
         _column = pcol;
+        scaling_image = new Gtk.Image ();
         can_focus = false;
         add_class ("tile");
+        set_image (scaling_image);
         enter_notify_event.connect ( (event) =>
         {
             tile_mouse_over (prow, pcol);
             return false;
         } );
+        size_allocate.connect ( (allocation) =>
+        {
+            scaling_image.set_pixel_size (allocation.height/3*2);
+        } );
         button_press_event.connect ( (event) =>
         {
             tile_pressed (prow, pcol, event);
@@ -133,11 +144,19 @@ private class Tile : Gtk.Button
     public void add_class (string style_class)
     {
         get_style_context ().add_class (style_class);
+        if (style_class in IMAGE_CLASSES) {
+            scaling_image.set_from_icon_name (style_class, Gtk.IconSize.DND);
+            scaling_image.set_pixel_size (get_allocated_height()/3*2);
+        }
     }
 
     public void remove_class (string style_class)
     {
         get_style_context ().remove_class (style_class);
+        if (style_class in IMAGE_CLASSES) {
+            scaling_image = new Gtk.Image ();
+            set_image (scaling_image);
+        }
     }
 }
 
@@ -429,7 +448,9 @@ public class MinefieldView : Gtk.Grid
                 mines[x,y].remove_class ("maybe");
                 mines[x,y].remove_class ("flag");
                 mines[x,y].add_class ("count");
-                mines[x,y].add_class ("mines%u".printf (n));
+                if (n > 0) {
+                    mines[x,y].add_class ("%umines".printf (n));
+                }
             }
         }
         else


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]