Beispiel #1
0
def XForm1D (hd, size, value, off = 19):
	add_iter(hd,"BeginX","%.2f"%struct.unpack("<d",value[off+1:off+1+8]),off+1,8,"<d")
	add_iter(hd,"BeginY","%.2f"%struct.unpack("<d",value[off+10:off+10+8]),off+10,8,"<d")
	add_iter(hd,"EndX","%.2f"%struct.unpack("<d",value[off+19:off+19+8]),off+19,8,"<d")
	add_iter(hd,"EndY","%.2f"%struct.unpack("<d",value[off+28:off+28+8]),off+28,8,"<d")
	if len(value)>off+38: # both 6 and 11
		vsdblock.parse(hd, size, value, off+38)
Beispiel #2
0
def ConnPts (hd, size, value, off = 19):
	add_iter(hd,"X","%.2f"%struct.unpack("<d",value[off+1:off+1+8]),off+1,8,"<d")
	add_iter(hd,"Y","%.2f"%struct.unpack("<d",value[off+10:off+10+8]),off+10,8,"<d")
	add_iter(hd,"var1","%.2f"%struct.unpack("<d",value[off+19:off+19+8]),off+19,8,"<d")
	add_iter(hd,"var2","%.2f"%struct.unpack("<d",value[off+28:off+28+8]),off+28,8,"<d")
	if len(value)>off+0x30: # 11
		vsdblock.parse(hd, size, value, off+0x30)
Beispiel #3
0
def InfLine (hd, size, value, off = 19):
	add_iter(hd,"X","%.2f"%struct.unpack("<d",value[off+1:off+1+8]),off+1,8,"<d")
	add_iter(hd,"Y","%.2f"%struct.unpack("<d",value[off+10:off+10+8]),off+10,8,"<d")
	add_iter(hd,"A","%.2f"%struct.unpack("<d",value[off+19:off+19+8]),off+19,8,"<d")
	add_iter(hd,"B","%.2f"%struct.unpack("<d",value[off+28:off+28+8]),off+28,8,"<d")
	if len(value)>off+38: # both 6 and 11 ???
		vsdblock.parse(hd, size, value, off+38)
Beispiel #4
0
def TextField (hd, size, value, off = 19):
	fmt = ord(value[off+7])
	tdiff = struct.unpack("<d",value[off+8:off+8+8])[0]
	dlen = 8
	dfmt = "<d"
	if fmt == 0x28:
		dt = datetime.datetime(1899,12,30)+datetime.timedelta(tdiff)
		dname = "Date"
	elif fmt == 0xe8:
		dt = struct.unpack("<I",value[off+8:off+8+4])[0]
		dname = "Name ID"
		dlen = 4
		dfmt = "<I"
	else:
		dt = "%.2f"%tdiff
		dname = "Value"
	fmtidtype = ord(value[off+17])
	if fmtidtype == 0xe8:
		fmtid = struct.unpack("<I",value[off+18:off+18+4])[0]
		fmtname = "Format ID"
		fmtlen = 4
		fmtfmt = "<I"
	add_iter(hd,dname,dt,off+8,dlen,dfmt)
	add_iter(hd,fmtname,fmtid,off+18,fmtlen,fmtfmt)
	dtype = struct.unpack("<H",value[off+26:off+26+2])[0]
	add_iter(hd,"Type",dtype,off+26,2,"<H")
	add_iter(hd,"UICat","0x%02x"%ord(value[off+28]),off+28,1,"B")
	add_iter(hd,"UICod","0x%02x"%ord(value[off+29]),off+29,1,"B")
	add_iter(hd,"UIFmt","0x%02x"%ord(value[off+30]),off+30,1,"B")
	if hd.version == 6 and len(value)>off+36:
		vsdblock.parse(hd, size, value, off+36)
	elif len(value)>off+54 and hd.version == 11:
		vsdblock.parse(hd, size, value, off+54)
Beispiel #5
0
def Fill (hd, size, value, off = 19):
	add_iter(hd,"FillFG","%2x"%ord(value[off]),off,1,"B")
	add_iter(hd,"FillFGClr","%02x%02x%02x"%(ord(value[off+1]),ord(value[off+2]),ord(value[off+3])),off+1,3,"clr")
	add_iter(hd,"FillFGXparency","%d %%"%(ord(value[off+4])/2.55),off+4,1,"B")
	add_iter(hd,"FillBG","%2x"%ord(value[off+5]),off+5,1,"B")
	add_iter(hd,"FillBGClr","%02x%02x%02x"%(ord(value[off+6]),ord(value[off+7]),ord(value[off+8])),off+6,3,"clr")
	add_iter(hd,"FillBGXparency","%d %%"%(ord(value[off+9])/2.55),off+9,1,"B")
	add_iter(hd,"FillPattern","%2x"%ord(value[off+10]),off+10,1,"B")
	add_iter(hd,"ShdwFG","%2x"%ord(value[off+11]),off+11,1,"B")
	add_iter(hd,"ShdwFGClr","%02x%02x%02x"%(ord(value[off+12]),ord(value[off+13]),ord(value[off+14])),off+12,3,"clr")
	add_iter(hd,"ShdwFGXparency","%d %%"%(ord(value[off+15])/2.56),off+15,1,"B")
	add_iter(hd,"ShdwBG","%2x"%ord(value[off+16]),off+16,1,"B")
	add_iter(hd,"ShdwBGClr","%02x%02x%02x"%(ord(value[off+17]),ord(value[off+18]),ord(value[off+19])),off+19,3,"clr")
	add_iter(hd,"ShdwBGXparency","%d %%"%(ord(value[off+20])/2.55),off+20,1,"B")
	add_iter(hd,"ShdwPattern","%2x"%ord(value[off+21]),off+21,1,"B")
	add_iter(hd,"ShdwType","%2x"%ord(value[off+22]),off+22,1,"B")
	if hd.version == 11:
		add_iter(hd,"ShdwOffsetX","%.2f"%struct.unpack("<d",value[off+24:off+24+4]),off+24,8,"<d")
		add_iter(hd,"ShdwOffsetY","%.2f"%struct.unpack("<d",value[off+33:off+33+4]),off+33,8,"<d")
		add_iter(hd,"ShdwObliqueAngle","%.2f"%struct.unpack("<d",value[off+42:off+42+4]),off+42+4,8,"<d")
		add_iter(hd,"ShdwScaleFactor","%.2f"%struct.unpack("<d",value[off+50:off+50+4]),off+50,8,"<d")
	if hd.version == 6 and len(value)>off+25:
		vsdblock.parse(hd, size, value, off+25)
	elif len(value)>off+61 and hd.version == 11:
		vsdblock.parse(hd, size, value, off+61)
Beispiel #6
0
def StyleProps (hd, size, value, off = 19):
	add_iter(hd,"Use Line",ord(value[off]),off,1,"<B")
	add_iter(hd,"Use Fill",ord(value[off+1]),off+1,1,"<B")
	add_iter(hd,"Use Text",ord(value[off+2]),off+2,1,"<B")
	add_iter(hd,"Hidden",ord(value[off+3]),off+3,1,"<B")
	if len(value)>off+7:
		vsdblock.parse(hd, size, value, off+7)
Beispiel #7
0
def Geometry (hd, size, value, off = 19):
	flags = ord(value[off])
	for i in (1,2,4,8,32):
		res = 'No'
		if flags&i:
			res = 'Yes'
		add_iter(hd,bits[i],res,off,1,"txt")
	if len(value)>off+3:
		vsdblock.parse(hd, size, value, off+3)
Beispiel #8
0
def SplineStart (hd, size, value, off = 19):
	add_iter(hd,"X","%.2f"%struct.unpack("<d",value[off+1:off+1+8]),off+1,8,"<d")
	add_iter(hd,"Y","%.2f"%struct.unpack("<d",value[off+10:off+10+8]),off+10,8,"<d")
	add_iter(hd,"Knot","%.2f"%struct.unpack("<d",value[off+18:off+18+8]),off+18,8,"<d")
	add_iter(hd,"Knot2","%.2f"%struct.unpack("<d",value[off+26:off+26+8]),off+26,8,"<d")
	add_iter(hd,"Knot3","%.2f"%struct.unpack("<d",value[off+34:off+34+8]),off+34,8,"<d")
	add_iter(hd,"Degree","%d"%struct.unpack("<h",value[off+42:off+42+2]),off+42,2,"<h")
	if len(value)>off+46:
		vsdblock.parse(hd, size, value, off+46)
Beispiel #9
0
def Ellipse (hd, size, value, off = 19):
	add_iter(hd,"Center X","%.2f"%struct.unpack("<d",value[off+1:off+1+8]),off+1,8,"<d")
	add_iter(hd,"Center Y","%.2f"%struct.unpack("<d",value[off+10:off+10+8]),off+10,8,"<d")
	add_iter(hd,"Right X","%.2f"%struct.unpack("<d",value[off+19:off+19+8]),off+19,8,"<d")
	add_iter(hd,"Right Y","%.2f"%struct.unpack("<d",value[off+28:off+28+8]),off+28,8,"<d")
	add_iter(hd,"Top X","%.2f"%struct.unpack("<d",value[off+37:off+37+8]),off+37,8,"<d")
	add_iter(hd,"Top Y","%.2f"%struct.unpack("<d",value[off+46:off+46+8]),off+46,8,"<d")
	if len(value)>off+56: # both 6 and 11
		vsdblock.parse(hd, size, value, off+56)
Beispiel #10
0
def Char (hd, size, value, off = 19):
	add_iter(hd,"Num of Chars","%d"%struct.unpack("<I",value[off:off+4]),off,4,"<I")
	add_iter(hd,"FontID","0x%02x"%struct.unpack("<H",value[off+4:off+4+2]),off+4,2,"<H")
	add_iter(hd,"ColorID","0x%02x"%ord(value[off+6]),off+6,1,"B")
	add_iter(hd,"Color","%02x%02x%02x"%(ord(value[off+7]),ord(value[off+8]),ord(value[off+9])),off+7,3,"clr")
	add_iter(hd,"Transparency","%d%%"%(ord(value[off+10])*100/256),off+10,1,"B")

	flags1 = ord(value[off+11])
	ftxt = ""
	if flags1&1 == 1:
		ftxt += "bold "
	if flags1&2== 2:
		ftxt += "italic "
	if flags1&4 == 4:
		ftxt += "undrline "
	if flags1&8 == 8:
		ftxt += "smcaps "
	add_iter(hd,"Font Mods1",ftxt,off+11,1,"txt")

	flags2 = ord(value[off+12])
	ftxt = ""
	if flags2&1 == 1:
		ftxt += "allcaps "
	if flags2&2== 2:
		ftxt += "initcaps "
	add_iter(hd,"Font Mods2",ftxt,off+12,1,"txt")
	
	flags3 = ord(value[off+13])
	ftxt = ""
	if flags3&1 == 1:
		ftxt += "superscript "
	if flags3&2== 2:
		ftxt += "subscript "
	add_iter(hd,"Font Mods3",ftxt,off+12,1,"txt")
	add_iter(hd,"Scale","%d%%"%(struct.unpack("<h",value[off+13:off+13+2])[0]/100.),off+13,2,"<h")
	add_iter(hd,"FontSize","%.2f pt"%(72*struct.unpack("<d",value[off+18:off+18+8])[0]),off+18,8,"<d")

	flags4 = ord(value[off+26])
	ftxt = ""
	if flags4&1 == 1:
		ftxt += "dblunder "
	if flags4&2== 2:
		ftxt += "overline "
	if flags4&20 == 20:
		ftxt += "dblstrike "
	add_iter(hd,"Font Mods4",ftxt,off+26,1,"txt")
	add_iter(hd,"Spacing","%d pt"%(struct.unpack("<h",value[off+27:off+27+2])[0]/200.),off+27,2,"<h")
	if hd.version == 11:
		add_iter(hd,"AsianFont","%d"%ord(value[off+37]),off+37,1,"B")
		add_iter(hd,"ComplexScriptFont","%d"%ord(value[off+39]),off+39,1,"B")
		add_iter(hd,"LocalizeFont","%d"%ord(value[off+41]),off+41,1,"B")
		add_iter(hd,"ComplexScriptSize","%d%%"%(struct.unpack("<d",value[off+43:off+43+8])[0]*100),off+43,8,"<d")
		add_iter(hd,"LangID","%d"%struct.unpack("<I",value[off+69:off+69+4]),off+69,4,"<I")
		if len(value)>off+88 and hd.version == 11:
			vsdblock.parse(hd, size, value, off+88)
	elif hd.version == 6 and len(value)>off+35:
		vsdblock.parse(hd, size, value, off+35)
Beispiel #11
0
def EllArcTo (hd, size, value, off = 19):
	add_iter(hd,"X","%.2f"%struct.unpack("<d",value[off+1:off+1+8]),off+1,8,"<d")
	add_iter(hd,"Y","%.2f"%struct.unpack("<d",value[off+10:off+10+8]),off+10,8,"<d")
	add_iter(hd,"A","%.2f"%struct.unpack("<d",value[off+19:off+19+8]),off+19,8,"<d")
	add_iter(hd,"B","%.2f"%struct.unpack("<d",value[off+28:off+28+8]),off+28,8,"<d")
	add_iter(hd,"C","%.2f"%struct.unpack("<d",value[off+37:off+37+8]),off+37,8,"<d")
	add_iter(hd,"D","%.2f"%struct.unpack("<d",value[off+46:off+46+8]),off+46,8,"<d")
	if len(value)>off+56: # both 6 and 11
		vsdblock.parse(hd, size, value, off+56)
Beispiel #12
0
def TxtXForm (hd, size, value, off = 19):
	add_iter(hd,"TxtPinX","%.2f"%struct.unpack("<d",value[off+1:off+1+8]),off+1,8,"<d")
	add_iter(hd,"TxtPinY","%.2f"%struct.unpack("<d",value[off+10:off+10+8]),off+10,8,"<d")
	add_iter(hd,"TxtWidth","%.2f"%struct.unpack("<d",value[off+19:off+19+8]),off+19,8,"<d")
	add_iter(hd,"TxtHeight","%.2f"%struct.unpack("<d",value[off+28:off+28+8]),off+28,8,"<d")
	add_iter(hd,"TxtLocPinX","%.2f"%struct.unpack("<d",value[off+37:off+37+8]),off+37,8,"<d")
	add_iter(hd,"TxtLocPinY","%.2f"%struct.unpack("<d",value[off+46:off+46+8]),off+46,8,"<d")
	add_iter(hd,"TxtAngle","%.2f"%struct.unpack("<d",value[off+55:off+55+8]),off+55,8,"<d")
	if len(value)>off+69: # both 6 and 11
		vsdblock.parse(hd, size, value, off+69)
Beispiel #13
0
def Control (hd, size, value, off = 19):
	add_iter(hd,"X","%.3f"%struct.unpack("<d",value[off+1:off+1+8]),off+1,8,"<d")
	add_iter(hd,"Y","%.3f"%struct.unpack("<d",value[off+10:off+10+8]),off+10,8,"<d")
	add_iter(hd,"XDyn","%.3f"%struct.unpack("<d",value[off+19:off+19+8]),off+19,8,"<d")
	add_iter(hd,"YDyn","%.3f"%struct.unpack("<d",value[off+28:off+28+8]),off+28,8,"<d")
	add_iter(hd,"XCon",ord(value[off+36]),off+36,1,"<B")
	add_iter(hd,"YCon",ord(value[off+37]),off+37,1,"<B")
	add_iter(hd,"CanGlue",ord(value[off+38]),off+38,1,"<B")
	if len(value)>off+47: # 11
		vsdblock.parse(hd, size, value, off+47)
Beispiel #14
0
def SplineKnot(hd, size, value, off=19):
    add_iter(hd, "X", "%.2f" % struct.unpack("<d", value[off + 1:off + 1 + 8]),
             off + 1, 8, "<d")
    add_iter(hd, "Y",
             "%.2f" % struct.unpack("<d", value[off + 10:off + 10 + 8]),
             off + 10, 8, "<d")
    add_iter(hd, "Knot",
             "%.2f" % struct.unpack("<d", value[off + 18:off + 18 + 8]),
             off + 18, 8, "<d")
    if len(value) > off + 28:
        vsdblock.parse(hd, size, value, off + 28)
Beispiel #15
0
def ArcTo(hd, size, value, off=19):
    add_iter(hd, "X", "%.2f" % struct.unpack("<d", value[off + 1:off + 1 + 8]),
             off + 1, 8, "<d")
    add_iter(hd, "Y",
             "%.2f" % struct.unpack("<d", value[off + 10:off + 10 + 8]),
             off + 10, 8, "<d")
    add_iter(hd, "A",
             "%.2f" % struct.unpack("<d", value[off + 19:off + 19 + 8]),
             off + 19, 8, "<d")
    if len(value) > off + 29:  # both 6 and 11
        vsdblock.parse(hd, size, value, off + 29)
Beispiel #16
0
def Polyline (hd, size, value, off = 19):
	add_iter(hd,"X","%.2f"%struct.unpack("<d",value[off+1:off+1+8]),off+1,8,"<d")
	add_iter(hd,"Y","%.2f"%struct.unpack("<d",value[off+10:off+10+8]),off+10,8,"<d")
	sdflag = value[off+19:off+19+4]
	sdtext = 'No'
	if sdflag == '\x8b\x02\x00\x00':
		sdtext = 'Yes'
	add_iter(hd,"Use Shape Data",sdtext,off+19,4,"<I")
	add_iter(hd,"ShapeData Id","%02x"%struct.unpack("<I",value[off+23:off+23+4]),off+23,4,"<I")
	if len(value)>off+29:
		vsdblock.parse(hd, size, value, off+29)
Beispiel #17
0
def PageProps (hd, size, value, off = 19):
	add_iter(hd,"PageWidth","%.2f"%struct.unpack("<d",value[off+1:off+1+8]),off+1,8,"<d")
	add_iter(hd,"PageHeight","%.2f"%struct.unpack("<d",value[off+10:off+10+8]),off+10,8,"<d")
	add_iter(hd,"ShdwOffsetX","%.2f"%struct.unpack("<d",value[off+19:off+19+8]),off+19,8,"<d")
	add_iter(hd,"ShdwOffsetY","%.2f"%struct.unpack("<d",value[off+28:off+28+8]),off+28,8,"<d")
	add_iter(hd,"PageScale","%.2f"%struct.unpack("<d",value[off+37:off+37+8]),off+37,8,"<d")
	add_iter(hd,"DrawingScale","%.2f"%struct.unpack("<d",value[off+46:off+46+8]),off+46,8,"<d")
	add_iter(hd,"DrawingSizeType","%2x"%ord(value[off+54]),off+54,1,"B")
	add_iter(hd,"DrawingScaleType","%2x"%ord(value[off+55]),off+55,1,"B")
	add_iter(hd,"ShdwObliqueAngle","%.2f"%struct.unpack("<d",value[off+78:off+78+8]),off+78,8,"<d")
	add_iter(hd,"ShdwScaleFactor","%.2f"%struct.unpack("<d",value[off+86:off+86+8]),off+86,8,"<d")
	if len(value)>off+136:
		vsdblock.parse(hd, size, value, off+136)
Beispiel #18
0
def LayerIX (hd, size, value, off = 19):
	add_iter(hd,"ClrID","0x%02x"%ord(value[off+8]),off+8,1,"<B")
	if ord(value[off+8]) != 255:
		add_iter(hd,"Colour",d2hex(value[off+9:off+9+3]),off+9,3,"clr")
	add_iter(hd,"Transparency","%d%%"%(ord(value[off+12])*100/255),off+12,1,"<B")	
	add_iter(hd,"Visible","%d"%ord(value[off+14]),off+14,1,"<B")
	add_iter(hd,"Print","%d"%ord(value[off+15]),off+15,1,"<B")
	add_iter(hd,"Active","%d"%ord(value[off+16]),off+16,1,"<B")
	add_iter(hd,"Lock","%d"%ord(value[off+17]),off+17,1,"<B")
	add_iter(hd,"Snap","%d"%ord(value[off+18]),off+18,1,"<B")
	add_iter(hd,"Glue","%d"%ord(value[off+19]),off+19,1,"<B")
	if len(value)>off+33: # both 6 and 11
		vsdblock.parse(hd, size, value, off+33)
Beispiel #19
0
def FrgnType (hd, size, value, off = 19):
	add_iter(hd,"ImgOffsetX","%.2f"%struct.unpack("<d",value[off+1:off+1+8]),off+1,8,"<d")
	add_iter(hd,"ImgOffsetY","%.2f"%struct.unpack("<d",value[off+10:off+10+8]),off+10,8,"<d")
	add_iter(hd,"ImgWidth","%.2f"%struct.unpack("<d",value[off+19:off+19+8]),off+19,8,"<d")
	add_iter(hd,"ImgHeight","%.2f"%struct.unpack("<d",value[off+28:off+28+8]),off+28,8,"<d")
	ftype = struct.unpack("<h",value[off+36:off+36+2])[0]
	add_iter(hd,"Type ??","%d"%ftype,off+36,2,"<h")
	add_iter(hd,"MapMode","%d"%struct.unpack("<h",value[off+38:off+38+2]),off+38,2,"<h")
	if ftype == 4:
		add_iter(hd,"ExtentX","%d"%struct.unpack("<h",value[off+40:off+40+2]),off+40,2,"<h")
		add_iter(hd,"ExtentY","%d"%struct.unpack("<h",value[off+42:off+42+2]),off+42,2,"<h")
	if len(value)>off+62:
		vsdblock.parse(hd, size, value, off+62)
Beispiel #20
0
def XForm (hd, size, value, off = 19):
	add_iter(hd,"PinX","%.2f"%struct.unpack("<d",value[off+1:off+1 +8]),off+1,8,"<d")
	add_iter(hd,"PinY","%.2f"%struct.unpack("<d",value[off+10:off+10+8]),off+10,8,"<d")
	add_iter(hd,"Width","%.2f"%struct.unpack("<d",value[off+19:off+19+8]),off+19,8,"<d")
	add_iter(hd,"Height","%.2f"%struct.unpack("<d",value[off+28:off+28+8]),off+28,8,"<d")
	add_iter(hd,"LocPinX","%.2f"%struct.unpack("<d",value[off+37:off+37+8]),off+37,8,"<d")
	add_iter(hd,"LocPinY","%.2f"%struct.unpack("<d",value[off+46:off+46+8]),off+46,8,"<d")
	add_iter(hd,"Angle","%.2f"%struct.unpack("<d",value[off+55:off+55+8]),off+55,8,"<d")
	add_iter(hd,"FlipX","%2x"%ord(value[off+63]),off+63,1,"<I")
	add_iter(hd,"FlipY","%2x"%ord(value[off+64]),off+64,1,"<I")
	add_iter(hd,"ResizeMode","%2x"%ord(value[off+65]),off+65,1,"<I")
	if len(value)>off+69: # both 6 and 11
		vsdblock.parse(hd, size, value, off+69)
Beispiel #21
0
def TextBlock (hd, size, value, off = 19):
	add_iter(hd,"LeftMargin","%.2f"%round(struct.unpack("<d",value[off+1:off+1+8])[0]*72),off+1,8,"<d")
	add_iter(hd,"RightMargin","%.2f"%round(struct.unpack("<d",value[off+10:off+10+8])[0]*72),off+10,8,"<d")
	add_iter(hd,"TopMargin","%.2f"%round(struct.unpack("<d",value[off+19:off+19+8])[0]*72),off+19,8,"<d")
	add_iter(hd,"BottomMargin","%.2f"%round(struct.unpack("<d",value[off+28:off+28+8])[0]*72),off+28,8,"<d")
	add_iter(hd,"VAlign","%d"%ord(value[off+36]),off+36,1,"B")
	add_iter(hd,"TxtBG CLR Id","%d"%ord(value[off+37]),off+37,1,"B")
	add_iter(hd,"TxtBG Trans","%d"%round(ord(value[off+41])*100/256.),off+41,1,"B")
	add_iter(hd,"DefTabStop","%.2f"%struct.unpack("<d",value[off+43:off+43+8]),off+43,8,"<d")
	add_iter(hd,"TxtDirection","%d"%ord(value[off+63]),off+63,1,"B")
	if hd.version == 6 and len(value)>off+71:
		vsdblock.parse(hd, size, value, off+71)
	elif len(value)>off+92 and hd.version == 11:
		vsdblock.parse(hd, size, value, off+92)
Beispiel #22
0
def ConnPts(hd, size, value, off=19):
    add_iter(hd, "X", "%.2f" % struct.unpack("<d", value[off + 1:off + 1 + 8]),
             off + 1, 8, "<d")
    add_iter(hd, "Y",
             "%.2f" % struct.unpack("<d", value[off + 10:off + 10 + 8]),
             off + 10, 8, "<d")
    add_iter(hd, "var1",
             "%.2f" % struct.unpack("<d", value[off + 19:off + 19 + 8]),
             off + 19, 8, "<d")
    add_iter(hd, "var2",
             "%.2f" % struct.unpack("<d", value[off + 28:off + 28 + 8]),
             off + 28, 8, "<d")
    if len(value) > off + 0x30:  # 11
        vsdblock.parse(hd, size, value, off + 0x30)
Beispiel #23
0
def Para(hd, size, value, off=19):
    add_iter(hd, "Num of Chars",
             "%d" % struct.unpack("<I", value[off:off + 4]), off, 4, "<I")
    add_iter(hd, "IndFirst",
             "%.2f" % struct.unpack("<d", value[off + 5:off + 5 + 8]), off + 5,
             8, "<d")
    add_iter(hd, "IndLeft",
             "%.2f" % struct.unpack("<d", value[off + 14:off + 14 + 8]),
             off + 14, 8, "<d")
    add_iter(hd, "IndRight",
             "%.2f" % struct.unpack("<d", value[off + 23:off + 23 + 8]),
             off + 23, 8, "<d")
    add_iter(
        hd, "SpLine",
        "%d%%" % (struct.unpack("<d", value[off + 32:off + 32 + 8])[0] * 100),
        off + 32, 8, "<d")
    add_iter(
        hd, "SpBefore", "%d pt" %
        round(struct.unpack("<d", value[off + 41:off + 41 + 8])[0] * 72),
        off + 41, 8, "<d")
    add_iter(
        hd, "SpAfter", "%d pt" %
        round(struct.unpack("<d", value[off + 50:off + 50 + 8])[0] * 72),
        off + 50, 8, "<d")
    add_iter(hd, "HAlign", "%d" % ord(value[off + 58]), off + 58, 1, "B")
    add_iter(hd, "Bullet", "%d" % ord(value[off + 59]), off + 59, 1, "B")
    if hd.version > 6:
        add_iter(hd, "BulletFont",
                 "%d" % struct.unpack("<H", value[off + 64:off + 64 + 2]),
                 off + 64, 2, "<H")
        add_iter(hd, "LocBulletFont", "%d" % ord(value[off + 66]), off + 66, 1,
                 "B")
        add_iter(
            hd, "BulletSize", "%d%%" %
            (struct.unpack("<d", value[off + 68:off + 68 + 8])[0] * 100),
            off + 68, 8, "<d")
        add_iter(hd, "TxtPosAfterBullet",
                 "%.2f" % struct.unpack("<d", value[off + 77:off + 77 + 8]),
                 off + 77, 8, "<d")
        add_iter(hd, "Flags",
                 "%d" % struct.unpack("<I", value[off + 85:off + 85 + 4]),
                 off + 85, 4, "<I")
    else:
        add_iter(hd, "Flags",
                 "%d" % struct.unpack("<I", value[off + 64:off + 64 + 4]),
                 off + 64, 4, "<I")
    if hd.version == 6 and len(value) > off + 73:
        vsdblock.parse(hd, size, value, off + 73)
    elif len(value) > off + 123 and hd.version == 11:
        vsdblock.parse(hd, size, value, off + 123)
Beispiel #24
0
def InfLine(hd, size, value, off=19):
    add_iter(hd, "X", "%.2f" % struct.unpack("<d", value[off + 1:off + 1 + 8]),
             off + 1, 8, "<d")
    add_iter(hd, "Y",
             "%.2f" % struct.unpack("<d", value[off + 10:off + 10 + 8]),
             off + 10, 8, "<d")
    add_iter(hd, "A",
             "%.2f" % struct.unpack("<d", value[off + 19:off + 19 + 8]),
             off + 19, 8, "<d")
    add_iter(hd, "B",
             "%.2f" % struct.unpack("<d", value[off + 28:off + 28 + 8]),
             off + 28, 8, "<d")
    if len(value) > off + 38:  # both 6 and 11 ???
        vsdblock.parse(hd, size, value, off + 38)
Beispiel #25
0
def Fill(hd, size, value, off=19):
    add_iter(hd, "FillFG", "%2x" % ord(value[off]), off, 1, "B")
    add_iter(
        hd, "FillFGClr", "%02x%02x%02x" %
        (ord(value[off + 1]), ord(value[off + 2]), ord(value[off + 3])),
        off + 1, 3, "clr")
    add_iter(hd, "FillFGXparency", "%d %%" % (ord(value[off + 4]) / 2.55),
             off + 4, 1, "B")
    add_iter(hd, "FillBG", "%2x" % ord(value[off + 5]), off + 5, 1, "B")
    add_iter(
        hd, "FillBGClr", "%02x%02x%02x" %
        (ord(value[off + 6]), ord(value[off + 7]), ord(value[off + 8])),
        off + 6, 3, "clr")
    add_iter(hd, "FillBGXparency", "%d %%" % (ord(value[off + 9]) / 2.55),
             off + 9, 1, "B")
    add_iter(hd, "FillPattern", "%2x" % ord(value[off + 10]), off + 10, 1, "B")
    add_iter(hd, "ShdwFG", "%2x" % ord(value[off + 11]), off + 11, 1, "B")
    add_iter(
        hd, "ShdwFGClr", "%02x%02x%02x" %
        (ord(value[off + 12]), ord(value[off + 13]), ord(value[off + 14])),
        off + 12, 3, "clr")
    add_iter(hd, "ShdwFGXparency", "%d %%" % (ord(value[off + 15]) / 2.56),
             off + 15, 1, "B")
    add_iter(hd, "ShdwBG", "%2x" % ord(value[off + 16]), off + 16, 1, "B")
    add_iter(
        hd, "ShdwBGClr", "%02x%02x%02x" %
        (ord(value[off + 17]), ord(value[off + 18]), ord(value[off + 19])),
        off + 19, 3, "clr")
    add_iter(hd, "ShdwBGXparency", "%d %%" % (ord(value[off + 20]) / 2.55),
             off + 20, 1, "B")
    add_iter(hd, "ShdwPattern", "%2x" % ord(value[off + 21]), off + 21, 1, "B")
    add_iter(hd, "ShdwType", "%2x" % ord(value[off + 22]), off + 22, 1, "B")
    if hd.version == 11:
        add_iter(hd, "ShdwOffsetX",
                 "%.2f" % struct.unpack("<d", value[off + 24:off + 24 + 4]),
                 off + 24, 8, "<d")
        add_iter(hd, "ShdwOffsetY",
                 "%.2f" % struct.unpack("<d", value[off + 33:off + 33 + 4]),
                 off + 33, 8, "<d")
        add_iter(hd, "ShdwObliqueAngle",
                 "%.2f" % struct.unpack("<d", value[off + 42:off + 42 + 4]),
                 off + 42 + 4, 8, "<d")
        add_iter(hd, "ShdwScaleFactor",
                 "%.2f" % struct.unpack("<d", value[off + 50:off + 50 + 4]),
                 off + 50, 8, "<d")
    if hd.version == 6 and len(value) > off + 25:
        vsdblock.parse(hd, size, value, off + 25)
    elif len(value) > off + 61 and hd.version == 11:
        vsdblock.parse(hd, size, value, off + 61)
Beispiel #26
0
def LayerIX(hd, size, value, off=19):
    add_iter(hd, "ClrID", "0x%02x" % ord(value[off + 8]), off + 8, 1, "<B")
    if ord(value[off + 8]) != 255:
        add_iter(hd, "Colour", d2hex(value[off + 9:off + 9 + 3]), off + 9, 3,
                 "clr")
    add_iter(hd, "Transparency", "%d%%" % (ord(value[off + 12]) * 100 / 255),
             off + 12, 1, "<B")
    add_iter(hd, "Visible", "%d" % ord(value[off + 14]), off + 14, 1, "<B")
    add_iter(hd, "Print", "%d" % ord(value[off + 15]), off + 15, 1, "<B")
    add_iter(hd, "Active", "%d" % ord(value[off + 16]), off + 16, 1, "<B")
    add_iter(hd, "Lock", "%d" % ord(value[off + 17]), off + 17, 1, "<B")
    add_iter(hd, "Snap", "%d" % ord(value[off + 18]), off + 18, 1, "<B")
    add_iter(hd, "Glue", "%d" % ord(value[off + 19]), off + 19, 1, "<B")
    if len(value) > off + 33:  # both 6 and 11
        vsdblock.parse(hd, size, value, off + 33)
Beispiel #27
0
def XForm1D(hd, size, value, off=19):
    add_iter(hd, "BeginX",
             "%.2f" % struct.unpack("<d", value[off + 1:off + 1 + 8]), off + 1,
             8, "<d")
    add_iter(hd, "BeginY",
             "%.2f" % struct.unpack("<d", value[off + 10:off + 10 + 8]),
             off + 10, 8, "<d")
    add_iter(hd, "EndX",
             "%.2f" % struct.unpack("<d", value[off + 19:off + 19 + 8]),
             off + 19, 8, "<d")
    add_iter(hd, "EndY",
             "%.2f" % struct.unpack("<d", value[off + 28:off + 28 + 8]),
             off + 28, 8, "<d")
    if len(value) > off + 38:  # both 6 and 11
        vsdblock.parse(hd, size, value, off + 38)
Beispiel #28
0
def NURBS (hd, size, value, off = 19):
	add_iter(hd,"X","%.2f"%struct.unpack("<d",value[off+1:off+1+8]),off+1,8,"<d")
	add_iter(hd,"Y","%.2f"%struct.unpack("<d",value[off+10:off+10+8]),off+10,8,"<d")
	add_iter(hd,"Knot","%.2f"%struct.unpack("<d",value[off+18:off+18+8]),off+18,8,"<d")
	add_iter(hd,"Weight","%.2f"%struct.unpack("<d",value[off+26:off+26+8]),off+26,8,"<d")
	add_iter(hd,"KnotPrev","%.2f"%struct.unpack("<d",value[off+34:off+34+8]),off+34,8,"<d")
	add_iter(hd,"WeightPrev","%.2f"%struct.unpack("<d",value[off+42:off+42+8]),off+42,8,"<d")
	sdflag = value[off+51:off+51+4]
	sdtext = 'No'
	if sdflag == '\x8a\x02\x00\x00':
		sdtext = 'Yes'
	add_iter(hd,"Use Shape Data",sdtext,off+51,4,"<d")
	add_iter(hd,"ShapeData Id","%02x"%struct.unpack("<I",value[off+55:off+55+4]),off+55,4,"<I")
	if len(value)>off+61:
		vsdblock.parse(hd, size, value, off+61)
Beispiel #29
0
def Polyline(hd, size, value, off=19):
    add_iter(hd, "X", "%.2f" % struct.unpack("<d", value[off + 1:off + 1 + 8]),
             off + 1, 8, "<d")
    add_iter(hd, "Y",
             "%.2f" % struct.unpack("<d", value[off + 10:off + 10 + 8]),
             off + 10, 8, "<d")
    sdflag = value[off + 19:off + 19 + 4]
    sdtext = 'No'
    if sdflag == '\x8b\x02\x00\x00':
        sdtext = 'Yes'
    add_iter(hd, "Use Shape Data", sdtext, off + 19, 4, "<I")
    add_iter(hd, "ShapeData Id",
             "%02x" % struct.unpack("<I", value[off + 23:off + 23 + 4]),
             off + 23, 4, "<I")
    if len(value) > off + 29:
        vsdblock.parse(hd, size, value, off + 29)
Beispiel #30
0
def Control(hd, size, value, off=19):
    add_iter(hd, "X", "%.3f" % struct.unpack("<d", value[off + 1:off + 1 + 8]),
             off + 1, 8, "<d")
    add_iter(hd, "Y",
             "%.3f" % struct.unpack("<d", value[off + 10:off + 10 + 8]),
             off + 10, 8, "<d")
    add_iter(hd, "XDyn",
             "%.3f" % struct.unpack("<d", value[off + 19:off + 19 + 8]),
             off + 19, 8, "<d")
    add_iter(hd, "YDyn",
             "%.3f" % struct.unpack("<d", value[off + 28:off + 28 + 8]),
             off + 28, 8, "<d")
    add_iter(hd, "XCon", ord(value[off + 36]), off + 36, 1, "<B")
    add_iter(hd, "YCon", ord(value[off + 37]), off + 37, 1, "<B")
    add_iter(hd, "CanGlue", ord(value[off + 38]), off + 38, 1, "<B")
    if len(value) > off + 47:  # 11
        vsdblock.parse(hd, size, value, off + 47)
Beispiel #31
0
def FrgnType (hd, size, value, off = 19):
	add_iter(hd,"ImgOffsetX","%.2f"%struct.unpack("<d",value[off+1:off+1+8]),off+1,8,"<d")
	add_iter(hd,"ImgOffsetY","%.2f"%struct.unpack("<d",value[off+10:off+10+8]),off+10,8,"<d")
	add_iter(hd,"ImgWidth","%.2f"%struct.unpack("<d",value[off+19:off+19+8]),off+19,8,"<d")
	add_iter(hd,"ImgHeight","%.2f"%struct.unpack("<d",value[off+28:off+28+8]),off+28,8,"<d")
	ftype_map = {0: 'Metafile', 1: 'Bitmap', 2: 'OLE object', 4: 'Metafile'}
	ftype = struct.unpack("<h",value[off+36:off+36+2])[0]
	add_iter(hd,"Type", key2txt(ftype, ftype_map),off+36,2,"<h")
	add_iter(hd,"MapMode","%d"%struct.unpack("<h",value[off+38:off+38+2]),off+38,2,"<h")
	if ftype == 1:
		fmt_map = {0: 'BMP', 1: 'JPEG', 2: 'GIF', 3: 'TIFF', 4: 'PNG'}
		fmt = struct.unpack("<I",value[off+49:off+49+4])[0]
		add_iter(hd,"Bitmap format", key2txt(fmt, fmt_map),off+49,4,"<I")
	elif ftype == 4:
		add_iter(hd,"ExtentX","%d"%struct.unpack("<h",value[off+40:off+40+2]),off+40,2,"<h")
		add_iter(hd,"ExtentY","%d"%struct.unpack("<h",value[off+42:off+42+2]),off+42,2,"<h")
	if len(value)>off+62:
		vsdblock.parse(hd, size, value, off+62)
Beispiel #32
0
def Line (hd, size, value, off = 19):
	add_iter(hd,"Weight","%.2f"%struct.unpack("<d",value[off+1:off+1+8]),off+1,8,"<d")
	add_iter(hd,"LineClrID","%2x"%ord(value[off+9]),off+9,1,"B")
	add_iter(hd,"LineClr","%02x%02x%02x"%(ord(value[off+10]),ord(value[off+11]),ord(value[off+12])),off+10,3,"clr")
	add_iter(hd,"LineXparency","%d %%"%(ord(value[off+13])/2.55),off+13,1,"B")
	add_iter(hd,"LinePatternID","%2x"%ord(value[off+14]),off+14,1,"B")
	add_iter(hd,"Rounding","%.2f"%struct.unpack("<d",value[off+16:off+16+8]),off+16,8,"<d")
	add_iter(hd,"EndArrSize","%2x"%ord(value[off+24]),off+24,1,"B")
	add_iter(hd,"BeginArrow","%2x"%ord(value[off+25]),off+25,1,"B")
	add_iter(hd,"EndArrow","%2x"%ord(value[off+26]),off+26,1,"B")
	lc = ord(value[off+27])
	lc_txt = "%2x "%lc
	if linecaps.has_key(lc):
		lc_txt += linecaps[lc]
	add_iter(hd,"LineCap",lc_txt,off+27,1,"txt")
	add_iter(hd,"BeginArrSize","%2x"%ord(value[off+28]),off+28,1,"B")
	if len(value)>off+35: # both 6 and 11
		vsdblock.parse(hd, size, value, off+35)
Beispiel #33
0
def Para (hd, size, value, off = 19):
	add_iter(hd,"Num of Chars","%d"%struct.unpack("<I",value[off:off+4]),off,4,"<I")
	add_iter(hd,"IndFirst","%.2f"%struct.unpack("<d",value[off+5:off+5+8]),off+5,8,"<d")
	add_iter(hd,"IndLeft","%.2f"%struct.unpack("<d",value[off+14:off+14+8]),off+14,8,"<d")
	add_iter(hd,"IndRight","%.2f"%struct.unpack("<d",value[off+23:off+23+8]),off+23,8,"<d")
	add_iter(hd,"SpLine","%d%%"%(struct.unpack("<d",value[off+32:off+32+8])[0]*100),off+32,8,"<d")
	add_iter(hd,"SpBefore","%d pt"%round(struct.unpack("<d",value[off+41:off+41+8])[0]*72),off+41,8,"<d")
	add_iter(hd,"SpAfter","%d pt"%round(struct.unpack("<d",value[off+50:off+50+8])[0]*72),off+50,8,"<d")
	add_iter(hd,"HAlign","%d"%ord(value[off+58]),off+58,1,"B")
	add_iter(hd,"Bullet","%d"%ord(value[off+59]),off+59,1,"B")
	add_iter(hd,"BulletFont","%d"%struct.unpack("<H",value[off+64:off+64+2]),off+64,2,"<H")
	add_iter(hd,"LocBulletFont","%d"%ord(value[off+66]),off+66,1,"B")
	add_iter(hd,"BulletSize","%d%%"%(struct.unpack("<d",value[off+68:off+68+8])[0]*100),off+68,8,"<d")
	add_iter(hd,"TxtPosAfterBullet","%.2f"%struct.unpack("<d",value[off+77:off+77+8]),off+77,8,"<d")
	add_iter(hd,"Flags","%d"%struct.unpack("<I",value[off+85:off+85+4]),off+85,4,"<I")
	if hd.version == 6 and len(value)>off+73:
		vsdblock.parse(hd, size, value, off+73)
	elif len(value)>off+123 and hd.version == 11:
		vsdblock.parse(hd, size, value, off+123)
Beispiel #34
0
def EllArcTo(hd, size, value, off=19):
    add_iter(hd, "X", "%.2f" % struct.unpack("<d", value[off + 1:off + 1 + 8]),
             off + 1, 8, "<d")
    add_iter(hd, "Y",
             "%.2f" % struct.unpack("<d", value[off + 10:off + 10 + 8]),
             off + 10, 8, "<d")
    add_iter(hd, "A",
             "%.2f" % struct.unpack("<d", value[off + 19:off + 19 + 8]),
             off + 19, 8, "<d")
    add_iter(hd, "B",
             "%.2f" % struct.unpack("<d", value[off + 28:off + 28 + 8]),
             off + 28, 8, "<d")
    add_iter(hd, "C",
             "%.2f" % struct.unpack("<d", value[off + 37:off + 37 + 8]),
             off + 37, 8, "<d")
    add_iter(hd, "D",
             "%.2f" % struct.unpack("<d", value[off + 46:off + 46 + 8]),
             off + 46, 8, "<d")
    if len(value) > off + 56:  # both 6 and 11
        vsdblock.parse(hd, size, value, off + 56)
Beispiel #35
0
def SplineStart(hd, size, value, off=19):
    add_iter(hd, "X", "%.2f" % struct.unpack("<d", value[off + 1:off + 1 + 8]),
             off + 1, 8, "<d")
    add_iter(hd, "Y",
             "%.2f" % struct.unpack("<d", value[off + 10:off + 10 + 8]),
             off + 10, 8, "<d")
    add_iter(hd, "Knot",
             "%.2f" % struct.unpack("<d", value[off + 18:off + 18 + 8]),
             off + 18, 8, "<d")
    add_iter(hd, "Knot2",
             "%.2f" % struct.unpack("<d", value[off + 26:off + 26 + 8]),
             off + 26, 8, "<d")
    add_iter(hd, "Knot3",
             "%.2f" % struct.unpack("<d", value[off + 34:off + 34 + 8]),
             off + 34, 8, "<d")
    add_iter(hd, "Degree",
             "%d" % struct.unpack("<h", value[off + 42:off + 42 + 2]),
             off + 42, 2, "<h")
    if len(value) > off + 46:
        vsdblock.parse(hd, size, value, off + 46)
Beispiel #36
0
def Ellipse(hd, size, value, off=19):
    add_iter(hd, "Center X",
             "%.2f" % struct.unpack("<d", value[off + 1:off + 1 + 8]), off + 1,
             8, "<d")
    add_iter(hd, "Center Y",
             "%.2f" % struct.unpack("<d", value[off + 10:off + 10 + 8]),
             off + 10, 8, "<d")
    add_iter(hd, "Right X",
             "%.2f" % struct.unpack("<d", value[off + 19:off + 19 + 8]),
             off + 19, 8, "<d")
    add_iter(hd, "Right Y",
             "%.2f" % struct.unpack("<d", value[off + 28:off + 28 + 8]),
             off + 28, 8, "<d")
    add_iter(hd, "Top X",
             "%.2f" % struct.unpack("<d", value[off + 37:off + 37 + 8]),
             off + 37, 8, "<d")
    add_iter(hd, "Top Y",
             "%.2f" % struct.unpack("<d", value[off + 46:off + 46 + 8]),
             off + 46, 8, "<d")
    if len(value) > off + 56:  # both 6 and 11
        vsdblock.parse(hd, size, value, off + 56)
Beispiel #37
0
def TxtXForm(hd, size, value, off=19):
    add_iter(hd, "TxtPinX",
             "%.2f" % struct.unpack("<d", value[off + 1:off + 1 + 8]), off + 1,
             8, "<d")
    add_iter(hd, "TxtPinY",
             "%.2f" % struct.unpack("<d", value[off + 10:off + 10 + 8]),
             off + 10, 8, "<d")
    add_iter(hd, "TxtWidth",
             "%.2f" % struct.unpack("<d", value[off + 19:off + 19 + 8]),
             off + 19, 8, "<d")
    add_iter(hd, "TxtHeight",
             "%.2f" % struct.unpack("<d", value[off + 28:off + 28 + 8]),
             off + 28, 8, "<d")
    add_iter(hd, "TxtLocPinX",
             "%.2f" % struct.unpack("<d", value[off + 37:off + 37 + 8]),
             off + 37, 8, "<d")
    add_iter(hd, "TxtLocPinY",
             "%.2f" % struct.unpack("<d", value[off + 46:off + 46 + 8]),
             off + 46, 8, "<d")
    add_iter(hd, "TxtAngle",
             "%.2f" % struct.unpack("<d", value[off + 55:off + 55 + 8]),
             off + 55, 8, "<d")
    if len(value) > off + 69:  # both 6 and 11
        vsdblock.parse(hd, size, value, off + 69)
Beispiel #38
0
def Misc (hd, size, value, off = 19):
	if len(value)>off+45: # 11, probably v6 too
		vsdblock.parse(hd, size, value, off+45)
Beispiel #39
0
def SplineKnot (hd, size, value, off = 19):
	add_iter(hd,"X","%.2f"%struct.unpack("<d",value[off+1:off+1+8]),off+1,8,"<d")
	add_iter(hd,"Y","%.2f"%struct.unpack("<d",value[off+10:off+10+8]),off+10,8,"<d")
	add_iter(hd,"Knot","%.2f"%struct.unpack("<d",value[off+18:off+18+8]),off+18,8,"<d")
	if len(value)>off+28:
		vsdblock.parse(hd, size, value, off+28)
Beispiel #40
0
def Misc(hd, size, value, off=19):
    if len(value) > off + 45:  # 11, probably v6 too
        vsdblock.parse(hd, size, value, off + 45)
Beispiel #41
0
def Char(hd, size, value, off=19):
    add_iter(hd, "Num of Chars",
             "%d" % struct.unpack("<I", value[off:off + 4]), off, 4, "<I")
    add_iter(hd, "FontID",
             "0x%02x" % struct.unpack("<H", value[off + 4:off + 4 + 2]),
             off + 4, 2, "<H")
    add_iter(hd, "ColorID", "0x%02x" % ord(value[off + 6]), off + 6, 1, "B")
    add_iter(
        hd, "Color", "%02x%02x%02x" %
        (ord(value[off + 7]), ord(value[off + 8]), ord(value[off + 9])),
        off + 7, 3, "clr")
    add_iter(hd, "Transparency", "%d%%" % (ord(value[off + 10]) * 100 / 256),
             off + 10, 1, "B")

    flags1 = ord(value[off + 11])
    ftxt = ""
    if flags1 & 1 == 1:
        ftxt += "bold "
    if flags1 & 2 == 2:
        ftxt += "italic "
    if flags1 & 4 == 4:
        ftxt += "undrline "
    if flags1 & 8 == 8:
        ftxt += "smcaps "
    add_iter(hd, "Font Mods1", ftxt, off + 11, 1, "txt")

    flags2 = ord(value[off + 12])
    ftxt = ""
    if flags2 & 1 == 1:
        ftxt += "allcaps "
    if flags2 & 2 == 2:
        ftxt += "initcaps "
    add_iter(hd, "Font Mods2", ftxt, off + 12, 1, "txt")

    flags3 = ord(value[off + 13])
    ftxt = ""
    if flags3 & 1 == 1:
        ftxt += "superscript "
    if flags3 & 2 == 2:
        ftxt += "subscript "
    add_iter(hd, "Font Mods3", ftxt, off + 12, 1, "txt")
    add_iter(
        hd, "Scale",
        "%d%%" % (struct.unpack("<h", value[off + 13:off + 13 + 2])[0] / 100.),
        off + 13, 2, "<h")
    add_iter(
        hd, "FontSize", "%.2f pt" %
        (72 * struct.unpack("<d", value[off + 18:off + 18 + 8])[0]), off + 18,
        8, "<d")

    flags4 = ord(value[off + 26])
    ftxt = ""
    if flags4 & 1 == 1:
        ftxt += "dblunder "
    if flags4 & 2 == 2:
        ftxt += "overline "
    if flags4 & 20 == 20:
        ftxt += "dblstrike "
    add_iter(hd, "Font Mods4", ftxt, off + 26, 1, "txt")
    add_iter(
        hd, "Spacing", "%d pt" %
        (struct.unpack("<h", value[off + 27:off + 27 + 2])[0] / 200.),
        off + 27, 2, "<h")
    if hd.version == 11:
        add_iter(hd, "AsianFont", "%d" % ord(value[off + 37]), off + 37, 1,
                 "B")
        add_iter(hd, "ComplexScriptFont", "%d" % ord(value[off + 39]),
                 off + 39, 1, "B")
        add_iter(hd, "LocalizeFont", "%d" % ord(value[off + 41]), off + 41, 1,
                 "B")
        add_iter(
            hd, "ComplexScriptSize", "%d%%" %
            (struct.unpack("<d", value[off + 43:off + 43 + 8])[0] * 100),
            off + 43, 8, "<d")
        add_iter(hd, "LangID",
                 "%d" % struct.unpack("<I", value[off + 69:off + 69 + 4]),
                 off + 69, 4, "<I")
        if len(value) > off + 88 and hd.version == 11:
            vsdblock.parse(hd, size, value, off + 88)
    elif hd.version == 6 and len(value) > off + 35:
        vsdblock.parse(hd, size, value, off + 35)
Beispiel #42
0
def ArcTo (hd, size, value, off = 19):
	add_iter(hd,"X","%.2f"%struct.unpack("<d",value[off+1:off+1+8]),off+1,8,"<d")
	add_iter(hd,"Y","%.2f"%struct.unpack("<d",value[off+10:off+10+8]),off+10,8,"<d")
	add_iter(hd,"A","%.2f"%struct.unpack("<d",value[off+19:off+19+8]),off+19,8,"<d")
	if len(value)>off+29: # both 6 and 11
		vsdblock.parse(hd, size, value, off+29)