예제 #1
0
    def __init__(self):
        display_mode = gdkgl.MODE_RGB | gdkgl.MODE_DOUBLE
        try:
            self.glconfig = gdkgl.Config(mode=display_mode)
        except gdkgl.NoMatches:
            display_mode &= ~gdkgl.MODE_DOUBLE
            self.glconfig = gdkgl.Config(mode=display_mode)

        win = gtk.Window()
        win.set_title('OpenGL Color Gradient')
        win.connect('destroy', gtk.main_quit)
        self.win = win

        vbox = gtk.VBox()
        self.win.add(vbox)

        self.bpc = 16
        self.label = gtk.Label(" ")
        self.label.modify_font(pango.FontDescription("sans 24"))
        self.populate_label()
        vbox.add(self.label)

        glarea = gtkgl.DrawingArea(glconfig=self.glconfig, render_type=gdkgl.RGBA_TYPE)
        glarea.set_size_request(*SIZE)
        glarea.connect_after('realize', self.on_realize)
        glarea.connect('configure_event', self.on_configure_event)
        glarea.connect('expose_event', self.on_expose_event)
        win.connect("key_press_event", self.on_key_press)
        self.glarea = glarea
        vbox.add(glarea)
        win.show_all()
        add_close_accel(win, gtk.main_quit)
예제 #2
0
def gtk_find_config_default(attr, mode_bit):
    try:
        cfg = gdkgl.Config(mode=mode_bit)
        value = cfg.get_attrib(attr)[0]
    except gdkgl.NoMatches:
        value = 0
    print "default for attr", attr, "=", value
    return value
예제 #3
0
 def __init__(self, m):
     conf = gdkgl.Config((
         gdkgl.RGBA,
         gdkgl.DOUBLEBUFFER,
         gdkgl.DEPTH_SIZE,
         1,
     ))
     gtkgl.widget.DrawingArea.__init__(self, glconfig=conf)
     self.m = m
     self.m.add_dependent(self.model_changed)
     self.set_size_request(500, 550)
     self.basex = 0.0
     self.connect('expose_event', self.expose_cb)
 def __init__(self, w=640, h=480):
     try:
         glconfig = gdkgl.Config(mode=(gdkgl.MODE_RGB | gdkgl.MODE_DOUBLE
                                       | gdkgl.MODE_DEPTH))
     except gtk.gdkgl.NoMatches:
         glconfig = gdkgl.Config(mode=(gdkgl.MODE_RGB | gdkgl.MODE_DEPTH))
     gtkgl.DrawingArea.__init__(self, glconfig)
     self.set_size_request(w, h)
     self.connect_after("realize", self._init)
     self.connect("configure_event", self._reshape)
     self.connect("expose_event", self._draw)
     self.connect("button_press_event", self._mouseButton)
     self.connect("button_release_event", self._mouseButton)
     self.connect("motion_notify_event", self._mouseMotion)
     self.connect("scroll_event", self._mouseScroll)
     self.set_events(self.get_events() | gdk.BUTTON_PRESS_MASK
                     | gdk.BUTTON_RELEASE_MASK | gdk.POINTER_MOTION_MASK
                     | gdk.POINTER_MOTION_HINT_MASK)
     self._zNear, self._zFar = -10.0, 10.0
     self._zprReferencePoint = [0., 0., 0., 0.]
     self._mouseX = self._mouseY = 0
     self._dragPosX = self._dragPosY = self._dragPosZ = 0.
     self._mouseRotate = self._mouseZoom = self._mousePan = False
예제 #5
0
 def Config_new_by_mode(display_mode):
     try:
         return gdkgl.Config(mode=display_mode)
     except gdkgl.NoMatches as e:
         log("no match: %s", e)
     return None
예제 #6
0
 def _gdkgl_config(self, attrs):
     try:
         return gdkgl.Config(attrib_list=attrs)
     except gdkgl.NoMatches:
         return None