Changeset 692
- Timestamp:
- 09/06/03 02:08:42 (5 years ago)
- Files:
-
- trunk/RBRapier/RBRapier/Formats/SVG/RapierRenderItems.py (modified) (17 diffs)
- trunk/RBRapier/RBRapier/Tools/Animation (added)
- trunk/RBRapier/RBRapier/Tools/Animation/ProgressBar.py (added)
- trunk/RBRapier/RBRapier/Tools/Animation/__init__.py (added)
- trunk/RBRapier/RBRapier/Tools/Geometry/Curves.py (modified) (6 diffs)
- trunk/RBRapier/RBRapier/Tools/Projections.py (modified) (2 diffs)
- trunk/RBRapier/RBRapier/Tools/ViewBox.py (added)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/RBRapier/RBRapier/Formats/SVG/RapierRenderItems.py
r691 r692 499 499 500 500 transform = None 501 position = None 501 502 default_transform = Transform() 502 503 style = None … … 514 515 515 516 def SetPosition(self, position): 516 if self.transform is None: 517 self.transform = Transform() 518 self.transform.translate(*position) 517 self.position = position 519 518 520 519 def SetTransform(self, transform): … … 540 539 elif self.style is not None: 541 540 style = style + self.style 541 542 542 if transform is None: 543 543 if self.transform is None: 544 transform = self.default_transform.copy()544 transformout = self.default_transform.copy() 545 545 else: 546 transform = self.transform.copy()546 transformout = self.transform.copy() 547 547 elif self.transform is not None: 548 transform = transform * self.transform 549 return style, transform 548 transformout = transform * self.transform 549 else: 550 transformout = transform 551 552 if self.position is not None: 553 if transformout is transform: 554 transformout = transform.copy() 555 transformout.translate(*self.position) 556 return style, transformout 550 557 551 558 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ … … 646 653 dimensions = (None, None) 647 654 alignment = ('xmid', 'ymid', 'meet') 648 position = (None, None)655 position = None 649 656 650 657 def _GetStyleAndTransform(self, style=None, transform=None): … … 657 664 658 665 transform = Transform() 659 if self.position != (None, None):666 if self.position is not None: 660 667 ux, uy = self.position 661 668 else: ux, uy = 0., 0. … … 670 677 uw, uh = transform.GetViewport() 671 678 672 if self.position != (None, None):679 if self.position is not None: 673 680 ux, uy = self.position 674 681 if self.dimensions != (None, None): … … 786 793 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 787 794 788 position = (0,0)789 795 dimensions = (1,1) 790 796 … … 795 801 def Compile(self, style, transform, target): 796 802 style, transform = self._GetStyleAndTransform(style, transform) 797 x,y = self.position803 x,y = 0., 0. 798 804 w,h = self.dimensions 799 805 … … 816 822 #~ SVG Settings ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 817 823 818 def SetPosition(self, position):819 self.position = position820 824 def SetDimensions(self, width, height): 821 825 self.dimensions = width, height … … 870 874 871 875 class Polyline(RenderItem): 872 tesselator = SVGTesselator(normal=(0,0,1))873 874 876 def Compile(self, style, transform, target): 875 877 if len(self.points) < 2: return … … 881 883 if windingrule is None: windingrule = FillRuleLookup[None] 882 884 883 self.tesselator.open(windingrule=windingrule) 884 glmodedatalist = self.tesselator.tessellate([self.points]) 885 self.tesselator.close() 885 tesselator = SVGTesselator(normal=(0,0,1)) 886 tesselator.open(windingrule=windingrule) 887 glmodedatalist = tesselator.tessellate([self.points]) 888 tesselator.close() 886 889 for glmode, fillpoints in glmodedatalist: 887 890 fillpoints = transform.TransformPoints(fillpoints) … … 905 908 906 909 class Polygon(Polyline): 907 tesselator = SVGTesselator(normal=(0,0,1))908 909 910 def Compile(self, style, transform, target): 910 911 if len(self.points) < 2: return … … 913 914 windingrule = FillRuleLookup.get(style.get('fill-rule')) 914 915 if windingrule is None: windingrule = FillRuleLookup[None] 916 tesselator = SVGTesselator(normal=(0,0,1)) 917 tesselator.open(windingrule=windingrule) 915 918 916 919 fillcolor = style.GetFillColor() 917 920 if fillcolor is not None: 918 self.tesselator.open(windingrule=windingrule) 919 glmodedatalist = self.tesselator.tessellate([self.points]) 920 self.tesselator.close() 921 glmodedatalist = tesselator.tessellate([self.points]) 921 922 for glmode, fillpoints in glmodedatalist: 922 923 fillpoints = transform.TransformPoints(fillpoints) … … 927 928 strokecolor = style.GetStrokeColor() 928 929 if strokecolor is not None: 929 self.tesselator.open(windingrule=windingrule) 930 glmodedatalist = self.tesselator.tessellate([self.points]) 931 self.tesselator.close() 930 glmodedatalist = tesselator.tessellate([self.points]) 932 931 for glmode, strokepoints in glmodedatalist: 933 932 strokepoints = transform.TransformPoints(strokepoints) … … 935 934 stroke.Add(glmode, range(len(strokepoints))) 936 935 stroke.Commit(target) 936 tesselator.close() 937 937 938 938 def SetPoints(self, points): … … 946 946 947 947 class Path(RenderItem): 948 tesselator = SVGTesselator(normal=(0,0,1))949 950 948 def Compile(self, style, transform, target): 951 949 contours = SVGPathConnector.fromSVGPath(self.path).GetContours() … … 963 961 if windingrule is None: windingrule = FillRuleLookup[None] 964 962 965 self.tesselator.open(windingrule=windingrule) 966 glmodedatalist = self.tesselator.tessellate(contourlist) 967 self.tesselator.close() 963 tesselator = SVGTesselator(normal=(0,0,1)) 964 tesselator.open(windingrule=windingrule) 965 glmodedatalist = tesselator.tessellate(contourlist) 966 tesselator.close() 968 967 for glmode, fillpoints in glmodedatalist: 969 968 fillpoints = transform.TransformPoints(fillpoints) trunk/RBRapier/RBRapier/Tools/Geometry/Curves.py
r665 r692 28 28 return self._steps 29 29 def SetSteps(self, steps): 30 self._steps = steps 30 if steps != self._steps: 31 self._steps = steps 32 self._Invalidate() 31 33 32 34 def asCurve(self): … … 35 37 def __iter__(self): 36 38 return iter(self.asCurve()) 39 40 def _Invalidate(self): 41 pass 37 42 38 43 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ … … 47 52 48 53 def _CreateUVector(self): 49 steps = self.GetSteps()-1 54 return self._BuildUVector(Numeric.arrayrange(0., 1., 1./(self.GetSteps()-1), self.NumericType), True) 55 56 def _BuildUVector(self, u, addend=False): 57 result = [u, Numeric.ones(len(u), self.NumericType)] 50 58 count = self.GetPolyDimension()+1 51 stepsize = 1./steps52 u = Numeric.arrayrange(0., 1., stepsize, self.NumericType)53 result = [u, Numeric.ones(steps, self.NumericType)]54 59 for i in xrange(2, count): 55 60 result.insert(0, u*result[0]) 56 result = Numeric.concatenate((result, Numeric.ones((count, 1), self.NumericType)), 1) 61 if addend: 62 result = Numeric.concatenate((result, Numeric.ones((count, 1), self.NumericType)), 1) 57 63 return Numeric.transpose(result) 58 64 … … 69 75 return self.points 70 76 77 def CurveFromUVector(self, uvector): 78 Ubezier = Numeric.dot(uvector, self.GetBezierMatrix()) 79 return Numeric.dot(Ubezier, self.GetControlPoints()) 80 81 def CurveAtPoints(self, *points): 82 uvector = self._BuildUVector(Numeric.asarray(points, self.NumericType)) 83 return self.CurveFromUVector(uvector) 84 85 def CurveRange(self, start=0., stop=1., stepsize=None): 86 stepsize = stepsize or 1./(self.GetSteps()-1) 87 uvector = self._BuildUVector(Numeric.arrayrange(start, stop, stepsize, self.NumericType)) 88 return self.CurveFromUVector(uvector) 89 71 90 def asCurve(self): 72 Ubezier = Numeric.dot(self.GetUVector(), self.GetBezierMatrix()) 73 return Numeric.dot(Ubezier, self.GetControlPoints()) 91 return self.CurveFromUVector(self.GetUVector()) 74 92 75 93 def GetPolyDimension(self): … … 77 95 def GetBezierMatrix(self): 78 96 raise NotImplementedError 97 98 def _Invalidate(self): 99 try: delattr(self, '_uvector') 100 except AttributeError: pass 79 101 80 102 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ … … 284 306 _FindAngle = classmethod(_FindAngle) 285 307 308 def _Invalidate(self): 309 try: delattr(self, '_sweepvector') 310 except AttributeError: pass 311 trunk/RBRapier/RBRapier/Tools/Projections.py
r691 r692 123 123 return self.Height / self.Width 124 124 def SetAspectRatio(self, value, byWidth=None): 125 if byWidth is None: 126 byWidth = value < 1 127 if byWidth: 128 self.Width = self.Height / float(value) 129 else: 130 self.Height = self.Width * float(value) 125 self.SetDimensionsAspectRatio(self.Width, self.Height, value) 126 #if byWidth is None: 127 # byWidth = value < 1 128 #if byWidth: 129 # self.Width = self.Height / float(value) 130 #else: 131 # self.Height = self.Width * float(value) 131 132 AspectRatio = property(GetAspectRatio, SetAspectRatio) 132 133 … … 146 147 return width, height 147 148 148 def _asTuple(self):149 def GetTuple(self): 149 150 return self.Left, self.Right, self.Bottom, self.Top, self.Near, self.Far 150 def _fromTuple(self, value):151 def SetTuple(self, value): 151 152 self.Left, self.Right, self.Bottom, self.Top, self.Near, self.Far = value 152 asTuple = property( _asTuple, _fromTuple)153 asTuple = property(GetTuple, SetTuple) 153 154 154 155 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
