msfilter: add a drawingML -> VML map

This can be used later for the VML or binary export of shapes imported
from drawingML. Note that without this, drawingML shapes won't be
exported to VML, as e.g. for a triangle it expects a
'isosceles-triangle' type, while the shype's type is 'ooxml-triangle'.

Change-Id: I59abc27febdd026c181a7ff38b16c93567058cb9
This commit is contained in:
Miklos Vajna
2013-12-02 18:38:14 +01:00
parent 8dbedf1667
commit 7f9a03e1b7
2 changed files with 234 additions and 1 deletions

View File

@@ -1088,6 +1088,215 @@ static const CustomShapeTypeTranslationTable pCustomShapeTypeTranslationTable[]
{ "ooxml-ribbon", "ribbon" },
};
struct {
const char* sDML;
MSO_SPT nVML;
} pDMLToVMLTable[] = {
{"notPrimitive", mso_sptNotPrimitive},
{"rectangle", mso_sptRectangle},
{"roundRectangle", mso_sptRoundRectangle},
{"ellipse", mso_sptEllipse},
{"diamond", mso_sptDiamond},
{"triangle", mso_sptIsocelesTriangle},
{"rtTriangle", mso_sptRightTriangle},
{"parallelogram", mso_sptParallelogram},
{"trapezoid", mso_sptTrapezoid},
{"hexagon", mso_sptHexagon},
{"octagon", mso_sptOctagon},
{"plus", mso_sptPlus},
{"star5", mso_sptStar},
{"rightArrow", mso_sptArrow},
{"thickArrow", mso_sptThickArrow},
{"homePlate", mso_sptHomePlate},
{"cube", mso_sptCube},
{"wedgeRoundRectCallout", mso_sptBalloon},
{"star16", mso_sptSeal},
{"arc", mso_sptArc},
{"line", mso_sptLine},
{"plaque", mso_sptPlaque},
{"can", mso_sptCan},
{"donut", mso_sptDonut},
{"textPlain", mso_sptTextSimple},
{"textStop", mso_sptTextOctagon},
{"textTriangle", mso_sptTextHexagon},
{"textCanDown", mso_sptTextCurve},
{"textWave1", mso_sptTextWave},
{"textArchUpPour", mso_sptTextRing},
{"textCanDown", mso_sptTextOnCurve},
{"textArchUp", mso_sptTextOnRing},
{"straightConnector1", mso_sptStraightConnector1},
{"bentConnector2", mso_sptBentConnector2},
{"bentConnector3", mso_sptBentConnector3},
{"bentConnector4", mso_sptBentConnector4},
{"bentConnector5", mso_sptBentConnector5},
{"curvedConnector2", mso_sptCurvedConnector2},
{"curvedConnector3", mso_sptCurvedConnector3},
{"curvedConnector4", mso_sptCurvedConnector4},
{"curvedConnector5", mso_sptCurvedConnector5},
{"callout1", mso_sptCallout1},
{"callout2", mso_sptCallout2},
{"callout3", mso_sptCallout3},
{"accentCallout1", mso_sptAccentCallout1},
{"accentCallout2", mso_sptAccentCallout2},
{"accentCallout3", mso_sptAccentCallout3},
{"borderCallout1", mso_sptBorderCallout1},
{"borderCallout2", mso_sptBorderCallout2},
{"borderCallout3", mso_sptBorderCallout3},
{"accentBorderCallout1", mso_sptAccentBorderCallout1},
{"accentBorderCallout2", mso_sptAccentBorderCallout2},
{"accentBorderCallout3", mso_sptAccentBorderCallout3},
{"ribbon", mso_sptRibbon},
{"ribbon2", mso_sptRibbon2},
{"chevron", mso_sptChevron},
{"pentagon", mso_sptPentagon},
{"noSmoking", mso_sptNoSmoking},
{"star8", mso_sptSeal8},
{"star16", mso_sptSeal16},
{"star32", mso_sptSeal32},
{"wedgeRectCallout", mso_sptWedgeRectCallout},
{"wedgeRoundRectCallout", mso_sptWedgeRRectCallout},
{"wedgeEllipseCallout", mso_sptWedgeEllipseCallout},
{"wave", mso_sptWave},
{"foldedCorner", mso_sptFoldedCorner},
{"leftArrow", mso_sptLeftArrow},
{"downArrow", mso_sptDownArrow},
{"upArrow", mso_sptUpArrow},
{"leftRightArrow", mso_sptLeftRightArrow},
{"upDownArrow", mso_sptUpDownArrow},
{"irregularSeal1", mso_sptIrregularSeal1},
{"irregularSeal2", mso_sptIrregularSeal2},
{"lightningBolt", mso_sptLightningBolt},
{"heart", mso_sptHeart},
{"pictureFrame", mso_sptPictureFrame},
{"quadArrow", mso_sptQuadArrow},
{"leftArrowCallout", mso_sptLeftArrowCallout},
{"rightArrowCallout", mso_sptRightArrowCallout},
{"upArrowCallout", mso_sptUpArrowCallout},
{"downArrowCallout", mso_sptDownArrowCallout},
{"leftRightArrowCallout", mso_sptLeftRightArrowCallout},
{"upDownArrowCallout", mso_sptUpDownArrowCallout},
{"quadArrowCallout", mso_sptQuadArrowCallout},
{"bevel", mso_sptBevel},
{"leftBracket", mso_sptLeftBracket},
{"rightBracket", mso_sptRightBracket},
{"leftBrace", mso_sptLeftBrace},
{"rightBrace", mso_sptRightBrace},
{"leftUpArrow", mso_sptLeftUpArrow},
{"bentUpArrow", mso_sptBentUpArrow},
{"bentArrow", mso_sptBentArrow},
{"star24", mso_sptSeal24},
{"stripedRightArrow", mso_sptStripedRightArrow},
{"notchedRightArrow", mso_sptNotchedRightArrow},
{"blockArc", mso_sptBlockArc},
{"smileyFace", mso_sptSmileyFace},
{"verticalScroll", mso_sptVerticalScroll},
{"horizontalScroll", mso_sptHorizontalScroll},
{"circularArrow", mso_sptCircularArrow},
{"notchedCircularArrow", mso_sptNotchedCircularArrow},
{"uturnArrow", mso_sptUturnArrow},
{"curvedRightArrow", mso_sptCurvedRightArrow},
{"curvedLeftArrow", mso_sptCurvedLeftArrow},
{"curvedUpArrow", mso_sptCurvedUpArrow},
{"curvedDownArrow", mso_sptCurvedDownArrow},
{"cloudCallout", mso_sptCloudCallout},
{"ellipseRibbon", mso_sptEllipseRibbon},
{"ellipseRibbon2", mso_sptEllipseRibbon2},
{"flowChartProcess", mso_sptFlowChartProcess},
{"flowChartDecision", mso_sptFlowChartDecision},
{"flowChartInputOutput", mso_sptFlowChartInputOutput},
{"flowChartPredefinedProcess", mso_sptFlowChartPredefinedProcess},
{"flowChartInternalStorage", mso_sptFlowChartInternalStorage},
{"flowChartDocument", mso_sptFlowChartDocument},
{"flowChartMultidocument", mso_sptFlowChartMultidocument},
{"flowChartTerminator", mso_sptFlowChartTerminator},
{"flowChartPreparation", mso_sptFlowChartPreparation},
{"flowChartManualInput", mso_sptFlowChartManualInput},
{"flowChartManualOperation", mso_sptFlowChartManualOperation},
{"flowChartConnector", mso_sptFlowChartConnector},
{"flowChartPunchedCard", mso_sptFlowChartPunchedCard},
{"flowChartPunchedTape", mso_sptFlowChartPunchedTape},
{"flowChartSummingJunction", mso_sptFlowChartSummingJunction},
{"flowChartOr", mso_sptFlowChartOr},
{"flowChartCollate", mso_sptFlowChartCollate},
{"flowChartSort", mso_sptFlowChartSort},
{"flowChartExtract", mso_sptFlowChartExtract},
{"flowChartMerge", mso_sptFlowChartMerge},
{"flowChartOfflineStorage", mso_sptFlowChartOfflineStorage},
{"flowChartOnlineStorage", mso_sptFlowChartOnlineStorage},
{"flowChartMagneticTape", mso_sptFlowChartMagneticTape},
{"flowChartMagneticDisk", mso_sptFlowChartMagneticDisk},
{"flowChartMagneticDrum", mso_sptFlowChartMagneticDrum},
{"flowChartDisplay", mso_sptFlowChartDisplay},
{"flowChartDelay", mso_sptFlowChartDelay},
{"textPlain", mso_sptTextPlainText},
{"textStop", mso_sptTextStop},
{"textTriangle", mso_sptTextTriangle},
{"textTriangleInverted", mso_sptTextTriangleInverted},
{"textChevron", mso_sptTextChevron},
{"textChevronInverted", mso_sptTextChevronInverted},
{"textRingInside", mso_sptTextRingInside},
{"textRingOutside", mso_sptTextRingOutside},
{"textArchUp", mso_sptTextArchUpCurve},
{"textArchDown", mso_sptTextArchDownCurve},
{"textCircle", mso_sptTextCircleCurve},
{"textButton", mso_sptTextButtonCurve},
{"textArchUpPour", mso_sptTextArchUpPour},
{"textArchDownPour", mso_sptTextArchDownPour},
{"textCirclePour", mso_sptTextCirclePour},
{"textButtonPour", mso_sptTextButtonPour},
{"textCurveUp", mso_sptTextCurveUp},
{"textCurveDown", mso_sptTextCurveDown},
{"textCascadeUp", mso_sptTextCascadeUp},
{"textCascadeDown", mso_sptTextCascadeDown},
{"textWave1", mso_sptTextWave1},
{"textWave2", mso_sptTextWave2},
{"textWave3", mso_sptTextWave3},
{"textWave4", mso_sptTextWave4},
{"textInflate", mso_sptTextInflate},
{"textDeflate", mso_sptTextDeflate},
{"textInflateBottom", mso_sptTextInflateBottom},
{"textDeflateBottom", mso_sptTextDeflateBottom},
{"textInflateTop", mso_sptTextInflateTop},
{"textDeflateTop", mso_sptTextDeflateTop},
{"textDeflateInflate", mso_sptTextDeflateInflate},
{"textDeflateInflateDeflate", mso_sptTextDeflateInflateDeflate},
{"textFadeRight", mso_sptTextFadeRight},
{"textFadeLeft", mso_sptTextFadeLeft},
{"textFadeUp", mso_sptTextFadeUp},
{"textFadeDown", mso_sptTextFadeDown},
{"textSlantUp", mso_sptTextSlantUp},
{"textSlantDown", mso_sptTextSlantDown},
{"textCanUp", mso_sptTextCanUp},
{"textCanDown", mso_sptTextCanDown},
{"flowChartAlternateProcess", mso_sptFlowChartAlternateProcess},
{"flowChartOffpageConnector", mso_sptFlowChartOffpageConnector},
{"callout1", mso_sptCallout90},
{"accentCallout1", mso_sptAccentCallout90},
{"borderCallout1", mso_sptBorderCallout90},
{"accentBorderCallout1", mso_sptAccentBorderCallout90},
{"leftRightUpArrow", mso_sptLeftRightUpArrow},
{"sun", mso_sptSun},
{"moon", mso_sptMoon},
{"bracketPair", mso_sptBracketPair},
{"bracePair", mso_sptBracePair},
{"star4", mso_sptSeal4},
{"doubleWave", mso_sptDoubleWave},
{"actionButtonBlank", mso_sptActionButtonBlank},
{"actionButtonHome", mso_sptActionButtonHome},
{"actionButtonHelp", mso_sptActionButtonHelp},
{"actionButtonInformation", mso_sptActionButtonInformation},
{"actionButtonForwardNext", mso_sptActionButtonForwardNext},
{"actionButtonBackPrevious", mso_sptActionButtonBackPrevious},
{"actionButtonEnd", mso_sptActionButtonEnd},
{"actionButtonBeginning", mso_sptActionButtonBeginning},
{"actionButtonReturn", mso_sptActionButtonReturn},
{"actionButtonDocument", mso_sptActionButtonDocument},
{"actionButtonSound", mso_sptActionButtonSound},
{"actionButtonMovie", mso_sptActionButtonMovie},
{"hostControl", mso_sptHostControl},
{"textBox", mso_sptTextBox},
};
typedef boost::unordered_map< const char*, const char*, rtl::CStringHash, rtl::CStringEqual> CustomShapeTypeTranslationHashMap;
static CustomShapeTypeTranslationHashMap* pCustomShapeTypeTranslationHashMap = NULL;
@@ -1112,6 +1321,26 @@ const char* GetOOXMLPresetGeometry( const char* sShapeType )
return sPresetGeo;
}
typedef boost::unordered_map< const char*, MSO_SPT, rtl::CStringHash, rtl::CStringEqual> DMLToVMLTranslationHashMap;
static DMLToVMLTranslationHashMap* pDMLToVMLMap;
MSO_SPT GETVMLShapeType(OString aType)
{
const char* pDML = GetOOXMLPresetGeometry(aType.getStr());
if (!pDMLToVMLMap)
{
pDMLToVMLMap = new DMLToVMLTranslationHashMap();
for (size_t i = 0; i < SAL_N_ELEMENTS(pDMLToVMLTable); ++i)
(*pDMLToVMLMap)[pDMLToVMLTable[i].sDML] = pDMLToVMLTable[i].nVML;
}
if (pDMLToVMLMap->find(pDML) == pDMLToVMLMap->end())
return mso_sptNil;
return (*pDMLToVMLMap)[pDML];
}
}
}