[GRASS-SVN] r64064 - in grass/branches/releasebranch_7_0: . display/d.info include/defs lib/display lib/pngdriver

svn_grass at osgeo.org svn_grass at osgeo.org
Sun Jan 11 10:59:31 PST 2015


Author: martinl
Date: 2015-01-11 10:59:31 -0800 (Sun, 11 Jan 2015)
New Revision: 64064

Modified:
   grass/branches/releasebranch_7_0/
   grass/branches/releasebranch_7_0/display/d.info/main.c
   grass/branches/releasebranch_7_0/include/defs/display.h
   grass/branches/releasebranch_7_0/lib/display/r_raster.c
   grass/branches/releasebranch_7_0/lib/display/setup.c
   grass/branches/releasebranch_7_0/lib/pngdriver/raster.c
Log:
Change handling of display frame, graphical clip window
    Replace D_get_window with D_get_frame
    Add D_get_clip_window, D_set_clip_window
    Add D_set_clip_window_to_map_window, D_set_clip_window_to_screen_window
    Store initial frame size within display library
    Change D_setup* functions to set graphical clip window
Fix bug in PNG driver triggered by r62026
    (merge r62026,r62036 from trunk)



Property changes on: grass/branches/releasebranch_7_0
___________________________________________________________________
Modified: svn:mergeinfo
   - /grass/trunk:59626,59671,60497,60563-60566,60817,60922,60976,61046,61096,61141,61994,62085,62105,62179-62180,62182,62190,62403,62422,62424,62429,62437,62466,62469,62484,62487,62491,62494,62501,62506,62508-62509,62515,62518-62519,62521,62526,62533,62539,62541,62555,62562,62566,62570,62573,62575,62585,62588,62597,62603,62606,62608-62609,62614,62618,62628,62632,62638,62642,62648-62649,62652,62654-62657,62666,62691,62705,62709,62723,62730,62739,62741,62743,62746,62750-62752,62757,62762,62785,62798,62800-62801,62803,62805,62812,62822,62824,62828,62831,62838,62845,62847,62850,62856,62879,62881,62886,62904,62907-62908,62910,62912,62914,62916,62918,62920,62925,62932-62933,62935,62940,62942,62944-62946,62949,62955-62956,62958,62960,62962,62964,62966-62968,62970,62973,62975,62977,62981,62983,62985,62987,62989,62991,62993,62995,62997,62999-63000,63003,63005,63007,63009,63011,63013,63015,63017,63020,63022,63024,63026,63028-63031,63033,63035,63037,63040,63043-63044,63047,63049,63051,
 63053,63055,63057,63060,63062-63064,63066,63068,63070-63071,63074,63076,63079,63081,63083,63085,63087,63089,63091,63093,63095,63098,63100,63102,63105,63107,63109,63111,63113-63114,63116,63119,63121,63123,63125,63130,63132-63133,63135,63137,63140,63143,63145,63147,63149,63151,63153-63154,63157,63160,63165,63170,63173,63175,63187,63192-63193,63196,63199-63200,63202,63209,63216,63220-63221,63224,63227,63240,63246,63250,63255,63259,63261,63275-63276,63279,63281,63283,63287,63290,63292,63297,63302,63304-63307,63315,63319,63327,63330,63332,63339,63342,63345,63361-63363,63367,63369,63379,63389,63391,63393,63402,63408-63409,63416-63417,63425,63427,63429,63431,63433,63448,63451,63453,63457,63459,63461,63464-63470,63473,63482,63497,63505,63508,63510,63515,63521-63524,63526,63528,63536-63537,63551-63552,63554,63556,63558-63559,63562,63570,63576,63582,63589-63593,63602,63604,63608-63610,63616,63618,63624,63626,63628,63630,63634,63639,63642,63644,63650,63652,63656,63679,63685,63689,63691
 ,63693,63695,63698,63700-63702,63704,63706-63707,63709,63711,63713,63715,63717-63718,63721-63727,63731,63733,63736,63740-63742,63744-63749,63751-63752,63756,63758,63760-63761,63767,63777,63780,63783,63787,63793,63796-63798,63801,63803,63807-63808,63812,63814,63816,63821,63823-63824,63827-63828,63830-63831,63834-63835,63837-63839,63841,63843-63844,63846-63847,63849,63851,63853,63855-63856,63858-63859,63862,63865,63869,63871,63882,63884,63889-63890,63892-63895,63897-63898,63900,63902-63903,63905,63907,63909-63911,63913-63914,63927,63930-63931,63940-63941,63945,63954-63955,63960,63965,63967,63976-63983,63995,64026,64030,64040,64056,64062
   + /grass/trunk:59626,59671,60497,60563-60566,60817,60922,60976,61046,61096,61141,61994,62026,62036,62085,62105,62179-62180,62182,62190,62403,62422,62424,62429,62437,62466,62469,62484,62487,62491,62494,62501,62506,62508-62509,62515,62518-62519,62521,62526,62533,62539,62541,62555,62562,62566,62570,62573,62575,62585,62588,62597,62603,62606,62608-62609,62614,62618,62628,62632,62638,62642,62648-62649,62652,62654-62657,62666,62691,62705,62709,62723,62730,62739,62741,62743,62746,62750-62752,62757,62762,62785,62798,62800-62801,62803,62805,62812,62822,62824,62828,62831,62838,62845,62847,62850,62856,62879,62881,62886,62904,62907-62908,62910,62912,62914,62916,62918,62920,62925,62932-62933,62935,62940,62942,62944-62946,62949,62955-62956,62958,62960,62962,62964,62966-62968,62970,62973,62975,62977,62981,62983,62985,62987,62989,62991,62993,62995,62997,62999-63000,63003,63005,63007,63009,63011,63013,63015,63017,63020,63022,63024,63026,63028-63031,63033,63035,63037,63040,63043-63044,63047,
 63049,63051,63053,63055,63057,63060,63062-63064,63066,63068,63070-63071,63074,63076,63079,63081,63083,63085,63087,63089,63091,63093,63095,63098,63100,63102,63105,63107,63109,63111,63113-63114,63116,63119,63121,63123,63125,63130,63132-63133,63135,63137,63140,63143,63145,63147,63149,63151,63153-63154,63157,63160,63165,63170,63173,63175,63187,63192-63193,63196,63199-63200,63202,63209,63216,63220-63221,63224,63227,63240,63246,63250,63255,63259,63261,63275-63276,63279,63281,63283,63287,63290,63292,63297,63302,63304-63307,63315,63319,63327,63330,63332,63339,63342,63345,63361-63363,63367,63369,63379,63389,63391,63393,63402,63408-63409,63416-63417,63425,63427,63429,63431,63433,63448,63451,63453,63457,63459,63461,63464-63470,63473,63482,63497,63505,63508,63510,63515,63521-63524,63526,63528,63536-63537,63551-63552,63554,63556,63558-63559,63562,63570,63576,63582,63589-63593,63602,63604,63608-63610,63616,63618,63624,63626,63628,63630,63634,63639,63642,63644,63650,63652,63656,63679,63685
 ,63689,63691,63693,63695,63698,63700-63702,63704,63706-63707,63709,63711,63713,63715,63717-63718,63721-63727,63731,63733,63736,63740-63742,63744-63749,63751-63752,63756,63758,63760-63761,63767,63777,63780,63783,63787,63793,63796-63798,63801,63803,63807-63808,63812,63814,63816,63821,63823-63824,63827-63828,63830-63831,63834-63835,63837-63839,63841,63843-63844,63846-63847,63849,63851,63853,63855-63856,63858-63859,63862,63865,63869,63871,63882,63884,63889-63890,63892-63895,63897-63898,63900,63902-63903,63905,63907,63909-63911,63913-63914,63927,63930-63931,63940-63941,63945,63954-63955,63960,63965,63967,63976-63983,63995,64026,64030,64040,64056,64062

Modified: grass/branches/releasebranch_7_0/display/d.info/main.c
===================================================================
--- grass/branches/releasebranch_7_0/display/d.info/main.c	2015-01-11 18:56:19 UTC (rev 64063)
+++ grass/branches/releasebranch_7_0/display/d.info/main.c	2015-01-11 18:59:31 UTC (rev 64064)
@@ -69,7 +69,7 @@
     D_open_driver();
     
     if (rflag->answer || dflag->answer || fflag->answer)
-	D_get_window(&t, &b, &l, &r);
+	D_get_frame(&t, &b, &l, &r);
 
 
     if (rflag->answer)

Modified: grass/branches/releasebranch_7_0/include/defs/display.h
===================================================================
--- grass/branches/releasebranch_7_0/include/defs/display.h	2015-01-11 18:56:19 UTC (rev 64063)
+++ grass/branches/releasebranch_7_0/include/defs/display.h	2015-01-11 18:59:31 UTC (rev 64064)
@@ -148,8 +148,6 @@
 void D_close_driver(void);
 int D_save_command(const char *);
 
-void D_get_window(double *, double *, double *, double *);
-
 void D__erase(void);
 
 void D_text_size(double, double);
@@ -161,6 +159,12 @@
 void D_font_list(char ***, int *);
 void D_font_info(char ***, int *);
 
+void D_get_clip_window(double *, double *, double *, double *);
+void D_set_clip_window(double, double, double, double);
+void D_get_frame(double *, double *, double *, double *);
+void D_set_clip_window_to_map_window(void);
+void D_set_clip_window_to_screen_window(void);
+
 const char *D_get_file(void);
 
 #endif /* GRASS_DISPLAYDEFS_H */

Modified: grass/branches/releasebranch_7_0/lib/display/r_raster.c
===================================================================
--- grass/branches/releasebranch_7_0/lib/display/r_raster.c	2015-01-11 18:56:19 UTC (rev 64063)
+++ grass/branches/releasebranch_7_0/lib/display/r_raster.c	2015-01-11 18:59:31 UTC (rev 64064)
@@ -36,6 +36,10 @@
 
 static int read_env_file(const char *);
 
+static struct {
+    double t, b, l, r;
+} screen;
+
 static void init(void)
 {
     const char *fenc = getenv("GRASS_ENCODING");
@@ -60,10 +64,11 @@
     D_text_rotation(0);
 
     if (frame) {
-	double t, b, l, r;
-	sscanf(frame, "%lf,%lf,%lf,%lf", &t, &b, &l, &r);
-	COM_Set_window(t, b, l, r);
+	sscanf(frame, "%lf,%lf,%lf,%lf", &screen.t, &screen.b, &screen.l, &screen.r);
+	COM_Set_window(screen.t, screen.b, screen.l, screen.r);
     }
+    else
+	COM_Get_window(&screen.t, &screen.b, &screen.l, &screen.r);
 }
 
 int read_env_file(const char *path)
@@ -269,19 +274,6 @@
 }
 
 /*!
-  \brief Get clipping frame
-  
-  \param[out] t top
-  \param[out] b bottom
-  \param[out] l left
-  \param[out] r right
-*/
-void D_get_window(double *t, double *b, double *l, double *r)
-{
-    return COM_Get_window(t, b, l, r);
-}
-
-/*!
   \brief Draw text
   
   Writes <em>text</em> in the current color and font, at the current text
@@ -337,3 +329,96 @@
 {
     COM_Font_info(list, count);
 }
+
+/*!
+ * \brief get graphical clipping window
+ *
+ * Queries the graphical clipping window (origin is top right)
+ *
+ *  \param[out] t top edge of clip window
+ *  \param[out] b bottom edge of clip window
+ *  \param[out] l left edge of clip window
+ *  \param[out] r right edge of clip window
+ *  \return ~
+ */
+
+void D_get_clip_window(double *t, double *b, double *l, double *r)
+{
+    COM_Get_window(t, b, l, r);
+}
+
+/*!
+ * \brief set graphical clipping window
+ *
+ * Sets the graphical clipping window to the specified rectangle
+ *  (origin is top right)
+ *
+ *  \param t top edge of clip window
+ *  \param b bottom edge of clip window
+ *  \param l left edge of clip window
+ *  \param r right edge of clip window
+ *  \return ~
+ */
+
+void D_set_clip_window(double t, double b, double l, double r)
+{
+    if (t < screen.t) t = screen.t;
+    if (b > screen.b) b = screen.b;
+    if (l < screen.l) l = screen.l;
+    if (r > screen.r) r = screen.r;
+
+    COM_Set_window(t, b, l, r);
+}
+
+/*!
+ * \brief get graphical window (frame)
+ *
+ * Queries the graphical frame (origin is top right)
+ *
+ *  \param[out] t top edge of frame
+ *  \param[out] b bottom edge of frame
+ *  \param[out] l left edge of frame
+ *  \param[out] r right edge of frame
+ *  \return ~
+ */
+
+void D_get_frame(double *t, double *b, double *l, double *r)
+{
+    *t = screen.t;
+    *b = screen.b;
+    *l = screen.l;
+    *r = screen.r;
+}
+
+/*!
+ * \brief set graphical clipping window to map window
+ *
+ * Sets the graphical clipping window to the pixel window that corresponds
+ * to the current database region.
+ *
+ *  \param ~
+ *  \return ~
+ */
+
+void D_set_clip_window_to_map_window(void)
+{
+    D_set_clip_window(
+	D_get_d_north(), D_get_d_south(),
+	D_get_d_west(), D_get_d_east());
+}
+
+/*!
+ * \brief set clipping window to screen window
+ *
+ * Sets the clipping window to the pixel window that corresponds to the
+ * full screen window. Off screen rendering is still clipped.
+ *
+ *  \param ~
+ *  \return ~
+ */
+
+void D_set_clip_window_to_screen_window(void)
+{
+    COM_Set_window(screen.t, screen.b, screen.l, screen.r);
+}
+

Modified: grass/branches/releasebranch_7_0/lib/display/setup.c
===================================================================
--- grass/branches/releasebranch_7_0/lib/display/setup.c	2015-01-11 18:56:19 UTC (rev 64063)
+++ grass/branches/releasebranch_7_0/lib/display/setup.c	2015-01-11 18:59:31 UTC (rev 64064)
@@ -48,15 +48,19 @@
     struct Cell_head region;
     double dt, db, dl, dr;
 
-    D_get_window(&dt, &db, &dl, &dr);
+    D_get_frame(&dt, &db, &dl, &dr);
 
     G_get_set_window(&region);
     Rast_set_window(&region);
 
     D_do_conversions(&region, dt, db, dl, dr);
 
+    D_set_clip_window_to_screen_window();
+
     if (clear)
 	D_erase(DEFAULT_BG_COLOR);
+
+    D_set_clip_window_to_map_window();
 }
 
 /*!
@@ -75,15 +79,19 @@
 {
     double dt, db, dl, dr;
 
-    D_get_window(&dt, &db, &dl, &dr);
+    D_get_frame(&dt, &db, &dl, &dr);
 
     D_set_src(dt, db, dl, dr);
     D_set_dst(dt, db, dl, dr);
 
     D_update_conversions();
 
+    D_set_clip_window_to_screen_window();
+
     if (clear)
 	D_erase(DEFAULT_BG_COLOR);
+
+    D_set_clip_window_to_map_window();
 }
 
 /*!
@@ -107,7 +115,7 @@
 {
     double dt, db, dl, dr;
 
-    D_get_window(&dt, &db, &dl, &dr);
+    D_get_frame(&dt, &db, &dl, &dr);
 
     D_set_src(st, sb, sl, sr);
     D_set_dst(dt, db, dl, dr);
@@ -117,8 +125,12 @@
 
     D_update_conversions();
 
+    D_set_clip_window_to_screen_window();
+
     if (clear)
 	D_erase(DEFAULT_BG_COLOR);
+
+    D_set_clip_window_to_map_window();
 }
 
 /*!

Modified: grass/branches/releasebranch_7_0/lib/pngdriver/raster.c
===================================================================
--- grass/branches/releasebranch_7_0/lib/pngdriver/raster.c	2015-01-11 18:56:19 UTC (rev 64063)
+++ grass/branches/releasebranch_7_0/lib/pngdriver/raster.c	2015-01-11 18:59:31 UTC (rev 64064)
@@ -122,7 +122,7 @@
     int x, y;
 
     if (y1 <= y0)
-	return next_row(row, d_y0);
+	return next_row(row, d_y1);
 
     for (x = x0; x < x1; x++) {
 	int xx = dst[0][0] + x;



More information about the grass-commit mailing list