示例#1
0
    def __init__(self,
                 mipmap_level=0,
                 mipmap_surfaces=None,
                 looped=False,
                 looped_size=(0, 0)):
        super(MyPaintSurface, self).__init__()

        # TODO: pass just what it needs access to, not all of self
        self._backend = mypaintlib.TiledSurface(self)
        self.tiledict = {}
        self.observers = []

        # Used to implement repeating surfaces, like Background
        if looped_size[0] % N or looped_size[1] % N:
            raise ValueError('Looped size must be multiples of tile size')
        self.looped = looped
        self.looped_size = looped_size

        self.mipmap_level = mipmap_level
        if mipmap_level == 0:
            assert mipmap_surfaces is None
            self._mipmaps = self._create_mipmap_surfaces()
        else:
            assert mipmap_surfaces is not None
            self._mipmaps = mipmap_surfaces

        # Forwarding API
        self.set_symmetry_state = self._backend.set_symmetry_state
        self.begin_atomic = self._backend.begin_atomic

        self.get_color = self._backend.get_color
        self.get_alpha = self._backend.get_alpha
        self.draw_dab = self._backend.draw_dab
示例#2
0
    def __init__(self,
                 mipmap_level=0,
                 mipmap_surfaces=None,
                 looped=False,
                 looped_size=(0, 0)):
        object.__init__(self)

        # TODO: pass just what it needs access to, not all of self
        self._backend = mypaintlib.TiledSurface(self)
        self.tiledict = {}
        self.observers = []

        # Used to implement repeating surfaces, like Background
        if looped_size[0] % N or looped_size[1] % N:
            raise ValueError, 'Looped size must be multiples of tile size'
        self.looped = looped
        self.looped_size = looped_size

        self.mipmap_level = mipmap_level
        self.mipmaps = mipmap_surfaces

        if mipmap_level == 0:
            mipmaps = [self]
            for level in range(1, MAX_MIPMAP_LEVEL + 1):
                s = MyPaintSurface(mipmap_level=level, mipmap_surfaces=mipmaps)
                mipmaps.append(s)
            self.mipmaps = mipmaps

            # for quick lookup
            for level, s in enumerate(mipmaps):
                try:
                    s.parent = mipmaps[level - 1]
                except IndexError:
                    s.parent = None
                try:
                    s.mipmap = mipmaps[level + 1]
                except IndexError:
                    s.mipmap = None

        # Forwarding API
        self.set_symmetry_state = self._backend.set_symmetry_state
        self.begin_atomic = self._backend.begin_atomic

        self.get_color = self._backend.get_color
        self.get_alpha = self._backend.get_alpha
        self.draw_dab = self._backend.draw_dab