예제 #1
0
파일: glplot.py 프로젝트: essar/pySki
    def _draw_marker(self):
        gl.glPushMatrix()

        ws = [50.0, 25.0, 25.0, 25.0]
        hs = [100.0, -50.0, 50.0, -50.0]
        
        for i in range(len(self.plot_data)):
            # Calculate dimensions of marker
            mkr_width = int(ws[i] * self.cfg.scale_x)
            mkr_height = int(hs[i] * self.cfg.scale_y)
            
            # Get last plotted x/y
            mkr_x = self.plot_data[i].x_data[self.draw_idx]
            mkr_y = self.plot_data[i].y_data[self.draw_idx]
        
            # Get last plotted colour
            (cr, cg, cb) = self.plot_data[i].c_data[self.draw_idx]

            gl.glPolygonMode(gl.GL_FRONT_AND_BACK, gl.GL_FILL)
            gl.glColor4f(cr, cg, cb, 0.5)
            
            # Draw marker triangle
            gl.glBegin(gl.GL_TRIANGLES)
            gl.glVertex3i(mkr_x, mkr_y, 0)
            gl.glVertex3i((mkr_x - mkr_width), (mkr_y + mkr_height), 0)
            gl.glVertex3i((mkr_x + mkr_width), (mkr_y + mkr_height), 0)
            gl.glEnd()
        
        gl.glPopMatrix()
def render_circle(x, y, radius, colour):
    """https://gist.github.com/tsterker/1396796"""

    dx, dy = radius, 0

    g.glBegin(g.GL_TRIANGLE_FAN)
    g.glColor3f(*colour)
    g.glVertex2f(x, y)
    for i in range(_CIRCLE_ITERATIONS + 1):
        g.glVertex2f(x + dx, y + dy)
        dx, dy = (dx * _CIRCLE_C - dy * _CIRCLE_S), (dy * _CIRCLE_C +
                                                     dx * _CIRCLE_S)
    g.glEnd()
예제 #3
0
파일: glplot.py 프로젝트: essar/pySki
 def _draw_background(self):
     gl.glPushMatrix()
     
     # Scale to fit window
     gl.glScalef(*self.cfg._update_scaling())
     
     width = int(self.cfg.plot_width)
     height = int(self.cfg.plot_height)
     depth = -1
     log.debug('Drawing background; width=%d, height=%d, depth=%d', width, height, depth)
     
     gl.glPolygonMode(gl.GL_FRONT_AND_BACK, gl.GL_FILL)
     gl.glColor4f(*self.cfg.bg_colour_4f)
     
     gl.glBegin(gl.GL_QUADS)
     gl.glVertex3i(0, 0, depth)
     gl.glVertex3i(0, height, depth)
     gl.glVertex3i(width, height, depth)
     gl.glVertex3i(width, 0, depth)
     gl.glEnd()
     
     gl.glPopMatrix()
예제 #4
0
파일: glplot.py 프로젝트: essar/pySki
 def _draw_axis(self):
     gl.glPushMatrix()
     
     # Scale to fit window
     self.cfg._update_scaling()
     
     width = int(self.cfg.plot_width)
     height = int(self.cfg.plot_height)
     log.debug('Drawing axis; width=%d, height=%d', width, height)
     
     gl.glPolygonMode(gl.GL_FRONT_AND_BACK, gl.GL_LINE)
     gl.glColor4f(1.0, 1.0, 1.0, 1.0)
     
     gl.glBegin(gl.GL_LINES)
     gl.glVertex3i(0, 0, 0)
     gl.glVertex3i(width, 0, 0)
     
     gl.glVertex3i(0, 0, 0)
     gl.glVertex3i(0, height, 0)
     
     gl.glEnd()
     
     for (_lbl, pos) in self.plot_data[self.plot_idx].x_axis_markers:
         gl.glBegin(gl.GL_LINES)
         gl.glVertex3i(int(pos), 0, 0)
         gl.glVertex3i(int(pos), -1, 0)
         gl.glEnd()
         log.debug('Drawing x-axis marker at %d', int(pos))
         
         if _lbl is not None:
             gl.glPushMatrix()
             gl.glLoadIdentity()
             pyglet.text.Label(str(_lbl), font_name='Arial', font_size=8, x=pos, y=-0.5).draw()
             gl.glPopMatrix()
         
     for (_lbl, pos) in self.plot_data[self.plot_idx].y_axis_markers:
         gl.glBegin(gl.GL_LINES)
         gl.glVertex3i(0, int(pos), 0)
         gl.glVertex3i(-1, int(pos), 0)
         gl.glEnd()
         log.debug('Drawing y-axis marker at %d', int(pos))
     
     gl.glPopMatrix()