Browse Source

wxNviz: try to fix drawing fringes (didn't work on some computers)

git-svn-id: https://svn.osgeo.org/grass/grass/trunk@46805 15284696-431f-4ddb-bdfa-cd5b030d7da7
Anna Petrášová 14 years ago
parent
commit
75fe13ae84

+ 5 - 1
gui/wxpython/gui_modules/nviz_mapdisp.py

@@ -396,8 +396,12 @@ class GLWindow(MapWindow, glcanvas.GLCanvas):
             self._display.Draw(True, mode)
         else: # None -> reuse last rendered image
             pass # TODO
-        
+            
         self.SwapBuffers()
+        # draw fringe after SwapBuffers, otherwise it don't have to be visible
+        # on some computers
+        if self.render['quick'] is False:
+            self._display.DrawFringe()
         
         stop = time.clock()
         

+ 4 - 0
gui/wxpython/gui_modules/wxnviz.py

@@ -1338,6 +1338,10 @@ class Nviz(object):
         if self.showLight:
             Nviz_draw_model(self.data)
 
+    def DrawFringe(self):
+        """!Draw fringe"""
+        Nviz_draw_fringe(self.data)
+        
     def SetFringe(self, sid, color, elev, nw = False, ne = False, sw = False, se = False):
         """!Set fringe
 

+ 1 - 0
include/nviz.h

@@ -184,6 +184,7 @@ struct fringe_data *Nviz_new_fringe(nv_data *, int, unsigned long,
 				    double, int, int, int, int);
 struct fringe_data *Nviz_set_fringe(nv_data *, int, unsigned long,
 				    double, int, int, int, int);
+void Nviz_draw_fringe(nv_data *data);
 
 /* position.c */
 void Nviz_init_view(nv_data *);

+ 3 - 1
lib/nviz/draw.c

@@ -232,11 +232,13 @@ int Nviz_draw_all(nv_data * data)
 
     if (draw_vol)
 	Nviz_draw_all_vol(data);
-
+	
+    /*
     for(i = 0; i < data->num_fringes; i++) {
 	struct fringe_data * f = data->fringe[i];
 	GS_draw_fringe(f->id, f->color, f->elev, f->where);
     }
+    */
     
     GS_done_draw();
     GS_set_draw(GSD_BACK);

+ 14 - 0
lib/nviz/nviz.c

@@ -201,3 +201,17 @@ struct fringe_data *Nviz_set_fringe(nv_data *data,
     
     return f;
 }
+/*! Draw fringe
+
+   \param data nviz data
+ */
+void Nviz_draw_fringe(nv_data *data)
+{
+    int i;
+
+    for (i = 0; i < data->num_fringes; i++) {
+	struct fringe_data *f = data->fringe[i];
+
+	GS_draw_fringe(f->id, f->color, f->elev, f->where);
+    }
+}