Browse Source

move symbol PNG generation to a script

git-svn-id: https://svn.osgeo.org/grass/grass/trunk@70137 15284696-431f-4ddb-bdfa-cd5b030d7da7
Vaclav Petras 8 năm trước cách đây
mục cha
commit
6a8c27e2b8
2 tập tin đã thay đổi với 63 bổ sung31 xóa
  1. 11 31
      gui/images/symbols/README
  2. 52 0
      tools/symbol_to_img.sh

+ 11 - 31
gui/images/symbols/README

@@ -1,39 +1,19 @@
 Symbols in form of PNG images enable to choose easily symbols in d.vect
-and in wx.psmap dialogs. It is necessary to keep images synchronized with
-symbols from ./lib/symbol/symbol/ directories.
+and in g.gui.psmap dialogs. It is necessary to keep images synchronized
+with symbols from ./lib/symbol/symbol/ directories.
 
-How to create new symbol image:
-----------------------------------
-You can use following script (requires Inkscape), run script in symbol group
-directory (e.g. ./lib/symbol/symbol/basic) within a GRASS session.
-Optipng will try to make the file as small as possible.
+How to create new symbol image
+------------------------------
 
-#!/bin/sh
-DIR="$(basename $PWD)"
-PSMAP_FILE=tmp.psmap
-PS_FILE=tmp.ps
-PNG_OUT=png_out
+You can use following script (see its code for runtime requirements),
+run script in symbol group directory (e.g. ./lib/symbol/symbol/basic)
+within a GRASS session. ImageMagic should take care of compressing the
+image as much as possible.
 
-rm -r "$PNG_OUT"
-mkdir "$PNG_OUT"
-for SYMBOL in *
-do
-    if [ -f "$SYMBOL" ]
-    then
-        echo -e "border none\npoint 50% 50%\n  symbol $DIR/$SYMBOL\n  end\nend" > "$PSMAP_FILE"
-        ps.map input="$PSMAP_FILE" output="$PS_FILE"
-        inkscape -f "$PS_FILE" --export-png="$PNG_OUT/$SYMBOL.png" -D -h=30
-        
-        rm "$PSMAP_FILE" "$PS_FILE"
-
-        #optipng -o5 "$PNG_OUT/$SYMBOL.png"
-    else
-        echo "$SYMBOL is not regular file"
-    fi
-done
+    tools/symbol_to_img.sh
 
 Image should have 30x30 px to be displayed correctly in GUI dialog. If the symbol
 has different width and height, you are supposed to correct it (for example
 in Gimp see Image -> Canvas size). Also consider where the reference point of symbol
-is placed (see e.g. offbox_ne, offbox_ns symbols).
-
+is placed (see e.g. offbox_ne, offbox_ns symbols). If you don't do that
+it will be badly displayed in the GUI.

+ 52 - 0
tools/symbol_to_img.sh

@@ -0,0 +1,52 @@
+#!/bin/bash
+
+############################################################################
+#
+# MODULE:       symbol_to_img.sh
+# AUTHOR(S):    Anna Petrasova, Hamish Bowman, Vaclav Petras
+# PURPOSE:      Renders the GRASS GIS symbols from dir to a dir of PNGs
+# COPYRIGHT:    (C) 2012-2016 by Anna Petrasova
+#               and the GRASS Development Team
+#
+#               This program is free software under the GNU General
+#               Public License (>=v2). Read the file COPYING that
+#               comes with GRASS for details.
+#
+#############################################################################
+
+# generates images for gui/images/symbols
+# requires ps.map, Inkscape, and ImageMagic
+
+DIR="$(basename $PWD)"
+PSMAP_FILE=tmp.psmap
+PS_FILE=tmp.ps
+PNG_OUT=png_out
+POINT_VECTOR=tmp_one_point
+
+v.in.ascii input=- format=standard -n output=$POINT_VECTOR <<EOF
+P 1 1
+ 100 100
+ 1 1
+EOF
+
+rm -r "$PNG_OUT"
+mkdir "$PNG_OUT"
+
+for SYMBOL in *
+do
+    if [ -f "$SYMBOL" ]
+    then
+        echo -e "border none\npoint 50% 50%\n  symbol $DIR/$SYMBOL\n  end\nend" > "$PSMAP_FILE"
+        ps.map input="$PSMAP_FILE" output="$PS_FILE"
+        inkscape -f "$PS_FILE" --export-png="$PNG_OUT/$SYMBOL.png" -D -h=30
+        
+        rm "$PSMAP_FILE" "$PS_FILE"
+
+        # ImageMagic optimizes PNGs, no optipng needed
+        mogrify -gravity center -background transparent -resize 30x30 -extent 30x30 "$PNG_OUT/$SYMBOL.png"
+    else
+        echo "$SYMBOL is not regular file"
+    fi
+done
+
+g.remove type=vector name=$POINT_VECTOR -f