Changeset 660
- Timestamp:
- 08/15/03 13:21:17 (5 years ago)
- Files:
-
- trunk/RBRapier/RBRapier/Formats/Attic/SVG.old/SVGSkin/RenderItems/PathBuilder.py (modified) (1 diff)
- trunk/RBRapier/RBRapier/Formats/SVG/RapierRenderItems.py (modified) (8 diffs)
- trunk/RBRapier/RBRapier/Formats/SVG/SVGSkin/SVGItems/PathBuilder.py (modified) (1 diff)
- trunk/RBRapier/RBRapier/Tools/Transformations.py (modified) (5 diffs)
- trunk/RBRapier/RBRapier/Tools/Transformations2d.py (modified) (6 diffs)
- trunk/RBRapier/demo/Attic/SVG.old/display.py (modified) (5 diffs)
- trunk/RBSkinning/RBSkinning/wxTools/wxDockingTools.py (modified) (13 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/RBRapier/RBRapier/Formats/Attic/SVG.old/SVGSkin/RenderItems/PathBuilder.py
r631 r660 50 50 T absolute smooth quadratic bezier curveto (x y)+ 51 51 t relative smooth quadratic bezier curveto (x y)+ 52 el iptical arc52 elliptical arc 53 53 A absolute elliptical arc (rx ry x-axis-rotation large-arc-flag sweep-flag x y)+ 54 54 """ trunk/RBRapier/RBRapier/Formats/SVG/RapierRenderItems.py
r658 r660 27 27 import Numeric 28 28 29 from RBRapier.Tools import Transformations2d 30 from RBRapier.Tools.Geometry import Curves 29 31 from RBRapier.Tools.Geometry.gluPolygonTesselation import gluPolygonTesselator 30 from RBRapier.Tools import Transformations2d31 32 32 33 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ … … 132 133 133 134 def Compile(self, style=None, transform=None): 135 pass 136 #style, transform = self._GetStyleAndTransform(style, transform) 137 138 def CountItems(self): 139 return 1 140 def CountGroups(self): 141 return 0 142 143 #~ SVG Settings ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 144 145 def SetPosition(self, position): 146 if self.transform is None: 147 self.transform = Transform() 148 self.transform.translate(*position) 149 150 def SetTransform(self, transform): 151 if self.transform is None: 152 self.transform = Transform.fromSVGTransforms(transform) 153 else: 154 self.transform.AddSVGTransforms(transform) 155 156 def SetStyle(self, style): 157 self.style = Style(style) 158 159 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 160 161 def _GetStyleAndTransform(self, style=None, transform=None): 134 162 if style is None: 135 163 style = self.style … … 140 168 elif self.transform is not None: 141 169 transform = transform * self.transform 142 return self._Compile(style, transform) 143 144 def _Compile(self, style, transform): 145 return [self] 146 147 def CountItems(self): 148 return 1 149 def CountGroups(self): 150 return 0 151 152 def Render(self): 153 self._RenderFill() 154 self._RenderStroke() 155 156 def _RenderStroke(self): 157 pass 158 159 def _RenderFill(self): 160 pass 161 162 #~ SVG Settings ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 163 164 def SetPosition(self, position): 165 if self.transform is None: 166 self.transform = Transform() 167 self.transform.translate(*position) 168 169 def SetTransform(self, transform): 170 if self.transform is None: 171 self.transform = Transform.fromSVGTransforms(transform) 172 else: 173 self.transform.AddSVGTransforms(transform) 174 175 def SetStyle(self, style): 176 self.style = Style(style) 170 return style, transform 177 171 178 172 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ … … 181 175 children = () 182 176 183 def _Compile(self, style, transform):184 results = []177 def Compile(self, style, transform): 178 style, transform = self._GetStyleAndTransform(style, transform) 185 179 for child in self.children: 186 results.extend(child.Compile(style, transform)) 187 return results 180 child.Compile(style, transform) 188 181 189 182 def CountItems(self): … … 191 184 def CountGroups(self): 192 185 return reduce(int.__add__, [x.CountGroups() for x in self.children], 1) 193 194 def _RenderStroke(self):195 for child in self.children:196 child._RenderStroke()197 198 def _RenderFill(self):199 for child in self.children:200 child._RenderFill()201 186 202 187 def SetChildren(self, children): … … 221 206 222 207 class Line(RenderItem): 223 def _Compile(self, style, transform): 208 def Compile(self, style, transform): 209 style, transform = self._GetStyleAndTransform(style, transform) 224 210 self._r_strokecolor = style.GetStrokeColor() 225 # TODO: Transform points226 ##self._r_points = transform * self.points227 211 self._r_points = TransformPoints(self.points, transform) 228 212 return [self] 229 230 #def _RenderStroke(self):231 # if self._r_strokecolor:232 # GL.glColor4ubv(self._r_strokecolor)233 # GL.glBegin(GL.GL_LINES)234 # GL.glVertex2fv(self._r_points[0])235 # GL.glVertex2fv(self._r_points[1])236 # GL.glEnd()237 238 #def _RenderFill(self):239 # pass240 213 241 214 #~ SVG Settings ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ … … 276 249 277 250 class Ellipse(RenderItem): 251 Curves.Ellipse 278 252 #~ SVG Settings ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 279 253 … … 296 270 297 271 class Path(RenderItem): 272 Curves.QuadraticBezier 273 Curves.CubicBezier 274 Curves.EllipticArc 275 Curves.Ellipse 298 276 #~ SVG Settings ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 299 277 trunk/RBRapier/RBRapier/Formats/SVG/SVGSkin/SVGItems/PathBuilder.py
r657 r660 50 50 T absolute smooth quadratic bezier curveto (x y)+ 51 51 t relative smooth quadratic bezier curveto (x y)+ 52 el iptical arc52 elliptical arc 53 53 A absolute elliptical arc (rx ry x-axis-rotation large-arc-flag sweep-flag x y)+ 54 54 """ trunk/RBRapier/RBRapier/Tools/Transformations.py
r658 r660 53 53 def __mul__(self, other): 54 54 if isinstance(other, TransformPrimitive3dh): 55 return Matrix(Numeric.dot(self.asArray4x4(), other.asArray4x4()))55 return Composite([self, other]) 56 56 elif isinstance(other, Numeric.ArrayType): 57 57 return Numeric.dot(self.asArray4x4(), other) … … 60 60 def __rmul__(self, other): 61 61 if isinstance(other, TransformPrimitive3dh): 62 return Matrix(Numeric.dot(other.asArray4x4(), self.asArray4x4()))62 return Composite([other, self]) 63 63 elif isinstance(other, Numeric.ArrayType): 64 64 return Numeric.dot(other, self.asArray4x4()) … … 81 81 <Composite: [<Rotation: Angle=23.0, Axis=[-0.38018780946731567, -0.59743797779083252, -0.70606309175491333, 1.0]>, <Scale: [0.5, 0.3333333432674408, 0.25, 1.0]>, <Translation: [-1.0, -2.0, -3.0, 1.0]>, <Identity>] > 82 82 >>> (c * c.Inverse()).asArray4x4() 83 array([[ 9.99999999e-001, 1.2492628 8e-010, 1.19565441e-010, 1.52539870e-010],83 array([[ 9.99999999e-001, 1.24926286e-010, 1.19565441e-010, 1.52539981e-010], 84 84 [ 2.81084066e-010, 1.00000003e+000, -1.15097085e-009, -5.50221717e-008], 85 85 [ 4.78261764e-010, -2.04617046e-009, 9.99999998e-001, 8.76708395e-009], … … 123 123 def __imul__(self, other): 124 124 if isinstance(other, TransformPrimitive3dh): 125 self.Add(other) 125 if isinstance(other, Composite): 126 self.collection.extend(other.collection) 127 else: 128 self.collection.append(other) 126 129 return self 127 130 else: … … 130 133 def __mul__(self, other): 131 134 if isinstance(other, TransformPrimitive3dh): 132 return Composite(self.collection + [other]) 135 if isinstance(other, Composite): 136 return Composite(self.collection + other.collection) 137 else: 138 return Composite(self.collection + [other]) 133 139 else: TransformPrimitive3dh.__mul__(self, other) 134 140 135 141 def __rmul__(self, other): 136 142 if isinstance(other, TransformPrimitive3dh): 137 return Composite([other] + self.collection) 143 if isinstance(other, Composite): 144 return Composite(other.collection + self.collection) 145 else: 146 return Composite([other] + self.collection) 138 147 else: TransformPrimitive3dh.__rmul__(self, other) 139 148 trunk/RBRapier/RBRapier/Tools/Transformations2d.py
r658 r660 53 53 def __mul__(self, other): 54 54 if isinstance(other, TransformPrimitive2dh): 55 return Matrix(Numeric.dot(self.asArray3x3(), other.asArray3x3()))55 return Composite([self, other]) 56 56 elif isinstance(other, Numeric.ArrayType): 57 57 return Numeric.dot(self.asArray3x3(), other) … … 60 60 def __rmul__(self, other): 61 61 if isinstance(other, TransformPrimitive2dh): 62 return Matrix(Numeric.dot(other.asArray3x3(), self.asArray3x3()))62 return Composite([other, self]) 63 63 elif isinstance(other, Numeric.ArrayType): 64 64 return Numeric.dot(other, self.asArray3x3()) … … 89 89 def __imul__(self, other): 90 90 if isinstance(other, TransformPrimitive2dh): 91 self.Add(other) 91 if isinstance(other, Composite): 92 self.collection.extend(other.collection) 93 else: 94 self.collection.append(other) 92 95 return self 93 96 else: … … 96 99 def __mul__(self, other): 97 100 if isinstance(other, TransformPrimitive2dh): 98 return Composite(self.collection + [other]) 101 if isinstance(other, Composite): 102 return Composite(self.collection + other.collection) 103 else: 104 return Composite(self.collection + [other]) 99 105 else: TransformPrimitive2dh.__mul__(self, other) 100 106 101 107 def __rmul__(self, other): 102 108 if isinstance(other, TransformPrimitive2dh): 103 return Composite([other] + self.collection) 109 if isinstance(other, Composite): 110 return Composite(other.collection + self.collection) 111 else: 112 return Composite([other] + self.collection) 104 113 else: TransformPrimitive2dh.__rmul__(self, other) 105 114 … … 180 189 181 190 def __repr__(self): 182 return "<Translation: % s>" % (self.Direction.tolist(),)191 return "<Translation: %r>" % (self.Direction,) 183 192 184 193 def asArray3x3(self): … … 210 219 211 220 def __repr__(self): 212 return "<Scale: % s>" % (self.Scale.tolist(),)221 return "<Scale: %r>" % (self.Scale,) 213 222 214 223 def asArray3x3(self): trunk/RBRapier/demo/Attic/SVG.old/display.py
r643 r660 51 51 skinxml = """<?xml version='1.0'?> 52 52 <skin:skin xmlns:skin='http://namespaces.runeblade.com/skin' xmlns:py='http://namespaces.runeblade.com/xmlPython' xmlns='http://namespaces.runeblade.com/wxPythonSkin'> 53 <frame title='SVG Displayer' show='1' pos='0,0' size='800,600'>53 <frame ctxvar='behavior.frame' title='SVG Displayer' show='1' pos='0,0' size='800,600'> 54 54 <layout fit='0'> 55 55 <panel> … … 76 76 77 77 class Behavior(object): 78 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 79 #~ Constants / Variables / Etc. 80 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 81 82 frametitle = 'SVG Displayer' 83 84 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 85 #~ Public Methods 86 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 87 78 88 def OnSkinInitialize(self): 79 89 pass … … 83 93 84 94 self.viewsetup = GLViewSetup(self.glcanvas, 30) 85 self.viewsetup.OnRender.Add(self. Initialize)95 self.viewsetup.OnRender.Add(self.ViewInitialize) 86 96 self.viewsetup.OnRender.Add(self.Render) 87 97 self.viewsetup.OnRender.Add(self.PostRender) 88 98 self.viewsetup.StartRendering() 89 99 90 def Initialize(self, glviewsetup, canvas):91 glviewsetup.OnRender.Remove(self. Initialize)100 def ViewInitialize(self, glviewsetup, canvas): 101 glviewsetup.OnRender.Remove(self.ViewInitialize) 92 102 self.root = SequenceMgr.RootSequence() 93 103 … … 108 118 self.svgs.AddElement(svgrenderer.Display(svg)) 109 119 110 self.root.AddElement(self.Thing)111 120 self.root.AddElement(self.svgs) 112 121 122 _fps_score = 0 113 123 def Render(self, subject, canvas): 114 124 self.viewport.SetRectangle(canvas.GetClientRect().asTuple()) … … 117 127 self.root.Execute(None) 118 128 119 #maxfps = 40 120 #realfps = self.root.Statistics['persecond'] 121 #targetfps = self.viewsetup.GetTargetFPS() 122 #if realfps < 2*targetfps: 123 # newtarget = min(maxfps, realfps*0.45) 124 # self.viewsetup.SetTargetFPS(newtarget) 125 # print "Lowering fps to:", newtarget, "old target:", targetfps, "real:", realfps 126 127 def Thing(self, *args): 128 GL.glRotated((3*time.clock())%360., 1, 0, 0) 129 GL.glRotated((2*time.clock())%360., 0, 1, 0) 130 GL.glRotated((1*time.clock())%360., 0, 0, 1) 129 if time.clock() - self._fps_score >= 1.: 130 self.frame.SetTitle(self.frametitle + ' [FPS: %1.1f]' % self.root.Statistics['persecond']) 131 self._fps_score = time.clock() 131 132 132 133 def PostRender(self, glviewsetup, canvas): trunk/RBSkinning/RBSkinning/wxTools/wxDockingTools.py
r654 r660 92 92 def DockTo(self, dockhost): 93 93 if dockhost is not self.dockhost: 94 self.Undock(redocking= dockhost)94 self.Undock(redocking=bool(dockhost)) 95 95 self.dockhost = dockhost 96 return self.Dock(redocking= dockhost)96 return self.Dock(redocking=bool(dockhost)) 97 97 else: 98 98 return self.Dock() … … 140 140 return self.docked 141 141 142 def _SetDockHost(self, dockhost, dockitem, docked=True): 143 pass 144 142 145 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 143 146 … … 171 174 172 175 class wxDockHostBase(wxDockHostAbstract): 176 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 177 #~ Public Methods 178 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 179 173 180 def HideEmpty(self): 174 181 hideempty = self.GetHideEmpty() … … 190 197 self.hideempty = hideempty 191 198 199 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 200 201 def DockItem(self, container, dockitem=None, *args, **kw): 202 if dockitem is None: 203 container.DockTo(self) 204 else: 205 return self._DoDockItem(container, dockitem, *args, **kw) 206 207 def UndockItem(self, container, dockitem=None, *args, **kw): 208 if dockitem is None: 209 if container.IsDocked(self): 210 container.Undock() 211 else: 212 return self._DoUndockItem(container, dockitem, *args, **kw) 213 214 def Layout(self): 215 raise NotImplementedError 216 217 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 218 #~ Protected Methods 219 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 220 221 def _DoDockItem(self, container, dockitem, *args, **kw): 222 raise NotImplementedError 223 return self._FinishDockItem(container, dockitem) 224 225 def _FinishDockItem(self, container, dockitem): 226 container._SetDockHost(self, dockitem, docked=True) 227 self.DockContainers().append(container) 228 self.OnDockItem(container, dockitem) 229 self.Layout() 230 231 def _DoUndockItem(self, container, dockitem, *args, **kw): 232 raise NotImplementedError 233 return self._FinishUndockItem(container, dockitem) 234 235 def _FinishUndockItem(self, container, dockitem): 236 container._SetDockHost(self, dockitem, docked=False) 237 self.DockContainers().remove(container) 238 self.OnUndockItem(container, dockitem) 239 self.Layout() 240 192 241 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 193 242 … … 216 265 self.SetHideEmpty(hideempty) 217 266 218 def DockItem(self, container, dockitem=None, *args, **kw):219 if dockitem is None:220 container.DockTo(self)221 else:222 return self._DoDockItem(container, dockitem, *args, **kw)223 224 267 def _DoDockItem(self, container, dockitem, *args, **kw): 225 268 self.dockcount += 1 269 226 270 try: DIReparent = dockitem.Reparent 227 271 except AttributeError: pass … … 231 275 self.layout.Prepend(dockitem, *args, **kw) 232 276 else: self.layout.Add(dockitem, *args, **kw) 233 self.DockContainers().append(container) 234 self.OnDockItem(container, dockitem) 235 self.Layout() 236 237 def UndockItem(self, container, dockitem=None, *args, **kw): 238 if dockitem is None: 239 if container.IsDocked(self): 240 container.Undock() 241 else: 242 return self._DoUndockItem(container, dockitem, *args, **kw) 277 278 return self._FinishDockItem(container, dockitem) 243 279 244 280 def _DoUndockItem(self, container, dockitem, *args, **kw): … … 254 290 self.parent.SetSizeHints(0, 0) 255 291 self.layout.Remove(dockitem) 256 self.DockContainers().remove(container) 257 self.OnUndockItem(container, dockitem) 258 self.Layout() 292 293 return self._FinishUndockItem(container, dockitem) 259 294 260 295 def Layout(self): … … 356 391 self._available_pages = [] 357 392 358 def DockItem(self, container, dockitem=None, *args, **kw):359 if container is None:360 container.DockTo(self)361 else:362 return self._DoDockItem(container, dockitem, *args, **kw)363 364 393 def _DoDockItem(self, container, dockitem, *args, **kw): 365 394 self.dockcount += 1 366 395 367 page = self. AcquireNotebookDockPage()396 page = self._AcquireNotebookDockPage() 368 397 369 398 try: DIReparent = dockitem.Reparent … … 379 408 self.notebook.AddPage(page, text, self.selectpage) 380 409 page.Show(True) 381 self.DockContainers().append(container) 382 self.OnDockItem(container, dockitem) 383 self.Layout() 384 385 def UndockItem(self, container, dockitem=None, *args, **kw): 386 if container is None: 387 if container.IsDocked(self): 388 container.Undock() 389 else: 390 return self._DoUndockItem(container, dockitem, *args, **kw) 410 411 return self._FinishDockItem(container, dockitem) 391 412 392 413 def _DoUndockItem(self, container, dockitem, *args, **kw): … … 398 419 ##else: DIReparent(None) 399 420 400 page = self. FindNotebookDockPage(dockitem)421 page = self._FindNotebookDockPage(dockitem) 401 422 if page is None: raise KeyError, "Dockitem not found" 402 423 page.UndockItem(container, dockitem) … … 407 428 break 408 429 409 self.ReleaseNotebookDockPage(page) 410 self.DockContainers().remove(container) 411 self.OnUndockItem(container, dockitem) 412 self.Layout() 430 self._ReleaseNotebookDockPage(page) 431 432 return self._FinishUndockItem(container, dockitem) 413 433 414 434 def Layout(self): … … 417 437 self.OnLayoutComplete() 418 438 419 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 420 421 def AcquireNotebookDockPage(self): 439 def _AcquireNotebookDockPage(self): 422 440 try: 423 441 result = self._available_pages.pop() … … 428 446 return result 429 447 430 def ReleaseNotebookDockPage(self, page):448 def _ReleaseNotebookDockPage(self, page): 431 449 page.Show(False) 432 450 self._used_pages.remove(page) 433 451 self._available_pages.append(page) 434 452 435 def FindNotebookDockPage(self, dockitem):453 def _FindNotebookDockPage(self, dockitem): 436 454 for page in self._used_pages: 437 455 if page.IsDocked(dockitem):
