Changeset 686
- Timestamp:
- 09/04/03 18:02:38 (5 years ago)
- Files:
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/RBRapier/RBRapier/Formats/SVG/RapierRenderItems.py
r684 r686 384 384 385 385 class GLGeometryCollector(object): 386 def __init__(self ):386 def __init__(self, groupcount=1, geometrycount=1): 387 387 self.renderables = [] 388 388 self.geobin = GLGeometryBin() 389 390 self._progress = [0,0] 391 self._total = [groupcount, geometrycount] 392 393 def AddGroupProgress(self): 394 self._progress[0] += 1 395 def AddGeometryProgress(self): 396 self._progress[1] += 1 397 398 def Progress(self): 399 return 0.5 * (float(self._progress[0])/self._total[0] + float(self._progress[1])/self._total[1]) 389 400 390 401 def AddData(self, *args, **kw): … … 538 549 return style, transform 539 550 551 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 552 553 def AddProgress(self, target=None): 554 if target is not None: 555 target.AddGeometryProgress() 556 557 def CountGroups(self, allowcache=True): 558 return 0 559 def CountGeometry(self, allowcache=True): 560 return 1 561 540 562 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 541 563 … … 548 570 for child in self.renderChildren: 549 571 child.Compile(style, transform, target) 572 child.AddProgress(target) 550 573 551 574 #~ SVG Settings ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ … … 561 584 self.otherChildren.append(child) 562 585 586 #~ Progress Measurements ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 587 588 def AddProgress(self, target=None): 589 if target is not None: 590 target.AddGroupProgress() 591 592 def CountGroups(self, allowcache=True): 593 if allowcache: 594 try: return self._cache_countgroups 595 except AttributeError: pass 596 result = sum([child.CountGroups(allowcache) for child in self.renderChildren], 1) 597 self._cache_countgroups = result 598 return result 599 600 def CountGeometry(self, allowcache=True): 601 if allowcache: 602 try: return self._cache_countgeometry 603 except AttributeError: pass 604 result = sum([child.CountGeometry(allowcache) for child in self.renderChildren], 0) 605 self._cache_countgeometry = result 606 return result 607 563 608 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 564 609 … … 569 614 style, transform = self._GetStyleAndTransform(style, transform) 570 615 self.useitem.Compile(style, transform, target) 616 self.useitem.AddProgress(target) 571 617 572 618 def _GetStyleAndTransform(self, style=None, transform=None): … … 582 628 def SetUseItem(self, useitem): 583 629 self.useitem = useitem 630 631 #~ Progress Measurements ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 632 633 def AddProgress(self, target=None): 634 if target is not None: 635 target.AddGroupProgress() 636 637 def CountGroups(self, allowcache=True): 638 return 1 + self.useitem.CountGroups(allowcache) 639 def CountGeometry(self, allowcache=True): 640 return self.useitem.CountGeometry(allowcache) 584 641 585 642 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ … … 677 734 678 735 class SVGGroupRenderItem(ContainerGroupRenderItem): 679 def Compile(self, style=None, transform=None, target=None): 680 childtarget = GLGeometryCollector() 736 target = None 737 def Compile(self, style=None, transform=None, intarget=None): 738 self.target = GLGeometryCollector(self.CountGroups(), self.CountGeometry()) 681 739 # TODO: implement render options 682 740 683 ContainerGroupRenderItem.Compile(self, style, transform, childtarget)684 685 if target is not None:686 childtarget.Commit(target)741 ContainerGroupRenderItem.Compile(self, style, transform, self.target) 742 743 if intarget is not None: 744 result = self.target.Commit(intarget) 687 745 else: # we're the root... return our goodies 688 return childtarget.GetRenderables() 746 result = self.target.GetRenderables() 747 748 del self.target 749 return result 750 751 def CompileProgress(self): 752 if self.target: 753 return self.target.Progress() 754 else: return None 689 755 690 756 #~ SVG Settings ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
