Changeset 686

Show
Ignore:
Timestamp:
09/04/03 18:02:38 (5 years ago)
Author:
sholloway
Message:

*** empty log message ***

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/RBRapier/RBRapier/Formats/SVG/RapierRenderItems.py

    r684 r686  
    384384 
    385385class GLGeometryCollector(object): 
    386     def __init__(self): 
     386    def __init__(self, groupcount=1, geometrycount=1): 
    387387        self.renderables = [] 
    388388        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]) 
    389400 
    390401    def AddData(self, *args, **kw): 
     
    538549        return style, transform 
    539550 
     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 
    540562#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    541563 
     
    548570        for child in self.renderChildren: 
    549571            child.Compile(style, transform, target) 
     572            child.AddProgress(target) 
    550573 
    551574    #~ SVG Settings ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
     
    561584            self.otherChildren.append(child) 
    562585 
     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 
    563608#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    564609 
     
    569614        style, transform = self._GetStyleAndTransform(style, transform) 
    570615        self.useitem.Compile(style, transform, target) 
     616        self.useitem.AddProgress(target) 
    571617 
    572618    def _GetStyleAndTransform(self, style=None, transform=None): 
     
    582628    def SetUseItem(self, useitem): 
    583629        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) 
    584641 
    585642#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
     
    677734 
    678735class 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()) 
    681739        # TODO: implement render options 
    682740 
    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) 
    687745        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 
    689755 
    690756    #~ SVG Settings ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~