示例#1
0
def add_toc(hd, size, data):
	off = 0
	i = 1
	while off + 6 <= size:
		(tag, off) = rdata(data, off, '<H')
		add_iter(hd, 'Stream tag %d' % i, key2txt(tag, stream_tags), off - 2, 2, '<H')
		(offset, off) = rdata(data, off, '<I')
		add_iter(hd, 'Offset to %s' % key2txt(tag, stream_tags), offset, off - 4, 4, '<I')
		i += 1
示例#2
0
文件: wt602.py 项目: iSapiens/re-lab
	def parse_section(self, n):
		(begin, end) = self.sections[n]
		name = key2txt(n, wt602_section_names, 'Section %d' % n)
		func = key2txt(n, wt602_section_handlers, None)
		adder = 0
		if end > begin:
			handler = None
			if func != None:
				(handler, adder) = func
			sectiter = add_pgiter(self.page, name, 'wt602', adder, self.data[begin:end], self.parent)
			if handler != None:
				handler(self.page, self.data[begin:end], sectiter, self)
示例#3
0
文件: wt602.py 项目: rgwan/re-lab
	def parse_section(self, n):
		(begin, end) = self.sections[n]
		name = key2txt(n, wt602_section_names, 'Section %d' % n)
		func = key2txt(n, wt602_section_handlers, None)
		adder = 0
		if end > begin:
			handler = None
			if func != None:
				(handler, adder) = func
			sectiter = add_pgiter(self.page, name, 'wt602', adder, self.data[begin:end], self.parent)
			if handler != None:
				handler(self.page, self.data[begin:end], sectiter, self)
示例#4
0
def add_cell_style_def(hd, size, data, off):
	(style, off) = rdata(data, off, '<B')
	add_iter(hd, 'Style?', style, off - 1, 1, '<B')
	(type, off) = rdata(data, off, '<B')
	type_map = {0: 'user defined', 0x80: 'predefined'}
	add_iter(hd, 'Type?', key2txt(type, type_map), off - 1, 1, '<B')
	(name_length, off) = rdata(data, off, '<B')
	add_iter(hd, 'Name length', name_length, off - 1, 1, '<B')
	(name_type, off) = rdata(data, off, '<B')
	name_type_map = {0: 'user defined', 0xff: 'predefined'}
	add_iter(hd, 'Name type?', key2txt(name_type, name_type_map), off - 1, 1, '<B')
	if name_type != 0xff:
		name_length -= 1 # It seems the last byte of the name is not saved because of a bug
		(name, off) = rdata(data, off, '%ds' % name_length)
		add_iter(hd, 'Name', name, off - name_length, name_length, '<%ds' % name_length)
示例#5
0
def add_obj_rectangle(view, data, offset):
    off = _add_obj_shape(view, data, offset)
    # TODO: It's not clear if the dims are relative to canvas or to the
    # shape's origin. All rectangles I've seen've had offset (0, 0).
    (tl_x, off) = rdata(data, off, '<i')
    view.add_iter('Top left corner X', tl_x, off - 4, 4, '<i')
    (tl_y, off) = rdata(data, off, '<i')
    view.add_iter('Top left corner Y', tl_y, off - 4, 4, '<i')
    (tr_x, off) = rdata(data, off, '<i')
    view.add_iter('Top right corner X', tr_x, off - 4, 4, '<i')
    (tr_y, off) = rdata(data, off, '<i')
    view.add_iter('Top right corner Y', tr_y, off - 4, 4, '<i')
    (br_x, off) = rdata(data, off, '<i')
    view.add_iter('Bottom right corner X', br_x, off - 4, 4, '<i')
    (br_y, off) = rdata(data, off, '<i')
    view.add_iter('Bottom right corner Y', br_y, off - 4, 4, '<i')
    (bl_x, off) = rdata(data, off, '<i')
    view.add_iter('Bottom left corner X', bl_x, off - 4, 4, '<i')
    (bl_y, off) = rdata(data, off, '<i')
    view.add_iter('Bottom left corner Y', bl_y, off - 4, 4, '<i')
    corner_types = {1: 'normal', 2: 'round', 3: 'round in', 4: 'cut'}
    (corner, off) = rdata(data, off, '<H')
    view.add_iter('Corner type', key2txt(corner, corner_types), off - 2, 2,
                  '<H')
    (rounding, off) = rdata(data, off, '<H')
    view.add_iter('Rounding', '%.3fin' % (rounding * 0.02028), off - 2, 2,
                  '<H')
    off = _add_point_list(view, data, off)
    return off
示例#6
0
文件: c602.py 项目: wardmike/re-lab
def add_cell_type(hd, size, data):
    off = add_record(hd, size, data)
    type_map = {0: 'default', 1: 'text'}
    (typ, off) = rdata(data, off, '<B')
    add_iter(hd, 'Type', key2txt(typ, type_map), off - 1, 1, '<B')
    off += 2
    add_range(hd, size, data, off)
示例#7
0
def add_paragraph(hd, size, data):
    fmt = {
        0x2: 'Switch bold',
        0x4: 'Switch italics',
        0xa: 'Line break',
        0xf: 'Switch wide',
        0x10: 'Switch high',
        0x13: 'Switch underline',
        0x14: 'Switch subscript',
        0x16: 'Switch superscript',
        0x1a: 'End of file',
        0x1d: 'Switch big',
    }
    off = 0
    mark = 0
    while off < len(data):
        (c, off) = rdata(data, off, '<B')
        if c < 0x20:
            if off - mark > 1:
                length = off - mark - 1
                add_iter(hd, 'Text', data[mark:off - 1], mark, length,
                         '%ds' % length)
            mark = off
            if c == 0xd and off == len(data) - 1:
                add_iter(hd, 'End of paragraph', data[-2:], off - 1, 2, '2s')
                off += 1
            else:
                add_iter(hd, key2txt(c, fmt), '', off - 1, 1, '<B')
示例#8
0
文件: c602.py 项目: AlexP11223/re-lab
def add_cell_type(hd, size, data):
	off = add_record(hd, size, data)
	type_map = {0: 'default', 1: 'text'}
	(typ, off) = rdata(data, off, '<B')
	add_iter(hd, 'Type', key2txt(typ, type_map), off - 1, 1, '<B')
	off += 2
	add_range(hd, size, data, off)
示例#9
0
文件: c602.py 项目: wardmike/re-lab
def add_alignment(hd, size, data):
    off = add_record(hd, size, data)
    align_map = {0: 'default', 1: 'left', 2: 'center', 3: 'right', 4: 'fill'}
    (align, off) = rdata(data, off, '<B')
    add_iter(hd, 'Alignment', key2txt(align, align_map), off - 1, 1, '<B')
    off += 2
    add_range(hd, size, data, off)
示例#10
0
文件: c602.py 项目: wardmike/re-lab
def add_font(hd, size, data):
    off = add_record(hd, size, data)
    font_map = {0: 'normal', 1: 'italic', 2: 'bold', 3: 'high', 4: 'gray'}
    (font, off) = rdata(data, off, '<B')
    add_iter(hd, 'Font', key2txt(font, font_map), off - 1, 1, '<B')
    off += 2
    add_range(hd, size, data, off)
示例#11
0
文件: zbr.py 项目: renyxa/re-lab
def add_obj_rectangle(view, data, offset):
	off = _add_obj_shape(view, data, offset)
	# TODO: It's not clear if the dims are relative to canvas or to the
	# shape's origin. All rectangles I've seen've had offset (0, 0).
	(tl_x, off) = rdata(data, off, '<i')
	view.add_iter('Top left corner X', tl_x, off - 4, 4, '<i')
	(tl_y, off) = rdata(data, off, '<i')
	view.add_iter('Top left corner Y', tl_y, off - 4, 4, '<i')
	(tr_x, off) = rdata(data, off, '<i')
	view.add_iter('Top right corner X', tr_x, off - 4, 4, '<i')
	(tr_y, off) = rdata(data, off, '<i')
	view.add_iter('Top right corner Y', tr_y, off - 4, 4, '<i')
	(br_x, off) = rdata(data, off, '<i')
	view.add_iter('Bottom right corner X', br_x, off - 4, 4, '<i')
	(br_y, off) = rdata(data, off, '<i')
	view.add_iter('Bottom right corner Y', br_y, off - 4, 4, '<i')
	(bl_x, off) = rdata(data, off, '<i')
	view.add_iter('Bottom left corner X', bl_x, off - 4, 4, '<i')
	(bl_y, off) = rdata(data, off, '<i')
	view.add_iter('Bottom left corner Y', bl_y, off - 4, 4, '<i')
	corner_types = {1: 'normal', 2: 'round', 3: 'round in', 4: 'cut'}
	(corner, off) = rdata(data, off, '<H')
	view.add_iter('Corner type', key2txt(corner, corner_types), off - 2, 2, '<H')
	(rounding, off) = rdata(data, off, '<H')
	view.add_iter('Rounding', '%.3fin' % (rounding * 0.02028), off - 2, 2, '<H')
	off = _add_point_list(view, data, off)
	return off
示例#12
0
文件: c602.py 项目: AlexP11223/re-lab
def add_alignment(hd, size, data):
	off = add_record(hd, size, data)
	align_map = {0: 'default', 1: 'left', 2: 'center', 3: 'right', 4: 'fill'}
	(align, off) = rdata(data, off, '<B')
	add_iter(hd, 'Alignment', key2txt(align, align_map), off - 1, 1, '<B')
	off += 2
	add_range(hd, size, data, off)
示例#13
0
文件: c602.py 项目: AlexP11223/re-lab
def add_font(hd, size, data):
	off = add_record(hd, size, data)
	font_map = {0: 'normal', 1: 'italic', 2: 'bold', 3: 'high', 4: 'gray'}
	(font, off) = rdata(data, off, '<B')
	add_iter(hd, 'Font', key2txt(font, font_map), off - 1, 1, '<B')
	off += 2
	add_range(hd, size, data, off)
示例#14
0
文件: t602.py 项目: cherry-wb/re-lab
def add_paragraph(hd, size, data):
	fmt = {
		0x2: 'Switch bold',
		0x4: 'Switch italics',
		0xa: 'Line break',
		0xf: 'Switch wide',
		0x10: 'Switch high',
		0x13: 'Switch underline',
		0x14: 'Switch subscript',
		0x16: 'Switch superscript',
		0x1a: 'End of file',
		0x1d: 'Switch big',
	}
	off = 0
	mark = 0
	while off < len(data):
		(c, off) = rdata(data, off, '<B')
		if c < 0x20:
			if off - mark > 1:
				length = off - mark - 1
				add_iter(hd, 'Text', data[mark:off - 1], mark, length, '%ds' % length)
			mark = off
			if c == 0xd and off == len(data) - 1:
				add_iter(hd, 'End of paragraph', data[-2:], off - 1, 2, '2s')
				off += 1
			else:
				add_iter(hd, key2txt(c, fmt), '', off - 1, 1, '<B')
示例#15
0
文件: lrf.py 项目: AlexP11223/re-lab
def chop_tag_f533(hd, size, data):
	(rule, off) = rdata(data, 2, '<H')
	rule_map = {0x12: 'horizontal adjustable', 0x14: 'horizontal fixed',
			0x21: 'vertical adjustable', 0x22: 'block adjustable',
			0x41: 'vertical fixed', 0x44: 'block fixed'}
	rule_str = key2txt(int(rule), rule_map)
	add_iter(hd, 'Rule', rule_str, off - 2, 2, '<H')
示例#16
0
def add_cell_style(hd, size, data, off):
	(attrs, off) = rdata(data, off, '<H')
	add_iter(hd, 'Text attributes', attrs, off - 2, 2, '<H')
	numfmt_map = {
		0x0: 'Generic',
		0x1: '0', 0x2: '0.00', 0x3: '#,##0', 0x4: '#,##0,00',
		0x9: '0%', 0xa: '0.00%',
		0xb: '0.00E+00',
		0xe: 'm/d/yy', 0xf: 'd/mmm/yy', 0x10: 'd/mmm', 0x11: 'mmm/yy',
		0x14: 'h:mm', 0x15: 'h:mm:ss', 0x16: 'm/d/yy h:mm',
		0x2a: '"$"#,##0', 0x2c: '"$"#,##0.00',
		0x30: '##0.0E+0',
		0x31: 'Text',
	}
	(numfmt, off) = rdata(data, off, '<H')
	add_iter(hd, 'Number format', key2txt(numfmt, numfmt_map), off - 2, 2, '<H')
	(style, off) = rdata(data, off, '<H')
	type_map = {1: 'named', 5: 'anonymous'}
	type = style & 0xf
	add_iter(hd, 'Type', key2txt(type, type_map), off - 2, 1, '<B')
	if type == 1:
		add_iter(hd, 'Real style?', style >> 4, off - 2, 2, '<H')
	halign_map = {0: 'generic', 1: 'left', 2: 'center', 3: 'right', 4: 'repeat', 5: 'paragraph', 6: 'selection center'}
	valign_map = {0: 'top', 1: 'center', 2: 'bottom', 3: 'paragraph'}
	(align, off) = rdata(data, off, '<B')
	add_iter(hd, 'Vertical alignment', key2txt(align >> 4, valign_map), off - 1, 1, '<B')
	add_iter(hd, 'Wrap text', bool(align & 0x8), off - 1, 1, '<B')
	add_iter(hd, 'Horizontal alignment', key2txt(align & 0x7, valign_map), off - 1, 1, '<B')
	orient_map = {0x10: 'horizontal', 0x12: 'vertical 90 degrees', 0x13: 'vertical 270 degrees'}
	(orient, off) = rdata(data, off, '<B')
	add_iter(hd, 'Text orientation?', key2txt(orient, orient_map), off - 1, 1, '<B')
	(color, off) = rdata(data, off, '<B')
	# TODO: verify this
	add_iter(hd, 'Color index', color - 0x80, off - 1, 1, '<B')
	(pattern, off) = rdata(data, off, '<B')
	add_iter(hd, 'Fill pattern?', pattern, off - 1, 1, '<B')
	border_map = {0: 'none', 1: 'line', 2: 'thick line', 3: 'dashed', 4: 'dashed 2', 5: 'very thick line', 6: 'double', 7: 'dotted'}
	(bottom, off) = rdata(data, off, '<H')
	add_iter(hd, 'Bottom', border_map[(bottom >> 6) & 0x7], off - 2, 2, '<H')
	add_iter(hd, 'Bottom color index', bottom >> 9, off - 2, 2, '<H')
	(others, off) = rdata(data, off, '<I')
	add_iter(hd, 'Top', border_map[others & 0x7], off - 4, 4, '<I')
	add_iter(hd, 'Left', border_map[(others >> 3) & 0x7], off - 4, 4, '<I')
	add_iter(hd, 'Right', border_map[(others >> 6) & 0x7], off - 4, 4, '<I')
	add_iter(hd, 'Top color index', (others >> 9) & 0x7f, off - 4, 4, '<I')
	add_iter(hd, 'Left color index', (others >> 16) & 0x7f, off - 4, 4, '<I')
	add_iter(hd, 'Right color index', (others >> 23) & 0x7f, off - 4, 4, '<I')
示例#17
0
文件: wt602.py 项目: weluc/re-lab
def add_attrset_para(hd, size, data):
	off = 0
	(alignment, off) = rdata(data, off, '<H')
	alignment_map = values({0: 'left', 1: 'center', 2: 'right', 3: 'justify'})
	add_iter(hd, 'Alignment', alignment_map(alignment), off - 2, 2, '<H')
	(left, off) = rdata(data, off, '<H')
	add_iter(hd, 'Left indent', '%.2fcm' % to_cm(left), off - 2, 2, '<H')
	(right, off) = rdata(data, off, '<H')
	add_iter(hd, 'Right indent', '%.2fcm' % to_cm(right), off - 2, 2, '<H')
	(first_line, off) = rdata(data, off, '<H')
	add_iter(hd, 'First line indent', '%.2fcm' % to_cm(first_line), off - 2, 2, '<H')
	(tabs, off) = rdata(data, off, '<H')
	add_iter(hd, 'Tabs', tabs, off - 2, 2, '<H')
	(column_gap, off) = rdata(data, off, '<H')
	add_iter(hd, 'Column gap', '%.2fcm' % to_cm(column_gap), off - 2, 2, '<H')
	(columns, off) = rdata(data, off, '<H')
	add_iter(hd, 'Number of columns', columns, off - 2, 2, '<H')
	(top, off) = rdata(data, off, '<H')
	add_iter(hd, 'Top margin', '%.2fpt' % (top / 20.0), off - 2, 2, '<H')
	(bottom, off) = rdata(data, off, '<H')
	add_iter(hd, 'Bottom margin', '%.2fpt' % (bottom / 20.0), off - 2, 2, '<H')
	(shading, off) = rdata(data, off, '<H')
	shading_map = values({
		0: 'none', 5: 'vertical lines', 6: 'raster',
		12: '100%', 16: '50%', 18: '25%', 19: '0%'
	})
	add_iter(hd, 'Shading type', shading_map(shading), off - 2, 2, '<H')
	(border_line, off) = rdata(data, off, '<H')
	add_iter(hd, 'Border line', key2txt(border_line, line_map), off - 2, 2, '<H')
	(border, off) = rdata(data, off, '<H')
	# TODO: complete
	border_map = values({
		0: 'none', 1: 'all', 2: 'top', 3: 'bottom', 4: 'top + bottom',
		5: 'left', 6: 'right', 7: 'left + right', 8: 'top + left'
	})
	add_iter(hd, 'Border type', border_map(border), off - 2, 2, '<H')
	off += 4
	(line_height, off) = rdata(data, off, '<H')
	add_iter(hd, 'Line height', '%d%%' % line_height, off - 2, 2, '<H')
	off += 4
	(section_height, off) = rdata(data, off, '<H')
	add_iter(hd, 'Section height', '%.2fcm' % to_cm(section_height), off - 2, 2, '<H')
	(section_inc, off) = rdata(data, off, '<H')
	add_iter(hd, 'Section increment', '%.2fcm' % to_cm(section_inc), off - 2, 2, '<H')
	off += 4
	(column_line, off) = rdata(data, off, '<H')
	add_iter(hd, 'Inter-column line', key2txt(column_line, line_map), off - 2, 2, '<H')
示例#18
0
文件: wt602.py 项目: iSapiens/re-lab
def add_attrset_para(hd, size, data):
	off = 0
	(alignment, off) = rdata(data, off, '<H')
	alignment_map = values({0: 'left', 1: 'center', 2: 'right', 3: 'justify'})
	add_iter(hd, 'Alignment', alignment_map(alignment), off - 2, 2, '<H')
	(left, off) = rdata(data, off, '<H')
	add_iter(hd, 'Left indent', '%.2fcm' % to_cm(left), off - 2, 2, '<H')
	(right, off) = rdata(data, off, '<H')
	add_iter(hd, 'Right indent', '%.2fcm' % to_cm(right), off - 2, 2, '<H')
	(first_line, off) = rdata(data, off, '<H')
	add_iter(hd, 'First line indent', '%.2fcm' % to_cm(first_line), off - 2, 2, '<H')
	(tabs, off) = rdata(data, off, '<H')
	add_iter(hd, 'Tabs', tabs, off - 2, 2, '<H')
	(column_gap, off) = rdata(data, off, '<H')
	add_iter(hd, 'Column gap', '%.2fcm' % to_cm(column_gap), off - 2, 2, '<H')
	(columns, off) = rdata(data, off, '<H')
	add_iter(hd, 'Number of columns', columns, off - 2, 2, '<H')
	(top, off) = rdata(data, off, '<H')
	add_iter(hd, 'Top margin', '%.2fpt' % (top / 20.0), off - 2, 2, '<H')
	(bottom, off) = rdata(data, off, '<H')
	add_iter(hd, 'Bottom margin', '%.2fpt' % (bottom / 20.0), off - 2, 2, '<H')
	(shading, off) = rdata(data, off, '<H')
	shading_map = values({
		0: 'none', 5: 'vertical lines', 6: 'raster',
		12: '100%', 16: '50%', 18: '25%', 19: '0%'
	})
	add_iter(hd, 'Shading type', shading_map(shading), off - 2, 2, '<H')
	(border_line, off) = rdata(data, off, '<H')
	add_iter(hd, 'Border line', key2txt(border_line, line_map), off - 2, 2, '<H')
	(border, off) = rdata(data, off, '<H')
	# TODO: complete
	border_map = values({
		0: 'none', 1: 'all', 2: 'top', 3: 'bottom', 4: 'top + bottom',
		5: 'left', 6: 'right', 7: 'left + right', 8: 'top + left'
	})
	add_iter(hd, 'Border type', border_map(border), off - 2, 2, '<H')
	off += 4
	(line_height, off) = rdata(data, off, '<H')
	add_iter(hd, 'Line height', '%d%%' % line_height, off - 2, 2, '<H')
	off += 4
	(section_height, off) = rdata(data, off, '<H')
	add_iter(hd, 'Section height', '%.2fcm' % to_cm(section_height), off - 2, 2, '<H')
	(section_inc, off) = rdata(data, off, '<H')
	add_iter(hd, 'Section increment', '%.2fcm' % to_cm(section_inc), off - 2, 2, '<H')
	off += 4
	(column_line, off) = rdata(data, off, '<H')
	add_iter(hd, 'Inter-column line', key2txt(column_line, line_map), off - 2, 2, '<H')
示例#19
0
文件: wt602.py 项目: iSapiens/re-lab
def add_offsets(hd, size, data):
	off = 0
	i = 0
	while off + 4 <= size:
		(offset, off) = rdata(data, off, '<I')
		name = key2txt(i, wt602_section_names, 'Section %d' % i)
		add_iter(hd, name, offset, off - 4, 4, '<I')
		i += 1
示例#20
0
文件: zbr.py 项目: renyxa/re-lab
def add_style(view, data, offset, length):
	off = offset + 2
	type_map = {0: 'solid', 1: 'dash', 2: 'long dash', 3: 'dash dot', 4: 'dash dot dot'}
	(typ, off) = rdata(data, off, '<B')
	view.add_iter('Type', key2txt(typ, type_map), off - 1, 1, '<B')
	# TODO: the list is likely the same as in ZMF2
	arrow_map = {0: 'none', 1: 'circle', 2: 'line'}
	(start, off) = rdata(data, off, '<B')
	view.add_iter('Start arrow', key2txt(start, arrow_map), off - 1, 1, '<B')
	(end, off) = rdata(data, off, '<B')
	view.add_iter('End arrow', key2txt(end, arrow_map), off - 1, 1, '<B')
	(pen_color, off) = rdata(data, off, '<I')
	view.add_iter('Pen color', '#%x' % pen_color, off - 4, 4, '<I')
	off += 7
	(fill_color, off) = rdata(data, off, '<I')
	view.add_iter('Fill color', '#%x' % fill_color, off - 4, 4, '<I')
	return offset + length
示例#21
0
def chop_tag_f535(hd, size, data):
    (layout, off) = rdata(data, 2, '<H')
    layout_map = {
        0x41: 'top-to-bottom right-to-left',
        0x34: 'left-to-right top-to-bottom'
    }
    layout_str = key2txt(int(layout), layout_map)
    add_iter(hd, 'Layout', layout_str, off - 2, 2, '<H')
示例#22
0
文件: t602.py 项目: cherry-wb/re-lab
	def parse(self):
		off = 0
		while off < len(self.data):
			eol = self.data.find("\r\n", off)
			if eol > 0:
				end = eol + 2
			else:
				end = len(self.data)
			data = self.data[off:end]
			off = end
			if data[0] == '@':
				add_pgiter(self.page, key2txt(data[1:3], controls, 'Control'), 't602', 'control', data, self.parent)
			elif data[0] == '.':
				(cmd, dummy) = read_command(data)
				add_pgiter(self.page, key2txt(cmd.upper(), commands, 'Command'), 't602', 'command', data, self.parent)
			else:
				add_pgiter(self.page, 'Paragraph', 't602', 'paragraph', data, self.parent)
示例#23
0
	def add_address(off):
		(row, off) = rdata(data, off, '<H')
		add_iter(hd, 'Row', format_row(row & 0x3fff), off - 2, 2, '<H')
		rel = (row >> 14) & 0x3
		add_iter(hd, 'Relative', key2txt(rel, rel_map), off - 1, 1, '<B')
		(col, off) = rdata(data, off, '<B')
		add_iter(hd, 'Column', format_column(col), off - 1, 1, '<B')
		return off
示例#24
0
文件: c602.py 项目: wardmike/re-lab
def add_chart_type(hd, size, data, off):
    (typ, off) = rdata(data, off, '<B')
    type_map = {
        # 2D
        0x0: 'column',
        0x1: 'column - stacked',
        0x2: 'column with overlap',
        0x3: 'column - percent stacked',
        0x4: 'column with values',
        0x5: 'bar',
        0x6: 'bar - stacked',
        0x7: 'bar with overlap',
        0x8: 'bar - percent stacked',
        0x9: 'bar with values',
        0xa: 'area - stacked',
        0xb: 'area - percent stacked',
        0xc: 'pie',
        0xd: 'pie with values',
        0xe: 'pie - percent',
        0xf: 'XY - points only',
        0x10: 'XY - points and lines',
        0x11: 'line - lines only',
        0x12: 'line - points and lines',
        0x13: 'points',
        0x14: 'joined points',
        0x15: 'joined',
        # 3D
        0x16: '3D column',
        0x17: '3D column - deep',
        0x18: '3D column cylinder - deep',
        0x19: '3D column pyramid - deep',
        0x1a: '3D bar',
        0x1b: '3D bar - deep',
        0x1c: '3D bar cylinder - deep',
        0x1d: '3D bar pyramid - deep',
        0x1e: '3D lines',
        0x1f: '3D area',
        0x20: '3D pie',
        0x21: '3D pie with values',
        0x22: '3D pie - percent',
    }
    add_iter(hd, 'Type', key2txt(typ, type_map), off - 1, 1, '<B')
    (two_d, off) = rdata(data, off, '<B')
    add_iter(hd, 'Selected 2D', key2txt(two_d, type_map), off - 1, 1, '<B')
    (three_d, off) = rdata(data, off, '<B')
    add_iter(hd, 'Selected 3D', key2txt(three_d, type_map), off - 1, 1, '<B')
示例#25
0
文件: t602.py 项目: cherry-wb/re-lab
def add_command(hd, size, data):
	(name, off) = read_command(data)
	add_iter(hd, 'Name', key2txt(name.upper(), commands), 1, off - 1, '%ds' % (off - 1))
	if data[off] == ' ':
		off += 1
		length = size - 2 - off
		(arg, off) = rdata(data, off, '%ds' % length)
		add_iter(hd, 'Argument', arg, off - length, length, '%ds' % length)
	add_iter(hd, 'End of command', data[off:], off, len(data) - off, '%ds' % (len(data) - off))
示例#26
0
文件: c602.py 项目: AlexP11223/re-lab
def add_3d(hd, size, data):
	off = 0
	(desc, off) = rdata(data, off, '<B')
	add_iter(hd, 'Double description of values', bool(desc), off - 1, 1, '<B')
	(raster, off) = rdata(data, off, '<B')
	add_iter(hd, 'Series raster', bool(raster), off - 1, 1, '<B')
	depth_map = {0: 'small', 1: 'medium', 2: 'large'}
	(depth, off) = rdata(data, off, '<B')
	add_iter(hd, 'Series depth', key2txt(depth, depth_map), off - 1, 1, '<B')
示例#27
0
文件: c602.py 项目: wardmike/re-lab
def add_3d(hd, size, data):
    off = 0
    (desc, off) = rdata(data, off, '<B')
    add_iter(hd, 'Double description of values', bool(desc), off - 1, 1, '<B')
    (raster, off) = rdata(data, off, '<B')
    add_iter(hd, 'Series raster', bool(raster), off - 1, 1, '<B')
    depth_map = {0: 'small', 1: 'medium', 2: 'large'}
    (depth, off) = rdata(data, off, '<B')
    add_iter(hd, 'Series depth', key2txt(depth, depth_map), off - 1, 1, '<B')
示例#28
0
文件: zbr.py 项目: renyxa/re-lab
def add_obj_point(view, data, offset):
	(x, off) = rdata(data, offset, '<i')
	view.add_iter('X', x, off - 4, 4, '<i')
	(y, off) = rdata(data, off, '<i')
	view.add_iter('Y', y, off - 4, 4, '<i')
	type_map = {1: 'Line point?', 2: 'Curve point?', 3: 'Curve control point?',}
	(typ, off) = rdata(data, off, '<B')
	view.add_iter('Type?', key2txt(typ, type_map), off - 1, 1, '<B')
	return off
示例#29
0
def add_obj(view, data, offset, length):
    (obj, off) = rdata(data, offset, '<H')
    view.add_iter('Type', key2txt(obj, obj_names), off - 2, 2, '<H')
    if obj in obj_names:
        view.set_label(obj_names[obj])
    if obj in obj_handlers:
        off = obj_handlers[obj](view, data, off)
    else:
        off = offset + length
    view.set_length(off - offset)
    return off
示例#30
0
文件: lrf.py 项目: AlexP11223/re-lab
def chop_tag_f5d1(hd, size, data):
	(width, off) = rdata(data, 2, '<H')
	add_iter(hd, 'Width', width, off - 2, 2, '<H')
	(height, off) = rdata(data, off, '<H')
	add_iter(hd, 'Height', height, off - 2, 2, '<H')
	(oid, off) = rdata(data, off, '<I')
	add_iter(hd, 'Object ID', '0x%x' % oid, off - 4, 4, '<I')
	(adjustment, off) = rdata(data, off, '<H')
	adjustment_map = {1: 'top', 2: 'center', 3: 'baseline', 4: 'bottom'}
	adjustment_str = key2txt(int(adjustment), adjustment_map)
	add_iter(hd, 'Adjustment', adjustment_str, off - 2, 2, '<H')
示例#31
0
def chop_tag_f57a(hd, size, data):
    (mode, off) = rdata(data, 2, '<H')
    mode_map = {
        0x0: 'none',
        0x10: 'solid',
        0x20: 'dashed',
        0x30: 'double',
        0x40: 'dotted'
    }
    mode_str = key2txt(int(mode), mode_map)
    add_iter(hd, 'Mode', mode_str, off - 2, 2, '<H')
示例#32
0
文件: t602.py 项目: cherry-wb/re-lab
def add_control(hd, size, data):
	off = 1
	(name, off) = rdata(data, off, '2s')
	add_iter(hd, 'Name', key2txt(name, controls), off - 2, 2, '2s')
	if data[-1] == '\x1a':
		end = len(data) - 1
	else:
		end = len(data) - 2
	off += 1
	if off < end:
		value = data[off:end]
		encoding_map = {'0': 'KEYBCS2', '1': 'LATIN2', '2': 'KOI8CS'}
		line_height_map = {'6': '1', '4': '1.5', '3': '2'}
		if name == 'CT':
			value = key2txt(value.strip(), encoding_map)
		elif name == 'LH':
			value = key2txt(value.strip(), line_height_map)
		add_iter(hd, 'Value', value, off, end - off, '%ds' % (end - off))
	off = end
	add_iter(hd, 'End of control', data[off:], off, len(data) - off, '%ds' % (len(data) - off))
示例#33
0
文件: c602.py 项目: AlexP11223/re-lab
def add_legend(hd, size, data):
	off = add_section(hd, size, data)
	(hide, off) = rdata(data, off, '<B')
	add_iter(hd, 'Hide', bool(hide), off - 1, 1, '<B')
	location_map = {1: 'bottom', 2: 'left', 3: 'right'}
	(location, off) = rdata(data, off, '<B')
	add_iter(hd, 'Location', key2txt(location, location_map), off - 1, 1, '<B')
	(rank, off) = rdata(data, off, '<B')
	add_iter(hd, 'Reversed rank of categories', bool(rank), off - 1, 1, '<B')
	(switch, off) = rdata(data, off, '<B')
	add_iter(hd, 'Switch series and categories', bool(switch), off - 1, 1, '<B')
示例#34
0
def chop_tag_f548(hd, size, data):
    (pos, off) = rdata(data, 2, '<H')
    pos_map = {
        1: 'bottom left',
        2: 'bottom right',
        3: 'top right',
        4: 'top left',
        5: 'base'
    }
    pos_str = key2txt(int(pos), pos_map)
    add_iter(hd, 'Position', pos_str, off - 2, 2, '<H')
示例#35
0
def add_command(hd, size, data):
    (name, off) = read_command(data)
    add_iter(hd, 'Name', key2txt(name.upper(), commands), 1, off - 1,
             '%ds' % (off - 1))
    if data[off] == ' ':
        off += 1
        length = size - 2 - off
        (arg, off) = rdata(data, off, '%ds' % length)
        add_iter(hd, 'Argument', arg, off - length, length, '%ds' % length)
    add_iter(hd, 'End of command', data[off:], off,
             len(data) - off, '%ds' % (len(data) - off))
示例#36
0
文件: zbr.py 项目: renyxa/re-lab
def add_obj(view, data, offset, length):
	(obj, off) = rdata(data, offset, '<H')
	view.add_iter('Type', key2txt(obj, obj_names), off - 2, 2, '<H')
	if obj_names.has_key(obj):
		view.set_label(obj_names[obj])
	if obj_handlers.has_key(obj):
		off = obj_handlers[obj](view, data, off)
	else:
		off = offset + length
	view.set_length(off - offset)
	return off
示例#37
0
def chop_tag_f5d1(hd, size, data):
    (width, off) = rdata(data, 2, '<H')
    add_iter(hd, 'Width', width, off - 2, 2, '<H')
    (height, off) = rdata(data, off, '<H')
    add_iter(hd, 'Height', height, off - 2, 2, '<H')
    (oid, off) = rdata(data, off, '<I')
    add_iter(hd, 'Object ID', '0x%x' % oid, off - 4, 4, '<I')
    (adjustment, off) = rdata(data, off, '<H')
    adjustment_map = {1: 'top', 2: 'center', 3: 'baseline', 4: 'bottom'}
    adjustment_str = key2txt(int(adjustment), adjustment_map)
    add_iter(hd, 'Adjustment', adjustment_str, off - 2, 2, '<H')
示例#38
0
 def parse(self):
     off = 0
     while off < len(self.data):
         eol = self.data.find("\r\n", off)
         if eol > 0:
             end = eol + 2
         else:
             end = len(self.data)
         data = self.data[off:end]
         off = end
         if data[0] == '@':
             add_pgiter(self.page, key2txt(data[1:3], controls, 'Control'),
                        't602', 'control', data, self.parent)
         elif data[0] == '.':
             (cmd, dummy) = read_command(data)
             add_pgiter(self.page, key2txt(cmd.upper(), commands,
                                           'Command'), 't602', 'command',
                        data, self.parent)
         else:
             add_pgiter(self.page, 'Paragraph', 't602', 'paragraph', data,
                        self.parent)
示例#39
0
def add_control(hd, size, data):
    off = 1
    (name, off) = rdata(data, off, '2s')
    add_iter(hd, 'Name', key2txt(name, controls), off - 2, 2, '2s')
    if data[-1] == '\x1a':
        end = len(data) - 1
    else:
        end = len(data) - 2
    off += 1
    if off < end:
        value = data[off:end]
        encoding_map = {'0': 'KEYBCS2', '1': 'LATIN2', '2': 'KOI8CS'}
        line_height_map = {'6': '100%', '4': '150%', '3': '200%'}
        if name == 'CT':
            value = key2txt(value.strip(), encoding_map)
        elif name == 'LH':
            value = key2txt(value.strip(), line_height_map)
        add_iter(hd, 'Value', value, off, end - off, '%ds' % (end - off))
    off = end
    add_iter(hd, 'End of control', data[off:], off,
             len(data) - off, '%ds' % (len(data) - off))
示例#40
0
def add_text_style(view, data, offset, length):
    off = offset + 0x12
    (font, off) = rdata(data, off, '32s')
    view.add_iter('Font name', font[0:font.find('\0')], off - 32, 32, '32s')
    (size, off) = rdata(data, off, '<f')
    align_map = {0: 'left', 1: 'center', 2: 'right'}
    view.add_iter('Font size', '%.1fpt' % size, off - 4, 4, '<f')
    (align, off) = rdata(data, off, '<H')
    view.add_iter('Alignment', key2txt(align, align_map), off - 2, 2, '<H')
    (spacing, off) = rdata(data, off, '<H')
    view.add_iter('Line spacing', '%d%%' % spacing, off - 2, 2, '<H')
    return offset + length
示例#41
0
文件: c602.py 项目: wardmike/re-lab
def add_legend(hd, size, data):
    off = add_section(hd, size, data)
    (hide, off) = rdata(data, off, '<B')
    add_iter(hd, 'Hide', bool(hide), off - 1, 1, '<B')
    location_map = {1: 'bottom', 2: 'left', 3: 'right'}
    (location, off) = rdata(data, off, '<B')
    add_iter(hd, 'Location', key2txt(location, location_map), off - 1, 1, '<B')
    (rank, off) = rdata(data, off, '<B')
    add_iter(hd, 'Reversed rank of categories', bool(rank), off - 1, 1, '<B')
    (switch, off) = rdata(data, off, '<B')
    add_iter(hd, 'Switch series and categories', bool(switch), off - 1, 1,
             '<B')
示例#42
0
文件: c602.py 项目: wardmike/re-lab
def add_section(hd, size, data):
    off = 0
    off = add_text(hd, size, data, 0, 'Label')
    if off < 0x51:
        add_iter(hd, 'Junk', '', off, 0x51 - off, '%ds' % (0x51 - off))
    off = 0x51
    font_map = {1: 'Triplex', 2: 'Small', 3: 'Sans Serif'}
    (font, off) = rdata(data, off, '<B')
    add_iter(hd, 'Font', key2txt(font, font_map), off - 1, 1, '<B')
    (border, off) = rdata(data, off, '<B')
    add_iter(hd, 'Border', bool(border), off - 1, 1, '<B')
    return off
示例#43
0
文件: zbr.py 项目: renyxa/re-lab
def add_text_style(view, data, offset, length):
	off = offset + 0x12
	(font, off) = rdata(data, off, '32s')
	view.add_iter('Font name', font[0:font.find('\0')], off - 32, 32, '32s')
	(size, off) = rdata(data, off, '<f')
	align_map = {0: 'left', 1: 'center', 2: 'right'}
	view.add_iter('Font size', '%.1fpt' % size, off - 4, 4, '<f')
	(align, off) = rdata(data, off, '<H')
	view.add_iter('Alignment', key2txt(align, align_map), off - 2, 2, '<H')
	(spacing, off) = rdata(data, off, '<H')
	view.add_iter('Line spacing', '%d%%' % spacing, off - 2, 2, '<H')
	return offset + length
示例#44
0
文件: wt602.py 项目: weluc/re-lab
def add_frame_data(hd, size, data):
	off = 4
	type_map = {
		0x1: 'rectangle',
		0x14: 'line',
		0xba: 'compound brackets',
	}
	(typ, off) = rdata(data, off, '<H')
	add_iter(hd, 'Shape type', key2txt(typ, type_map), off - 2, 2, '<H')
	off += 6
	(tagslen, off) = rdata(data, off, '<H')
	add_iter(hd, 'Length of tag list', tagslen, off - 2, 2, '<H')
	end = off + tagslen
	assert end <= size
	tag_map = {
	}
	while off < end:
		off += 2
		(tag, off) = rdata(data, off, '<B')
		add_iter(hd, 'Tag', key2txt(tag, tag_map), off - 1, 1, '<B')
		off += 3
示例#45
0
def chop_tag_f533(hd, size, data):
    (rule, off) = rdata(data, 2, '<H')
    rule_map = {
        0x12: 'horizontal adjustable',
        0x14: 'horizontal fixed',
        0x21: 'vertical adjustable',
        0x22: 'block adjustable',
        0x41: 'vertical fixed',
        0x44: 'block fixed'
    }
    rule_str = key2txt(int(rule), rule_map)
    add_iter(hd, 'Rule', rule_str, off - 2, 2, '<H')
示例#46
0
文件: iwa.py 项目: AlexP11223/re-lab
def add_field(hd, size, data):
	(key, off) = read_var(data, 0)
	field_num = key >> 3
	wire_type = key & 0x7
	wire_type_map = {0: 'Varint', 1: '64-bit', 2: 'Length-delimited', 3: 'Start group', 4: 'End group', 5: '32-bit'}
	add_iter(hd, 'Field', field_num, 0, off, '%ds' % off)
	add_iter(hd, 'Wire type', key2txt(wire_type, wire_type_map), 0, off, '%ds' % off)
	if wire_type == 2:
		len_off = off
		(length, off) = read_var(data, off)
		add_iter(hd, 'Length', length, len_off, off - len_off, '%ds' % (off - len_off))
	return off
示例#47
0
文件: c602.py 项目: AlexP11223/re-lab
def add_section(hd, size, data):
	off = 0
	off = add_text(hd, size, data, 0, 'Label')
	if off < 0x51:
		add_iter(hd, 'Junk', '', off, 0x51 - off, '%ds' % (0x51 - off))
	off = 0x51
	font_map = {1: 'Triplex', 2: 'Small', 3: 'Sans Serif'}
	(font, off) = rdata(data, off, '<B')
	add_iter(hd, 'Font', key2txt(font, font_map), off - 1, 1, '<B')
	(border, off) = rdata(data, off, '<B')
	add_iter(hd, 'Border', bool(border), off - 1, 1, '<B')
	return off
示例#48
0
文件: wt602.py 项目: iSapiens/re-lab
def add_frame_data(hd, size, data):
	off = 4
	type_map = {
		0x1: 'rectangle',
		0x14: 'line',
		0xba: 'compound brackets',
	}
	(typ, off) = rdata(data, off, '<H')
	add_iter(hd, 'Shape type', key2txt(typ, type_map), off - 2, 2, '<H')
	off += 6
	(tagslen, off) = rdata(data, off, '<H')
	add_iter(hd, 'Length of tag list', tagslen, off - 2, 2, '<H')
	end = off + tagslen
	assert end <= size
	tag_map = {
	}
	while off < end:
		off += 2
		(tag, off) = rdata(data, off, '<B')
		add_iter(hd, 'Tag', key2txt(tag, tag_map), off - 1, 1, '<B')
		off += 3
示例#49
0
def add_obj_point(view, data, offset):
    (x, off) = rdata(data, offset, '<i')
    view.add_iter('X', x, off - 4, 4, '<i')
    (y, off) = rdata(data, off, '<i')
    view.add_iter('Y', y, off - 4, 4, '<i')
    type_map = {
        1: 'Line point?',
        2: 'Curve point?',
        3: 'Curve control point?',
    }
    (typ, off) = rdata(data, off, '<B')
    view.add_iter('Type?', key2txt(typ, type_map), off - 1, 1, '<B')
    return off
示例#50
0
	def wrapper(hd, size, data):
		off = 0
		(sz, off) = rdata(data, off, '<h')
		add_iter(hd, 'Size', abs(sz), off - 2, 2, '<h')
		compressed = 0
		if sz > 0:
			(typ, off) = rdata(data, off, '<H')
			add_iter(hd, 'Type', key2txt(typ, WLS_RECORDS, ('Unknown',))[0], off - 2, 2, '<H')
		else:
			(compressed, off) = rdata(data, off, '<H')
			add_iter(hd, 'Compressed bytes', compressed, off - 2, 2, '<H')
		if wrapped:
			wrapped(hd, size, data, off)
示例#51
0
文件: iwa.py 项目: AlexP11223/re-lab
def add_tile_row(hd, size, data):
	# The IDs point to appropriate data lists (c.f. table model)
	off = 2
	type_map = {0: 'empty', 2: 'number', 3: 'simple text', 5: 'date', 6: 'formula', 7: 'duration', 9: 'paragraph text'}
	(typ, off) = rdata(data, off, '<B')
	add_iter(hd, 'Cell type', key2txt(typ, type_map), off - 1, 1, '<B')
	off += 1
	flags_set = {
		0x2: 'style', 0x4: 'format', 0x8: 'formula',
		0x10: 'simple text', 0x20: 'number', 0x40: 'date',
		0x200: 'paragraph text',
		0xc00: 'conditional format',
		0x1000: 'comment',
	}
	(flags, off) = rdata(data, off, '<H')
	add_iter(hd, 'Flags', bflag2txt(flags, flags_set), off - 2, 2, '<H')
	off += 6

	# NOTE: the order is rather experimental; I originally thought the items are sorted by numeric value of the flag,
	# but apparently that's not the case. Sigh...
	if flags & 0x2:
		(style, off) = rdata(data, off, '<I')
		add_iter(hd, 'Style ID', style, off - 4, 4, '<I')
	if flags & 0xc00:
		(fmt, off) = rdata(data, off, '<I')
		add_iter(hd, 'Conditional format ID', fmt, off - 4, 4, '<I')
		off += 4
	if flags & 0x4:
		(fmt, off) = rdata(data, off, '<I')
		add_iter(hd, 'Format ID', fmt, off - 4, 4, '<I')
	if flags & 0x8:
		(formula, off) = rdata(data, off, '<I')
		add_iter(hd, 'Formula ID', formula, off - 4, 4, '<I')
	if flags & 0x10:
		(text, off) = rdata(data, off, '<I')
		add_iter(hd, 'Simple text ID', text, off - 4, 4, '<I')
	if flags & 0x1000:
		(comment, off) = rdata(data, off, '<I')
		add_iter(hd, 'Comment ID', comment, off - 4, 4, '<I')
	if flags & 0x20:
		(value, off) = rdata(data, off, '<d')
		value_str = value
		if typ == 7:
			value_str = '%.1f s' % value
		add_iter(hd, 'Value', value_str, off - 8, 8, '<d')
	if flags & 0x40:
		(date, off) = rdata(data, off, '<d')
		add_iter(hd, 'Date', date, off - 8, 8, '<d')
	if flags & 0x200:
		(text, off) = rdata(data, off, '<I')
		add_iter(hd, 'Paragraph text ID', text, off - 4, 4, '<I')
示例#52
0
def add_style(view, data, offset, length):
    off = offset + 2
    type_map = {
        0: 'solid',
        1: 'dash',
        2: 'long dash',
        3: 'dash dot',
        4: 'dash dot dot'
    }
    (typ, off) = rdata(data, off, '<B')
    view.add_iter('Type', key2txt(typ, type_map), off - 1, 1, '<B')
    # TODO: the list is likely the same as in ZMF2
    arrow_map = {0: 'none', 1: 'circle', 2: 'line'}
    (start, off) = rdata(data, off, '<B')
    view.add_iter('Start arrow', key2txt(start, arrow_map), off - 1, 1, '<B')
    (end, off) = rdata(data, off, '<B')
    view.add_iter('End arrow', key2txt(end, arrow_map), off - 1, 1, '<B')
    (pen_color, off) = rdata(data, off, '<I')
    view.add_iter('Pen color', '#%x' % pen_color, off - 4, 4, '<I')
    off += 7
    (fill_color, off) = rdata(data, off, '<I')
    view.add_iter('Fill color', '#%x' % fill_color, off - 4, 4, '<I')
    return offset + length
示例#53
0
文件: c602.py 项目: AlexP11223/re-lab
def add_chart_type(hd, size, data, off):
	(typ, off) = rdata(data, off, '<B')
	type_map = {
		# 2D
		0x0: 'column', 0x1: 'column - stacked', 0x2: 'column with overlap', 0x3: 'column - percent stacked', 0x4: 'column with values',
		0x5: 'bar', 0x6: 'bar - stacked', 0x7: 'bar with overlap', 0x8: 'bar - percent stacked', 0x9: 'bar with values',
		0xa: 'area - stacked', 0xb: 'area - percent stacked',
		0xc: 'pie', 0xd: 'pie with values', 0xe: 'pie - percent',
		0xf: 'XY - points only', 0x10: 'XY - points and lines',
		0x11: 'line - lines only', 0x12: 'line - points and lines',
		0x13: 'points', 0x14: 'joined points',
		0x15: 'joined',
		# 3D
		0x16: '3D column', 0x17: '3D column - deep', 0x18: '3D column cylinder - deep', 0x19: '3D column pyramid - deep',
		0x1a: '3D bar', 0x1b: '3D bar - deep', 0x1c: '3D bar cylinder - deep', 0x1d: '3D bar pyramid - deep',
		0x1e: '3D lines',
		0x1f: '3D area',
		0x20: '3D pie', 0x21: '3D pie with values', 0x22: '3D pie - percent',
	}
	add_iter(hd, 'Type', key2txt(typ, type_map), off - 1, 1, '<B')
	(two_d, off) = rdata(data, off, '<B')
	add_iter(hd, 'Selected 2D', key2txt(two_d, type_map), off - 1, 1, '<B')
	(three_d, off) = rdata(data, off, '<B')
	add_iter(hd, 'Selected 3D', key2txt(three_d, type_map), off - 1, 1, '<B')
示例#54
0
文件: wls.py 项目: AlexP11223/re-lab
def add_text_attrs(hd, size, data, off):
	(size, off) = rdata(data, off, '<H')
	add_iter(hd, 'Font size', '%d pt' % (size / 20), off - 2, 2, '<H')
	flags_map = {2: 'italic', 8: 'line through',}
	(flags, off) = rdata(data, off, '<H')
	add_iter(hd, 'Flags?', bflag2txt(flags, flags_map), off - 2, 2, '<H')
	(color, off) = rdata(data, off, '<H')
	if color == 0x7fff:
		color_str = "default"
	else:
		color_str = '%d' % color
	# I can see no record that'd look like a palette, though. Maybe it is implicit?
	add_iter(hd, 'Color index', color_str, off - 2, 2, '<H')
	font_weight_map = {400: 'normal', 700: 'bold'}
	(font_weight, off) = rdata(data, off, '<H')
	add_iter(hd, 'Font weight', key2txt(font_weight, font_weight_map), off - 2, 2, '<H')
	off += 2
	(underline, off) = rdata(data, off, '<B')
	add_iter(hd, 'Underline', bool(underline), off - 1, 1, '<B')
	(line_through, off) = rdata(data, off, '<B')
	add_iter(hd, 'Line-through?', line_through, off - 1, 1, '<B')
	off += 2
	add_short_string(hd, size, data, off, 'Font name')
示例#55
0
文件: lrf.py 项目: AlexP11223/re-lab
def add_header(hd, size, data):
	magic = read_unistr(data, 0, 8)
	add_iter(hd, 'Format identifier', magic, 0, 8, 's')
	off = 8
	(version, off) = rdata(data, 8, '<H')
	add_iter(hd, 'Version', version, off - 2, 2, '<H')
	(encKey, off) = rdata(data, off, '<H')
	add_iter(hd, 'Pseudo Enc. Key', encKey, off - 2, 2, '<H')
	(rootID, off) = rdata(data, off, '<I')
	add_iter(hd, 'Root Object ID', '0x%x' % rootID, off - 4, 4, '<I')
	(objCount, off) = rdata(data, off, '<Q')
	add_iter(hd, 'Number of objects', objCount, off - 8, 8, '<Q')
	(objIndexOffset, off) = rdata(data, off, '<Q')
	add_iter(hd, 'Object index offset', objIndexOffset, off - 8, 8, '<Q')
	off += 6
	(dpi, off) = rdata(data, off, '<H')
	add_iter(hd, 'DPI', '%.1f' % (int(dpi) / 10), off - 2, 2, '<H')
	off += 2
	(width, off) = rdata(data, off, '<H')
	add_iter(hd, 'Page width', width, off - 2, 2, '<H')
	(height, off) = rdata(data, off, '<H')
	add_iter(hd, 'Page height', height, off - 2, 2, '<H')
	(status, off) = rdata(data, off, '<H')
	add_iter(hd, 'Status bar height', status, off - 2, 2, '<H')
	off += 0x14
	(tocID, off) = rdata(data, off, '<I')
	add_iter(hd, 'ToC Object Id', '0x%x' % tocID, off - 4, 4, '<I')
	(tocOffset, off) = rdata(data, off, '<I')
	add_iter(hd, 'ToC Object offset', tocOffset, off - 4, 4, '<I')
	(metadataLen, off) = rdata(data, off, '<H')
	add_iter(hd, 'Length of metadata', metadataLen, off - 2, 2, '<I')
	if int(version) >= 800:
		(thumbnailType, off) = rdata(data, off, '<H')
		thumbnailStr = key2txt(int(thumbnailType), lrf_thumbnail_types)
		add_iter(hd, 'Thumbnail type', thumbnailStr, off - 2, 2, '<I')
		(thumbnailLen, off) = rdata(data, off, '<H')
		add_iter(hd, 'Length of thumbnail', thumbnailLen, off - 2, 2, '<I')