OSDN Git Service

first commit
[meshio/pymeshio.git] / examples / opengl / __init__.py
1 #!/usr/bin/env python\r
2 # coding: utf-8\r
3 \r
4 from OpenGL.GL import *\r
5 import re\r
6 from .baseview import *\r
7 \r
8 \r
9 DELEGATE_PATTERN=re.compile('^on[A-Z]')\r
10 \r
11 class BaseController(object):\r
12     def __init__(self, view, root):\r
13         self.view=view\r
14         self.root=root\r
15         self.isInitialized=False\r
16         self.delegate(view)\r
17         self.delegate(root)\r
18 \r
19     def delegate(self, to):\r
20         for name in dir(to):  \r
21             if DELEGATE_PATTERN.match(name):\r
22                 method = getattr(to, name)  \r
23                 setattr(self, name, method)\r
24 \r
25     def onUpdate(*args):pass\r
26     def onLeftDown(*args):pass\r
27     def onLeftUp(*args):pass\r
28     def onMiddleDown(*args):pass\r
29     def onMiddleUp(*args):pass\r
30     def onRightDown(*args):pass\r
31     def onRightUp(*args):pass\r
32     def onMotion(*args):pass\r
33     def onResize(*args):pass\r
34     def onWheel(*args):pass\r
35     def onKeyDown(*args):pass\r
36     def onInitialize(*args):pass\r
37 \r
38     def initialize(self):\r
39         self.view.onResize()\r
40         glEnable(GL_DEPTH_TEST)\r
41         # \8f\89\8aú\89»\8e\9e\82Ì\8cÄ\82Ñ\8fo\82µ\r
42         self.onInitialize()\r
43 \r
44     def draw(self):\r
45         if not self.isInitialized:\r
46             self.initialize()\r
47             self.isInitialized=True\r
48         # OpenGL\83o\83b\83t\83@\82Ì\83N\83\8a\83A\r
49         glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)\r
50         # \93\8a\89e\8ds\97ñ\82Ì\83N\83\8a\83A\r
51         glMatrixMode(GL_PROJECTION)\r
52         glLoadIdentity()\r
53         self.view.updateProjection()\r
54         # \83\82\83f\83\8b\83r\83\85\81[\8ds\97ñ\82Ì\83N\83\8a\83A\r
55         glMatrixMode(GL_MODELVIEW)\r
56         glLoadIdentity()\r
57         # OpenGL\95`\89æ\r
58         self.view.updateView()\r
59         self.root.draw()\r
60         glFlush()\r
61 \r