|
@@ -24,9 +24,9 @@
|
|
|
int main(int argc, char *argv[])
|
|
|
{
|
|
|
struct GModule *module;
|
|
|
- struct Flag *rflag, *dflag, *fflag, *bflag, *gflag, *sflag;
|
|
|
- double t, b, l, r;
|
|
|
- double n, s, e, w;
|
|
|
+ struct Flag *rflag, *dflag, *fflag, *eflag, *bflag, *gflag, *sflag;
|
|
|
+ double st, sb, sl, sr;
|
|
|
+ double ft, fb, fl, fr;
|
|
|
|
|
|
G_gisinit(argv[0]);
|
|
|
|
|
@@ -52,6 +52,10 @@ int main(int argc, char *argv[])
|
|
|
fflag->key = 'f';
|
|
|
fflag->description = _("Display active frame rectangle");
|
|
|
|
|
|
+ eflag = G_define_flag();
|
|
|
+ eflag->key = 'e';
|
|
|
+ eflag->description = _("Display frame dimensions (width, height)");
|
|
|
+
|
|
|
bflag = G_define_flag();
|
|
|
bflag->key = 'b';
|
|
|
bflag->description = _("Display screen rectangle of current region");
|
|
@@ -59,34 +63,41 @@ int main(int argc, char *argv[])
|
|
|
gflag = G_define_flag();
|
|
|
gflag->key = 'g';
|
|
|
gflag->description =
|
|
|
- _("Display geographic coordinates and resolution of entire screen");
|
|
|
+ _("Display geographic coordinates and resolution of entire frame");
|
|
|
|
|
|
sflag = G_define_flag();
|
|
|
sflag->key = 's';
|
|
|
sflag->description =
|
|
|
_("Print path to support files of currently selected monitor");
|
|
|
|
|
|
- G_option_required(rflag, dflag, fflag, bflag, gflag, sflag, NULL);
|
|
|
+ G_option_required(rflag, dflag, fflag, eflag, bflag, gflag, sflag, NULL);
|
|
|
|
|
|
if (G_parser(argc, argv))
|
|
|
exit(EXIT_FAILURE);
|
|
|
|
|
|
D_open_driver();
|
|
|
|
|
|
- if (rflag->answer || dflag->answer || fflag->answer)
|
|
|
- D_get_frame(&t, &b, &l, &r);
|
|
|
+ if (rflag->answer || dflag->answer)
|
|
|
+ D_get_screen(&st, &sb, &sl, &sr);
|
|
|
+
|
|
|
+ if (fflag->answer || eflag->answer || gflag->answer)
|
|
|
+ D_get_frame(&ft, &fb, &fl, &fr);
|
|
|
|
|
|
|
|
|
if (rflag->answer)
|
|
|
- fprintf(stdout, "rectangle: %f %f %f %f\n", l, r, t, b);
|
|
|
+ fprintf(stdout, "screen rectangle: %f %f %f %f\n", sl, sr, st, sb);
|
|
|
|
|
|
if (dflag->answer)
|
|
|
- fprintf(stdout, "dimensions: %f %f\n", r - l, b - t);
|
|
|
+ fprintf(stdout, "screen dimensions: %f %f\n", sr - sl, sb - st);
|
|
|
|
|
|
if (fflag->answer)
|
|
|
- fprintf(stdout, "frame: %f %f %f %f\n", l, r, t, b);
|
|
|
+ fprintf(stdout, "frame rectangle: %f %f %f %f\n", fl, fr, ft, fb);
|
|
|
+
|
|
|
+ if (eflag->answer)
|
|
|
+ fprintf(stdout, "frame dimensions: %f %f\n", fr - fl, fb - ft);
|
|
|
|
|
|
if (bflag->answer) {
|
|
|
+ double t, b, l, r;
|
|
|
D_setup(0);
|
|
|
|
|
|
l = D_get_d_west();
|
|
@@ -99,19 +110,20 @@ int main(int argc, char *argv[])
|
|
|
|
|
|
if (gflag->answer) {
|
|
|
/* outer bounds of the screen (including margins) */
|
|
|
+ double n, s, e, w;
|
|
|
D_setup(0);
|
|
|
|
|
|
- n = D_get_u_north();
|
|
|
- s = D_get_u_south();
|
|
|
- w = D_get_u_west();
|
|
|
- e = D_get_u_east();
|
|
|
+ n = D_d_to_u_row(ft);
|
|
|
+ s = D_d_to_u_row(fb);
|
|
|
+ w = D_d_to_u_col(fl);
|
|
|
+ e = D_d_to_u_col(fr);
|
|
|
|
|
|
fprintf(stdout, "n=%f\n", n );
|
|
|
fprintf(stdout, "s=%f\n", s );
|
|
|
fprintf(stdout, "w=%f\n", w );
|
|
|
fprintf(stdout, "e=%f\n", e );
|
|
|
- fprintf(stdout, "ewres=%.15g\n", (e-w)/(r-l) );
|
|
|
- fprintf(stdout, "nsres=%.15g\n", (n-s)/(b-t) );
|
|
|
+ fprintf(stdout, "ewres=%.15g\n", D_get_d_to_u_xconv() );
|
|
|
+ fprintf(stdout, "nsres=%.15g\n", -D_get_d_to_u_yconv() );
|
|
|
}
|
|
|
|
|
|
if (sflag->answer) {
|