def __init__(self, parent=None, **kw): # Qt init QLabel.__init__(self, parent) self._signalRedisplay.connect(self.update) self.setAutoFillBackground(False) self.setMouseTracking(True) # OS Mesa init self.__dirtyPixmap = True self.__context = mesa.OSMesaCreateContext(mesa.OSMESA_BGRA, None) assert self.__context != 0 # OpenGL Plot backend init OpenGLPlotCanvas.__init__(self, parent, **kw)
def resizeEvent(self, event): width, height = self.size().width(), self.size().height() # Update underlying pixmap self.__dirtyPixmap = True self.__pixmap = np.empty((height, width, 4), dtype=np.uint8) errCode = mesa.OSMesaMakeCurrent(self.__context, self.__pixmap, gl.GL_UNSIGNED_BYTE, width, height) assert errCode == gl.GL_TRUE mesa.OSMesaPixelStore(mesa.OSMESA_Y_UP, 0) self.makeCurrent() gl.testGL() self.initializeGL() self.resizeGL(width, height) QLabel.resizeEvent(self, event)
def paintEvent(self, event): # Only refresh content when paint comes from backend if self.__dirtyPixmap: self.__dirtyPixmap = False height, width = self.__pixmap.shape[0:2] assert width == self.size().width() assert height == self.size().height() errCode = mesa.OSMesaMakeCurrent(self.__context, self.__pixmap, gl.GL_UNSIGNED_BYTE, width, height) assert errCode == gl.GL_TRUE self.makeCurrent() self.paintGL() gl.glFinish() image = QImage(self.__pixmap.data, width, height, QImage.Format_ARGB32) self.setPixmap(QPixmap.fromImage(image)) QLabel.paintEvent(self, event)
def setCursor(self, cursor=CURSOR_DEFAULT): cursor = self._CURSORS[cursor] QLabel.setCursor(self, QCursor(cursor))