From 8bfce9538c1203b98cd1fce89d98e9e7599a3864 Mon Sep 17 00:00:00 2001 From: Joey Payne Date: Mon, 3 Feb 2014 16:05:46 -0700 Subject: [PATCH] Updated test code to be up to date with the changes in the surface.py code. Added resize window call. --- gtktest.py | 6 ++- test.py | 113 +++++++++++++++++++++++++++++++++-------------------- 2 files changed, 76 insertions(+), 43 deletions(-) diff --git a/gtktest.py b/gtktest.py index 56824f7..4042bb9 100644 --- a/gtktest.py +++ b/gtktest.py @@ -9,11 +9,12 @@ class JGUIWidget(gtk.DrawingArea): def __init__(self, width, height): super(JGUIWidget, self).__init__() - self.surf = Surface([width, height]) + self.surf = TestSurface([width, height]) self.connect("expose_event", self.expose) self.connect("motion_notify_event", self.mousemoved) self.connect("button_press_event", self.mouse_down) self.connect("button_release_event", self.mouse_up) + self.connect("configure_event", self.resize_win) self.add_events(gdk.BUTTON_PRESS_MASK | gdk.BUTTON_RELEASE_MASK | gdk.POINTER_MOTION_MASK) gobject.timeout_add(int((1.0/60.0)*1000), self.tick) self.width, self.height = width, height @@ -25,6 +26,9 @@ class JGUIWidget(gtk.DrawingArea): def mouse_down(self, widget, event): self.surf.inject_mouse_down(self.buttons[event.button]) + def resize_win(self, widget, event): + self.surf.notify_window_resize(event.width, event.height) + def tick(self): self.alloc = self.get_allocation() rect = gdk.Rectangle(self.alloc.x, self.alloc.y, self.alloc.width, self.alloc.height) diff --git a/test.py b/test.py index a2ac235..49af286 100644 --- a/test.py +++ b/test.py @@ -5,57 +5,86 @@ import array import math import sys -import direct.directbase.DirectStart +from direct.showbase.ShowBase import ShowBase from pandac.PandaModules import * from jgui.surface.surface import * -Width, Height = 1024, 1024 -props = WindowProperties() -props.setSize(1024,1024) -base.setBackgroundColor(0.5,1,1,1) -base.cam.setPos(0,-10,0) -base.win.requestProperties(props) -c = CardMaker('plane') -c.setFrame(-1, 1, 1, -1) -c.setHasUvs(True) -screen = render2d.attachNewNode(c.generate()) -#screen = loader.loadModel('plane') -screen.setTransparency(TransparencyAttrib.MAlpha) -screen.setTwoSided(True) -#screen.setScale(2) +class Test(ShowBase): + def __init__(self, width=1024, height=1024): + ShowBase.__init__(self) + self._render = True + self.width = width + self.height = height + props = WindowProperties() + props.setSize(width, height) + base.setBackgroundColor(0.5,1,1,1) + base.cam.setPos(0,-3.7,0) + base.win.requestProperties(props) + base.disableMouse() + c = CardMaker('plane') + c.setFrame(-1, 1, 1, -1) + c.setHasUvs(True) + screen = render2d.attachNewNode(c.generate()) + screen.setTransparency(TransparencyAttrib.MAlpha) + screen.setTwoSided(True) -surf = Surface([Width, Height]) + self.surf = TestSurface([width, height]) -cairoTexture = Texture() -cairoTexture.setXSize(Width) -cairoTexture.setYSize(Height) -cairoTexture.setFormat(cairoTexture.FRgba8) -cairoTexture.setup2dTexture(Width, Height, Texture.TUnsignedByte, Texture.FRgba32) - -screen.setTexture(cairoTexture) + cairoTexture = Texture() + cairoTexture.setXSize(width) + cairoTexture.setYSize(height) + cairoTexture.setFormat(cairoTexture.FRgba8) + cairoTexture.setup2dTexture(width, height, Texture.TUnsignedByte, Texture.FRgba32) + self.cairoTexture = cairoTexture + screen.setTexture(cairoTexture) + self.screen = screen #screen.reparentTo(render2d) -def click(): - surf.inject_mouse_down('mouse-left') -def up(): - surf.inject_mouse_up('mouse-left') + self.accept('mouse1', self.click) + self.accept('mouse1-up', self.up) -base.accept('mouse1', click) -base.accept('mouse1-up', up) -def drawall(task): - surf.draw() - cairoTexture.setRamImage(surf.csurface.get_data()) - return task.cont + taskMgr.add(self.mousemove, 'mousemove') + taskMgr.add(self.drawall, 'draw') + self.accept('window-event', self.windowEvent) -def mousemove(task): - if base.mouseWatcherNode.hasMouse(): - x = base.win.getXSize() * (1 + base.mouseWatcherNode.getMouseX()) / 2 - y = base.win.getYSize() * (1 - base.mouseWatcherNode.getMouseY()) / 2 - surf.inject_mouse_position([x, y]) - return task.cont + def click(self): + self.surf.inject_mouse_down('mouse-left') -taskMgr.add(mousemove, 'mousemove') -taskMgr.add(drawall, 'draw') -run() + def up(self): + self.surf.inject_mouse_up('mouse-left') + + def windowEvent(self, window): + ShowBase.windowEvent(self, window) #call the super method to handle all other cases + if window.isClosed(): + self._render = False + return + width, height = window.getXSize(), window.getYSize() + if width != self.width or height != self.height: + self.width, self.height = width, height + cairoTexture = Texture() + cairoTexture.setXSize(self.width) + cairoTexture.setYSize(self.height) + cairoTexture.setFormat(cairoTexture.FRgba8) + cairoTexture.setup2dTexture(width, height, Texture.TUnsignedByte, Texture.FRgba32) + self.cairoTexture = cairoTexture + self.screen.setTexture(cairoTexture) + self.surf.notify_window_resize(window.getXSize(), window.getYSize()) + + def drawall(self, task): + if self._render: + self.surf.draw() + self.cairoTexture.setRamImage(self.surf.csurface.get_data()) + return task.cont + + def mousemove(self, task): + if self._render: + if base.mouseWatcherNode.hasMouse(): + x = base.win.getXSize() * (1 + base.mouseWatcherNode.getMouseX()) / 2 + y = base.win.getYSize() * (1 - base.mouseWatcherNode.getMouseY()) / 2 + self.surf.inject_mouse_position([x, y]) + return task.cont + +if __name__ == '__main__': + Test().run()