File indexing completed on 2024-12-08 12:55:54

0001 /* This file is part of the Calligra project
0002    Copyright (C) 2010, 2011 Matus Uzak <matus.uzak@ixonos.com>
0003 
0004    This library is free software; you can redistribute it and/or
0005    modify it under the terms of the Library GNU General Public
0006    version 2 of the License, or (at your option) version 3 or,
0007    at the discretion of KDE e.V (which shall act as a proxy as in
0008    section 14 of the GPLv3), any later version..
0009 
0010    This library is distributed in the hope that it will be useful,
0011    but WITHOUT ANY WARRANTY; without even the implied warranty of
0012    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
0013    Library General Public License for more details.
0014 
0015    You should have received a copy of the GNU Library General Public License
0016    along with this library; see the file COPYING.LIB.  If not, write to
0017    the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
0018    Boston, MA 02110-1301, USA.
0019 */
0020 
0021 #ifndef MSODRAW_H
0022 #define MSODRAW_H
0023 
0024 /**
0025  * The MSOSPT enumeration specifies the preset shapes and preset text shape
0026  * geometries that will be used for a shape.  An enumeration of this type is
0027  * used so that a custom geometry does not need to be specified but can instead
0028  * be automatically constructed by the generating application.
0029  * [MS-ODRAW] — v20101219
0030  */
0031 enum MSOSPT
0032 {
0033     msosptMin = 0x0, //libmso specific
0034     msosptNotPrimitive = 0x0,
0035     msosptRectangle = 0x1,
0036     msosptRoundRectangle = 0x2,
0037     msosptEllipse = 0x3,
0038     msosptDiamond = 0x4,
0039     msosptIsocelesTriangle = 0x5,
0040     msosptRightTriangle = 0x6,
0041     msosptParallelogram = 0x7,
0042     msosptTrapezoid = 0x8,
0043     msosptHexagon = 0x9,
0044     msosptOctagon = 0x0a,
0045     msosptPlus = 0x0b,
0046     msosptStar = 0x0c,
0047     msosptArrow = 0x0d,
0048     msosptThickArrow = 0x0e,
0049     msosptHomePlate = 0x0f,
0050 
0051     msosptCube = 0x10,
0052     msosptBaloon = 0x11,
0053     msosptSeal = 0x12,
0054     msosptArc = 0x13,
0055     msosptLine = 0x14,
0056     msosptPlaque = 0x15,
0057     msosptCan = 0x16,
0058     msosptDonut = 0x17,
0059     msosptTextSimple = 0x18,
0060     msosptTextOctagon = 0x19,
0061     msosptTextHexagon = 0x1a,
0062     msosptTextCurve = 0x1b,
0063     msosptTextWave = 0x1c,
0064     msosptTextRing = 0x1d,
0065     msosptTextOnCurve = 0x1e,
0066     msosptTextOnRing = 0x1f,
0067 
0068     msosptStraightConnector1 = 0x20,
0069     msosptBentConnector2 = 0x21,
0070     msosptBentConnector3 = 0x22,
0071     msosptBentConnector4 = 0x23,
0072     msosptBentConnector5 = 0x24,
0073     msosptCurvedConnector2 = 0x25,
0074     msosptCurvedConnector3 = 0x26,
0075     msosptCurvedConnector4 = 0x27,
0076     msosptCurvedConnector5 = 0x28,
0077     msosptCallout1 = 0x29,
0078     msosptCallout2 = 0x2a,
0079     msosptCallout3 = 0x2b,
0080     msosptAccentCallout1 = 0x2c,
0081     msosptAccentCallout2 = 0x2d,
0082     msosptAccentCallout3 = 0x2e,
0083     msosptBorderCallout1 = 0x2f,
0084 
0085     msosptBorderCallout2 = 0x30,
0086     msosptBorderCallout3 = 0x31,
0087     msosptAccentBorderCallout1 = 0x32,
0088     msosptAccentBorderCallout2 = 0x33,
0089     msosptAccentBorderCallout3 = 0x34,
0090     msosptRibbon = 0x35,
0091     msosptRibbon2 = 0x36,
0092     msosptChevron = 0x37,
0093     msosptPentagon = 0x38,
0094     msosptNoSmoking = 0x39,
0095     msosptSeal8 = 0x3a,
0096     msosptSeal16 = 0x3b,
0097     msosptSeal32 = 0x3c,
0098     msosptWedgeRectCallout = 0x3d,
0099     msosptWedgeRRectCallout = 0x3e,
0100     msosptWedgeEllipseCallout = 0x3f,
0101 
0102     msosptWave = 0x40,
0103     msosptFoldedCorner = 0x41,
0104     msosptLeftArrow = 0x42,
0105     msosptDownArrow = 0x43,
0106     msosptUpArrow = 0x44,
0107     msosptLeftRightArrow = 0x45,
0108     msosptUpDownArrow = 0x46,
0109     msosptIrregularSeal1 = 0x47,
0110     msosptIrregularSeal2 = 0x48,
0111     msosptLightningBolt = 0x49,
0112     msosptHeart = 0x4a,
0113     msosptPictureFrame = 0x4b,
0114     msosptQuadArrow = 0x4c,
0115     msosptLeftArrowCallout = 0x4d,
0116     msosptRightArrowCallout = 0x4e,
0117     msosptUpArrowCallout = 0x4f,
0118 
0119     msosptDownArrowCallout = 0x50,
0120     msosptLeftRightArrowCallout = 0x51,
0121     msosptUpDownArrowCallout = 0x52,
0122     msosptQuadArrowCallout = 0x53,
0123     msosptBevel = 0x54,
0124     msosptLeftBracket = 0x55,
0125     msosptRightBracket = 0x56,
0126     msosptLeftBrace = 0x57,
0127     msosptRightBrace = 0x58,
0128     msosptLeftUpArrow = 0x59,
0129     msosptBentUpArrow = 0x5a,
0130     msosptBentArrow = 0x5b,
0131     msosptSeal24 = 0x5c,
0132     msosptStripedRightArrow = 0x5d,
0133     msosptNotchedRightArrow = 0x5e,
0134     msosptBlockArc = 0x5f,
0135 
0136     msosptSmileyFace = 0x60,
0137     msosptVerticalScroll = 0x61,
0138     msosptHorizontalScroll = 0x62,
0139     msosptCircularArrow = 0x63,
0140     msosptNotchedCircularArrow = 0x64,
0141     msosptUturnArrow = 0x65,
0142     msosptCurvedRightArrow = 0x66,
0143     msosptCurvedLeftArrow = 0x67,
0144     msosptCurvedUpArrow = 0x68,
0145     msosptCurvedDownArrow = 0x69,
0146     msosptCloudCallout = 0x6a,
0147     msosptEllipseRibbon = 0x6b,
0148     msosptEllipseRibbon2 = 0x6c,
0149     msosptFlowChartProcess = 0x6d,
0150     msosptFlowChartDecision = 0x6e,
0151     msosptFlowChartInputOutput = 0x6f,
0152 
0153     msosptFlowChartPredefinedProcess = 0x70,
0154     msosptFlowChartInternalStorage = 0x71,
0155     msosptFlowChartDocument = 0x72,
0156     msosptFlowChartMultidocument = 0x73,
0157     msosptFlowChartTerminator = 0x74,
0158     msosptFlowChartPreparation = 0x75,
0159     msosptFlowChartManualInput = 0x76,
0160     msosptFlowChartManualOperation = 0x77,
0161     msosptFlowChartConnector = 0x78,
0162     msosptFlowChartPunchedCard = 0x79,
0163     msosptFlowChartPunchedTape = 0x7a,
0164     msosptFlowChartSummingJunction = 0x7b,
0165     msosptFlowChartOr = 0x7c,
0166     msosptFlowChartCollate = 0x7d,
0167     msosptFlowChartSort = 0x7e,
0168     msosptFlowChartExtract = 0x7f,
0169 
0170     msosptFlowChartMerge = 0x80,
0171     msosptFlowChartOfflineStorage = 0x81,
0172     msosptFlowChartOnlineStorage = 0x82,
0173     msosptFlowChartMagneticTape = 0x83,
0174     msosptFlowChartMagneticDisk = 0x84,
0175     msosptFlowChartMagneticDrum = 0x85,
0176     msosptFlowChartDisplay = 0x86,
0177     msosptFlowChartDelay = 0x87,
0178     msosptTextPlainText = 0x88,
0179     msosptTextStop = 0x89,
0180     msosptTextTriangle = 0x8a,
0181     msosptTextTriangleInverted = 0x8b,
0182     msosptTextChevron = 0x8c,
0183     msosptTextChevronInverted = 0x8d,
0184     msosptTextRingInside = 0x8e,
0185     msosptTextRingOutside = 0x8f,
0186 
0187     msosptTextArchUpCurve = 0x90,
0188     msosptTextArchDownCurve = 0x91,
0189     msosptTextCircleCurve = 0x92,
0190     msosptTextButtonCurve = 0x93,
0191     msosptTextArchUpPour = 0x94,
0192     msosptTextArchDownPour = 0x95,
0193     msosptTextCirclePour = 0x96,
0194     msosptTextButtonPour = 0x97,
0195     msosptTextCurveUp = 0x98,
0196     msosptTextCurveDown = 0x99,
0197     msosptTextCascadeUp = 0x9a,
0198     msosptTextCascadeDown = 0x9b,
0199     msosptTextWave1 = 0x9c,
0200     msosptTextWave2 = 0x9d,
0201     msosptTextWave3 = 0x9e,
0202     msosptTextWave4 = 0x9f,
0203 
0204     msosptTextInflate = 0xa0,
0205     msosptTextDeflate = 0xa1,
0206     msosptTextInflateBottom = 0xa2,
0207     msosptTextDeflateBottom = 0xa3,
0208     msosptTextInflateTop = 0xa4,
0209     msosptTextDeflateTop = 0xa5,
0210     msosptTextDeflateInflate = 0xa6,
0211     msosptTextDeflateInflateDeflate = 0xa7,
0212     msosptTextFadeRight = 0xa8,
0213     msosptTextFadeLeft = 0xa9,
0214     msosptTextFadeUp = 0xaa,
0215     msosptTextFadeDown = 0xab,
0216     msosptTextSlantUp = 0xac,
0217     msosptTextSlantDown = 0xad,
0218     msosptTextCanUp = 0xae,
0219     msosptTextCanDown = 0xaf,
0220 
0221     msosptFlowChartAlternateProcess = 0xb0,
0222     msosptFlowChartOffpageConnector = 0xb1,
0223     msosptCallout90 = 0xb2,
0224     msosptAccentCallout90 = 0xb3,
0225     msosptBorderCallout90 = 0xb4,
0226     msosptAccentBorderCallout90 = 0xb5,
0227     msosptLeftRightUpArrow = 0xb6,
0228     msosptSun = 0xb7,
0229     msosptMoon = 0xb8,
0230     msosptBracketPair = 0xb9,
0231     msosptBracePair = 0xba,
0232     msosptSeal4 = 0xbb,
0233     msosptDoubleWave = 0xbc,
0234     msosptActionButtonBlank = 0xbd,
0235     msosptActionButtonHome = 0xbe,
0236     msosptActionButtonHelp = 0xbf,
0237 
0238     msosptActionButtonInformation = 0xc0,
0239     msosptActionButtonForwardNext = 0xc1,
0240     msosptActionButtonBackPrevious = 0xc2,
0241     msosptActionButtonEnd = 0xc3,
0242     msosptActionButtonBeginning = 0xc4,
0243     msosptActionButtonReturn = 0xc5,
0244     msosptActionButtonDocument = 0xc6,
0245     msosptActionButtonSound = 0xc7,
0246     msosptActionButtonMovie = 0xc8,
0247     msosptHostControl = 0xc9,
0248     msosptTextBox = 0xca,
0249     msosptNil = 0x0FFF //libmso specific
0250 };
0251 
0252 /**
0253  * The MSOLINESTYLE enumeration specifies the type of line style that will be
0254  * used.  [MS-ODRAW] — v20101219
0255  */
0256 enum MSOLINESTYLE
0257 {
0258     msolineSimple,      //0x00  A simple line.
0259     msolineDouble,      //0x01  A double line.
0260     msolineThickThin,   //0x02  A thick line and a thin line.
0261     msolineThinThick,   //0x03  A thin line and a thick line.
0262     msolineTripl        //0x04  A triple line.
0263 };
0264 
0265 /**
0266  * The MSOLINEEND enumeration specifies the line end decorations that
0267  * appear at the ends of lines.
0268  */
0269 enum MSOLINEEND
0270 {
0271     msolineNoEnd,
0272     msolineArrowEnd,
0273     msolineArrowStealthEnd,
0274     msolineArrowDiamondEnd,
0275     msolineArrowOvalEnd,
0276     msolineArrowOpenEnd,
0277     msolineArrowChevronEnd,
0278     msolineArrowDoubleChevronEnd
0279 };
0280 
0281 /**
0282  * The MSOLINECAP enumeration specifies ways to cap the ends of lines
0283  * in the document.
0284  */
0285 enum MSOLINECAP
0286 {
0287     msolineEndCapRound,
0288     msolineEndCapSquare,
0289     msolineEndCapFlat
0290 };
0291 
0292 /**
0293  * The MSOLINEJOIN enumeration specifies the types of join styles that
0294  * can be applied to lines in the document.
0295  */
0296 enum MSOLINEJOIN
0297 {
0298     msolineJoinBevel,
0299     msolineJoinMiter,
0300     msolineJoinRound
0301 };
0302 
0303 /**
0304  * The MSOLINEDASHING enumeration, as shown in the following table, specifies
0305  * preset dashed-line values. Each style corresponds to a precise binary
0306  * representation of the repeating dash style. Each 1 corresponds to a line
0307  * segment, and each 0 corresponds to a space.  [MS-ODRAW] — v20101219
0308  */
0309 enum MSOLINEDASHING
0310 {
0311     msolineSolid,             //0x00  1
0312     msolineDashSys,           //0x01  1110
0313     msolineDotSys,            //0x02  10
0314     msolineDashDotSys,        //0x03  111010
0315     msolineDashDotDotSys,     //0x04  11101010
0316     msolineDotGEL,            //0x05  1000
0317     msolineDashGEL,           //0x06  1111000
0318     msolineLongDashGEL,       //0x07  11111111000
0319     msolineDashDotGEL,        //0x08  11110001000
0320     msolineLongDashDotGEL,    //0x09  111111110001000
0321     msolineLongDashDotDotGEL  //0x0A  1111111100010001000
0322 };
0323 
0324 /**
0325  * The MSOFILLTYPE enumeration specifies the fill types.
0326  * [MS-ODRAW] — v20101219
0327  */
0328 enum MSOFILLTYPE
0329 {
0330     msofillSolid = 0x0,
0331     msofillPattern = 0x1,
0332     msofillTexture = 0x2,
0333     msofillPicture = 0x3,
0334     msofillShade = 0x4,
0335     msofillShadeCenter = 0x5,
0336     msofillShadeShape = 0x6,
0337     msofillShadeScale = 0x7,
0338     msofillShadeTitle = 0x8,
0339     msofillBackground = 0x9
0340 };
0341 
0342 /**
0343  * The MSOPATHTYPE enumeration specifies how the individual pieces of a path
0344  * SHOULD be interpreted.  [MS-ODRAW] — v20101219
0345  */
0346 enum MSOPATHTYPE
0347 {
0348     msopathLineTo = 0,
0349     msopathCurveTo,
0350     msopathMoveTo,
0351     msopathClose,
0352     msopathEnd,
0353     msopathEscape,
0354     msopathClientEscape
0355 };
0356 
0357 /**
0358  * The MSOWRAPMODE enumeration specifies how text wraps 
0359  * SHOULD be interpreted.  [MS-ODRAW] — v20101219
0360  */
0361 enum MSOWRAPMODE
0362 {
0363     msowrapSquare = 0,
0364     msowrapByPoints,
0365     msowrapNone
0366 };
0367 
0368 /**
0369  * The MSOANCHOR enumeration specifies the suggested placement rule for a body
0370  * of text.  These enumeration values are relative to the orientation, text box
0371  * area, and margin sizes of the containing shape.  The exact placement of the
0372  * text is application dependent and varies to accommodate other languages and
0373  * text properties.  These enumeration values MAY be used.
0374  * [MS-ODRAW] — v20101219
0375  */
0376 enum MSOANCHOR
0377 {
0378     msoanchorTop = 0x0,
0379     msoanchorMiddle = 0x1,
0380     msoanchorBottom = 0x2,
0381     msoanchorTopCentered = 0x3,
0382     msoanchorMiddleCentered = 0x4,
0383     msoanchorBottomCentered = 0x5,
0384     msoanchorTopBaseline = 0x6,
0385     msoanchorBottomBaseline = 0x7,
0386     msoanchorTopCenteredBaseline = 0x8,
0387     msoanchorBottomCenteredBaseline = 0x9
0388 };
0389 
0390 /**
0391  * The POSH enumeration specifies the type of horizontal positioning to use for
0392  * a shape.  [MS-ODRAW] — v20101219
0393  */
0394 enum POSH
0395 {
0396     msophAbs = 0x0,
0397     msophLeft = 0x1,
0398     msophCenter = 0x2,
0399     msophRight = 0x3,
0400     msophInside = 0x4,
0401     msophOutside = 0x5
0402 };
0403 
0404 /**
0405  * The POSRELH enumeration specifies a page element relative to which a shape
0406  * is horizontally positioned.  [MS-ODRAW] — v20101219
0407  */
0408 enum POSRELH
0409 {
0410 // NOTE: Based on our tests the enumeration should start from ZERO.
0411     msoprhMargin = 0x1,
0412     msoprhPage = 0x2,
0413     msoprhText = 0x3,
0414     msoprhChar = 0x4
0415 };
0416 
0417 /**
0418  * The POSV enumeration specifies the type of vertical positioning to use for a
0419  * shape.  [MS-ODRAW] — v20101219
0420  */
0421 enum POSV
0422 {
0423     msopvAbs = 0x0,
0424     msopvTop = 0x1,
0425     msopvCenter = 0x2,
0426     msopvBottom = 0x3,
0427     msopvInside = 0x4,
0428     msopvOutside = 0x5
0429 };
0430 
0431 /**
0432  * The POSRELV enumeration specifies a page element relative to which a shape
0433  * is vertically positioned.  [MS-ODRAW] — v20101219
0434  */
0435 
0436 enum POSRELV
0437 {
0438 // NOTE: Based on our tests the enumeration should start from ZERO.
0439     msoprvMargin = 0x1,
0440     msoprvPage = 0x2,
0441     msoprvText = 0x3,
0442     msoprvLine = 0x4
0443 };
0444 
0445 #endif