Appendix C: Shape Types

Internally, a shape type is defined as a fixed set of property values, the most important being the geometry of the shape (the pVertices property, etc.). Each shape stores in itself only those properties that differ from its shape type. When a shape is asked for a property that isn't in its local table, it looks in the shape type's table. If the shape type doesn't define a value for the property, then the property's default value is used.

In the file format, shapes store their shape types in the instance field of the msofbtSp record.

typedef enum
   {
   msosptMin = 0,
   msosptNotPrimitive = msosptMin,
   msosptRectangle = 1,
   msosptRoundRectangle = 2,
   msosptEllipse = 3,
   msosptDiamond = 4,
   msosptIsocelesTriangle = 5,
   msosptRightTriangle = 6,
   msosptParallelogram = 7,
   msosptTrapezoid = 8,
   msosptHexagon = 9,
   msosptOctagon = 10,
   msosptPlus = 11,
   msosptStar = 12,
   msosptArrow = 13,
   msosptThickArrow = 14,
   msosptHomePlate = 15,
   msosptCube = 16,
   msosptBalloon = 17,
   msosptSeal = 18,
   msosptArc = 19,
   msosptLine = 20,
   msosptPlaque = 21,
   msosptCan = 22,
   msosptDonut = 23,
   msosptTextSimple = 24,
   msosptTextOctagon = 25,
   msosptTextHexagon = 26,
   msosptTextCurve = 27,
   msosptTextWave = 28,
   msosptTextRing = 29,
   msosptTextOnCurve = 30,
   msosptTextOnRing = 31,
   msosptStraightConnector1 = 32,
   msosptBentConnector2 = 33,
   msosptBentConnector3 = 34,
   msosptBentConnector4 = 35,
   msosptBentConnector5 = 36,
   msosptCurvedConnector2 = 37,
   msosptCurvedConnector3 = 38,
   msosptCurvedConnector4 = 39,
   msosptCurvedConnector5 = 40,
   msosptCallout1 = 41,
   msosptCallout2 = 42,
   msosptCallout3 = 43,
   msosptAccentCallout1 = 44,
   msosptAccentCallout2 = 45,
   msosptAccentCallout3 = 46,
   msosptBorderCallout1 = 47,
   msosptBorderCallout2 = 48,
   msosptBorderCallout3 = 49,
   msosptAccentBorderCallout1 = 50,
   msosptAccentBorderCallout2 = 51,
   msosptAccentBorderCallout3 = 52,
   msosptRibbon = 53,
   msosptRibbon2 = 54,
   msosptChevron = 55,
   msosptPentagon = 56,
   msosptNoSmoking = 57,
   msosptSeal8 = 58,
   msosptSeal16 = 59,
   msosptSeal32 = 60,
   msosptWedgeRectCallout = 61,
   msosptWedgeRRectCallout = 62,
   msosptWedgeEllipseCallout = 63,
   msosptWave = 64,
   msosptFoldedCorner = 65,
   msosptLeftArrow = 66,
   msosptDownArrow = 67,
   msosptUpArrow = 68,
   msosptLeftRightArrow = 69,
   msosptUpDownArrow = 70,
   msosptIrregularSeal1 = 71,
   msosptIrregularSeal2 = 72,
   msosptLightningBolt = 73,
   msosptHeart = 74,
   msosptPictureFrame = 75,
   msosptQuadArrow = 76,
   msosptLeftArrowCallout = 77,
   msosptRightArrowCallout = 78,
   msosptUpArrowCallout = 79,
   msosptDownArrowCallout = 80,
   msosptLeftRightArrowCallout = 81,
   msosptUpDownArrowCallout = 82,
   msosptQuadArrowCallout = 83,
   msosptBevel = 84,
   msosptLeftBracket = 85,
   msosptRightBracket = 86,
   msosptLeftBrace = 87,
   msosptRightBrace = 88,
   msosptLeftUpArrow = 89,
   msosptBentUpArrow = 90,
   msosptBentArrow = 91,
   msosptSeal24 = 92,
   msosptStripedRightArrow = 93,
   msosptNotchedRightArrow = 94,
   msosptBlockArc = 95,
   msosptSmileyFace = 96,
   msosptVerticalScroll = 97,
   msosptHorizontalScroll = 98,
   msosptCircularArrow = 99,
   msosptNotchedCircularArrow = 100,
   msosptUturnArrow = 101,
   msosptCurvedRightArrow = 102,
   msosptCurvedLeftArrow = 103,
   msosptCurvedUpArrow = 104,
   msosptCurvedDownArrow = 105,
   msosptCloudCallout = 106,
   msosptEllipseRibbon = 107,
   msosptEllipseRibbon2 = 108,
   msosptFlowChartProcess = 109,
   msosptFlowChartDecision = 110,
   msosptFlowChartInputOutput = 111,
   msosptFlowChartPredefinedProcess = 112,
   msosptFlowChartInternalStorage = 113,
   msosptFlowChartDocument = 114,
   msosptFlowChartMultidocument = 115,
   msosptFlowChartTerminator = 116,
   msosptFlowChartPreparation = 117,
   msosptFlowChartManualInput = 118,
   msosptFlowChartManualOperation = 119,
   msosptFlowChartConnector = 120,
   msosptFlowChartPunchedCard = 121,
   msosptFlowChartPunchedTape = 122,
   msosptFlowChartSummingJunction = 123,
   msosptFlowChartOr = 124,
   msosptFlowChartCollate = 125,
   msosptFlowChartSort = 126,
   msosptFlowChartExtract = 127,
   msosptFlowChartMerge = 128,
   msosptFlowChartOfflineStorage = 129,
   msosptFlowChartOnlineStorage = 130,
   msosptFlowChartMagneticTape = 131,
   msosptFlowChartMagneticDisk = 132,
   msosptFlowChartMagneticDrum = 133,
   msosptFlowChartDisplay = 134,
   msosptFlowChartDelay = 135,
   msosptTextPlainText = 136,
   msosptTextStop = 137,
   msosptTextTriangle = 138,
   msosptTextTriangleInverted = 139,
   msosptTextChevron = 140,
   msosptTextChevronInverted = 141,
   msosptTextRingInside = 142,
   msosptTextRingOutside = 143,
   msosptTextArchUpCurve = 144,
   msosptTextArchDownCurve = 145,
   msosptTextCircleCurve = 146,
   msosptTextButtonCurve = 147,
   msosptTextArchUpPour = 148,
   msosptTextArchDownPour = 149,
   msosptTextCirclePour = 150,
   msosptTextButtonPour = 151,
   msosptTextCurveUp = 152,
   msosptTextCurveDown = 153,
   msosptTextCascadeUp = 154,
   msosptTextCascadeDown = 155,
   msosptTextWave1 = 156,
   msosptTextWave2 = 157,
   msosptTextWave3 = 158,
   msosptTextWave4 = 159,
   msosptTextInflate = 160,
   msosptTextDeflate = 161,
   msosptTextInflateBottom = 162,
   msosptTextDeflateBottom = 163,
   msosptTextInflateTop = 164,
   msosptTextDeflateTop = 165,
   msosptTextDeflateInflate = 166,
   msosptTextDeflateInflateDeflate = 167,
   msosptTextFadeRight = 168,
   msosptTextFadeLeft = 169,
   msosptTextFadeUp = 170,
   msosptTextFadeDown = 171,
   msosptTextSlantUp = 172,
   msosptTextSlantDown = 173,
   msosptTextCanUp = 174,
   msosptTextCanDown = 175,
   msosptFlowChartAlternateProcess = 176,
   msosptFlowChartOffpageConnector = 177,
   msosptCallout90 = 178,
   msosptAccentCallout90 = 179,
   msosptBorderCallout90 = 180,
   msosptAccentBorderCallout90 = 181,
   msosptLeftRightUpArrow = 182,
   msosptSun = 183,
   msosptMoon = 184,
   msosptBracketPair = 185,
   msosptBracePair = 186,
   msosptSeal4 = 187,
   msosptDoubleWave = 188,
   msosptActionButtonBlank = 189,
   msosptActionButtonHome = 190,
   msosptActionButtonHelp = 191,
   msosptActionButtonInformation = 192,
   msosptActionButtonForwardNext = 193,
   msosptActionButtonBackPrevious = 194,
   msosptActionButtonEnd = 195,
   msosptActionButtonBeginning = 196,
   msosptActionButtonReturn = 197,
   msosptActionButtonDocument = 198,
   msosptActionButtonSound = 199,
   msosptActionButtonMovie = 200,
   msosptHostControl = 201,
   msosptTextBox = 202,
   msosptMax,
   msosptNil = 0x0FFF,
 } MSOSPT;