def update(self): self.fill_id = str(self.chunk[8:12].encode('hex')) self.cache_fields.append((8, 4, 'fill id')) offset = 12 if self.version == CDR13: offset += 8 self.fill_type = ord(self.chunk[offset]) self.cache_fields.append((offset, 1, 'fill type')) if not self.fill_type == 1: self.fill_color = [] return offset = 16 if self.version == CDR13: offset = 35 self.color_space_type = ord(self.chunk[offset]) self.cache_fields.append((offset, 1, 'color space type')) offset = 24 if self.version == CDR13: offset = 43 self.fill_color = parse_cdr_color(self.color_space_type, self.chunk[offset:offset + 4]) if self.fill_color: self.cache_fields.append((offset, 4, 'color value'))
def update(self): self.stroke_id = str(self.chunk[8:12].encode('hex')) self.cache_fields.append((8, 4, 'outline id')) data = self.chunk[8:] ls_offset = 4 lc_offset = 6 ct_offset = 8 lw_offset = 12 offset = 28 dash_offset = 104 if self.version == CDR13: ls_offset = 24 lc_offset = 26 ct_offset = 28 lw_offset = 30 offset = 40 dash_offset = 116 self.stroke_spec = ord(data[ls_offset]) self.cache_fields.append((ls_offset + 8, 1, 'outline specification')) self.stroke_caps = ord(data[lc_offset]) self.cache_fields.append((lc_offset + 8, 1, 'outline caps')) self.stroke_join = ord(data[ct_offset]) self.cache_fields.append((ct_offset + 8, 1, 'outline corners')) self.stroke_width = parse_size_value(data[lw_offset:lw_offset + 4]) self.cache_fields.append((lw_offset + 8, 1, 'outline width')) dashnum = word2py_int(data[dash_offset:dash_offset + 2]) self.cache_fields.append( (dash_offset + 8, 2, 'number of dash records')) if dashnum > 0: self.stroke_dashes = range(dashnum) for i in self.stroke_dashes: dash = word2py_int(data[dash_offset + 2 + i * 2:dash_offset + 4 + i * 2]) self.stroke_dashes[i] = dash self.cache_fields.append( (dash_offset + 10, 2 * dashnum, 'dash records')) offset += 0x30 self.color_space_type = ord(data[offset]) self.cache_fields.append((offset + 8, 1, 'color space type')) offset += 16 self.stroke_color = parse_cdr_color(self.color_space_type, self.chunk[offset:offset + 4]) if self.stroke_color: self.cache_fields.append((offset, 4, 'color value'))
def update(self): self.stroke_id = str(self.chunk[8:12].encode('hex')) self.cache_fields.append((8, 4, 'outline id')) data = self.chunk[8:] ls_offset = 4 lc_offset = 6 ct_offset = 8 lw_offset = 12 offset = 28 dash_offset = 104 if self.version == CDR13: ls_offset = 24 lc_offset = 26 ct_offset = 28 lw_offset = 30 offset = 40 dash_offset = 116 self.stroke_spec = ord(data[ls_offset]) self.cache_fields.append((ls_offset + 8, 1, 'outline specification')) self.stroke_caps = ord(data[lc_offset]) self.cache_fields.append((lc_offset + 8, 1, 'outline caps')) self.stroke_join = ord(data[ct_offset]) self.cache_fields.append((ct_offset + 8, 1, 'outline corners')) self.stroke_width = parse_size_value(data[lw_offset:lw_offset + 4]) self.cache_fields.append((lw_offset + 8, 1, 'outline width')) dashnum = word2py_int(data[dash_offset:dash_offset + 2]) self.cache_fields.append((dash_offset + 8, 2, 'number of dash records')) if dashnum > 0: self.stroke_dashes = range(dashnum) for i in self.stroke_dashes: dash = word2py_int(data[dash_offset + 2 + i * 2:dash_offset + 4 + i * 2]) self.stroke_dashes[i] = dash self.cache_fields.append((dash_offset + 10, 2 * dashnum, 'dash records')) offset += 0x30 self.color_space_type = ord(data[offset]) self.cache_fields.append((offset + 8, 1, 'color space type')) offset += 16 self.stroke_color = parse_cdr_color(self.color_space_type, self.chunk[offset:offset + 4]) if self.stroke_color: self.cache_fields.append((offset, 4, 'color value'))
def get_color(self): clr = cdr_utils.parse_cdr_color(self.colorspace, self.valbytes[-4:]) if clr and not self.colorspace == cdr_const.CDR_COLOR_REGISTRATION: clr[3] += self.name return clr