Ejemplo n.º 1
0
    def read(self, stream: Stream, version):
        if version in (3, 4, 5):
            self.picture = stream.read_object('picture')
        elif version in (7, 8):
            _ = stream.read_ushort('pic version?')
            _ = stream.read_uint('picture type?')
            self.picture = stream.read_object('picture')
        elif version == 9:
            self.picture = stream.read_picture('picture')

        if version < 4:
            _ = stream.read_object()
        if version <= 8:
            _ = stream.read_object()

        self.color_foreground = stream.read_object('color 1')
        self.color_background = stream.read_object('color 2')

        if version >= 9:
            self.color_transparent = stream.read_object('color 3')

        self.angle = stream.read_double('angle')
        self.size = stream.read_double('size')
        self.x_offset = stream.read_double('x offset')
        self.y_offset = stream.read_double('y offset')

        self.x_scale = stream.read_double('x scale')
        self.y_scale = stream.read_double('y scale')

        self.symbol_level = SymbolLayer.read_symbol_level(stream)
        self.swap_fb_gb = bool(stream.read_uchar('swap fgbg'))

        self.rotate_with_transform = stream.read_ushort('rotate with transform') != 0

        if version < 5:
            return

        stream.read_int('unknown', expected=0)
        stream.read_ushort('unknown', expected=0)
        if version == 7:
            return

        if 5 < version <= 8:
            size = stream.read_int('unknown size')
            stream.read(size)
Ejemplo n.º 2
0
    def read(self, stream: Stream, version):
        if version <= 4:
            self.picture = stream.read_object('picture')
        elif version == 7:
            _ = stream.read_ushort('pic version?')
            _ = stream.read_uint('picture type?')
            self.picture = stream.read_object('picture')
        elif version == 8:
            self.picture = stream.read_picture('picture')

        self.color_background = stream.read_object('color bg')
        self.color_foreground = stream.read_object('color fg')
        self.color_transparent = stream.read_object('color trans')

        # either an entire LineSymbol or just a LineSymbolLayer
        self.outline = stream.read_object('outline')

        self.angle = stream.read_double('angle')
        self.scale_x = stream.read_double('scale_x')
        self.scale_y = stream.read_double('scale_y')

        self.offset_x = stream.read_double('offset x')
        self.offset_y = stream.read_double('offset y')
        self.separation_x = stream.read_double('separation x')
        self.separation_y = stream.read_double('separation y')

        stream.read(16)

        self.symbol_level = SymbolLayer.read_symbol_level(stream)

        self.swap_fb_gb = bool(stream.read_uchar('swap fgbg'))

        if version < 4:
            return

        stream.read(6)
        if 4 < version < 8:
            stream.read(4)