10#include <com/sun/star/awt/Size.hpp>
11#include <com/sun/star/lang/Locale.hpp>
12#include <rtl/ustring.hxx>
13#include <rtl/character.hxx>
23#include <unordered_map>
31 const OUString &rLanguage = rLocale.Language;
32 if (rLanguage ==
"cs" || rLanguage ==
"hu" || rLanguage ==
"pl")
33 return RTL_TEXTENCODING_MS_1250;
34 if (rLanguage ==
"ru" || rLanguage ==
"uk")
35 return RTL_TEXTENCODING_MS_1251;
36 if (rLanguage ==
"el")
37 return RTL_TEXTENCODING_MS_1253;
38 if (rLanguage ==
"tr")
39 return RTL_TEXTENCODING_MS_1254;
40 if (rLanguage ==
"lt")
41 return RTL_TEXTENCODING_MS_1257;
42 if (rLanguage ==
"th")
43 return RTL_TEXTENCODING_MS_874;
44 if (rLanguage ==
"vi")
45 return RTL_TEXTENCODING_MS_1258;
46 return RTL_TEXTENCODING_MS_1252;
53 g(
static_cast<sal_uInt8>((nColor>>8)&0xFF)),
54 b(
static_cast<sal_uInt8>((nColor>>16)&0xFF)),
78 sal_uInt16 lMin =
static_cast<sal_uInt16
>(lDTTM & 0x0000003F);
80 sal_uInt16 lHour=
static_cast<sal_uInt16
>(lDTTM & 0x0000001F);
82 sal_uInt16 lDay =
static_cast<sal_uInt16
>(lDTTM & 0x0000001F);
84 sal_uInt16 lMon =
static_cast<sal_uInt16
>(lDTTM & 0x0000000F);
86 sal_uInt16 lYear=
static_cast<sal_uInt16
>(lDTTM & 0x000001FF) + 1900;
93 rtl_TextEncoding& rChrSet, OUString& rFontName)
96 OUString sFont = pConvert->ConvertChar(cChar);
100 cChar =
static_cast< sal_Unicode >(cChar | 0xF000);
102 rChrSet = RTL_TEXTENCODING_SYMBOL;
104 else if (cChar < 0xE000 || cChar > 0xF8FF)
112 rChrSet = RTL_TEXTENCODING_UNICODE;
114 rFontName = ::GetNextFontToken(rFontName,
nIndex);
123 rFontName =
"Wingdings";
132 static constexpr OStringLiteral
AUTO(
"auto" );
137 const char pHexDigits[] =
"0123456789ABCDEF";
138 char pBuffer[] =
"000000";
140 pBuffer[0] = pHexDigits[ ( rColor.
GetRed() >> 4 ) & 0x0F ];
141 pBuffer[1] = pHexDigits[ rColor.
GetRed() & 0x0F ];
142 pBuffer[2] = pHexDigits[ ( rColor.
GetGreen() >> 4 ) & 0x0F ];
143 pBuffer[3] = pHexDigits[ rColor.
GetGreen() & 0x0F ];
144 pBuffer[4] = pHexDigits[ ( rColor.
GetBlue() >> 4 ) & 0x0F ];
145 pBuffer[5] = pHexDigits[ rColor.
GetBlue() & 0x0F ];
147 return OString( pBuffer );
152 static constexpr OUStringLiteral
AUTO(
u"auto" );
157 const char pHexDigits[] =
"0123456789ABCDEF";
160 pBuffer[0] = pHexDigits[ ( rColor.
GetRed() >> 4 ) & 0x0F ];
161 pBuffer[1] = pHexDigits[ rColor.
GetRed() & 0x0F ];
162 pBuffer[2] = pHexDigits[ ( rColor.
GetGreen() >> 4 ) & 0x0F ];
163 pBuffer[3] = pHexDigits[ rColor.
GetGreen() & 0x0F ];
164 pBuffer[4] = pHexDigits[ ( rColor.
GetBlue() >> 4 ) & 0x0F ];
165 pBuffer[5] = pHexDigits[ rColor.
GetBlue() & 0x0F ];
167 return OUString( pBuffer );
170#define IN2MM100( v ) static_cast< sal_Int32 >( (v) * 2540.0 + 0.5 )
171#define MM2MM100( v ) static_cast< sal_Int32 >( (v) * 100.0 + 0.5 )
277 sal_Int32 nDeltaWidth = 0;
278 sal_Int32 nDeltaHeight = 0;
280 sal_Int32 nPaperSizeIndex = 0;
283 for ( ; pItem != pEnd; ++pItem )
285 sal_Int32 nCurDeltaHeight = std::abs( pItem->
mnHeight - rSize.Height );
286 sal_Int32 nCurDeltaWidth = std::abs( pItem->
mnWidth - rSize.Width );
289 nDeltaWidth = nCurDeltaWidth;
290 nDeltaHeight = nCurDeltaHeight;
294 if ( nCurDeltaWidth < nDeltaWidth && nCurDeltaHeight < nDeltaHeight )
296 nDeltaWidth = nCurDeltaWidth;
297 nDeltaHeight = nCurDeltaHeight;
303 if ( nDeltaWidth <= nTol && nDeltaHeight <= nTol )
304 return nPaperSizeIndex;
317 OUStringBuffer aStyleIdBuf(
aName.size());
318 for (
size_t i = 0;
i <
aName.size(); ++
i)
321 if (rtl::isAsciiAlphanumeric(nChar) || nChar ==
'-')
324 if (aStyleIdBuf.isEmpty())
325 aStyleIdBuf.append(
char(rtl::toAsciiUpperCase(nChar)));
327 aStyleIdBuf.append(
char(nChar));
330 return aStyleIdBuf.makeStringAndClear();
334 std::u16string_view sStartQuote,
const sal_Unicode uEndQuote )
336 std::u16string_view sRet;
337 size_t nStartIndex = rCommand.find( sStartQuote );
338 if( nStartIndex != std::u16string_view::npos )
340 sal_Int32 nStartLength = sStartQuote.size();
341 size_t nEndIndex = rCommand.find( uEndQuote, nStartIndex + nStartLength);
342 if( nEndIndex != std::u16string_view::npos && nEndIndex > nStartIndex )
344 sRet = rCommand.substr( nStartIndex + nStartLength, nEndIndex - nStartIndex - nStartLength);
361 const sal_Int32 nLen =
aData.getLength();
369 if ( c==
' ' || c==
'"' || c==
'\\' || c==132 || c==0x201c )
380 if (nFnd<0 && nSavPtr>
nFnd)
391 const sal_Int32 nOld =
nNext;
401 if ( nNext<0 || nNext>=
aData.getLength() )
435 const sal_Int32 nLen =
aData.getLength();
436 sal_Int32
n = nStart<0 ?
nFnd : nStart;
441 while (
n<nLen &&
aData[
n]==
' ' )
450 while (
n<nLen &&
aData[
n]!=0x14 )
500 sal_Int32 nStart = 0;
515 if( pFrom ) *pFrom = nStart;
516 if( pTo ) *pTo = nEnd;
518 return nStart && nEnd && (nMax >= nStart) && (nMax >= nEnd);
525 OUString sCombinedCharacters;
532 if ( !rReadParam.
GetResult().startsWithIgnoreAsciiCase(
"d") )
540 if ( rReadParam.
GetResult().startsWithIgnoreAsciiCase(
"(") )
542 for (
int i=0;
i<2;
i++)
549 const OUString sF = rReadParam.
GetResult();
550 if (((
'u' == cChar) && sF.startsWithIgnoreAsciiCase(
"p"))
551 || ((
'd' == cChar) && sF.startsWithIgnoreAsciiCase(
"o")))
556 sal_Int32 nBegin = sPart.indexOf(
'(');
560 sal_Int32 nEnd = sPart.indexOf(
')');
562 if (nBegin != -1 && nEnd != -1)
564 sCombinedCharacters +=
565 sPart.subView(nBegin+1,nEnd-nBegin-1);
571 if (!sCombinedCharacters.isEmpty())
573 aResult.
sType =
"CombinedCharacters";
574 aResult.
sResult = sCombinedCharacters;
578 const OUString sPart = aOriFldParam.
GetResult();
579 sal_Int32 nBegin = sPart.indexOf(
'(');
580 sal_Int32 nEnd = sPart.indexOf(
',');
583 nEnd = sPart.indexOf(
')');
585 if ( nBegin != -1 && nEnd != -1 )
588 for (
int i = nBegin;
i < nEnd-1;
i++)
598 sCombinedCharacters = sPart.copy( nBegin+1, nEnd-nBegin-1 );
599 if ( !sCombinedCharacters.isEmpty() )
601 aResult.
sType =
"Input";
602 aResult.
sResult = sCombinedCharacters;
620 if (
'o' == cChar ||
'O' == cChar)
627 typedef std::unordered_map<std::u16string_view, OString> CustomShapeTypeTranslationHashMap;
628 static const CustomShapeTypeTranslationHashMap aCustomShapeTypeTranslationHashMap{
630 {
u"frame",
"frame" },
631 {
u"rectangle",
"rect" },
632 {
u"round-rectangle",
"roundRect" },
633 {
u"ellipse",
"ellipse" },
634 {
u"diamond",
"diamond" },
635 {
u"isosceles-triangle",
"triangle" },
636 {
u"right-triangle",
"rtTriangle" },
637 {
u"parallelogram",
"parallelogram" },
638 {
u"trapezoid",
"trapezoid" },
639 {
u"hexagon",
"hexagon" },
640 {
u"octagon",
"octagon" },
641 {
u"cross",
"plus" },
642 {
u"star5",
"star5" },
643 {
u"right-arrow",
"rightArrow" },
645 {
u"pentagon-right",
"homePlate" },
649 {
u"mso-spt19",
"arc" },
650 {
u"mso-spt20",
"line" },
651 {
u"mso-spt21",
"plaque" },
653 {
u"ring",
"donut" },
654 {
u"mso-spt24",
"textPlain" },
655 {
u"mso-spt25",
"textStop" },
656 {
u"mso-spt26",
"textTriangle" },
657 {
u"mso-spt27",
"textCanDown" },
658 {
u"mso-spt28",
"textWave1" },
659 {
u"mso-spt29",
"textArchUpPour" },
660 {
u"mso-spt30",
"textCanDown" },
661 {
u"mso-spt31",
"textArchUp" },
662 {
u"mso-spt32",
"straightConnector1" },
663 {
u"mso-spt33",
"bentConnector2" },
664 {
u"mso-spt34",
"bentConnector3" },
665 {
u"mso-spt35",
"bentConnector4" },
666 {
u"mso-spt36",
"bentConnector5" },
667 {
u"mso-spt37",
"curvedConnector2" },
668 {
u"mso-spt38",
"curvedConnector3" },
669 {
u"mso-spt39",
"curvedConnector4" },
670 {
u"mso-spt40",
"curvedConnector5" },
671 {
u"mso-spt41",
"callout1" },
672 {
u"mso-spt42",
"callout2" },
673 {
u"mso-spt43",
"callout3" },
674 {
u"mso-spt44",
"accentCallout1" },
675 {
u"mso-spt45",
"accentCallout2" },
676 {
u"mso-spt46",
"accentCallout3" },
677 {
u"line-callout-1",
"borderCallout1" },
678 {
u"line-callout-2",
"borderCallout2" },
679 {
u"line-callout-3",
"borderCallout3" },
680 {
u"mso-spt49",
"borderCallout3" },
681 {
u"mso-spt50",
"accentBorderCallout1" },
682 {
u"mso-spt51",
"accentBorderCallout2" },
683 {
u"mso-spt52",
"accentBorderCallout3" },
684 {
u"mso-spt53",
"ribbon" },
685 {
u"mso-spt54",
"ribbon2" },
686 {
u"chevron",
"chevron" },
687 {
u"pentagon",
"pentagon" },
688 {
u"forbidden",
"noSmoking" },
689 {
u"star8",
"star8" },
690 {
u"mso-spt59",
"star16" },
691 {
u"mso-spt60",
"star32" },
692 {
u"rectangular-callout",
"wedgeRectCallout" },
693 {
u"round-rectangular-callout",
"wedgeRoundRectCallout" },
694 {
u"round-callout",
"wedgeEllipseCallout" },
695 {
u"mso-spt64",
"wave" },
696 {
u"paper",
"foldedCorner" },
697 {
u"left-arrow",
"leftArrow" },
698 {
u"down-arrow",
"downArrow" },
699 {
u"up-arrow",
"upArrow" },
700 {
u"left-right-arrow",
"leftRightArrow" },
701 {
u"up-down-arrow",
"upDownArrow" },
702 {
u"mso-spt71",
"irregularSeal1" },
703 {
u"bang",
"irregularSeal2" },
704 {
u"lightning",
"lightningBolt" },
705 {
u"heart",
"heart" },
706 {
u"quad-arrow",
"quadArrow" },
707 {
u"left-arrow-callout",
"leftArrowCallout" },
708 {
u"right-arrow-callout",
"rightArrowCallout" },
709 {
u"up-arrow-callout",
"upArrowCallout" },
710 {
u"down-arrow-callout",
"downArrowCallout" },
711 {
u"left-right-arrow-callout",
"leftRightArrowCallout" },
712 {
u"up-down-arrow-callout",
"upDownArrowCallout" },
713 {
u"quad-arrow-callout",
"quadArrowCallout" },
714 {
u"quad-bevel",
"bevel" },
715 {
u"left-bracket",
"leftBracket" },
716 {
u"right-bracket",
"rightBracket" },
717 {
u"left-brace",
"leftBrace" },
718 {
u"right-brace",
"rightBrace" },
719 {
u"mso-spt89",
"leftUpArrow" },
720 {
u"mso-spt90",
"bentUpArrow" },
721 {
u"mso-spt91",
"bentArrow" },
722 {
u"star24",
"star24" },
723 {
u"striped-right-arrow",
"stripedRightArrow" },
724 {
u"notched-right-arrow",
"notchedRightArrow" },
725 {
u"block-arc",
"blockArc" },
726 {
u"smiley",
"smileyFace" },
727 {
u"vertical-scroll",
"verticalScroll" },
728 {
u"horizontal-scroll",
"horizontalScroll" },
729 {
u"circular-arrow",
"circularArrow" },
730 {
u"mso-spt100",
"pie" },
731 {
u"mso-spt101",
"uturnArrow" },
732 {
u"mso-spt102",
"curvedRightArrow" },
733 {
u"mso-spt103",
"curvedLeftArrow" },
734 {
u"mso-spt104",
"curvedUpArrow" },
735 {
u"mso-spt105",
"curvedDownArrow" },
736 {
u"cloud-callout",
"cloudCallout" },
737 {
u"mso-spt107",
"ellipseRibbon" },
738 {
u"mso-spt108",
"ellipseRibbon2" },
739 {
u"flowchart-process",
"flowChartProcess" },
740 {
u"flowchart-decision",
"flowChartDecision" },
741 {
u"flowchart-data",
"flowChartInputOutput" },
742 {
u"flowchart-predefined-process",
"flowChartPredefinedProcess" },
743 {
u"flowchart-internal-storage",
"flowChartInternalStorage" },
744 {
u"flowchart-document",
"flowChartDocument" },
745 {
u"flowchart-multidocument",
"flowChartMultidocument" },
746 {
u"flowchart-terminator",
"flowChartTerminator" },
747 {
u"flowchart-preparation",
"flowChartPreparation" },
748 {
u"flowchart-manual-input",
"flowChartManualInput" },
749 {
u"flowchart-manual-operation",
"flowChartManualOperation" },
750 {
u"flowchart-connector",
"flowChartConnector" },
751 {
u"flowchart-card",
"flowChartPunchedCard" },
752 {
u"flowchart-punched-tape",
"flowChartPunchedTape" },
753 {
u"flowchart-summing-junction",
"flowChartSummingJunction" },
754 {
u"flowchart-or",
"flowChartOr" },
755 {
u"flowchart-collate",
"flowChartCollate" },
756 {
u"flowchart-sort",
"flowChartSort" },
757 {
u"flowchart-extract",
"flowChartExtract" },
758 {
u"flowchart-merge",
"flowChartMerge" },
759 {
u"mso-spt129",
"flowChartOfflineStorage" },
760 {
u"flowchart-stored-data",
"flowChartOnlineStorage" },
761 {
u"flowchart-sequential-access",
"flowChartMagneticTape" },
762 {
u"flowchart-magnetic-disk",
"flowChartMagneticDisk" },
763 {
u"flowchart-direct-access-storage",
"flowChartMagneticDrum" },
764 {
u"flowchart-display",
"flowChartDisplay" },
765 {
u"flowchart-delay",
"flowChartDelay" },
806 {
u"flowchart-alternate-process",
"flowChartAlternateProcess" },
807 {
u"flowchart-off-page-connector",
"flowChartOffpageConnector" },
808 {
u"mso-spt178",
"callout1" },
809 {
u"mso-spt179",
"accentCallout1" },
810 {
u"mso-spt180",
"borderCallout1" },
811 {
u"mso-spt182",
"leftRightUpArrow" },
814 {
u"bracket-pair",
"bracketPair" },
815 {
u"brace-pair",
"bracePair" },
816 {
u"star4",
"star4" },
817 {
u"mso-spt188",
"doubleWave" },
818 {
u"mso-spt189",
"actionButtonBlank" },
819 {
u"mso-spt190",
"actionButtonHome" },
820 {
u"mso-spt191",
"actionButtonHelp" },
821 {
u"mso-spt192",
"actionButtonInformation" },
822 {
u"mso-spt193",
"actionButtonForwardNext" },
823 {
u"mso-spt194",
"actionButtonBackPrevious" },
824 {
u"mso-spt195",
"actionButtonEnd" },
825 {
u"mso-spt196",
"actionButtonBeginning" },
826 {
u"mso-spt197",
"actionButtonReturn" },
827 {
u"mso-spt198",
"actionButtonDocument" },
828 {
u"mso-spt199",
"actionButtonSound" },
829 {
u"mso-spt200",
"actionButtonMovie" },
831 {
u"mso-spt202",
"rect" },
832 {
u"ooxml-actionButtonSound",
"actionButtonSound" },
833 {
u"ooxml-borderCallout1",
"borderCallout1" },
834 {
u"ooxml-plaqueTabs",
"plaqueTabs" },
835 {
u"ooxml-curvedLeftArrow",
"curvedLeftArrow" },
836 {
u"ooxml-octagon",
"octagon" },
837 {
u"ooxml-leftRightRibbon",
"leftRightRibbon" },
838 {
u"ooxml-actionButtonInformation",
"actionButtonInformation" },
839 {
u"ooxml-bentConnector5",
"bentConnector5" },
840 {
u"ooxml-circularArrow",
"circularArrow" },
841 {
u"ooxml-downArrowCallout",
"downArrowCallout" },
842 {
u"ooxml-mathMinus",
"mathMinus" },
843 {
u"ooxml-gear9",
"gear9" },
844 {
u"ooxml-round1Rect",
"round1Rect" },
845 {
u"ooxml-sun",
"sun" },
846 {
u"ooxml-plaque",
"plaque" },
847 {
u"ooxml-chevron",
"chevron" },
848 {
u"ooxml-flowChartPreparation",
"flowChartPreparation" },
849 {
u"ooxml-diagStripe",
"diagStripe" },
850 {
u"ooxml-pentagon",
"pentagon" },
851 {
u"ooxml-funnel",
"funnel" },
852 {
u"ooxml-chartStar",
"chartStar" },
853 {
u"ooxml-accentBorderCallout1",
"accentBorderCallout1" },
854 {
u"ooxml-notchedRightArrow",
"notchedRightArrow" },
855 {
u"ooxml-rightBracket",
"rightBracket" },
856 {
u"ooxml-flowChartOffpageConnector",
"flowChartOffpageConnector" },
857 {
u"ooxml-leftRightArrow",
"leftRightArrow" },
858 {
u"ooxml-decagon",
"decagon" },
859 {
u"ooxml-actionButtonHelp",
"actionButtonHelp" },
860 {
u"ooxml-star24",
"star24" },
861 {
u"ooxml-mathDivide",
"mathDivide" },
862 {
u"ooxml-curvedConnector4",
"curvedConnector4" },
863 {
u"ooxml-flowChartOr",
"flowChartOr" },
864 {
u"ooxml-borderCallout3",
"borderCallout3" },
865 {
u"ooxml-upDownArrowCallout",
"upDownArrowCallout" },
866 {
u"ooxml-flowChartDecision",
"flowChartDecision" },
867 {
u"ooxml-leftRightArrowCallout",
"leftRightArrowCallout" },
868 {
u"ooxml-flowChartManualOperation",
"flowChartManualOperation" },
869 {
u"ooxml-snipRoundRect",
"snipRoundRect" },
870 {
u"ooxml-mathPlus",
"mathPlus" },
871 {
u"ooxml-actionButtonForwardNext",
"actionButtonForwardNext" },
872 {
u"ooxml-can",
"can" },
873 {
u"ooxml-foldedCorner",
"foldedCorner" },
874 {
u"ooxml-star32",
"star32" },
875 {
u"ooxml-flowChartInternalStorage",
"flowChartInternalStorage" },
876 {
u"ooxml-upDownArrow",
"upDownArrow" },
877 {
u"ooxml-irregularSeal2",
"irregularSeal2" },
878 {
u"ooxml-mathEqual",
"mathEqual" },
879 {
u"ooxml-star12",
"star12" },
880 {
u"ooxml-uturnArrow",
"uturnArrow" },
881 {
u"ooxml-squareTabs",
"squareTabs" },
882 {
u"ooxml-leftRightUpArrow",
"leftRightUpArrow" },
883 {
u"ooxml-homePlate",
"homePlate" },
884 {
u"ooxml-dodecagon",
"dodecagon" },
885 {
u"ooxml-leftArrowCallout",
"leftArrowCallout" },
886 {
u"ooxml-chord",
"chord" },
887 {
u"ooxml-quadArrowCallout",
"quadArrowCallout" },
888 {
u"ooxml-actionButtonBeginning",
"actionButtonBeginning" },
889 {
u"ooxml-ellipse",
"ellipse" },
890 {
u"ooxml-actionButtonEnd",
"actionButtonEnd" },
891 {
u"ooxml-arc",
"arc" },
892 {
u"ooxml-star16",
"star16" },
893 {
u"ooxml-parallelogram",
"parallelogram" },
894 {
u"ooxml-bevel",
"bevel" },
895 {
u"ooxml-roundRect",
"roundRect" },
896 {
u"ooxml-accentCallout1",
"accentCallout1" },
897 {
u"ooxml-flowChartSort",
"flowChartSort" },
898 {
u"ooxml-star8",
"star8" },
899 {
u"ooxml-flowChartAlternateProcess",
"flowChartAlternateProcess" },
900 {
u"ooxml-moon",
"moon" },
901 {
u"ooxml-star6",
"star6" },
902 {
u"ooxml-round2SameRect",
"round2SameRect" },
903 {
u"ooxml-nonIsoscelesTrapezoid",
"nonIsoscelesTrapezoid" },
904 {
u"ooxml-diamond",
"diamond" },
905 {
u"ooxml-ellipseRibbon",
"ellipseRibbon" },
906 {
u"ooxml-callout2",
"callout2" },
907 {
u"ooxml-pie",
"pie" },
908 {
u"ooxml-star4",
"star4" },
909 {
u"ooxml-flowChartPredefinedProcess",
"flowChartPredefinedProcess" },
910 {
u"ooxml-flowChartPunchedTape",
"flowChartPunchedTape" },
911 {
u"ooxml-curvedConnector2",
"curvedConnector2" },
912 {
u"ooxml-bentConnector3",
"bentConnector3" },
913 {
u"ooxml-cornerTabs",
"cornerTabs" },
914 {
u"ooxml-hexagon",
"hexagon" },
915 {
u"ooxml-flowChartConnector",
"flowChartConnector" },
916 {
u"ooxml-flowChartMagneticDisk",
"flowChartMagneticDisk" },
917 {
u"ooxml-heart",
"heart" },
918 {
u"ooxml-ribbon2",
"ribbon2" },
919 {
u"ooxml-bracePair",
"bracePair" },
920 {
u"ooxml-flowChartExtract",
"flowChartExtract" },
921 {
u"ooxml-actionButtonHome",
"actionButtonHome" },
922 {
u"ooxml-accentBorderCallout3",
"accentBorderCallout3" },
923 {
u"ooxml-flowChartOfflineStorage",
"flowChartOfflineStorage" },
924 {
u"ooxml-irregularSeal1",
"irregularSeal1" },
925 {
u"ooxml-quadArrow",
"quadArrow" },
926 {
u"ooxml-leftBrace",
"leftBrace" },
927 {
u"ooxml-leftBracket",
"leftBracket" },
928 {
u"ooxml-blockArc",
"blockArc" },
929 {
u"ooxml-curvedConnector3",
"curvedConnector3" },
930 {
u"ooxml-wedgeRoundRectCallout",
"wedgeRoundRectCallout" },
931 {
u"ooxml-actionButtonMovie",
"actionButtonMovie" },
932 {
u"ooxml-flowChartOnlineStorage",
"flowChartOnlineStorage" },
933 {
u"ooxml-gear6",
"gear6" },
934 {
u"ooxml-halfFrame",
"halfFrame" },
935 {
u"ooxml-snip2SameRect",
"snip2SameRect" },
936 {
u"ooxml-triangle",
"triangle" },
937 {
u"ooxml-teardrop",
"teardrop" },
938 {
u"ooxml-flowChartDocument",
"flowChartDocument" },
939 {
u"ooxml-rightArrowCallout",
"rightArrowCallout" },
940 {
u"ooxml-rightBrace",
"rightBrace" },
941 {
u"ooxml-chartPlus",
"chartPlus" },
942 {
u"ooxml-flowChartManualInput",
"flowChartManualInput" },
943 {
u"ooxml-flowChartMerge",
"flowChartMerge" },
944 {
u"ooxml-line",
"line" },
945 {
u"ooxml-downArrow",
"downArrow" },
946 {
u"ooxml-upArrow",
"upArrow" },
947 {
u"ooxml-curvedDownArrow",
"curvedDownArrow" },
948 {
u"ooxml-actionButtonReturn",
"actionButtonReturn" },
949 {
u"ooxml-flowChartInputOutput",
"flowChartInputOutput" },
950 {
u"ooxml-bracketPair",
"bracketPair" },
951 {
u"ooxml-smileyFace",
"smileyFace" },
952 {
u"ooxml-actionButtonBlank",
"actionButtonBlank" },
953 {
u"ooxml-wave",
"wave" },
954 {
u"ooxml-swooshArrow",
"swooshArrow" },
955 {
u"ooxml-flowChartSummingJunction",
"flowChartSummingJunction" },
956 {
u"ooxml-lightningBolt",
"lightningBolt" },
957 {
u"ooxml-flowChartDisplay",
"flowChartDisplay" },
958 {
u"ooxml-actionButtonBackPrevious",
"actionButtonBackPrevious" },
959 {
u"ooxml-frame",
"frame" },
960 {
u"ooxml-rtTriangle",
"rtTriangle" },
961 {
u"ooxml-flowChartMagneticTape",
"flowChartMagneticTape" },
962 {
u"ooxml-curvedRightArrow",
"curvedRightArrow" },
963 {
u"ooxml-leftUpArrow",
"leftUpArrow" },
964 {
u"ooxml-wedgeEllipseCallout",
"wedgeEllipseCallout" },
965 {
u"ooxml-doubleWave",
"doubleWave" },
966 {
u"ooxml-bentArrow",
"bentArrow" },
967 {
u"ooxml-star10",
"star10" },
968 {
u"ooxml-leftArrow",
"leftArrow" },
969 {
u"ooxml-curvedUpArrow",
"curvedUpArrow" },
970 {
u"ooxml-snip1Rect",
"snip1Rect" },
971 {
u"ooxml-ellipseRibbon2",
"ellipseRibbon2" },
972 {
u"ooxml-plus",
"plus" },
973 {
u"ooxml-accentCallout3",
"accentCallout3" },
974 {
u"ooxml-leftCircularArrow",
"leftCircularArrow" },
975 {
u"ooxml-rightArrow",
"rightArrow" },
976 {
u"ooxml-flowChartPunchedCard",
"flowChartPunchedCard" },
977 {
u"ooxml-snip2DiagRect",
"snip2DiagRect" },
978 {
u"ooxml-verticalScroll",
"verticalScroll" },
979 {
u"ooxml-star7",
"star7" },
980 {
u"ooxml-chartX",
"chartX" },
981 {
u"ooxml-cloud",
"cloud" },
982 {
u"ooxml-cube",
"cube" },
983 {
u"ooxml-round2DiagRect",
"round2DiagRect" },
984 {
u"ooxml-flowChartMultidocument",
"flowChartMultidocument" },
985 {
u"ooxml-actionButtonDocument",
"actionButtonDocument" },
986 {
u"ooxml-flowChartTerminator",
"flowChartTerminator" },
987 {
u"ooxml-flowChartDelay",
"flowChartDelay" },
988 {
u"ooxml-curvedConnector5",
"curvedConnector5" },
989 {
u"ooxml-horizontalScroll",
"horizontalScroll" },
990 {
u"ooxml-bentConnector4",
"bentConnector4" },
991 {
u"ooxml-leftRightCircularArrow",
"leftRightCircularArrow" },
992 {
u"ooxml-wedgeRectCallout",
"wedgeRectCallout" },
993 {
u"ooxml-accentCallout2",
"accentCallout2" },
994 {
u"ooxml-flowChartMagneticDrum",
"flowChartMagneticDrum" },
995 {
u"ooxml-corner",
"corner" },
996 {
u"ooxml-borderCallout2",
"borderCallout2" },
997 {
u"ooxml-donut",
"donut" },
998 {
u"ooxml-flowChartCollate",
"flowChartCollate" },
999 {
u"ooxml-mathNotEqual",
"mathNotEqual" },
1000 {
u"ooxml-bentConnector2",
"bentConnector2" },
1001 {
u"ooxml-mathMultiply",
"mathMultiply" },
1002 {
u"ooxml-heptagon",
"heptagon" },
1003 {
u"ooxml-rect",
"rect" },
1004 {
u"ooxml-accentBorderCallout2",
"accentBorderCallout2" },
1005 {
u"ooxml-pieWedge",
"pieWedge" },
1006 {
u"ooxml-upArrowCallout",
"upArrowCallout" },
1007 {
u"ooxml-flowChartProcess",
"flowChartProcess" },
1008 {
u"ooxml-star5",
"star5" },
1009 {
u"ooxml-lineInv",
"lineInv" },
1010 {
u"ooxml-straightConnector1",
"straightConnector1" },
1011 {
u"ooxml-stripedRightArrow",
"stripedRightArrow" },
1012 {
u"ooxml-callout3",
"callout3" },
1013 {
u"ooxml-bentUpArrow",
"bentUpArrow" },
1014 {
u"ooxml-noSmoking",
"noSmoking" },
1015 {
u"ooxml-trapezoid",
"trapezoid" },
1016 {
u"ooxml-cloudCallout",
"cloudCallout" },
1017 {
u"ooxml-callout1",
"callout1" },
1018 {
u"ooxml-ribbon",
"ribbon" },
1019 {
u"ooxml-rect",
"rect" },
1021 auto i(aCustomShapeTypeTranslationHashMap.find(rShapeType));
1022 return i == aCustomShapeTypeTranslationHashMap.end() ?
"rect" :
i->second;
1027 typedef std::unordered_map<std::string_view, MSO_SPT> DMLToVMLTranslationHashMap;
1028 static const DMLToVMLTranslationHashMap aDMLToVMLMap{
1235 return i == aDMLToVMLMap.end() ?
mso_sptNil :
i->second;
1257void CalculateScheme(
const BitmapColor& rBitmapColor, std::vector<int> &vScheme, sal_uInt16 nVariance)
1259 vScheme.resize(3,1);
1260 if( rBitmapColor.GetRed() < rBitmapColor.GetGreen() + nVariance )
1262 if( rBitmapColor.GetRed() < rBitmapColor.GetBlue() + nVariance )
1264 if( rBitmapColor.GetGreen() < rBitmapColor.GetRed() + nVariance )
1266 if( rBitmapColor.GetGreen() < rBitmapColor.GetBlue() + nVariance )
1268 if( rBitmapColor.GetBlue() < rBitmapColor.GetRed() + nVariance )
1270 if( rBitmapColor.GetBlue() < rBitmapColor.GetGreen() + nVariance )
1274bool HasSimilarScheme(
const BitmapColor& rBitmapColor1,
const BitmapColor& rBitmapColor2, sal_uInt16 nVariance)
1276 std::vector<int> vScheme1, vScheme2;
1277 CalculateScheme(rBitmapColor1, vScheme1, nVariance);
1278 CalculateScheme(rBitmapColor2, vScheme2, nVariance);
1279 for(
int i = 0;
i < 3; ++
i )
1281 if( vScheme1[
i] != vScheme2[
i] )
1290 sal_uInt16 nReturn = 0;
1292 bool bFound =
false;
1297 for( sal_uInt16 nVariance = 0; nVariance <= 255; ++nVariance )
1301 if( HasSimilarScheme(rBitmapColor, rPalette[
i], nVariance) )
1303 const sal_uInt16 nActErr = rBitmapColor.GetColorError( rPalette[
i] );
1304 if( nActErr < nLastErr )
1322 switch( sal_uInt32(rCol) )
1324 case sal_uInt32(
COL_BLACK): nCol = 1;
break;
1325 case sal_uInt32(
COL_BLUE): nCol = 9;
break;
1326 case sal_uInt32(
COL_GREEN): nCol = 11;
break;
1327 case sal_uInt32(
COL_CYAN): nCol = 10;
break;
1328 case sal_uInt32(
COL_RED): nCol = 13;
break;
1330 case sal_uInt32(
COL_BROWN): nCol = 14;
break;
1331 case sal_uInt32(
COL_GRAY): nCol = 15;
break;
1338 case sal_uInt32(
COL_YELLOW): nCol = 7;
break;
1339 case sal_uInt32(
COL_WHITE): nCol = 8;
break;
1340 case sal_uInt32(
COL_AUTO): nCol = 0;
break;
1350 nCol =
static_cast< sal_uInt8 >(GetBestIndex(aBmpPal, rCol) + 1);
sal_uInt16 GetEntryCount() const
sal_uInt8 GetBlue() const
sal_uInt8 GetGreen() const
static const ApiPaperSize & getApiSizeForMSPaperSizeIndex(sal_Int32 nMSOPaperIndex)
static sal_Int32 getMSPaperSizeIndex(const css::awt::Size &rSize)
sal_Int32 FindNextStringPiece(sal_Int32 _nStart=-1)
OUString GetResult() const
WW8ReadFieldParams(OUString aData)
sal_Int32 SkipToNextToken()
bool GetTokenSttFromTo(sal_Int32 *_pFrom, sal_Int32 *_pTo, sal_Int32 _nMax)
sal_Int32 GetTokenSttPtr() const
constexpr ::Color COL_LIGHTRED(0xFF, 0x00, 0x00)
constexpr ::Color COL_GRAY(0x80, 0x80, 0x80)
constexpr ::Color COL_GREEN(0x00, 0x80, 0x00)
constexpr ::Color COL_WHITE(0xFF, 0xFF, 0xFF)
constexpr ::Color COL_LIGHTCYAN(0x00, 0xFF, 0xFF)
constexpr ::Color COL_MAGENTA(0x80, 0x00, 0x80)
constexpr ::Color COL_LIGHTMAGENTA(0xFF, 0x00, 0xFF)
constexpr ::Color COL_BROWN(0x80, 0x80, 0x00)
constexpr ::Color COL_YELLOW(0xFF, 0xFF, 0x00)
constexpr ::Color COL_RED(0x80, 0x00, 0x00)
constexpr ::Color COL_AUTO(ColorTransparency, 0xFF, 0xFF, 0xFF, 0xFF)
constexpr ::Color COL_LIGHTGRAY(0xC0, 0xC0, 0xC0)
constexpr ::Color COL_LIGHTBLUE(0x00, 0x00, 0xFF)
constexpr ::Color COL_CYAN(0x00, 0x80, 0x80)
constexpr ::Color COL_LIGHTGREEN(0x00, 0xFF, 0x00)
constexpr ::Color COL_BLUE(0x00, 0x00, 0x80)
constexpr ::Color COL_BLACK(0x00, 0x00, 0x00)
#define ESCHER_ShpInst_TextDeflateInflateDeflate
#define ESCHER_ShpInst_TextPlainText
#define ESCHER_ShpInst_TextSlantUp
UNOTOOLS_DLLPUBLIC StarSymbolToMSMultiFont * CreateStarSymbolToMSMultiFont()
#define SAL_N_ELEMENTS(arr)
mso_sptFlowChartConnector
mso_sptFlowChartMagneticDisk
mso_sptTextChevronInverted
mso_sptNotchedCircularArrow
mso_sptFlowChartManualOperation
mso_sptTextDeflateInflate
mso_sptFlowChartOnlineStorage
mso_sptAccentBorderCallout2
mso_sptAccentBorderCallout1
mso_sptFlowChartPredefinedProcess
mso_sptFlowChartInternalStorage
mso_sptFlowChartOffpageConnector
mso_sptFlowChartMagneticDrum
mso_sptFlowChartManualInput
mso_sptUpDownArrowCallout
mso_sptTextDeflateInflateDeflate
mso_sptFlowChartTerminator
mso_sptFlowChartMagneticTape
mso_sptStraightConnector1
mso_sptFlowChartPreparation
mso_sptFlowChartPunchedCard
mso_sptActionButtonReturn
mso_sptAccentBorderCallout90
mso_sptWedgeEllipseCallout
mso_sptFlowChartOfflineStorage
mso_sptAccentBorderCallout3
mso_sptFlowChartInputOutput
mso_sptActionButtonDocument
mso_sptFlowChartAlternateProcess
mso_sptActionButtonForwardNext
mso_sptActionButtonBeginning
mso_sptActionButtonInformation
mso_sptFlowChartSummingJunction
mso_sptFlowChartPunchedTape
mso_sptFlowChartMultidocument
mso_sptTextTriangleInverted
mso_sptLeftRightArrowCallout
mso_sptActionButtonBackPrevious
constexpr OUStringLiteral aData
::Color BGRToRGB(sal_uInt32 nColor)
Convert a color in BGR format to RGB.
const ApiPaperSize spPaperSizeTable[]
static EquationResult Read_SubF_Combined(WW8ReadFieldParams &rReadParam)
OUString ConvertColorOU(const Color &rColor)
DateTime DTTM2DateTime(tools::Long lDTTM)
Convert from DTTM to Writer's DateTime.
std::u16string_view findQuotedText(std::u16string_view rCommand, std::u16string_view sStartQuote, const sal_Unicode uEndQuote)
Finds the quoted text in a field instruction text.
OString ConvertColor(const Color &rColor)
Converts tools Color to HTML color (without leading hashmark).
rtl_TextEncoding getBestTextEncodingFromLocale(const css::lang::Locale &rLocale)
Returns the best-fit default 8bit encoding for a given locale i.e.
bool HasTextBoxContent(sal_uInt32 nShapeType)
The following function checks if a MSO shapetype is allowed to have textboxcontent.
sal_uInt8 TransColToIco(const Color &rCol)
Convert the input color value to an ico value (0..16)
EquationResult ParseCombinedChars(const OUString &rStr)
sal_Unicode bestFitOpenSymbolToMSFont(sal_Unicode cChar, rtl_TextEncoding &rChrSet, OUString &rFontName)
Convert DateTime to xsd::dateTime string.
OUString CreateDOCXStyleId(std::u16string_view const aName)
OString GetOOXMLPresetGeometry(std::u16string_view rShapeType)
Similar to EnhancedCustomShapeTypeNames::Get(), but it also supports OOXML types and returns a drawin...
MSO_SPT GETVMLShapeType(std::u16string_view aType)
Similar to EnhancedCustomShapeTypeNames::Get(), but returns an MSO_SPT (binary / VML type).
sal_Int32 toInt32(std::u16string_view str, sal_Int16 radix=10)
std::basic_string_view< charT, traits > getToken(std::basic_string_view< charT, traits > sv, charT delimiter, std::size_t &position)
Paper size in 1/100 millimeters.