예제 #1
0
 def __init__ (self, parent = None):
     '''
     Viewer's Constructor
     '''
     frmt = QGLFormat ()
     frmt.setSampleBuffers (True)
     
     super (OGLViewer, self).__init__ (frmt, parent)
     
     #self.setMouseTracking (True)
     self.__mouse = QCursor ()
     self.setCursor (Qt.OpenHandCursor)
     self.setFocusPolicy (Qt.ClickFocus)
     
     self.__Ctrl_or_Meta_key_pressed = False
     self.__Alt_key_pressed = False
     
     self.__w = 720
     self.__h = 450
     
     self._init_camera_vars ()
     self._init_objec_vars  ()
     
     # matrix changed signal. The signal's payload is the matrix itself.
     self.__GLMatrixChanged = SIGNAL ("MatrixChanged (PyQt_PyObject)")
     
     self.__compo_light_pos = QVector3D (.3,.2,.1)
     self.__AmbientMaterial = QVector3D ( .2, .2, .2)
예제 #2
0
     def __init__(self, parent, enableUi,File=""):
         f = QGLFormat()
         f.setStencil(True)
         f.setRgba(True)
         f.setDepth(True)
         f.setDoubleBuffer(True)
         QGLWidget.__init__(self, f, parent=parent)
         self.setMinimumSize(500, 500)
         self._enableUi=enableUi
         self.pymol = pymol2.PyMOL()# _pymolPool.getInstance()
         self.pymol.start()
         self.cmd = self.pymol.cmd
         # self.toPymolName = self.pymol.toPymolName ### Attribute Error
         self._pymolProcess()
         if not self._enableUi:
             self.pymol.cmd.set("internal_gui",0)
             self.pymol.cmd.set("internal_feedback",0)
             self.pymol.cmd.button("double_left","None","None")
             self.pymol.cmd.button("single_right","None","None")

         self.pymol.cmd.load(File)
         self.pymol.reshape(self.width(),self.height())
         self._timer = QtCore.QTimer()
         self._timer.setSingleShot(True)
         self._timer.timeout.connect(self._pymolProcess)
         self.resizeGL(self.width(),self.height())
         #globalSettings.settingsChanged.connect(self._updateGlobalSettings)
         self._updateGlobalSettings()
예제 #3
0
파일: video.py 프로젝트: compmem/psyqt
    def __init__(self):
        # init the widget
        #QWidget.__init__(self, parent)

        # set up the scene
        self.scene=QGraphicsScene()
        self.scene.setSceneRect(0,0,800,600)

        # add a view of that scene
        self.view = QGraphicsView()
        self.view.setScene(self.scene)
        self.view.setRenderHint(QPainter.Antialiasing)
        self.view.setFixedSize(800,600)
        self.view.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
        self.view.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff)

        # set the screen sync to vertical retrace
        val = "1"
        # Set for nVidia linux
        os.environ["__GL_SYNC_TO_VBLANK"] = val
        # Set for recent linux Mesa DRI Radeon
        os.environ["LIBGL_SYNC_REFRESH"] = val

        qglf = QGLFormat()
        qglf.setSampleBuffers(True)
        self.glw = QGLWidget(qglf)
        self.glw.setAutoBufferSwap(False)
        self.view.setViewport(self.glw)

        #self.view.showFullScreen()
        self.view.show()

        self.last_finish = 0
        
        QTimer.singleShot(0,self.glw.swapBuffers)
예제 #4
0
    def __init__(self, parent=None):
        '''
        Viewer's Constructor
        '''
        frmt = QGLFormat()
        frmt.setSampleBuffers(True)

        super(OGLViewer, self).__init__(frmt, parent)

        #self.setMouseTracking (True)
        self.__mouse = QCursor()
        self.setCursor(Qt.OpenHandCursor)
        self.setFocusPolicy(Qt.ClickFocus)

        self.__Ctrl_or_Meta_key_pressed = False
        self.__Alt_key_pressed = False

        self.__w = 720
        self.__h = 450

        self._init_camera_vars()
        self._init_objec_vars()

        # matrix changed signal. The signal's payload is the matrix itself.
        self.__GLMatrixChanged = SIGNAL("MatrixChanged (PyQt_PyObject)")

        self.__compo_light_pos = QVector3D(.3, .2, .1)
        self.__AmbientMaterial = QVector3D(.2, .2, .2)
예제 #5
0
    def __init__(self):
        # init the widget
        #QWidget.__init__(self, parent)

        # set up the scene
        self.scene = QGraphicsScene()
        self.scene.setSceneRect(0, 0, 800, 600)

        # add a view of that scene
        self.view = QGraphicsView()
        self.view.setScene(self.scene)
        self.view.setRenderHint(QPainter.Antialiasing)
        self.view.setFixedSize(800, 600)
        self.view.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
        self.view.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff)

        # set the screen sync to vertical retrace
        val = "1"
        # Set for nVidia linux
        os.environ["__GL_SYNC_TO_VBLANK"] = val
        # Set for recent linux Mesa DRI Radeon
        os.environ["LIBGL_SYNC_REFRESH"] = val

        qglf = QGLFormat()
        qglf.setSampleBuffers(True)
        self.glw = QGLWidget(qglf)
        self.glw.setAutoBufferSwap(False)
        self.view.setViewport(self.glw)

        #self.view.showFullScreen()
        self.view.show()

        self.last_finish = 0

        QTimer.singleShot(0, self.glw.swapBuffers)
예제 #6
0
    def __init__(self):
        super(MainWindow, self).__init__()

        with open('primitives.glslf', 'r') as f:
            self.src_primitives = f.read()
        with open('sdRayMarchRenderer.glslf', 'r') as f:
            self.src_renderer = f.read()

        w = QtGui.QFont()
        self.font = w
        w.setFamily('Lucida')
        w.setFixedPitch(True)
        w.setPointSize(10)

        l0 = QtGui.QHBoxLayout()
        self.setLayout(l0)
        qgl_format = QGLFormat()
        qgl_format.setSwapInterval(1)
        w = GLPlotWidget(qgl_format)
        self.glview = w
        l0.addWidget(self.glview)
        w.setSizePolicy(QtGui.QSizePolicy.Expanding,
                        QtGui.QSizePolicy.Expanding)

        l1 = QtGui.QVBoxLayout()
        l0.addLayout(l1)
        w = QtGui.QTextEdit(self)
        self.txtCode = w
        l1.addWidget(w)
        w.setFont(self.font)
        w.setLineWrapMode(QtGui.QTextEdit.NoWrap)

        l2 = QtGui.QHBoxLayout()
        l1.addLayout(l2)
        w = QtGui.QPushButton('update', self)
        self.btShUpdate = w
        l2.addWidget(w)
        w.setToolTip('update shader from code')
        w.clicked.connect(self.updateShader)
        w = QtGui.QPushButton('save', self)
        self.btShSave = w
        l2.addWidget(w)
        w.setToolTip('save shader from code')
        w.clicked.connect(self.saveShaderDlg)
        w = QtGui.QPushButton('load', self)
        self.btShLoad = w
        l2.addWidget(w)
        w.setToolTip('load shader from code')
        w.clicked.connect(self.loadShaderDlg)
        w = QtGui.QPushButton('play', self)
        self.btPlay = w
        l2.addWidget(w)
        w.setToolTip('on/off update on timer')
        w.clicked.connect(self.play)

        self.txtCode.setPlainText(
            "d = opU( sdPlane(pos), sdSphere(pos-vec3( 0.0,0.25, 0.0), 0.25 ) );"
        )
        self.makeShaderCode()
예제 #7
0
    def __init__(self):
        super(MainWindow, self).__init__()
        qgl_format = QGLFormat()
        qgl_format.setSwapInterval(1)

        w = QtGui.QFont()
        self.font = w
        w.setFamily('Lucida')
        w.setFixedPitch(True)
        w.setPointSize(10)

        l0 = QtGui.QHBoxLayout()
        self.setLayout(l0)
        w = GLPlotWidget(qgl_format)
        self.glview = w
        l0.addWidget(self.glview)
        w.setSizePolicy(QtGui.QSizePolicy.Expanding,
                        QtGui.QSizePolicy.Expanding)

        l1 = QtGui.QVBoxLayout()
        l0.addLayout(l1)
        w = QtGui.QTextEdit(self)
        self.txtCode = w
        l1.addWidget(w)
        w.setFont(self.font)
        w.setLineWrapMode(QtGui.QTextEdit.NoWrap)

        l2 = QtGui.QHBoxLayout()
        l1.addLayout(l2)
        w = QtGui.QPushButton('play', self)
        self.btPlay = w
        l2.addWidget(w)
        w.setToolTip('on/off update on timer')
        w.clicked.connect(self.play)
        w = QtGui.QPushButton('update', self)
        self.btShUpdate = w
        l2.addWidget(w)
        w.setToolTip('update shader from code')
        w.clicked.connect(self.updateShader)
        w = QtGui.QPushButton('save', self)
        self.btShSave = w
        l2.addWidget(w)
        w.setToolTip('save shader from code')
        w.clicked.connect(self.saveShaderDlg)
        w = QtGui.QPushButton('load', self)
        self.btShLoad = w
        l2.addWidget(w)
        w.setToolTip('load shader from code')
        w.clicked.connect(self.loadShaderDlg)
        w = QtGui.QLineEdit()
        self.bxShToy = w
        l2.addWidget(w)
        w.returnPressed.connect(self.downloadShaderEvent)
        #l3 = QtGui.QHBoxLayout(); l1.addLayout(l3)
        #w = QtGui.QLineEdit();
        #w = QtGui.QPushButton('fromShadeToy',self);   self.btSave  = w; l2.addWidget(w); w.setToolTip('load shader from code');   w.clicked.connect(self.loadShaderDlg);

        #self.loadShaderToy ("Torus_intersection.glslf")
        self.loadShader("Torus_intersection.glslf")
예제 #8
0
 def changeRendering(self):
     if parameters.instance.use_OpenGL:
         self.ui.previousData.setViewport(
             QGLWidget(QGLFormat(QGL.SampleBuffers)))
         self.ui.currentData.setViewport(
             QGLWidget(QGLFormat(QGL.SampleBuffers)))
     else:
         self.ui.previousData.setViewport(QWidget())
         self.ui.currentData.setViewport(QWidget())
예제 #9
0
 def __init__(self, parent = None):
     if hasattr(QGLFormat, 'setVersion'):
         # Modern OpenGL
         f = QGLFormat()
         f.setVersion(3, 3)
         f.setProfile(QGLFormat.CoreProfile)
         c = QGLContext(f, None)
         QGLWidget.__init__(self, c, parent)
         print "Version is set to 3.3"
     else:
         QGLWidget.__init__(self, parent)
예제 #10
0
    def __resize(self, roundupImageSize):
        # QGLPixelBuffer size must be power of 2
        assert roundupImageSize == roundUpSize(roundupImageSize)

        # force alpha format, it should be the default,
        # but isn't all the time (uninitialized)
        fmt = QGLFormat()
        fmt.setAlpha(True)

        self.__pixBuf = QGLPixelBuffer(roundupImageSize, fmt)
        assert self.__pixBuf.format().alpha()
        self.__pixBuf.makeCurrent()
        self.__pixBuf.bindToDynamicTexture(self.__pixBuf.generateDynamicTexture())
        self.__compileShaders()
        self.__pixBuf.doneCurrent()
예제 #11
0
    def __init__(self, scene, *args, **kwargs):
        super(MainWindow, self).__init__(*args, **kwargs)
        # self.windowTitleChanged.connect(self.onWindowTitleChange)
        self.setWindowTitle("timeline0")

        toolbar = QToolBar("och")
        toolbar.setIconSize(QSize(20, 20))
        self.addToolBar(toolbar)

        button_action = QAction(QIcon("balance.png"), "ochtuse", self)
        button_action.setStatusTip("och, just do something")
        button_action.triggered.connect(self.onMyToolBarButtonClick)
        button_action.setCheckable(True)
        # button_action.setShortcut(QKeySequence("Ctrl+p"))
        # button_action.setShortcut(QKeySequence(Qt.CTRL + Qt.Key_P))
        button_action.setShortcut(QKeySequence.Print)
        toolbar.addAction(button_action)
        toolbar.addWidget(QLabel("OCH"))
        toolbar.addWidget(QCheckBox())

        self.setStatusBar(QStatusBar(self))

        menu = self.menuBar()

        file_menu = menu.addMenu("&File")
        file_menu.addAction(button_action)
        file_menu.addSeparator()
        file_menu.addMenu("Do not push")
        #        file_menu.addAction()

        self._scene = scene
        gfx = self._gfx = QGraphicsView(self)
        # label = QLabel("och!")
        # label.setAlignment(Qt.AlignCenter)

        # ref https://doc.qt.io/archives/qq/qq26-openglcanvas.html
        self.setCentralWidget(gfx)
        fmt = QGLFormat(QGL.SampleBuffers)
        wdgt = QGLWidget(fmt)
        assert (wdgt.isValid())
        gfx.setViewport(wdgt)
        gfx.setViewportUpdateMode(QGraphicsView.FullViewportUpdate)
        gfx.setScene(scene)

        # populate fills the scene with interesting stuff.
        self.populate()

        # Make it bigger
        self.setWindowState(Qt.WindowMaximized)

        # Well... it's going to have an animation, ok?

        # So, I set a timer to 1 second
        self.animator = QTimer()

        # And when it triggers, it calls the animate method
        self.animator.timeout.connect(self.animate)

        # And I animate it once manually.
        self.animate()
예제 #12
0
파일: glmesh.py 프로젝트: cuulee/meshlayer
    def __resize(self, roundupImageSize):
        # QGLPixelBuffer size must be power of 2
        assert roundupImageSize == roundUpSize(roundupImageSize)

        # force alpha format, it should be the default,
        # but isn't all the time (uninitialized)
        fmt = QGLFormat()
        fmt.setAlpha(True)

        self.__pixBuf = QGLPixelBuffer(roundupImageSize, fmt)
        assert self.__pixBuf.format().alpha()
        self.__pixBuf.makeCurrent()
        self.__pixBuf.bindToDynamicTexture(
            self.__pixBuf.generateDynamicTexture())
        self.__compileShaders()
        self.__pixBuf.doneCurrent()
예제 #13
0
 def __init__(self, thread, parent):
     QDialog.__init__(self, parent)
     self.ui = Ui_PlotPreview()
     self.ui.setupUi(self)
     self.parent = parent
     icon = QIcon()
     icon.addPixmap(QPixmap(":/icons/reload.png"), QIcon.Normal, QIcon.Off)
     self.update_btn = QPushButton(icon, "Update")
     self.ui.buttonBox.addButton(self.update_btn, QDialogButtonBox.ApplyRole)
     self.update_btn.clicked.connect(self.render_image)
     self._pix = None
     self._image_list = None
     self._thread = thread
     self.scene = QGraphicsScene()
     self.scene.setSceneRect(0,0,1,1)
     self.ui.imageView.setScene(self.scene)
     self.pix_item = None
     self.ui.imageView.setEnabled(False)
     self.ui.imageView.setInteractive(False)
     self.ui.imageView.setDragMode(QGraphicsView.ScrollHandDrag)
     self.pic_w = None
     self.pic_c = None
     self.show_pic_w = None
     self.show_pic_c = None
     timer = QTimer(self)
     timer.setSingleShot(True)
     timer.setInterval(500)
     self.timer = timer
     timer.timeout.connect(self.render_image)
     if parameters.instance.use_OpenGL:
         self.ui.imageView.setViewport(QGLWidget(QGLFormat(QGL.SampleBuffers)))
예제 #14
0
 def checkGL(self):
     gl_support = True
     if not sys.platform.startswith("linux"):
         #causes a segmetnation fault
         if not QGLFormat.hasOpenGL():
             gl_support = False
     return gl_support
예제 #15
0
파일: metms.py 프로젝트: jerkos/metms
 def checkGL(self):
     gl_support = True
     if not sys.platform.startswith("linux"):
         #causes a segmetnation fault
         if not QGLFormat.hasOpenGL():
             gl_support=False            
     return gl_support  
예제 #16
0
파일: _qt.py 프로젝트: bdurin/vispy
    def _init_specific(self, vsync, dec, fs, parent, context, kwargs):

        # Deal with context
        if not context.istaken:
            widget = kwargs.pop('shareWidget', None) or self
            context.take('qt', widget)
            glformat = _set_config(context.config)
            glformat.setSwapInterval(1 if vsync else 0)
            if widget is self:
                widget = None  # QGLWidget does not accept self ;)
        elif context.istaken == 'qt':
            widget = context.backend_canvas
            glformat = QGLFormat.defaultFormat()
            if 'shareWidget' in kwargs:
                raise RuntimeError('Cannot use vispy to share context and '
                                   'use built-in shareWidget.')
        else:
            raise RuntimeError('Different backends cannot share a context.')

        # first arg can be glformat, or a gl context
        f = QtCore.Qt.Widget if dec else QtCore.Qt.FramelessWindowHint
        QGLWidget.__init__(self, glformat, parent, widget, f)
        self._initialized = True
        if not self.isValid():
            raise RuntimeError('context could not be created')
        self.setAutoBufferSwap(False)  # to make consistent with other backends
예제 #17
0
파일: _qt.py 프로젝트: Peque/vispy
 def _init_specific(self, vsync, dec, fs, parent, context, kwargs):
     
     # Deal with context
     if not context.istaken:
         widget = kwargs.pop('shareWidget', None) or self
         context.take('qt', widget)
         glformat = _set_config(context.config)
         glformat.setSwapInterval(1 if vsync else 0)
         if widget is self:
             widget = None  # QGLWidget does not accept self ;)
     elif context.istaken == 'qt':
         widget = context.backend_canvas
         glformat = QGLFormat.defaultFormat()
         if 'shareWidget' in kwargs:
             raise RuntimeError('Cannot use vispy to share context and '
                                'use built-in shareWidget.')
     else:
         raise RuntimeError('Different backends cannot share a context.')
     
     # first arg can be glformat, or a gl context
     f = QtCore.Qt.Widget if dec else QtCore.Qt.FramelessWindowHint
     QGLWidget.__init__(self, glformat, parent, widget, f)
     self._initialized = True
     if not self.isValid():
         raise RuntimeError('context could not be created')
     self.setAutoBufferSwap(False)  # to make consistent with other backends
예제 #18
0
 def init(self):
     """Initialize GL context."""
     if not self.glcontext:
         self.glformat = QGLFormat()
         self.glcontext = self.widget.context()
         self.glcontext.setFormat(self.glformat)
         self.glcontext.create()
     return M64ERR_SUCCESS
예제 #19
0
    def __init__(self, parent, shareWidget, useStencilBuffer):
        """
        If shareWidget is specified, useStencilBuffer is ignored: set it in the widget you're sharing with.
        """

        if shareWidget:
            self.shareWidget = shareWidget  #bruce 051212
            glformat = shareWidget.format()
            QGLWidget.__init__(self, glformat, parent, shareWidget)
            if not self.isSharing():
                print "Request of display list sharing is failed."
                return
        else:
            glformat = QGLFormat()
            if (useStencilBuffer):
                glformat.setStencil(True)
                # set gl format to request stencil buffer
                # (needed for mouseover-highlighting of objects of general
                #  shape in depositMode.bareMotion) [bruce 050610]

            QGLWidget.__init__(self, glformat, parent)

        # Current view attributes (sometimes saved in or loaded from
        #  the currently displayed part or its mmp file):

        # rotation
        self.quat = Q(1, 0, 0, 0)

        # point of view (i.e. negative of center of view)
        self.pov = V(0.0, 0.0, 0.0)

        # half-height of window in Angstroms (reset by certain view-changing operations)
        self.scale = float(env.prefs[startup_GLPane_scale_prefs_key])

        # zoom factor
        self.zoomFactor = 1.0

        self.trackball = Trackball(10, 10)

        self._functions_to_call_when_gl_context_is_current = []

        # piotr 080714: Defined this attribute here in case
        # chunk.py accesses it in ThumbView.
        self.lastNonReducedDisplayMode = default_display_mode
        return
예제 #20
0
    def __init__(self, parent, shareWidget, useStencilBuffer):
        """
        If shareWidget is specified, useStencilBuffer is ignored: set it in the widget you're sharing with.
        """

        if shareWidget:
            self.shareWidget = shareWidget  # bruce 051212
            glformat = shareWidget.format()
            QGLWidget.__init__(self, glformat, parent, shareWidget)
            if not self.isSharing():
                print "Request of display list sharing is failed."
                return
        else:
            glformat = QGLFormat()
            if useStencilBuffer:
                glformat.setStencil(True)
                # set gl format to request stencil buffer
                # (needed for mouseover-highlighting of objects of general
                #  shape in depositMode.bareMotion) [bruce 050610]

            QGLWidget.__init__(self, glformat, parent)

        # Current view attributes (sometimes saved in or loaded from
        #  the currently displayed part or its mmp file):

        # rotation
        self.quat = Q(1, 0, 0, 0)

        # point of view (i.e. negative of center of view)
        self.pov = V(0.0, 0.0, 0.0)

        # half-height of window in Angstroms (reset by certain view-changing operations)
        self.scale = float(env.prefs[startup_GLPane_scale_prefs_key])

        # zoom factor
        self.zoomFactor = 1.0

        self.trackball = Trackball(10, 10)

        self._functions_to_call_when_gl_context_is_current = []

        # piotr 080714: Defined this attribute here in case
        # chunk.py accesses it in ThumbView.
        self.lastNonReducedDisplayMode = default_display_mode
        return
예제 #21
0
 def __init__(self, *args, **kwargs):
     super(QFramesInTracksView, self).__init__(*args, **kwargs)
     fmt = QGLFormat(QGL.SampleBuffers)
     wdgt = QGLWidget(fmt)
     assert (wdgt.isValid())
     self.setViewport(wdgt)
     self.setViewportUpdateMode(QGraphicsView.FullViewportUpdate)
     self.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOn)
     self.setVerticalScrollBarPolicy(Qt.ScrollBarAsNeeded)
     self.setRenderHints(QPainter.Antialiasing)
예제 #22
0
    def __init__(self, renderer, scene, title):
        QApplication.__init__(self, sys.argv)
        self.window = QMainWindow()
        self.window.setWindowTitle(title)
        self.window.resize(800, 600)

        # Get OpenGL 4.1 context
        glformat = QGLFormat()
        glformat.setVersion(4, 1)
        glformat.setProfile(QGLFormat.CoreProfile)
        glformat.setDoubleBuffer(False)

        self.glwidget = MyGlWidget(renderer, glformat, self, scene)
        self.window.setCentralWidget(self.glwidget)

        self.window.show()
예제 #23
0
    def __init__(
        self,
        vertexes,
        colors,
        parent=None,
        **kw
    ):  #vertexes, colors, texturePath='graphics/Texture-Example.jpg', parent=None):#spl, peak=None, parent=None):
        """
        Constructor, initialization
        kw:
            -texturePath:pathway to the file to text
            -textures: coord textures to apply
            -parent:the parent widget
        """
        QGLWidget.__init__(self, parent)
        self.setFormat(QGLFormat(QGL.SampleBuffers))
        self.setMinimumSize(500, 300)
        self.setMouseTracking(True)
        self.setFocusPolicy(Qt.StrongFocus)

        #        if not 'texturePath'in kw.keys() and not 'textures' in kw.keys():
        #            pass
        #            #print ('Could not apply texture, no coordinates')
        #        else:
        #            try:
        #                self._imageID = self.loadImage(kw.get('texturePath'))
        #                self.textures = textures
        #            except OSError:
        #                print ('Could not apply texture, no coordinates')

        self.vertexes = vertexes
        self.colors = colors

        #self.axes=None
        self.zoom_mode = False
        self.pan_mode = True
        #self.axes = self.makeAxes()

        self.parameters = {
            'axes_color': 'b',
            'axes_line_width': 3.,
            'draw_line_width': 1.,
            'colormap': True,
            'fish_eye': False,
            'cell_shading': False
        }
        self.lastpos = QPoint()
예제 #24
0
    def __init__(self, data, parent=None, **kw):
        """
        Constructor, initialization
        """

        QGLWidget.__init__(self, parent)
        self.setFormat(QGLFormat(QGL.SampleBuffers))
        self.setMinimumSize(500, 300)  #300
        self.setMouseTracking(True)
        self.setFocusPolicy(Qt.StrongFocus)

        self.data = data
        vertexes = []
        colors = []
        from utils.misc import IceAndFire
        maxY = max(map(max, [log10(el.y_data) for el in data]))
        maxX = max(map(max, [el.x_data for el in data]))
        rtmax = max([z.rtmin for z in data])
        for el in data:
            for i, x in enumerate(el.x_data):
                c = IceAndFire.getQColor(log10(el.y_data[i]) / maxY)
                colors.append(c)
                vertexes.append([(x * 2 * self.corner_) / maxX,
                                 (el.rt * 2 * self.corner_) / rtmax])
        from OpenGL.arrays.vbo import VBO

        self.vertexes = VBO(array(vertexes, 'f'))
        self.colors = VBO(array(colors, 'f'))

        self.mode = "None"  # "ZOOMING", "PANNING", "NONE"
        self.lastpos = QPoint()

        self.counter_trans_x = 0
        self.counter_trans_y = 0

        self.defaultColors = {
            'ticks': (0., 0., 0., 0.),
            'axes': (0., 0., 0., 0.),
            'curves': (0., 0., 1., 0.),
            'backgroundColor': (1., 1., 1., 1.)
        }

        #self.axes=self.drawAxes()
        self.transformationMatrix = self.setupTransformationMatrix(
            self.width(), self.height())
예제 #25
0
    def __init__(self, parent=None):
        """
        On initialization, we need to bind the Ctrl/command key to
        enable manipulation of the view.
        """
        QGraphicsView.__init__(self, parent)
        self.setTransformationAnchor(QGraphicsView.AnchorUnderMouse)
        self.setRubberBandSelectionMode(Qt.IntersectsItemShape)
        self.setStyleSheet(
            "QGraphicsView { background-color: rgb(96.5%, 96.5%, 96.5%); }")
        self._noDrag = QGraphicsView.RubberBandDrag
        self._yesDrag = QGraphicsView.ScrollHandDrag

        # reset things that are state dependent
        self.clearGraphicsView()

        self._x0 = 0
        self._y0 = 0
        self._scale_size = 1.0
        self._scale_limit_max = 3.0
        self._scale_limit_min = 0.41
        self._scaleUpRate = 0.01
        self._scaleDownRate = 0.01
        self._scaleFitFactor = 1  # sets initial zoom level
        self._showDetails = True
        self._last_scale_factor = 0.0
        self.sceneRootItem = None  # the item to transform
        # Keyboard panning
        self._key_pan_delta_x = styles.PATH_BASE_WIDTH * 21
        self._key_pan_delta_y = styles.PATH_HELIX_HEIGHT + styles.PATH_HELIX_PADDING / 2
        # Modifier keys and buttons
        self._key_mod = Qt.Key_Control
        self._button_pan = Qt.LeftButton
        self._button_pan_alt = Qt.MidButton
        self._button_zoom = Qt.RightButton

        self.toolbar = None  # custom hack for the paint tool palette
        self._name = None

        if GL:
            self.setViewport(QGLWidget(QGLFormat(QGL.SampleBuffers)))
            self.setViewportUpdateMode(QGraphicsView.FullViewportUpdate)
        else:
            self.setViewportUpdateMode(QGraphicsView.MinimalViewportUpdate)
예제 #26
0
    def __init__(self, parent=None):
        super(GLWidget, self).__init__(parent)
        fmt = QGLFormat()
        fmt.setSampleBuffers(True)
        fmt.setSamples(4)
        # print fmt.samples()
        # exit(0)

        self.setFormat(fmt)  # Anti-aliasing
        self.width = 1280
        self.height = 720

        self.lastPos = None
        self.zoom = -1.2

        self.sim = None
        self.viewer = None
        self.captureIndex = 0

        self.scene = OpenGLScene(self.width, self.height, parent)
        self.renderer = self.scene.renderer

        self.lock_camera = False
예제 #27
0
파일: LicGLHelpers.py 프로젝트: remig/lic
def getGLFormat():
    glformat = QGLFormat(QGL.SampleBuffers)
    glformat.setSamples(8)
    return glformat
예제 #28
0
def _set_config(c):
    """Set the OpenGL configuration"""
    glformat = QGLFormat()
    glformat.setRedBufferSize(c['red_size'])
    glformat.setGreenBufferSize(c['green_size'])
    glformat.setBlueBufferSize(c['blue_size'])
    glformat.setAlphaBufferSize(c['alpha_size'])
    glformat.setAccum(False)
    glformat.setRgba(True)
    glformat.setDoubleBuffer(True if c['double_buffer'] else False)
    glformat.setDepth(True if c['depth_size'] else False)
    glformat.setDepthBufferSize(c['depth_size'] if c['depth_size'] else 0)
    glformat.setStencil(True if c['stencil_size'] else False)
    glformat.setStencilBufferSize(
        c['stencil_size'] if c['stencil_size'] else 0)
    glformat.setSampleBuffers(True if c['samples'] else False)
    glformat.setSamples(c['samples'] if c['samples'] else 0)
    glformat.setStereo(c['stereo'])
    return glformat
예제 #29
0
def _set_config(c):
    """Set the OpenGL configuration"""
    glformat = QGLFormat()
    glformat.setRedBufferSize(c['red_size'])
    glformat.setGreenBufferSize(c['green_size'])
    glformat.setBlueBufferSize(c['blue_size'])
    glformat.setAlphaBufferSize(c['alpha_size'])
    if QT5_NEW_API:
        # Qt5 >= 5.4.0 - below options automatically enabled if nonzero.
        glformat.setSwapBehavior(glformat.DoubleBuffer if c['double_buffer']
                                 else glformat.SingleBuffer)
    else:
        # Qt4 and Qt5 < 5.4.0 - buffers must be explicitly requested.
        glformat.setAccum(False)
        glformat.setRgba(True)
        glformat.setDoubleBuffer(True if c['double_buffer'] else False)
        glformat.setDepth(True if c['depth_size'] else False)
        glformat.setStencil(True if c['stencil_size'] else False)
        glformat.setSampleBuffers(True if c['samples'] else False)
    glformat.setDepthBufferSize(c['depth_size'] if c['depth_size'] else 0)
    glformat.setStencilBufferSize(c['stencil_size'] if c['stencil_size']
                                  else 0)
    glformat.setSamples(c['samples'] if c['samples'] else 0)
    glformat.setStereo(c['stereo'])
    return glformat
예제 #30
0
파일: _qt.py 프로젝트: Peque/vispy
def _set_config(c):
    """Set the OpenGL configuration"""
    glformat = QGLFormat()
    glformat.setRedBufferSize(c['red_size'])
    glformat.setGreenBufferSize(c['green_size'])
    glformat.setBlueBufferSize(c['blue_size'])
    glformat.setAlphaBufferSize(c['alpha_size'])
    glformat.setAccum(False)
    glformat.setRgba(True)
    glformat.setDoubleBuffer(True if c['double_buffer'] else False)
    glformat.setDepth(True if c['depth_size'] else False)
    glformat.setDepthBufferSize(c['depth_size'] if c['depth_size'] else 0)
    glformat.setStencil(True if c['stencil_size'] else False)
    glformat.setStencilBufferSize(c['stencil_size'] if c['stencil_size']
                                  else 0)
    glformat.setSampleBuffers(True if c['samples'] else False)
    glformat.setSamples(c['samples'] if c['samples'] else 0)
    glformat.setStereo(c['stereo'])
    return glformat
예제 #31
0
    for eleNum, elm in elemTable.items():
        col = elm.color
        r = int(col[0] * 255 + 0.5)
        g = int(col[1] * 255 + 0.5)
        b = int(col[2] * 255 + 0.5)
        f.write(
            str(eleNum) + "  " + str(r) + "  " + str(g) + "  " + str(b) + "\n")

    f.close()


# == Test code

import sys

if __name__ == '__main__':

    QApplication.setColorSpec(QApplication.CustomColor)
    app = QApplication(sys.argv)

    if not QGLFormat.hasOpenGL():
        raise Exception("No Qt OpenGL support.")

    w = elementColors(None)
    app.setMainWidget(w)
    w.resize(400, 350)
    w.show()
    w.setCaption('box')
    app.exec_()
예제 #32
0
def getGLFormat():
    format = QGLFormat(QGL.SampleBuffers)
    format.setSamples(8)
    return format
예제 #33
0
파일: gui.py 프로젝트: junzis/bluesky
    def __init__(self, navdb):
        super(Gui, self).__init__([])
        self.acdata          = ACDataEvent()
        self.navdb           = navdb
        self.radarwidget     = []
        self.command_history = []
        self.cmdargs         = []
        self.history_pos     = 0
        self.command_mem     = ''
        self.command_line    = ''
        self.prev_cmdline    = ''
        self.simevent_target = 0
        self.mousepos        = (0, 0)
        self.prevmousepos    = (0, 0)
        self.panzoomchanged  = False

        # Register our custom pan/zoom event
        for etype in [PanZoomEventType, ACDataEventType, SimInfoEventType,
                      StackTextEventType, ShowDialogEventType,
                      DisplayFlagEventType, RouteDataEventType,
                      DisplayShapeEventType]:
            reg_etype = QEvent.registerEventType(etype)
            if reg_etype != etype:
                print('Warning: Registered event type differs from requested type id (%d != %d)' % (reg_etype, etype))

        self.splash = Splash()
        self.splash.show()

        self.splash.showMessage('Constructing main window')
        self.processEvents()

        # Install error message handler
        handler = QErrorMessage.qtHandler()
        handler.setWindowFlags(Qt.WindowStaysOnTopHint)

        # Check and set OpenGL capabilities
        if not QGLFormat.hasOpenGL():
            raise RuntimeError('No OpenGL support detected for this system!')
        else:
            f = QGLFormat()
            f.setVersion(3, 3)
            f.setProfile(QGLFormat.CoreProfile)
            f.setDoubleBuffer(True)
            QGLFormat.setDefaultFormat(f)
            print('QGLWidget initialized for OpenGL version %d.%d' % (f.majorVersion(), f.minorVersion()))

        # Create the main window and related widgets
        self.radarwidget = RadarWidget(navdb)
        self.win = MainWindow(self, self.radarwidget)
        self.nd  = ND(shareWidget=self.radarwidget)

        # Enable HiDPI support (Qt5 only)
        if QT_VERSION == 5:
            self.setAttribute(Qt.AA_UseHighDpiPixmaps)

        timer = QTimer(self)
        timer.timeout.connect(self.radarwidget.updateGL)
        timer.timeout.connect(self.nd.updateGL)
        timer.start(50)

        # Load geo data
        if False:
            pb = QProgressDialog('Binary buffer file not found, or file out of date: Constructing vertex buffers from geo data.', 'Cancel', 0, 100)
            pb.setWindowFlags(Qt.WindowStaysOnTopHint)
            pb.show()
            for i in range(101):
                pb.setValue(i)
                self.processEvents()
                QThread.msleep(100)
            pb.close()
예제 #34
0
def _set_config(c):
    """Set the OpenGL configuration"""
    glformat = QGLFormat()
    glformat.setRedBufferSize(c['red_size'])
    glformat.setGreenBufferSize(c['green_size'])
    glformat.setBlueBufferSize(c['blue_size'])
    glformat.setAlphaBufferSize(c['alpha_size'])
    if QT5_NEW_API or PYSIDE6_API:
        # Qt5 >= 5.4.0 - below options automatically enabled if nonzero.
        glformat.setSwapBehavior(glformat.DoubleBuffer if c['double_buffer']
                                 else glformat.SingleBuffer)
    elif PYQT6_API:
        glformat.setSwapBehavior(
            glformat.SwapBehavior.DoubleBuffer
            if c['double_buffer'] else glformat.SwapBehavior.SingleBuffer)
    else:
        # Qt4 and Qt5 < 5.4.0 - buffers must be explicitly requested.
        glformat.setAccum(False)
        glformat.setRgba(True)
        glformat.setDoubleBuffer(True if c['double_buffer'] else False)
        glformat.setDepth(True if c['depth_size'] else False)
        glformat.setStencil(True if c['stencil_size'] else False)
        glformat.setSampleBuffers(True if c['samples'] else False)
    glformat.setDepthBufferSize(c['depth_size'] if c['depth_size'] else 0)
    glformat.setStencilBufferSize(
        c['stencil_size'] if c['stencil_size'] else 0)
    glformat.setSamples(c['samples'] if c['samples'] else 0)
    glformat.setStereo(c['stereo'])
    return glformat
예제 #35
0
    def __init__(self, parent, shareWidget, useStencilBuffer):
        """
        #doc
        
        @note: If shareWidget is specified, useStencilBuffer is ignored:
               set it in the widget you're sharing with.
        """
        if shareWidget:
            self.shareWidget = shareWidget  #bruce 051212
            glformat = shareWidget.format()
            QGLWidget.__init__(self, glformat, parent, shareWidget)
            if not self.isSharing():
                assert 0, "%r refused to share GL display list namespace " \
                          "with %r" % (self, shareWidget)
                return
        else:
            glformat = QGLFormat()
            if (useStencilBuffer):
                glformat.setStencil(True)
                # set gl format to request stencil buffer
                # (needed for mouseover-highlighting of objects of general
                #  shape in BuildAtoms_Graphicsmode.bareMotion) [bruce 050610]

            if (self.useMultisample):
                # use full scene anti-aliasing on hardware that supports it
                # (note: setting this True works around bug 2961 on some systems)
                glformat.setSampleBuffers(True)

            QGLWidget.__init__(self, glformat, parent)
            pass

        self.glprefs = drawing_globals.glprefs
        # future: should be ok if this differs for different glpanes,
        # even between self and self.shareWidget. AFAIK, the refactoring
        # I'm doing yesterday and today means this would work fine,
        # or at least it does most of what would be required for that.
        # [bruce 090304]

        self._initialize_view_attributes()

        # Initial value of depth "constant" (changeable by prefs.)
        self.DEPTH_TWEAK = DEPTH_TWEAK_UNITS * DEPTH_TWEAK_VALUE

        self.trackball = Trackball(10, 10)

        self._functions_to_call_when_gl_context_is_current = []

        # piotr 080714: Defined this attribute here in case
        # chunk.py accesses it in ThumbView.
        self.lastNonReducedDisplayMode = default_display_mode

        # piotr 080807
        # Most recent quaternion to be used in animation timer.
        self.last_quat = None

        self.transforms = [
        ]  ### TODO: clear this at start of frame, complain if not clear
        # stack of current transforms (or Nodes that generate them)
        # [bruce 090220]
        # Note: this may be revised once we have TransformNode,
        # e.g. we might push their dt and st separately;
        # note we might need to push a "slot" for them if they might
        # change before being popped, or perhaps even if they might
        # change between the time pushed and the time later used
        # (by something that collects them from here in association
        #  with a ColorSortedDisplayList).

        return
예제 #36
0
        b = int(col[2] * 255 + 0.5)
        f.write(str(eleNum) 
                + "  " + str(r) 
                +  "  " + str(g) 
                + "  " + str(b) 
                + "\n" )
    
    f.close()


# == Test code

import sys

if __name__ == '__main__':

    QApplication.setColorSpec(QApplication.CustomColor)
    app = QApplication(sys.argv)

    if not QGLFormat.hasOpenGL():
        raise Exception("No Qt OpenGL support.")

    w = elementColors(None)
    app.setMainWidget(w)
    w.resize(400, 350)
    w.show()
    w.setCaption('box')
    app.exec_()        


예제 #37
0
def getGLFormat():
    glformat = QGLFormat(QGL.SampleBuffers)
    glformat.setSamples(8)
    return glformat
예제 #38
0
def getGLFormat():
    format = QGLFormat(QGL.SampleBuffers)
    format.setSamples(8)
    return format
예제 #39
0
    def __init__(self, parent, shareWidget, useStencilBuffer):
        """
        #doc
        
        @note: If shareWidget is specified, useStencilBuffer is ignored:
               set it in the widget you're sharing with.
        """
        if shareWidget:
            self.shareWidget = shareWidget #bruce 051212
            glformat = shareWidget.format()
            QGLWidget.__init__(self, glformat, parent, shareWidget)
            if not self.isSharing():
                assert 0, "%r refused to share GL display list namespace " \
                          "with %r" % (self, shareWidget)
                return
        else:
            glformat = QGLFormat()
            if (useStencilBuffer):
                glformat.setStencil(True)
                    # set gl format to request stencil buffer
                    # (needed for mouseover-highlighting of objects of general
                    #  shape in BuildAtoms_Graphicsmode.bareMotion) [bruce 050610]

            if (self.useMultisample):
                # use full scene anti-aliasing on hardware that supports it
                # (note: setting this True works around bug 2961 on some systems)
                glformat.setSampleBuffers(True)
            
            QGLWidget.__init__(self, glformat, parent)
            pass

        self.glprefs = drawing_globals.glprefs
            # future: should be ok if this differs for different glpanes,
            # even between self and self.shareWidget. AFAIK, the refactoring
            # I'm doing yesterday and today means this would work fine,
            # or at least it does most of what would be required for that.
            # [bruce 090304]
        
        self._initialize_view_attributes()

        # Initial value of depth "constant" (changeable by prefs.)
        self.DEPTH_TWEAK = DEPTH_TWEAK_UNITS * DEPTH_TWEAK_VALUE

        self.trackball = Trackball(10, 10)

        self._functions_to_call_when_gl_context_is_current = []

        # piotr 080714: Defined this attribute here in case
        # chunk.py accesses it in ThumbView. 
        self.lastNonReducedDisplayMode = default_display_mode
        
        # piotr 080807
        # Most recent quaternion to be used in animation timer.
        self.last_quat = None

        self.transforms = [] ### TODO: clear this at start of frame, complain if not clear
            # stack of current transforms (or Nodes that generate them)
            # [bruce 090220]
            # Note: this may be revised once we have TransformNode,
            # e.g. we might push their dt and st separately;
            # note we might need to push a "slot" for them if they might
            # change before being popped, or perhaps even if they might
            # change between the time pushed and the time later used
            # (by something that collects them from here in association
            #  with a ColorSortedDisplayList).
        
        return