Пример #1
0
 def gl_draw(self):
     if self.schematic.chunkCount > len(self.renderer.chunkRenderers):
         self.gl_draw_thumb()
     else:
         if self.fbo is None:
             w, h = self.fboSize
             self.fbo = FramebufferTexture(w, h, self.gl_draw_tex)
         GL.glMatrixMode(GL.GL_PROJECTION)
         GL.glLoadIdentity()
         GL.glMatrixMode(GL.GL_MODELVIEW)
         GL.glLoadIdentity()
         GL.glEnableClientState(GL.GL_TEXTURE_COORD_ARRAY)
         GL.glColor(1.0, 1.0, 1.0, 1.0)
         GL.glVertexPointer(2, GL.GL_FLOAT, 0, array([-1, -1,
                                                      - 1, 1,
                                                      1, 1,
                                                      1, -1, ], dtype='float32'))
         GL.glTexCoordPointer(2, GL.GL_FLOAT, 0, array([0, 0, 0, 256, 256, 256, 256, 0], dtype='float32'))
         e = (GL.GL_TEXTURE_2D,)
         if not self.drawBackground:
             e += (GL.GL_ALPHA_TEST,)
         with gl.glEnable(*e):
             self.fbo.bind()
             GL.glDrawArrays(GL.GL_QUADS, 0, 4)
         GL.glDisableClientState(GL.GL_TEXTURE_COORD_ARRAY)
Пример #2
0
 def gl_draw(self):
     if self.schematic.chunkCount > len(self.renderer.chunkRenderers):
         self.gl_draw_thumb()
     else:
         if self.fbo is None:
             w, h = self.fboSize
             self.fbo = FramebufferTexture(w, h, self.gl_draw_tex)
         GL.glMatrixMode(GL.GL_PROJECTION)
         GL.glLoadIdentity()
         GL.glMatrixMode(GL.GL_MODELVIEW)
         GL.glLoadIdentity()
         GL.glEnableClientState(GL.GL_TEXTURE_COORD_ARRAY)
         GL.glColor(1.0, 1.0, 1.0, 1.0)
         GL.glVertexPointer(2, GL.GL_FLOAT, 0, array([-1, -1,
                                                      - 1, 1,
                                                      1, 1,
                                                      1, -1, ], dtype='float32'))
         GL.glTexCoordPointer(2, GL.GL_FLOAT, 0, array([0, 0, 0, 256, 256, 256, 256, 0], dtype='float32'))
         e = (GL.GL_TEXTURE_2D,)
         if not self.drawBackground:
             e += (GL.GL_ALPHA_TEST,)
         with gl.glEnable(*e):
             self.fbo.bind()
             GL.glDrawArrays(GL.GL_QUADS, 0, 4)
         GL.glDisableClientState(GL.GL_TEXTURE_COORD_ARRAY)
Пример #3
0
class ThumbView(GLPerspective):
    def __init__(self, sch, **kw):
        GLPerspective.__init__(self, **kw)  # self, xmin= -32, xmax=32, ymin= -32, ymax=32, near= -1000, far=1000)
        self.far = 16000
        self.schematic = sch
        self.renderer = PreviewRenderer(sch)
        self.fboSize = (128, 128)
        self.root = self.get_root()
        # self.renderer.position = (sch.Length / 2, 0, sch.Height / 2)

    def setup_modelview(self):
        GLU.gluLookAt(-self.schematic.Width * 2.8, self.schematic.Height * 2.5 + 1, -self.schematic.Length * 1.5,
                      self.schematic.Width, 0, self.schematic.Length,
                      0, 1, 0)

    fbo = None

    def gl_draw_tex(self):
        self.clear()
        self.renderer.draw()

    def clear(self):
        if self.drawBackground:
            GL.glClearColor(0.25, 0.27, 0.77, 1.0)
        else:
            GL.glClearColor(0.0, 0.0, 0.0, 0.0)
        GL.glClear(GL.GL_DEPTH_BUFFER_BIT | GL.GL_COLOR_BUFFER_BIT)

    def gl_draw(self):
        if self.schematic.chunkCount > len(self.renderer.chunkRenderers):
            self.gl_draw_thumb()
        else:
            if self.fbo is None:
                w, h = self.fboSize
                self.fbo = FramebufferTexture(w, h, self.gl_draw_tex)
            GL.glMatrixMode(GL.GL_PROJECTION)
            GL.glLoadIdentity()
            GL.glMatrixMode(GL.GL_MODELVIEW)
            GL.glLoadIdentity()
            GL.glEnableClientState(GL.GL_TEXTURE_COORD_ARRAY)
            GL.glColor(1.0, 1.0, 1.0, 1.0)
            GL.glVertexPointer(2, GL.GL_FLOAT, 0, array([-1, -1,
                                                         - 1, 1,
                                                         1, 1,
                                                         1, -1, ], dtype='float32'))
            GL.glTexCoordPointer(2, GL.GL_FLOAT, 0, array([0, 0, 0, 256, 256, 256, 256, 0], dtype='float32'))
            e = (GL.GL_TEXTURE_2D,)
            if not self.drawBackground:
                e += (GL.GL_ALPHA_TEST,)
            with gl.glEnable(*e):
                self.fbo.bind()
                GL.glDrawArrays(GL.GL_QUADS, 0, 4)
            GL.glDisableClientState(GL.GL_TEXTURE_COORD_ARRAY)

    drawBackground = True

    def gl_draw_thumb(self):
        GL.glPushAttrib(GL.GL_SCISSOR_BIT)
        r = self.rect
        r = r.move(*self.local_to_global_offset())
        GL.glScissor(r.x, self.root.height - r.y - r.height, r.width, r.height)
        with gl.glEnable(GL.GL_SCISSOR_TEST):
            self.clear()
            self.renderer.draw()
        GL.glPopAttrib()
Пример #4
0
class ThumbView(GLPerspective):
    def __init__(self, sch, **kw):
        GLPerspective.__init__(self, **kw)  # self, xmin= -32, xmax=32, ymin= -32, ymax=32, near= -1000, far=1000)
        self.far = 16000
        self.schematic = sch
        self.renderer = PreviewRenderer(sch)
        self.fboSize = (128, 128)
        # self.renderer.position = (sch.Length / 2, 0, sch.Height / 2)

    def setup_modelview(self):
        GLU.gluLookAt(-self.schematic.Width * 2.8, self.schematic.Height * 2.5 + 1, -self.schematic.Length * 1.5,
                      self.schematic.Width, 0, self.schematic.Length,
                      0, 1, 0)

    fbo = None

    def gl_draw_tex(self):
        self.clear()
        self.renderer.draw()

    def clear(self):
        if self.drawBackground:
            GL.glClearColor(0.25, 0.27, 0.77, 1.0)
        else:
            GL.glClearColor(0.0, 0.0, 0.0, 0.0)
        GL.glClear(GL.GL_DEPTH_BUFFER_BIT | GL.GL_COLOR_BUFFER_BIT)

    def gl_draw(self):
        if self.schematic.chunkCount > len(self.renderer.chunkRenderers):
            self.gl_draw_thumb()
        else:
            if self.fbo is None:
                w, h = self.fboSize
                self.fbo = FramebufferTexture(w, h, self.gl_draw_tex)
            GL.glMatrixMode(GL.GL_PROJECTION)
            GL.glLoadIdentity()
            GL.glMatrixMode(GL.GL_MODELVIEW)
            GL.glLoadIdentity()
            GL.glEnableClientState(GL.GL_TEXTURE_COORD_ARRAY)
            GL.glColor(1.0, 1.0, 1.0, 1.0)
            GL.glVertexPointer(2, GL.GL_FLOAT, 0, array([-1, -1,
                                                         - 1, 1,
                                                         1, 1,
                                                         1, -1, ], dtype='float32'))
            GL.glTexCoordPointer(2, GL.GL_FLOAT, 0, array([0, 0, 0, 256, 256, 256, 256, 0], dtype='float32'))
            e = (GL.GL_TEXTURE_2D,)
            if not self.drawBackground:
                e += (GL.GL_ALPHA_TEST,)
            with gl.glEnable(*e):
                self.fbo.bind()
                GL.glDrawArrays(GL.GL_QUADS, 0, 4)
            GL.glDisableClientState(GL.GL_TEXTURE_COORD_ARRAY)

    drawBackground = True

    def gl_draw_thumb(self):
        GL.glPushAttrib(GL.GL_SCISSOR_BIT)
        r = self.rect
        r = r.move(*self.local_to_global_offset())
        GL.glScissor(r.x, self.get_root().height - r.y - r.height, r.width, r.height)
        with gl.glEnable(GL.GL_SCISSOR_TEST):
            self.clear()
            self.renderer.draw()
        GL.glPopAttrib()
Пример #5
0
class ThumbView(GLPerspective):
    def __init__(self, sch, **kw):
        GLPerspective.__init__(
            self, **kw
        )  # self, xmin= -32, xmax=32, ymin= -32, ymax=32, near= -1000, far=1000)
        self.p_margin = 0
        self.p_spacing = 0
        self.widget_index = 0
        self.set_position_modifiers()
        self.far = 16000
        self.schematic = sch
        self.renderer = PreviewRenderer(sch)
        self.fboSize = (128, 128)
        self.root = self.get_root()
        # self.renderer.position = (sch.Length / 2, 0, sch.Height / 2)

    def set_position_modifiers(self):
        if getattr(self, 'parent', None) is not None:
            self.p_margin = getattr(self.parent, 'margin', 0)
            self.p_spacing = getattr(self.parent, 'spacing', 0)
            if hasattr(self.parent,
                       'subwidgets') and self in self.parent.subwidgets:
                self.widget_index = self.parent.subwidgets.index(self)

    def setup_modelview(self):
        GLU.gluLookAt(-self.schematic.Width * 2.8,
                      self.schematic.Height * 2.5 + 1,
                      -self.schematic.Length * 1.5, self.schematic.Width, 0,
                      self.schematic.Length, 0, 1, 0)

    fbo = None

    def gl_draw_tex(self):
        self.clear()
        self.renderer.draw()

    def clear(self):
        if self.drawBackground:
            GL.glClearColor(0.25, 0.27, 0.77, 1.0)
        else:
            GL.glClearColor(0.0, 0.0, 0.0, 0.0)
        GL.glClear(GL.GL_DEPTH_BUFFER_BIT | GL.GL_COLOR_BUFFER_BIT)

    def gl_draw(self):
        if self.schematic.chunkCount > len(self.renderer.chunkRenderers):
            self.gl_draw_thumb()
        else:
            if self.fbo is None:
                w, h = self.fboSize
                self.fbo = FramebufferTexture(w, h, self.gl_draw_tex)
            GL.glMatrixMode(GL.GL_PROJECTION)
            GL.glLoadIdentity()
            GL.glMatrixMode(GL.GL_MODELVIEW)
            GL.glLoadIdentity()
            GL.glEnableClientState(GL.GL_TEXTURE_COORD_ARRAY)
            GL.glColor(1.0, 1.0, 1.0, 1.0)
            GL.glVertexPointer(
                2, GL.GL_FLOAT, 0,
                array([
                    -1,
                    -1,
                    -1,
                    1,
                    1,
                    1,
                    1,
                    -1,
                ], dtype='float32'))
            GL.glTexCoordPointer(
                2, GL.GL_FLOAT, 0,
                array([0, 0, 0, 256, 256, 256, 256, 0], dtype='float32'))
            e = (GL.GL_TEXTURE_2D, )
            if not self.drawBackground:
                e += (GL.GL_ALPHA_TEST, )
            with gl.glEnable(*e):
                self.fbo.bind()
                GL.glDrawArrays(GL.GL_QUADS, 0, 4)
            GL.glDisableClientState(GL.GL_TEXTURE_COORD_ARRAY)

    drawBackground = True

    def gl_draw_thumb(self):
        GL.glPushAttrib(GL.GL_SCISSOR_BIT)
        r = self.rect
        x, y = self.local_to_global_offset()
        self.set_position_modifiers()
        if hasattr(self.parent, 'axis'):
            s_sz = 0
            if self.widget_index > 0:
                s_sz = getattr(self.parent.subwidgets[self.widget_index - 1],
                               self.parent.longways, 0)
            #-# Do we have a bad hack or the real solution with `(self.parent.height - self.height) / 2 + 1` stuff?
            #-# Need extensive tests to confirm...
            if self.parent.axis == 'h':
                r = r.move(
                    x + (self.parent.height - self.height) / 2 + 1 +
                    self.p_margin - self.p_spacing - s_sz,
                    y - (self.parent.height - self.height) / 2)
            else:
                r = r.move(
                    x - (self.parent.width - self.height) / 2,
                    y - (self.parent.width - self.height) / 2 + 1 +
                    self.p_margin - self.p_spacing - s_sz)
        else:
            r = r.move(*self.local_to_global_offset())
        GL.glScissor(r.x, self.root.height - r.y - r.height, r.width, r.height)
        with gl.glEnable(GL.GL_SCISSOR_TEST):
            self.clear()
            self.renderer.draw()
        GL.glPopAttrib()
Пример #6
0
class ThumbView(GLPerspective):
    def __init__(self, sch, **kw):
        GLPerspective.__init__(self, **kw)  # self, xmin= -32, xmax=32, ymin= -32, ymax=32, near= -1000, far=1000)
        self.p_margin = 0
        self.p_spacing = 0
        self.widget_index = 0
        self.set_position_modifiers()
        self.far = 16000
        self.schematic = sch
        self.renderer = PreviewRenderer(sch)
        self.fboSize = (128, 128)
        self.root = self.get_root()
        # self.renderer.position = (sch.Length / 2, 0, sch.Height / 2)

    def set_position_modifiers(self):
        if getattr(self, 'parent', None) is not None:
            self.p_margin = getattr(self.parent, 'margin', 0)
            self.p_spacing = getattr(self.parent, 'spacing', 0)
            if hasattr(self.parent, 'subwidgets') and self in self.parent.subwidgets:
                self.widget_index = self.parent.subwidgets.index(self)

    def setup_modelview(self):
        GLU.gluLookAt(-self.schematic.Width * 2.8, self.schematic.Height * 2.5 + 1, -self.schematic.Length * 1.5,
                      self.schematic.Width, 0, self.schematic.Length,
                      0, 1, 0)

    fbo = None

    def gl_draw_tex(self):
        self.clear()
        self.renderer.draw()

    def clear(self):
        if self.drawBackground:
            GL.glClearColor(0.25, 0.27, 0.77, 1.0)
        else:
            GL.glClearColor(0.0, 0.0, 0.0, 0.0)
        GL.glClear(GL.GL_DEPTH_BUFFER_BIT | GL.GL_COLOR_BUFFER_BIT)

    def gl_draw(self):
        if self.schematic.chunkCount > len(self.renderer.chunkRenderers):
            self.gl_draw_thumb()
        else:
            if self.fbo is None:
                w, h = self.fboSize
                self.fbo = FramebufferTexture(w, h, self.gl_draw_tex)
            GL.glMatrixMode(GL.GL_PROJECTION)
            GL.glLoadIdentity()
            GL.glMatrixMode(GL.GL_MODELVIEW)
            GL.glLoadIdentity()
            GL.glEnableClientState(GL.GL_TEXTURE_COORD_ARRAY)
            GL.glColor(1.0, 1.0, 1.0, 1.0)
            GL.glVertexPointer(2, GL.GL_FLOAT, 0, array([-1, -1,
                                                         - 1, 1,
                                                         1, 1,
                                                         1, -1, ], dtype='float32'))
            GL.glTexCoordPointer(2, GL.GL_FLOAT, 0, array([0, 0, 0, 256, 256, 256, 256, 0], dtype='float32'))
            e = (GL.GL_TEXTURE_2D,)
            if not self.drawBackground:
                e += (GL.GL_ALPHA_TEST,)
            with gl.glEnable(*e):
                self.fbo.bind()
                GL.glDrawArrays(GL.GL_QUADS, 0, 4)
            GL.glDisableClientState(GL.GL_TEXTURE_COORD_ARRAY)

    drawBackground = True

    def gl_draw_thumb(self):
        GL.glPushAttrib(GL.GL_SCISSOR_BIT)
        r = self.rect
        x, y = self.local_to_global_offset()
        self.set_position_modifiers()
        if hasattr(self.parent, 'axis'):
            s_sz = 0
            if self.widget_index > 0:
                s_sz = getattr(self.parent.subwidgets[self.widget_index - 1], self.parent.longways, 0)
            #-# Do we have a bad hack or the real solution with `(self.parent.height - self.height) / 2 + 1` stuff?
            #-# Need extensive tests to confirm...
            if self.parent.axis == 'h':
                r = r.move(x + (self.parent.height - self.height) / 2 + 1 + self.p_margin - self.p_spacing - s_sz, y - (self.parent.height - self.height) / 2)
            else:
                r = r.move(x - (self.parent.width - self.height) / 2, y - (self.parent.width - self.height) / 2 + 1 + self.p_margin - self.p_spacing - s_sz)
        else:
            r = r.move(*self.local_to_global_offset())
        GL.glScissor(r.x, self.root.height - r.y - r.height, r.width, r.height)
        with gl.glEnable(GL.GL_SCISSOR_TEST):
            self.clear()
            self.renderer.draw()
        GL.glPopAttrib()