def drawSingleStream(self):
     """Draw a single non-stereo stream"""
     if self.left.bayer:
         gpu.useProgram(self.bayerVideo)
     else:
         gpu.useProgram(self.rgbVideo)
     glDisable(GL_BLEND)
     self.left.draw()
 def drawRedBlueStreams(self):
     """Red-blue stereo view of grayscale"""
     if self.left.bayer or self.right.bayer:
         gpu.useProgram(self.bayerAnaglyphVideo)
     else:
         gpu.useProgram(self.rgbAnaglyphVideo)
     glDisable(GL_BLEND)
     glColorMask(GL_TRUE, GL_FALSE, GL_FALSE, GL_FALSE)
     self.left.draw()
     glColorMask(GL_FALSE, GL_TRUE, GL_TRUE, GL_FALSE)
     self.right.draw()
     glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE)
 def drawBlendedStreams(self):
     """Stream pair each at 50% opacity"""
     if self.left.bayer or self.right.bayer:
         gpu.useProgram(self.bayerVideo)
     else:
         gpu.useProgram(self.rgbVideo)
     if self.left.visible and self.right.visible:
         opacity = 0.5
     else:
         opacity = 1.0
     glEnable(GL_BLEND)
     glBlendColor(1.0, 1.0, 1.0, opacity)
     glBlendFunc(GL_CONSTANT_ALPHA, GL_ZERO)
     self.left.draw()
     glBlendColor(1.0, 1.0, 1.0, opacity)
     glBlendFunc(GL_CONSTANT_ALPHA, GL_ONE)
     self.right.draw()
 def drawSideBySide(self):
     """Side by side view of stereo stream pair"""
     if self.left.bayer or self.right.bayer:
         gpu.useProgram(self.bayerVideo)
     else:
         gpu.useProgram(self.rgbVideo)
     glDisable(GL_BLEND)
     self.left.draw()
     self.right.draw()
     # Separator
     gpu.useProgram(self.flatShader)
     glEnableClientState(GL_COLOR_ARRAY)
     glVertexPointer(2, GL_FLOAT, 0,
             ((0, -0.5),(0, 0.5)))
     glColorPointer(3, GL_FLOAT, 0,
             (self.bkColor, self.bkColor))
     glDrawArrays(GL_LINES, 0, 2)
     glDisableClientState(GL_COLOR_ARRAY)