[GRASS-SVN] r69085 - in grass/trunk: display/d.mon display/d.vect gui/images gui/images/symbols gui/images/symbols/legend gui/wxpython/core gui/wxpython/gui_core gui/wxpython/lmgr gui/wxpython/mapdisp gui/wxpython/mapwin lib/symbol lib/symbol/symbol lib/symbol/symbol/legend
svn_grass at osgeo.org
svn_grass at osgeo.org
Thu Aug 4 18:38:54 PDT 2016
Author: annakrat
Date: 2016-08-04 18:38:54 -0700 (Thu, 04 Aug 2016)
New Revision: 69085
Added:
grass/trunk/gui/images/symbols/legend/
grass/trunk/gui/images/symbols/legend/area.png
grass/trunk/gui/images/symbols/legend/area_curved.png
grass/trunk/gui/images/symbols/legend/line.png
grass/trunk/gui/images/symbols/legend/line_crooked.png
grass/trunk/lib/symbol/symbol/legend/
grass/trunk/lib/symbol/symbol/legend/area
grass/trunk/lib/symbol/symbol/legend/area_curved
grass/trunk/lib/symbol/symbol/legend/line
grass/trunk/lib/symbol/symbol/legend/line_crooked
Modified:
grass/trunk/display/d.mon/render_cmd.py
grass/trunk/display/d.mon/start.c
grass/trunk/display/d.vect/main.c
grass/trunk/gui/images/Makefile
grass/trunk/gui/wxpython/core/render.py
grass/trunk/gui/wxpython/core/utils.py
grass/trunk/gui/wxpython/gui_core/forms.py
grass/trunk/gui/wxpython/lmgr/frame.py
grass/trunk/gui/wxpython/mapdisp/frame.py
grass/trunk/gui/wxpython/mapdisp/toolbars.py
grass/trunk/gui/wxpython/mapwin/decorations.py
grass/trunk/lib/symbol/Makefile
Log:
wxGUI: initial vector legend support, currently needs d.legend.vect addon, author Adam Laza
Modified: grass/trunk/display/d.mon/render_cmd.py
===================================================================
--- grass/trunk/display/d.mon/render_cmd.py 2016-08-04 20:28:44 UTC (rev 69084)
+++ grass/trunk/display/d.mon/render_cmd.py 2016-08-05 01:38:54 UTC (rev 69085)
@@ -8,7 +8,7 @@
# read environment variables from file
def read_env_file(env_file):
- width = height = None
+ width = height = legfile = None
fd = open(env_file, 'r')
if fd is None:
grass.fatal("Unable to open file '{}'".format(env_file))
@@ -22,16 +22,19 @@
width = int(v)
if height is None and k == 'GRASS_RENDER_HEIGHT':
height = int(v)
+ if legfile is None and k == 'GRASS_LEGEND_FILE':
+ legfile = v
fd.close()
if width is None or height is None:
grass.fatal("Unknown monitor size")
- return width, height
+ return width, height, legfile
# run display command
def render(cmd, mapfile):
env = os.environ.copy()
+
if mapfile:
env['GRASS_RENDER_FILE'] = mapfile
try:
@@ -101,7 +104,7 @@
path = os.path.dirname(os.path.abspath(__file__))
mon = os.path.split(path)[-1]
- width, height = read_env_file(os.path.join(path, 'env'))
+ width, height, legfile = read_env_file(os.path.join(path, 'env'))
if mon.startswith('wx'):
mapfile = tempfile.NamedTemporaryFile(dir=path).name
if cmd[0] in ('d.barscale', 'd.legend', 'd.northarrow'):
@@ -114,5 +117,8 @@
render(cmd, mapfile)
update_cmd_file(os.path.join(path, 'cmd'), cmd, mapfile)
+ if cmd[0] == 'd.erase':
+ os.remove(legfile)
+
sys.exit(0)
Modified: grass/trunk/display/d.mon/start.c
===================================================================
--- grass/trunk/display/d.mon/start.c 2016-08-04 20:28:44 UTC (rev 69084)
+++ grass/trunk/display/d.mon/start.c 2016-08-05 01:38:54 UTC (rev 69085)
@@ -133,7 +133,7 @@
int truecolor, int x_only, int update)
{
char *mon_path;
- char *out_file, *env_file, *cmd_file;
+ char *out_file, *env_file, *cmd_file, *leg_file;
char buf[1024];
char file_path[GPATH_MAX], render_cmd_path[GPATH_MAX];
int fd;
@@ -158,6 +158,8 @@
env_file = G_store(file_path);
G_file_name(file_path, mon_path, "cmd", G_mapset());
cmd_file = G_store(file_path);
+ G_file_name(file_path, mon_path, "leg", G_mapset());
+ leg_file = G_store(file_path);
/* create py file (renderer) */
sprintf(render_cmd_path, "%s/etc/d.mon/render_cmd.py", getenv("GISBASE"));
@@ -199,6 +201,10 @@
write(fd, buf, strlen(buf));
sprintf(buf, "GRASS_RENDER_HEIGHT=%d\n", height);
write(fd, buf, strlen(buf));
+ sprintf(buf, "GRASS_LEGEND_FILE=%s\n", leg_file);
+ write(fd, buf, strlen(buf));
+
+
if (bgcolor) {
if (strcmp(bgcolor, "none") == 0)
sprintf(buf, "GRASS_RENDER_TRANSPARENT=TRUE\n");
Modified: grass/trunk/display/d.vect/main.c
===================================================================
--- grass/trunk/display/d.vect/main.c 2016-08-04 20:28:44 UTC (rev 69084)
+++ grass/trunk/display/d.vect/main.c 2016-08-05 01:38:54 UTC (rev 69085)
@@ -4,6 +4,7 @@
* MODULE: d.vect
* AUTHOR(S): CERL, Radim Blazek, others
* Updated to GRASS7 by Martin Landa <landa.martin gmail.com>
+ * Support for vector legend by Adam Laza <ad.laza32 gmail.com >
* PURPOSE: Display the vector map in map display
* COPYRIGHT: (C) 2004-2014 by the GRASS Development Team
*
@@ -52,8 +53,11 @@
struct Option *lsize_opt, *font_opt, *enc_opt, *xref_opt, *yref_opt;
struct Option *attrcol_opt, *maxreg_opt, *minreg_opt;
struct Option *width_opt, *wcolumn_opt, *wscale_opt;
+ struct Option *leglab_opt;
+ struct Option *icon_line_opt, *icon_area_opt;
struct Flag *id_flag, *cats_acolors_flag, *sqrt_flag;
char *desc;
+ char *leg_file;
struct cat_list *Clist;
LATTR lattr;
@@ -61,7 +65,10 @@
struct Cell_head window;
struct bound_box box;
double overlap;
+ int gv_point, gv_line, gv_boundary, gv_centroid;
+ FILE *fd;
+
stat = 0;
/* Initialize the GIS calls */
G_gisinit(argv[0]);
@@ -189,6 +196,32 @@
rotcolumn_opt->description =
_("Measured in degrees CCW from east");
+ icon_area_opt = G_define_option();
+ icon_area_opt->key = "icon_area";
+ icon_area_opt->type = TYPE_STRING;
+ icon_area_opt->required = NO;
+ icon_area_opt->multiple = NO;
+ icon_area_opt->guisection = _("Legend");
+ icon_area_opt->answer = "legend/area";
+ icon_area_opt->options = icon_files();
+ icon_area_opt->description = _("Area/boundary symbol for legend");
+
+ icon_line_opt = G_define_option();
+ icon_line_opt->key = "icon_line";
+ icon_line_opt->type = TYPE_STRING;
+ icon_line_opt->required = NO;
+ icon_line_opt->multiple = NO;
+ icon_line_opt->guisection = _("Legend");
+ icon_line_opt->answer = "legend/line";
+ icon_line_opt->options = icon_files();
+ icon_line_opt->description = _("Line symbol for legend");
+
+ leglab_opt = G_define_option();
+ leglab_opt->key = "legend_label";
+ leglab_opt->type = TYPE_STRING;
+ leglab_opt->guisection = _("Legend");
+ leglab_opt->description = _("Label to display after symbol in vector legend");
+
/* Labels */
lfield_opt = G_define_standard_option(G_OPT_V_FIELD);
lfield_opt->key = "label_layer";
@@ -424,6 +457,85 @@
stat += display_dir(&Map, type, Clist, chcat, size);
}
+ /* Write into legend file */
+ leg_file = getenv("GRASS_LEGEND_FILE");
+ if (leg_file) {
+ fd = fopen(leg_file, "a");
+
+ /* Point */
+ if (strstr(type_opt->answer, "point") != NULL){
+ gv_point = Vect_get_num_primitives(&Map, GV_POINT);
+ if (gv_point > 0) {
+ if (leglab_opt->answer)
+ fprintf(fd, "%s|", leglab_opt->answer);
+ else {
+ char map[128];
+ char *ptr;
+ strcpy(map, map_opt->answer);
+ strtok_r(map, "@", &ptr);
+ fprintf(fd, "%s|", map);
+ }
+ fprintf(fd, "%s|%s|%s|%s|%s", icon_opt->answer, size_opt->answer, color_opt->answer, fcolor_opt->answer, width_opt->answer);
+ fprintf(fd, "|%s|%d\n", "point", gv_point);
+ }
+ }
+
+ /* Line */
+ if (strstr(type_opt->answer, "line") != NULL){
+ gv_line = Vect_get_num_primitives(&Map, GV_LINE);
+ if (gv_line > 0){
+ if (leglab_opt->answer)
+ fprintf(fd, "%s|", leglab_opt->answer);
+ else {
+ char map[128];
+ char *ptr;
+ strcpy(map, map_opt->answer);
+ strtok_r(map, "@", &ptr);
+ fprintf(fd, "%s|", map);
+ }
+ fprintf(fd, "%s|%s|%s|%s|%s", icon_line_opt->answer, size_opt->answer, color_opt->answer, fcolor_opt->answer, width_opt->answer);
+ fprintf(fd, "|%s|%d\n", "line", gv_line);
+ }
+ }
+
+ /* Area */
+ if (strstr(type_opt->answer, "area") != NULL){
+ gv_boundary = Vect_get_num_primitives(&Map, GV_BOUNDARY);
+ if (gv_boundary > 0) {
+ if (leglab_opt->answer)
+ fprintf(fd, "%s|", leglab_opt->answer);
+ else {
+ char map[128];
+ char *ptr;
+ strcpy(map, map_opt->answer);
+ strtok_r(map, "@", &ptr);
+ fprintf(fd, "%s|", map);
+ }
+ fprintf(fd, "%s|%s|%s|%s|%s", icon_area_opt->answer, size_opt->answer, color_opt->answer, fcolor_opt->answer, width_opt->answer);
+ fprintf(fd, "|%s|%d\n", "area", gv_boundary);
+ }
+ }
+ /* Centroid */
+ if (strstr(type_opt->answer, "centroid") != NULL){
+ gv_centroid = Vect_get_num_primitives(&Map, GV_CENTROID);
+ if (gv_centroid > 0) {
+ if (leglab_opt->answer)
+ fprintf(fd, "%s|", leglab_opt->answer);
+ else {
+ char map[128];
+ char *ptr;
+ strcpy(map, map_opt->answer);
+ strtok_r(map, "@", &ptr);
+ fprintf(fd, "%s|", map);
+ }
+ fprintf(fd, "%s|%s|%s|%s|%s", icon_opt->answer, size_opt->answer, color_opt->answer, fcolor_opt->answer, width_opt->answer);
+ fprintf(fd, "|%s|%d\n", "centroid", gv_centroid);
+ }
+ }
+
+ fclose(fd);
+ }
+
/* reset line width: Do we need to get line width from display
* driver (not implemented)? It will help restore previous line
* width (not just 0) determined by another module (e.g.,
Modified: grass/trunk/gui/images/Makefile
===================================================================
--- grass/trunk/gui/images/Makefile 2016-08-04 20:28:44 UTC (rev 69084)
+++ grass/trunk/gui/images/Makefile 2016-08-05 01:38:54 UTC (rev 69085)
@@ -9,7 +9,7 @@
IMGDST := $(patsubst %,$(DSTDIR)/%,$(IMGSRC))
# symbols
-CATEGORIES = basic demo extra geology n_arrows
+CATEGORIES = basic demo extra geology legend n_arrows
SYMSRC := $(foreach dir,$(CATEGORIES),$(wildcard symbols/$(dir)/*.png))
SYMDST := $(patsubst symbols/%,$(DSTDIR)/symbols/%,$(SYMSRC))
Added: grass/trunk/gui/images/symbols/legend/area.png
===================================================================
(Binary files differ)
Property changes on: grass/trunk/gui/images/symbols/legend/area.png
___________________________________________________________________
Added: svn:mime-type
+ image/png
Added: grass/trunk/gui/images/symbols/legend/area_curved.png
===================================================================
(Binary files differ)
Property changes on: grass/trunk/gui/images/symbols/legend/area_curved.png
___________________________________________________________________
Added: svn:mime-type
+ image/png
Added: grass/trunk/gui/images/symbols/legend/line.png
===================================================================
(Binary files differ)
Property changes on: grass/trunk/gui/images/symbols/legend/line.png
___________________________________________________________________
Added: svn:mime-type
+ image/png
Added: grass/trunk/gui/images/symbols/legend/line_crooked.png
===================================================================
(Binary files differ)
Property changes on: grass/trunk/gui/images/symbols/legend/line_crooked.png
___________________________________________________________________
Added: svn:mime-type
+ image/png
Modified: grass/trunk/gui/wxpython/core/render.py
===================================================================
--- grass/trunk/gui/wxpython/core/render.py 2016-08-04 20:28:44 UTC (rev 69084)
+++ grass/trunk/gui/wxpython/core/render.py 2016-08-05 01:38:54 UTC (rev 69085)
@@ -324,6 +324,7 @@
"""Represents map layer in the map canvas
"""
Layer.__init__(self, *args, **kwargs)
+ self.legrow = grass.tempfile(create=True)
def GetMapset(self):
"""Get mapset of map layer
@@ -384,6 +385,10 @@
env_cmd = env.copy()
env_cmd.update(self._render_env)
env_cmd['GRASS_RENDER_FILE'] = self.layer.mapfile
+ if type(self.layer).__name__ == "MapLayer":
+ if os.path.isfile(self.layer.legrow):
+ os.remove(self.layer.legrow)
+ env_cmd['GRASS_LEGEND_FILE'] = self.layer.legrow
cmd_render = copy.deepcopy(cmd)
cmd_render[1]['quiet'] = True # be quiet
@@ -455,7 +460,9 @@
self._render_env = {"GRASS_RENDER_BACKGROUNDCOLOR": "000000",
"GRASS_RENDER_FILE_COMPRESSION": "0",
"GRASS_RENDER_TRUECOLOR": "TRUE",
- "GRASS_RENDER_TRANSPARENT": "TRUE"}
+ "GRASS_RENDER_TRANSPARENT": "TRUE",
+ "GRASS_LEGEND_FILE": self.Map.legfile
+ }
self._init()
self._rendering = False
@@ -516,6 +523,7 @@
env['GRASS_REGION'] = self.Map.SetRegion(windres)
env['GRASS_RENDER_WIDTH'] = str(self.Map.width)
env['GRASS_RENDER_HEIGHT'] = str(self.Map.height)
+
if UserSettings.Get(group='display', key='driver',
subkey='type') == 'png':
env['GRASS_RENDER_IMMEDIATE'] = 'png'
@@ -562,6 +570,7 @@
if self._renderLayers(env, force) == 0:
self.renderDone.emit()
+
def OnRenderDone(self):
"""Rendering process done
@@ -608,6 +617,17 @@
Debug.msg(1, "RenderMapMgr.OnRenderDone() time=%f sec (comp: %f)" %
(stop - self._startTime, stop - startCompTime))
+ # Update legfile
+ with open(self.Map.legfile, "w") as outfile:
+ for layer in reversed(self.layers):
+ if layer.GetType() == 'overlay':
+ continue
+
+ if os.path.isfile(layer.legrow) and layer.legrow[-1].isdigit() \
+ and layer.hidden is False:
+ with open(layer.legrow) as infile:
+ outfile.write(infile.read())
+
self._rendering = False
if wx.IsBusy():
wx.EndBusyCursor()
@@ -704,8 +724,11 @@
self.gisrc = gisrc
# generated file for g.pnmcomp output for rendering the map
+ self.legfile = grass.tempfile(create=False) + '.leg'
+ self.tmpdir = os.path.dirname(self.legfile)
self.mapfile = grass.tempfile(create=False) + '.ppm'
+
# setting some initial env. variables
if not self.GetWindow():
sys.stderr.write(_("Trying to recover from default region..."))
@@ -1276,6 +1299,10 @@
basefile = os.path.join(base, tempbase) + r'.*'
for f in glob.glob(basefile):
os.remove(f)
+
+ if not overlay:
+ os.remove(layer.legrow)
+
list.remove(layer)
self.layerRemoved.emit(layer=layer)
Modified: grass/trunk/gui/wxpython/core/utils.py
===================================================================
--- grass/trunk/gui/wxpython/core/utils.py 2016-08-04 20:28:44 UTC (rev 69084)
+++ grass/trunk/gui/wxpython/core/utils.py 2016-08-05 01:38:54 UTC (rev 69085)
@@ -1022,7 +1022,8 @@
'd.to.rast': 'torast',
'd.text': 'text',
'd.northarrow': 'northarrow',
- 'd.polar': 'polar'
+ 'd.polar': 'polar',
+ 'd.legend.vect': 'vectleg'
}
ltype2command = {}
for (cmd, ltype) in command2ltype.items():
Modified: grass/trunk/gui/wxpython/gui_core/forms.py
===================================================================
--- grass/trunk/gui/wxpython/gui_core/forms.py 2016-08-04 20:28:44 UTC (rev 69084)
+++ grass/trunk/gui/wxpython/gui_core/forms.py 2016-08-05 01:38:54 UTC (rev 69085)
@@ -873,7 +873,7 @@
'MapWindow'):
# display decorations and
# pressing OK or cancel after setting layer properties
- if self.task.name in ['d.barscale', 'd.legend', 'd.northarrow', 'd.histogram', 'd.text'] \
+ if self.task.name in ['d.barscale', 'd.legend', 'd.northarrow', 'd.histogram', 'd.text', 'd.legend.vect'] \
or len(self.parent.GetLayerInfo(self.layer, key='cmd')) >= 1:
self.Hide()
# canceled layer with nothing set
@@ -1230,7 +1230,7 @@
title_txt.SetLabel(title + ':')
value = self._getValue(p)
- if p['name'] == 'icon': # symbols
+ if p['name'] in ('icon', 'icon_area', 'icon_line'): # symbols
bitmap = wx.Bitmap(
os.path.join(
globalvar.SYMBDIR,
Modified: grass/trunk/gui/wxpython/lmgr/frame.py
===================================================================
--- grass/trunk/gui/wxpython/lmgr/frame.py 2016-08-04 20:28:44 UTC (rev 69084)
+++ grass/trunk/gui/wxpython/lmgr/frame.py 2016-08-05 01:38:54 UTC (rev 69085)
@@ -757,6 +757,11 @@
self.GetMapDisplay().AddLegend(cmd=command)
else:
self.GetMapDisplay().AddLegend()
+ elif layertype == 'vectleg':
+ if len(command) > 1:
+ self.GetMapDisplay().AddLegendVect(cmd=command, showDialog=False)
+ else:
+ self.GetMapDisplay().AddLegendVect(showDialog=True)
elif layertype == 'northarrow':
if len(command) > 1:
self.GetMapDisplay().AddArrow(cmd=command)
@@ -1485,6 +1490,8 @@
# overlay["cmd"][0] name of command e.g. d.barscale, d.legend
# overlay["cmd"][1:] parameters and flags
if overlay['display'] == i:
+ if overlay['cmd'][0] == "d.legend.vect":
+ mapdisplay[i].AddLegendVect(overlay['cmd'])
if overlay['cmd'][0] == "d.legend":
mapdisplay[i].AddLegend(overlay['cmd'])
if overlay['cmd'][0] == "d.barscale":
Modified: grass/trunk/gui/wxpython/mapdisp/frame.py
===================================================================
--- grass/trunk/gui/wxpython/mapdisp/frame.py 2016-08-04 20:28:44 UTC (rev 69084)
+++ grass/trunk/gui/wxpython/mapdisp/frame.py 2016-08-05 01:38:54 UTC (rev 69085)
@@ -44,7 +44,7 @@
from gui_core.query import QueryDialog, PrepareQueryResults
from mapwin.buffered import BufferedMapWindow
from mapwin.decorations import LegendController, BarscaleController, \
- ArrowController, DtextController
+ ArrowController, DtextController, LegendVectController
from modules.histogram import HistogramFrame
from wxplot.histogram import HistogramPlotFrame
from wxplot.profile import ProfileFrame
@@ -1247,6 +1247,22 @@
self.MapWindow.mouse['use'] = 'pointer'
+ def AddLegendVect(self, cmd=None, showDialog=None):
+ """Handler for legend map decoration menu selection."""
+
+ if cmd:
+ show = False
+ else:
+ show = True
+ cmd = ['d.legend.vect']
+ layers = self._giface.GetLayerList().GetSelectedLayers()
+
+ GUI(parent=self, giface=self._giface, show=show, modal=False).ParseCommand(
+ cmd, completed=(self.GetOptData, None, None))
+
+ self.MapWindow.mouse['use'] = 'pointer'
+
+
def AddArrow(self, cmd=None):
"""Handler for north arrow menu selection."""
if self.IsPaneShown('3d'):
@@ -1303,6 +1319,8 @@
overlay = BarscaleController(self.Map, self._giface)
elif cmd == 'd.legend':
overlay = LegendController(self.Map, self._giface)
+ elif cmd == 'd.legend.vect':
+ overlay = LegendVectController(self.Map, self._giface)
elif cmd == 'd.text':
overlay = DtextController(self.Map, self._giface)
Modified: grass/trunk/gui/wxpython/mapdisp/toolbars.py
===================================================================
--- grass/trunk/gui/wxpython/mapdisp/toolbars.py 2016-08-04 20:28:44 UTC (rev 69084)
+++ grass/trunk/gui/wxpython/mapdisp/toolbars.py 2016-08-05 01:38:54 UTC (rev 69085)
@@ -35,6 +35,8 @@
label=_('Add scale bar')),
'addLegend': MetaIcon(img='legend-add',
label=_('Add legend')),
+ 'addVectorLegend': MetaIcon(img='legend-add',
+ label=_('Add vector legend')),
'addNorthArrow': MetaIcon(img='north-arrow-add',
label=_('Add north arrow')),
'analyze': MetaIcon(img='layer-raster-analyze',
@@ -269,6 +271,8 @@
self._onMenu(
((MapIcons["addLegend"],
lambda evt: self.parent.AddLegend()),
+ (MapIcons["addVectorLegend"],
+ lambda evt: self.parent.AddLegendVect()),
(MapIcons["addBarscale"],
lambda evt: self.parent.AddBarscale()),
(MapIcons["addNorthArrow"],
Modified: grass/trunk/gui/wxpython/mapwin/decorations.py
===================================================================
--- grass/trunk/gui/wxpython/mapwin/decorations.py 2016-08-04 20:28:44 UTC (rev 69084)
+++ grass/trunk/gui/wxpython/mapwin/decorations.py 2016-08-05 01:38:54 UTC (rev 69085)
@@ -236,6 +236,18 @@
self._cmd = ['d.northarrow', self._defaultAt]
+class LegendVectController(OverlayController):
+
+ def __init__(self, renderer, giface):
+ OverlayController.__init__(self, renderer, giface)
+ self._name = 'vectleg'
+ self._removeLabel = _("Remove vector legend")
+ # different from default because the reference point is not in the
+ # middle
+ self._defaultAt = 'at=20.0,80.0'
+ self._cmd = ['d.legend.vect', self._defaultAt]
+
+
class LegendController(OverlayController):
def __init__(self, renderer, giface):
Modified: grass/trunk/lib/symbol/Makefile
===================================================================
--- grass/trunk/lib/symbol/Makefile 2016-08-04 20:28:44 UTC (rev 69084)
+++ grass/trunk/lib/symbol/Makefile 2016-08-05 01:38:54 UTC (rev 69085)
@@ -7,7 +7,7 @@
SYMBOL_SRC := $(wildcard symbol/*/*)
SYMBOL_DST := $(patsubst symbol/%,$(ETC)/symbol/%,$(SYMBOL_SRC))
-SYMBOL_DIRS := $(patsubst %,$(ETC)/symbol/%, demo basic extra geology n_arrows)
+SYMBOL_DIRS := $(patsubst %,$(ETC)/symbol/%, demo basic extra geology legend n_arrows)
default: lib
$(MAKE) $(SYMBOL_DST)
Added: grass/trunk/lib/symbol/symbol/legend/area
===================================================================
--- grass/trunk/lib/symbol/symbol/legend/area (rev 0)
+++ grass/trunk/lib/symbol/symbol/legend/area 2016-08-05 01:38:54 UTC (rev 69085)
@@ -0,0 +1,13 @@
+VERSION 1.0
+BOX -1 -1 1 1
+POLYGON
+ RING
+ LINE
+ -1 -0.75
+ 1 -0.75
+ 1 0.75
+ -1 0.75
+ END
+ END
+END
+
Added: grass/trunk/lib/symbol/symbol/legend/area_curved
===================================================================
--- grass/trunk/lib/symbol/symbol/legend/area_curved (rev 0)
+++ grass/trunk/lib/symbol/symbol/legend/area_curved 2016-08-05 01:38:54 UTC (rev 69085)
@@ -0,0 +1,114 @@
+VERSION 1.0
+BOX -1 -1 1 1
+POLYGON
+ RING
+ LINE
+ -00.030 000.615
+ 000.064 000.656
+ 000.128 000.696
+ 000.200 000.768
+ 000.260 000.813
+ 000.321 000.865
+ 000.375 000.903
+ 000.431 000.917
+ 000.488 000.944
+ 000.547 000.944
+ 000.605 000.913
+ 000.661 000.873
+ 000.721 000.835
+ 000.773 000.770
+ 000.821 000.696
+ 000.872 000.648
+ 000.909 000.561
+ 000.944 000.472
+ 000.978 000.366
+ 000.992 000.261
+ 000.998 000.166
+ 001.000 000.094
+ 001.000 000.013
+ 000.998 -00.071
+ 000.976 -00.148
+ 000.954 -00.223
+ 000.932 -00.297
+ 000.903 -00.376
+ 000.876 -00.454
+ 000.838 -00.527
+ 000.804 -00.595
+ 000.767 -00.660
+ 000.727 -00.726
+ 000.681 -00.801
+ 000.644 -00.854
+ 000.603 -00.903
+ 000.551 -00.946
+ 000.509 -00.976
+ 000.471 -00.996
+ 000.429 -01.000
+ 000.388 -00.998
+ 000.338 -00.996
+ 000.289 -00.964
+ 000.249 -00.923
+ 000.204 -00.875
+ 000.163 -00.825
+ 000.126 -00.748
+ 000.074 -00.670
+ 000.038 -00.601
+ -00.008 -00.539
+ -00.051 -00.486
+ -00.095 -00.462
+ -00.144 -00.446
+ -00.194 -00.428
+ -00.242 -00.428
+ -00.286 -00.430
+ -00.337 -00.432
+ -00.377 -00.448
+ -00.420 -00.466
+ -00.461 -00.478
+ -00.509 -00.480
+ -00.552 -00.480
+ -00.595 -00.488
+ -00.642 -00.496
+ -00.687 -00.498
+ -00.731 -00.498
+ -00.779 -00.488
+ -00.822 -00.462
+ -00.864 -00.450
+ -00.925 -00.416
+ -00.953 -00.347
+ -00.984 -00.267
+ -00.995 -00.196
+ -01.000 -00.108
+ -01.000 -00.013
+ -01.000 000.078
+ -00.985 000.182
+ -00.972 000.273
+ -00.958 000.357
+ -00.941 000.431
+ -00.912 000.519
+ -00.892 000.599
+ -00.878 000.670
+ -00.852 000.728
+ -00.834 000.778
+ -00.800 000.839
+ -00.773 000.889
+ -00.739 000.942
+ -00.703 000.976
+ -00.667 000.994
+ -00.624 001.000
+ -00.586 000.992
+ -00.541 000.980
+ -00.495 000.956
+ -00.445 000.942
+ -00.403 000.919
+ -00.365 000.881
+ -00.332 000.835
+ -00.289 000.797
+ -00.239 000.760
+ -00.200 000.720
+ -00.157 000.672
+ -00.115 000.629
+ -00.075 000.617
+ 000.023 000.629
+ END
+ END
+END
+
Added: grass/trunk/lib/symbol/symbol/legend/line
===================================================================
--- grass/trunk/lib/symbol/symbol/legend/line (rev 0)
+++ grass/trunk/lib/symbol/symbol/legend/line 2016-08-05 01:38:54 UTC (rev 69085)
@@ -0,0 +1,8 @@
+VERSION 1.0
+BOX -1 -1 1 1
+STRING
+ LINE
+ -1 0
+ 1 0
+ END
+END
Added: grass/trunk/lib/symbol/symbol/legend/line_crooked
===================================================================
--- grass/trunk/lib/symbol/symbol/legend/line_crooked (rev 0)
+++ grass/trunk/lib/symbol/symbol/legend/line_crooked 2016-08-05 01:38:54 UTC (rev 69085)
@@ -0,0 +1,13 @@
+VERSION 1.0
+BOX -1 -1 1 1
+STRING
+ LINE
+ -1 -0.33
+ -0.33 0.33
+ 0.33 -0.33
+ 1 0.33
+ 0.33 -0.33
+ -0.33 0.33
+ -1 -0.33
+ END
+END
More information about the grass-commit
mailing list