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
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
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
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
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
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, **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
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
def write(self, fp, padding=1, **kwargs): return write_unicode_string(fp, self.value, padding=padding)
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
def write(self, fp): written = write_fmt(fp, '2I', self.number, self.id) written += write_unicode_string(fp, self.name) return written
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
def write(self, fp, **kwargs): return sum(write_unicode_string(fp, item) for item in self)