Beispiel #1
0
    def get_surface_as_array(self, order=None):
        if self.surface is None:
            raise render.RenderError("No AGG surface defined")

        # TODO: could these have changed between the time that self.surface
        # was last updated?
        wd, ht = self.dims

        # Get agg surface as a numpy array
        arr8 = np.fromstring(self.surface.tobytes(), dtype=np.uint8)
        arr8 = arr8.reshape((ht, wd, len(self.rgb_order)))

        # adjust according to viewer's needed order
        return self.reorder(order, arr8)
Beispiel #2
0
    def render_image(self, rgbobj, dst_x, dst_y):
        """Render the image represented by (rgbobj) at dst_x, dst_y
        in the pixel space.
        *** internal method-- do not use ***
        """
        if self.surface is None:
            return
        self.logger.debug("redraw surface")

        # get window contents as a buffer and paste it into the PIL surface
        # TODO: allow greater bit depths when support is better in PIL
        rgb_arr = self.viewer.getwin_array(order=self.rgb_order, dtype=np.uint8)
        p_image = Image.fromarray(rgb_arr)

        if self.surface is None or p_image.size != self.surface.size:
            # window size must have changed out from underneath us!
            width, height = self.viewer.get_window_size()
            self.resize((width, height))
            if p_image.size != self.surface.size:
                raise render.RenderError("Rendered image does not match window size")

        self.surface.paste(p_image)
Beispiel #3
0
    def get_surface_as_array(self, order=None):
        if self.surface is None:
            raise render.RenderError("No OpenCv surface defined")

        # adjust according to viewer's needed order
        return self.reorder(order, self.surface)
Beispiel #4
0
 def get_surface_as_array(self, order=None):
     raise render.RenderError(
         "This renderer can only be used with an opengl viewer")