Пример #1
0
class TransformMixin(object):
    """Mixin class for transformation support.
    Adds the _transform and _transformmode attributes to the class."""
    transform = None
    def __init__(self):
        self._reset()

    def _reset(self):
        self.transform = Transform()
        self._transformmode = 'center'
    

    
    def _get_transformmode(self):
        return self._transformmode
    def _set_transformmode(self, mode):
        self._transformmode = mode
    transformmode = property(_get_transformmode, _set_transformmode)
        
    def translate(self, x, y):
        self.transform.translate(x, y)
        
    def reset(self):
        self.transform = Transform()

    def rotate(self, degrees=0, radians=0):
        if self._transformmode == 'corner':
            deltax, deltay = self._transform.transformPoint((0, 0))
        elif self._transformmode == 'center':
            deltax, deltay = self._transform.transformPoint(self.center)
            
        if degrees:
            C = math.cos((math.pi/180.0)*degrees)
            S = math.sin((math.pi/180.0)*degrees)

        self.transform *= Transform(C, S, -S, C, deltax-(C*deltax)+(S*deltay),deltay-(S*deltax)-(C*deltay))

    def translate(self, x=0, y=0):
        self.transform *= Transform(dx=x, dy=y)

    def scale(self, x=1, y=None):
        self.transform.scale(x,y)

    def skew(self, x=0, y=0):
        self.transform.skew(x,y)

    def point(self, point):
        return self.transform.transformPoint(point)

    def matrix_with_center(self):
        pass
Пример #2
0
 def reset(self):
     self.transform = Transform()
Пример #3
0
 def _reset(self):
     self.transform = Transform()
     self._transformmode = 'center'