Changeset 693

Show
Ignore:
Timestamp:
09/08/03 12:44:48 (5 years ago)
Author:
sholloway
Message:

*** empty log message ***

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/RBRapier/RBRapier/Tools/Animation/__init__.py

    r692 r693  
    3030#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    3131 
    32 class TimeBlend(object): 
     32class BlendBase(object): 
     33    pass 
     34 
     35class TimeBlendBase(BlendBase): 
     36    def now(klass): 
     37        return time.clock() 
     38    now = classmethod(now) 
     39 
     40    def __call__(self): 
     41        return 0. 
     42 
     43#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
     44 
     45class TimeBlend(TimeBlendBase): 
    3346    def __init__(self, start, end): 
    34         self.timespan = start, end 
     47        self.SetRange(start, end) 
    3548 
    3649    def __call__(self): 
    3750        (s, e), n = self.timespan, self.now() 
    38         return max(min((n-s)/(e-s), 1.), 0.) 
     51        value = (n-s)/(e-s) 
     52        return max(min(value, 1.), 0.) 
    3953 
     54    def SetSpan(self, span): 
     55        s = self.timespan[0] 
     56        self.timespan = s, s+span 
    4057    def fromSpan(klass, span): 
    4158        n = klass.now() 
     
    4360    fromSpan = classmethod(fromSpan) 
    4461 
     62    def SetRange(self, start, end, relative=False): 
     63        if relative:  
     64            now = self.now() 
     65            start += now 
     66            end += now 
     67        self.timespan = start, end 
    4568    def fromTimeRange(klass, start, end, relative=False): 
    4669        if relative:  
     
    5174    fromTimeRange = classmethod(fromTimeRange) 
    5275 
     76    def SetTimeSpan(self, start, end, relative=False): 
     77        if relative:  
     78            start += self.now() 
     79        self.timespan = start, start+span 
    5380    def fromTimeSpan(klass, start, span, relative=False): 
    5481        if relative:  
     
    5784    fromTimeSpan = classmethod(fromTimeSpan) 
    5885 
    59     def now(klass): 
    60         return time.clock() 
    61     now = classmethod(now) 
     86#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    6287 
     88class TimeOscillation(TimeBlendBase): 
     89    def __init__(self, period=1, start=None): 
     90        self.SetOscillation(period, start) 
     91 
     92    def __call__(self): 
     93        s, p, n = self.start, self.period, self.now() 
     94        value = abs(((n-s)%p)/(.5*p) - 1.) 
     95        return max(min(value, 1.), 0.) 
     96 
     97    def SetOscillation(self, period=1., start=None): 
     98        self.SetPeriod(period) 
     99        self.SetStart(start) 
     100 
     101    def SetStart(self, start=None): 
     102        if start is None: 
     103            self.start = self.now() 
     104        else: self.start = start 
     105 
     106    def SetPeriod(self, period=1.): 
     107        self.period = period 
  • trunk/RBRapier/RBRapier/Tools/ViewBox.py

    r692 r693  
    2929 
    3030    def copy(self): 
    31         return self.fromBox(self.GetBox()
     31        return self.fromViewBox(self
    3232 
    3333    def blend(self, factor, viewbox): 
     
    3939        proj.Right, proj.Top = _box[1] 
    4040 
     41    def fromViewBox(klass, viewbox): 
     42        result = ViewBox.__new__(ViewBox) # avoid constructor call 
     43        result.SetBox(viewbox.GetBox()) 
     44        return result 
     45    fromViewBox = classmethod(fromViewBox) 
    4146    def fromBox(klass, box): 
    4247        result = ViewBox.__new__(ViewBox) # avoid constructor call 
    4348        result.SetBox(box) 
    4449        return result 
     50    fromBox = classmethod(fromBox) 
    4551    def fromPts(klass, pos0, pos1): 
    4652        return klass(pos0, pos1) 
     
    133139        return self.ViewBoxSize(self.GetSize(), aspectYX, largest) 
    134140 
    135     def MapToPoint(self, posIn0to1): 
    136         blend = self._ascoords(posIn0to1) 
     141    def MapPointFrom0to1(self, posIn0to1): 
     142        blend, = self._ascoords(posIn0to1) 
    137143        _box = self.GetBox() 
    138144        result = (1-blend)*_box[0]+blend*_box[1] 
    139         return result[0] 
     145        return result 
     146 
     147    def MapPointTo0to1(self, pos): 
     148        pos, = self._ascoords(pos) 
     149        _box = self.GetBox() 
     150        return (pos-_box[0])/(_box[1]-_box[0]) 
    140151 
    141152    def ZoomCenter(self, factor, center=(0., 0.), relative=True): 
     
    151162            pos = pos-_box[0] # make it relative 
    152163        return self.SetPts(_box[0]+pos, _box[1]+pos) 
     164 
     165    def MoveHorizontal(self, pos, relative=True): 
     166        if relative: 
     167            return self.Move((pos, 0.), True) 
     168        else: 
     169            return self.Move((pos, self.GetBox()[0][1]), False) 
     170 
     171    def MoveVertical(self, pos, relative=True): 
     172        if relative: 
     173            return self.Move((0., pos), True) 
     174        else: 
     175            return self.Move((self.GetBox()[0][0], pos), False) 
    153176 
    154177    def ViewBoxSize(self, dim, aspectYX=1.0, largest=True):