123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- /****************************************************************************
- *
- * MODULE: d.paint.labels
- * AUTHOR(S): Jim Westervelt (CERL) (original contributor)
- * Radim Blazek <radim.blazek gmail.com>,
- * Stephan Holl <sholl gmx net>,
- * Glynn Clements <glynn gclements.plus.com>,
- * Hamish Bowman <hamish_b yahoo.com>,
- * Markus Neteler <neteler itc.it>
- * PURPOSE: displays a paint label file in the active display frame
- * COPYRIGHT: (C) 2003-2006 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 <stdlib.h>
- #include <math.h>
- #include <grass/gis.h>
- #include <grass/display.h>
- #include "local_proto.h"
- #include <grass/glocale.h>
- int main(int argc, char **argv)
- {
- struct Cell_head window;
- char *label_name;
- const char *mapset;
- double minreg, maxreg, reg, dx, dy;
- FILE *infile;
- struct Option *opt1;
- struct Option *maxreg_opt, *minreg_opt;
- struct Flag *horiz_flag;
- struct GModule *module;
- /* Initialize the GIS calls */
- G_gisinit(argv[0]);
- /* Set description */
- module = G_define_module();
- G_add_keyword(_("display"));
- G_add_keyword(_("paint labels"));
- module->description =
- _("Displays text labels (created with v.label) "
- "to the active frame on the graphics monitor.");
- horiz_flag = G_define_flag();
- horiz_flag->key = 'i';
- horiz_flag->description =
- _("Ignore rotation setting and draw horizontally");
- opt1 = G_define_option();
- opt1->key = "labels";
- opt1->type = TYPE_STRING;
- opt1->required = YES;
- opt1->gisprompt = "old,paint/labels,paint labels";
- opt1->description = _("Name of label file");
- minreg_opt = G_define_option();
- minreg_opt->key = "minreg";
- minreg_opt->type = TYPE_DOUBLE;
- minreg_opt->required = NO;
- minreg_opt->description =
- _("Minimum region size (diagonal) when labels are displayed");
- maxreg_opt = G_define_option();
- maxreg_opt->key = "maxreg";
- maxreg_opt->type = TYPE_DOUBLE;
- maxreg_opt->required = NO;
- maxreg_opt->description =
- _("Maximum region size (diagonal) when labels are displayed");
- /* Check command line */
- if (G_parser(argc, argv))
- exit(EXIT_FAILURE);
- /* Save map name */
- label_name = opt1->answer;
- /* Make sure map is available */
- mapset = G_find_file("paint/labels", label_name, "");
- if (mapset == NULL)
- G_fatal_error(_("Label file <%s> not found"), label_name);
- /* Read in the map window associated with window */
- G_get_window(&window);
- /* Check min/max region */
- dx = window.east - window.west;
- dy = window.north - window.south;
- reg = sqrt(dx * dx + dy * dy);
- if (minreg_opt->answer) {
- minreg = atof(minreg_opt->answer);
- if (reg < minreg) {
- G_warning(_("Region size is lower than minreg, nothing displayed."));
- D_close_driver();
- exit(0);
- }
- }
- if (maxreg_opt->answer) {
- maxreg = atof(maxreg_opt->answer);
- if (reg > maxreg) {
- G_warning(_("Region size is greater than maxreg, nothing displayed."));
- D_close_driver();
- exit(0);
- }
- }
- /* Open map is available */
- infile = G_fopen_old("paint/labels", label_name, mapset);
- if (infile == NULL)
- G_fatal_error(_("Unable to open label file <%s>"), label_name);
- D_open_driver();
-
- D_setup(0);
- /* Go draw the raster map */
- do_labels(infile, !horiz_flag->answer);
- D_save_command(G_recreate_command());
- D_close_driver();
- exit(EXIT_SUCCESS);
- }
|