def on_draw(self):

        """ clear background """
        glEnable(GL_NORMALIZE)
        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)

        height_per_panel = self.SETTINGS.WINDOW_HEIGHT_CURRENT / self.NBR_CHANNELS
        for panel in range(self.NBR_CHANNELS):

            """ start - panel data """
            glPushMatrix()

            glViewport(0, panel * height_per_panel, self.SETTINGS.WINDOW_WIDTH_CURRENT, height_per_panel)
            # apply current scaling (if any) to the active panel
            if self.SETTINGS.CURRENT_glOrtho_MATRIX:
                gl_ortho_projection(
                    self.SETTINGS.CURRENT_glOrtho_MATRIX[0],
                    self.SETTINGS.CURRENT_glOrtho_MATRIX[1],
                    self.SETTINGS.CURRENT_glOrtho_MATRIX[2],
                    self.SETTINGS.CURRENT_glOrtho_MATRIX[3],
                )

                # draw lines #
            """ draw vertical line first """
            if self.SHOW_VERTICAL_LINE:
                self.line_ver.draw()

            """ draw data plot """
            glLineWidth(3.0)
            # TODO: this is a temporary situation with one VBO per panel!
            glBindBuffer(GL_ARRAY_BUFFER, self.vbo_colors[panel][0])
            set_glColorPointer_default(n_COORDINATES_PER_COLOR)
            # TODO: this is a temporary situation with one VBO per panel!
            gl_on_draw_default(self.vbo_data[panel][0], n_COORDINATES_PER_VERTEX, self.nPoints, GL_LINE_STRIP)

            """ draw horizontal line - which is made off 2 points only """
            if self.SHOW_HORIZONTAL_LINE:
                self.line_hor.draw()

            glPopMatrix()
            """ end - panel data """

            # draw axes, tics and labels #
            if self.SHOW_AXES:
                self.coord_axes.draw()
                self.y_axis_tics.draw(self.Y_LIMS)

                # go back to main perspective and show the FPT
        glPushMatrix()
        glViewport(0, 0, self.SETTINGS.WINDOW_WIDTH_CURRENT, self.SETTINGS.WINDOW_HEIGHT_CURRENT)
        gl_ortho_projection(
            self.RESIZE_OFFSET_X,
            self.SETTINGS.WINDOW_WIDTH_CURRENT,
            self.RESIZE_OFFSET_Y,
            self.SETTINGS.WINDOW_HEIGHT_CURRENT,
        )
        # draw FPS  #
        if self.SHOW_FPS:
            self.fps_display.draw()
        glPopMatrix()
    def on_draw(self):
        ''' clear background '''
        glEnable(GL_NORMALIZE)
        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)

        height_per_panel = (self.SETTINGS.WINDOW_HEIGHT_CURRENT /
                            self.NBR_CHANNELS)
        for panel in range(self.NBR_CHANNELS):
            ''' start - panel data '''
            glPushMatrix()

            glViewport(0, panel * height_per_panel,
                       self.SETTINGS.WINDOW_WIDTH_CURRENT, height_per_panel)
            # apply current scaling (if any) to the active panel
            if self.SETTINGS.CURRENT_glOrtho_MATRIX:
                gl_ortho_projection(self.SETTINGS.CURRENT_glOrtho_MATRIX[0],
                                    self.SETTINGS.CURRENT_glOrtho_MATRIX[1],
                                    self.SETTINGS.CURRENT_glOrtho_MATRIX[2],
                                    self.SETTINGS.CURRENT_glOrtho_MATRIX[3])

            # draw lines #
            ''' draw vertical line first '''
            if self.SHOW_VERTICAL_LINE:
                self.line_ver.draw()
            ''' draw data plot '''
            glLineWidth(3.0)
            # TODO: this is a temporary situation with one VBO per panel!
            glBindBuffer(GL_ARRAY_BUFFER, self.vbo_colors[panel][0])
            set_glColorPointer_default(n_COORDINATES_PER_COLOR)
            # TODO: this is a temporary situation with one VBO per panel!
            gl_on_draw_default(self.vbo_data[panel][0],
                               n_COORDINATES_PER_VERTEX, self.nPoints,
                               GL_LINE_STRIP)
            ''' draw horizontal line - which is made off 2 points only '''
            if self.SHOW_HORIZONTAL_LINE:
                self.line_hor.draw()

            glPopMatrix()
            ''' end - panel data '''

            # draw axes, tics and labels #
            if self.SHOW_AXES:
                self.coord_axes.draw()
                self.y_axis_tics.draw(self.Y_LIMS)

        # go back to main perspective and show the FPT
        glPushMatrix()
        glViewport(0, 0, self.SETTINGS.WINDOW_WIDTH_CURRENT,
                   self.SETTINGS.WINDOW_HEIGHT_CURRENT)
        gl_ortho_projection(self.RESIZE_OFFSET_X,
                            self.SETTINGS.WINDOW_WIDTH_CURRENT,
                            self.RESIZE_OFFSET_Y,
                            self.SETTINGS.WINDOW_HEIGHT_CURRENT)
        # draw FPS  #
        if self.SHOW_FPS:
            self.fps_display.draw()
        glPopMatrix()
示例#3
0
 def draw(self):
     ''' draw horizontal line - which is made off 2 points only '''
     glLineWidth(self.LINE_WIDTH)
     glBindBuffer(GL_ARRAY_BUFFER, self.color_id)
     set_glColorPointer_default(self.n_COORDINATES_PER_COLOR)   
     gl_on_draw_default(self.vbo_id, self.n_COORDINATES_PER_VERTEX, 2, GL_LINE_STRIP)
    def on_draw(self):

        ''' clear background '''    
        glEnable(GL_NORMALIZE)
        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)

        # calculate the height per panel
        height_per_panel = (self.mainapp.SETTINGS.WINDOW_HEIGHT_CURRENT / self.mainapp.NBR_CHANNELS)

        # calculate how many points we need to render
        nbr_points_to_draw = self.calc_nbr_points_to_draw()

        # loop over all panels
        for panel in range(self.mainapp.NBR_CHANNELS):

            ''' START THIS PANEL '''
            glPushMatrix()

            glViewport(0, panel * height_per_panel, self.mainapp.SETTINGS.WINDOW_WIDTH_CURRENT, height_per_panel)
            # apply current scaling (if any) to the active panel
            if self.mainapp.SETTINGS.CURRENT_glOrtho_MATRIX:
                gl_ortho_projection(self.mainapp.SETTINGS.CURRENT_glOrtho_MATRIX[0], self.mainapp.SETTINGS.CURRENT_glOrtho_MATRIX[1], self.mainapp.SETTINGS.CURRENT_glOrtho_MATRIX[2], self.mainapp.SETTINGS.CURRENT_glOrtho_MATRIX[3])

            # draw lines #
            ''' draw vertical line first '''
            if self.mainapp.SHOW_VERTICAL_LINE:
                self.mainapp.line_ver.draw()

            ''' start - panel data '''
            # TODO: make line width a parameter. Line width must be set AFTER the 
            # glPushMatrix() statement above.
            glLineWidth(3.0)

            ''' draw data plot '''
            # TODO: this is a temporary situation with one VBO per panel!
            glBindBuffer(GL_ARRAY_BUFFER, self.mainapp.vbo_colors[panel][0])
            set_glColorPointer_default(n_COORDINATES_PER_COLOR)


            # TODO: this is a temporary situation with one VBO per panel!
            gl_on_draw_default(self.mainapp.vbo_data[panel][0], n_COORDINATES_PER_VERTEX, nbr_points_to_draw, GL_LINE_STRIP)
            ''' end - panel data '''


            ''' draw horizontal line - which is made off 2 points only '''
            if self.mainapp.SHOW_HORIZONTAL_LINE:
                self.mainapp.line_hor.draw()

            glPopMatrix()
            ''' END THIS PANEL '''

            # draw axes, tics and labels #
            if self.mainapp.SHOW_AXES:
                self.mainapp.coord_axes.draw()
                self.mainapp.y_axis_tics.draw(self.mainapp.Y_LIMS)
        
        # go back to main perspective and show the FPT
        glPushMatrix()
        glViewport(0, 0, self.mainapp.SETTINGS.WINDOW_WIDTH_CURRENT, self.mainapp.SETTINGS.WINDOW_HEIGHT_CURRENT)
        gl_ortho_projection(self.mainapp.RESIZE_OFFSET_X, self.mainapp.SETTINGS.WINDOW_WIDTH_CURRENT, self.mainapp.RESIZE_OFFSET_Y, self.mainapp.SETTINGS.WINDOW_HEIGHT_CURRENT)
        # draw FPS  #
        if self.mainapp.SHOW_FPS:
            self.mainapp.fps_display.draw()
        glPopMatrix()