Exemple #1
0
    def write(self, fp, padding=1, **kwargs):
        written = write_fmt(fp, '4sI', self.kind.value, self.version)
        written += write_pascal_string(fp, self.uuid, 'macroman', padding=1)
        written += write_unicode_string(fp, self.filename)
        written += write_fmt(fp, '4s4sQB', self.filetype, self.creator,
                             len(self.data) if self.data is not None else 0,
                             self.open_file is not None)
        if self.open_file is not None:
            written += self.open_file.write(fp, padding=1)

        if self.kind == LinkedLayerType.EXTERNAL:
            written += self.linked_file.write(fp, padding=1)
            if self.version > 3:
                written += write_fmt(fp, 'I4Bd', *self.timestamp)
            written += write_fmt(fp, 'Q', self.filesize)
            if self.version > 2:
                written += write_bytes(fp, self.data)
        elif self.kind == LinkedLayerType.ALIAS:
            written += write_fmt(fp, '8x')
        if self.kind == LinkedLayerType.DATA:
            written += write_bytes(fp, self.data)

        if self.child_id is not None:
            written += write_unicode_string(fp, self.child_id)
        if self.mod_time is not None:
            written += write_fmt(fp, 'd', self.mod_time)
        if self.lock_state is not None:
            written += write_fmt(fp, 'B', self.lock_state)

        if self.kind == LinkedLayerType.EXTERNAL and self.version == 2:
            written += write_bytes(fp, self.data)

        written += write_padding(fp, written, padding)
        return written
Exemple #2
0
def test_unicode_string_wr(fixture, padding):
    with io.BytesIO() as f:
        write_unicode_string(f, fixture, padding=padding)
        data = f.getvalue()

    with io.BytesIO(data) as f:
        output = read_unicode_string(f, padding=padding)
        assert fixture == output
Exemple #3
0
    def write(self, fp):
        """Write the element to a file-like object.

        :param fp: file-like object
        """
        written = write_unicode_string(fp, self.name)
        written += write_length_and_key(fp, self.classID)
        written += write_unicode_string(fp, self.value)
        return written
Exemple #4
0
def test_unicode_stringrw(fixture, padding):
    with io.BytesIO(fixture) as f:
        data = read_unicode_string(f, padding=padding)
        print(len(fixture), f.tell())

    print('%d %r' % (len(data), data))

    with io.BytesIO() as f:
        write_unicode_string(f, data, padding=padding)
        output = f.getvalue()
        assert fixture == output
Exemple #5
0
 def _write_body(self, fp):
     written = write_unicode_string(fp, self.name, padding=1)
     written += write_length_and_key(fp, self.classID)
     written += write_fmt(fp, 'I', len(self))
     for key in self:
         written += write_length_and_key(fp, key)
         written += write_bytes(fp, self[key].ostype.value)
         written += self[key].write(fp)
     return written
Exemple #6
0
 def write(self, fp, **kwargs):
     written = write_fmt(fp, '2I', self.version, self.image_mode.value)
     written += write_fmt(fp, '2h', *self.point)
     written += write_unicode_string(fp, self.name)
     written += write_pascal_string(fp, self.pattern_id, encoding='ascii',
                                    padding=1)
     if self.color_table:
         for row in self.color_table:
             written += write_fmt(fp, '3B', *row)
         written += write_fmt(fp, '4x')
     written += self.data.write(fp)
     return written
 def write(self, fp):
     written = write_fmt(
         fp, '3I', self.slice_id, self.group_id, self.origin
     )
     if self.origin == 1 and self.associated_id is not None:
         written += write_fmt(fp, 'I', self.associated_id)
     written += write_unicode_string(fp, self.name, padding=1)
     written += write_fmt(fp, 'I', self.slice_type)
     written += write_fmt(fp, '4I', *self.bbox)
     written += write_unicode_string(fp, self.url, padding=1)
     written += write_unicode_string(fp, self.target, padding=1)
     written += write_unicode_string(fp, self.message, padding=1)
     written += write_unicode_string(fp, self.alt_tag, padding=1)
     written += write_fmt(fp, '?', self.cell_is_html)
     written += write_unicode_string(fp, self.cell_text, padding=1)
     written += write_fmt(
         fp, '2I', self.horizontal_align, self.vertical_align
     )
     written += write_fmt(
         fp, '4B', self.alpha, self.red, self.green, self.blue
     )
     if self.data is not None:
         if hasattr(self.data, 'write'):
             written += self.data.write(fp, padding=1)
         elif self.data:
             written += write_bytes(fp, self.data)
     return written
Exemple #8
0
 def write(self, fp, **kwargs):
     written = write_fmt(fp, 'H2B', self.version, self.is_reversed,
                         self.is_dithered)
     written += write_unicode_string(fp, self.name)
     written += write_fmt(fp, 'H', len(self.color_stops))
     written += sum(stop.write(fp) for stop in self.color_stops)
     written += write_fmt(fp, 'H', len(self.transparency_stops))
     written += sum(stop.write(fp) for stop in self.transparency_stops)
     written += write_fmt(fp, '4HI2HIH', self.expansion, self.interpolation,
                          self.length, self.mode, self.random_seed,
                          self.show_transparency, self.use_vector_color,
                          self.roughness, self.color_model)
     written += write_fmt(fp, '4H', *self.minimum_color)
     written += write_fmt(fp, '4H', *self.maximum_color)
     written += write_fmt(fp, '2x')
     written += write_padding(fp, written, 4)
     return written
Exemple #9
0
 def write(self, fp, padding=1, **kwargs):
     return write_unicode_string(fp, self.value, padding=padding)
Exemple #10
0
 def write(self, fp):
     written = write_unicode_string(fp, self.name)
     written += write_length_and_key(fp, self.classID)
     written += write_unicode_string(fp, self.value)
     return written
Exemple #11
0
 def write(self, fp, **kwargs):
     written = write_fmt(fp, 'I?', self.version, self.has_composite)
     written += write_unicode_string(fp, self.writer)
     written += write_unicode_string(fp, self.reader)
     written += write_fmt(fp, 'I', self.file_version)
     return written
Exemple #12
0
 def write(self, fp):
     written = write_fmt(fp, '2I', self.number, self.id)
     written += write_unicode_string(fp, self.name)
     return written
Exemple #13
0
 def write(self, fp, **kwargs):
     written = write_fmt(fp, '4I', *self.bbox)
     written += write_unicode_string(fp, self.name)
     written += write_fmt(fp, 'I', len(self.items))
     written += sum(item.write(fp) for item in self.items)
     return written
Exemple #14
0
 def write(self, fp, **kwargs):
     return sum(write_unicode_string(fp, item) for item in self)