15
15
#include <stdlib.h>
17
17
#include <grass/gis.h>
18
#include <grass/raster.h>
19
18
#include <grass/display.h>
20
19
#include <grass/glocale.h>
22
21
int main(int argc, char *argv[])
24
23
struct GModule *module;
25
struct Flag *rflag, *dflag, *cflag, *fflag, *bflag, *gflag;
28
char window_name[128];
29
struct Cell_head window;
24
struct Flag *rflag, *dflag, *fflag, *eflag, *bflag, *gflag;
25
double st, sb, sl, sr;
26
double ft, fb, fl, fr;
31
28
G_gisinit(argv[0]);
33
30
module = G_define_module();
34
module->keywords = _("display, metadata");
31
G_add_keyword(_("display"));
32
G_add_keyword(_("graphics"));
33
G_add_keyword(_("monitors"));
35
_("Displays information about the active display monitor.");
35
36
module->description =
36
_("Display information about the active display monitor");
37
_("Display monitors are maintained by d.mon.");
38
39
rflag = G_define_flag();
55
60
gflag = G_define_flag();
57
62
gflag->description =
58
_("Display geographic coordinates and resolution of entire screen");
60
cflag = G_define_flag();
62
cflag->description = _("Display number of colors");
64
if (argc > 1 && G_parser(argc, argv))
67
if (!rflag->answer && !dflag->answer && !cflag->answer &&
68
!fflag->answer && !bflag->answer && !gflag->answer) {
73
if (R_open_driver() != 0)
74
G_fatal_error(_("No graphics device selected"));
76
if (rflag->answer || dflag->answer) {
63
_("Display geographic coordinates and resolution of entire frame");
65
G_option_required(rflag, dflag, fflag, eflag, bflag, gflag, NULL);
67
if (G_parser(argc, argv))
72
if (rflag->answer || dflag->answer)
73
D_get_screen(&st, &sb, &sl, &sr);
75
if (fflag->answer || eflag->answer || gflag->answer)
76
D_get_frame(&ft, &fb, &fl, &fr);
84
fprintf(stdout, "rectangle: %d %d %d %d\n", l, r, t, b);
80
fprintf(stdout, "screen rectangle: %f %f %f %f\n", sl, sr, st, sb);
87
fprintf(stdout, "dimensions: %d %d\n", r - l, b - t);
92
R_get_num_colors(&colors);
93
fprintf(stdout, "colors: %d\n", colors);
97
D_get_screen_window(&t, &b, &l, &r);
98
fprintf(stdout, "frame: %d %d %d %d\n", l, r, t, b);
83
fprintf(stdout, "screen dimensions: %f %f\n", sr - sl, sb - st);
86
fprintf(stdout, "frame rectangle: %f %f %f %f\n", fl, fr, ft, fb);
89
fprintf(stdout, "frame dimensions: %f %f\n", fr - fl, fb - ft);
101
91
if (bflag->answer) {
102
if (D_get_cur_wind(window_name))
103
G_fatal_error(_("No current window"));
104
if (D_set_cur_wind(window_name))
105
G_fatal_error(_("Current window not available"));
107
/* Read in the map window associated with window */
108
G_get_window(&window);
110
if (D_check_map_window(&window))
111
G_fatal_error(_("Setting map window"));
112
if (D_get_screen_window(&t, &b, &l, &r))
113
G_fatal_error(_("Getting screen window"));
114
if (D_do_conversions(&window, t, b, l, r))
115
G_fatal_error(_("Error in calculating conversions"));
117
95
l = D_get_d_west();
118
96
r = D_get_d_east();
119
97
t = D_get_d_north();
120
98
b = D_get_d_south();
122
fprintf(stdout, "region: %d %d %d %d\n", l, r, t, b);
100
fprintf(stdout, "region: %f %f %f %f\n", l, r, t, b);
125
103
if (gflag->answer) {
126
/* outer bounds of the screen (including white bands) */
128
if (D_get_cur_wind(window_name))
129
G_fatal_error(_("No current window"));
130
if (D_set_cur_wind(window_name))
131
G_fatal_error(_("Current window not available"));
133
G_get_window(&window);
135
if (D_check_map_window(&window))
136
G_fatal_error(_("Setting map window"));
137
if (D_get_screen_window(&t, &b, &l, &r))
138
G_fatal_error(_("Getting screen window"));
139
if (D_do_conversions(&window, t, b, l, r))
140
G_fatal_error(_("Error in calculating conversions"));
142
n = D_d_to_u_row((double)t);
143
s = D_d_to_u_row((double)b);
144
w = D_d_to_u_col((double)l);
145
e = D_d_to_u_col((double)r);
104
/* outer bounds of the screen (including margins) */
108
n = D_d_to_u_row(ft);
109
s = D_d_to_u_row(fb);
110
w = D_d_to_u_col(fl);
111
e = D_d_to_u_col(fr);
147
113
fprintf(stdout, "n=%f\n", n );
148
114
fprintf(stdout, "s=%f\n", s );
149
115
fprintf(stdout, "w=%f\n", w );
150
116
fprintf(stdout, "e=%f\n", e );
151
fprintf(stdout, "ewres=%.15g\n", (e-w)/(r-l) );
152
fprintf(stdout, "nsres=%.15g\n", (n-s)/(b-t) );
117
fprintf(stdout, "ewres=%.15g\n", D_get_d_to_u_xconv() );
118
fprintf(stdout, "nsres=%.15g\n", -D_get_d_to_u_yconv() );