[GRASS-SVN] r58353 - grass/trunk/gui/wxpython/animation

svn_grass at osgeo.org svn_grass at osgeo.org
Mon Dec 2 09:11:27 PST 2013


Author: annakrat
Date: 2013-12-02 09:11:26 -0800 (Mon, 02 Dec 2013)
New Revision: 58353

Modified:
   grass/trunk/gui/wxpython/animation/provider.py
Log:
wxGUI/animation: processes must be functions not methods

Modified: grass/trunk/gui/wxpython/animation/provider.py
===================================================================
--- grass/trunk/gui/wxpython/animation/provider.py	2013-12-02 12:29:03 UTC (rev 58352)
+++ grass/trunk/gui/wxpython/animation/provider.py	2013-12-02 17:11:26 UTC (rev 58353)
@@ -313,7 +313,8 @@
             if cmd[0] == 'm.nviz.image':
                 p = Process(target=self.RenderProcess3D, args=(cmd, regionFor3D, bgcolor, q))
             else:
-                p = Process(target=self.RenderProcess2D, args=(cmd, bgcolor, q))
+                p = Process(target=RenderProcess2D,
+                            args=(self.imageWidth, self.imageHeight, self._tempDir, cmd, bgcolor, q))
             p.start()
 
             queue_list.append(q)
@@ -344,67 +345,6 @@
         self._isRendering = False
         return not stopped
 
-    def RenderProcess2D(self, cmd, bgcolor, fileQueue):
-        """!Render raster or vector files as ppm image and write the
-           resulting ppm filename in the provided file queue
-
-        @param cmd d.rast/d.vect command as a list
-        @param bgcolor background color as a tuple of 3 values 0 to 255
-        @param fileQueue the inter process communication queue
-        storing the file name of the image
-        """
-        Debug.msg(3, "BitmapRenderer.RenderProcess2D: cmd={}".format(cmd))
-
-        filename = GetFileFromCmd(self._tempDir, cmd)
-        transparency = True
-
-        # Set the environment variables for this process
-        _setEnvironment(self.imageWidth, self.imageHeight, filename,
-                        transparent=transparency, bgcolor=bgcolor)
-
-        Debug.msg(1, "Render image to file " + str(filename))
-        cmdTuple = CmdToTuple(cmd)
-        returncode, stdout, messages = read2_command(cmdTuple[0], **cmdTuple[1])
-        if returncode != 0:
-            gcore.warning("Rendering failed:\n" + messages)
-            fileQueue.put(None)
-            os.remove(filename)
-            return
-
-        fileQueue.put(filename)
-
-    def RenderProcess3D(self, cmd, region, bgcolor, fileQueue):
-        """!Renders image with m.nviz.image and writes the
-           resulting ppm filename in the provided file queue
-
-        @param cmd m.nviz.image command as a list
-        @param bgcolor background color as a tuple of 3 values 0 to 255
-        @param fileQueue the inter process communication queue
-        storing the file name of the image
-        """
-        Debug.msg(3, "BitmapRenderer.RenderProcess3D: cmd={}".format(cmd))
-
-        filename = GetFileFromCmd(self._tempDir, cmd)
-        os.environ['GRASS_REGION'] = gcore.region_env(**region)
-
-        Debug.msg(1, "Render image to file " + str(filename))
-        cmdTuple = CmdToTuple(cmd)
-        cmdTuple[1]['output'] = os.path.splitext(filename)[0]
-        # set size
-        cmdTuple[1]['size'] = '%d,%d' % (self.imageWidth, self.imageHeight)
-        # set format
-        cmdTuple[1]['format'] = 'ppm'
-        cmdTuple[1]['bgcolor'] = bgcolor = ':'.join([str(part) for part in bgcolor])
-        returncode, stdout, messages = read2_command(cmdTuple[0], **cmdTuple[1])
-        if returncode != 0:
-            gcore.warning("Rendering failed:\n" + messages)
-            fileQueue.put(None)
-            os.environ.pop('GRASS_REGION')
-            return
-
-        os.environ.pop('GRASS_REGION')
-        fileQueue.put(filename)
-
     def RequestStopRendering(self):
         """!Requests to stop rendering."""
         if self._isRendering:
@@ -413,11 +353,11 @@
 
 class BitmapComposer:
     """!Class which handles the composition of image files with g.pnmcomp."""
-    def __init__(self, tmpDir, mapFilesPool, bitmapPool,
+    def __init__(self, tempDir, mapFilesPool, bitmapPool,
                  imageWidth, imageHeight):
         self._mapFilesPool = mapFilesPool
         self._bitmapPool = bitmapPool
-        self._tmpDir = tmpDir
+        self._tempDir = tempDir
         self.imageWidth = imageWidth
         self.imageHeight = imageHeight
 
@@ -462,8 +402,9 @@
             # Queue object for interprocess communication
             q = Queue()
             # The separate render process
-            p = Process(target=self.CompositeProcess,
-                        args=(cmdList, opacityList, bgcolor, q))
+            p = Process(target=CompositeProcess,
+                        args=(self.imageWidth, self.imageHeight, self._tempDir,
+                              cmdList, opacityList, bgcolor, q))
             p.start()
 
             queue_list.append(q)
@@ -497,55 +438,123 @@
 
         self._isComposing = False
 
-    def CompositeProcess(self, cmdList, opacities, bgcolor, fileQueue):
-        """!Performs the composition of image ppm files and writes the
-           resulting ppm filename in the provided file queue
+    def RequestStopComposing(self):
+        """!Requests to stop the composition."""
+        if self._isComposing:
+            self._stopComposing = True
 
-        @param cmdList list of d.rast/d.vect commands
-        @param opacities list of opacities
-        @param bgcolor background color as a tuple of 3 values 0 to 255
-        @param fileQueue the inter process communication queue
-        storing the file name of the image
-        """
-        Debug.msg(3, "BitmapComposer.CompositeProcess")
 
-        maps = []
-        masks = []
-        for cmd in cmdList:
-            maps.append(GetFileFromCmd(self._tmpDir, cmd))
-            masks.append(GetFileFromCmd(self._tmpDir, cmd, 'pgm'))
-        filename = GetFileFromCmds(self._tmpDir, cmdList)
-        # Set the environment variables for this process
-        _setEnvironment(self.imageWidth, self.imageHeight, filename,
-                        transparent=False, bgcolor=bgcolor)
+def RenderProcess2D(imageWidth, imageHeight, tempDir, cmd, bgcolor, fileQueue):
+    """!Render raster or vector files as ppm image and write the
+       resulting ppm filename in the provided file queue
 
-        opacities = [str(op) for op in opacities]
-        bgcolor = ':'.join([str(part) for part in bgcolor])
-        returncode, messages = RunCommand('g.pnmcomp',
-                                          getErrorMsg=True,
-                                          overwrite=True,
-                                          input='%s' % ",".join(reversed(maps)),
-                                          mask='%s' % ",".join(reversed(masks)),
-                                          opacity='%s' % ",".join(reversed(opacities)),
-                                          bgcolor=bgcolor,
-                                          width=self.imageWidth,
-                                          height=self.imageHeight,
-                                          output=filename)
+    @param imageWidth image width
+    @param imageHeight image height
+    @param tempDir directory for rendering
+    @param cmd d.rast/d.vect command as a list
+    @param bgcolor background color as a tuple of 3 values 0 to 255
+    @param fileQueue the inter process communication queue
+    storing the file name of the image
+    """
 
-        if returncode != 0:
-            gcore.warning("Rendering composite failed:\n" + messages)
-            fileQueue.put(None)
-            os.remove(filename)
-            return
+    filename = GetFileFromCmd(tempDir, cmd)
+    transparency = True
 
-        fileQueue.put(filename)
+    # Set the environment variables for this process
+    _setEnvironment(imageWidth, imageHeight, filename,
+                    transparent=transparency, bgcolor=bgcolor)
 
-    def RequestStopComposing(self):
-        """!Requests to stop the composition."""
-        if self._isComposing:
-            self._stopComposing = True
+    cmdTuple = CmdToTuple(cmd)
+    returncode, stdout, messages = read2_command(cmdTuple[0], **cmdTuple[1])
+    if returncode != 0:
+        gcore.warning("Rendering failed:\n" + messages)
+        fileQueue.put(None)
+        os.remove(filename)
+        return
 
+    fileQueue.put(filename)
 
+
+def RenderProcess3D(imageWidth, imageHeight, tempDir, cmd, region, bgcolor, fileQueue):
+    """!Renders image with m.nviz.image and writes the
+       resulting ppm filename in the provided file queue
+
+    @param imageWidth image width
+    @param imageHeight image height
+    @param tempDir directory for rendering
+    @param cmd m.nviz.image command as a list
+    @param bgcolor background color as a tuple of 3 values 0 to 255
+    @param fileQueue the inter process communication queue
+    storing the file name of the image
+    """
+
+    filename = GetFileFromCmd(tempDir, cmd)
+    os.environ['GRASS_REGION'] = gcore.region_env(**region)
+
+    Debug.msg(1, "Render image to file " + str(filename))
+    cmdTuple = CmdToTuple(cmd)
+    cmdTuple[1]['output'] = os.path.splitext(filename)[0]
+    # set size
+    cmdTuple[1]['size'] = '%d,%d' % (imageWidth, imageHeight)
+    # set format
+    cmdTuple[1]['format'] = 'ppm'
+    cmdTuple[1]['bgcolor'] = bgcolor = ':'.join([str(part) for part in bgcolor])
+    returncode, stdout, messages = read2_command(cmdTuple[0], **cmdTuple[1])
+    if returncode != 0:
+        gcore.warning("Rendering failed:\n" + messages)
+        fileQueue.put(None)
+        os.environ.pop('GRASS_REGION')
+        return
+
+    os.environ.pop('GRASS_REGION')
+    fileQueue.put(filename)
+
+
+def CompositeProcess(imageWidth, imageHeight, tempDir, cmdList, opacities, bgcolor, fileQueue):
+    """!Performs the composition of image ppm files and writes the
+       resulting ppm filename in the provided file queue
+
+    @param imageWidth image width
+    @param imageHeight image height
+    @param tempDir directory for rendering
+    @param cmdList list of d.rast/d.vect commands
+    @param opacities list of opacities
+    @param bgcolor background color as a tuple of 3 values 0 to 255
+    @param fileQueue the inter process communication queue
+    storing the file name of the image
+    """
+
+    maps = []
+    masks = []
+    for cmd in cmdList:
+        maps.append(GetFileFromCmd(tempDir, cmd))
+        masks.append(GetFileFromCmd(tempDir, cmd, 'pgm'))
+    filename = GetFileFromCmds(tempDir, cmdList)
+    # Set the environment variables for this process
+    _setEnvironment(imageWidth, imageHeight, filename,
+                    transparent=False, bgcolor=bgcolor)
+
+    opacities = [str(op) for op in opacities]
+    bgcolor = ':'.join([str(part) for part in bgcolor])
+    returncode, stdout, messages = read2_command('g.pnmcomp',
+                                                 overwrite=True,
+                                                 input='%s' % ",".join(reversed(maps)),
+                                                 mask='%s' % ",".join(reversed(masks)),
+                                                 opacity='%s' % ",".join(reversed(opacities)),
+                                                 bgcolor=bgcolor,
+                                                 width=imageWidth,
+                                                 height=imageHeight,
+                                                 output=filename)
+
+    if returncode != 0:
+        gcore.warning("Rendering composite failed:\n" + messages)
+        fileQueue.put(None)
+        os.remove(filename)
+        return
+
+    fileQueue.put(filename)
+
+
 class DictRefCounter:
     """!Base class storing map files/bitmaps (emulates dictionary).
         Counts the references to know which files/bitmaps to delete."""



More information about the grass-commit mailing list