You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by ki...@apache.org on 2019/10/12 16:32:53 UTC

svn commit: r1868352 [3/6] - in /poi/trunk/src: java/org/apache/poi/ddf/ java/org/apache/poi/hssf/model/ java/org/apache/poi/hssf/usermodel/ java/org/apache/poi/sl/usermodel/ scratchpad/src/org/apache/poi/hslf/model/ scratchpad/src/org/apache/poi/hslf/...

Modified: poi/trunk/src/java/org/apache/poi/ddf/EscherProperties.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/ddf/EscherProperties.java?rev=1868352&r1=1868351&r2=1868352&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/ddf/EscherProperties.java (original)
+++ poi/trunk/src/java/org/apache/poi/ddf/EscherProperties.java Sat Oct 12 16:32:53 2019
@@ -17,666 +17,334 @@
 
 package org.apache.poi.ddf;
 
-import java.util.HashMap;
-import java.util.Map;
+import org.apache.poi.util.Removal;
 
 /**
- * Provides a list of all known escher properties including the description and
- * type.
+ * Provides a list of all known escher properties including the description and type.
  *
- * @author Glen Stampoultzis (glens at apache.org)
+ * @deprecated use {@link EscherPropertyTypes} enum instead
  */
-@SuppressWarnings("WeakerAccess")
-public final class EscherProperties {
+@SuppressWarnings({"unused"})
+@Deprecated
+@Removal(version = "5.0.0")
+public interface EscherProperties {
+	short TRANSFORM__ROTATION = EscherPropertyTypes.TRANSFORM__ROTATION.propNumber;
+	short PROTECTION__LOCKROTATION = EscherPropertyTypes.PROTECTION__LOCKROTATION.propNumber;
+	short PROTECTION__LOCKASPECTRATIO = EscherPropertyTypes.PROTECTION__LOCKASPECTRATIO.propNumber;
+	short PROTECTION__LOCKPOSITION = EscherPropertyTypes.PROTECTION__LOCKPOSITION.propNumber;
+	short PROTECTION__LOCKAGAINSTSELECT = EscherPropertyTypes.PROTECTION__LOCKAGAINSTSELECT.propNumber;
+	short PROTECTION__LOCKCROPPING = EscherPropertyTypes.PROTECTION__LOCKCROPPING.propNumber;
+	short PROTECTION__LOCKVERTICES = EscherPropertyTypes.PROTECTION__LOCKVERTICES.propNumber;
+	short PROTECTION__LOCKTEXT = EscherPropertyTypes.PROTECTION__LOCKTEXT.propNumber;
+	short PROTECTION__LOCKADJUSTHANDLES = EscherPropertyTypes.PROTECTION__LOCKADJUSTHANDLES.propNumber;
+	short PROTECTION__LOCKAGAINSTGROUPING = EscherPropertyTypes.PROTECTION__LOCKAGAINSTGROUPING.propNumber;
+	short TEXT__TEXTID = EscherPropertyTypes.TEXT__TEXTID.propNumber;
+	short TEXT__TEXTLEFT = EscherPropertyTypes.TEXT__TEXTLEFT.propNumber;
+	short TEXT__TEXTTOP = EscherPropertyTypes.TEXT__TEXTTOP.propNumber;
+	short TEXT__TEXTRIGHT = EscherPropertyTypes.TEXT__TEXTRIGHT.propNumber;
+	short TEXT__TEXTBOTTOM = EscherPropertyTypes.TEXT__TEXTBOTTOM.propNumber;
+	short TEXT__WRAPTEXT = EscherPropertyTypes.TEXT__WRAPTEXT.propNumber;
+	short TEXT__SCALETEXT = EscherPropertyTypes.TEXT__SCALETEXT.propNumber;
+	short TEXT__ANCHORTEXT = EscherPropertyTypes.TEXT__ANCHORTEXT.propNumber;
+	short TEXT__TEXTFLOW = EscherPropertyTypes.TEXT__TEXTFLOW.propNumber;
+	short TEXT__FONTROTATION = EscherPropertyTypes.TEXT__FONTROTATION.propNumber;
+	short TEXT__IDOFNEXTSHAPE = EscherPropertyTypes.TEXT__IDOFNEXTSHAPE.propNumber;
+	short TEXT__BIDIR = EscherPropertyTypes.TEXT__BIDIR.propNumber;
+	short TEXT__SINGLECLICKSELECTS = EscherPropertyTypes.TEXT__SINGLECLICKSELECTS.propNumber;
+	short TEXT__USEHOSTMARGINS = EscherPropertyTypes.TEXT__USEHOSTMARGINS.propNumber;
+	short TEXT__ROTATETEXTWITHSHAPE = EscherPropertyTypes.TEXT__ROTATETEXTWITHSHAPE.propNumber;
+	short TEXT__SIZESHAPETOFITTEXT = EscherPropertyTypes.TEXT__SIZESHAPETOFITTEXT.propNumber;
+	short TEXT__SIZE_TEXT_TO_FIT_SHAPE = EscherPropertyTypes.TEXT__SIZE_TEXT_TO_FIT_SHAPE.propNumber;
+	short GEOTEXT__UNICODE = EscherPropertyTypes.GEOTEXT__UNICODE.propNumber;
+	short GEOTEXT__RTFTEXT = EscherPropertyTypes.GEOTEXT__RTFTEXT.propNumber;
+	short GEOTEXT__ALIGNMENTONCURVE = EscherPropertyTypes.GEOTEXT__ALIGNMENTONCURVE.propNumber;
+	short GEOTEXT__DEFAULTPOINTSIZE = EscherPropertyTypes.GEOTEXT__DEFAULTPOINTSIZE.propNumber;
+	short GEOTEXT__TEXTSPACING = EscherPropertyTypes.GEOTEXT__TEXTSPACING.propNumber;
+	short GEOTEXT__FONTFAMILYNAME = EscherPropertyTypes.GEOTEXT__FONTFAMILYNAME.propNumber;
+	short GEOTEXT__REVERSEROWORDER = EscherPropertyTypes.GEOTEXT__REVERSEROWORDER.propNumber;
+	short GEOTEXT__HASTEXTEFFECT = EscherPropertyTypes.GEOTEXT__HASTEXTEFFECT.propNumber;
+	short GEOTEXT__ROTATECHARACTERS = EscherPropertyTypes.GEOTEXT__ROTATECHARACTERS.propNumber;
+	short GEOTEXT__KERNCHARACTERS = EscherPropertyTypes.GEOTEXT__KERNCHARACTERS.propNumber;
+	short GEOTEXT__TIGHTORTRACK = EscherPropertyTypes.GEOTEXT__TIGHTORTRACK.propNumber;
+	short GEOTEXT__STRETCHTOFITSHAPE = EscherPropertyTypes.GEOTEXT__STRETCHTOFITSHAPE.propNumber;
+	short GEOTEXT__CHARBOUNDINGBOX = EscherPropertyTypes.GEOTEXT__CHARBOUNDINGBOX.propNumber;
+	short GEOTEXT__SCALETEXTONPATH = EscherPropertyTypes.GEOTEXT__SCALETEXTONPATH.propNumber;
+	short GEOTEXT__STRETCHCHARHEIGHT = EscherPropertyTypes.GEOTEXT__STRETCHCHARHEIGHT.propNumber;
+	short GEOTEXT__NOMEASUREALONGPATH = EscherPropertyTypes.GEOTEXT__NOMEASUREALONGPATH.propNumber;
+	short GEOTEXT__BOLDFONT = EscherPropertyTypes.GEOTEXT__BOLDFONT.propNumber;
+	short GEOTEXT__ITALICFONT = EscherPropertyTypes.GEOTEXT__ITALICFONT.propNumber;
+	short GEOTEXT__UNDERLINEFONT = EscherPropertyTypes.GEOTEXT__UNDERLINEFONT.propNumber;
+	short GEOTEXT__SHADOWFONT = EscherPropertyTypes.GEOTEXT__SHADOWFONT.propNumber;
+	short GEOTEXT__SMALLCAPSFONT = EscherPropertyTypes.GEOTEXT__SMALLCAPSFONT.propNumber;
+	short GEOTEXT__STRIKETHROUGHFONT = EscherPropertyTypes.GEOTEXT__STRIKETHROUGHFONT.propNumber;
+	short BLIP__CROPFROMTOP = EscherPropertyTypes.BLIP__CROPFROMTOP.propNumber;
+	short BLIP__CROPFROMBOTTOM = EscherPropertyTypes.BLIP__CROPFROMBOTTOM.propNumber;
+	short BLIP__CROPFROMLEFT = EscherPropertyTypes.BLIP__CROPFROMLEFT.propNumber;
+	short BLIP__CROPFROMRIGHT = EscherPropertyTypes.BLIP__CROPFROMRIGHT.propNumber;
+	short BLIP__BLIPTODISPLAY = EscherPropertyTypes.BLIP__BLIPTODISPLAY.propNumber;
+	short BLIP__BLIPFILENAME = EscherPropertyTypes.BLIP__BLIPFILENAME.propNumber;
+	short BLIP__BLIPFLAGS = EscherPropertyTypes.BLIP__BLIPFLAGS.propNumber;
+	short BLIP__TRANSPARENTCOLOR = EscherPropertyTypes.BLIP__TRANSPARENTCOLOR.propNumber;
+	short BLIP__CONTRASTSETTING = EscherPropertyTypes.BLIP__CONTRASTSETTING.propNumber;
+	short BLIP__BRIGHTNESSSETTING = EscherPropertyTypes.BLIP__BRIGHTNESSSETTING.propNumber;
+	short BLIP__GAMMA = EscherPropertyTypes.BLIP__GAMMA.propNumber;
+	short BLIP__PICTUREID = EscherPropertyTypes.BLIP__PICTUREID.propNumber;
+	short BLIP__DOUBLEMOD = EscherPropertyTypes.BLIP__DOUBLEMOD.propNumber;
+	short BLIP__PICTUREFILLMOD = EscherPropertyTypes.BLIP__PICTUREFILLMOD.propNumber;
+	short BLIP__PICTURELINE = EscherPropertyTypes.BLIP__PICTURELINE.propNumber;
+	short BLIP__PRINTBLIP = EscherPropertyTypes.BLIP__PRINTBLIP.propNumber;
+	short BLIP__PRINTBLIPFILENAME = EscherPropertyTypes.BLIP__PRINTBLIPFILENAME.propNumber;
+	short BLIP__PRINTFLAGS = EscherPropertyTypes.BLIP__PRINTFLAGS.propNumber;
+	short BLIP__NOHITTESTPICTURE = EscherPropertyTypes.BLIP__NOHITTESTPICTURE.propNumber;
+	short BLIP__PICTUREGRAY = EscherPropertyTypes.BLIP__PICTUREGRAY.propNumber;
+	short BLIP__PICTUREBILEVEL = EscherPropertyTypes.BLIP__PICTUREBILEVEL.propNumber;
+	short BLIP__PICTUREACTIVE = EscherPropertyTypes.BLIP__PICTUREACTIVE.propNumber;
+	short GEOMETRY__LEFT = EscherPropertyTypes.GEOMETRY__LEFT.propNumber;
+	short GEOMETRY__TOP = EscherPropertyTypes.GEOMETRY__TOP.propNumber;
+	short GEOMETRY__RIGHT = EscherPropertyTypes.GEOMETRY__RIGHT.propNumber;
+	short GEOMETRY__BOTTOM = EscherPropertyTypes.GEOMETRY__BOTTOM.propNumber;
+	short GEOMETRY__SHAPEPATH = EscherPropertyTypes.GEOMETRY__SHAPEPATH.propNumber;
+	short GEOMETRY__VERTICES = EscherPropertyTypes.GEOMETRY__VERTICES.propNumber;
+	short GEOMETRY__SEGMENTINFO = EscherPropertyTypes.GEOMETRY__SEGMENTINFO.propNumber;
+	short GEOMETRY__ADJUSTVALUE = EscherPropertyTypes.GEOMETRY__ADJUSTVALUE.propNumber;
+	short GEOMETRY__ADJUST2VALUE = EscherPropertyTypes.GEOMETRY__ADJUST2VALUE.propNumber;
+	short GEOMETRY__ADJUST3VALUE = EscherPropertyTypes.GEOMETRY__ADJUST3VALUE.propNumber;
+	short GEOMETRY__ADJUST4VALUE = EscherPropertyTypes.GEOMETRY__ADJUST4VALUE.propNumber;
+	short GEOMETRY__ADJUST5VALUE = EscherPropertyTypes.GEOMETRY__ADJUST5VALUE.propNumber;
+	short GEOMETRY__ADJUST6VALUE = EscherPropertyTypes.GEOMETRY__ADJUST6VALUE.propNumber;
+	short GEOMETRY__ADJUST7VALUE = EscherPropertyTypes.GEOMETRY__ADJUST7VALUE.propNumber;
+	short GEOMETRY__ADJUST8VALUE = EscherPropertyTypes.GEOMETRY__ADJUST8VALUE.propNumber;
+	short GEOMETRY__ADJUST9VALUE = EscherPropertyTypes.GEOMETRY__ADJUST9VALUE.propNumber;
+	short GEOMETRY__ADJUST10VALUE = EscherPropertyTypes.GEOMETRY__ADJUST10VALUE.propNumber;
+	short GEOMETRY__PCONNECTIONSITES = EscherPropertyTypes.GEOMETRY__PCONNECTIONSITES.propNumber;
+	short GEOMETRY__PCONNECTIONSITESDIR = EscherPropertyTypes.GEOMETRY__PCONNECTIONSITESDIR.propNumber;
+	short GEOMETRY__XLIMO = EscherPropertyTypes.GEOMETRY__XLIMO.propNumber;
+	short GEOMETRY__YLIMO = EscherPropertyTypes.GEOMETRY__YLIMO.propNumber;
+	short GEOMETRY__PADJUSTHANDLES = EscherPropertyTypes.GEOMETRY__PADJUSTHANDLES.propNumber;
+	short GEOMETRY__PGUIDES = EscherPropertyTypes.GEOMETRY__PGUIDES.propNumber;
+	short GEOMETRY__PINSCRIBE = EscherPropertyTypes.GEOMETRY__PINSCRIBE.propNumber;
+	short GEOMETRY__CXK = EscherPropertyTypes.GEOMETRY__CXK.propNumber;
+	short GEOMETRY__PFRAGMENTS = EscherPropertyTypes.GEOMETRY__PFRAGMENTS.propNumber;
+	short GEOMETRY__SHADOWok = EscherPropertyTypes.GEOMETRY__SHADOWOK.propNumber;
+	short GEOMETRY__3DOK = EscherPropertyTypes.GEOMETRY__3DOK.propNumber;
+	short GEOMETRY__LINEOK = EscherPropertyTypes.GEOMETRY__LINEOK.propNumber;
+	short GEOMETRY__GEOTEXTOK = EscherPropertyTypes.GEOMETRY__GEOTEXTOK.propNumber;
+	short GEOMETRY__FILLSHADESHAPEOK = EscherPropertyTypes.GEOMETRY__FILLSHADESHAPEOK.propNumber;
+	short GEOMETRY__FILLOK = EscherPropertyTypes.GEOMETRY__FILLOK.propNumber;
+	short FILL__FILLTYPE = EscherPropertyTypes.FILL__FILLTYPE.propNumber;
+	short FILL__FILLCOLOR = EscherPropertyTypes.FILL__FILLCOLOR.propNumber;
+	short FILL__FILLOPACITY = EscherPropertyTypes.FILL__FILLOPACITY.propNumber;
+	short FILL__FILLBACKCOLOR = EscherPropertyTypes.FILL__FILLBACKCOLOR.propNumber;
+	short FILL__BACKOPACITY = EscherPropertyTypes.FILL__BACKOPACITY.propNumber;
+	short FILL__CRMOD = EscherPropertyTypes.FILL__CRMOD.propNumber;
+	short FILL__PATTERNTEXTURE = EscherPropertyTypes.FILL__PATTERNTEXTURE.propNumber;
+	short FILL__BLIPFILENAME = EscherPropertyTypes.FILL__BLIPFILENAME.propNumber;
+	short FILL__BLIPFLAGS = EscherPropertyTypes.FILL__BLIPFLAGS.propNumber;
+	short FILL__WIDTH = EscherPropertyTypes.FILL__WIDTH.propNumber;
+	short FILL__HEIGHT = EscherPropertyTypes.FILL__HEIGHT.propNumber;
+	short FILL__ANGLE = EscherPropertyTypes.FILL__ANGLE.propNumber;
+	short FILL__FOCUS = EscherPropertyTypes.FILL__FOCUS.propNumber;
+	short FILL__TOLEFT = EscherPropertyTypes.FILL__TOLEFT.propNumber;
+	short FILL__TOTOP = EscherPropertyTypes.FILL__TOTOP.propNumber;
+	short FILL__TORIGHT = EscherPropertyTypes.FILL__TORIGHT.propNumber;
+	short FILL__TOBOTTOM = EscherPropertyTypes.FILL__TOBOTTOM.propNumber;
+	short FILL__RECTLEFT = EscherPropertyTypes.FILL__RECTLEFT.propNumber;
+	short FILL__RECTTOP = EscherPropertyTypes.FILL__RECTTOP.propNumber;
+	short FILL__RECTRIGHT = EscherPropertyTypes.FILL__RECTRIGHT.propNumber;
+	short FILL__RECTBOTTOM = EscherPropertyTypes.FILL__RECTBOTTOM.propNumber;
+	short FILL__DZTYPE = EscherPropertyTypes.FILL__DZTYPE.propNumber;
+	short FILL__SHADEPRESET = EscherPropertyTypes.FILL__SHADEPRESET.propNumber;
+	short FILL__SHADECOLORS = EscherPropertyTypes.FILL__SHADECOLORS.propNumber;
+	short FILL__ORIGINX = EscherPropertyTypes.FILL__ORIGINX.propNumber;
+	short FILL__ORIGINY = EscherPropertyTypes.FILL__ORIGINY.propNumber;
+	short FILL__SHAPEORIGINX = EscherPropertyTypes.FILL__SHAPEORIGINX.propNumber;
+	short FILL__SHAPEORIGINY = EscherPropertyTypes.FILL__SHAPEORIGINY.propNumber;
+	short FILL__SHADETYPE = EscherPropertyTypes.FILL__SHADETYPE.propNumber;
+	short FILL__FILLED = EscherPropertyTypes.FILL__FILLED.propNumber;
+	short FILL__HITTESTFILL = EscherPropertyTypes.FILL__HITTESTFILL.propNumber;
+	short FILL__SHAPE = EscherPropertyTypes.FILL__SHAPE.propNumber;
+	short FILL__USERECT = EscherPropertyTypes.FILL__USERECT.propNumber;
+	short FILL__NOFILLHITTEST = EscherPropertyTypes.FILL__NOFILLHITTEST.propNumber;
+	short LINESTYLE__COLOR = EscherPropertyTypes.LINESTYLE__COLOR.propNumber;
+	short LINESTYLE__OPACITY = EscherPropertyTypes.LINESTYLE__OPACITY.propNumber;
+	short LINESTYLE__BACKCOLOR = EscherPropertyTypes.LINESTYLE__BACKCOLOR.propNumber;
+	short LINESTYLE__CRMOD = EscherPropertyTypes.LINESTYLE__CRMOD.propNumber;
+	short LINESTYLE__LINETYPE = EscherPropertyTypes.LINESTYLE__LINETYPE.propNumber;
+	short LINESTYLE__FILLBLIP = EscherPropertyTypes.LINESTYLE__FILLBLIP.propNumber;
+	short LINESTYLE__FILLBLIPNAME = EscherPropertyTypes.LINESTYLE__FILLBLIPNAME.propNumber;
+	short LINESTYLE__FILLBLIPFLAGS = EscherPropertyTypes.LINESTYLE__FILLBLIPFLAGS.propNumber;
+	short LINESTYLE__FILLWIDTH = EscherPropertyTypes.LINESTYLE__FILLWIDTH.propNumber;
+	short LINESTYLE__FILLHEIGHT = EscherPropertyTypes.LINESTYLE__FILLHEIGHT.propNumber;
+	short LINESTYLE__FILLDZTYPE = EscherPropertyTypes.LINESTYLE__FILLDZTYPE.propNumber;
+	short LINESTYLE__LINEWIDTH = EscherPropertyTypes.LINESTYLE__LINEWIDTH.propNumber;
+	short LINESTYLE__LINEMITERLIMIT = EscherPropertyTypes.LINESTYLE__LINEMITERLIMIT.propNumber;
+	short LINESTYLE__LINESTYLE = EscherPropertyTypes.LINESTYLE__LINESTYLE.propNumber;
+	short LINESTYLE__LINEDASHING = EscherPropertyTypes.LINESTYLE__LINEDASHING.propNumber;
+	short LINESTYLE__LINEDASHSTYLE = EscherPropertyTypes.LINESTYLE__LINEDASHSTYLE.propNumber;
+	short LINESTYLE__LINESTARTARROWHEAD = EscherPropertyTypes.LINESTYLE__LINESTARTARROWHEAD.propNumber;
+	short LINESTYLE__LINEENDARROWHEAD = EscherPropertyTypes.LINESTYLE__LINEENDARROWHEAD.propNumber;
+	short LINESTYLE__LINESTARTARROWWIDTH = EscherPropertyTypes.LINESTYLE__LINESTARTARROWWIDTH.propNumber;
+	short LINESTYLE__LINESTARTARROWLENGTH = EscherPropertyTypes.LINESTYLE__LINESTARTARROWLENGTH.propNumber;
+	short LINESTYLE__LINEENDARROWWIDTH = EscherPropertyTypes.LINESTYLE__LINEENDARROWWIDTH.propNumber;
+	short LINESTYLE__LINEENDARROWLENGTH = EscherPropertyTypes.LINESTYLE__LINEENDARROWLENGTH.propNumber;
+	short LINESTYLE__LINEJOINSTYLE = EscherPropertyTypes.LINESTYLE__LINEJOINSTYLE.propNumber;
+	short LINESTYLE__LINEENDCAPSTYLE = EscherPropertyTypes.LINESTYLE__LINEENDCAPSTYLE.propNumber;
+	short LINESTYLE__ARROWHEADSOK = EscherPropertyTypes.LINESTYLE__ARROWHEADSOK.propNumber;
+	short LINESTYLE__ANYLINE = EscherPropertyTypes.LINESTYLE__ANYLINE.propNumber;
+	short LINESTYLE__HITLINETEST = EscherPropertyTypes.LINESTYLE__HITLINETEST.propNumber;
+	short LINESTYLE__LINEFILLSHAPE = EscherPropertyTypes.LINESTYLE__LINEFILLSHAPE.propNumber;
+	short LINESTYLE__NOLINEDRAWDASH = EscherPropertyTypes.LINESTYLE__NOLINEDRAWDASH.propNumber;
+	short LINESTYLE__NOLINEDRAWDASH_LEFT = EscherPropertyTypes.LINESTYLE__NOLINEDRAWDASH_LEFT.propNumber;
+	short LINESTYLE__NOLINEDRAWDASH_TOP = EscherPropertyTypes.LINESTYLE__NOLINEDRAWDASH_TOP.propNumber;
+	short LINESTYLE__NOLINEDRAWDASH_BOTTOM = EscherPropertyTypes.LINESTYLE__NOLINEDRAWDASH_BOTTOM.propNumber;
+	short LINESTYLE__NOLINEDRAWDASH_RIGHT = EscherPropertyTypes.LINESTYLE__NOLINEDRAWDASH_RIGHT.propNumber;
+	short SHADOWSTYLE__TYPE = EscherPropertyTypes.SHADOWSTYLE__TYPE.propNumber;
+	short SHADOWSTYLE__COLOR = EscherPropertyTypes.SHADOWSTYLE__COLOR.propNumber;
+	short SHADOWSTYLE__HIGHLIGHT = EscherPropertyTypes.SHADOWSTYLE__HIGHLIGHT.propNumber;
+	short SHADOWSTYLE__CRMOD = EscherPropertyTypes.SHADOWSTYLE__CRMOD.propNumber;
+	short SHADOWSTYLE__OPACITY = EscherPropertyTypes.SHADOWSTYLE__OPACITY.propNumber;
+	short SHADOWSTYLE__OFFSETX = EscherPropertyTypes.SHADOWSTYLE__OFFSETX.propNumber;
+	short SHADOWSTYLE__OFFSETY = EscherPropertyTypes.SHADOWSTYLE__OFFSETY.propNumber;
+	short SHADOWSTYLE__SECONDOFFSETX = EscherPropertyTypes.SHADOWSTYLE__SECONDOFFSETX.propNumber;
+	short SHADOWSTYLE__SECONDOFFSETY = EscherPropertyTypes.SHADOWSTYLE__SECONDOFFSETY.propNumber;
+	short SHADOWSTYLE__SCALEXTOX = EscherPropertyTypes.SHADOWSTYLE__SCALEXTOX.propNumber;
+	short SHADOWSTYLE__SCALEYTOX = EscherPropertyTypes.SHADOWSTYLE__SCALEYTOX.propNumber;
+	short SHADOWSTYLE__SCALEXTOY = EscherPropertyTypes.SHADOWSTYLE__SCALEXTOY.propNumber;
+	short SHADOWSTYLE__SCALEYTOY = EscherPropertyTypes.SHADOWSTYLE__SCALEYTOY.propNumber;
+	short SHADOWSTYLE__PERSPECTIVEX = EscherPropertyTypes.SHADOWSTYLE__PERSPECTIVEX.propNumber;
+	short SHADOWSTYLE__PERSPECTIVEY = EscherPropertyTypes.SHADOWSTYLE__PERSPECTIVEY.propNumber;
+	short SHADOWSTYLE__WEIGHT = EscherPropertyTypes.SHADOWSTYLE__WEIGHT.propNumber;
+	short SHADOWSTYLE__ORIGINX = EscherPropertyTypes.SHADOWSTYLE__ORIGINX.propNumber;
+	short SHADOWSTYLE__ORIGINY = EscherPropertyTypes.SHADOWSTYLE__ORIGINY.propNumber;
+	short SHADOWSTYLE__SHADOW = EscherPropertyTypes.SHADOWSTYLE__SHADOW.propNumber;
+	short SHADOWSTYLE__SHADOWOBSURED = EscherPropertyTypes.SHADOWSTYLE__SHADOWOBSURED.propNumber;
+	short PERSPECTIVE__TYPE = EscherPropertyTypes.PERSPECTIVE__TYPE.propNumber;
+	short PERSPECTIVE__OFFSETX = EscherPropertyTypes.PERSPECTIVE__OFFSETX.propNumber;
+	short PERSPECTIVE__OFFSETY = EscherPropertyTypes.PERSPECTIVE__OFFSETY.propNumber;
+	short PERSPECTIVE__SCALEXTOX = EscherPropertyTypes.PERSPECTIVE__SCALEXTOX.propNumber;
+	short PERSPECTIVE__SCALEYTOX = EscherPropertyTypes.PERSPECTIVE__SCALEYTOX.propNumber;
+	short PERSPECTIVE__SCALEXTOY = EscherPropertyTypes.PERSPECTIVE__SCALEXTOY.propNumber;
+	short PERSPECTIVE__SCALEYTOY = EscherPropertyTypes.PERSPECTIVE__SCALEYTOY.propNumber;
+	short PERSPECTIVE__PERSPECTIVEX = EscherPropertyTypes.PERSPECTIVE__PERSPECTIVEX.propNumber;
+	short PERSPECTIVE__PERSPECTIVEY = EscherPropertyTypes.PERSPECTIVE__PERSPECTIVEY.propNumber;
+	short PERSPECTIVE__WEIGHT = EscherPropertyTypes.PERSPECTIVE__WEIGHT.propNumber;
+	short PERSPECTIVE__ORIGINX = EscherPropertyTypes.PERSPECTIVE__ORIGINX.propNumber;
+	short PERSPECTIVE__ORIGINY = EscherPropertyTypes.PERSPECTIVE__ORIGINY.propNumber;
+	short PERSPECTIVE__PERSPECTIVEON = EscherPropertyTypes.PERSPECTIVE__PERSPECTIVEON.propNumber;
+	short THREED__SPECULARAMOUNT = EscherPropertyTypes.THREED__SPECULARAMOUNT.propNumber;
+	short THREED__DIFFUSEAMOUNT = EscherPropertyTypes.THREED__DIFFUSEAMOUNT.propNumber;
+	short THREED__SHININESS = EscherPropertyTypes.THREED__SHININESS.propNumber;
+	short THREED__EDGETHICKNESS = EscherPropertyTypes.THREED__EDGETHICKNESS.propNumber;
+	short THREED__EXTRUDEFORWARD = EscherPropertyTypes.THREED__EXTRUDEFORWARD.propNumber;
+	short THREED__EXTRUDEBACKWARD = EscherPropertyTypes.THREED__EXTRUDEBACKWARD.propNumber;
+	short THREED__EXTRUDEPLANE = EscherPropertyTypes.THREED__EXTRUDEPLANE.propNumber;
+	short THREED__EXTRUSIONCOLOR = EscherPropertyTypes.THREED__EXTRUSIONCOLOR.propNumber;
+	short THREED__CRMOD = EscherPropertyTypes.THREED__CRMOD.propNumber;
+	short THREED__3DEFFECT = EscherPropertyTypes.THREED__3DEFFECT.propNumber;
+	short THREED__METALLIC = EscherPropertyTypes.THREED__METALLIC.propNumber;
+	short THREED__USEEXTRUSIONCOLOR = EscherPropertyTypes.THREED__USEEXTRUSIONCOLOR.propNumber;
+	short THREED__LIGHTFACE = EscherPropertyTypes.THREED__LIGHTFACE.propNumber;
+	short THREEDSTYLE__YROTATIONANGLE = EscherPropertyTypes.THREEDSTYLE__YROTATIONANGLE.propNumber;
+	short THREEDSTYLE__XROTATIONANGLE = EscherPropertyTypes.THREEDSTYLE__XROTATIONANGLE.propNumber;
+	short THREEDSTYLE__ROTATIONAXISX = EscherPropertyTypes.THREEDSTYLE__ROTATIONAXISX.propNumber;
+	short THREEDSTYLE__ROTATIONAXISY = EscherPropertyTypes.THREEDSTYLE__ROTATIONAXISY.propNumber;
+	short THREEDSTYLE__ROTATIONAXISZ = EscherPropertyTypes.THREEDSTYLE__ROTATIONAXISZ.propNumber;
+	short THREEDSTYLE__ROTATIONANGLE = EscherPropertyTypes.THREEDSTYLE__ROTATIONANGLE.propNumber;
+	short THREEDSTYLE__ROTATIONCENTERX = EscherPropertyTypes.THREEDSTYLE__ROTATIONCENTERX.propNumber;
+	short THREEDSTYLE__ROTATIONCENTERY = EscherPropertyTypes.THREEDSTYLE__ROTATIONCENTERY.propNumber;
+	short THREEDSTYLE__ROTATIONCENTERZ = EscherPropertyTypes.THREEDSTYLE__ROTATIONCENTERZ.propNumber;
+	short THREEDSTYLE__RENDERMODE = EscherPropertyTypes.THREEDSTYLE__RENDERMODE.propNumber;
+	short THREEDSTYLE__TOLERANCE = EscherPropertyTypes.THREEDSTYLE__TOLERANCE.propNumber;
+	short THREEDSTYLE__XVIEWPOINT = EscherPropertyTypes.THREEDSTYLE__XVIEWPOINT.propNumber;
+	short THREEDSTYLE__YVIEWPOINT = EscherPropertyTypes.THREEDSTYLE__YVIEWPOINT.propNumber;
+	short THREEDSTYLE__ZVIEWPOINT = EscherPropertyTypes.THREEDSTYLE__ZVIEWPOINT.propNumber;
+	short THREEDSTYLE__ORIGINX = EscherPropertyTypes.THREEDSTYLE__ORIGINX.propNumber;
+	short THREEDSTYLE__ORIGINY = EscherPropertyTypes.THREEDSTYLE__ORIGINY.propNumber;
+	short THREEDSTYLE__SKEWANGLE = EscherPropertyTypes.THREEDSTYLE__SKEWANGLE.propNumber;
+	short THREEDSTYLE__SKEWAMOUNT = EscherPropertyTypes.THREEDSTYLE__SKEWAMOUNT.propNumber;
+	short THREEDSTYLE__AMBIENTINTENSITY = EscherPropertyTypes.THREEDSTYLE__AMBIENTINTENSITY.propNumber;
+	short THREEDSTYLE__KEYX = EscherPropertyTypes.THREEDSTYLE__KEYX.propNumber;
+	short THREEDSTYLE__KEYY = EscherPropertyTypes.THREEDSTYLE__KEYY.propNumber;
+	short THREEDSTYLE__KEYZ = EscherPropertyTypes.THREEDSTYLE__KEYZ.propNumber;
+	short THREEDSTYLE__KEYINTENSITY = EscherPropertyTypes.THREEDSTYLE__KEYINTENSITY.propNumber;
+	short THREEDSTYLE__FILLX = EscherPropertyTypes.THREEDSTYLE__FILLX.propNumber;
+	short THREEDSTYLE__FILLY = EscherPropertyTypes.THREEDSTYLE__FILLY.propNumber;
+	short THREEDSTYLE__FILLZ = EscherPropertyTypes.THREEDSTYLE__FILLZ.propNumber;
+	short THREEDSTYLE__FILLINTENSITY = EscherPropertyTypes.THREEDSTYLE__FILLINTENSITY.propNumber;
+	short THREEDSTYLE__CONSTRAINROTATION = EscherPropertyTypes.THREEDSTYLE__CONSTRAINROTATION.propNumber;
+	short THREEDSTYLE__ROTATIONCENTERAUTO = EscherPropertyTypes.THREEDSTYLE__ROTATIONCENTERAUTO.propNumber;
+	short THREEDSTYLE__PARALLEL = EscherPropertyTypes.THREEDSTYLE__PARALLEL.propNumber;
+	short THREEDSTYLE__KEYHARSH = EscherPropertyTypes.THREEDSTYLE__KEYHARSH.propNumber;
+	short THREEDSTYLE__FILLHARSH = EscherPropertyTypes.THREEDSTYLE__FILLHARSH.propNumber;
+	short SHAPE__MASTER = EscherPropertyTypes.SHAPE__MASTER.propNumber;
+	short SHAPE__CONNECTORSTYLE = EscherPropertyTypes.SHAPE__CONNECTORSTYLE.propNumber;
+	short SHAPE__BLACKANDWHITESETTINGS = EscherPropertyTypes.SHAPE__BLACKANDWHITESETTINGS.propNumber;
+	short SHAPE__WMODEPUREBW = EscherPropertyTypes.SHAPE__WMODEPUREBW.propNumber;
+	short SHAPE__WMODEBW = EscherPropertyTypes.SHAPE__WMODEBW.propNumber;
+	short SHAPE__OLEICON = EscherPropertyTypes.SHAPE__OLEICON.propNumber;
+	short SHAPE__PREFERRELATIVERESIZE = EscherPropertyTypes.SHAPE__PREFERRELATIVERESIZE.propNumber;
+	short SHAPE__LOCKSHAPETYPE = EscherPropertyTypes.SHAPE__LOCKSHAPETYPE.propNumber;
+	short SHAPE__DELETEATTACHEDOBJECT = EscherPropertyTypes.SHAPE__DELETEATTACHEDOBJECT.propNumber;
+	short SHAPE__BACKGROUNDSHAPE = EscherPropertyTypes.SHAPE__BACKGROUNDSHAPE.propNumber;
+	short CALLOUT__CALLOUTTYPE = EscherPropertyTypes.CALLOUT__CALLOUTTYPE.propNumber;
+	short CALLOUT__XYCALLOUTGAP = EscherPropertyTypes.CALLOUT__XYCALLOUTGAP.propNumber;
+	short CALLOUT__CALLOUTANGLE = EscherPropertyTypes.CALLOUT__CALLOUTANGLE.propNumber;
+	short CALLOUT__CALLOUTDROPTYPE = EscherPropertyTypes.CALLOUT__CALLOUTDROPTYPE.propNumber;
+	short CALLOUT__CALLOUTDROPSPECIFIED = EscherPropertyTypes.CALLOUT__CALLOUTDROPSPECIFIED.propNumber;
+	short CALLOUT__CALLOUTLENGTHSPECIFIED = EscherPropertyTypes.CALLOUT__CALLOUTLENGTHSPECIFIED.propNumber;
+	short CALLOUT__ISCALLOUT = EscherPropertyTypes.CALLOUT__ISCALLOUT.propNumber;
+	short CALLOUT__CALLOUTACCENTBAR = EscherPropertyTypes.CALLOUT__CALLOUTACCENTBAR.propNumber;
+	short CALLOUT__CALLOUTTEXTBORDER = EscherPropertyTypes.CALLOUT__CALLOUTTEXTBORDER.propNumber;
+	short CALLOUT__CALLOUTMINUSX = EscherPropertyTypes.CALLOUT__CALLOUTMINUSX.propNumber;
+	short CALLOUT__CALLOUTMINUSY = EscherPropertyTypes.CALLOUT__CALLOUTMINUSY.propNumber;
+	short CALLOUT__DROPAUTO = EscherPropertyTypes.CALLOUT__DROPAUTO.propNumber;
+	short CALLOUT__LENGTHSPECIFIED = EscherPropertyTypes.CALLOUT__LENGTHSPECIFIED.propNumber;
+	short GROUPSHAPE__SHAPENAME = EscherPropertyTypes.GROUPSHAPE__SHAPENAME.propNumber;
+	short GROUPSHAPE__DESCRIPTION = EscherPropertyTypes.GROUPSHAPE__DESCRIPTION.propNumber;
+	short GROUPSHAPE__HYPERLINK = EscherPropertyTypes.GROUPSHAPE__HYPERLINK.propNumber;
+	short GROUPSHAPE__WRAPPOLYGONVERTICES = EscherPropertyTypes.GROUPSHAPE__WRAPPOLYGONVERTICES.propNumber;
+	short GROUPSHAPE__WRAPDISTLEFT = EscherPropertyTypes.GROUPSHAPE__WRAPDISTLEFT.propNumber;
+	short GROUPSHAPE__WRAPDISTTOP = EscherPropertyTypes.GROUPSHAPE__WRAPDISTTOP.propNumber;
+	short GROUPSHAPE__WRAPDISTRIGHT = EscherPropertyTypes.GROUPSHAPE__WRAPDISTRIGHT.propNumber;
+	short GROUPSHAPE__WRAPDISTBOTTOM = EscherPropertyTypes.GROUPSHAPE__WRAPDISTBOTTOM.propNumber;
+	short GROUPSHAPE__REGROUPID = EscherPropertyTypes.GROUPSHAPE__REGROUPID.propNumber;
+	short GROUPSHAPE__UNUSED906 = EscherPropertyTypes.GROUPSHAPE__UNUSED906.propNumber;
+	short GROUPSHAPE__TOOLTIP = EscherPropertyTypes.GROUPSHAPE__TOOLTIP.propNumber;
+	short GROUPSHAPE__SCRIPT = EscherPropertyTypes.GROUPSHAPE__SCRIPT.propNumber;
+	short GROUPSHAPE__POSH = EscherPropertyTypes.GROUPSHAPE__POSH.propNumber;
+	short GROUPSHAPE__POSRELH = EscherPropertyTypes.GROUPSHAPE__POSRELH.propNumber;
+	short GROUPSHAPE__POSV = EscherPropertyTypes.GROUPSHAPE__POSV.propNumber;
+	short GROUPSHAPE__POSRELV = EscherPropertyTypes.GROUPSHAPE__POSRELV.propNumber;
+	short GROUPSHAPE__HR_PCT = EscherPropertyTypes.GROUPSHAPE__HR_PCT.propNumber;
+	short GROUPSHAPE__HR_ALIGN = EscherPropertyTypes.GROUPSHAPE__HR_ALIGN.propNumber;
+	short GROUPSHAPE__HR_HEIGHT = EscherPropertyTypes.GROUPSHAPE__HR_HEIGHT.propNumber;
+	short GROUPSHAPE__HR_WIDTH = EscherPropertyTypes.GROUPSHAPE__HR_WIDTH.propNumber;
+	short GROUPSHAPE__SCRIPTEXT = EscherPropertyTypes.GROUPSHAPE__SCRIPTEXT.propNumber;
+	short GROUPSHAPE__SCRIPTLANG = EscherPropertyTypes.GROUPSHAPE__SCRIPTLANG.propNumber;
+	short GROUPSHAPE__BORDERTOPCOLOR = EscherPropertyTypes.GROUPSHAPE__BORDERTOPCOLOR.propNumber;
+	short GROUPSHAPE__BORDERLEFTCOLOR = EscherPropertyTypes.GROUPSHAPE__BORDERLEFTCOLOR.propNumber;
+	short GROUPSHAPE__BORDERBOTTOMCOLOR = EscherPropertyTypes.GROUPSHAPE__BORDERBOTTOMCOLOR.propNumber;
+	short GROUPSHAPE__BORDERRIGHTCOLOR = EscherPropertyTypes.GROUPSHAPE__BORDERRIGHTCOLOR.propNumber;
+	short GROUPSHAPE__TABLEPROPERTIES = EscherPropertyTypes.GROUPSHAPE__TABLEPROPERTIES.propNumber;
+	short GROUPSHAPE__TABLEROWPROPERTIES = EscherPropertyTypes.GROUPSHAPE__TABLEROWPROPERTIES.propNumber;
+	short GROUPSHAPE__WEBBOT = EscherPropertyTypes.GROUPSHAPE__WEBBOT.propNumber;
+	short GROUPSHAPE__METROBLOB = EscherPropertyTypes.GROUPSHAPE__METROBLOB.propNumber;
+	short GROUPSHAPE__ZORDER = EscherPropertyTypes.GROUPSHAPE__ZORDER.propNumber;
+	short GROUPSHAPE__EDITEDWRAP = EscherPropertyTypes.GROUPSHAPE__EDITEDWRAP.propNumber;
+	short GROUPSHAPE__BEHINDDOCUMENT = EscherPropertyTypes.GROUPSHAPE__BEHINDDOCUMENT.propNumber;
+	short GROUPSHAPE__ONDBLCLICKNOTIFY = EscherPropertyTypes.GROUPSHAPE__ONDBLCLICKNOTIFY.propNumber;
+	short GROUPSHAPE__ISBUTTON = EscherPropertyTypes.GROUPSHAPE__ISBUTTON.propNumber;
+	short GROUPSHAPE__1DADJUSTMENT = EscherPropertyTypes.GROUPSHAPE__1DADJUSTMENT.propNumber;
+	short GROUPSHAPE__HIDDEN = EscherPropertyTypes.GROUPSHAPE__HIDDEN.propNumber;
+	short GROUPSHAPE__FLAGS = EscherPropertyTypes.GROUPSHAPE__FLAGS.propNumber;
+	short GROUPSHAPE__PRINT = EscherPropertyTypes.GROUPSHAPE__FLAGS.propNumber;
 
-	// Property constants
-	public static final short TRANSFORM__ROTATION = 4;
-	public static final short PROTECTION__LOCKROTATION = 119;
-	public static final short PROTECTION__LOCKASPECTRATIO = 120;
-	public static final short PROTECTION__LOCKPOSITION = 121;
-	public static final short PROTECTION__LOCKAGAINSTSELECT = 122;
-	public static final short PROTECTION__LOCKCROPPING = 123;
-	public static final short PROTECTION__LOCKVERTICES = 124;
-	public static final short PROTECTION__LOCKTEXT = 125;
-	public static final short PROTECTION__LOCKADJUSTHANDLES = 126;
-	public static final short PROTECTION__LOCKAGAINSTGROUPING = 127;
-	public static final short TEXT__TEXTID = 128;
-	public static final short TEXT__TEXTLEFT = 129;
-	public static final short TEXT__TEXTTOP = 130;
-	public static final short TEXT__TEXTRIGHT = 131;
-	public static final short TEXT__TEXTBOTTOM = 132;
-	public static final short TEXT__WRAPTEXT = 133;
-	public static final short TEXT__SCALETEXT = 134;
-	public static final short TEXT__ANCHORTEXT = 135;
-	public static final short TEXT__TEXTFLOW = 136;
-	public static final short TEXT__FONTROTATION = 137;
-	public static final short TEXT__IDOFNEXTSHAPE = 138;
-	public static final short TEXT__BIDIR = 139;
-	public static final short TEXT__SINGLECLICKSELECTS = 187;
-	public static final short TEXT__USEHOSTMARGINS = 188;
-	public static final short TEXT__ROTATETEXTWITHSHAPE = 189;
-	public static final short TEXT__SIZESHAPETOFITTEXT = 190;
-	public static final short TEXT__SIZE_TEXT_TO_FIT_SHAPE = 191;
-	public static final short GEOTEXT__UNICODE = 192;
-	public static final short GEOTEXT__RTFTEXT = 193;
-	public static final short GEOTEXT__ALIGNMENTONCURVE = 194;
-	public static final short GEOTEXT__DEFAULTPOINTSIZE = 195;
-	public static final short GEOTEXT__TEXTSPACING = 196;
-	public static final short GEOTEXT__FONTFAMILYNAME = 197;
-	public static final short GEOTEXT__REVERSEROWORDER = 240;
-	public static final short GEOTEXT__HASTEXTEFFECT = 241;
-	public static final short GEOTEXT__ROTATECHARACTERS = 242;
-	public static final short GEOTEXT__KERNCHARACTERS = 243;
-	public static final short GEOTEXT__TIGHTORTRACK = 244;
-	public static final short GEOTEXT__STRETCHTOFITSHAPE = 245;
-	public static final short GEOTEXT__CHARBOUNDINGBOX = 246;
-	public static final short GEOTEXT__SCALETEXTONPATH = 247;
-	public static final short GEOTEXT__STRETCHCHARHEIGHT = 248;
-	public static final short GEOTEXT__NOMEASUREALONGPATH = 249;
-	public static final short GEOTEXT__BOLDFONT = 250;
-	public static final short GEOTEXT__ITALICFONT = 251;
-	public static final short GEOTEXT__UNDERLINEFONT = 252;
-	public static final short GEOTEXT__SHADOWFONT = 253;
-	public static final short GEOTEXT__SMALLCAPSFONT = 254;
-	public static final short GEOTEXT__STRIKETHROUGHFONT = 255;
-	public static final short BLIP__CROPFROMTOP = 256;
-	public static final short BLIP__CROPFROMBOTTOM = 257;
-	public static final short BLIP__CROPFROMLEFT = 258;
-	public static final short BLIP__CROPFROMRIGHT = 259;
-	public static final short BLIP__BLIPTODISPLAY = 260;
-	public static final short BLIP__BLIPFILENAME = 261;
-	public static final short BLIP__BLIPFLAGS = 262;
-	public static final short BLIP__TRANSPARENTCOLOR = 263;
-	public static final short BLIP__CONTRASTSETTING = 264;
-	public static final short BLIP__BRIGHTNESSSETTING = 265;
-	public static final short BLIP__GAMMA = 266;
-	public static final short BLIP__PICTUREID = 267;
-	public static final short BLIP__DOUBLEMOD = 268;
-	public static final short BLIP__PICTUREFILLMOD = 269;
-	public static final short BLIP__PICTURELINE = 270;
-	public static final short BLIP__PRINTBLIP = 271;
-	public static final short BLIP__PRINTBLIPFILENAME = 272;
-	public static final short BLIP__PRINTFLAGS = 273;
-	public static final short BLIP__NOHITTESTPICTURE = 316;
-	public static final short BLIP__PICTUREGRAY = 317;
-	public static final short BLIP__PICTUREBILEVEL = 318;
-	public static final short BLIP__PICTUREACTIVE = 319;
-	public static final short GEOMETRY__LEFT = 320;
-	public static final short GEOMETRY__TOP = 321;
-	public static final short GEOMETRY__RIGHT = 322;
-	public static final short GEOMETRY__BOTTOM = 323;
-	public static final short GEOMETRY__SHAPEPATH = 324;
-	public static final short GEOMETRY__VERTICES = 325;
-	public static final short GEOMETRY__SEGMENTINFO = 326;
-	public static final short GEOMETRY__ADJUSTVALUE = 327;
-	public static final short GEOMETRY__ADJUST2VALUE = 328;
-	public static final short GEOMETRY__ADJUST3VALUE = 329;
-	public static final short GEOMETRY__ADJUST4VALUE = 330;
-	public static final short GEOMETRY__ADJUST5VALUE = 331;
-	public static final short GEOMETRY__ADJUST6VALUE = 332;
-	public static final short GEOMETRY__ADJUST7VALUE = 333;
-	public static final short GEOMETRY__ADJUST8VALUE = 334;
-	public static final short GEOMETRY__ADJUST9VALUE = 335;
-	public static final short GEOMETRY__ADJUST10VALUE = 336;
-	public static final short GEOMETRY__PCONNECTIONSITES = 337;
-	public static final short GEOMETRY__PCONNECTIONSITESDIR = 338;
-	public static final short GEOMETRY__XLIMO = 339;
-	public static final short GEOMETRY__YLIMO = 340;
-	public static final short GEOMETRY__PADJUSTHANDLES = 341;
-	public static final short GEOMETRY__PGUIDES = 342;
-	public static final short GEOMETRY__PINSCRIBE = 343;
-	public static final short GEOMETRY__CXK = 344;
-	public static final short GEOMETRY__PFRAGMENTS = 345;
-	public static final short GEOMETRY__SHADOWok = 378;
-	public static final short GEOMETRY__3DOK = 379;
-	public static final short GEOMETRY__LINEOK = 380;
-	public static final short GEOMETRY__GEOTEXTOK = 381;
-	public static final short GEOMETRY__FILLSHADESHAPEOK = 382;
-	public static final short GEOMETRY__FILLOK = 383;
-	public static final short FILL__FILLTYPE = 384;
-	public static final short FILL__FILLCOLOR = 385;
-	public static final short FILL__FILLOPACITY = 386;
-	public static final short FILL__FILLBACKCOLOR = 387;
-	public static final short FILL__BACKOPACITY = 388;
-	public static final short FILL__CRMOD = 389;
-	public static final short FILL__PATTERNTEXTURE = 390;
-	public static final short FILL__BLIPFILENAME = 391;
-	public static final short FILL__BLIPFLAGS = 392;
-	public static final short FILL__WIDTH = 393;
-	public static final short FILL__HEIGHT = 394;
-	public static final short FILL__ANGLE = 395;
-	public static final short FILL__FOCUS = 396;
-	public static final short FILL__TOLEFT = 397;
-	public static final short FILL__TOTOP = 398;
-	public static final short FILL__TORIGHT = 399;
-	public static final short FILL__TOBOTTOM = 400;
-	public static final short FILL__RECTLEFT = 401;
-	public static final short FILL__RECTTOP = 402;
-	public static final short FILL__RECTRIGHT = 403;
-	public static final short FILL__RECTBOTTOM = 404;
-	public static final short FILL__DZTYPE = 405;
-	public static final short FILL__SHADEPRESET = 406;
-	public static final short FILL__SHADECOLORS = 407;
-	public static final short FILL__ORIGINX = 408;
-	public static final short FILL__ORIGINY = 409;
-	public static final short FILL__SHAPEORIGINX = 410;
-	public static final short FILL__SHAPEORIGINY = 411;
-	public static final short FILL__SHADETYPE = 412;
-	public static final short FILL__FILLED = 443;
-	public static final short FILL__HITTESTFILL = 444;
-	public static final short FILL__SHAPE = 445;
-	public static final short FILL__USERECT = 446;
-	public static final short FILL__NOFILLHITTEST = 447;
-	public static final short LINESTYLE__COLOR = 448;
-	public static final short LINESTYLE__OPACITY = 449;
-	public static final short LINESTYLE__BACKCOLOR = 450;
-	public static final short LINESTYLE__CRMOD = 451;
-	public static final short LINESTYLE__LINETYPE = 452;
-	public static final short LINESTYLE__FILLBLIP = 453;
-	public static final short LINESTYLE__FILLBLIPNAME = 454;
-	public static final short LINESTYLE__FILLBLIPFLAGS = 455;
-	public static final short LINESTYLE__FILLWIDTH = 456;
-	public static final short LINESTYLE__FILLHEIGHT = 457;
-	public static final short LINESTYLE__FILLDZTYPE = 458;
-	public static final short LINESTYLE__LINEWIDTH = 459;
-	public static final short LINESTYLE__LINEMITERLIMIT = 460;
-	public static final short LINESTYLE__LINESTYLE = 461;
-	public static final short LINESTYLE__LINEDASHING = 462;
-	public static final short LINESTYLE__LINEDASHSTYLE = 463;
-	public static final short LINESTYLE__LINESTARTARROWHEAD = 464;
-	public static final short LINESTYLE__LINEENDARROWHEAD = 465;
-	public static final short LINESTYLE__LINESTARTARROWWIDTH = 466;
-	public static final short LINESTYLE__LINESTARTARROWLENGTH = 467;
-	public static final short LINESTYLE__LINEENDARROWWIDTH = 468;
-	public static final short LINESTYLE__LINEENDARROWLENGTH = 469;
-	public static final short LINESTYLE__LINEJOINSTYLE = 470;
-	public static final short LINESTYLE__LINEENDCAPSTYLE = 471;
-	public static final short LINESTYLE__ARROWHEADSOK = 507;
-	public static final short LINESTYLE__ANYLINE = 508;
-	public static final short LINESTYLE__HITLINETEST = 509;
-	public static final short LINESTYLE__LINEFILLSHAPE = 510;
-	public static final short LINESTYLE__NOLINEDRAWDASH = 511;
-	public static final short LINESTYLE__NOLINEDRAWDASH_LEFT = 0x057F;
-	public static final short LINESTYLE__NOLINEDRAWDASH_TOP = 0x05BF;
-	public static final short LINESTYLE__NOLINEDRAWDASH_BOTTOM = 0x063F;
-	public static final short LINESTYLE__NOLINEDRAWDASH_RIGHT = 0x05FF;
-	public static final short SHADOWSTYLE__TYPE = 512;
-	public static final short SHADOWSTYLE__COLOR = 513;
-	public static final short SHADOWSTYLE__HIGHLIGHT = 514;
-	public static final short SHADOWSTYLE__CRMOD = 515;
-	public static final short SHADOWSTYLE__OPACITY = 516;
-	public static final short SHADOWSTYLE__OFFSETX = 517;
-	public static final short SHADOWSTYLE__OFFSETY = 518;
-	public static final short SHADOWSTYLE__SECONDOFFSETX = 519;
-	public static final short SHADOWSTYLE__SECONDOFFSETY = 520;
-	public static final short SHADOWSTYLE__SCALEXTOX = 521;
-	public static final short SHADOWSTYLE__SCALEYTOX = 522;
-	public static final short SHADOWSTYLE__SCALEXTOY = 523;
-	public static final short SHADOWSTYLE__SCALEYTOY = 524;
-	public static final short SHADOWSTYLE__PERSPECTIVEX = 525;
-	public static final short SHADOWSTYLE__PERSPECTIVEY = 526;
-	public static final short SHADOWSTYLE__WEIGHT = 527;
-	public static final short SHADOWSTYLE__ORIGINX = 528;
-	public static final short SHADOWSTYLE__ORIGINY = 529;
-	public static final short SHADOWSTYLE__SHADOW = 574;
-	public static final short SHADOWSTYLE__SHADOWOBSURED = 575;
-	public static final short PERSPECTIVE__TYPE = 576;
-	public static final short PERSPECTIVE__OFFSETX = 577;
-	public static final short PERSPECTIVE__OFFSETY = 578;
-	public static final short PERSPECTIVE__SCALEXTOX = 579;
-	public static final short PERSPECTIVE__SCALEYTOX = 580;
-	public static final short PERSPECTIVE__SCALEXTOY = 581;
-	public static final short PERSPECTIVE__SCALEYTOY = 582;
-	public static final short PERSPECTIVE__PERSPECTIVEX = 583;
-	public static final short PERSPECTIVE__PERSPECTIVEY = 584;
-	public static final short PERSPECTIVE__WEIGHT = 585;
-	public static final short PERSPECTIVE__ORIGINX = 586;
-	public static final short PERSPECTIVE__ORIGINY = 587;
-	public static final short PERSPECTIVE__PERSPECTIVEON = 639;
-	public static final short THREED__SPECULARAMOUNT = 640;
-	public static final short THREED__DIFFUSEAMOUNT = 661;
-	public static final short THREED__SHININESS = 662;
-	public static final short THREED__EDGETHICKNESS = 663;
-	public static final short THREED__EXTRUDEFORWARD = 664;
-	public static final short THREED__EXTRUDEBACKWARD = 665;
-	public static final short THREED__EXTRUDEPLANE = 666;
-	public static final short THREED__EXTRUSIONCOLOR = 667;
-	public static final short THREED__CRMOD = 648;
-	public static final short THREED__3DEFFECT = 700;
-	public static final short THREED__METALLIC = 701;
-	public static final short THREED__USEEXTRUSIONCOLOR = 702;
-	public static final short THREED__LIGHTFACE = 703;
-	public static final short THREEDSTYLE__YROTATIONANGLE = 704;
-	public static final short THREEDSTYLE__XROTATIONANGLE = 705;
-	public static final short THREEDSTYLE__ROTATIONAXISX = 706;
-	public static final short THREEDSTYLE__ROTATIONAXISY = 707;
-	public static final short THREEDSTYLE__ROTATIONAXISZ = 708;
-	public static final short THREEDSTYLE__ROTATIONANGLE = 709;
-	public static final short THREEDSTYLE__ROTATIONCENTERX = 710;
-	public static final short THREEDSTYLE__ROTATIONCENTERY = 711;
-	public static final short THREEDSTYLE__ROTATIONCENTERZ = 712;
-	public static final short THREEDSTYLE__RENDERMODE = 713;
-	public static final short THREEDSTYLE__TOLERANCE = 714;
-	public static final short THREEDSTYLE__XVIEWPOINT = 715;
-	public static final short THREEDSTYLE__YVIEWPOINT = 716;
-	public static final short THREEDSTYLE__ZVIEWPOINT = 717;
-	public static final short THREEDSTYLE__ORIGINX = 718;
-	public static final short THREEDSTYLE__ORIGINY = 719;
-	public static final short THREEDSTYLE__SKEWANGLE = 720;
-	public static final short THREEDSTYLE__SKEWAMOUNT = 721;
-	public static final short THREEDSTYLE__AMBIENTINTENSITY = 722;
-	public static final short THREEDSTYLE__KEYX = 723;
-	public static final short THREEDSTYLE__KEYY = 724;
-	public static final short THREEDSTYLE__KEYZ = 725;
-	public static final short THREEDSTYLE__KEYINTENSITY = 726;
-	public static final short THREEDSTYLE__FILLX = 727;
-	public static final short THREEDSTYLE__FILLY = 728;
-	public static final short THREEDSTYLE__FILLZ = 729;
-	public static final short THREEDSTYLE__FILLINTENSITY = 730;
-	public static final short THREEDSTYLE__CONSTRAINROTATION = 763;
-	public static final short THREEDSTYLE__ROTATIONCENTERAUTO = 764;
-	public static final short THREEDSTYLE__PARALLEL = 765;
-	public static final short THREEDSTYLE__KEYHARSH = 766;
-	public static final short THREEDSTYLE__FILLHARSH = 767;
-	public static final short SHAPE__MASTER = 769;
-	public static final short SHAPE__CONNECTORSTYLE = 771;
-	public static final short SHAPE__BLACKANDWHITESETTINGS = 772;
-	public static final short SHAPE__WMODEPUREBW = 773;
-	public static final short SHAPE__WMODEBW = 774;
-	public static final short SHAPE__OLEICON = 826;
-	public static final short SHAPE__PREFERRELATIVERESIZE = 827;
-	public static final short SHAPE__LOCKSHAPETYPE = 828;
-	public static final short SHAPE__DELETEATTACHEDOBJECT = 830;
-	public static final short SHAPE__BACKGROUNDSHAPE = 831;
-	public static final short CALLOUT__CALLOUTTYPE = 832;
-	public static final short CALLOUT__XYCALLOUTGAP = 833;
-	public static final short CALLOUT__CALLOUTANGLE = 834;
-	public static final short CALLOUT__CALLOUTDROPTYPE = 835;
-	public static final short CALLOUT__CALLOUTDROPSPECIFIED = 836;
-	public static final short CALLOUT__CALLOUTLENGTHSPECIFIED = 837;
-	public static final short CALLOUT__ISCALLOUT = 889;
-	public static final short CALLOUT__CALLOUTACCENTBAR = 890;
-	public static final short CALLOUT__CALLOUTTEXTBORDER = 891;
-	public static final short CALLOUT__CALLOUTMINUSX = 892;
-	public static final short CALLOUT__CALLOUTMINUSY = 893;
-	public static final short CALLOUT__DROPAUTO = 894;
-	public static final short CALLOUT__LENGTHSPECIFIED = 895;
-	public static final short GROUPSHAPE__SHAPENAME = 0x0380;
-	public static final short GROUPSHAPE__DESCRIPTION = 0x0381;
-    public static final short GROUPSHAPE__HYPERLINK = 0x0382;
-	public static final short GROUPSHAPE__WRAPPOLYGONVERTICES = 0x0383;
-	public static final short GROUPSHAPE__WRAPDISTLEFT = 0x0384;
-	public static final short GROUPSHAPE__WRAPDISTTOP = 0x0385;
-	public static final short GROUPSHAPE__WRAPDISTRIGHT = 0x0386;
-	public static final short GROUPSHAPE__WRAPDISTBOTTOM = 0x0387;
-    public static final short GROUPSHAPE__REGROUPID = 0x0388;
-    public static final short GROUPSHAPE__UNUSED906 = 0x038A;
-    public static final short GROUPSHAPE__TOOLTIP = 0x038D;
-    public static final short GROUPSHAPE__SCRIPT = 0x038E;
-    public static final short GROUPSHAPE__POSH = 0x038F;
-    public static final short GROUPSHAPE__POSRELH = 0x0390;
-    public static final short GROUPSHAPE__POSV = 0x0391;
-    public static final short GROUPSHAPE__POSRELV = 0x0392;
-    public static final short GROUPSHAPE__HR_PCT = 0x0393;
-    public static final short GROUPSHAPE__HR_ALIGN = 0x0394;
-    public static final short GROUPSHAPE__HR_HEIGHT = 0x0395;
-    public static final short GROUPSHAPE__HR_WIDTH = 0x0396;
-    public static final short GROUPSHAPE__SCRIPTEXT = 0x0397;
-    public static final short GROUPSHAPE__SCRIPTLANG = 0x0398;
-    public static final short GROUPSHAPE__BORDERTOPCOLOR = 0x039B;
-    public static final short GROUPSHAPE__BORDERLEFTCOLOR = 0x039C;
-    public static final short GROUPSHAPE__BORDERBOTTOMCOLOR = 0x039D;
-    public static final short GROUPSHAPE__BORDERRIGHTCOLOR = 0x039E;
-    public static final short GROUPSHAPE__TABLEPROPERTIES = 0x039F;
-    public static final short GROUPSHAPE__TABLEROWPROPERTIES = 0x03A0;
-    public static final short GROUPSHAPE__WEBBOT = 0x03A5;
-    public static final short GROUPSHAPE__METROBLOB = 0x03A9;
-    public static final short GROUPSHAPE__ZORDER = 0x03AA;
-    public static final short GROUPSHAPE__FLAGS = 0x03BF;
-	public static final short GROUPSHAPE__EDITEDWRAP = 953;
-	public static final short GROUPSHAPE__BEHINDDOCUMENT = 954;
-	public static final short GROUPSHAPE__ONDBLCLICKNOTIFY = 955;
-	public static final short GROUPSHAPE__ISBUTTON = 956;
-	public static final short GROUPSHAPE__1DADJUSTMENT = 957;
-	public static final short GROUPSHAPE__HIDDEN = 958;
-	public static final short GROUPSHAPE__PRINT = 959;
 
-	private static final Map<Short, EscherPropertyMetaData> properties = initProps();
-
-	private EscherProperties() {
-	}
-
-	private static Map<Short, EscherPropertyMetaData> initProps() {
-		Map<Short, EscherPropertyMetaData> m = new HashMap<>();
-		addProp(m, TRANSFORM__ROTATION, "transform.rotation");
-		addProp(m, PROTECTION__LOCKROTATION, "protection.lockrotation");
-		addProp(m, PROTECTION__LOCKASPECTRATIO, "protection.lockaspectratio");
-		addProp(m, PROTECTION__LOCKPOSITION, "protection.lockposition");
-		addProp(m, PROTECTION__LOCKAGAINSTSELECT, "protection.lockagainstselect");
-		addProp(m, PROTECTION__LOCKCROPPING, "protection.lockcropping");
-		addProp(m, PROTECTION__LOCKVERTICES, "protection.lockvertices");
-		addProp(m, PROTECTION__LOCKTEXT, "protection.locktext");
-		addProp(m, PROTECTION__LOCKADJUSTHANDLES, "protection.lockadjusthandles");
-		addProp(m, PROTECTION__LOCKAGAINSTGROUPING, "protection.lockagainstgrouping", EscherPropertyMetaData.TYPE_BOOLEAN);
-		addProp(m, TEXT__TEXTID, "text.textid");
-		addProp(m, TEXT__TEXTLEFT, "text.textleft");
-		addProp(m, TEXT__TEXTTOP, "text.texttop");
-		addProp(m, TEXT__TEXTRIGHT, "text.textright");
-		addProp(m, TEXT__TEXTBOTTOM, "text.textbottom");
-		addProp(m, TEXT__WRAPTEXT, "text.wraptext");
-		addProp(m, TEXT__SCALETEXT, "text.scaletext");
-		addProp(m, TEXT__ANCHORTEXT, "text.anchortext");
-		addProp(m, TEXT__TEXTFLOW, "text.textflow");
-		addProp(m, TEXT__FONTROTATION, "text.fontrotation");
-		addProp(m, TEXT__IDOFNEXTSHAPE, "text.idofnextshape");
-		addProp(m, TEXT__BIDIR, "text.bidir");
-		addProp(m, TEXT__SINGLECLICKSELECTS, "text.singleclickselects");
-		addProp(m, TEXT__USEHOSTMARGINS, "text.usehostmargins");
-		addProp(m, TEXT__ROTATETEXTWITHSHAPE, "text.rotatetextwithshape");
-		addProp(m, TEXT__SIZESHAPETOFITTEXT, "text.sizeshapetofittext");
-		addProp(m, TEXT__SIZE_TEXT_TO_FIT_SHAPE, "text.sizetexttofitshape", EscherPropertyMetaData.TYPE_BOOLEAN);
-		addProp(m, GEOTEXT__UNICODE, "geotext.unicode");
-		addProp(m, GEOTEXT__RTFTEXT, "geotext.rtftext");
-		addProp(m, GEOTEXT__ALIGNMENTONCURVE, "geotext.alignmentoncurve");
-		addProp(m, GEOTEXT__DEFAULTPOINTSIZE, "geotext.defaultpointsize");
-		addProp(m, GEOTEXT__TEXTSPACING, "geotext.textspacing");
-		addProp(m, GEOTEXT__FONTFAMILYNAME, "geotext.fontfamilyname");
-		addProp(m, GEOTEXT__REVERSEROWORDER, "geotext.reverseroworder");
-		addProp(m, GEOTEXT__HASTEXTEFFECT, "geotext.hastexteffect");
-		addProp(m, GEOTEXT__ROTATECHARACTERS, "geotext.rotatecharacters");
-		addProp(m, GEOTEXT__KERNCHARACTERS, "geotext.kerncharacters");
-		addProp(m, GEOTEXT__TIGHTORTRACK, "geotext.tightortrack");
-		addProp(m, GEOTEXT__STRETCHTOFITSHAPE, "geotext.stretchtofitshape");
-		addProp(m, GEOTEXT__CHARBOUNDINGBOX, "geotext.charboundingbox");
-		addProp(m, GEOTEXT__SCALETEXTONPATH, "geotext.scaletextonpath");
-		addProp(m, GEOTEXT__STRETCHCHARHEIGHT, "geotext.stretchcharheight");
-		addProp(m, GEOTEXT__NOMEASUREALONGPATH, "geotext.nomeasurealongpath");
-		addProp(m, GEOTEXT__BOLDFONT, "geotext.boldfont");
-		addProp(m, GEOTEXT__ITALICFONT, "geotext.italicfont");
-		addProp(m, GEOTEXT__UNDERLINEFONT, "geotext.underlinefont");
-		addProp(m, GEOTEXT__SHADOWFONT, "geotext.shadowfont");
-		addProp(m, GEOTEXT__SMALLCAPSFONT, "geotext.smallcapsfont");
-		addProp(m, GEOTEXT__STRIKETHROUGHFONT, "geotext.strikethroughfont");
-		addProp(m, BLIP__CROPFROMTOP, "blip.cropfromtop");
-		addProp(m, BLIP__CROPFROMBOTTOM, "blip.cropfrombottom");
-		addProp(m, BLIP__CROPFROMLEFT, "blip.cropfromleft");
-		addProp(m, BLIP__CROPFROMRIGHT, "blip.cropfromright");
-		addProp(m, BLIP__BLIPTODISPLAY, "blip.bliptodisplay");
-		addProp(m, BLIP__BLIPFILENAME, "blip.blipfilename");
-		addProp(m, BLIP__BLIPFLAGS, "blip.blipflags");
-		addProp(m, BLIP__TRANSPARENTCOLOR, "blip.transparentcolor");
-		addProp(m, BLIP__CONTRASTSETTING, "blip.contrastsetting");
-		addProp(m, BLIP__BRIGHTNESSSETTING, "blip.brightnesssetting");
-		addProp(m, BLIP__GAMMA, "blip.gamma");
-		addProp(m, BLIP__PICTUREID, "blip.pictureid");
-		addProp(m, BLIP__DOUBLEMOD, "blip.doublemod");
-		addProp(m, BLIP__PICTUREFILLMOD, "blip.picturefillmod");
-		addProp(m, BLIP__PICTURELINE, "blip.pictureline");
-		addProp(m, BLIP__PRINTBLIP, "blip.printblip");
-		addProp(m, BLIP__PRINTBLIPFILENAME, "blip.printblipfilename");
-		addProp(m, BLIP__PRINTFLAGS, "blip.printflags");
-		addProp(m, BLIP__NOHITTESTPICTURE, "blip.nohittestpicture");
-		addProp(m, BLIP__PICTUREGRAY, "blip.picturegray");
-		addProp(m, BLIP__PICTUREBILEVEL, "blip.picturebilevel");
-		addProp(m, BLIP__PICTUREACTIVE, "blip.pictureactive");
-		addProp(m, GEOMETRY__LEFT, "geometry.left");
-		addProp(m, GEOMETRY__TOP, "geometry.top");
-		addProp(m, GEOMETRY__RIGHT, "geometry.right");
-		addProp(m, GEOMETRY__BOTTOM, "geometry.bottom");
-		addProp(m, GEOMETRY__SHAPEPATH, "geometry.shapepath", EscherPropertyMetaData.TYPE_SHAPEPATH);
-		addProp(m, GEOMETRY__VERTICES, "geometry.vertices", EscherPropertyMetaData.TYPE_ARRAY);
-		addProp(m, GEOMETRY__SEGMENTINFO, "geometry.segmentinfo", EscherPropertyMetaData.TYPE_ARRAY);
-		addProp(m, GEOMETRY__ADJUSTVALUE, "geometry.adjustvalue");
-		addProp(m, GEOMETRY__ADJUST2VALUE, "geometry.adjust2value");
-		addProp(m, GEOMETRY__ADJUST3VALUE, "geometry.adjust3value");
-		addProp(m, GEOMETRY__ADJUST4VALUE, "geometry.adjust4value");
-		addProp(m, GEOMETRY__ADJUST5VALUE, "geometry.adjust5value");
-		addProp(m, GEOMETRY__ADJUST6VALUE, "geometry.adjust6value");
-		addProp(m, GEOMETRY__ADJUST7VALUE, "geometry.adjust7value");
-		addProp(m, GEOMETRY__ADJUST8VALUE, "geometry.adjust8value");
-		addProp(m, GEOMETRY__ADJUST9VALUE, "geometry.adjust9value");
-		addProp(m, GEOMETRY__ADJUST10VALUE, "geometry.adjust10value");
-		addProp(m, GEOMETRY__PCONNECTIONSITES, "geometry.pConnectionSites");
-		addProp(m, GEOMETRY__PCONNECTIONSITESDIR, "geometry.pConnectionSitesDir");
-		addProp(m, GEOMETRY__XLIMO, "geometry.xLimo");
-		addProp(m, GEOMETRY__YLIMO, "geometry.yLimo");
-		addProp(m, GEOMETRY__PADJUSTHANDLES, "geometry.pAdjustHandles");
-		addProp(m, GEOMETRY__PGUIDES, "geometry.pGuides");
-		addProp(m, GEOMETRY__PINSCRIBE, "geometry.pInscribe");
-		addProp(m, GEOMETRY__CXK, "geometry.cxk");
-		addProp(m, GEOMETRY__PFRAGMENTS, "geometry.pFragments");
-		addProp(m, GEOMETRY__SHADOWok, "geometry.shadowOK");
-		addProp(m, GEOMETRY__3DOK, "geometry.3dok");
-		addProp(m, GEOMETRY__LINEOK, "geometry.lineok");
-		addProp(m, GEOMETRY__GEOTEXTOK, "geometry.geotextok");
-		addProp(m, GEOMETRY__FILLSHADESHAPEOK, "geometry.fillshadeshapeok");
-		addProp(m, GEOMETRY__FILLOK, "geometry.fillok", EscherPropertyMetaData.TYPE_BOOLEAN);
-		addProp(m, FILL__FILLTYPE, "fill.filltype");
-		addProp(m, FILL__FILLCOLOR, "fill.fillcolor", EscherPropertyMetaData.TYPE_RGB);
-		addProp(m, FILL__FILLOPACITY, "fill.fillopacity");
-		addProp(m, FILL__FILLBACKCOLOR, "fill.fillbackcolor", EscherPropertyMetaData.TYPE_RGB);
-		addProp(m, FILL__BACKOPACITY, "fill.backopacity");
-		addProp(m, FILL__CRMOD, "fill.crmod");
-		addProp(m, FILL__PATTERNTEXTURE, "fill.patterntexture");
-		addProp(m, FILL__BLIPFILENAME, "fill.blipfilename");
-		addProp(m, FILL__BLIPFLAGS, "fill.blipflags");
-		addProp(m, FILL__WIDTH, "fill.width");
-		addProp(m, FILL__HEIGHT, "fill.height");
-		addProp(m, FILL__ANGLE, "fill.angle");
-		addProp(m, FILL__FOCUS, "fill.focus");
-		addProp(m, FILL__TOLEFT, "fill.toleft");
-		addProp(m, FILL__TOTOP, "fill.totop");
-		addProp(m, FILL__TORIGHT, "fill.toright");
-		addProp(m, FILL__TOBOTTOM, "fill.tobottom");
-		addProp(m, FILL__RECTLEFT, "fill.rectleft");
-		addProp(m, FILL__RECTTOP, "fill.recttop");
-		addProp(m, FILL__RECTRIGHT, "fill.rectright");
-		addProp(m, FILL__RECTBOTTOM, "fill.rectbottom");
-		addProp(m, FILL__DZTYPE, "fill.dztype");
-		addProp(m, FILL__SHADEPRESET, "fill.shadepreset");
-		addProp(m, FILL__SHADECOLORS, "fill.shadecolors", EscherPropertyMetaData.TYPE_ARRAY);
-		addProp(m, FILL__ORIGINX, "fill.originx");
-		addProp(m, FILL__ORIGINY, "fill.originy");
-		addProp(m, FILL__SHAPEORIGINX, "fill.shapeoriginx");
-		addProp(m, FILL__SHAPEORIGINY, "fill.shapeoriginy");
-		addProp(m, FILL__SHADETYPE, "fill.shadetype");
-		addProp(m, FILL__FILLED, "fill.filled");
-		addProp(m, FILL__HITTESTFILL, "fill.hittestfill");
-		addProp(m, FILL__SHAPE, "fill.shape");
-		addProp(m, FILL__USERECT, "fill.userect");
-		addProp(m, FILL__NOFILLHITTEST, "fill.nofillhittest", EscherPropertyMetaData.TYPE_BOOLEAN);
-		addProp(m, LINESTYLE__COLOR, "linestyle.color", EscherPropertyMetaData.TYPE_RGB);
-		addProp(m, LINESTYLE__OPACITY, "linestyle.opacity");
-		addProp(m, LINESTYLE__BACKCOLOR, "linestyle.backcolor", EscherPropertyMetaData.TYPE_RGB);
-		addProp(m, LINESTYLE__CRMOD, "linestyle.crmod");
-		addProp(m, LINESTYLE__LINETYPE, "linestyle.linetype");
-		addProp(m, LINESTYLE__FILLBLIP, "linestyle.fillblip");
-		addProp(m, LINESTYLE__FILLBLIPNAME, "linestyle.fillblipname");
-		addProp(m, LINESTYLE__FILLBLIPFLAGS, "linestyle.fillblipflags");
-		addProp(m, LINESTYLE__FILLWIDTH, "linestyle.fillwidth");
-		addProp(m, LINESTYLE__FILLHEIGHT, "linestyle.fillheight");
-		addProp(m, LINESTYLE__FILLDZTYPE, "linestyle.filldztype");
-		addProp(m, LINESTYLE__LINEWIDTH, "linestyle.linewidth");
-		addProp(m, LINESTYLE__LINEMITERLIMIT, "linestyle.linemiterlimit");
-		addProp(m, LINESTYLE__LINESTYLE, "linestyle.linestyle");
-		addProp(m, LINESTYLE__LINEDASHING, "linestyle.linedashing");
-		addProp(m, LINESTYLE__LINEDASHSTYLE, "linestyle.linedashstyle", EscherPropertyMetaData.TYPE_ARRAY);
-		addProp(m, LINESTYLE__LINESTARTARROWHEAD, "linestyle.linestartarrowhead");
-		addProp(m, LINESTYLE__LINEENDARROWHEAD, "linestyle.lineendarrowhead");
-		addProp(m, LINESTYLE__LINESTARTARROWWIDTH, "linestyle.linestartarrowwidth");
-		addProp(m, LINESTYLE__LINESTARTARROWLENGTH, "linestyle.linestartarrowlength");
-		addProp(m, LINESTYLE__LINEENDARROWWIDTH, "linestyle.lineendarrowwidth");
-		addProp(m, LINESTYLE__LINEENDARROWLENGTH, "linestyle.lineendarrowlength");
-		addProp(m, LINESTYLE__LINEJOINSTYLE, "linestyle.linejoinstyle");
-		addProp(m, LINESTYLE__LINEENDCAPSTYLE, "linestyle.lineendcapstyle");
-		addProp(m, LINESTYLE__ARROWHEADSOK, "linestyle.arrowheadsok");
-		addProp(m, LINESTYLE__ANYLINE, "linestyle.anyline");
-		addProp(m, LINESTYLE__HITLINETEST, "linestyle.hitlinetest");
-		addProp(m, LINESTYLE__LINEFILLSHAPE, "linestyle.linefillshape");
-		addProp(m, LINESTYLE__NOLINEDRAWDASH, "linestyle.nolinedrawdash", EscherPropertyMetaData.TYPE_BOOLEAN);
-        addProp(m, LINESTYLE__NOLINEDRAWDASH_LEFT, "linestyle.nolinedrawdash.left", EscherPropertyMetaData.TYPE_BOOLEAN);
-        addProp(m, LINESTYLE__NOLINEDRAWDASH_TOP, "linestyle.nolinedrawdash.top", EscherPropertyMetaData.TYPE_BOOLEAN);
-        addProp(m, LINESTYLE__NOLINEDRAWDASH_BOTTOM, "linestyle.nolinedrawdash.bottom", EscherPropertyMetaData.TYPE_BOOLEAN);
-        addProp(m, LINESTYLE__NOLINEDRAWDASH_RIGHT, "linestyle.nolinedrawdash.right", EscherPropertyMetaData.TYPE_BOOLEAN);
-		addProp(m, SHADOWSTYLE__TYPE, "shadowstyle.type");
-		addProp(m, SHADOWSTYLE__COLOR, "shadowstyle.color", EscherPropertyMetaData.TYPE_RGB);
-		addProp(m, SHADOWSTYLE__HIGHLIGHT, "shadowstyle.highlight");
-		addProp(m, SHADOWSTYLE__CRMOD, "shadowstyle.crmod");
-		addProp(m, SHADOWSTYLE__OPACITY, "shadowstyle.opacity");
-		addProp(m, SHADOWSTYLE__OFFSETX, "shadowstyle.offsetx");
-		addProp(m, SHADOWSTYLE__OFFSETY, "shadowstyle.offsety");
-		addProp(m, SHADOWSTYLE__SECONDOFFSETX, "shadowstyle.secondoffsetx");
-		addProp(m, SHADOWSTYLE__SECONDOFFSETY, "shadowstyle.secondoffsety");
-		addProp(m, SHADOWSTYLE__SCALEXTOX, "shadowstyle.scalextox");
-		addProp(m, SHADOWSTYLE__SCALEYTOX, "shadowstyle.scaleytox");
-		addProp(m, SHADOWSTYLE__SCALEXTOY, "shadowstyle.scalextoy");
-		addProp(m, SHADOWSTYLE__SCALEYTOY, "shadowstyle.scaleytoy");
-		addProp(m, SHADOWSTYLE__PERSPECTIVEX, "shadowstyle.perspectivex");
-		addProp(m, SHADOWSTYLE__PERSPECTIVEY, "shadowstyle.perspectivey");
-		addProp(m, SHADOWSTYLE__WEIGHT, "shadowstyle.weight");
-		addProp(m, SHADOWSTYLE__ORIGINX, "shadowstyle.originx");
-		addProp(m, SHADOWSTYLE__ORIGINY, "shadowstyle.originy");
-		addProp(m, SHADOWSTYLE__SHADOW, "shadowstyle.shadow");
-		addProp(m, SHADOWSTYLE__SHADOWOBSURED, "shadowstyle.shadowobscured");
-		addProp(m, PERSPECTIVE__TYPE, "perspective.type");
-		addProp(m, PERSPECTIVE__OFFSETX, "perspective.offsetx");
-		addProp(m, PERSPECTIVE__OFFSETY, "perspective.offsety");
-		addProp(m, PERSPECTIVE__SCALEXTOX, "perspective.scalextox");
-		addProp(m, PERSPECTIVE__SCALEYTOX, "perspective.scaleytox");
-		addProp(m, PERSPECTIVE__SCALEXTOY, "perspective.scalextoy");
-		addProp(m, PERSPECTIVE__SCALEYTOY, "perspective.scaleytoy");
-		addProp(m, PERSPECTIVE__PERSPECTIVEX, "perspective.perspectivex");
-		addProp(m, PERSPECTIVE__PERSPECTIVEY, "perspective.perspectivey");
-		addProp(m, PERSPECTIVE__WEIGHT, "perspective.weight");
-		addProp(m, PERSPECTIVE__ORIGINX, "perspective.originx");
-		addProp(m, PERSPECTIVE__ORIGINY, "perspective.originy");
-		addProp(m, PERSPECTIVE__PERSPECTIVEON, "perspective.perspectiveon");
-		addProp(m, THREED__SPECULARAMOUNT, "3d.specularamount");
-		addProp(m, THREED__DIFFUSEAMOUNT, "3d.diffuseamount");
-		addProp(m, THREED__SHININESS, "3d.shininess");
-		addProp(m, THREED__EDGETHICKNESS, "3d.edgethickness");
-		addProp(m, THREED__EXTRUDEFORWARD, "3d.extrudeforward");
-		addProp(m, THREED__EXTRUDEBACKWARD, "3d.extrudebackward");
-		addProp(m, THREED__EXTRUDEPLANE, "3d.extrudeplane");
-		addProp(m, THREED__EXTRUSIONCOLOR, "3d.extrusioncolor", EscherPropertyMetaData.TYPE_RGB);
-		addProp(m, THREED__CRMOD, "3d.crmod");
-		addProp(m, THREED__3DEFFECT, "3d.3deffect");
-		addProp(m, THREED__METALLIC, "3d.metallic");
-		addProp(m, THREED__USEEXTRUSIONCOLOR, "3d.useextrusioncolor", EscherPropertyMetaData.TYPE_RGB);
-		addProp(m, THREED__LIGHTFACE, "3d.lightface");
-		addProp(m, THREEDSTYLE__YROTATIONANGLE, "3dstyle.yrotationangle");
-		addProp(m, THREEDSTYLE__XROTATIONANGLE, "3dstyle.xrotationangle");
-		addProp(m, THREEDSTYLE__ROTATIONAXISX, "3dstyle.rotationaxisx");
-		addProp(m, THREEDSTYLE__ROTATIONAXISY, "3dstyle.rotationaxisy");
-		addProp(m, THREEDSTYLE__ROTATIONAXISZ, "3dstyle.rotationaxisz");
-		addProp(m, THREEDSTYLE__ROTATIONANGLE, "3dstyle.rotationangle");
-		addProp(m, THREEDSTYLE__ROTATIONCENTERX, "3dstyle.rotationcenterx");
-		addProp(m, THREEDSTYLE__ROTATIONCENTERY, "3dstyle.rotationcentery");
-		addProp(m, THREEDSTYLE__ROTATIONCENTERZ, "3dstyle.rotationcenterz");
-		addProp(m, THREEDSTYLE__RENDERMODE, "3dstyle.rendermode");
-		addProp(m, THREEDSTYLE__TOLERANCE, "3dstyle.tolerance");
-		addProp(m, THREEDSTYLE__XVIEWPOINT, "3dstyle.xviewpoint");
-		addProp(m, THREEDSTYLE__YVIEWPOINT, "3dstyle.yviewpoint");
-		addProp(m, THREEDSTYLE__ZVIEWPOINT, "3dstyle.zviewpoint");
-		addProp(m, THREEDSTYLE__ORIGINX, "3dstyle.originx");
-		addProp(m, THREEDSTYLE__ORIGINY, "3dstyle.originy");
-		addProp(m, THREEDSTYLE__SKEWANGLE, "3dstyle.skewangle");
-		addProp(m, THREEDSTYLE__SKEWAMOUNT, "3dstyle.skewamount");
-		addProp(m, THREEDSTYLE__AMBIENTINTENSITY, "3dstyle.ambientintensity");
-		addProp(m, THREEDSTYLE__KEYX, "3dstyle.keyx");
-		addProp(m, THREEDSTYLE__KEYY, "3dstyle.keyy");
-		addProp(m, THREEDSTYLE__KEYZ, "3dstyle.keyz");
-		addProp(m, THREEDSTYLE__KEYINTENSITY, "3dstyle.keyintensity");
-		addProp(m, THREEDSTYLE__FILLX, "3dstyle.fillx");
-		addProp(m, THREEDSTYLE__FILLY, "3dstyle.filly");
-		addProp(m, THREEDSTYLE__FILLZ, "3dstyle.fillz");
-		addProp(m, THREEDSTYLE__FILLINTENSITY, "3dstyle.fillintensity");
-		addProp(m, THREEDSTYLE__CONSTRAINROTATION, "3dstyle.constrainrotation");
-		addProp(m, THREEDSTYLE__ROTATIONCENTERAUTO, "3dstyle.rotationcenterauto");
-		addProp(m, THREEDSTYLE__PARALLEL, "3dstyle.parallel");
-		addProp(m, THREEDSTYLE__KEYHARSH, "3dstyle.keyharsh");
-		addProp(m, THREEDSTYLE__FILLHARSH, "3dstyle.fillharsh");
-		addProp(m, SHAPE__MASTER, "shape.master");
-		addProp(m, SHAPE__CONNECTORSTYLE, "shape.connectorstyle");
-		addProp(m, SHAPE__BLACKANDWHITESETTINGS, "shape.blackandwhitesettings");
-		addProp(m, SHAPE__WMODEPUREBW, "shape.wmodepurebw");
-		addProp(m, SHAPE__WMODEBW, "shape.wmodebw");
-		addProp(m, SHAPE__OLEICON, "shape.oleicon");
-		addProp(m, SHAPE__PREFERRELATIVERESIZE, "shape.preferrelativeresize");
-		addProp(m, SHAPE__LOCKSHAPETYPE, "shape.lockshapetype");
-		addProp(m, SHAPE__DELETEATTACHEDOBJECT, "shape.deleteattachedobject");
-		addProp(m, SHAPE__BACKGROUNDSHAPE, "shape.backgroundshape");
-		addProp(m, CALLOUT__CALLOUTTYPE, "callout.callouttype");
-		addProp(m, CALLOUT__XYCALLOUTGAP, "callout.xycalloutgap");
-		addProp(m, CALLOUT__CALLOUTANGLE, "callout.calloutangle");
-		addProp(m, CALLOUT__CALLOUTDROPTYPE, "callout.calloutdroptype");
-		addProp(m, CALLOUT__CALLOUTDROPSPECIFIED, "callout.calloutdropspecified");
-		addProp(m, CALLOUT__CALLOUTLENGTHSPECIFIED, "callout.calloutlengthspecified");
-		addProp(m, CALLOUT__ISCALLOUT, "callout.iscallout");
-		addProp(m, CALLOUT__CALLOUTACCENTBAR, "callout.calloutaccentbar");
-		addProp(m, CALLOUT__CALLOUTTEXTBORDER, "callout.callouttextborder");
-		addProp(m, CALLOUT__CALLOUTMINUSX, "callout.calloutminusx");
-		addProp(m, CALLOUT__CALLOUTMINUSY, "callout.calloutminusy");
-		addProp(m, CALLOUT__DROPAUTO, "callout.dropauto");
-		addProp(m, CALLOUT__LENGTHSPECIFIED, "callout.lengthspecified");
-		addProp(m, GROUPSHAPE__SHAPENAME, "groupshape.shapename");
-		addProp(m, GROUPSHAPE__DESCRIPTION, "groupshape.description");
-		addProp(m, GROUPSHAPE__HYPERLINK, "groupshape.hyperlink");
-		addProp(m, GROUPSHAPE__WRAPPOLYGONVERTICES, "groupshape.wrappolygonvertices", EscherPropertyMetaData.TYPE_ARRAY);
-		addProp(m, GROUPSHAPE__WRAPDISTLEFT, "groupshape.wrapdistleft");
-		addProp(m, GROUPSHAPE__WRAPDISTTOP, "groupshape.wrapdisttop");
-		addProp(m, GROUPSHAPE__WRAPDISTRIGHT, "groupshape.wrapdistright");
-		addProp(m, GROUPSHAPE__WRAPDISTBOTTOM, "groupshape.wrapdistbottom");
-		addProp(m, GROUPSHAPE__REGROUPID, "groupshape.regroupid");
-        addProp( m, GROUPSHAPE__UNUSED906, "unused906" ); // 0x038A;
-        addProp( m, GROUPSHAPE__TOOLTIP, "groupshape.wzTooltip" ); // 0x038D;
-        addProp( m, GROUPSHAPE__SCRIPT, "groupshape.wzScript" ); // 0x038E;
-        addProp( m, GROUPSHAPE__POSH, "groupshape.posh" ); // 0x038F;
-        addProp( m, GROUPSHAPE__POSRELH, "groupshape.posrelh" ); // 0x0390;
-        addProp( m, GROUPSHAPE__POSV, "groupshape.posv" ); // 0x0391;
-        addProp( m, GROUPSHAPE__POSRELV, "groupshape.posrelv" ); // 0x0392;
-        addProp( m, GROUPSHAPE__HR_PCT, "groupshape.pctHR" ); // 0x0393;
-        addProp( m, GROUPSHAPE__HR_ALIGN, "groupshape.alignHR" ); // 0x0394;
-        addProp( m, GROUPSHAPE__HR_HEIGHT, "groupshape.dxHeightHR" ); // 0x0395;
-        addProp( m, GROUPSHAPE__HR_WIDTH, "groupshape.dxWidthHR" ); // 0x0396;
-        addProp( m, GROUPSHAPE__SCRIPTEXT, "groupshape.wzScriptExtAttr" ); // 0x0397;
-        addProp( m, GROUPSHAPE__SCRIPTLANG, "groupshape.scriptLang" ); // 0x0398;
-        addProp( m, GROUPSHAPE__BORDERTOPCOLOR, "groupshape.borderTopColor" ); // 0x039B;
-        addProp( m, GROUPSHAPE__BORDERLEFTCOLOR, "groupshape.borderLeftColor" ); // 0x039C;
-        addProp( m, GROUPSHAPE__BORDERBOTTOMCOLOR, "groupshape.borderBottomColor" ); // 0x039D;
-        addProp( m, GROUPSHAPE__BORDERRIGHTCOLOR, "groupshape.borderRightColor" ); // 0x039E;
-        addProp( m, GROUPSHAPE__TABLEPROPERTIES, "groupshape.tableProperties" ); // 0x039F;
-        addProp( m, GROUPSHAPE__TABLEROWPROPERTIES, "groupshape.tableRowProperties", EscherPropertyMetaData.TYPE_ARRAY ); // 0x03A0;
-        addProp( m, GROUPSHAPE__WEBBOT, "groupshape.wzWebBot" ); // 0x03A5;
-        addProp( m, GROUPSHAPE__METROBLOB, "groupshape.metroBlob" ); // 0x03A9;
-        addProp( m, GROUPSHAPE__ZORDER, "groupshape.dhgt" ); // 0x03AA;
-        addProp( m, GROUPSHAPE__FLAGS, "groupshape.GroupShapeBooleanProperties" ); // 0x03BF;
-
-		addProp(m, GROUPSHAPE__EDITEDWRAP, "groupshape.editedwrap");
-		addProp(m, GROUPSHAPE__BEHINDDOCUMENT, "groupshape.behinddocument");
-		addProp(m, GROUPSHAPE__ONDBLCLICKNOTIFY, "groupshape.ondblclicknotify");
-		addProp(m, GROUPSHAPE__ISBUTTON, "groupshape.isbutton");
-		addProp(m, GROUPSHAPE__1DADJUSTMENT, "groupshape.1dadjustment");
-		addProp(m, GROUPSHAPE__HIDDEN, "groupshape.hidden");
-		addProp(m, GROUPSHAPE__PRINT, "groupshape.print", EscherPropertyMetaData.TYPE_BOOLEAN);
-		return m;
-	}
-
-	private static void addProp(Map<Short, EscherPropertyMetaData> m, int s, String propName) {
-		m.put((short) s, new EscherPropertyMetaData(propName));
-	}
-
-	private static void addProp(Map<Short, EscherPropertyMetaData> m, int s, String propName, byte type) {
-		m.put((short) s, new EscherPropertyMetaData(propName, type));
-	}
-
-	public static String getPropertyName(short propertyId) {
-		EscherPropertyMetaData o = properties.get(propertyId);
-		return o == null ? "unknown" : o.getDescription();
+	static String getPropertyName(short propertyId) {
+		return EscherPropertyTypes.forPropertyID(propertyId).propName;
 	}
 
-	public static byte getPropertyType(short propertyId) {
-		EscherPropertyMetaData escherPropertyMetaData = properties.get(propertyId);
-		return escherPropertyMetaData == null ? 0 : escherPropertyMetaData.getType();
+	static byte getPropertyType(short propertyId) {
+		return (byte)EscherPropertyTypes.forPropertyID(propertyId).holder.ordinal();
 	}
 }

Modified: poi/trunk/src/java/org/apache/poi/ddf/EscherProperty.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/ddf/EscherProperty.java?rev=1868352&r1=1868351&r2=1868352&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/ddf/EscherProperty.java (original)
+++ poi/trunk/src/java/org/apache/poi/ddf/EscherProperty.java Sat Oct 12 16:32:53 2019
@@ -17,13 +17,28 @@
 
 package org.apache.poi.ddf;
 
+import java.util.List;
+import java.util.Map;
+import java.util.function.Supplier;
+
+import org.apache.poi.common.usermodel.GenericRecord;
+import org.apache.poi.util.GenericRecordJsonWriter;
+import org.apache.poi.util.GenericRecordUtil;
+import org.apache.poi.util.GenericRecordXmlWriter;
+
 /**
  * This is the abstract base class for all escher properties.
  *
  * @see EscherOptRecord
  */
-public abstract class EscherProperty {
-    private short  _id;
+public abstract class EscherProperty implements GenericRecord {
+    private final short id;
+
+    static final int IS_BLIP = 0x4000;
+    static final int IS_COMPLEX = 0x8000;
+
+    private static final int[] FLAG_MASK = { IS_BLIP, IS_COMPLEX };
+    private static final String[] FLAG_NAMES = { "IS_BLIP", "IS_COMPLEX" };
 
     /**
      * The id is distinct from the actual property number.  The id includes the property number the blip id
@@ -31,8 +46,8 @@ public abstract class EscherProperty {
      * 
      * @param id the combined id
      */
-    public EscherProperty(short id) {
-        _id   = id;
+    protected EscherProperty(short id) {
+        this.id  = id;
     }
 
     /**
@@ -43,30 +58,44 @@ public abstract class EscherProperty {
      * @param isComplex true, if this is a complex property
      * @param isBlipId true, if this property is a blip id
      */
-    public EscherProperty(short propertyNumber, boolean isComplex, boolean isBlipId) {
-        _id   = (short)(propertyNumber +
-                (isComplex ? 0x8000 : 0x0) +
-                (isBlipId ? 0x4000 : 0x0));
+    protected EscherProperty(short propertyNumber, boolean isComplex, boolean isBlipId) {
+        this((short)(propertyNumber |
+            (isComplex ? IS_COMPLEX : 0x0) |
+            (isBlipId ? IS_BLIP : 0x0)));
+    }
+
+    /**
+     * Constructs a new escher property.  The three parameters are combined to form a property
+     * id.
+     *
+     * @param propertyNumber the property number
+     * @param isComplex true, if this is a complex property
+     * @param isBlipId true, if this property is a blip id
+     */
+    protected EscherProperty(EscherPropertyTypes type, boolean isComplex, boolean isBlipId) {
+        this((short)(type.propNumber |
+            (isComplex ? IS_COMPLEX : 0) |
+            (isBlipId ? IS_BLIP : 0)));
     }
 
     public short getId() {
-        return _id;
+        return id;
     }
 
     public short getPropertyNumber() {
-        return (short) (_id & (short) 0x3FFF);
+        return (short) (id & 0x3FFF);
     }
 
     public boolean isComplex() {
-        return (_id & (short) 0x8000) != 0;
+        return (id & IS_COMPLEX) != 0;
     }
 
     public boolean isBlipId() {
-        return (_id & (short) 0x4000) != 0;
+        return (id & IS_BLIP) != 0;
     }
 
     public String getName() {
-        return EscherProperties.getPropertyName(getPropertyNumber());
+        return EscherPropertyTypes.forPropertyID(getPropertyNumber()).propName;
     }
 
     /**
@@ -79,13 +108,6 @@ public abstract class EscherProperty {
         return 6;
     }
     
-    public String toXml(String tab){
-        StringBuilder builder = new StringBuilder();
-        builder.append(tab).append("<").append(getClass().getSimpleName()).append(" id=\"").append(getId()).append("\" name=\"").append(getName()).append("\" blipId=\"")
-                .append(isBlipId()).append("\"/>\n");
-        return builder.toString();
-    }
-
     /**
      * Escher properties consist of a simple fixed length part and a complex variable length part.
      * The fixed length part is serialized first.
@@ -110,5 +132,32 @@ public abstract class EscherProperty {
 
 
     @Override
-    abstract public String toString();
+    public final String toString() {
+        return GenericRecordJsonWriter.marshal(this);
+    }
+
+    public final String toXml(String tab){
+        return GenericRecordXmlWriter.marshal(this);
+    }
+
+    @Override
+    public Map<String, Supplier<?>> getGenericProperties() {
+        return GenericRecordUtil.getGenericProperties(
+            "id", this::getId,
+            "name", this::getName,
+            "propertyNumber", this::getPropertyNumber,
+            "propertySize", this::getPropertySize,
+            "flags", GenericRecordUtil.getBitsAsString(this::getId, FLAG_MASK, FLAG_NAMES)
+        );
+    }
+
+    @Override
+    public List<? extends GenericRecord> getGenericChildren() {
+        return null;
+    }
+
+    @Override
+    public EscherPropertyTypes getGenericRecordType() {
+        return EscherPropertyTypes.forPropertyID(id);
+    }
 }
\ No newline at end of file

Modified: poi/trunk/src/java/org/apache/poi/ddf/EscherPropertyFactory.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/ddf/EscherPropertyFactory.java?rev=1868352&r1=1868351&r2=1868352&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/ddf/EscherPropertyFactory.java (original)
+++ poi/trunk/src/java/org/apache/poi/ddf/EscherPropertyFactory.java Sat Oct 12 16:32:53 2019
@@ -19,8 +19,8 @@ package org.apache.poi.ddf;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.function.BiFunction;
 
-import org.apache.poi.util.IOUtils;
 import org.apache.poi.util.LittleEndian;
 
 /**
@@ -28,9 +28,6 @@ import org.apache.poi.util.LittleEndian;
  */
 public final class EscherPropertyFactory {
 
-    //arbitrarily selected; may need to increase
-    private static final int MAX_RECORD_LENGTH = 100_000_000;
-
     /**
      * Create new properties from a byte array.
      *
@@ -45,57 +42,52 @@ public final class EscherPropertyFactory
         int pos = offset;
 
         for (int i = 0; i < numProperties; i++) {
-            short propId;
-            int propData;
-            propId = LittleEndian.getShort( data, pos );
-            propData = LittleEndian.getInt( data, pos + 2 );
-            short propNumber = (short) ( propId & (short) 0x3FFF );
-            boolean isComplex = ( propId & (short) 0x8000 ) != 0;
-            // boolean isBlipId = ( propId & (short) 0x4000 ) != 0;
-
-            byte propertyType = EscherProperties.getPropertyType(propNumber);
-            EscherProperty ep;
-            switch (propertyType) {
-                case EscherPropertyMetaData.TYPE_BOOLEAN:
-                    ep = new EscherBoolProperty( propId, propData );
+            final short propId = LittleEndian.getShort( data, pos );
+            final int propData = LittleEndian.getInt( data, pos + 2 );
+            final boolean isComplex = ( propId & EscherProperty.IS_COMPLEX ) != 0;
+
+            EscherPropertyTypes propertyType = EscherPropertyTypes.forPropertyID(propId);
+
+            final BiFunction<Short,Integer,EscherProperty> con;
+            switch (propertyType.holder) {
+                case BOOLEAN:
+                    con = EscherBoolProperty::new;
                     break;
-                case EscherPropertyMetaData.TYPE_RGB:
-                    ep = new EscherRGBProperty( propId, propData );
+                case RGB:
+                    con = EscherRGBProperty::new;
                     break;
-                case EscherPropertyMetaData.TYPE_SHAPEPATH:
-                    ep = new EscherShapePathProperty( propId, propData );
+                case SHAPE_PATH:
+                    con = EscherShapePathProperty::new;
                     break;
                 default:
-                    if ( !isComplex ) {
-                        ep = new EscherSimpleProperty( propId, propData );
-                    } else if ( propertyType == EscherPropertyMetaData.TYPE_ARRAY) {
-                        ep = new EscherArrayProperty( propId, IOUtils.safelyAllocate(propData, MAX_RECORD_LENGTH));
+                    if ( isComplex ) {
+                        con = (propertyType.holder == EscherPropertyTypesHolder.ARRAY)
+                            ? EscherArrayProperty::new
+                            : EscherComplexProperty::new;
                     } else {
-                        ep = new EscherComplexProperty( propId, IOUtils.safelyAllocate(propData, MAX_RECORD_LENGTH));
+                        con = EscherSimpleProperty::new;
                     }
                     break;
             }
-            results.add( ep );
+
+            results.add( con.apply(propId,propData) );
             pos += 6;
         }
 
         // Get complex data
         for (EscherProperty p : results) {
-            if (p instanceof EscherComplexProperty) {
-                if (p instanceof EscherArrayProperty) {
-                    pos += ((EscherArrayProperty)p).setArrayData(data, pos);
-                } else {
-                    byte[] complexData = ((EscherComplexProperty)p).getComplexData();
-
-                    int leftover = data.length - pos;
-                    if (leftover < complexData.length) {
-                        throw new IllegalStateException("Could not read complex escher property, length was " + complexData.length + ", but had only " +
-                                leftover + " bytes left");
-                    }
-
-                    System.arraycopy(data, pos, complexData, 0, complexData.length);
-                    pos += complexData.length;
+            if (p instanceof EscherArrayProperty) {
+                EscherArrayProperty eap = (EscherArrayProperty)p;
+                pos += eap.setArrayData(data, pos);
+            } else if (p instanceof EscherComplexProperty) {
+                EscherComplexProperty ecp = (EscherComplexProperty)p;
+                int cdLen = ecp.getComplexData().length;
+                int leftover = data.length - pos;
+                if (leftover < cdLen) {
+                    throw new IllegalStateException("Could not read complex escher property, length was " +
+                        cdLen + ", but had only " + leftover + " bytes left");
                 }
+                pos += ecp.setComplexData(data, pos);
             }
         }
         return results;



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org