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 [4/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/...

Added: poi/trunk/src/java/org/apache/poi/ddf/EscherPropertyTypes.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/ddf/EscherPropertyTypes.java?rev=1868352&view=auto
==============================================================================
--- poi/trunk/src/java/org/apache/poi/ddf/EscherPropertyTypes.java (added)
+++ poi/trunk/src/java/org/apache/poi/ddf/EscherPropertyTypes.java Sat Oct 12 16:32:53 2019
@@ -0,0 +1,376 @@
+/* ====================================================================
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License")), you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ ==================================================================== */
+
+package org.apache.poi.ddf;
+
+import java.util.Map;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+/**
+ * Provides a list of all known escher properties including the description and type.
+ */
+public enum EscherPropertyTypes {
+    TRANSFORM__ROTATION(0x0004, "transform.rotation"),
+    PROTECTION__LOCKROTATION(0x0077, "protection.lockrotation"),
+    PROTECTION__LOCKASPECTRATIO(0x0078, "protection.lockaspectratio"),
+    PROTECTION__LOCKPOSITION(0x0079, "protection.lockposition"),
+    PROTECTION__LOCKAGAINSTSELECT(0x007a, "protection.lockagainstselect"),
+    PROTECTION__LOCKCROPPING(0x007b, "protection.lockcropping"),
+    PROTECTION__LOCKVERTICES(0x007c, "protection.lockvertices"),
+    PROTECTION__LOCKTEXT(0x007d, "protection.locktext"),
+    PROTECTION__LOCKADJUSTHANDLES(0x007e, "protection.lockadjusthandles"),
+    PROTECTION__LOCKAGAINSTGROUPING(0x007f, "protection.lockagainstgrouping", EscherPropertyTypesHolder.BOOLEAN),
+    TEXT__TEXTID(0x0080, "text.textid"),
+    TEXT__TEXTLEFT(0x0081, "text.textleft"),
+    TEXT__TEXTTOP(0x0082, "text.texttop"),
+    TEXT__TEXTRIGHT(0x0083, "text.textright"),
+    TEXT__TEXTBOTTOM(0x0084, "text.textbottom"),
+    TEXT__WRAPTEXT(0x0085, "text.wraptext"),
+    TEXT__SCALETEXT(0x0086, "text.scaletext"),
+    TEXT__ANCHORTEXT(0x0087, "text.anchortext"),
+    TEXT__TEXTFLOW(0x0088, "text.textflow"),
+    TEXT__FONTROTATION(0x0089, "text.fontrotation"),
+    TEXT__IDOFNEXTSHAPE(0x008a, "text.idofnextshape"),
+    TEXT__BIDIR(0x008b, "text.bidir"),
+    TEXT__SINGLECLICKSELECTS(0x00bb, "text.singleclickselects"),
+    TEXT__USEHOSTMARGINS(0x00bc, "text.usehostmargins"),
+    TEXT__ROTATETEXTWITHSHAPE(0x00bd, "text.rotatetextwithshape"),
+    TEXT__SIZESHAPETOFITTEXT(0x00be, "text.sizeshapetofittext"),
+    TEXT__SIZE_TEXT_TO_FIT_SHAPE(0x00bf, "text.sizetexttofitshape", EscherPropertyTypesHolder.BOOLEAN),
+    GEOTEXT__UNICODE(0x00c0, "geotext.unicode"),
+    GEOTEXT__RTFTEXT(0x00c1, "geotext.rtftext"),
+    GEOTEXT__ALIGNMENTONCURVE(0x00c2, "geotext.alignmentoncurve"),
+    GEOTEXT__DEFAULTPOINTSIZE(0x00c3, "geotext.defaultpointsize"),
+    GEOTEXT__TEXTSPACING(0x00c4, "geotext.textspacing"),
+    GEOTEXT__FONTFAMILYNAME(0x00c5, "geotext.fontfamilyname"),
+    GEOTEXT__REVERSEROWORDER(0x00f0, "geotext.reverseroworder"),
+    GEOTEXT__HASTEXTEFFECT(0x00f1, "geotext.hastexteffect"),
+    GEOTEXT__ROTATECHARACTERS(0x00f2, "geotext.rotatecharacters"),
+    GEOTEXT__KERNCHARACTERS(0x00f3, "geotext.kerncharacters"),
+    GEOTEXT__TIGHTORTRACK(0x00f4, "geotext.tightortrack"),
+    GEOTEXT__STRETCHTOFITSHAPE(0x00f5, "geotext.stretchtofitshape"),
+    GEOTEXT__CHARBOUNDINGBOX(0x00f6, "geotext.charboundingbox"),
+    GEOTEXT__SCALETEXTONPATH(0x00f7, "geotext.scaletextonpath"),
+    GEOTEXT__STRETCHCHARHEIGHT(0x00f8, "geotext.stretchcharheight"),
+    GEOTEXT__NOMEASUREALONGPATH(0x00f9, "geotext.nomeasurealongpath"),
+    GEOTEXT__BOLDFONT(0x00fa, "geotext.boldfont"),
+    GEOTEXT__ITALICFONT(0x00fb, "geotext.italicfont"),
+    GEOTEXT__UNDERLINEFONT(0x00fc, "geotext.underlinefont"),
+    GEOTEXT__SHADOWFONT(0x00fd, "geotext.shadowfont"),
+    GEOTEXT__SMALLCAPSFONT(0x00fe, "geotext.smallcapsfont"),
+    GEOTEXT__STRIKETHROUGHFONT(0x00ff, "geotext.strikethroughfont"),
+    BLIP__CROPFROMTOP(0x0100, "blip.cropfromtop"),
+    BLIP__CROPFROMBOTTOM(0x0101, "blip.cropfrombottom"),
+    BLIP__CROPFROMLEFT(0x0102, "blip.cropfromleft"),
+    BLIP__CROPFROMRIGHT(0x0103, "blip.cropfromright"),
+    BLIP__BLIPTODISPLAY(0x0104, "blip.bliptodisplay"),
+    BLIP__BLIPFILENAME(0x0105, "blip.blipfilename"),
+    BLIP__BLIPFLAGS(0x0106, "blip.blipflags"),
+    BLIP__TRANSPARENTCOLOR(0x0107, "blip.transparentcolor"),
+    BLIP__CONTRASTSETTING(0x0108, "blip.contrastsetting"),
+    BLIP__BRIGHTNESSSETTING(0x0109, "blip.brightnesssetting"),
+    BLIP__GAMMA(0x010a, "blip.gamma"),
+    BLIP__PICTUREID(0x010b, "blip.pictureid"),
+    BLIP__DOUBLEMOD(0x010c, "blip.doublemod"),
+    BLIP__PICTUREFILLMOD(0x010d, "blip.picturefillmod"),
+    BLIP__PICTURELINE(0x010e, "blip.pictureline"),
+    BLIP__PRINTBLIP(0x010f, "blip.printblip"),
+    BLIP__PRINTBLIPFILENAME(0x0110, "blip.printblipfilename"),
+    BLIP__PRINTFLAGS(0x0111, "blip.printflags"),
+    BLIP__NOHITTESTPICTURE(0x013c, "blip.nohittestpicture"),
+    BLIP__PICTUREGRAY(0x013d, "blip.picturegray"),
+    BLIP__PICTUREBILEVEL(0x013e, "blip.picturebilevel"),
+    BLIP__PICTUREACTIVE(0x013f, "blip.pictureactive"),
+    GEOMETRY__LEFT(0x0140, "geometry.left"),
+    GEOMETRY__TOP(0x0141, "geometry.top"),
+    GEOMETRY__RIGHT(0x0142, "geometry.right"),
+    GEOMETRY__BOTTOM(0x0143, "geometry.bottom"),
+    GEOMETRY__SHAPEPATH(0x0144, "geometry.shapepath", EscherPropertyTypesHolder.SHAPE_PATH),
+    GEOMETRY__VERTICES(0x0145, "geometry.vertices", EscherPropertyTypesHolder.ARRAY),
+    GEOMETRY__SEGMENTINFO(0x0146, "geometry.segmentinfo", EscherPropertyTypesHolder.ARRAY),
+    GEOMETRY__ADJUSTVALUE(0x0147, "geometry.adjustvalue"),
+    GEOMETRY__ADJUST2VALUE(0x0148, "geometry.adjust2value"),
+    GEOMETRY__ADJUST3VALUE(0x0149, "geometry.adjust3value"),
+    GEOMETRY__ADJUST4VALUE(0x014a, "geometry.adjust4value"),
+    GEOMETRY__ADJUST5VALUE(0x014b, "geometry.adjust5value"),
+    GEOMETRY__ADJUST6VALUE(0x014c, "geometry.adjust6value"),
+    GEOMETRY__ADJUST7VALUE(0x014d, "geometry.adjust7value"),
+    GEOMETRY__ADJUST8VALUE(0x014e, "geometry.adjust8value"),
+    GEOMETRY__ADJUST9VALUE(0x014f, "geometry.adjust9value"),
+    GEOMETRY__ADJUST10VALUE(0x0150, "geometry.adjust10value"),
+    GEOMETRY__PCONNECTIONSITES(0x0151, "geometry.pConnectionSites"),
+    GEOMETRY__PCONNECTIONSITESDIR(0x0152, "geometry.pConnectionSitesDir"),
+    GEOMETRY__XLIMO(0x0153, "geometry.xLimo"),
+    GEOMETRY__YLIMO(0x0154, "geometry.yLimo"),
+    GEOMETRY__PADJUSTHANDLES(0x0155, "geometry.pAdjustHandles"),
+    GEOMETRY__PGUIDES(0x0156, "geometry.pGuides"),
+    GEOMETRY__PINSCRIBE(0x0157, "geometry.pInscribe"),
+    GEOMETRY__CXK(0x0158, "geometry.cxk"),
+    GEOMETRY__PFRAGMENTS(0x0159, "geometry.pFragments"),
+    GEOMETRY__SHADOWOK(0x017a, "geometry.shadowOK"),
+    GEOMETRY__3DOK(0x017b, "geometry.3dok"),
+    GEOMETRY__LINEOK(0x017c, "geometry.lineok"),
+    GEOMETRY__GEOTEXTOK(0x017d, "geometry.geotextok"),
+    GEOMETRY__FILLSHADESHAPEOK(0x017e, "geometry.fillshadeshapeok"),
+    GEOMETRY__FILLOK(0x017f, "geometry.fillok", EscherPropertyTypesHolder.BOOLEAN),
+    FILL__FILLTYPE(0x0180, "fill.filltype"),
+    FILL__FILLCOLOR(0x0181, "fill.fillcolor", EscherPropertyTypesHolder.RGB),
+    FILL__FILLOPACITY(0x0182, "fill.fillopacity"),
+    FILL__FILLBACKCOLOR(0x0183, "fill.fillbackcolor", EscherPropertyTypesHolder.RGB),
+    FILL__BACKOPACITY(0x0184, "fill.backopacity"),
+    FILL__CRMOD(0x0185, "fill.crmod"),
+    FILL__PATTERNTEXTURE(0x0186, "fill.patterntexture"),
+    FILL__BLIPFILENAME(0x0187, "fill.blipfilename"),
+    FILL__BLIPFLAGS(0x0188, "fill.blipflags"),
+    FILL__WIDTH(0x0189, "fill.width"),
+    FILL__HEIGHT(0x018a, "fill.height"),
+    FILL__ANGLE(0x018b, "fill.angle"),
+    FILL__FOCUS(0x018c, "fill.focus"),
+    FILL__TOLEFT(0x018d, "fill.toleft"),
+    FILL__TOTOP(0x018e, "fill.totop"),
+    FILL__TORIGHT(0x018f, "fill.toright"),
+    FILL__TOBOTTOM(0x0190, "fill.tobottom"),
+    FILL__RECTLEFT(0x0191, "fill.rectleft"),
+    FILL__RECTTOP(0x0192, "fill.recttop"),
+    FILL__RECTRIGHT(0x0193, "fill.rectright"),
+    FILL__RECTBOTTOM(0x0194, "fill.rectbottom"),
+    FILL__DZTYPE(0x0195, "fill.dztype"),
+    FILL__SHADEPRESET(0x0196, "fill.shadepreset"),
+    FILL__SHADECOLORS(0x0197, "fill.shadecolors", EscherPropertyTypesHolder.ARRAY),
+    FILL__ORIGINX(0x0198, "fill.originx"),
+    FILL__ORIGINY(0x0199, "fill.originy"),
+    FILL__SHAPEORIGINX(0x019a, "fill.shapeoriginx"),
+    FILL__SHAPEORIGINY(0x019b, "fill.shapeoriginy"),
+    FILL__SHADETYPE(0x019c, "fill.shadetype"),
+    FILL__FILLED(0x01bb, "fill.filled"),
+    FILL__HITTESTFILL(0x01bc, "fill.hittestfill"),
+    FILL__SHAPE(0x01bd, "fill.shape"),
+    FILL__USERECT(0x01be, "fill.userect"),
+    FILL__NOFILLHITTEST(0x01bf, "fill.nofillhittest", EscherPropertyTypesHolder.BOOLEAN),
+    LINESTYLE__COLOR(0x01c0, "linestyle.color", EscherPropertyTypesHolder.RGB),
+    LINESTYLE__OPACITY(0x01c1, "linestyle.opacity"),
+    LINESTYLE__BACKCOLOR(0x01c2, "linestyle.backcolor", EscherPropertyTypesHolder.RGB),
+    LINESTYLE__CRMOD(0x01c3, "linestyle.crmod"),
+    LINESTYLE__LINETYPE(0x01c4, "linestyle.linetype"),
+    LINESTYLE__FILLBLIP(0x01c5, "linestyle.fillblip"),
+    LINESTYLE__FILLBLIPNAME(0x01c6, "linestyle.fillblipname"),
+    LINESTYLE__FILLBLIPFLAGS(0x01c7, "linestyle.fillblipflags"),
+    LINESTYLE__FILLWIDTH(0x01c8, "linestyle.fillwidth"),
+    LINESTYLE__FILLHEIGHT(0x01c9, "linestyle.fillheight"),
+    LINESTYLE__FILLDZTYPE(0x01ca, "linestyle.filldztype"),
+    LINESTYLE__LINEWIDTH(0x01cb, "linestyle.linewidth"),
+    LINESTYLE__LINEMITERLIMIT(0x01cc, "linestyle.linemiterlimit"),
+    LINESTYLE__LINESTYLE(0x01cd, "linestyle.linestyle"),
+    LINESTYLE__LINEDASHING(0x01ce, "linestyle.linedashing"),
+    LINESTYLE__LINEDASHSTYLE(0x01cf, "linestyle.linedashstyle", EscherPropertyTypesHolder.ARRAY),
+    LINESTYLE__LINESTARTARROWHEAD(0x01d0, "linestyle.linestartarrowhead"),
+    LINESTYLE__LINEENDARROWHEAD(0x01d1, "linestyle.lineendarrowhead"),
+    LINESTYLE__LINESTARTARROWWIDTH(0x01d2, "linestyle.linestartarrowwidth"),
+    LINESTYLE__LINESTARTARROWLENGTH(0x01d3, "linestyle.linestartarrowlength"),
+    LINESTYLE__LINEENDARROWWIDTH(0x01d4, "linestyle.lineendarrowwidth"),
+    LINESTYLE__LINEENDARROWLENGTH(0x01d5, "linestyle.lineendarrowlength"),
+    LINESTYLE__LINEJOINSTYLE(0x01d6, "linestyle.linejoinstyle"),
+    LINESTYLE__LINEENDCAPSTYLE(0x01d7, "linestyle.lineendcapstyle"),
+    LINESTYLE__ARROWHEADSOK(0x01fb, "linestyle.arrowheadsok"),
+    LINESTYLE__ANYLINE(0x01fc, "linestyle.anyline"),
+    LINESTYLE__HITLINETEST(0x01fd, "linestyle.hitlinetest"),
+    LINESTYLE__LINEFILLSHAPE(0x01fe, "linestyle.linefillshape"),
+    LINESTYLE__NOLINEDRAWDASH(0x01ff, "linestyle.nolinedrawdash", EscherPropertyTypesHolder.BOOLEAN),
+    LINESTYLE__NOLINEDRAWDASH_LEFT(0x057F, "linestyle.nolinedrawdash.left", EscherPropertyTypesHolder.BOOLEAN),
+    LINESTYLE__NOLINEDRAWDASH_TOP(0x05BF, "linestyle.nolinedrawdash.top", EscherPropertyTypesHolder.BOOLEAN),
+    LINESTYLE__NOLINEDRAWDASH_BOTTOM(0x063F, "linestyle.nolinedrawdash.bottom", EscherPropertyTypesHolder.BOOLEAN),
+    LINESTYLE__NOLINEDRAWDASH_RIGHT(0x05FF, "linestyle.nolinedrawdash.right", EscherPropertyTypesHolder.BOOLEAN),
+    SHADOWSTYLE__TYPE(0x0200, "shadowstyle.type"),
+    SHADOWSTYLE__COLOR(0x0201, "shadowstyle.color", EscherPropertyTypesHolder.RGB),
+    SHADOWSTYLE__HIGHLIGHT(0x0202, "shadowstyle.highlight"),
+    SHADOWSTYLE__CRMOD(0x0203, "shadowstyle.crmod"),
+    SHADOWSTYLE__OPACITY(0x0204, "shadowstyle.opacity"),
+    SHADOWSTYLE__OFFSETX(0x0205, "shadowstyle.offsetx"),
+    SHADOWSTYLE__OFFSETY(0x0206, "shadowstyle.offsety"),
+    SHADOWSTYLE__SECONDOFFSETX(0x0207, "shadowstyle.secondoffsetx"),
+    SHADOWSTYLE__SECONDOFFSETY(0x0208, "shadowstyle.secondoffsety"),
+    SHADOWSTYLE__SCALEXTOX(0x0209, "shadowstyle.scalextox"),
+    SHADOWSTYLE__SCALEYTOX(0x020a, "shadowstyle.scaleytox"),
+    SHADOWSTYLE__SCALEXTOY(0x020b, "shadowstyle.scalextoy"),
+    SHADOWSTYLE__SCALEYTOY(0x020c, "shadowstyle.scaleytoy"),
+    SHADOWSTYLE__PERSPECTIVEX(0x020d, "shadowstyle.perspectivex"),
+    SHADOWSTYLE__PERSPECTIVEY(0x020e, "shadowstyle.perspectivey"),
+    SHADOWSTYLE__WEIGHT(0x020f, "shadowstyle.weight"),
+    SHADOWSTYLE__ORIGINX(0x0210, "shadowstyle.originx"),
+    SHADOWSTYLE__ORIGINY(0x0211, "shadowstyle.originy"),
+    SHADOWSTYLE__SHADOW(0x023e, "shadowstyle.shadow"),
+    SHADOWSTYLE__SHADOWOBSURED(0x023f, "shadowstyle.shadowobscured"),
+    PERSPECTIVE__TYPE(0x0240, "perspective.type"),
+    PERSPECTIVE__OFFSETX(0x0241, "perspective.offsetx"),
+    PERSPECTIVE__OFFSETY(0x0242, "perspective.offsety"),
+    PERSPECTIVE__SCALEXTOX(0x0243, "perspective.scalextox"),
+    PERSPECTIVE__SCALEYTOX(0x0244, "perspective.scaleytox"),
+    PERSPECTIVE__SCALEXTOY(0x0245, "perspective.scalextoy"),
+    PERSPECTIVE__SCALEYTOY(0x0246, "perspective.scaleytoy"),
+    PERSPECTIVE__PERSPECTIVEX(0x0247, "perspective.perspectivex"),
+    PERSPECTIVE__PERSPECTIVEY(0x0248, "perspective.perspectivey"),
+    PERSPECTIVE__WEIGHT(0x0249, "perspective.weight"),
+    PERSPECTIVE__ORIGINX(0x024a, "perspective.originx"),
+    PERSPECTIVE__ORIGINY(0x024b, "perspective.originy"),
+    PERSPECTIVE__PERSPECTIVEON(0x027f, "perspective.perspectiveon"),
+    THREED__SPECULARAMOUNT(0x0280, "3d.specularamount"),
+    THREED__DIFFUSEAMOUNT(0x0281, "3d.diffuseamount"),
+    THREED__SHININESS(0x0282, "3d.shininess"),
+    THREED__EDGETHICKNESS(0x0283, "3d.edgethickness"),
+    THREED__EXTRUDEFORWARD(0x0284, "3d.extrudeforward"),
+    THREED__EXTRUDEBACKWARD(0x0285, "3d.extrudebackward"),
+    RESERVED646(0x0286, "reserved646"),
+    THREED__EXTRUSIONCOLOR(0x0287, "3d.extrusioncolor", EscherPropertyTypesHolder.RGB),
+    THREED__CRMOD(0x0288, "3d.crmod"),
+    THREED__EXTRUSIONCOLOREXT(0x0289, "3d.extrusioncolorext"),
+    RESERVED650(0x028A, "reserved650"),
+    THREED__EXTRUSIONCOLOREXTMOD(0x028B, "3d.extrusioncolorextmod"),
+    RESERVED652(0x028c, "reserved652"),
+    RESERVED653(0x028d, "reserved653"),
+    THREED__BOOLEAN_PROPERTIES(0x028f, "3d.booleanproperties"),
+    THREED__EXTRUDEPLANE(0x029a, "3d.extrudeplane"),
+    THREED__3DEFFECT(0x02bc, "3d.3deffect"),
+    THREED__METALLIC(0x02bd, "3d.metallic"),
+    THREED__USEEXTRUSIONCOLOR(0x02be, "3d.useextrusioncolor", EscherPropertyTypesHolder.RGB),
+    THREED__LIGHTFACE(0x02bf, "3d.lightface"),
+    THREEDSTYLE__YROTATIONANGLE(0x02c0, "3dstyle.yrotationangle"),
+    THREEDSTYLE__XROTATIONANGLE(0x02c1, "3dstyle.xrotationangle"),
+    THREEDSTYLE__ROTATIONAXISX(0x02c2, "3dstyle.rotationaxisx"),
+    THREEDSTYLE__ROTATIONAXISY(0x02c3, "3dstyle.rotationaxisy"),
+    THREEDSTYLE__ROTATIONAXISZ(0x02c4, "3dstyle.rotationaxisz"),
+    THREEDSTYLE__ROTATIONANGLE(0x02c5, "3dstyle.rotationangle"),
+    THREEDSTYLE__ROTATIONCENTERX(0x02c6, "3dstyle.rotationcenterx"),
+    THREEDSTYLE__ROTATIONCENTERY(0x02c7, "3dstyle.rotationcentery"),
+    THREEDSTYLE__ROTATIONCENTERZ(0x02c8, "3dstyle.rotationcenterz"),
+    THREEDSTYLE__RENDERMODE(0x02c9, "3dstyle.rendermode"),
+    THREEDSTYLE__TOLERANCE(0x02ca, "3dstyle.tolerance"),
+    THREEDSTYLE__XVIEWPOINT(0x02cb, "3dstyle.xviewpoint"),
+    THREEDSTYLE__YVIEWPOINT(0x02cc, "3dstyle.yviewpoint"),
+    THREEDSTYLE__ZVIEWPOINT(0x02cd, "3dstyle.zviewpoint"),
+    THREEDSTYLE__ORIGINX(0x02ce, "3dstyle.originx"),
+    THREEDSTYLE__ORIGINY(0x02cf, "3dstyle.originy"),
+    THREEDSTYLE__SKEWANGLE(0x02d0, "3dstyle.skewangle"),
+    THREEDSTYLE__SKEWAMOUNT(0x02d1, "3dstyle.skewamount"),
+    THREEDSTYLE__AMBIENTINTENSITY(0x02d2, "3dstyle.ambientintensity"),
+    THREEDSTYLE__KEYX(0x02d3, "3dstyle.keyx"),
+    THREEDSTYLE__KEYY(0x02d4, "3dstyle.keyy"),
+    THREEDSTYLE__KEYZ(0x02d5, "3dstyle.keyz"),
+    THREEDSTYLE__KEYINTENSITY(0x02d6, "3dstyle.keyintensity"),
+    THREEDSTYLE__FILLX(0x02d7, "3dstyle.fillx"),
+    THREEDSTYLE__FILLY(0x02d8, "3dstyle.filly"),
+    THREEDSTYLE__FILLZ(0x02d9, "3dstyle.fillz"),
+    THREEDSTYLE__FILLINTENSITY(0x02da, "3dstyle.fillintensity"),
+    THREEDSTYLE__CONSTRAINROTATION(0x02fb, "3dstyle.constrainrotation"),
+    THREEDSTYLE__ROTATIONCENTERAUTO(0x02fc, "3dstyle.rotationcenterauto"),
+    THREEDSTYLE__PARALLEL(0x02fd, "3dstyle.parallel"),
+    THREEDSTYLE__KEYHARSH(0x02fe, "3dstyle.keyharsh"),
+    THREEDSTYLE__FILLHARSH(0x02ff, "3dstyle.fillharsh"),
+    SHAPE__MASTER(0x0301, "shape.master"),
+    SHAPE__CONNECTORSTYLE(0x0303, "shape.connectorstyle"),
+    SHAPE__BLACKANDWHITESETTINGS(0x0304, "shape.blackandwhitesettings"),
+    SHAPE__WMODEPUREBW(0x0305, "shape.wmodepurebw"),
+    SHAPE__WMODEBW(0x0306, "shape.wmodebw"),
+    SHAPE__OLEICON(0x033a, "shape.oleicon"),
+    SHAPE__PREFERRELATIVERESIZE(0x033b, "shape.preferrelativeresize"),
+    SHAPE__LOCKSHAPETYPE(0x033c, "shape.lockshapetype"),
+    SHAPE__DELETEATTACHEDOBJECT(0x033e, "shape.deleteattachedobject"),
+    SHAPE__BACKGROUNDSHAPE(0x033f, "shape.backgroundshape"),
+    CALLOUT__CALLOUTTYPE(0x0340, "callout.callouttype"),
+    CALLOUT__XYCALLOUTGAP(0x0341, "callout.xycalloutgap"),
+    CALLOUT__CALLOUTANGLE(0x0342, "callout.calloutangle"),
+    CALLOUT__CALLOUTDROPTYPE(0x0343, "callout.calloutdroptype"),
+    CALLOUT__CALLOUTDROPSPECIFIED(0x0344, "callout.calloutdropspecified"),
+    CALLOUT__CALLOUTLENGTHSPECIFIED(0x0345, "callout.calloutlengthspecified"),
+    CALLOUT__ISCALLOUT(0x0379, "callout.iscallout"),
+    CALLOUT__CALLOUTACCENTBAR(0x037a, "callout.calloutaccentbar"),
+    CALLOUT__CALLOUTTEXTBORDER(0x037b, "callout.callouttextborder"),
+    CALLOUT__CALLOUTMINUSX(0x037c, "callout.calloutminusx"),
+    CALLOUT__CALLOUTMINUSY(0x037d, "callout.calloutminusy"),
+    CALLOUT__DROPAUTO(0x037e, "callout.dropauto"),
+    CALLOUT__LENGTHSPECIFIED(0x037f, "callout.lengthspecified"),
+    GROUPSHAPE__SHAPENAME(0x0380, "groupshape.shapename"),
+    GROUPSHAPE__DESCRIPTION(0x0381, "groupshape.description"),
+    GROUPSHAPE__HYPERLINK(0x0382, "groupshape.hyperlink"),
+    GROUPSHAPE__WRAPPOLYGONVERTICES(0x0383, "groupshape.wrappolygonvertices", EscherPropertyTypesHolder.ARRAY),
+    GROUPSHAPE__WRAPDISTLEFT(0x0384, "groupshape.wrapdistleft"),
+    GROUPSHAPE__WRAPDISTTOP(0x0385, "groupshape.wrapdisttop"),
+    GROUPSHAPE__WRAPDISTRIGHT(0x0386, "groupshape.wrapdistright"),
+    GROUPSHAPE__WRAPDISTBOTTOM(0x0387, "groupshape.wrapdistbottom"),
+    GROUPSHAPE__REGROUPID(0x0388, "groupshape.regroupid"),
+    GROUPSHAPE__UNUSED906(0x038A, "unused906"),
+    GROUPSHAPE__TOOLTIP(0x038D, "groupshape.wzTooltip"),
+    GROUPSHAPE__SCRIPT(0x038E, "groupshape.wzScript"),
+    GROUPSHAPE__POSH(0x038F, "groupshape.posh"),
+    GROUPSHAPE__POSRELH(0x0390, "groupshape.posrelh"),
+    GROUPSHAPE__POSV(0x0391, "groupshape.posv"),
+    GROUPSHAPE__POSRELV(0x0392, "groupshape.posrelv"),
+    GROUPSHAPE__HR_PCT(0x0393, "groupshape.pctHR"),
+    GROUPSHAPE__HR_ALIGN(0x0394, "groupshape.alignHR"),
+    GROUPSHAPE__HR_HEIGHT(0x0395, "groupshape.dxHeightHR"),
+    GROUPSHAPE__HR_WIDTH(0x0396, "groupshape.dxWidthHR"),
+    GROUPSHAPE__SCRIPTEXT(0x0397, "groupshape.wzScriptExtAttr"),
+    GROUPSHAPE__SCRIPTLANG(0x0398, "groupshape.scriptLang"),
+    GROUPSHAPE__BORDERTOPCOLOR(0x039B, "groupshape.borderTopColor"),
+    GROUPSHAPE__BORDERLEFTCOLOR(0x039C, "groupshape.borderLeftColor"),
+    GROUPSHAPE__BORDERBOTTOMCOLOR(0x039D, "groupshape.borderBottomColor"),
+    GROUPSHAPE__BORDERRIGHTCOLOR(0x039E, "groupshape.borderRightColor"),
+    GROUPSHAPE__TABLEPROPERTIES(0x039F, "groupshape.tableProperties"),
+    GROUPSHAPE__TABLEROWPROPERTIES(0x03A0, "groupshape.tableRowProperties", EscherPropertyTypesHolder.ARRAY),
+    GROUPSHAPE__WEBBOT(0x03A5, "groupshape.wzWebBot"),
+    GROUPSHAPE__METROBLOB(0x03A9, "groupshape.metroBlob"),
+    GROUPSHAPE__ZORDER(0x03AA, "groupshape.dhgt"),
+    GROUPSHAPE__EDITEDWRAP(0x03b9, "groupshape.editedwrap"),
+    GROUPSHAPE__BEHINDDOCUMENT(0x03ba, "groupshape.behinddocument"),
+    GROUPSHAPE__ONDBLCLICKNOTIFY(0x03bb, "groupshape.ondblclicknotify"),
+    GROUPSHAPE__ISBUTTON(0x03bc, "groupshape.isbutton"),
+    GROUPSHAPE__1DADJUSTMENT(0x03bd, "groupshape.1dadjustment"),
+    GROUPSHAPE__HIDDEN(0x03be, "groupshape.hidden"),
+    GROUPSHAPE__FLAGS(0x03bf, "groupshape.groupShapeBooleanProperties"),
+    UNKNOWN(0xffff, "unknown")
+    ;
+
+    /** the property number part of the property id, i.e. the id without is_blip/is_complex flag */
+    public final short propNumber;
+    public final String propName;
+    public final EscherPropertyTypesHolder holder;
+
+    EscherPropertyTypes(int propNumber, String name) {
+        this(propNumber, name, EscherPropertyTypesHolder.UNKNOWN);
+    }
+
+    EscherPropertyTypes(int propNumber, String propName, EscherPropertyTypesHolder holder) {
+        this.propNumber = (short) propNumber;
+        this.propName = propName;
+        this.holder = holder;
+    }
+
+    public short getPropertyId() {
+        return propNumber;
+    }
+
+    private static final Map<Short, EscherPropertyTypes> LOOKUP =
+            Stream.of(values()).collect(Collectors.toMap(EscherPropertyTypes::getPropertyId, Function.identity()));
+
+    public static EscherPropertyTypes forPropertyID(int propertyId) {
+        EscherPropertyTypes rt = LOOKUP.get((short)(propertyId & 0x3FFF));
+        return (rt != null) ? rt : EscherPropertyTypes.UNKNOWN;
+    }
+
+}
+

Propchange: poi/trunk/src/java/org/apache/poi/ddf/EscherPropertyTypes.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: poi/trunk/src/java/org/apache/poi/ddf/EscherPropertyTypesHolder.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/ddf/EscherPropertyTypesHolder.java?rev=1868352&view=auto
==============================================================================
--- poi/trunk/src/java/org/apache/poi/ddf/EscherPropertyTypesHolder.java (added)
+++ poi/trunk/src/java/org/apache/poi/ddf/EscherPropertyTypesHolder.java Sat Oct 12 16:32:53 2019
@@ -0,0 +1,30 @@
+/* ====================================================================
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+==================================================================== */
+
+package org.apache.poi.ddf;
+
+import org.apache.poi.util.Internal;
+
+@Internal
+public enum EscherPropertyTypesHolder {
+    UNKNOWN,
+    BOOLEAN,
+    RGB,
+    SHAPE_PATH,
+    SIMPLE,
+    ARRAY
+}
\ No newline at end of file

Propchange: poi/trunk/src/java/org/apache/poi/ddf/EscherPropertyTypesHolder.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: poi/trunk/src/java/org/apache/poi/ddf/EscherRGBProperty.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/ddf/EscherRGBProperty.java?rev=1868352&r1=1868351&r2=1868352&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/ddf/EscherRGBProperty.java (original)
+++ poi/trunk/src/java/org/apache/poi/ddf/EscherRGBProperty.java Sat Oct 12 16:32:53 2019
@@ -17,8 +17,6 @@
 
 package org.apache.poi.ddf;
 
-import org.apache.poi.util.HexDump;
-
 /**
  * A color property.
  */
@@ -26,12 +24,28 @@ public class EscherRGBProperty
         extends EscherSimpleProperty
 {
 
-    public EscherRGBProperty( short propertyNumber, int rgbColor )
-    {
+    /**
+     * Create an instance of an escher boolean property.
+     *
+     * @param propertyNumber The property number (or id)
+     * @param rgbColor      The 24 bit value of this rgb property
+     */
+    public EscherRGBProperty( short propertyNumber, int rgbColor ) {
         super( propertyNumber, rgbColor );
     }
 
     /**
+     * Create an instance of an escher boolean property.
+     *
+     * @param propertyNumber The property type
+     * @param rgbColor      The 24 bit value of this rgb property
+     */
+    public EscherRGBProperty( EscherPropertyTypes propertyType, int rgbColor ) {
+        super(propertyType.propNumber, rgbColor );
+    }
+
+
+    /**
      * @return the rgb color as int value
      */
     public int getRgbColor()
@@ -62,13 +76,4 @@ public class EscherRGBProperty
     {
         return (byte) ( (getRgbColor() >> 16) & 0xFF );
     }
-
-    @Override
-    public String toXml(String tab){
-        StringBuilder builder = new StringBuilder();
-        builder.append(tab).append("<").append(getClass().getSimpleName()).append(" id=\"0x").append(HexDump.toHex(getId()))
-                .append("\" name=\"").append(getName()).append("\" blipId=\"")
-                .append(isBlipId()).append("\" value=\"0x").append(HexDump.toHex(getRgbColor())).append("\"/>");
-        return builder.toString();
-    }
 }

Modified: poi/trunk/src/java/org/apache/poi/ddf/EscherRecord.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/ddf/EscherRecord.java?rev=1868352&r1=1868351&r2=1868352&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/ddf/EscherRecord.java (original)
+++ poi/trunk/src/java/org/apache/poi/ddf/EscherRecord.java Sat Oct 12 16:32:53 2019
@@ -27,8 +27,9 @@ import java.util.function.Supplier;
 import org.apache.poi.common.usermodel.GenericRecord;
 import org.apache.poi.util.BitField;
 import org.apache.poi.util.BitFieldFactory;
+import org.apache.poi.util.GenericRecordJsonWriter;
 import org.apache.poi.util.GenericRecordUtil;
-import org.apache.poi.util.HexDump;
+import org.apache.poi.util.GenericRecordXmlWriter;
 import org.apache.poi.util.Internal;
 import org.apache.poi.util.LittleEndian;
 
@@ -321,188 +322,12 @@ public abstract class EscherRecord imple
      * @return xml representation of this record
      */
     public final String toXml(String tab){
-        final String nl = System.getProperty( "line.separator" );
-        String clsNm = getClass().getSimpleName();
-        StringBuilder sb = new StringBuilder(1000);
-        sb.append(tab).append("<").append(clsNm)
-          .append(" recordId=\"0x").append(HexDump.toHex(getRecordId()))
-          .append("\" version=\"0x").append(HexDump.toHex(getVersion()))
-          .append("\" instance=\"0x").append(HexDump.toHex(getInstance()))
-          .append("\" options=\"0x").append(HexDump.toHex(getOptions()))
-          .append("\" recordSize=\"").append(getRecordSize());
-        Object[][] attrList = getAttributeMap();
-        if (attrList == null || attrList.length == 0) {
-            sb.append("\" />").append(nl);
-        } else {
-            sb.append("\">").append(nl);
-            String childTab = tab+"   ";
-            for (Object[] attrs : attrList) {
-                String tagName = capitalizeAndTrim((String)attrs[0]);
-                boolean hasValue = false;
-                boolean lastChildComplex = false;
-                for (int i=0; i<attrs.length-1; i+=2) {
-                    Object value = attrs[i+1];
-                    if (value == null) {
-                        // ignore null values
-                        continue;
-                    }
-                    if (!hasValue) {
-                        // only add tagname, when there was a value
-                        sb.append(childTab).append("<").append(tagName).append(">");
-                    }
-                    // add names for optional attributes
-                    String optName = capitalizeAndTrim((String)attrs[i+0]);
-                    if (i>0) {
-                        sb.append(nl).append(childTab).append("  <").append(optName).append(">");
-                    }
-                    lastChildComplex = appendValue(sb, value, true, childTab);
-                    if (i>0) {
-                        sb.append(nl).append(childTab).append("  </").append(optName).append(">");
-                    }
-                    hasValue = true;
-                }
-                if (hasValue) {
-                    if (lastChildComplex) {
-                        sb.append(nl).append(childTab);
-                    }
-                    sb.append("</").append(tagName).append(">").append(nl);
-                }
-            }
-            sb.append(tab).append("</").append(clsNm).append(">");
-        }
-        return sb.toString();
+        return GenericRecordXmlWriter.marshal(this);
     }
 
     @Override
     public final String toString() {
-        final String nl = System.getProperty( "line.separator" );
-        StringBuilder sb = new StringBuilder(1000);
-        sb.append(getClass().getName()).append(" (").append(getRecordName()).append("):").append(nl)
-          .append("  RecordId: 0x").append(HexDump.toHex( getRecordId() )).append(nl)
-          .append("  Version: 0x").append(HexDump.toHex( getVersion() )).append(nl)
-          .append("  Instance: 0x").append(HexDump.toHex( getInstance() )).append(nl)
-          .append("  Options: 0x").append(HexDump.toHex( getOptions() )).append(nl)
-          .append("  Record Size: ").append( getRecordSize() );
-
-        Object[][] attrList = getAttributeMap();
-        if (attrList != null && attrList.length > 0) {
-            String childTab = "  ";
-            for (Object[] attrs : attrList) {
-                for (int i=0; i<attrs.length-1; i+=2) {
-                    Object value = attrs[i+1];
-                    if (value == null) {
-                        // ignore null values
-                        continue;
-                    }
-                    String name = (String)attrs[i+0];
-                    sb.append(nl).append(childTab).append(name).append(": ");
-                    appendValue(sb, value, false, childTab);
-                }
-            }
-        }
-
-        return sb.toString();
-    }
-    
-    /**
-     * @return true, if value was a complex record, false otherwise
-     */
-    private static boolean appendValue(StringBuilder sb, Object value, boolean toXML, String childTab) {
-        final String nl = System.getProperty( "line.separator" );
-        boolean isComplex = false;
-        if (value instanceof String) {
-            if (toXML) {
-                escapeXML((String)value, sb);
-            } else {
-                sb.append((String)value);
-            }
-        } else if (value instanceof Byte) {
-            sb.append("0x").append(HexDump.toHex((Byte)value));
-        } else if (value instanceof Short) {
-            sb.append("0x").append(HexDump.toHex((Short)value));
-        } else if (value instanceof Integer) {
-            sb.append("0x").append(HexDump.toHex((Integer)value));
-        } else if (value instanceof byte[]) {
-            sb.append(nl).append(HexDump.toHex((byte[])value, 32).replaceAll("(?m)^",childTab+"   "));
-        } else if (value instanceof Boolean) {
-            sb.append(((Boolean)value).booleanValue());
-        } else if (value instanceof EscherRecord) {
-            EscherRecord er = (EscherRecord)value;
-            if (toXML) {
-                sb.append(nl).append(er.toXml(childTab+"    "));
-            } else {
-                sb.append(er.toString().replaceAll("(?m)^",childTab));
-            }
-            isComplex = true;
-        } else if (value instanceof EscherProperty) {
-            EscherProperty ep = (EscherProperty)value;
-            if (toXML) {
-                sb.append(nl).append(ep.toXml(childTab+"  "));
-            } else {
-                sb.append(ep.toString().replaceAll("(?m)^",childTab));
-            }
-            isComplex = true;
-        } else {
-            throw new IllegalArgumentException("unknown attribute type "+value.getClass().getSimpleName());
-        }
-        return isComplex;
-    }
-
-    /**
-     * For the purpose of providing toString() and toXml() a subclass can either override those methods
-     * or provide a Object[][] array in the form {@code { { "Attribute Name (Header)", value, "optional attribute", value }, ... } }.<p>
-     *
-     * Null values won't be printed.<p>
-     *
-     * The attributes record, version, instance, options must not be returned.
-     *
-     * @return the attribute map
-     * 
-     * @since POI 3.17-beta2
-     */
-    @Internal
-    protected abstract Object[][] getAttributeMap();
-
-    private static String capitalizeAndTrim(final String str) {
-        if (str == null || str.length() == 0) {
-            return str;
-        }
-
-        StringBuilder sb = new StringBuilder(str.length());
-        boolean capitalizeNext = true;
-        for (char ch : str.toCharArray()) {
-            if (!Character.isLetterOrDigit(ch)) {
-                capitalizeNext = true;
-                continue;
-            }
-
-            if (capitalizeNext) {
-                if (!Character.isLetter(ch)) {
-                    sb.append('_');
-                } else {
-                    ch = Character.toTitleCase(ch);
-                }
-                capitalizeNext = false;
-            }
-            sb.append(ch);
-        }
-
-        return sb.toString();
-    }
-
-    private static void escapeXML(String s, StringBuilder out) {
-        if (s == null || s.isEmpty()) {
-            return;
-        }
-        for (char c : s.toCharArray()) {
-            if (c > 127 || c == '"' || c == '<' || c == '>' || c == '&') {
-                out.append("&#");
-                out.append((int) c);
-                out.append(';');
-            } else {
-                out.append(c);
-            }
-        }
+        return GenericRecordJsonWriter.marshal(this);
     }
 
     @Override

Modified: poi/trunk/src/java/org/apache/poi/ddf/EscherShapePathProperty.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/ddf/EscherShapePathProperty.java?rev=1868352&r1=1868351&r2=1868352&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/ddf/EscherShapePathProperty.java (original)
+++ poi/trunk/src/java/org/apache/poi/ddf/EscherShapePathProperty.java Sat Oct 12 16:32:53 2019
@@ -19,8 +19,6 @@ package org.apache.poi.ddf;
 
 /**
  * Defines the constants for the various possible shape paths.
- *
- * @author Glen Stampoultzis (glens at apache.org)
  */
 public class EscherShapePathProperty extends EscherSimpleProperty {
 
@@ -30,8 +28,17 @@ public class EscherShapePathProperty ext
     public static final int CLOSED_CURVES = 3;
     public static final int COMPLEX = 4;
 
-    public EscherShapePathProperty( short propertyNumber, int shapePath )
-    {
+    /**
+     * Create an instance of an escher shape path property.
+     *
+     * @param propertyNumber
+     * @param shapePath
+     */
+    public EscherShapePathProperty( short propertyNumber, int shapePath ) {
         super( propertyNumber, false, false, shapePath );
     }
+
+    public EscherShapePathProperty( EscherPropertyTypes type, int shapePath ) {
+        super( type, false, false, shapePath );
+    }
 }

Modified: poi/trunk/src/java/org/apache/poi/ddf/EscherSimpleProperty.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/ddf/EscherSimpleProperty.java?rev=1868352&r1=1868351&r2=1868352&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/ddf/EscherSimpleProperty.java (original)
+++ poi/trunk/src/java/org/apache/poi/ddf/EscherSimpleProperty.java Sat Oct 12 16:32:53 2019
@@ -17,7 +17,10 @@
 
 package org.apache.poi.ddf;
 
-import org.apache.poi.util.HexDump;
+import java.util.Map;
+import java.util.function.Supplier;
+
+import org.apache.poi.util.GenericRecordUtil;
 import org.apache.poi.util.LittleEndian;
 
 /**
@@ -36,13 +39,23 @@ public class EscherSimpleProperty extend
      * @param id the property id
      * @param propertyValue the property value
      */
-    public EscherSimpleProperty( short id, int propertyValue )
-    {
+    public EscherSimpleProperty( short id, int propertyValue ) {
         super( id );
         this.propertyValue = propertyValue;
     }
 
     /**
+     * The id is distinct from the actual property number.  The id includes the property number the blip id
+     * flag and an indicator whether the property is complex or not.
+     *
+     * @param type the property type
+     * @param propertyValue the property value
+     */
+    public EscherSimpleProperty( EscherPropertyTypes type, int propertyValue ) {
+        this(type, false, false, propertyValue);
+    }
+
+    /**
      * Constructs a new escher property.  The three parameters are combined to form a property id.
      * 
      * @param propertyNumber the property number
@@ -50,13 +63,25 @@ public class EscherSimpleProperty extend
      * @param isBlipId true, if its a blip
      * @param propertyValue the property value
      */
-    public EscherSimpleProperty( short propertyNumber, boolean isComplex, boolean isBlipId, int propertyValue )
-    {
+    public EscherSimpleProperty( short propertyNumber, boolean isComplex, boolean isBlipId, int propertyValue ) {
         super( propertyNumber, isComplex, isBlipId );
         this.propertyValue = propertyValue;
     }
 
     /**
+     * Constructs a new escher property.  The three parameters are combined to form a property id.
+     *
+     * @param propertyNumber the property number
+     * @param isComplex true, if its a complex property
+     * @param isBlipId true, if its a blip
+     * @param propertyValue the property value
+     */
+    public EscherSimpleProperty( EscherPropertyTypes type, boolean isComplex, boolean isBlipId, int propertyValue ) {
+        super( type, isComplex, isBlipId );
+        this.propertyValue = propertyValue;
+    }
+
+    /**
      * Serialize the simple part of the escher record.
      *
      * @return the number of bytes serialized.
@@ -122,27 +147,11 @@ public class EscherSimpleProperty extend
         return propertyValue;
     }
 
-    /**
-     * @return the string representation of this property.
-     */
-    @Override
-    public String toString()
-    {
-        return "propNum: " + getPropertyNumber()
-                + ", RAW: 0x" + HexDump.toHex( getId() )
-                + ", propName: " + EscherProperties.getPropertyName( getPropertyNumber() )
-                + ", complex: " + isComplex()
-                + ", blipId: " + isBlipId()
-                + ", value: " + propertyValue + " (0x" + HexDump.toHex(propertyValue) + ")";
-    }
-
     @Override
-    public String toXml(String tab){
-        StringBuilder builder = new StringBuilder();
-        builder.append(tab).append("<").append(getClass().getSimpleName()).append(" id=\"0x").append(HexDump.toHex(getId()))
-                .append("\" name=\"").append(getName()).append("\" blipId=\"")
-                .append(isBlipId()).append("\" complex=\"").append(isComplex()).append("\" value=\"").append("0x")
-                .append(HexDump.toHex(propertyValue)).append("\"/>");
-        return builder.toString();
+    public Map<String, Supplier<?>> getGenericProperties() {
+        return GenericRecordUtil.getGenericProperties(
+            "base", super::getGenericProperties,
+            "value", this::getPropertyValue
+        );
     }
 }

Modified: poi/trunk/src/java/org/apache/poi/ddf/EscherSpRecord.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/ddf/EscherSpRecord.java?rev=1868352&r1=1868351&r2=1868352&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/ddf/EscherSpRecord.java (original)
+++ poi/trunk/src/java/org/apache/poi/ddf/EscherSpRecord.java Sat Oct 12 16:32:53 2019
@@ -23,7 +23,6 @@ import java.util.Map;
 import java.util.function.Supplier;
 
 import org.apache.poi.util.GenericRecordUtil;
-import org.apache.poi.util.HexDump;
 import org.apache.poi.util.LittleEndian;
 
 /**
@@ -248,15 +247,6 @@ public class EscherSpRecord extends Esch
     }
 
     @Override
-    protected Object[][] getAttributeMap() {
-        return new Object[][] {
-            { "ShapeType", getShapeType() },
-            { "ShapeId", field_1_shapeId },
-            { "Flags", decodeFlags(field_2_flags)+" (0x"+HexDump.toHex(field_2_flags)+")" }
-        };
-    }
-
-    @Override
     public Map<String, Supplier<?>> getGenericProperties() {
         return GenericRecordUtil.getGenericProperties(
             "base", super::getGenericProperties,

Modified: poi/trunk/src/java/org/apache/poi/ddf/EscherSpgrRecord.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/ddf/EscherSpgrRecord.java?rev=1868352&r1=1868351&r2=1868352&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/ddf/EscherSpgrRecord.java (original)
+++ poi/trunk/src/java/org/apache/poi/ddf/EscherSpgrRecord.java Sat Oct 12 16:32:53 2019
@@ -168,16 +168,6 @@ public class EscherSpgrRecord extends Es
     }
 
     @Override
-    protected Object[][] getAttributeMap() {
-        return new Object[][] {
-            { "RectX", field_1_rectX1 },
-            { "RectY", field_2_rectY1 },
-            { "RectWidth", field_3_rectX2 },
-            { "RectHeight", field_4_rectY2 }
-        };
-    }
-
-    @Override
     public Map<String, Supplier<?>> getGenericProperties() {
         return GenericRecordUtil.getGenericProperties(
             "base", super::getGenericProperties,

Modified: poi/trunk/src/java/org/apache/poi/ddf/EscherSplitMenuColorsRecord.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/ddf/EscherSplitMenuColorsRecord.java?rev=1868352&r1=1868351&r2=1868352&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/ddf/EscherSplitMenuColorsRecord.java (original)
+++ poi/trunk/src/java/org/apache/poi/ddf/EscherSplitMenuColorsRecord.java Sat Oct 12 16:32:53 2019
@@ -159,16 +159,6 @@ public class EscherSplitMenuColorsRecord
     }
 
     @Override
-    protected Object[][] getAttributeMap() {
-        return new Object[][] {
-            { "Color1", field_1_color1 },
-            { "Color2", field_2_color2 },
-            { "Color3", field_3_color3 },
-            { "Color4", field_4_color4 }
-        };
-    }
-
-    @Override
     public Map<String, Supplier<?>> getGenericProperties() {
         return GenericRecordUtil.getGenericProperties(
             "base", super::getGenericProperties,

Modified: poi/trunk/src/java/org/apache/poi/ddf/EscherTextboxRecord.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/ddf/EscherTextboxRecord.java?rev=1868352&r1=1868351&r2=1868352&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/ddf/EscherTextboxRecord.java (original)
+++ poi/trunk/src/java/org/apache/poi/ddf/EscherTextboxRecord.java Sat Oct 12 16:32:53 2019
@@ -17,8 +17,6 @@
 
 package org.apache.poi.ddf;
 
-import java.util.ArrayList;
-import java.util.List;
 import java.util.Map;
 import java.util.function.Supplier;
 
@@ -140,24 +138,6 @@ public final class EscherTextboxRecord e
     }
 
     @Override
-    protected Object[][] getAttributeMap() {
-        int numCh = getChildRecords().size();
-        List<Object> chLst = new ArrayList<>(numCh * 2 + 2);
-        chLst.add("children");
-        chLst.add(numCh);
-        for (EscherRecord er : getChildRecords()) {
-            chLst.add(er.getRecordName());
-            chLst.add(er);
-        }
-        
-        return new Object[][] {
-            { "isContainer", isContainerRecord() },
-            chLst.toArray(),
-            { "Extra Data", thedata }
-        };
-    }
-
-    @Override
     public Enum getGenericRecordType() {
         return EscherRecordTypes.CLIENT_TEXTBOX;
     }

Modified: poi/trunk/src/java/org/apache/poi/ddf/UnknownEscherRecord.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/ddf/UnknownEscherRecord.java?rev=1868352&r1=1868351&r2=1868352&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/ddf/UnknownEscherRecord.java (original)
+++ poi/trunk/src/java/org/apache/poi/ddf/UnknownEscherRecord.java Sat Oct 12 16:32:53 2019
@@ -145,24 +145,6 @@ public final class UnknownEscherRecord e
     }
 
     @Override
-    protected Object[][] getAttributeMap() {
-        int numCh = getChildRecords().size();
-        List<Object> chLst = new ArrayList<>(numCh * 2 + 2);
-        chLst.add("children");
-        chLst.add(numCh);
-        for (EscherRecord er : _childRecords) {
-            chLst.add(er.getRecordName());
-            chLst.add(er);
-        }
-        
-        return new Object[][] {
-            { "isContainer", isContainerRecord() },
-            chLst.toArray(),
-            { "Extra Data", thedata }
-        };
-    }
-
-    @Override
     public Map<String, Supplier<?>> getGenericProperties() {
         return GenericRecordUtil.getGenericProperties(
             "base", super::getGenericProperties,

Modified: poi/trunk/src/java/org/apache/poi/hssf/model/InternalWorkbook.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/model/InternalWorkbook.java?rev=1868352&r1=1868351&r2=1868352&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/hssf/model/InternalWorkbook.java (original)
+++ poi/trunk/src/java/org/apache/poi/hssf/model/InternalWorkbook.java Sat Oct 12 16:32:53 2019
@@ -32,56 +32,14 @@ import org.apache.poi.ddf.EscherContaine
 import org.apache.poi.ddf.EscherDgRecord;
 import org.apache.poi.ddf.EscherDggRecord;
 import org.apache.poi.ddf.EscherOptRecord;
-import org.apache.poi.ddf.EscherProperties;
+import org.apache.poi.ddf.EscherPropertyTypes;
 import org.apache.poi.ddf.EscherRGBProperty;
 import org.apache.poi.ddf.EscherRecord;
 import org.apache.poi.ddf.EscherSimpleProperty;
 import org.apache.poi.ddf.EscherSpRecord;
 import org.apache.poi.ddf.EscherSplitMenuColorsRecord;
 import org.apache.poi.hssf.extractor.OldExcelExtractor;
-import org.apache.poi.hssf.record.BOFRecord;
-import org.apache.poi.hssf.record.BackupRecord;
-import org.apache.poi.hssf.record.BookBoolRecord;
-import org.apache.poi.hssf.record.BoundSheetRecord;
-import org.apache.poi.hssf.record.CodepageRecord;
-import org.apache.poi.hssf.record.CountryRecord;
-import org.apache.poi.hssf.record.DSFRecord;
-import org.apache.poi.hssf.record.DateWindow1904Record;
-import org.apache.poi.hssf.record.DrawingGroupRecord;
-import org.apache.poi.hssf.record.EOFRecord;
-import org.apache.poi.hssf.record.EscherAggregate;
-import org.apache.poi.hssf.record.ExtSSTRecord;
-import org.apache.poi.hssf.record.ExtendedFormatRecord;
-import org.apache.poi.hssf.record.ExternSheetRecord;
-import org.apache.poi.hssf.record.FileSharingRecord;
-import org.apache.poi.hssf.record.FnGroupCountRecord;
-import org.apache.poi.hssf.record.FontRecord;
-import org.apache.poi.hssf.record.FormatRecord;
-import org.apache.poi.hssf.record.HideObjRecord;
-import org.apache.poi.hssf.record.HyperlinkRecord;
-import org.apache.poi.hssf.record.InterfaceEndRecord;
-import org.apache.poi.hssf.record.InterfaceHdrRecord;
-import org.apache.poi.hssf.record.MMSRecord;
-import org.apache.poi.hssf.record.NameCommentRecord;
-import org.apache.poi.hssf.record.NameRecord;
-import org.apache.poi.hssf.record.PaletteRecord;
-import org.apache.poi.hssf.record.PasswordRecord;
-import org.apache.poi.hssf.record.PasswordRev4Record;
-import org.apache.poi.hssf.record.PrecisionRecord;
-import org.apache.poi.hssf.record.ProtectRecord;
-import org.apache.poi.hssf.record.ProtectionRev4Record;
-import org.apache.poi.hssf.record.RecalcIdRecord;
-import org.apache.poi.hssf.record.Record;
-import org.apache.poi.hssf.record.RefreshAllRecord;
-import org.apache.poi.hssf.record.SSTRecord;
-import org.apache.poi.hssf.record.StyleRecord;
-import org.apache.poi.hssf.record.SupBookRecord;
-import org.apache.poi.hssf.record.TabIdRecord;
-import org.apache.poi.hssf.record.UseSelFSRecord;
-import org.apache.poi.hssf.record.WindowOneRecord;
-import org.apache.poi.hssf.record.WindowProtectRecord;
-import org.apache.poi.hssf.record.WriteAccessRecord;
-import org.apache.poi.hssf.record.WriteProtectRecord;
+import org.apache.poi.hssf.record.*;
 import org.apache.poi.hssf.record.common.UnicodeString;
 import org.apache.poi.hssf.util.HSSFColor.HSSFColorPredefined;
 import org.apache.poi.poifs.crypt.CryptoFunctions;
@@ -1961,9 +1919,9 @@ public final class InternalWorkbook {
             }
             opt.setRecordId((short) 0xF00B);
             opt.setOptions((short) 0x0033);
-            opt.addEscherProperty( new EscherBoolProperty(EscherProperties.TEXT__SIZE_TEXT_TO_FIT_SHAPE, 524296) );
-            opt.addEscherProperty( new EscherRGBProperty(EscherProperties.FILL__FILLCOLOR, 0x08000041) );
-            opt.addEscherProperty( new EscherRGBProperty(EscherProperties.LINESTYLE__COLOR, 134217792) );
+            opt.addEscherProperty( new EscherBoolProperty(EscherPropertyTypes.TEXT__SIZE_TEXT_TO_FIT_SHAPE, 524296) );
+            opt.addEscherProperty( new EscherRGBProperty(EscherPropertyTypes.FILL__FILLCOLOR, 0x08000041) );
+            opt.addEscherProperty( new EscherRGBProperty(EscherPropertyTypes.LINESTYLE__COLOR, 134217792) );
             splitMenuColors.setRecordId((short) 0xF11E);
             splitMenuColors.setOptions((short) 0x0040);
             splitMenuColors.setColor1(0x0800000D);
@@ -2190,7 +2148,7 @@ public final class InternalWorkbook {
                         } else if (recordId == EscherOptRecord.RECORD_ID){
                             EscherOptRecord opt = (EscherOptRecord)shapeChildRecord;
                             EscherSimpleProperty prop = opt.lookup(
-                                    EscherProperties.BLIP__BLIPTODISPLAY );
+                                    EscherPropertyTypes.BLIP__BLIPTODISPLAY );
                             if (prop != null){
                                 int pictureIndex = prop.getPropertyValue();
                                 // increment reference count for pictures

Modified: poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFCombobox.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFCombobox.java?rev=1868352&r1=1868351&r2=1868352&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFCombobox.java (original)
+++ poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFCombobox.java Sat Oct 12 16:32:53 2019
@@ -17,8 +17,21 @@
 
 package org.apache.poi.hssf.usermodel;
 
-import org.apache.poi.ddf.*;
-import org.apache.poi.hssf.record.*;
+import org.apache.poi.ddf.EscherBoolProperty;
+import org.apache.poi.ddf.EscherClientDataRecord;
+import org.apache.poi.ddf.EscherContainerRecord;
+import org.apache.poi.ddf.EscherOptRecord;
+import org.apache.poi.ddf.EscherPropertyTypes;
+import org.apache.poi.ddf.EscherRecord;
+import org.apache.poi.ddf.EscherSimpleProperty;
+import org.apache.poi.ddf.EscherSpRecord;
+import org.apache.poi.hssf.record.CommonObjectDataSubRecord;
+import org.apache.poi.hssf.record.EndSubRecord;
+import org.apache.poi.hssf.record.EscherAggregate;
+import org.apache.poi.hssf.record.FtCblsSubRecord;
+import org.apache.poi.hssf.record.LbsDataSubRecord;
+import org.apache.poi.hssf.record.ObjRecord;
+import org.apache.poi.hssf.record.TextObjectRecord;
 import org.apache.poi.ss.usermodel.ClientAnchor.AnchorType;
 
 /**
@@ -56,10 +69,10 @@ public class HSSFCombobox extends HSSFSi
 
         sp.setFlags(EscherSpRecord.FLAG_HAVEANCHOR | EscherSpRecord.FLAG_HASSHAPETYPE);
         opt.setRecordId(EscherOptRecord.RECORD_ID);
-        opt.addEscherProperty(new EscherBoolProperty(EscherProperties.PROTECTION__LOCKAGAINSTGROUPING, 17039620));
-        opt.addEscherProperty(new EscherBoolProperty(EscherProperties.TEXT__SIZE_TEXT_TO_FIT_SHAPE, 0x00080008));
-        opt.addEscherProperty(new EscherBoolProperty(EscherProperties.LINESTYLE__NOLINEDRAWDASH, 0x00080000));
-        opt.addEscherProperty(new EscherSimpleProperty(EscherProperties.GROUPSHAPE__PRINT, 0x00020000));
+        opt.addEscherProperty(new EscherBoolProperty(EscherPropertyTypes.PROTECTION__LOCKAGAINSTGROUPING, 17039620));
+        opt.addEscherProperty(new EscherBoolProperty(EscherPropertyTypes.TEXT__SIZE_TEXT_TO_FIT_SHAPE, 0x00080008));
+        opt.addEscherProperty(new EscherBoolProperty(EscherPropertyTypes.LINESTYLE__NOLINEDRAWDASH, 0x00080000));
+        opt.addEscherProperty(new EscherSimpleProperty(EscherPropertyTypes.GROUPSHAPE__FLAGS, 0x00020000));
 
         HSSFClientAnchor userAnchor = (HSSFClientAnchor) getAnchor();
         userAnchor.setAnchorType(AnchorType.DONT_MOVE_DO_RESIZE);

Modified: poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFComment.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFComment.java?rev=1868352&r1=1868351&r2=1868352&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFComment.java (original)
+++ poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFComment.java Sat Oct 12 16:32:53 2019
@@ -20,7 +20,7 @@ import org.apache.poi.ddf.DefaultEscherR
 import org.apache.poi.ddf.EscherBSERecord;
 import org.apache.poi.ddf.EscherContainerRecord;
 import org.apache.poi.ddf.EscherOptRecord;
-import org.apache.poi.ddf.EscherProperties;
+import org.apache.poi.ddf.EscherPropertyTypes;
 import org.apache.poi.ddf.EscherSimpleProperty;
 import org.apache.poi.hssf.record.CommonObjectDataSubRecord;
 import org.apache.poi.hssf.record.EndSubRecord;
@@ -98,11 +98,11 @@ public class HSSFComment extends HSSFTex
     protected EscherContainerRecord createSpContainer() {
         EscherContainerRecord spContainer = super.createSpContainer();
         EscherOptRecord opt = spContainer.getChildById(EscherOptRecord.RECORD_ID);
-        opt.removeEscherProperty(EscherProperties.TEXT__TEXTLEFT);
-        opt.removeEscherProperty(EscherProperties.TEXT__TEXTRIGHT);
-        opt.removeEscherProperty(EscherProperties.TEXT__TEXTTOP);
-        opt.removeEscherProperty(EscherProperties.TEXT__TEXTBOTTOM);
-        opt.setEscherProperty(new EscherSimpleProperty(EscherProperties.GROUPSHAPE__PRINT, false, false, GROUP_SHAPE_PROPERTY_DEFAULT_VALUE));
+        opt.removeEscherProperty(EscherPropertyTypes.TEXT__TEXTLEFT);
+        opt.removeEscherProperty(EscherPropertyTypes.TEXT__TEXTRIGHT);
+        opt.removeEscherProperty(EscherPropertyTypes.TEXT__TEXTTOP);
+        opt.removeEscherProperty(EscherPropertyTypes.TEXT__TEXTBOTTOM);
+        opt.setEscherProperty(new EscherSimpleProperty(EscherPropertyTypes.GROUPSHAPE__FLAGS, false, false, GROUP_SHAPE_PROPERTY_DEFAULT_VALUE));
         return spContainer;
     }
 
@@ -290,34 +290,34 @@ public class HSSFComment extends HSSFTex
     }
     
     public void setBackgroundImage(int pictureIndex){
-        setPropertyValue(new EscherSimpleProperty( EscherProperties.FILL__PATTERNTEXTURE, false, true, pictureIndex));
-        setPropertyValue(new EscherSimpleProperty( EscherProperties.FILL__FILLTYPE, false, false, FILL_TYPE_PICTURE));
+        setPropertyValue(new EscherSimpleProperty( EscherPropertyTypes.FILL__PATTERNTEXTURE, false, true, pictureIndex));
+        setPropertyValue(new EscherSimpleProperty( EscherPropertyTypes.FILL__FILLTYPE, false, false, FILL_TYPE_PICTURE));
         EscherBSERecord bse = getPatriarch().getSheet().getWorkbook().getWorkbook().getBSERecord(pictureIndex);
         bse.setRef(bse.getRef() + 1);
     }
     
     public void resetBackgroundImage(){
-        EscherSimpleProperty property = getOptRecord().lookup(EscherProperties.FILL__PATTERNTEXTURE);
+        EscherSimpleProperty property = getOptRecord().lookup(EscherPropertyTypes.FILL__PATTERNTEXTURE);
         if (null != property){
             EscherBSERecord bse = getPatriarch().getSheet().getWorkbook().getWorkbook().getBSERecord(property.getPropertyValue());
             bse.setRef(bse.getRef() - 1);
-            getOptRecord().removeEscherProperty(EscherProperties.FILL__PATTERNTEXTURE);
+            getOptRecord().removeEscherProperty(EscherPropertyTypes.FILL__PATTERNTEXTURE);
         }
-        setPropertyValue(new EscherSimpleProperty( EscherProperties.FILL__FILLTYPE, false, false, FILL_TYPE_SOLID));
+        setPropertyValue(new EscherSimpleProperty( EscherPropertyTypes.FILL__FILLTYPE, false, false, FILL_TYPE_SOLID));
     }
     
     public int getBackgroundImageId(){
-        EscherSimpleProperty property = getOptRecord().lookup(EscherProperties.FILL__PATTERNTEXTURE);
+        EscherSimpleProperty property = getOptRecord().lookup(EscherPropertyTypes.FILL__PATTERNTEXTURE);
         return property == null ? 0 : property.getPropertyValue();
     }
 
     private void setHidden(boolean value){
-        EscherSimpleProperty property = getOptRecord().lookup(EscherProperties.GROUPSHAPE__PRINT);
+        EscherSimpleProperty property = getOptRecord().lookup(EscherPropertyTypes.GROUPSHAPE__FLAGS);
         // see http://msdn.microsoft.com/en-us/library/dd949807(v=office.12).aspx
         if (value){
-            setPropertyValue(new EscherSimpleProperty(EscherProperties.GROUPSHAPE__PRINT, false, false, property.getPropertyValue() | GROUP_SHAPE_HIDDEN_MASK));
+            setPropertyValue(new EscherSimpleProperty(EscherPropertyTypes.GROUPSHAPE__FLAGS, false, false, property.getPropertyValue() | GROUP_SHAPE_HIDDEN_MASK));
         } else {
-            setPropertyValue(new EscherSimpleProperty(EscherProperties.GROUPSHAPE__PRINT, false, false, property.getPropertyValue() & GROUP_SHAPE_NOT_HIDDEN_MASK));
+            setPropertyValue(new EscherSimpleProperty(EscherPropertyTypes.GROUPSHAPE__FLAGS, false, false, property.getPropertyValue() & GROUP_SHAPE_NOT_HIDDEN_MASK));
         }
     }
 

Modified: poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFPicture.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFPicture.java?rev=1868352&r1=1868351&r2=1868352&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFPicture.java (original)
+++ poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFPicture.java Sat Oct 12 16:32:53 2019
@@ -27,7 +27,7 @@ import org.apache.poi.ddf.EscherClientDa
 import org.apache.poi.ddf.EscherComplexProperty;
 import org.apache.poi.ddf.EscherContainerRecord;
 import org.apache.poi.ddf.EscherOptRecord;
-import org.apache.poi.ddf.EscherProperties;
+import org.apache.poi.ddf.EscherPropertyTypes;
 import org.apache.poi.ddf.EscherSimpleProperty;
 import org.apache.poi.ddf.EscherTextboxRecord;
 import org.apache.poi.hssf.model.InternalWorkbook;
@@ -72,7 +72,7 @@ public class HSSFPicture extends HSSFSim
 
     public int getPictureIndex()
     {
-        EscherSimpleProperty property = getOptRecord().lookup(EscherProperties.BLIP__BLIPTODISPLAY);
+        EscherSimpleProperty property = getOptRecord().lookup(EscherPropertyTypes.BLIP__BLIPTODISPLAY);
         if (null == property){
             return -1;
         }
@@ -81,15 +81,15 @@ public class HSSFPicture extends HSSFSim
 
     public void setPictureIndex( int pictureIndex )
     {
-        setPropertyValue(new EscherSimpleProperty( EscherProperties.BLIP__BLIPTODISPLAY, false, true, pictureIndex));
+        setPropertyValue(new EscherSimpleProperty( EscherPropertyTypes.BLIP__BLIPTODISPLAY, false, true, pictureIndex));
     }
 
     @Override
     protected EscherContainerRecord createSpContainer() {
         EscherContainerRecord spContainer = super.createSpContainer();
         EscherOptRecord opt = spContainer.getChildById(EscherOptRecord.RECORD_ID);
-        opt.removeEscherProperty(EscherProperties.LINESTYLE__LINEDASHING);
-        opt.removeEscherProperty(EscherProperties.LINESTYLE__NOLINEDRAWDASH);
+        opt.removeEscherProperty(EscherPropertyTypes.LINESTYLE__LINEDASHING);
+        opt.removeEscherProperty(EscherPropertyTypes.LINESTYLE__NOLINEDRAWDASH);
         spContainer.removeChildRecord(spContainer.getChildById(EscherTextboxRecord.RECORD_ID));
         return spContainer;
     }
@@ -247,8 +247,7 @@ public class HSSFPicture extends HSSFSim
      * The filename of the embedded image
      */
     public String getFileName() {
-        EscherComplexProperty propFile = getOptRecord().lookup(
-                      EscherProperties.BLIP__BLIPFILENAME);
+        EscherComplexProperty propFile = getOptRecord().lookup(EscherPropertyTypes.BLIP__BLIPFILENAME);
         return (null == propFile)
             ? ""
             : StringUtil.getFromUnicodeLE(propFile.getComplexData()).trim();
@@ -257,7 +256,8 @@ public class HSSFPicture extends HSSFSim
     public void setFileName(String data){
         // TODO: add trailing \u0000? 
         byte[] bytes = StringUtil.getToUnicodeLE(data);
-        EscherComplexProperty prop = new EscherComplexProperty(EscherProperties.BLIP__BLIPFILENAME, true, bytes);
+        EscherComplexProperty prop = new EscherComplexProperty(EscherPropertyTypes.BLIP__BLIPFILENAME, true, bytes.length);
+        prop.setComplexData(bytes);
         setPropertyValue(prop);
     }
 

Modified: poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFPolygon.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFPolygon.java?rev=1868352&r1=1868351&r2=1868352&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFPolygon.java (original)
+++ poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFPolygon.java Sat Oct 12 16:32:53 2019
@@ -17,8 +17,22 @@
 
 package org.apache.poi.hssf.usermodel;
 
-import org.apache.poi.ddf.*;
-import org.apache.poi.hssf.record.*;
+import org.apache.poi.ddf.EscherArrayProperty;
+import org.apache.poi.ddf.EscherBoolProperty;
+import org.apache.poi.ddf.EscherClientDataRecord;
+import org.apache.poi.ddf.EscherContainerRecord;
+import org.apache.poi.ddf.EscherOptRecord;
+import org.apache.poi.ddf.EscherPropertyTypes;
+import org.apache.poi.ddf.EscherRGBProperty;
+import org.apache.poi.ddf.EscherRecord;
+import org.apache.poi.ddf.EscherShapePathProperty;
+import org.apache.poi.ddf.EscherSimpleProperty;
+import org.apache.poi.ddf.EscherSpRecord;
+import org.apache.poi.hssf.record.CommonObjectDataSubRecord;
+import org.apache.poi.hssf.record.EndSubRecord;
+import org.apache.poi.hssf.record.EscherAggregate;
+import org.apache.poi.hssf.record.ObjRecord;
+import org.apache.poi.hssf.record.TextObjectRecord;
 import org.apache.poi.util.LittleEndian;
 import org.apache.poi.util.POILogFactory;
 import org.apache.poi.util.POILogger;
@@ -66,24 +80,24 @@ public class HSSFPolygon  extends HSSFSi
             sp.setFlags(EscherSpRecord.FLAG_CHILD | EscherSpRecord.FLAG_HAVEANCHOR | EscherSpRecord.FLAG_HASSHAPETYPE);
         }
         opt.setRecordId(EscherOptRecord.RECORD_ID);
-        opt.setEscherProperty(new EscherSimpleProperty(EscherProperties.TRANSFORM__ROTATION, false, false, 0));
-        opt.setEscherProperty(new EscherSimpleProperty(EscherProperties.GEOMETRY__RIGHT, false, false, 100));
-        opt.setEscherProperty(new EscherSimpleProperty(EscherProperties.GEOMETRY__BOTTOM, false, false, 100));
-        opt.setEscherProperty(new EscherShapePathProperty(EscherProperties.GEOMETRY__SHAPEPATH, EscherShapePathProperty.COMPLEX));
-
-        opt.setEscherProperty(new EscherSimpleProperty(EscherProperties.GEOMETRY__FILLOK, false, false, 0x00010001));
-        opt.setEscherProperty(new EscherSimpleProperty(EscherProperties.LINESTYLE__LINESTARTARROWHEAD, false, false, 0x0));
-        opt.setEscherProperty(new EscherSimpleProperty(EscherProperties.LINESTYLE__LINEENDARROWHEAD, false, false, 0x0));
-        opt.setEscherProperty(new EscherSimpleProperty(EscherProperties.LINESTYLE__LINEENDCAPSTYLE, false, false, 0x0));
-
-        opt.setEscherProperty(new EscherSimpleProperty(EscherProperties.LINESTYLE__LINEDASHING, LINESTYLE_SOLID));
-        opt.setEscherProperty( new EscherBoolProperty( EscherProperties.LINESTYLE__NOLINEDRAWDASH, 0x00080008));
-        opt.setEscherProperty(new EscherSimpleProperty(EscherProperties.LINESTYLE__LINEWIDTH, LINEWIDTH_DEFAULT));
-        opt.setEscherProperty(new EscherRGBProperty(EscherProperties.FILL__FILLCOLOR, FILL__FILLCOLOR_DEFAULT));
-        opt.setEscherProperty(new EscherRGBProperty(EscherProperties.LINESTYLE__COLOR, LINESTYLE__COLOR_DEFAULT));
-        opt.setEscherProperty(new EscherBoolProperty(EscherProperties.FILL__NOFILLHITTEST, 1));
+        opt.setEscherProperty(new EscherSimpleProperty(EscherPropertyTypes.TRANSFORM__ROTATION, false, false, 0));
+        opt.setEscherProperty(new EscherSimpleProperty(EscherPropertyTypes.GEOMETRY__RIGHT, false, false, 100));
+        opt.setEscherProperty(new EscherSimpleProperty(EscherPropertyTypes.GEOMETRY__BOTTOM, false, false, 100));
+        opt.setEscherProperty(new EscherShapePathProperty(EscherPropertyTypes.GEOMETRY__SHAPEPATH, EscherShapePathProperty.COMPLEX));
+
+        opt.setEscherProperty(new EscherSimpleProperty(EscherPropertyTypes.GEOMETRY__FILLOK, false, false, 0x00010001));
+        opt.setEscherProperty(new EscherSimpleProperty(EscherPropertyTypes.LINESTYLE__LINESTARTARROWHEAD, false, false, 0x0));
+        opt.setEscherProperty(new EscherSimpleProperty(EscherPropertyTypes.LINESTYLE__LINEENDARROWHEAD, false, false, 0x0));
+        opt.setEscherProperty(new EscherSimpleProperty(EscherPropertyTypes.LINESTYLE__LINEENDCAPSTYLE, false, false, 0x0));
+
+        opt.setEscherProperty(new EscherSimpleProperty(EscherPropertyTypes.LINESTYLE__LINEDASHING, LINESTYLE_SOLID));
+        opt.setEscherProperty( new EscherBoolProperty( EscherPropertyTypes.LINESTYLE__NOLINEDRAWDASH, 0x00080008));
+        opt.setEscherProperty(new EscherSimpleProperty(EscherPropertyTypes.LINESTYLE__LINEWIDTH, LINEWIDTH_DEFAULT));
+        opt.setEscherProperty(new EscherRGBProperty(EscherPropertyTypes.FILL__FILLCOLOR, FILL__FILLCOLOR_DEFAULT));
+        opt.setEscherProperty(new EscherRGBProperty(EscherPropertyTypes.LINESTYLE__COLOR, LINESTYLE__COLOR_DEFAULT));
+        opt.setEscherProperty(new EscherBoolProperty(EscherPropertyTypes.FILL__NOFILLHITTEST, 1));
 
-        opt.setEscherProperty(new EscherBoolProperty( EscherProperties.GROUPSHAPE__PRINT, 0x080000));
+        opt.setEscherProperty(new EscherBoolProperty( EscherPropertyTypes.GROUPSHAPE__FLAGS, 0x080000));
 
         EscherRecord anchor = getAnchor().getEscherAnchor();
         clientData.setRecordId(EscherClientDataRecord.RECORD_ID);
@@ -123,7 +137,7 @@ public class HSSFPolygon  extends HSSFSi
      * @return array of x coordinates
      */
     public int[] getXPoints() {
-        EscherArrayProperty verticesProp = getOptRecord().lookup(EscherProperties.GEOMETRY__VERTICES);
+        EscherArrayProperty verticesProp = getOptRecord().lookup(EscherPropertyTypes.GEOMETRY__VERTICES);
         if (null == verticesProp){
             return new int[]{};
         }
@@ -140,7 +154,7 @@ public class HSSFPolygon  extends HSSFSi
      * @return array of y coordinates
      */
     public int[] getYPoints() {
-        EscherArrayProperty verticesProp = getOptRecord().lookup(EscherProperties.GEOMETRY__VERTICES);
+        EscherArrayProperty verticesProp = getOptRecord().lookup(EscherPropertyTypes.GEOMETRY__VERTICES);
         if (null == verticesProp){
             return new int[]{};
         }
@@ -165,7 +179,7 @@ public class HSSFPolygon  extends HSSFSi
         if (xPoints.length == 0){
         	logger.log( POILogger.ERROR, "HSSFPolygon must have at least one point");
         }
-        EscherArrayProperty verticesProp = new EscherArrayProperty(EscherProperties.GEOMETRY__VERTICES, false, new byte[0] );
+        EscherArrayProperty verticesProp = new EscherArrayProperty(EscherPropertyTypes.GEOMETRY__VERTICES, false, 0);
         verticesProp.setNumberOfElementsInArray(xPoints.length+1);
         verticesProp.setNumberOfElementsInMemory(xPoints.length+1);
         verticesProp.setSizeOfElements(0xFFF0);
@@ -183,7 +197,7 @@ public class HSSFPolygon  extends HSSFSi
         verticesProp.setElement(point, data);
         setPropertyValue(verticesProp);
 
-        EscherArrayProperty segmentsProp = new EscherArrayProperty(EscherProperties.GEOMETRY__SEGMENTINFO, false, null );
+        EscherArrayProperty segmentsProp = new EscherArrayProperty(EscherPropertyTypes.GEOMETRY__SEGMENTINFO, false, 0);
         segmentsProp.setSizeOfElements(0x0002);
         segmentsProp.setNumberOfElementsInArray(xPoints.length * 2 + 4);
         segmentsProp.setNumberOfElementsInMemory(xPoints.length * 2 + 4);
@@ -205,15 +219,15 @@ public class HSSFPolygon  extends HSSFSi
      * @param height
      */
     public void setPolygonDrawArea(int width, int height) {
-        setPropertyValue(new EscherSimpleProperty(EscherProperties.GEOMETRY__RIGHT, width));
-        setPropertyValue(new EscherSimpleProperty(EscherProperties.GEOMETRY__BOTTOM, height));
+        setPropertyValue(new EscherSimpleProperty(EscherPropertyTypes.GEOMETRY__RIGHT, width));
+        setPropertyValue(new EscherSimpleProperty(EscherPropertyTypes.GEOMETRY__BOTTOM, height));
     }
 
     /**
      * @return shape width
      */
     public int getDrawAreaWidth() {
-        EscherSimpleProperty property = getOptRecord().lookup(EscherProperties.GEOMETRY__RIGHT);
+        EscherSimpleProperty property = getOptRecord().lookup(EscherPropertyTypes.GEOMETRY__RIGHT);
         return property == null ? 100: property.getPropertyValue();
     }
 
@@ -221,7 +235,7 @@ public class HSSFPolygon  extends HSSFSi
      * @return shape height
      */
     public int getDrawAreaHeight() {
-        EscherSimpleProperty property = getOptRecord().lookup(EscherProperties.GEOMETRY__BOTTOM);
+        EscherSimpleProperty property = getOptRecord().lookup(EscherPropertyTypes.GEOMETRY__BOTTOM);
         return property == null ? 100: property.getPropertyValue();
     }
 }

Modified: poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFShape.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFShape.java?rev=1868352&r1=1868351&r2=1868352&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFShape.java (original)
+++ poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFShape.java Sat Oct 12 16:32:53 2019
@@ -26,8 +26,8 @@ import org.apache.poi.ddf.EscherClientAn
 import org.apache.poi.ddf.EscherComplexProperty;
 import org.apache.poi.ddf.EscherContainerRecord;
 import org.apache.poi.ddf.EscherOptRecord;
-import org.apache.poi.ddf.EscherProperties;
 import org.apache.poi.ddf.EscherProperty;
+import org.apache.poi.ddf.EscherPropertyTypes;
 import org.apache.poi.ddf.EscherRGBProperty;
 import org.apache.poi.ddf.EscherSimpleProperty;
 import org.apache.poi.ddf.EscherSpRecord;
@@ -222,7 +222,7 @@ public abstract class HSSFShape implemen
      * The color applied to the lines of this shape.
      */
     public int getLineStyleColor() {
-        EscherRGBProperty rgbProperty = _optRecord.lookup(EscherProperties.LINESTYLE__COLOR);
+        EscherRGBProperty rgbProperty = _optRecord.lookup(EscherPropertyTypes.LINESTYLE__COLOR);
         return rgbProperty == null ? LINESTYLE__COLOR_DEFAULT : rgbProperty.getRgbColor();
     }
 
@@ -230,20 +230,20 @@ public abstract class HSSFShape implemen
      * The color applied to the lines of this shape.
      */
     public void setLineStyleColor(int lineStyleColor) {
-        setPropertyValue(new EscherRGBProperty(EscherProperties.LINESTYLE__COLOR, lineStyleColor));
+        setPropertyValue(new EscherRGBProperty(EscherPropertyTypes.LINESTYLE__COLOR, lineStyleColor));
     }
 
     @Override
     public void setLineStyleColor(int red, int green, int blue) {
         int lineStyleColor = ((blue) << 16) | ((green) << 8) | red;
-        setPropertyValue(new EscherRGBProperty(EscherProperties.LINESTYLE__COLOR, lineStyleColor));
+        setPropertyValue(new EscherRGBProperty(EscherPropertyTypes.LINESTYLE__COLOR, lineStyleColor));
     }
 
     /**
      * The color used to fill this shape.
      */
     public int getFillColor() {
-        EscherRGBProperty rgbProperty = _optRecord.lookup(EscherProperties.FILL__FILLCOLOR);
+        EscherRGBProperty rgbProperty = _optRecord.lookup(EscherPropertyTypes.FILL__FILLCOLOR);
         return rgbProperty == null ? FILL__FILLCOLOR_DEFAULT : rgbProperty.getRgbColor();
     }
 
@@ -251,20 +251,20 @@ public abstract class HSSFShape implemen
      * The color used to fill this shape.
      */
     public void setFillColor(int fillColor) {
-        setPropertyValue(new EscherRGBProperty(EscherProperties.FILL__FILLCOLOR, fillColor));
+        setPropertyValue(new EscherRGBProperty(EscherPropertyTypes.FILL__FILLCOLOR, fillColor));
     }
 
     @Override
     public void setFillColor(int red, int green, int blue) {
         int fillColor = ((blue) << 16) | ((green) << 8) | red;
-        setPropertyValue(new EscherRGBProperty(EscherProperties.FILL__FILLCOLOR, fillColor));
+        setPropertyValue(new EscherRGBProperty(EscherPropertyTypes.FILL__FILLCOLOR, fillColor));
     }
 
     /**
      * @return returns with width of the line in EMUs.  12700 = 1 pt.
      */
     public int getLineWidth() {
-        EscherSimpleProperty property = _optRecord.lookup(EscherProperties.LINESTYLE__LINEWIDTH);
+        EscherSimpleProperty property = _optRecord.lookup(EscherPropertyTypes.LINESTYLE__LINEWIDTH);
         return property == null ? LINEWIDTH_DEFAULT: property.getPropertyValue();
     }
 
@@ -275,14 +275,14 @@ public abstract class HSSFShape implemen
      * @see HSSFShape#LINEWIDTH_ONE_PT
      */
     public void setLineWidth(int lineWidth) {
-        setPropertyValue(new EscherSimpleProperty(EscherProperties.LINESTYLE__LINEWIDTH, lineWidth));
+        setPropertyValue(new EscherSimpleProperty(EscherPropertyTypes.LINESTYLE__LINEWIDTH, lineWidth));
     }
 
     /**
      * @return One of the constants in LINESTYLE_*
      */
     public int getLineStyle() {
-        EscherSimpleProperty property = _optRecord.lookup(EscherProperties.LINESTYLE__LINEDASHING);
+        EscherSimpleProperty property = _optRecord.lookup(EscherPropertyTypes.LINESTYLE__LINEDASHING);
         if (null == property){
             return LINESTYLE_DEFAULT;
         }
@@ -295,26 +295,26 @@ public abstract class HSSFShape implemen
      * @param lineStyle One of the constants in LINESTYLE_*
      */
     public void setLineStyle(int lineStyle) {
-        setPropertyValue(new EscherSimpleProperty(EscherProperties.LINESTYLE__LINEDASHING, lineStyle));
+        setPropertyValue(new EscherSimpleProperty(EscherPropertyTypes.LINESTYLE__LINEDASHING, lineStyle));
         if (getLineStyle() != HSSFShape.LINESTYLE_SOLID) {
-            setPropertyValue(new EscherSimpleProperty(EscherProperties.LINESTYLE__LINEENDCAPSTYLE, 0));
+            setPropertyValue(new EscherSimpleProperty(EscherPropertyTypes.LINESTYLE__LINEENDCAPSTYLE, 0));
             if (getLineStyle() == HSSFShape.LINESTYLE_NONE){
-                setPropertyValue(new EscherBoolProperty( EscherProperties.LINESTYLE__NOLINEDRAWDASH, 0x00080000));
+                setPropertyValue(new EscherBoolProperty( EscherPropertyTypes.LINESTYLE__NOLINEDRAWDASH, 0x00080000));
             } else {
-                setPropertyValue( new EscherBoolProperty( EscherProperties.LINESTYLE__NOLINEDRAWDASH, 0x00080008));
+                setPropertyValue( new EscherBoolProperty( EscherPropertyTypes.LINESTYLE__NOLINEDRAWDASH, 0x00080008));
             }
         }
     }
 
     @Override
     public boolean isNoFill() {
-        EscherBoolProperty property = _optRecord.lookup(EscherProperties.FILL__NOFILLHITTEST);
+        EscherBoolProperty property = _optRecord.lookup(EscherPropertyTypes.FILL__NOFILLHITTEST);
         return property == null ? NO_FILL_DEFAULT : property.getPropertyValue() == NO_FILLHITTEST_TRUE;
     }
 
     @Override
     public void setNoFill(boolean noFill) {
-        setPropertyValue(new EscherBoolProperty(EscherProperties.FILL__NOFILLHITTEST, noFill ? NO_FILLHITTEST_TRUE : NO_FILLHITTEST_FALSE));
+        setPropertyValue(new EscherBoolProperty(EscherPropertyTypes.FILL__NOFILLHITTEST, noFill ? NO_FILLHITTEST_TRUE : NO_FILLHITTEST_FALSE));
     }
 
     protected void setPropertyValue(EscherProperty property){
@@ -366,7 +366,7 @@ public abstract class HSSFShape implemen
      */
     public int getRotationDegree(){
         ByteArrayOutputStream bos = new ByteArrayOutputStream();
-        EscherSimpleProperty property = getOptRecord().lookup(EscherProperties.TRANSFORM__ROTATION);
+        EscherSimpleProperty property = getOptRecord().lookup(EscherPropertyTypes.TRANSFORM__ROTATION);
         if (null == property){
             return 0;
         }
@@ -388,7 +388,7 @@ public abstract class HSSFShape implemen
      * @param value
      */
     public void setRotationDegree(short value){
-        setPropertyValue(new EscherSimpleProperty(EscherProperties.TRANSFORM__ROTATION , (value << 16)));
+        setPropertyValue(new EscherSimpleProperty(EscherPropertyTypes.TRANSFORM__ROTATION , (value << 16)));
     }
 
     /**
@@ -420,7 +420,7 @@ public abstract class HSSFShape implemen
         if (eor == null) {
             return null;
         }
-        EscherProperty ep = eor.lookup(EscherProperties.GROUPSHAPE__SHAPENAME);
+        EscherProperty ep = eor.lookup(EscherPropertyTypes.GROUPSHAPE__SHAPENAME);
         if (ep instanceof EscherComplexProperty) {
             return StringUtil.getFromUnicodeLE(((EscherComplexProperty)ep).getComplexData());
         }

Modified: poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFShapeFactory.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFShapeFactory.java?rev=1868352&r1=1868351&r2=1868352&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFShapeFactory.java (original)
+++ poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFShapeFactory.java Sat Oct 12 16:32:53 2019
@@ -23,8 +23,8 @@ import java.util.Map;
 import org.apache.poi.ddf.EscherClientDataRecord;
 import org.apache.poi.ddf.EscherContainerRecord;
 import org.apache.poi.ddf.EscherOptRecord;
-import org.apache.poi.ddf.EscherProperties;
 import org.apache.poi.ddf.EscherProperty;
+import org.apache.poi.ddf.EscherPropertyTypes;
 import org.apache.poi.ddf.EscherRecord;
 import org.apache.poi.ddf.EscherRecordTypes;
 import org.apache.poi.hssf.record.CommonObjectDataSubRecord;
@@ -110,7 +110,7 @@ public class HSSFShapeFactory {
                     if(optRecord == null) {
                     	shape = new HSSFSimpleShape(container, objRecord, txtRecord);
                     } else {
-                        EscherProperty property = optRecord.lookup(EscherProperties.GEOMETRY__VERTICES);
+                        EscherProperty property = optRecord.lookup(EscherPropertyTypes.GEOMETRY__VERTICES);
                         if (null != property) {
                             shape = new HSSFPolygon(container, objRecord, txtRecord);
                         } else {

Modified: poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFShapeGroup.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFShapeGroup.java?rev=1868352&r1=1868351&r2=1868352&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFShapeGroup.java (original)
+++ poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFShapeGroup.java Sat Oct 12 16:32:53 2019
@@ -29,7 +29,7 @@ import org.apache.poi.ddf.EscherClientAn
 import org.apache.poi.ddf.EscherClientDataRecord;
 import org.apache.poi.ddf.EscherContainerRecord;
 import org.apache.poi.ddf.EscherOptRecord;
-import org.apache.poi.ddf.EscherProperties;
+import org.apache.poi.ddf.EscherPropertyTypes;
 import org.apache.poi.ddf.EscherRecord;
 import org.apache.poi.ddf.EscherRecordTypes;
 import org.apache.poi.ddf.EscherSpRecord;
@@ -104,8 +104,8 @@ public class HSSFShapeGroup extends HSSF
         }
         opt.setRecordId(EscherOptRecord.RECORD_ID);
         opt.setOptions((short) 0x0023);
-        opt.addEscherProperty(new EscherBoolProperty(EscherProperties.PROTECTION__LOCKAGAINSTGROUPING, 0x00040004));
-        opt.addEscherProperty(new EscherBoolProperty(EscherProperties.GROUPSHAPE__PRINT, 0x00080000));
+        opt.addEscherProperty(new EscherBoolProperty(EscherPropertyTypes.PROTECTION__LOCKAGAINSTGROUPING, 0x00040004));
+        opt.addEscherProperty(new EscherBoolProperty(EscherPropertyTypes.GROUPSHAPE__FLAGS, 0x00080000));
 
         anchor = getAnchor().getEscherAnchor();
         clientData.setRecordId(EscherClientDataRecord.RECORD_ID);

Modified: poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFSimpleShape.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFSimpleShape.java?rev=1868352&r1=1868351&r2=1868352&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFSimpleShape.java (original)
+++ poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFSimpleShape.java Sat Oct 12 16:32:53 2019
@@ -17,12 +17,15 @@
 
 package org.apache.poi.hssf.usermodel;
 
+import static org.apache.poi.hssf.record.TextObjectRecord.HORIZONTAL_TEXT_ALIGNMENT_CENTERED;
+import static org.apache.poi.hssf.record.TextObjectRecord.VERTICAL_TEXT_ALIGNMENT_CENTER;
+
 import org.apache.poi.ddf.DefaultEscherRecordFactory;
 import org.apache.poi.ddf.EscherBoolProperty;
 import org.apache.poi.ddf.EscherClientDataRecord;
 import org.apache.poi.ddf.EscherContainerRecord;
 import org.apache.poi.ddf.EscherOptRecord;
-import org.apache.poi.ddf.EscherProperties;
+import org.apache.poi.ddf.EscherPropertyTypes;
 import org.apache.poi.ddf.EscherRGBProperty;
 import org.apache.poi.ddf.EscherShapePathProperty;
 import org.apache.poi.ddf.EscherSimpleProperty;
@@ -36,9 +39,6 @@ import org.apache.poi.hssf.record.TextOb
 import org.apache.poi.ss.usermodel.RichTextString;
 import org.apache.poi.ss.usermodel.SimpleShape;
 
-import static org.apache.poi.hssf.record.TextObjectRecord.HORIZONTAL_TEXT_ALIGNMENT_CENTERED;
-import static org.apache.poi.hssf.record.TextObjectRecord.VERTICAL_TEXT_ALIGNMENT_CENTER;
-
 /**
  * Represents a simple shape such as a line, rectangle or oval.
  */
@@ -121,16 +121,16 @@ public class HSSFSimpleShape extends HSS
         clientData.setOptions( (short) (0x0000) );
 
         EscherOptRecord optRecord = new EscherOptRecord();
-        optRecord.setEscherProperty(new EscherSimpleProperty(EscherProperties.LINESTYLE__LINEDASHING, LINESTYLE_SOLID));
-        optRecord.setEscherProperty( new EscherBoolProperty( EscherProperties.LINESTYLE__NOLINEDRAWDASH, 0x00080008));
+        optRecord.setEscherProperty(new EscherSimpleProperty(EscherPropertyTypes.LINESTYLE__LINEDASHING, LINESTYLE_SOLID));
+        optRecord.setEscherProperty( new EscherBoolProperty( EscherPropertyTypes.LINESTYLE__NOLINEDRAWDASH, 0x00080008));
 //        optRecord.setEscherProperty(new EscherSimpleProperty(EscherProperties.LINESTYLE__LINEWIDTH, LINEWIDTH_DEFAULT));
-        optRecord.setEscherProperty(new EscherRGBProperty(EscherProperties.FILL__FILLCOLOR, FILL__FILLCOLOR_DEFAULT));
-        optRecord.setEscherProperty(new EscherRGBProperty(EscherProperties.LINESTYLE__COLOR, LINESTYLE__COLOR_DEFAULT));
-        optRecord.setEscherProperty(new EscherBoolProperty(EscherProperties.FILL__NOFILLHITTEST, NO_FILLHITTEST_FALSE));
-        optRecord.setEscherProperty( new EscherBoolProperty( EscherProperties.LINESTYLE__NOLINEDRAWDASH, 0x00080008));
+        optRecord.setEscherProperty(new EscherRGBProperty(EscherPropertyTypes.FILL__FILLCOLOR, FILL__FILLCOLOR_DEFAULT));
+        optRecord.setEscherProperty(new EscherRGBProperty(EscherPropertyTypes.LINESTYLE__COLOR, LINESTYLE__COLOR_DEFAULT));
+        optRecord.setEscherProperty(new EscherBoolProperty(EscherPropertyTypes.FILL__NOFILLHITTEST, NO_FILLHITTEST_FALSE));
+        optRecord.setEscherProperty( new EscherBoolProperty( EscherPropertyTypes.LINESTYLE__NOLINEDRAWDASH, 0x00080008));
 
-        optRecord.setEscherProperty( new EscherShapePathProperty( EscherProperties.GEOMETRY__SHAPEPATH, EscherShapePathProperty.COMPLEX ) );
-        optRecord.setEscherProperty(new EscherBoolProperty( EscherProperties.GROUPSHAPE__PRINT, 0x080000));
+        optRecord.setEscherProperty( new EscherShapePathProperty( EscherPropertyTypes.GEOMETRY__SHAPEPATH, EscherShapePathProperty.COMPLEX ) );
+        optRecord.setEscherProperty(new EscherBoolProperty( EscherPropertyTypes.GROUPSHAPE__FLAGS, 0x080000));
         optRecord.setRecordId( EscherOptRecord.RECORD_ID );
 
         EscherTextboxRecord escherTextbox = new EscherTextboxRecord();
@@ -189,7 +189,7 @@ public class HSSFSimpleShape extends HSS
         TextObjectRecord txo = getOrCreateTextObjRecord();
         txo.setStr(rtr);
         if (string.getString() != null){
-            setPropertyValue(new EscherSimpleProperty(EscherProperties.TEXT__TEXTID, string.getString().hashCode()));
+            setPropertyValue(new EscherSimpleProperty(EscherPropertyTypes.TEXT__TEXTID, string.getString().hashCode()));
         }
     }
 
@@ -233,12 +233,12 @@ public class HSSFSimpleShape extends HSS
     }
 
     public int getWrapText(){
-        EscherSimpleProperty property = getOptRecord().lookup(EscherProperties.TEXT__WRAPTEXT);
+        EscherSimpleProperty property = getOptRecord().lookup(EscherPropertyTypes.TEXT__WRAPTEXT);
         return null == property ? WRAP_SQUARE : property.getPropertyValue();
     }
 
     public void setWrapText(int value){
-        setPropertyValue(new EscherSimpleProperty(EscherProperties.TEXT__WRAPTEXT, false, false, value));
+        setPropertyValue(new EscherSimpleProperty(EscherPropertyTypes.TEXT__WRAPTEXT, false, false, value));
     }
 
     /**



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