[GRASS-SVN] r57715 - in grass/trunk/display: . d.northarrow

svn_grass at osgeo.org svn_grass at osgeo.org
Mon Sep 16 21:33:28 PDT 2013


Author: hamish
Date: 2013-09-16 21:33:28 -0700 (Mon, 16 Sep 2013)
New Revision: 57715

Added:
   grass/trunk/display/d.northarrow/
   grass/trunk/display/d.northarrow/d.northarrow.html
   grass/trunk/display/d.northarrow/main.c
Removed:
   grass/trunk/display/d.northarrow/d.barscale.html
   grass/trunk/display/d.northarrow/draw_scale.c
   grass/trunk/display/d.northarrow/main.c
Modified:
   grass/trunk/display/Makefile
   grass/trunk/display/d.northarrow/Makefile
   grass/trunk/display/d.northarrow/options.h
Log:
move north arrow code from d.barscale into its own module

Modified: grass/trunk/display/Makefile
===================================================================
--- grass/trunk/display/Makefile	2013-09-17 02:07:28 UTC (rev 57714)
+++ grass/trunk/display/Makefile	2013-09-17 04:33:28 UTC (rev 57715)
@@ -20,6 +20,7 @@
 	d.legend \
 	d.linegraph \
 	d.mon \
+	d.northarrow \
 	d.path \
 	d.profile \
 	d.rast \

Modified: grass/trunk/display/d.northarrow/Makefile
===================================================================
--- grass/trunk/display/d.barscale/Makefile	2013-09-16 21:33:57 UTC (rev 57710)
+++ grass/trunk/display/d.northarrow/Makefile	2013-09-17 04:33:28 UTC (rev 57715)
@@ -1,6 +1,6 @@
 MODULE_TOPDIR = ../..
 
-PGM = d.barscale
+PGM = d.northarrow
 
 LIBES = $(DISPLAYLIB) $(SYMBLIB) $(GISLIB)
 DEPENDENCIES = $(DISPLAYDEP) $(SYMBDEP) $(GISDEP)

Deleted: grass/trunk/display/d.northarrow/d.barscale.html
===================================================================
--- grass/trunk/display/d.barscale/d.barscale.html	2013-09-16 21:33:57 UTC (rev 57710)
+++ grass/trunk/display/d.northarrow/d.barscale.html	2013-09-17 04:33:28 UTC (rev 57715)
@@ -1,36 +0,0 @@
-<h2>DESCRIPTION</h2>
- 
-<em>d.barscale</em> displays a barscale on the graphics monitor at the
-given screen coordinates. If no coordinates are given it will draw the
-barscale in the bottom left of the display. It can draw the scale or
-north arrow in a number of styles (see
-the <a href="http://grasswiki.osgeo.org/wiki/Cartography#Display_monitors">wiki
-page</a> for details).
-
-<p>
-If <b>-n</b> flag is given, <em>d.barscale</em> draws north arrow
-instead of the barscale. Style of north arrow can be controlled
-by <b>north_arrow</b> paramater.
-
-<h2>NOTE</h2>
-
-<em>d.barscale</em> will not work in Lat/Lon locations as the horizontal
-scale distance changes with latitude. Try <em><a href="d.grid.html">d.grid</a></em> instead.
-
-
-<h2>SEE ALSO</h2>
-
-<em>
-<a href="d.graph.html">d.graph</a>,
-<a href="d.grid.html">d.grid</a>,
-<a href="d.legend.html">d.legend</a>,
-<a href="g.region.html">g.region</a>
-</em>
-
-<h2>AUTHOR</h2>
-
-unknown, but from USA/CERL.<br>
-Major rewrite for GRASS 7 by Hamish Bowman
-
-<p>
-<i>Last changed: $Date$</i>

Copied: grass/trunk/display/d.northarrow/d.northarrow.html (from rev 57710, grass/trunk/display/d.barscale/d.barscale.html)
===================================================================
--- grass/trunk/display/d.northarrow/d.northarrow.html	                        (rev 0)
+++ grass/trunk/display/d.northarrow/d.northarrow.html	2013-09-17 04:33:28 UTC (rev 57715)
@@ -0,0 +1,29 @@
+<h2>DESCRIPTION</h2>
+ 
+<em>d.northarrow</em> displays a north arrow symbol the graphics monitor at
+the given screen coordinates. If no coordinates are given it will draw the
+barscale in the bottom right of the display. It can draw the north arrow
+in a number of styles (see the
+ <a href="http://grasswiki.osgeo.org/wiki/Cartography#Display_monitors">wiki
+page</a> for details).
+
+
+<h2>SEE ALSO</h2>
+
+<em>
+<a href="d.barscale.html">d.barscale</a>,
+<a href="d.graph.html">d.graph</a>,
+<a href="d.grid.html">d.grid</a>,
+<a href="d.legend.html">d.legend</a>
+</em>
+
+
+<h2>AUTHOR</h2>
+
+Hamish Bowman<br> <i>
+Department of Geology<br>
+University of Otago<br>
+New Zealand</i><br>
+
+<p>
+<i>Last changed: $Date$</i>

Deleted: grass/trunk/display/d.northarrow/draw_scale.c
===================================================================
--- grass/trunk/display/d.barscale/draw_scale.c	2013-09-16 21:33:57 UTC (rev 57710)
+++ grass/trunk/display/d.northarrow/draw_scale.c	2013-09-17 04:33:28 UTC (rev 57715)
@@ -1,628 +0,0 @@
-/*
- * draw_scale() places a scalebar somewhere in the display frame
- */
-
-#include <stdio.h>
-#include <string.h>
-#include <grass/gis.h>
-#include <grass/display.h>
-#include <grass/symbol.h>
-#include <grass/colors.h>
-#include <grass/glocale.h>
-#include "options.h"
-
-#define NUMSCALES	16
-
-/* declare variables */
-static const struct scale
-{
-    char *name;
-    double size;
-    double limit;
-    int seg;
-} all_scales[2][NUMSCALES] = {
-    {
-	/* meters */
-	{"", 0., 2., 10},
-	{"1 meter", 1., 7., 10},
-	{"5 meters", 5., 20., 5},
-	{"10 meters", 10., 70., 10},
-	{"50 meters", 50., 200., 5},
-	{"100 meters", 100., 700., 10},
-	{"500 meters", 500., 2000., 5},
-	{"1 km", 1000., 7000., 10},
-	{"5 km", 5000., 20000., 5},
-	{"10 km", 10000., 70000., 10},
-	{"50 km", 50000., 200000., 5},
-	{"100 km", 100000., 700000., 10},
-	{"500 km", 500000., 2000000., 5},
-	{"1000 km", 1000000., 7000000., 10},
-	{"5000 km", 5000000., 20000000., 5},
-	{"10000 km", 10000000., 70000000., 10}
-    },
-    {   /* feet/miles */
-	{"", 0.000, 1., 10},
-	{"1 foot", 0.305, 2., 10},
-	{"5 feet", 1.524, 10., 5},
-	{"10 feet", 3.048, 20., 10},
-	{"50 feet", 15.240, 100., 5},
-	{"100 feet", 30.480, 200., 10},
-	{"500 feet", 152.400, 1000., 5},
-	{"1000 feet", 304.800, 2000., 10},
-	{"1 mile", 1609.344, 10000., 5},
-	{"5 miles", 8046.720, 20000., 5},
-	{"10 miles", 16093.440, 100000., 10},
-	{"50 miles", 80467.200, 200000., 5},
-	{"100 miles", 160934.400, 1000000., 10},
-	{"500 miles", 804672.000, 2000000., 5},
-	{"1000 miles", 1609344.000, 10000000., 10},
-	{"5000 miles", 8046720.000, 20000000., 5},
-    }
-};
-
-int draw_scale(double east, double north, int style, int text_posn,
-	       double fontsize)
-{
-    double meters;
-    double line_len;
-    int i, incr;
-    double x_pos, y_pos;
-    double t, b, l, r;
-    double pt, pb, pl, pr; /* background box */
-    double tt, tb, tl, tr; /* text box*/
-    double xarr[5], yarr[5];
-    double seg_len;
-    const struct scale *scales = all_scales[use_feet];
-    SYMBOL *Symb;
-    RGBA_Color *line_color, *fill_color;
-    int R, G, B;
-    double x0, y0;
-    double symbol_size;
-
-
-    /* Establish text size */
-    if (fontsize > 0)
-	D_text_size(fontsize, fontsize);
-
-    D_setup_unity(0);
-    D_get_src(&t, &b, &l, &r);
-
-    x_pos = east * (r - l) / 100.;
-    y_pos = (100. - north) * (b - t) / 100.;
-
-
-    D_setup(0); /* back to regular coordinate settings */
-    meters = D_get_u_east() - D_get_u_west();
-    meters *= G_database_units_to_meters_factor();
-
-    /* find the right scale */
-    for (incr = 0; incr < NUMSCALES; incr++) {
-	if (meters <= scales[incr].limit)
-	    break;
-    }
-
-    /* region is too small to draw anything. ever reached? */
-    if (!incr)
-	return -1;
-
-    /* beyond the maximum just make the longest scale narrower */
-    if (incr >= NUMSCALES)
-	incr = NUMSCALES - 1;
-
-    line_len = D_get_u_to_d_xconv() * scales[incr].size
-	/ G_database_units_to_meters_factor();
-
-    seg_len = line_len / scales[incr].seg;
-    /* work around round off */
-    line_len = seg_len * scales[incr].seg;
-
-    D_setup_unity(0);
-
-    if (do_background) {
-	/* Blank out area with background color */
-	D_get_text_box(scales[incr].name, &tt, &tb, &tl, &tr);
-
-	if (text_posn == TEXT_OVER) {
-	    pr = x_pos + 35 + line_len;
-	    pl = x_pos + 0;
-	    pt = y_pos + tb - 5;
-	    pb = y_pos + 30;
-	    if (style != STYLE_CLASSIC_BAR && style != STYLE_THIN_WITH_ENDS)
-		pl += 15;
-	    if (style == STYLE_TICKS_DOWN)
-		pb += 12;
-	}
-	if (text_posn == TEXT_UNDER) {
-	    pr = x_pos + 35 + line_len;
-	    pl = x_pos + 0;
-	    pt = y_pos + 0;
-	    pb = y_pos + 30 - tb + 5;
-	    if (style != STYLE_CLASSIC_BAR && style != STYLE_THIN_WITH_ENDS)
-		pl += 15;
-	    if (style == STYLE_TICKS_UP)
-		pt -= 12;
-	}
-	else if (text_posn == TEXT_RIGHT){
-	    pr = x_pos + 35 + line_len + tr + 5;
-	    pl = x_pos + 0;
-	    pt = y_pos + 0;
-	    pb = y_pos + 30;
-	    if (style == STYLE_TICKS_UP) {
-		pt -= 12;
-		pb -= 6;
-		pl += 15;
-	    }
-	    if (style == STYLE_TICKS_DOWN) {
-		pt += 4;
-		pb += 12;
-		pl += 15;
-	    }
-	}
-	else if (text_posn == TEXT_LEFT) {
-	    pr = x_pos + 35 + line_len;
-	    pl = x_pos - tr - 13;
-	    pt = y_pos + 0;
-	    pb = y_pos + 30;
-	    if (style == STYLE_TICKS_UP) {
-		pt -= 12;
-		pb -= 4;
-	    }
-	    if (style == STYLE_TICKS_DOWN) {
-		pt += 3;
-		pb += 11;
-	    }
-	}
-
-	if (fontsize < 0) {  /* no text */
-	    switch (style) {
-	    case STYLE_CLASSIC_BAR:
-	    case STYLE_THIN_WITH_ENDS:
-		pr = x_pos + 35 + line_len;
-		pl = x_pos + 0;
-		pt = y_pos + 0;
-		pb = y_pos + 30;
-		break;
-	    case STYLE_PART_CHECKER:
-	    case STYLE_FULL_CHECKER:
-	    case STYLE_MIXED_CHECKER:
-	    case STYLE_TAIL_CHECKER:
-	    case STYLE_SOLID_BAR:
-	    case STYLE_HOLLOW_BAR:
-	    case STYLE_TICKS_BOTH:
-	    case STYLE_ARROW_ENDS:
-		pr = x_pos + 35 + line_len;
-		pl = x_pos + 15;
-		pt = y_pos + 0;
-		pb = y_pos + 30;
-		break;
-	    case STYLE_TICKS_UP:
-		pr = x_pos + 35 + line_len;
-		pl = x_pos + 15;
-		pt = y_pos - 12;
-		pb = y_pos + 25;
-		break;
-	    case STYLE_TICKS_DOWN:
-		pr = x_pos + 35 + line_len;
-		pl = x_pos + 15;
-		pt = y_pos + 3;
-		pb = y_pos + 40;
-		break;
-	    default:
-		G_fatal_error(_("Programmer error"));
-	    }
-	}
-
-	/* keep it on the screen */
-	if (pt < t)
-	    pt = t;
-	if (pb > b)
-	    pb = b;
-	if (pl < l)
-	    pl = l;
-	if (pr > r)
-	    pr = r;
-
-	D_use_color(bg_color);
-	D_box_abs(pl, pt, pr, pb);
-    }
-
-    /* Draw the small N with an arrow through it on the left side for the classic barscale styles */
-    D_use_color(fg_color);
-    if (style == STYLE_CLASSIC_BAR || style == STYLE_THIN_WITH_ENDS) {
-	D_begin();
-	D_move_abs(x_pos + 5, y_pos + 20);
-	D_cont_rel(0, -10);
-	D_cont_rel(10, 10);
-	D_cont_rel(0, -10);
-	D_move_rel(-5, 14);
-	D_cont_rel(0, -17);
-	D_cont_rel(-2.5, -0);
-	D_cont_rel(2.5, -4);
-	D_cont_rel(2.5, 4);
-	D_cont_rel(-2.5, -0);
-	D_close();
-	D_end();
-	D_stroke();
-    }
-
-    /* The end points of the center-line are (x_pos + 25, y_pos + 15)
-	and (x_pos + 25 + line_len, y_pos + 15) */
-    if (style == STYLE_CLASSIC_BAR) {
-	D_begin();
-	D_move_abs(x_pos + 25, y_pos + 17);
-	/* actual width is line_len-1+1=line_len and height is 4+1=5 */
-	D_cont_rel(line_len - 1, 0);
-	D_cont_rel(0, -4);
-	D_cont_rel(-line_len + 1, 0);
-	D_cont_rel(0, 4);
-	D_end();
-	D_close();
-	D_stroke();
-
-	for (i = 1; i <= scales[incr].seg; i += 2) {
-	    /* width is seg_len and height is 5 */
-	    D_box_rel(seg_len, -4);
-	    D_pos_rel(seg_len * 2, 0);
-	}
-    }
-    else if (style == STYLE_THIN_WITH_ENDS) {
-	/* draw simple line scale */
-	D_begin();
-	D_move_abs(x_pos + 25, y_pos + 5);
-	D_cont_abs(x_pos + 25, y_pos + 25);
-	D_move_abs(x_pos + 25, y_pos + 15);
-	D_cont_abs(x_pos + 25 + line_len, y_pos + 15);
-	D_move_abs(x_pos + 25 + line_len, y_pos + 5);
-	D_cont_abs(x_pos + 25 + line_len, y_pos + 25);
-	D_close();
-	D_end();  /* no-op? */
-    }
-    else if (style == STYLE_SOLID_BAR) {
-	/* draw simple solid-bar scale */
-	xarr[0] = 0;
-	yarr[0] = +8;
-	xarr[1] = line_len;
-	yarr[1] = 0;
-	xarr[2] = 0;
-	yarr[2] = -8;
-	xarr[3] = -line_len;
-	yarr[3] = 0;
-	xarr[4] = 0;
-	yarr[4] = +8;
-
-	D_move_abs(x_pos + 25, y_pos + 15 - 4);
-	D_polygon_rel(xarr, yarr, 5);
-    }
-    else if (style == STYLE_HOLLOW_BAR) {
-	/* draw hollow-bar scale */
-	D_use_color(fg_color);
-	D_begin();
-	D_move_abs(x_pos + 25, y_pos + 15 - 4);
-	D_cont_rel(0, +8);
-	D_cont_rel(line_len, 0);
-	D_cont_rel(0, -8);
-	D_cont_rel(-line_len, 0);
-	D_cont_rel(0, +8);
-	D_close();
-	D_end();  /* no-op? */
-    }
-    else if (style == STYLE_FULL_CHECKER) {
-	D_begin();
-	D_move_abs(x_pos + 25, y_pos + 15 + 6);
-	/* actual width is line_len-1+1=line_len and height is 7+1=8 */
-	D_cont_rel(line_len, 0);
-	D_cont_rel(0, -12);
-	D_cont_rel(-line_len, 0);
-	D_cont_rel(0, +12);
-	D_close();
-	D_end();  /* no-op? */
-	D_stroke();
-
-	D_pos_rel(0, -6);
-	for (i = 1; i <= scales[incr].seg; i++) {
-	    xarr[0] = 0;		yarr[0] = 0;
-	    xarr[1] = seg_len;	yarr[1] = 0;
-	    xarr[2] = 0;		yarr[2] = (i % 2 ? -6 : 6);
-	    xarr[3] = -seg_len;	yarr[3] = 0;
-	    xarr[4] = 0;		yarr[4] = (i % 2 ? 6 : -6);
-	    /* width is seg_len and height is 6 */
-	    D_polygon_rel(xarr, yarr, 5);
-	    D_pos_rel(seg_len, 0);
-	}
-    }
-    else if (style == STYLE_PART_CHECKER) {
-	D_begin();
-	D_move_abs(x_pos + 25, y_pos + 15 + 6);
-	/* actual width is line_len-1+1=line_len and height is 7+1=8 */
-	D_cont_rel(line_len, 0);
-	D_cont_rel(0, -12);
-	D_cont_rel(-line_len, 0);
-	D_cont_rel(0, +12);
-	D_close();
-	D_end();  /* no-op? */
-	D_stroke();
-
-	D_pos_rel(0, -6);
-	for (i = 1; i <= scales[incr].seg; i++) {
-	    if (i <= (scales[incr].seg == 5 ? 2 : 4)) {
-		xarr[0] = 0;		yarr[0] = 0;
-		xarr[1] = seg_len/2.;	yarr[1] = 0;
-		xarr[2] = 0;		yarr[2] = -6;
-		xarr[3] = -seg_len/2.;	yarr[3] = 0;
-		xarr[4] = 0;		yarr[4] = 6;
-		D_polygon_rel(xarr, yarr, 5);
-		D_pos_rel(seg_len/2., 0);
-
-		xarr[0] = 0;		yarr[0] = 0;
-		xarr[1] = seg_len/2.;	yarr[1] = 0;
-		xarr[2] = 0;		yarr[2] = 6;
-		xarr[3] = -seg_len/2.;	yarr[3] = 0;
-		xarr[4] = 0;		yarr[4] = -6;
-		D_polygon_rel(xarr, yarr, 5);
-		D_pos_rel(seg_len/2., 0);
-	    }
-	    else {
-		xarr[0] = 0;	    yarr[0] = 0;
-		xarr[1] = seg_len;  yarr[1] = 0;
-		xarr[2] = 0;	    yarr[2] = (i % 2 ? -6 : 6);
-		xarr[3] = -seg_len; yarr[3] = 0;
-		xarr[4] = 0;	    yarr[4] = (i % 2 ? 6 : -6);
-		/* width is seg_len and height is 6 */
-		D_polygon_rel(xarr, yarr, 5);
-		D_pos_rel(seg_len, 0);
-	    }
-	}
-    }
-    else if (style == STYLE_MIXED_CHECKER) {
-	D_begin();
-	D_move_abs(x_pos + 25, y_pos + 15 + 6);
-	/* actual width is line_len-1+1=line_len and height is 7+1=8 */
-	D_cont_rel(line_len, 0);
-	D_cont_rel(0, -12);
-	D_cont_rel(-line_len, 0);
-	D_cont_rel(0, +12);
-
-	/* horizontal line across the middle to separate white from white */
-	D_move_abs(x_pos + 25, y_pos + 15);
-	D_cont_rel(line_len, 0);
-	D_end();  /* no-op? */
-	D_close();
-	D_stroke();
-
-	D_move_abs(x_pos + 25, y_pos + 15);
-
-	for (i = 1; i <= scales[incr].seg; i++) {
-	    if (i <= (scales[incr].seg == 5 ? 2 : 6)) {
-		if (i % 2 == 0) {
-		    xarr[0] = 0;	yarr[0] = 0;
-		    xarr[1] = seg_len;	yarr[1] = 0;
-		    xarr[2] = 0;	yarr[2] = -6;
-		    xarr[3] = -seg_len; yarr[3] = 0;
-		    xarr[4] = 0;	yarr[4] = +6;
-		    D_polygon_rel(xarr, yarr, 5);
-		}
-
-		xarr[0] = 0;		yarr[0] = 0;
-		xarr[1] = seg_len/2.;	yarr[1] = 0;
-		xarr[2] = 0;		yarr[2] = +6;
-		xarr[3] = -seg_len/2.;	yarr[3] = 0;
-		xarr[4] = 0;		yarr[4] = -6;
-		D_pos_rel(seg_len/2., 0);
-		D_polygon_rel(xarr, yarr, 5);
-		D_pos_rel(seg_len/2., 0);
-	    }
-	    else {
-		xarr[0] = 0;	    yarr[0] = 0;
-		xarr[1] = seg_len;  yarr[1] = 0;
-		xarr[2] = 0;	    yarr[2] = (i % 2 ? 6 : +6);
-		xarr[3] = -seg_len; yarr[3] = 0;
-		xarr[4] = 0;	    yarr[4] = (i % 2 ? -6 : 6);
-		/* width is seg_len and height is 6 */
-		D_polygon_rel(xarr, yarr, 5);
-		D_pos_rel(seg_len, -6);
-	    }
-	}
-    }
-    else if (style == STYLE_TAIL_CHECKER) {
-	/* first draw outside box */
-	D_begin();
-	D_move_abs(x_pos + 25, y_pos + 15 + 6);
-	D_cont_rel(line_len, 0);
-	D_cont_rel(0, -12);
-	D_cont_rel(-line_len, 0);
-	D_cont_rel(0, +12);
-	D_close();
-	D_end();  /* no-op? */
-	D_stroke();
-
-	D_pos_rel(0, -6);
-	for (i = 1; i <= (scales[incr].seg == 5 ? 3 : 5); i++) {
-	    /* width is seg_len and height is 6 */
-	    xarr[0] = 0;	yarr[0] = 0;
-	    xarr[1] = seg_len;  yarr[1] = 0;
-	    xarr[2] = 0;	yarr[2] = (i % 2 ? -6 : 6);
-	    xarr[3] = -seg_len; yarr[3] = 0;
-	    xarr[4] = 0;	yarr[4] = (i % 2 ? 6 : -6);
-	    D_polygon_rel(xarr, yarr, 5);
-	    D_pos_rel(seg_len, 0);
-	}
-	/* draw a vertical cross line */
-	D_begin();
-	D_move_rel(0, 6);
-	D_cont_rel(0, -12);
-	D_close();
-	D_end();  /* no-op? */
-	D_stroke();
-
-	D_pos_rel(0, 6);
-	xarr[0] = 0;
-	yarr[0] = 0;
-	xarr[1] = line_len/2.;
-	if (scales[incr].seg == 5)
-	    xarr[1] -= seg_len/2.;
-	yarr[1] = 0;
-	xarr[2] = 0;
-	yarr[2] = 6;
-	xarr[3] = -line_len/2.;
-	if (scales[incr].seg == 5)
-	    xarr[3] += seg_len/2.;
-	yarr[3] = 0;
-	xarr[4] = 0;
-	yarr[4] = -6;
-	D_polygon_rel(xarr, yarr, 5);
-	D_pos_rel(seg_len, 0);
-    }
-    else if (style == STYLE_TICKS_BOTH) {
-	/* draw simple line scale with corssing ticks */
-	D_begin();
-	D_move_abs(x_pos + 25, y_pos + 5);
-	D_cont_abs(x_pos + 25, y_pos + 25);
-	D_move_abs(x_pos + 25, y_pos + 15);
-	D_cont_abs(x_pos + 25 + line_len, y_pos + 15);
-	D_move_abs(x_pos + 25 + line_len, y_pos + 5);
-	D_cont_abs(x_pos + 25 + line_len, y_pos + 25);
-
-	D_move_abs(x_pos + 25, y_pos + 15);
-	D_move_rel(0, +6);
-	for (i = 0; i <= scales[incr].seg - 2; i++) {
-	    D_move_rel(seg_len, 0);
-	    D_cont_rel(0, -11); /* 5 above, on px on line, and 5 below */
-	    D_move_rel(0, +11);
-	}
-	D_end();  /* no-op? */
-    }
-    else if (style == STYLE_TICKS_UP) {
-	/* draw simple line scale with up facing ticks */
-	D_begin();
-	D_move_abs(x_pos + 25, y_pos - 2);
-	D_cont_abs(x_pos + 25, y_pos + 15);
-	D_cont_abs(x_pos + 25 + line_len, y_pos + 15);
-	D_move_abs(x_pos + 25 + line_len, y_pos - 2);
-	D_cont_abs(x_pos + 25 + line_len, y_pos + 15);
-
-	D_move_abs(x_pos + 25, y_pos + 15);
-	for (i = 0; i <= scales[incr].seg - 2; i++) {
-	    D_move_rel(seg_len, 0);
-	    D_cont_rel(0, -7); /* 5 above, on px on line, and 5 below */
-	    D_move_rel(0, +7);
-	}
-	D_end();  /* no-op? */
-	D_close();
-    }
-    else if (style == STYLE_TICKS_DOWN) {
-	/* draw simple line scale with down facing ticks */
-	D_begin();
-	D_move_abs(x_pos + 25, y_pos + 15 + 17);
-	D_cont_abs(x_pos + 25, y_pos + 15);
-	D_cont_abs(x_pos + 25 + line_len, y_pos + 15);
-	D_move_abs(x_pos + 25 + line_len, y_pos +15 + 17);
-	D_cont_abs(x_pos + 25 + line_len, y_pos + 15);
-
-	D_move_abs(x_pos + 25, y_pos + 15);
-	for (i = 0; i <= scales[incr].seg - 2; i++) {
-	    D_move_rel(seg_len, 0);
-	    D_cont_rel(0, +7); /* 5 above, on px on line, and 5 below */
-	    D_move_rel(0, -7);
-	}
-	D_end();  /* no-op? */
-	D_close();
-    }
-    else if (style == STYLE_ARROW_ENDS) {
-	/* draw line scale with |<--dimension arrows-->| on the ends */
-	D_begin();
-	D_cont_abs(x_pos + 25, y_pos + 15);
-	D_cont_abs(x_pos + 25 + line_len, y_pos + 15);
-	D_end();
-
-	/* display the symbol */
-	line_color = G_malloc(sizeof(RGBA_Color));
-	fill_color = G_malloc(sizeof(RGBA_Color));
-
-	if (D_color_number_to_RGB(fg_color, &R, &G, &B) == 0)
-	    /* fall back to black on failure */
-	    G_str_to_color(DEFAULT_FG_COLOR, &R, &G, &B);
-	line_color->r = (unsigned char)R;
-	line_color->g = (unsigned char)G;
-	line_color->b = (unsigned char)B;
-	line_color->a = RGBA_COLOR_OPAQUE;
-
-	if (D_color_number_to_RGB(fg_color, &R, &G, &B) == 0)
-	    /* fall back to black on failure */
-	    G_str_to_color(DEFAULT_FG_COLOR, &R, &G, &B);
-	fill_color->r = (unsigned char)R;
-	fill_color->g = (unsigned char)G;
-	fill_color->b = (unsigned char)B;
-	fill_color->a = RGBA_COLOR_OPAQUE;
-
-	symbol_size = 12;
-
-	x0 = D_d_to_u_col(x_pos + 25);
-	y0 = D_d_to_u_row(y_pos + 15);
-	Symb = S_read("extra/dim_arrow");
-	if(!Symb)
-	    G_fatal_error(_("Could not read symbol \"%s\""), "extra/dim_arrow");
-	S_stroke(Symb, symbol_size, 0.0, 0);
-	D_symbol(Symb, x0, y0, line_color, fill_color);
-	G_free(Symb);
-
-	x0 = D_d_to_u_col(x_pos + line_len + 25);
-	y0 = D_d_to_u_row(y_pos + 15);
-	Symb = S_read("extra/dim_arrow");
-	S_stroke(Symb, symbol_size, 180., 0);
-	D_symbol(Symb, x0, y0, line_color, fill_color);
-	G_free(Symb);
-
-	G_free(line_color);
-	G_free(fill_color);
-
-	/* draw simple line between the two ends */
-	D_begin();
-	D_move_abs(x_pos + 25, y_pos + 15);
-	D_cont_abs(x_pos + 25 + line_len, y_pos + 15);
-	D_end();  /* no-op? */
-    }
-    D_stroke();
-
-
-    if (fontsize < 0)
-	return 0;
-
-    /* draw the distance + units text */
-    D_get_text_box(scales[incr].name, &tt, &tb, &tl, &tr);
-
-    if (text_posn == TEXT_OVER) {
-	D_pos_abs(x_pos + 25 + line_len / 2.
-		  - strlen(scales[incr].name) * fontsize * 0.81 / 2,
-		  y_pos);
-	D_text(scales[incr].name);
-    }
-    if (text_posn == TEXT_UNDER) {
-	D_pos_abs(x_pos + 25 + line_len / 2.
-		  - strlen(scales[incr].name) * fontsize * 0.81 / 2,
-		  y_pos + 43);
-	D_text(scales[incr].name);
-    }
-    else if (text_posn == TEXT_RIGHT) {
-	if (style == STYLE_TICKS_UP)
-	    y_pos -= 8;
-	else if (style == STYLE_TICKS_DOWN)
-	    y_pos += 9;
-
-	D_pos_abs(x_pos + 35 + line_len, y_pos + 20);
-	D_text(scales[incr].name);
-    }
-    else if (text_posn == TEXT_LEFT) {
-	if (style == STYLE_TICKS_UP)
-	    y_pos -= 8;
-	else if (style == STYLE_TICKS_DOWN)
-	    y_pos += 9;
-
-	if (style == STYLE_CLASSIC_BAR || style == STYLE_THIN_WITH_ENDS)
-	    x_pos -= 13;
-
-	D_pos_abs(x_pos + 5 - (tr - tl), y_pos + 20);
-	D_text(scales[incr].name);
-    }
-
-    return 0;
-}

Deleted: grass/trunk/display/d.northarrow/main.c
===================================================================
--- grass/trunk/display/d.barscale/main.c	2013-09-16 21:33:57 UTC (rev 57710)
+++ grass/trunk/display/d.northarrow/main.c	2013-09-17 04:33:28 UTC (rev 57715)
@@ -1,227 +0,0 @@
-/****************************************************************************
- *
- * MODULE:       d.barscale
- *
- * AUTHOR(S):    unknown but from CERL code (original contributor)
- *               Markus Neteler <neteler itc.it>, 
- *               Bernhard Reiter <bernhard intevation.de>, 
- *               Cedric Shock <cedricgrass shockfamily.net>, 
- *               Huidae Cho <grass4u gmail.com>, 
- *               Eric G. Miller <egm2 jps.net>, 
- *               Glynn Clements <glynn gclements.plus.com>, 
- *               Hamish Bowman <hamish_b yahoo.com>, 
- *               Jan-Oliver Wagner <jan intevation.de>
- *		 Major rewrite for GRASS 7 by Hamish Bowman, June 2013
- *
- * PURPOSE:      Displays a barscale or north arrow on graphics monitor
- *
- * COPYRIGHT:    (C) 1999-2013 by 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.
- *
- *****************************************************************************/
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <string.h>
-#include <grass/gis.h>
-#include <grass/display.h>
-#include <grass/glocale.h>
-#include "options.h"
-
-int fg_color, bg_color;
-int use_feet;
-int do_background = TRUE;
-
-int main(int argc, char **argv)
-{
-    struct GModule *module;
-    struct Option *bg_color_opt, *fg_color_opt, *coords, *fsize,
-		 *barstyle, *text_placement, *n_arrow;
-    struct Flag *feet, *northarrow, *no_text;
-    struct Cell_head W;
-    double east, north;
-    double fontsize;
-    int bar_style, text_position;
-
-    /* Initialize the GIS calls */
-    G_gisinit(argv[0]);
-
-    module = G_define_module();
-    G_add_keyword(_("display"));
-    G_add_keyword(_("cartography"));
-    module->description = _("Displays a barscale or north arrow on the graphics monitor.");
-
-    feet = G_define_flag();
-    feet->key = 'f';
-    feet->description = _("Use feet/miles instead of meters");
-
-    northarrow = G_define_flag();
-    northarrow->key = 'n';
-    northarrow->description = _("Draw a north arrow only");
-    northarrow->guisection = _("Style");
-    
-    no_text = G_define_flag();
-    no_text->key = 't';
-    no_text->description = _("Draw the scale bar without text");
-    no_text->guisection = _("Text");
-
-    barstyle = G_define_option();
-    barstyle->key = "style";
-    barstyle->description = _("Type of barscale to draw");
-    barstyle->options =
-	"classic,line,solid,hollow,full_checker,part_checker,mixed_checker,tail_checker,up_ticks,down_ticks,both_ticks,arrow_ends";
-    barstyle->answer = "classic";
-    barstyle->guisection = _("Style");
-
-    coords = G_define_option();
-    coords->key = "at";
-    coords->key_desc = "x,y";
-    coords->type = TYPE_DOUBLE;
-    coords->answer = "0.0,5.0";
-    coords->options = "0-100";
-    coords->required = YES;
-    coords->label =
-	_("Screen coordinates of the rectangle's top-left corner");
-    coords->description = _("(0,0) is lower-left of display frame");
-
-    fg_color_opt = G_define_standard_option(G_OPT_C_FG);
-    fg_color_opt->label = _("Bar scale, text, and north arrow color");
-    fg_color_opt->guisection = _("Colors");
-
-    bg_color_opt = G_define_standard_option(G_OPT_C_BG);
-    bg_color_opt->label = _("Background color (drawn behind the bar)");
-    bg_color_opt->guisection = _("Colors");
-
-    text_placement = G_define_option();
-    text_placement->key = "text_position";
-    text_placement->description = _("Text position");
-    text_placement->options = "under,over,left,right";
-    text_placement->answer = "right";
-    text_placement->guisection = _("Text");
-
-    fsize = G_define_option();
-    fsize->key = "fontsize";
-    fsize->type = TYPE_DOUBLE;
-    fsize->required = NO;
-    fsize->answer = "12";
-    fsize->options = "1-360";
-    fsize->description = _("Font size");
-    fsize->guisection = _("Text");
-
-    n_arrow = G_define_option();
-    n_arrow->key = "north_arrow";
-    n_arrow->description = _("North arrow style (used only with the -n flag)");
-    n_arrow->options = "1a,1b,2,3,4,5,6,7a,7b,8a,8b,9";
-    n_arrow->answer = "1a";
-    n_arrow->guisection = _("Style");
-
-    if (G_parser(argc, argv))
-	exit(EXIT_FAILURE);
-
-
-    G_get_window(&W);
-    if (W.proj == PROJECTION_LL && !northarrow->answer)
-	G_fatal_error(_("%s does not work with a latitude-longitude location"),
-		      argv[0]);
-
-    use_feet = feet->answer ? TRUE : FALSE;
-
-    switch (barstyle->answer[0]) {
-    case 'c':
-	bar_style = STYLE_CLASSIC_BAR;
-	break;
-    case 'p':
-	bar_style = STYLE_PART_CHECKER;
-	break;
-    case 'f':
-	bar_style = STYLE_FULL_CHECKER;
-	break;
-    case 'm':
-	bar_style = STYLE_MIXED_CHECKER;
-	break;
-    case 't':
-	bar_style = STYLE_TAIL_CHECKER;
-	break;
-    case 'l':
-	bar_style = STYLE_THIN_WITH_ENDS;
-	break;
-    case 's':
-	bar_style = STYLE_SOLID_BAR;
-	break;
-    case 'h':
-	bar_style = STYLE_HOLLOW_BAR;
-	break;
-    case 'u':
-	bar_style = STYLE_TICKS_UP;
-	break;
-    case 'd':
-	bar_style = STYLE_TICKS_DOWN;
-	break;
-    case 'b':
-	bar_style = STYLE_TICKS_BOTH;
-	break;
-    case 'a':
-	bar_style = STYLE_ARROW_ENDS;
-	break;
-    default:
-	G_fatal_error(_("Programmer error"));
-    }
-
-    if (northarrow->answer)
-	bar_style = STYLE_NONE;
-
-
-    switch (text_placement->answer[0]) {
-    case 'u':
-	text_position = TEXT_UNDER;
-	break;
-    case 'o':
-	text_position = TEXT_OVER;
-	break;
-    case 'l':
-	text_position = TEXT_LEFT;
-	break;
-    case 'r':
-	text_position = TEXT_RIGHT;
-	break;
-    default:
-	G_fatal_error(_("Programmer error"));
-    }
-
-    sscanf(coords->answers[0], "%lf", &east);
-    sscanf(coords->answers[1], "%lf", &north);
-
-    fontsize = atoi(fsize->answer);
-    if (no_text->answer)
-	fontsize = -1;
-
-    /* Parse and select foreground color */
-    fg_color = D_parse_color(fg_color_opt->answer, 0);
-
-    /* Parse and select background color */
-    bg_color = D_parse_color(bg_color_opt->answer, 1);
-    if (bg_color == 0)
-	do_background = FALSE;
-
-
-    if (D_open_driver() != 0)
-	G_fatal_error(_("No graphics device selected. "
-			"Use d.mon to select graphics device."));
-    D_setup(0);
-
-
-    if (bar_style == STYLE_NONE)
-	draw_n_arrow(east, north, fontsize, n_arrow->answer);
-    else
-	draw_scale(east, north, bar_style, text_position, fontsize);
-
-
-    D_save_command(G_recreate_command());
-    D_close_driver();
-
-    exit(EXIT_SUCCESS);
-}

Copied: grass/trunk/display/d.northarrow/main.c (from rev 57711, grass/trunk/display/d.barscale/main.c)
===================================================================
--- grass/trunk/display/d.northarrow/main.c	                        (rev 0)
+++ grass/trunk/display/d.northarrow/main.c	2013-09-17 04:33:28 UTC (rev 57715)
@@ -0,0 +1,115 @@
+/****************************************************************************
+ *
+ * MODULE:       d.northarrow
+ *
+ * AUTHOR(S):    Hamish Bowman, Dunedin, NZ <hamish_b yahoo.com>
+ *
+ * PURPOSE:      Displays a north arrow on graphics monitor
+ *
+ * COPYRIGHT:    (C) 2013 by 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.
+ *
+ *****************************************************************************/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <string.h>
+#include <grass/gis.h>
+#include <grass/display.h>
+#include <grass/glocale.h>
+#include "options.h"
+
+int fg_color, bg_color;
+int do_background = TRUE;
+
+int main(int argc, char **argv)
+{
+    struct GModule *module;
+    struct Option *bg_color_opt, *fg_color_opt, *coords, *n_arrow, *fsize;
+    struct Flag *no_text;
+    double east, north;
+    double fontsize;
+
+    /* Initialize the GIS calls */
+    G_gisinit(argv[0]);
+
+    module = G_define_module();
+    G_add_keyword(_("display"));
+    G_add_keyword(_("cartography"));
+    module->description = _("Displays a north arrow on the graphics monitor.");
+
+    n_arrow = G_define_option();
+    n_arrow->key = "style";
+    n_arrow->description = _("North arrow style (used only with the -n flag)");
+    n_arrow->options = "1a,1b,2,3,4,5,6,7a,7b,8a,8b,9";
+    n_arrow->answer = "1a";
+    n_arrow->guisection = _("Style");
+
+    coords = G_define_option();
+    coords->key = "at";
+    coords->key_desc = "x,y";
+    coords->type = TYPE_DOUBLE;
+    coords->answer = "85.0,15.0";
+    coords->options = "0-100";
+    coords->label =
+	_("Screen coordinates of the rectangle's top-left corner");
+    coords->description = _("(0,0) is lower-left of the display frame");
+
+    fg_color_opt = G_define_standard_option(G_OPT_C_FG);
+    fg_color_opt->label = _("North arrow color");
+    fg_color_opt->guisection = _("Colors");
+
+    bg_color_opt = G_define_standard_option(G_OPT_C_BG);
+    bg_color_opt->label = _("Background color");
+    bg_color_opt->guisection = _("Colors");
+
+    fsize = G_define_option();
+    fsize->key = "fontsize";
+    fsize->type = TYPE_DOUBLE;
+    fsize->required = NO;
+    fsize->answer = "12";
+    fsize->options = "1-360";
+    fsize->description = _("Font size");
+
+    no_text = G_define_flag();
+    no_text->key = 't';
+    no_text->description = _("Draw the symbol without text");
+
+    if (G_parser(argc, argv))
+	exit(EXIT_FAILURE);
+
+
+    sscanf(coords->answers[0], "%lf", &east);
+    sscanf(coords->answers[1], "%lf", &north);
+
+    fontsize = atof(fsize->answer);
+    if (no_text->answer)
+	fontsize = -1;
+
+    /* Parse and select foreground color */
+    fg_color = D_parse_color(fg_color_opt->answer, 0);
+
+    /* Parse and select background color */
+    bg_color = D_parse_color(bg_color_opt->answer, 1);
+    if (bg_color == 0)
+	do_background = FALSE;
+
+
+    if (D_open_driver() != 0)
+	G_fatal_error(_("No graphics device selected. "
+			"Use d.mon to select graphics device."));
+    D_setup(0);
+
+
+    draw_n_arrow(east, north, fontsize, n_arrow->answer);
+
+
+    D_save_command(G_recreate_command());
+    D_close_driver();
+
+    exit(EXIT_SUCCESS);
+}

Modified: grass/trunk/display/d.northarrow/options.h
===================================================================
--- grass/trunk/display/d.barscale/options.h	2013-09-16 21:33:57 UTC (rev 57710)
+++ grass/trunk/display/d.northarrow/options.h	2013-09-17 04:33:28 UTC (rev 57715)
@@ -1,33 +1,8 @@
 
-/* barscale types */
-#define STYLE_NONE           0
-#define STYLE_CLASSIC_BAR    1
-#define STYLE_PART_CHECKER   2
-#define STYLE_FULL_CHECKER   3
-#define STYLE_MIXED_CHECKER  4
-#define STYLE_TAIL_CHECKER   5
-#define STYLE_THIN_WITH_ENDS 6
-#define STYLE_SOLID_BAR      7
-#define STYLE_HOLLOW_BAR     8
-#define STYLE_TICKS_UP       9
-#define STYLE_TICKS_DOWN     10
-#define STYLE_TICKS_BOTH     11
-#define STYLE_ARROW_ENDS     12
-
-/* text placement */
-#define TEXT_UNDER 0
-#define TEXT_OVER  1
-#define TEXT_LEFT  2
-#define TEXT_RIGHT 3
-
 /* globals */
 extern int fg_color;
 extern int bg_color;
-extern int use_feet;
 extern int do_background;
 
-/* draw_scale.c */
-int draw_scale(double, double, int, int, double);
-
 /* draw_n_arrow.c */
 int draw_n_arrow(double, double, double, char *);



More information about the grass-commit mailing list