27 #include <rtl/tencinfo.h>
86 #include <lineinfo.hxx>
92 #include <com/sun/star/i18n/ScriptType.hpp>
105 if (pLine && !pLine->
isEmpty())
111 case SvxBorderLineStyle::SOLID:
119 case SvxBorderLineStyle::DOTTED:
122 case SvxBorderLineStyle::DASHED:
125 case SvxBorderLineStyle::DOUBLE:
126 case SvxBorderLineStyle::DOUBLE_THIN:
129 case SvxBorderLineStyle::THINTHICK_SMALLGAP:
132 case SvxBorderLineStyle::THINTHICK_MEDIUMGAP:
135 case SvxBorderLineStyle::THINTHICK_LARGEGAP:
138 case SvxBorderLineStyle::THICKTHIN_SMALLGAP:
141 case SvxBorderLineStyle::THICKTHIN_MEDIUMGAP:
144 case SvxBorderLineStyle::THICKTHIN_LARGEGAP:
147 case SvxBorderLineStyle::EMBOSSED:
150 case SvxBorderLineStyle::ENGRAVED:
153 case SvxBorderLineStyle::OUTSET:
156 case SvxBorderLineStyle::INSET:
159 case SvxBorderLineStyle::FINE_DASHED:
162 case SvxBorderLineStyle::DASH_DOT:
165 case SvxBorderLineStyle::DASH_DOT_DOT:
168 case SvxBorderLineStyle::NONE:
174 double const fConverted(
179 + OString::number(static_cast<sal_Int32>(fConverted)));
185 aRet.append(static_cast<sal_Int32>(fConverted) / 2);
191 return aRet.makeStringAndClear();
195 const char* pStr, sal_uInt16 nDist,
201 aRet.append(static_cast<sal_Int32>(nDist));
202 if (eShadowLocation == SvxShadowLocation::BottomRight)
204 return aRet.makeStringAndClear();
211 m_bControlLtrRtl =
true;
217 if (m_bIsBeforeFirstParagraph && m_rExport.m_nTextTyp !=
TXT_HDFT)
218 m_bIsBeforeFirstParagraph =
false;
223 sal_uInt32 nRow = pTextNodeInfo->getRow();
224 sal_uInt32 nCell = pTextNodeInfo->getCell();
227 if (m_nTableDepth > 0 && !m_bTableCellOpen)
230 pTextNodeInfo->getInnerForDepth(m_nTableDepth));
231 OSL_ENSURE(pDeepInner,
"TableNodeInfoInner not found");
234 if (pDeepInner && (pDeepInner->getCell() == 0 || m_bTableRowEnded))
236 StartTableRow(pDeepInner);
243 if ((nRow == 0 && nCell == 0) || (m_nTableDepth == 0 && pTextNodeInfo->getDepth()))
248 sal_uInt32 nCurrentDepth = pTextNodeInfo->getDepth();
250 if (nCurrentDepth > m_nTableDepth)
253 for (sal_uInt32 nDepth = m_nTableDepth + 1; nDepth <= pTextNodeInfo->getDepth();
257 pTextNodeInfo->getInnerForDepth(nDepth));
259 m_bLastTable = (nDepth == pTextNodeInfo->getDepth());
261 StartTableRow(pInner);
265 m_nTableDepth = nCurrentDepth;
270 OSL_ENSURE(m_aRun.getLength() == 0,
"m_aRun is not empty");
276 bool bLastPara =
false;
277 if (m_rExport.m_nTextTyp ==
TXT_FTN || m_rExport.m_nTextTyp ==
TXT_EDN
278 || m_rExport.m_rDoc.IsClipBoard())
282 = m_rExport.GetCurrentNodeIndex()
283 && m_rExport.GetCurrentNodeIndex() == m_rExport.m_pCurPam->End()->nNode.GetIndex();
286 FinishTableRowCell(pTextNodeInfoInner);
291 aParagraph->
append(m_aAfterRuns.makeStringAndClear());
292 if (m_bTableAfterCell)
293 m_bTableAfterCell =
false;
304 if (m_nColBreakNeeded)
307 m_nColBreakNeeded =
false;
310 if (!m_bBufferSectionHeaders)
329 OSL_ENSURE(m_aStyles.getLength() == 0,
"m_aStyles is not empty");
332 m_rExport.Strm().WriteOString(m_aSectionBreaks.makeStringAndClear());
333 m_bBufferSectionBreaks =
true;
336 if (!m_bBufferSectionHeaders)
337 m_rExport.Strm().WriteOString(m_aSectionHeaders.makeStringAndClear());
342 m_rExport.OutputSectionBreaks(pTextNode->
GetpSwAttrSet(), *pTextNode);
350 m_rExport.OutputSectionBreaks(&(pFormat->
GetAttrSet()), *pTableNode);
352 m_bBufferSectionBreaks =
false;
362 m_rExport.OutputSectionBreaks(pTextNode->
GetpSwAttrSet(), *pTextNode);
370 if (!m_rExport.GetRTFFlySyntax())
376 if (!m_bBufferSectionHeaders)
377 m_rExport.Strm().WriteOString(aPar.makeStringAndClear());
379 m_aSectionHeaders.append(aPar);
389 const OString
aProperties = m_aStyles.makeStringAndClear();
390 m_rExport.Strm().WriteOString(aProperties);
394 bool bSingleEmptyRun)
396 SAL_INFO(
"sw.rtf", __func__ <<
", bSingleEmptyRun: " << bSingleEmptyRun);
399 m_bSingleEmptyRun = bSingleEmptyRun;
400 if (!m_bSingleEmptyRun)
406 OSL_ENSURE(m_aRunText.getLength() == 0,
"m_aRunText is not empty");
412 m_aRun.appendAndClear(m_aRunText);
420 if (!m_bSingleEmptyRun && m_bInRun)
427 OSL_ENSURE(m_aStyles.getLength() == 0,
"m_aStyles is not empty");
432 const OString
aProperties = MoveCharacterProperties(
true);
433 m_aRun->append(aProperties);
438 const OString aAssocHich = m_aStylesAssocHich.makeStringAndClear();
439 const OString aAssocDbch = m_aStylesAssocDbch.makeStringAndClear();
440 const OString aAssocRtlch = m_aStylesAssocRtlch.makeStringAndClear();
441 const OString aAssocLtrch = m_aStylesAssocLtrch.makeStringAndClear();
442 const OString aNormal = m_aStyles.makeStringAndClear();
445 if (aAutoWriteRtlLtr && !m_bControlLtrRtl)
447 m_bControlLtrRtl = !aAssocRtlch.isEmpty();
449 m_nScript = i18n::ScriptType::LATIN;
454 if (!aAssocRtlch.isEmpty())
462 if (!aAssocRtlch.isEmpty())
467 if (!aAssocHich.isEmpty())
471 if (!aNormal.isEmpty())
475 if (!aAssocDbch.isEmpty())
481 if (m_bControlLtrRtl)
483 m_bControlLtrRtl =
false;
487 case i18n::ScriptType::LATIN:
490 case i18n::ScriptType::ASIAN:
493 case i18n::ScriptType::COMPLEX:
501 return aBuf.makeStringAndClear();
506 SAL_INFO(
"sw.rtf", __func__ <<
", rText: " << rText);
507 RawText(rText, m_rExport.GetCurrentEncoding());
520 WW8Ruby aWW8Ruby(rNode, rRuby, GetExport());
522 aStr += OUString::number(aWW8Ruby.
GetJC()) +
" \\* \"Font:" + aWW8Ruby.
GetFontFamily()
524 aStr += OUString::number((aWW8Ruby.
GetRubyHeight() + 5) / 10) +
" \\o";
529 aStr +=
"(\\s\\up " + OUString::number((aWW8Ruby.
GetBaseHeight() + 10) / 20 - 1) +
"(";
549 m_aRun->append(
" HYPERLINK ");
551 m_aRun->append(
"\"");
553 m_aRun->append(
"\" ");
555 if (!rTarget.isEmpty())
557 m_aRun->append(
"\\\\t \"");
559 m_aRun->append(
"\" ");
575 const OUString& rURL = m_aURLs.top();
582 if (isAtEndOfParagraph)
585 m_aRunText->append(
"}}");
587 m_aRunText->append(
'}');
592 m_aRun->append(
"}}");
604 SAL_INFO(
"sw.rtf",
"TODO: " << __func__);
612 if (pRedline->
GetType() == RedlineType::Insert)
616 m_aRun->append(static_cast<sal_Int32>(
617 m_rExport.GetRedline(
SW_MOD()->GetRedlineAuthor(pRedline->
GetAuthor()))));
620 else if (pRedline->
GetType() == RedlineType::Delete)
624 m_aRun->append(static_cast<sal_Int32>(
625 m_rExport.GetRedline(
SW_MOD()->GetRedlineAuthor(pRedline->
GetAuthor()))));
637 SAL_INFO(
"sw.rtf",
"TODO: " << __func__);
642 OString* pStyle = m_rExport.GetStyle(nStyle);
643 OStringBuffer aStyle;
645 aStyle.append(static_cast<sal_Int32>(nStyle));
647 aStyle.append(*pStyle);
648 if (!m_bBufferSectionHeaders)
649 m_rExport.Strm().WriteOString(aStyle);
651 m_aSectionHeaders.append(aStyle);
658 if (m_nTableDepth > 1)
661 m_aStyles.append(static_cast<sal_Int32>(m_nTableDepth));
663 m_bWroteCellInfo =
true;
674 InitTableHelper(pTableTextNodeInfoInner);
676 const SwTable* pTable = pTableTextNodeInfoInner->getTable();
680 TableOrientation(pTableTextNodeInfoInner);
681 TableBidi(pTableTextNodeInfoInner);
682 TableHeight(pTableTextNodeInfoInner);
683 TableCanSplit(pTableTextNodeInfoInner);
687 static const SvxBoxItemLine aBorders[] = { SvxBoxItemLine::TOP, SvxBoxItemLine::LEFT,
688 SvxBoxItemLine::BOTTOM, SvxBoxItemLine::RIGHT };
690 static const char* aRowPadNames[]
694 static const char* aRowPadUnits[]
698 for (
int i = 0;
i < 4; ++
i)
700 m_aRowDefs.append(aRowPadUnits[
i]);
701 m_aRowDefs.append(sal_Int32(3));
702 m_aRowDefs.append(aRowPadNames[i]);
703 m_aRowDefs.append(static_cast<sal_Int32>(rBox.
GetDistance(aBorders[i])));
707 const double fWidthRatio = m_pTableWrt->GetAbsWidthRatio();
709 SwWriteTableRow* pRow = aRows[pTableTextNodeInfoInner->getRow()].get();
713 sal_uInt32 nCurrentDepth = pTableTextNodeInfoInner->getDepth();
714 m_aCells[nCurrentDepth] = pRow->
GetCells().size();
715 for (sal_uInt32
i = 0;
i < m_aCells[nCurrentDepth];
i++)
720 pTableTextNodeInfoInner->setCell(
i);
721 TableCellProperties(pTableTextNodeInfoInner);
728 + rtl::math::round(nSz * fWidthRatio)));
743 SwWriteTableRow* pRow = aRows[pTableTextNodeInfoInner->getRow()].get();
745 = pRow->
GetCells()[pTableTextNodeInfoInner->getCell()].get();
752 static const SvxBoxItemLine aBorders[] = { SvxBoxItemLine::TOP, SvxBoxItemLine::LEFT,
753 SvxBoxItemLine::BOTTOM, SvxBoxItemLine::RIGHT };
754 static const char* aBorderNames[]
759 static const char* aCellPadNames[]
762 static const char* aCellPadUnits[]
765 for (
int i = 0;
i < 4; ++
i)
769 if (rBox.GetDistance(aBorders[i]))
771 m_aRowDefs.append(aCellPadUnits[i]);
772 m_aRowDefs.append(sal_Int32(3));
773 m_aRowDefs.append(aCellPadNames[i]);
774 m_aRowDefs.append(static_cast<sal_Int32>(rBox.GetDistance(aBorders[i])));
782 const SwTable* pTable = pTableTextNodeInfoInner->getTable();
783 const SwTableBox* pTableBox = pTableTextNodeInfoInner->getTableBox();
790 aColor = pTableColorProp->GetColor();
794 if (pRowColorProp && pRowColorProp->GetColor() !=
COL_AUTO)
795 aColor = pRowColorProp->GetColor();
798 SwWriteTableRow* pRow = aRows[pTableTextNodeInfoInner->getRow()].get();
800 = pRow->
GetCells()[pTableTextNodeInfoInner->getCell()].get();
804 if (pBrushItem->GetColor() !=
COL_AUTO)
805 aColor = pBrushItem->GetColor();
811 m_aRowDefs.append(static_cast<sal_Int32>(m_rExport.GetColor(aColor)));
827 const SwTableBox* pTabBox = pTableTextNodeInfoInner->getTableBox();
835 sal_Int32 nHeight = 0;
852 m_aRowDefs.append(nHeight);
859 const SwTableBox* pTabBox = pTableTextNodeInfoInner->getTableBox();
871 const SwTable* pTable = pTableTextNodeInfoInner->getTable();
874 if (m_rExport.TrueFrameDirection(*pFrameFormat) != SvxFrameDirection::Horizontal_RL_TB)
884 SwWriteTableRow* pRow = aRows[pTableTextNodeInfoInner->getRow()].get();
886 = pRow->
GetCells()[pTableTextNodeInfoInner->getCell()].get();
890 if (SvxFrameDirection::Vertical_RL_TB == m_rExport.TrueFrameDirection(*pCellFormat))
892 else if (SvxFrameDirection::Vertical_LR_BT == m_rExport.TrueFrameDirection(*pCellFormat))
904 if (!pVertOrientItem)
909 case text::VertOrientation::CENTER:
912 case text::VertOrientation::BOTTOM:
926 FinishTableRowCell(pNodeInfoInner);
932 const SwTable* pTable = pTableTextNodeInfoInner->getTable();
938 case text::HoriOrientation::CENTER:
939 aTableAdjust.setLength(0);
942 case text::HoriOrientation::RIGHT:
943 aTableAdjust.setLength(0);
947 case text::HoriOrientation::LEFT_AND_WIDTH:
955 m_aRowDefs.append(aTableAdjust);
961 SAL_INFO(
"sw.rtf",
"TODO: " << __func__);
973 const SwTable* pTable = pTableTextNodeInfoInner->getTable();
974 if (m_pTableWrt && pTable == m_pTableWrt->GetTable())
978 bool bRelBoxSize =
false;
981 GetTablePageSize(pTableTextNodeInfoInner.get(), nPageSize, bRelBoxSize);
988 m_pTableWrt = std::make_unique<SwWriteTable>(pTable, pLayout);
990 m_pTableWrt = std::make_unique<SwWriteTable>(pTable, pTable->
GetTabLines(), nPageSize,
1003 sal_uInt32 nCurrentDepth = pTableTextNodeInfoInner->getDepth();
1004 SAL_INFO(
"sw.rtf", __func__ <<
", (depth is " << nCurrentDepth <<
")");
1005 m_bTableRowEnded =
false;
1007 TableDefinition(pTableTextNodeInfoInner);
1010 m_aTables.push_back(m_aRowDefs.makeStringAndClear());
1013 if (nCurrentDepth > 1)
1017 m_rExport.Strm().WriteOString(m_aAfterRuns.makeStringAndClear());
1018 m_rExport.Strm().WriteOString(m_aRowDefs.makeStringAndClear());
1026 TableDefaultBorders(pTableTextNodeInfoInner);
1027 TableBackgrounds(pTableTextNodeInfoInner);
1028 TableVerticalCell(pTableTextNodeInfoInner);
1033 SAL_INFO(
"sw.rtf", __func__ <<
", (depth is " << m_nTableDepth <<
")");
1035 if (!m_bWroteCellInfo)
1039 m_aAfterRuns.append(static_cast<sal_Int32>(m_nTableDepth));
1041 if (m_nTableDepth > 1)
1046 m_bTableCellOpen =
false;
1047 m_bTableAfterCell =
true;
1048 m_bWroteCellInfo =
false;
1049 if (m_aCells[m_nTableDepth] > 0)
1050 m_aCells[m_nTableDepth]--;
1055 SAL_INFO(
"sw.rtf", __func__ <<
", (depth is " << m_nTableDepth <<
")");
1058 for (sal_uInt32
i = 0;
i < m_aCells[m_nTableDepth];
i++)
1061 if (m_nTableDepth > 1)
1063 m_aAfterRuns.append(
1065 if (!m_aRowDefs.isEmpty())
1066 m_aAfterRuns.append(m_aRowDefs.makeStringAndClear());
1067 else if (!m_aTables.empty())
1069 m_aAfterRuns.append(m_aTables.back());
1070 m_aTables.pop_back();
1078 if (!m_aTables.empty())
1080 m_aAfterRuns.append(m_aTables.back());
1081 m_aTables.pop_back();
1085 m_bTableRowEnded =
true;
1090 if (m_nTableDepth > 0)
1093 m_pTableWrt.reset();
1098 m_bTableCellOpen =
true;
1101 m_pTableWrt.reset();
1110 sal_uInt32 nRow = pInner->getRow();
1112 const SwTable* pTable = pInner->getTable();
1114 sal_uInt16 nLinesCount = rLines.
size();
1116 if (pInner->isEndOfCell())
1120 if (pInner->isEndOfLine())
1124 if (pInner->isEndOfLine() && (nRow + 1) == nLinesCount)
1134 m_rExport.OutColorTable();
1135 OSL_ENSURE(m_aStylesheet.getLength() == 0,
"m_aStylesheet is not empty");
1137 m_aStylesheet.append(
'{');
1143 m_rExport.Strm().WriteChar(
'}');
1144 m_rExport.Strm().WriteOString(m_aStylesheet.makeStringAndClear());
1145 m_rExport.Strm().WriteChar(
'}');
1151 sal_uInt16 nNext, sal_uInt16 , sal_uInt16 ,
1152 sal_uInt16 nId,
bool bAutoUpdate)
1154 SAL_INFO(
"sw.rtf", __func__ <<
", rName = '" << rName <<
"'");
1156 m_aStylesheet.append(
'{');
1161 m_aStylesheet.append(static_cast<sal_Int32>(nId));
1163 if (nBase != 0x0FFF)
1166 m_aStylesheet.append(static_cast<sal_Int32>(nBase));
1170 m_aStylesheet.append(static_cast<sal_Int32>(nNext));
1175 m_rStyleName = rName;
1181 OString aStyles = MoveCharacterProperties();
1182 m_rExport.InsStyle(m_nStyleId, aStyles);
1183 m_aStylesheet.append(aStyles);
1184 m_aStylesheet.append(
' ');
1185 m_aStylesheet.append(
1187 m_aStylesheet.append(
";}");
1204 m_aStyles.append(static_cast<sal_Int32>(nLvl));
1206 m_aStyles.append(static_cast<sal_Int32>(nLvl));
1223 m_nColBreakNeeded =
true;
1227 m_rExport.SectionProperties(*pSectionInfo);
1234 if (m_bIsBeforeFirstParagraph)
1238 if (!m_bBufferSectionBreaks)
1239 m_rExport.Strm().WriteOString(m_aSectionBreaks.makeStringAndClear());
1253 m_aSectionBreaks.append(static_cast<sal_Int32>(!bProtected));
1269 m_rExport.OutLong(nRestartNo);
1309 const ::std::optional<sal_uInt16>& oPageRestartNumber)
1311 if (oPageRestartNumber)
1314 m_aSectionBreaks.append(static_cast<sal_Int32>(*oPageRestartNumber));
1318 const char* pStr =
nullptr;
1341 m_aSectionBreaks.append(pStr);
1346 SAL_INFO(
"sw.rtf", __func__ <<
", nBreakCode = " <<
int(nBreakCode));
1352 const char*
sType =
nullptr;
1371 m_aSectionBreaks.append(sType);
1372 if (!m_bBufferSectionBreaks)
1373 m_rExport.Strm().WriteOString(m_aSectionBreaks.makeStringAndClear());
1378 WriteFootnoteEndnotePr(
true, m_rExport.m_rDoc.GetFootnoteInfo());
1379 WriteFootnoteEndnotePr(
false, m_rExport.m_rDoc.GetEndNoteInfo());
1384 const char*
pOut =
nullptr;
1439 m_aSectionBreaks.append(pOut);
1441 if (!m_bBufferSectionBreaks)
1443 m_rExport.Strm().WriteOString(m_aSectionBreaks.makeStringAndClear());
1451 m_rExport.OutULong(nId);
1454 m_rExport.OutULong(nId).WriteChar(
'}');
1463 m_rExport.OutULong(nId);
1474 sal_uInt16 nNumberingType,
SvxAdjust eAdjust,
1477 sal_Int16 nIndentAt, sal_Int16 nFirstLineIndex,
1478 sal_Int16 ,
const OUString& rNumberingString,
1489 sal_uInt16 nVal = 0;
1490 switch (nNumberingType)
1550 case style::NumberingType::HANGUL_SYLLABLE_KO:
1553 case style::NumberingType::HANGUL_JAMO_KO:
1556 case style::NumberingType::HANGUL_CIRCLED_SYLLABLE_KO:
1559 case style::NumberingType::HANGUL_CIRCLED_JAMO_KO:
1562 case style::NumberingType::NUMBER_HANGUL_KO:
1565 case style::NumberingType::NUMBER_DIGITAL_KO:
1568 case style::NumberingType::NUMBER_DIGITAL2_KO:
1571 case style::NumberingType::NUMBER_LEGAL_KO:
1587 m_rExport.OutULong(nVal);
1591 case SvxAdjust::Center:
1594 case SvxAdjust::Right:
1602 m_rExport.OutULong(nVal);
1607 int nIndex = m_rExport.GetGrfIndex(*pBrush);
1611 m_rExport.OutULong(nIndex);
1616 m_rExport.OutULong(nStart);
1619 m_rExport.OutULong(nFollow);
1626 m_rExport.Strm().WriteCharPtr(
"\\'01");
1628 m_rExport.Strm().WriteCharPtr(
"\\u");
1629 m_rExport.OutULong(cChar);
1630 m_rExport.Strm().WriteCharPtr(
" ?");
1634 m_rExport.Strm().WriteCharPtr(
"\\'").WriteCharPtr(
1637 m_rExport.GetDefaultEncoding(),
1642 m_rExport.Strm().WriteCharPtr(
";}");
1648 m_rExport.Strm().WriteCharPtr(
"\\'").WriteCharPtr(
1651 m_rExport.Strm().WriteCharPtr(
";}");
1658 m_rExport.OutULong(m_rExport.m_aFontHelper.GetId(*pFont));
1660 m_rExport.OutputItemSet(*pOutSet,
false,
true, i18n::ScriptType::LATIN,
1661 m_rExport.m_bExportModeRTF);
1662 const OString
aProperties = MoveCharacterProperties(
true);
1663 m_rExport.Strm().WriteOString(aProperties);
1668 m_rExport.OutLong(nIndentAt);
1670 m_rExport.Strm().WriteChar(
'}');
1672 m_rExport.Strm().WriteChar(
'}');
1679 bool bHasInstructions = !rFieldCmd.isEmpty();
1682 if (bHasInstructions)
1695 m_rExport.GetDefaultEncoding()));
1696 if (bHasInstructions)
1697 m_aRunText->append(
"}}");
1708 if (bHasInstructions)
1717 m_aRunText->append(
"}}}");
1723 std::vector<OUString>& rEnds)
1725 for (
const auto& rStart : rStarts)
1729 m_aRunText->append(
'}');
1733 for (
const auto& rEnd : rEnds)
1737 m_aRunText->append(
'}');
1743 std::vector<OUString>& rEnds)
1745 for (
const auto& rStart : rStarts)
1750 const sal_Int32
nId = m_nNextAnnotationMarkId++;
1751 m_rOpenedAnnotationMarksIds[rName] = nId;
1753 m_aRun->append(nId);
1754 m_aRun->append(
'}');
1758 for (
const auto& rEnd : rEnds)
1763 auto it = m_rOpenedAnnotationMarksIds.find(rName);
1764 if (it != m_rOpenedAnnotationMarksIds.end())
1766 const sal_Int32
nId = it->second;
1768 m_aRun->append(nId);
1769 m_aRun->append(
'}');
1770 m_rOpenedAnnotationMarksIds.erase(rName);
1772 if (m_aPostitFields.find(nId) != m_aPostitFields.end())
1774 m_aRunText->append(
"{");
1775 m_nCurrentAnnotationMarkId = nId;
1776 PostitField(m_aPostitFields[nId]);
1777 m_nCurrentAnnotationMarkId = -1;
1778 m_aRunText->append(
"}");
1786 const char* pStr,
bool bTitlepg)
1788 OStringBuffer aSectionBreaks = m_aSectionBreaks;
1789 m_aSectionBreaks.setLength(0);
1795 m_aSectionHeaders.append(
1796 static_cast<sal_Int32>(m_rExport.m_pCurrentPageDesc->GetMaster().GetULSpace().GetUpper()));
1799 m_aSectionHeaders.append(
'{');
1800 m_aSectionHeaders.append(pStr);
1801 m_bBufferSectionHeaders =
true;
1802 m_rExport.WriteHeaderFooterText(rFormat, bHeader);
1803 m_bBufferSectionHeaders =
false;
1804 m_aSectionHeaders.append(
'}');
1806 m_aSectionBreaks = aSectionBreaks;
1812 void lcl_TextFrameShadow(std::vector<std::pair<OString, OString>>& rFlyProperties,
1816 if (aShadowItem.
GetLocation() == SvxShadowLocation::NONE)
1819 rFlyProperties.push_back(std::make_pair<OString, OString>(
"fShadow", OString::number(1)));
1823 rFlyProperties.push_back(std::make_pair<OString, OString>(
1827 OString aShadowWidth = OString::number(sal_Int32(aShadowItem.
GetWidth() / 20) * 12700);
1832 case SvxShadowLocation::TopLeft:
1833 aOffsetX =
"-" + aShadowWidth;
1834 aOffsetY =
"-" + aShadowWidth;
1836 case SvxShadowLocation::TopRight:
1837 aOffsetX = aShadowWidth;
1838 aOffsetY =
"-" + aShadowWidth;
1840 case SvxShadowLocation::BottomLeft:
1841 aOffsetX =
"-" + aShadowWidth;
1842 aOffsetY = aShadowWidth;
1844 case SvxShadowLocation::BottomRight:
1845 aOffsetX = aShadowWidth;
1846 aOffsetY = aShadowWidth;
1848 case SvxShadowLocation::NONE:
1849 case SvxShadowLocation::End:
1852 if (!aOffsetX.isEmpty())
1853 rFlyProperties.emplace_back(
"shadowOffsetX", aOffsetX);
1854 if (!aOffsetY.isEmpty())
1855 rFlyProperties.emplace_back(
"shadowOffsetY", aOffsetY);
1858 void lcl_TextFrameRelativeSize(std::vector<std::pair<OString, OString>>& rFlyProperties,
1867 rFlyProperties.push_back(
1868 std::make_pair<OString, OString>(
"pctHoriz", OString::number(nWidthPercent * 10)));
1873 case text::RelOrientation::PAGE_FRAME:
1880 rFlyProperties.emplace_back(std::make_pair(
"sizerelh", aRelation));
1886 rFlyProperties.push_back(
1887 std::make_pair<OString, OString>(
"pctVert", OString::number(nHeightPercent * 10)));
1892 case text::RelOrientation::PAGE_FRAME:
1899 rFlyProperties.emplace_back(std::make_pair(
"sizerelv", aRelation));
1908 m_rExport.setStream();
1909 aRunText = m_aRunText;
1918 m_rExport.m_pTableInfo = std::make_shared<ww8::WW8TableInfo>();
1919 std::unique_ptr<SwWriteTable> pTableWrt(std::move(m_pTableWrt));
1920 sal_uInt32 nTableDepth = m_nTableDepth;
1928 OString aSave = m_aRun.makeStringAndClear();
1930 bool bInRunOrig = m_bInRun;
1932 bool bSingleEmptyRunOrig = m_bSingleEmptyRun;
1933 m_bSingleEmptyRun =
false;
1934 m_rExport.SetRTFFlySyntax(
true);
1941 m_rExport.SaveData(nStt, nEnd);
1942 m_rExport.m_pParentFrame = &rFrame;
1943 m_rExport.WriteText();
1944 m_rExport.RestoreData();
1947 m_rExport.SetRTFFlySyntax(
false);
1948 m_aRun->append(aSave);
1950 m_bInRun = bInRunOrig;
1951 m_bSingleEmptyRun = bSingleEmptyRunOrig;
1954 m_rExport.m_pTableInfo = pTableInfoOrig;
1955 m_pTableWrt = std::move(pTableWrt);
1956 m_nTableDepth = nTableDepth;
1959 m_rExport.m_pParentFrame =
nullptr;
1961 m_rExport.Strm().WriteChar(
'}');
1965 m_aRunText = aRunText;
1966 m_aRunText->
append(m_rExport.getStream());
1967 m_rExport.resetStream();
1987 , m_Run(
std::move(rRtf.m_aRun))
1988 , m_RunText(
std::move(rRtf.m_aRunText))
1989 , m_bSingleEmptyRun(rRtf.m_bSingleEmptyRun)
1990 , m_bInRun(rRtf.m_bInRun)
1996 m_rRtf.
m_aRun = std::move(m_Run);
2021 m_rExport.m_pParentFrame = &rFrame;
2024 m_rExport.Strm().WriteCharPtr(
2028 m_aFlyProperties.push_back(std::make_pair<OString, OString>(
2034 m_pFlyFrameSize = &aSize;
2036 m_rExport.m_bOutFlyFrameAttrs =
true;
2037 m_rExport.SetRTFFlySyntax(
true);
2038 m_rExport.OutputFormat(rFrame.
GetFrameFormat(),
false,
false,
true);
2044 m_rExport.OutULong(
pObject->GetOrdNum());
2047 m_rExport.Strm().WriteOString(m_aRunText.makeStringAndClear());
2048 m_rExport.Strm().WriteOString(m_aStyles.makeStringAndClear());
2049 m_rExport.m_bOutFlyFrameAttrs =
false;
2050 m_rExport.SetRTFFlySyntax(
false);
2051 m_pFlyFrameSize =
nullptr;
2054 lcl_TextFrameShadow(m_aFlyProperties, rFrameFormat);
2055 lcl_TextFrameRelativeSize(m_aFlyProperties, rFrameFormat);
2057 for (
const std::pair<OString, OString>& rPair : m_aFlyProperties)
2061 m_rExport.Strm().WriteOString(rPair.first);
2063 m_rExport.Strm().WriteOString(rPair.second);
2064 m_rExport.Strm().WriteCharPtr(
"}}");
2066 m_aFlyProperties.clear();
2068 writeTextFrame(rFrame);
2070 m_rExport.Strm().WriteChar(
'}');
2071 m_rExport.Strm().WriteChar(
'}');
2079 m_aRunText.append(dynamic_cast<const SwFlyFrameFormat*>(&rFrame.
GetFrameFormat()),
2084 m_rExport.m_pParentFrame = &rFrame;
2085 m_rExport.SetRTFFlySyntax(
true);
2086 m_rExport.OutputFormat(rFrame.
GetFrameFormat(),
false,
false,
true);
2087 m_rExport.SetRTFFlySyntax(
false);
2089 m_rExport.OutputFormat(rFrame.
GetFrameFormat(),
false,
false,
true);
2090 m_aRunText->append(
'}');
2091 m_rExport.m_pParentFrame =
nullptr;
2102 m_aRunText->append(
" SHAPE ");
2103 m_aRunText->append(
"}"
2106 m_rExport.SdrExporter().AddSdrObject(*pSdrObj);
2108 m_aRunText->append(
'}');
2109 m_aRunText->append(
'}');
2123 if (
auto pFormObj = dynamic_cast<const SdrUnoObj*>(pObject))
2125 const uno::Reference<awt::XControlModel>& xControlModel
2126 = pFormObj->GetUnoControlModel();
2127 uno::Reference<lang::XServiceInfo> xInfo(xControlModel, uno::UNO_QUERY);
2130 uno::Reference<beans::XPropertySet> xPropSet(xControlModel, uno::UNO_QUERY);
2131 uno::Reference<beans::XPropertySetInfo> xPropSetInfo
2132 = xPropSet->getPropertySetInfo();
2134 if (xInfo->supportsService(
"com.sun.star.form.component.CheckBox"))
2137 m_rExport.GetCurrentEncoding()));
2147 if (xPropSetInfo->hasPropertyByName(sName))
2149 xPropSet->getPropertyValue(sName) >>= aStr;
2155 m_aRun->append(
'}');
2159 if (xPropSetInfo->hasPropertyByName(sName))
2161 xPropSet->getPropertyValue(sName) >>= aStr;
2167 m_aRun->append(
'}');
2170 sName =
"HelpF1Text";
2171 if (xPropSetInfo->hasPropertyByName(sName))
2173 xPropSet->getPropertyValue(sName) >>= aStr;
2179 m_aRun->append(
'}');
2182 sal_Int16 nTemp = 0;
2183 xPropSet->getPropertyValue(
"DefaultState") >>= nTemp;
2185 m_aRun->append(static_cast<sal_Int32>(nTemp));
2186 xPropSet->getPropertyValue(
"State") >>= nTemp;
2188 m_aRun->append(static_cast<sal_Int32>(nTemp));
2190 m_aRun->append(
"}}");
2195 else if (xInfo->supportsService(
"com.sun.star.form.component.TextField"))
2203 m_rExport.GetCurrentEncoding()));
2207 for (
int i = 0;
i < 8;
i++)
2208 aBuf.append(
char(0x00));
2209 xPropSet->getPropertyValue(
"Name") >>= aTmp;
2211 aBuf.append(static_cast<char>(aStr.getLength()));
2213 aBuf.append(
char(0x00));
2214 xPropSet->getPropertyValue(
"DefaultText") >>= aTmp;
2216 aBuf.append(static_cast<char>(aStr.getLength()));
2218 for (
int i = 0;
i < 11;
i++)
2219 aBuf.append(
char(0x00));
2220 aStr = aBuf.makeStringAndClear();
2221 pStr = aStr.getStr();
2222 for (
int i = 0;
i < aStr.getLength();
i++, pStr++)
2224 m_aRun->append(
'}');
2226 xPropSet->getPropertyValue(
"Text") >>= aTmp;
2228 m_aRun->append(
'}');
2233 if (xPropSetInfo->hasPropertyByName(sName))
2235 xPropSet->getPropertyValue(sName) >>= aTmp;
2241 m_aRun->append(
'}');
2244 sName =
"HelpF1Text";
2245 if (xPropSetInfo->hasPropertyByName(sName))
2247 xPropSet->getPropertyValue(sName) >>= aTmp;
2253 m_aRun->append(
'}');
2255 m_aRun->append(
"}");
2257 else if (xInfo->supportsService(
"com.sun.star.form.component.ListBox"))
2260 uno::Sequence<sal_Int16> aIntSeq;
2261 uno::Sequence<OUString> aStrSeq;
2264 m_rExport.GetCurrentEncoding()));
2271 xPropSet->getPropertyValue(
"DefaultSelection") >>= aIntSeq;
2272 if (aIntSeq.hasElements())
2276 m_aRun->append(static_cast<sal_Int32>(aIntSeq[0]));
2279 xPropSet->getPropertyValue(
"SelectedItems") >>= aIntSeq;
2280 if (aIntSeq.hasElements())
2284 m_aRun->append(static_cast<sal_Int32>(aIntSeq[0]));
2288 if (xPropSetInfo->hasPropertyByName(sName))
2290 xPropSet->getPropertyValue(sName) >>= aStr;
2296 m_aRun->append(
'}');
2300 if (xPropSetInfo->hasPropertyByName(sName))
2302 xPropSet->getPropertyValue(sName) >>= aStr;
2308 m_aRun->append(
'}');
2311 sName =
"HelpF1Text";
2312 if (xPropSetInfo->hasPropertyByName(sName))
2314 xPropSet->getPropertyValue(sName) >>= aStr;
2320 m_aRun->append(
'}');
2323 xPropSet->getPropertyValue(
"StringItemList") >>= aStrSeq;
2324 for (
const auto& rStr : std::as_const(aStrSeq))
2330 m_aRun->append(
"}}");
2336 SAL_INFO(
"sw.rtf", __func__ <<
" unhandled form control: '"
2337 << xInfo->getImplementationName() <<
"'");
2338 m_aRun->append(
'}');
2343 m_aRun->append(
'}');
2354 FlyFrameOLE(dynamic_cast<const SwFlyFrameFormat*>(&rFrameFormat), rOLENd,
2360 SAL_INFO(
"sw.rtf", __func__ <<
": unknown type ("
2368 switch (rCaseMap.GetValue())
2370 case SvxCaseMap::SmallCaps:
2373 case SvxCaseMap::Uppercase:
2378 m_aStyles.append(sal_Int32(0));
2380 m_aStyles.append(sal_Int32(0));
2390 m_aStyles.append(static_cast<sal_Int32>(m_rExport.GetColor(aColor)));
2396 if (!rContour.GetValue())
2397 m_aStyles.append(sal_Int32(0));
2406 m_aStyles.append(sal_Int32(0));
2410 m_aStyles.append(sal_Int32(1));
2420 short nEsc = rEscapement.
GetEsc();
2422 sal_Int32 nProp100 = nProp * 100;
2433 nEsc = .8 * (100 - nProp);
2438 nEsc = .2 * -(100 - nProp);
2456 m_aStyles.append(
'{');
2459 m_aStyles.append(nProp100);
2460 m_aStyles.append(
'}');
2461 m_aStyles.append(pUpDn);
2470 m_aStyles.append(static_cast<sal_Int32>(
round(fHeight * nEsc / 1000)));
2477 m_aStyles.append(static_cast<sal_Int32>(m_rExport.m_aFontHelper.GetId(rFont)));
2481 m_aStylesAssocHich.append(static_cast<sal_Int32>(m_rExport.m_aFontHelper.GetId(rFont)));
2487 aTmp.msPrimary, aTmp.msSecondary, rFont.
GetCharSet());
2488 m_rExport.SetCurrentEncoding(rtl_getTextEncodingFromWindowsCharset(nWindowsCharset));
2489 if (m_rExport.GetCurrentEncoding() == RTL_TEXTENCODING_DONTKNOW)
2490 m_rExport.SetCurrentEncoding(m_rExport.GetDefaultEncoding());
2495 switch (rFontSize.Which())
2499 m_aStyles.append(static_cast<sal_Int32>(rFontSize.
GetHeight() / 10));
2503 m_aStylesAssocDbch.append(static_cast<sal_Int32>(rFontSize.
GetHeight() / 10));
2507 m_aStylesAssocRtlch.append(static_cast<sal_Int32>(rFontSize.
GetHeight() / 10));
2516 m_aStyles.append(static_cast<sal_Int32>(rKerning.GetValue() / 5));
2518 m_aStyles.append(static_cast<sal_Int32>(rKerning.GetValue()));
2523 switch (rLanguage.Which())
2528 static_cast<sal_Int32>(static_cast<sal_uInt16>(rLanguage.
GetLanguage())));
2530 m_aStylesAssocLtrch.append(
2531 static_cast<sal_Int32>(static_cast<sal_uInt16>(rLanguage.
GetLanguage())));
2535 m_aStylesAssocDbch.append(
2536 static_cast<sal_Int32>(static_cast<sal_uInt16>(rLanguage.
GetLanguage())));
2538 m_aStylesAssocLtrch.append(
2539 static_cast<sal_Int32>(static_cast<sal_uInt16>(rLanguage.
GetLanguage())));
2543 m_aStylesAssocRtlch.append(
2544 static_cast<sal_Int32>(static_cast<sal_uInt16>(rLanguage.
GetLanguage())));
2553 m_aStyles.append(sal_Int32(0));
2559 if (!rShadow.GetValue())
2560 m_aStyles.append(sal_Int32(0));
2565 const char* pStr =
nullptr;
2631 m_aStyles.append(pStr);
2635 m_aStyles.append(static_cast<sal_Int32>(m_rExport.GetColor(rUnderline.
GetColor())));
2643 m_aStyles.append(sal_Int32(0));
2649 m_aStyles.append(static_cast<sal_Int32>(rAutoKern.GetValue() ? 1 : 0));
2655 m_aStyles.append(static_cast<sal_Int32>(rBlink.GetValue() ? 2 : 0));
2663 m_aStyles.append(static_cast<sal_Int32>(m_rExport.GetColor(rBrush.
GetColor())));
2671 m_aStylesAssocDbch.append(static_cast<sal_Int32>(m_rExport.m_aFontHelper.GetId(rFont)));
2676 CharFontSize(rFontSize);
2681 CharLanguage(rLanguageItem);
2688 m_aStylesAssocDbch.append(sal_Int32(0));
2695 m_aStylesAssocDbch.append(sal_Int32(0));
2702 m_aStylesAssocRtlch.append(static_cast<sal_Int32>(m_rExport.m_aFontHelper.GetId(rFont)));
2707 CharFontSize(rFontSize);
2712 CharLanguage(rLanguageItem);
2719 m_aStylesAssocRtlch.append(sal_Int32(0));
2726 m_aStylesAssocRtlch.append(sal_Int32(0));
2736 m_aStyles.append(static_cast<sal_Int32>(rRotate.
IsFitToLine() ? 1 : 0));
2742 if (v == FontEmphasisMark::NONE)
2744 else if (v == (FontEmphasisMark::Dot | FontEmphasisMark::PosAbove))
2746 else if (v == (FontEmphasisMark::Accent | FontEmphasisMark::PosAbove))
2748 else if (v == (FontEmphasisMark::Circle | FontEmphasisMark::PosAbove))
2750 else if (v == (FontEmphasisMark::Dot | FontEmphasisMark::PosBelow))
2763 if (!cStart && !cEnd)
2765 else if (
'{' == cStart ||
'}' == cEnd)
2767 else if (
'<' == cStart ||
'>' == cEnd)
2769 else if (
'[' == cStart ||
']' == cEnd)
2775 m_aStyles.append(static_cast<sal_Int32>(nType));
2781 m_aStyles.append(static_cast<sal_Int32>(rScaleWidth.GetValue()));
2787 switch (rRelief.GetValue())
2789 case FontRelief::Embossed:
2792 case FontRelief::Engraved:
2801 m_aStyles.append(pStr);
2807 if (!rHidden.GetValue())
2808 m_aStyles.append(sal_Int32(0));
2812 const sal_uInt16 nDist,
const bool bShadow)
2816 bShadow ? SvxShadowLocation::BottomRight : SvxShadowLocation::NONE));
2833 if (pTextAtr &&
nullptr != (pFormat = pTextAtr->
GetCharFormat()))
2835 sal_uInt16 nStyle = m_rExport.GetId(pFormat);
2836 OString* pString = m_rExport.GetStyle(nStyle);
2838 m_aStyles.append(*pString);
2844 sal_uInt16 nStyle = m_rExport.GetId(rCharFormat.
GetCharFormat());
2846 m_aStyles.append(static_cast<sal_Int32>(nStyle));
2847 OString* pString = m_rExport.GetStyle(nStyle);
2849 m_aStyles.append(*pString);
2863 SAL_INFO(
"sw.rtf", __func__ <<
" start");
2866 EndRunProperties(
nullptr);
2867 m_aRun->append(
' ');
2868 WriteTextFootnoteNumStr(rFootnote);
2872 m_aRun->append(
' ');
2873 WriteTextFootnoteNumStr(rFootnote);
2883 bool bInRunOrig = m_bInRun;
2885 bool bSingleEmptyRunOrig = m_bSingleEmptyRun;
2886 m_bSingleEmptyRun =
false;
2887 m_bBufferSectionHeaders =
true;
2890 m_bBufferSectionHeaders =
false;
2891 m_bInRun = bInRunOrig;
2892 m_bSingleEmptyRun = bSingleEmptyRunOrig;
2894 m_aRun->
append(m_aSectionHeaders.makeStringAndClear());
2896 m_aRun->append(
"}");
2897 m_aRun->append(
"}");
2899 SAL_INFO(
"sw.rtf", __func__ <<
" end");
2905 m_aStyles.append(static_cast<sal_Int32>(nSpace));
2907 m_aStyles.append(static_cast<sal_Int32>(nMulti));
2914 case SvxAdjust::Left:
2917 case SvxAdjust::Right:
2920 case SvxAdjust::BlockLine:
2921 case SvxAdjust::Block:
2927 case SvxAdjust::Center:
2937 if (!rSplit.GetValue())
2943 if (rWidows.GetValue())
2953 if (m_rExport.m_rDoc.getIDocumentSettingAccess().get(
2955 nOffset = m_rExport.GetItem(
RES_LR_SPACE).GetTextLeft();
2957 for (sal_uInt16
n = 0;
n < rTabStop.
Count();
n++)
2962 const char* pFill =
nullptr;
2984 m_aStyles.append(pFill);
2986 const char* pAdjStr =
nullptr;
2989 case SvxTabAdjust::Right:
2992 case SvxTabAdjust::Decimal:
2995 case SvxTabAdjust::Center:
3002 m_aStyles.append(pAdjStr);
3004 m_aStyles.append(static_cast<sal_Int32>(rTS.
GetTabPos() + nOffset));
3009 m_aTabStop.append(rTabStop[0].GetTabPos());
3017 m_aStyles.append(sal_Int32(rHyphenZone.
IsHyphen()));
3023 if (USHRT_MAX == nNumId || 0 == nNumId ||
nullptr == pTextNd)
3028 if (!pRule || !pTextNd->
IsInList())
3032 "sw.rtf",
"text node does not have valid list level");
3036 pFormat = &pRule->
Get(nLvl);
3040 m_aStyles.append(
'{');
3044 m_aStyles.append(
' ');
3047 aLR.
SetTextLeft(aLR.GetTextLeft() + pFormat->GetIndentAt());
3048 aLR.SetTextFirstLineOffset(pFormat->GetFirstLineOffset());
3050 sal_uInt16 nStyle = m_rExport.GetId(pFormat->GetCharFormat());
3051 OString* pString = m_rExport.GetStyle(nStyle);
3053 m_aStyles.append(*pString);
3060 sal_UCS4 cBullet = pFormat->GetBulletChar();
3061 sText = OUString(&cBullet, 1);
3066 if (!sText.isEmpty())
3068 m_aStyles.append(
' ');
3074 if (!sText.isEmpty())
3076 m_aStyles.append(
'}');
3080 m_aStyles.append(sal_Int32(8));
3082 m_aStyles.append(nLvl);
3083 m_aStyles.append(
'}');
3086 m_aStyles.append(nLvl);
3091 m_aStyles.append(static_cast<sal_Int32>(m_rExport.GetNumberingId(*pRule)) + 1);
3092 m_aStyles.append(
' ');
3107 SAL_INFO(
"sw.rtf",
"TODO: " << __func__);
3112 SAL_INFO(
"sw.rtf",
"TODO: " << __func__);
3137 m_aStyles.append(pStr);
3142 SAL_INFO(
"sw.rtf",
"TODO: " << __func__);
3147 if (m_rExport.m_bOutPageDescs)
3150 m_aSectionBreaks.append(static_cast<sal_Int32>(rSize.
GetWidth()));
3152 m_aSectionBreaks.append(static_cast<sal_Int32>(rSize.
GetHeight()));
3153 if (!m_bBufferSectionBreaks)
3154 m_rExport.Strm().WriteOString(m_aSectionBreaks.makeStringAndClear());
3160 SAL_INFO(
"sw.rtf",
"TODO: " << __func__);
3165 if (!m_rExport.m_bOutFlyFrameAttrs)
3167 if (m_rExport.m_bOutPageDescs)
3172 m_aSectionBreaks.append(static_cast<sal_Int32>(rLRSpace.
GetLeft()));
3177 m_aSectionBreaks.append(static_cast<sal_Int32>(rLRSpace.
GetRight()));
3182 m_aSectionBreaks.append(static_cast<sal_Int32>(rLRSpace.
GetGutterMargin()));
3184 if (!m_bBufferSectionBreaks)
3185 m_rExport.Strm().WriteOString(m_aSectionBreaks.makeStringAndClear());
3190 m_aStyles.append(static_cast<sal_Int32>(rLRSpace.
GetTextLeft()));
3192 m_aStyles.append(static_cast<sal_Int32>(rLRSpace.
GetRight()));
3194 m_aStyles.append(static_cast<sal_Int32>(rLRSpace.
GetTextLeft()));
3196 m_aStyles.append(static_cast<sal_Int32>(rLRSpace.
GetRight()));
3201 else if (m_rExport.GetRTFFlySyntax())
3204 m_aFlyProperties.push_back(std::make_pair<OString, OString>(
3207 m_aFlyProperties.push_back(std::make_pair<OString, OString>(
3215 if (!m_rExport.m_bOutFlyFrameAttrs)
3217 if (m_rExport.m_bOutPageDescs)
3219 OSL_ENSURE(m_rExport.GetCurItemSet(),
"Impossible");
3220 if (!m_rExport.GetCurItemSet())
3229 ? *m_rExport.GetFirstPageItemSet()
3230 : *m_rExport.GetCurItemSet());
3232 if (aDistances.dyaTop)
3235 m_aSectionBreaks.append(static_cast<sal_Int32>(aDistances.dyaTop));
3237 if (aDistances.HasHeader())
3240 m_aSectionBreaks.append(static_cast<sal_Int32>(aDistances.dyaHdrTop));
3243 if (aDistances.dyaBottom)
3246 m_aSectionBreaks.append(static_cast<sal_Int32>(aDistances.dyaBottom));
3248 if (aDistances.HasFooter())
3251 m_aSectionBreaks.append(static_cast<sal_Int32>(aDistances.dyaHdrBottom));
3253 if (!m_bBufferSectionBreaks)
3254 m_rExport.Strm().WriteOString(m_aSectionBreaks.makeStringAndClear());
3259 if (m_bParaBeforeAutoSpacing && m_nParaBeforeSpacing == rULSpace.
GetUpper())
3261 else if (m_bParaBeforeAutoSpacing && m_nParaBeforeSpacing == -1)
3265 m_aStyles.append(static_cast<sal_Int32>(rULSpace.
GetUpper()));
3270 m_aStyles.append(static_cast<sal_Int32>(rULSpace.
GetUpper()));
3272 m_bParaBeforeAutoSpacing =
false;
3275 if (m_bParaAfterAutoSpacing && m_nParaAfterSpacing == rULSpace.
GetLower())
3277 else if (m_bParaAfterAutoSpacing && m_nParaAfterSpacing == -1)
3281 m_aStyles.append(static_cast<sal_Int32>(rULSpace.
GetLower()));
3286 m_aStyles.append(static_cast<sal_Int32>(rULSpace.
GetLower()));
3288 m_bParaAfterAutoSpacing =
false;
3295 else if (m_rExport.GetRTFFlySyntax())
3298 m_aFlyProperties.push_back(std::make_pair<OString, OString>(
3301 m_aFlyProperties.push_back(std::make_pair<OString, OString>(
3309 if (m_rExport.m_bOutFlyFrameAttrs && !m_rExport.GetRTFFlySyntax())
3311 css::text::WrapTextMode eSurround = rSurround.
GetSurround();
3312 bool bGold = css::text::WrapTextMode_DYNAMIC == eSurround;
3314 eSurround = css::text::WrapTextMode_PARALLEL;
3315 RTFSurround aMC(bGold, static_cast<sal_uInt8>(eSurround));
3317 m_aRunText->append(static_cast<sal_Int32>(aMC.
GetValue()));
3319 else if (m_rExport.m_bOutFlyFrameAttrs && m_rExport.GetRTFFlySyntax())
3323 std::optional<sal_Int32> oWrk;
3326 case css::text::WrapTextMode_NONE:
3329 case css::text::WrapTextMode_THROUGH:
3332 case css::text::WrapTextMode_PARALLEL:
3336 case css::text::WrapTextMode_DYNAMIC:
3347 m_rExport.OutLong(nWr);
3351 m_rExport.OutLong(*oWrk);
3358 if (!(m_rExport.m_bOutFlyFrameAttrs && m_rExport.GetRTFFlySyntax()))
3363 case text::RelOrientation::PAGE_FRAME:
3364 m_aFlyProperties.push_back(
3365 std::make_pair<OString, OString>(
"posrelv", OString::number(1)));
3368 m_aFlyProperties.push_back(
3369 std::make_pair<OString, OString>(
"posrelv", OString::number(2)));
3378 case text::VertOrientation::TOP:
3379 case text::VertOrientation::LINE_TOP:
3380 m_aFlyProperties.push_back(
3381 std::make_pair<OString, OString>(
"posv", OString::number(1)));
3383 case text::VertOrientation::BOTTOM:
3384 case text::VertOrientation::LINE_BOTTOM:
3385 m_aFlyProperties.push_back(
3386 std::make_pair<OString, OString>(
"posv", OString::number(3)));
3388 case text::VertOrientation::CENTER:
3389 case text::VertOrientation::LINE_CENTER:
3390 m_aFlyProperties.push_back(
3391 std::make_pair<OString, OString>(
"posv", OString::number(2)));
3398 m_rExport.OutLong(rFlyVert.
GetPos());
3399 if (m_pFlyFrameSize)
3402 m_rExport.OutLong(rFlyVert.
GetPos() + m_pFlyFrameSize->Height());
3408 if (!(m_rExport.m_bOutFlyFrameAttrs && m_rExport.GetRTFFlySyntax()))
3413 case text::RelOrientation::PAGE_FRAME:
3414 m_aFlyProperties.push_back(
3415 std::make_pair<OString, OString>(
"posrelh", OString::number(1)));
3418 m_aFlyProperties.push_back(
3419 std::make_pair<OString, OString>(
"posrelh", OString::number(2)));
3428 case text::HoriOrientation::LEFT:
3429 m_aFlyProperties.push_back(
3430 std::make_pair<OString, OString>(
"posh", OString::number(1)));
3432 case text::HoriOrientation::CENTER:
3433 m_aFlyProperties.push_back(
3434 std::make_pair<OString, OString>(
"posh", OString::number(2)));
3436 case text::HoriOrientation::RIGHT:
3437 m_aFlyProperties.push_back(
3438 std::make_pair<OString, OString>(
"posh", OString::number(3)));
3445 m_rExport.OutLong(rFlyHori.
GetPos());
3446 if (m_pFlyFrameSize)
3449 m_rExport.OutLong(rFlyHori.
GetPos() + m_pFlyFrameSize->Width());
3455 if (m_rExport.GetRTFFlySyntax())
3460 m_aRunText->append(static_cast<sal_Int32>(eId));
3463 case RndStdIds::FLY_AT_PAGE:
3465 m_aRunText->append(static_cast<sal_Int32>(rAnchor.
GetPageNum()));
3467 case RndStdIds::FLY_AT_PARA:
3468 case RndStdIds::FLY_AS_CHAR:
3478 if (m_rExport.GetRTFFlySyntax())
3482 m_aFlyProperties.push_back(std::make_pair<OString, OString>(
3488 m_aStyles.append(static_cast<sal_Int32>(m_rExport.GetColor(rBrush.
GetColor())));
3494 m_oFillStyle = rFillStyle.GetValue();
3499 if (*m_oFillStyle != drawing::FillStyle_GRADIENT)
3502 m_aFlyProperties.push_back(std::make_pair<OString, OString>(
3503 "fillType", OString::number(7)));
3507 m_aFlyProperties.push_back(std::make_pair<OString, OString>(
3511 m_aFlyProperties.push_back(std::make_pair<OString, OString>(
3516 case css::awt::GradientStyle_LINEAR:
3518 case css::awt::GradientStyle_AXIAL:
3519 m_aFlyProperties.push_back(
3520 std::make_pair<OString, OString>(
"fillFocus", OString::number(50)));
3522 case css::awt::GradientStyle_RADIAL:
3523 case css::awt::GradientStyle_ELLIPTICAL:
3524 case css::awt::GradientStyle_SQUARE:
3525 case css::awt::GradientStyle_RECT:
3533 static const SvxBoxItemLine aBorders[] = { SvxBoxItemLine::TOP, SvxBoxItemLine::LEFT,
3534 SvxBoxItemLine::BOTTOM, SvxBoxItemLine::RIGHT };
3535 static const char* aBorderNames[]
3541 if (m_rExport.GetRTFFlySyntax())
3544 m_aFlyProperties.push_back(std::make_pair<OString, OString>(
3547 m_aFlyProperties.push_back(std::make_pair<OString, OString>(
3550 m_aFlyProperties.push_back(std::make_pair<OString, OString>(
3553 m_aFlyProperties.push_back(std::make_pair<OString, OString>(
3562 if (!pLeft && !pRight && !pBottom && !pTop)
3565 m_aFlyProperties.push_back(std::make_pair<OString, OString>(
"fLine",
"0"));
3585 m_aFlyProperties.push_back(std::make_pair<OString, OString>(
"fLine",
"0"));
3591 m_aFlyProperties.push_back(std::make_pair<OString, OString>(
3594 double const fConverted(
3597 m_aFlyProperties.push_back(
3598 std::make_pair<OString, OString>(
"lineWidth", OString::number(nWidth)));
3606 && nDist == rBox.
GetDistance(SvxBoxItemLine::LEFT)
3607 && nDist == rBox.
GetDistance(SvxBoxItemLine::BOTTOM)
3608 && nDist == rBox.
GetDistance(SvxBoxItemLine::RIGHT))
3609 m_aSectionBreaks.append(
3615 eShadowLocation = pItem->GetLocation();
3618 const char** pBrdNms = aBorderNames;
3619 for (
int i = 0;
i < 4; ++
i, ++pBrd, ++pBrdNms)
3623 m_aSectionBreaks.append(
OutBorderLine(m_rExport, pLn, *pBrdNms,
3629 if (!m_bBufferSectionBreaks)
3630 m_aStyles.append(m_aSectionBreaks.makeStringAndClear());
3637 m_rExport.OutLong(nCols);
3650 for (sal_uInt16
n = 0;
n < nCols;)
3653 m_rExport.OutLong(
n + 1);
3661 m_rExport.OutLong(rColumns[
n - 1].GetRight() + rColumns[
n].GetLeft());
3669 if (rItem.GetValue())
3675 SAL_INFO(
"sw.rtf",
"TODO: " << __func__);
3687 if (nDir == SvxFrameDirection::Environment)
3688 nDir = GetExport().GetDefaultFrameDirection();
3690 if (m_rExport.m_bOutPageDescs)
3692 if (nDir == SvxFrameDirection::Vertical_RL_TB)
3695 m_aSectionBreaks.append(static_cast<sal_Int32>(1));
3696 if (!m_bBufferSectionBreaks)
3697 m_rExport.Strm().WriteOString(m_aSectionBreaks.makeStringAndClear());
3702 if (m_rExport.GetRTFFlySyntax())
3704 if (nDir == SvxFrameDirection::Vertical_RL_TB)
3707 m_aFlyProperties.push_back(std::make_pair<OString, OString>(
"txflTextFlow",
"3"));
3709 else if (rDirection.GetValue() == SvxFrameDirection::Vertical_LR_BT)
3712 m_aFlyProperties.push_back(std::make_pair<OString, OString>(
"txflTextFlow",
"2"));
3717 if (nDir == SvxFrameDirection::Horizontal_RL_TB)
3725 const std::map<OUString, css::uno::Any>& rMap = rItem.
GetGrabBag();
3726 for (
const auto& rValue : rMap)
3728 if (rValue.first ==
"ParaTopMarginBeforeAutoSpacing")
3730 m_bParaBeforeAutoSpacing =
true;
3731 rValue.second >>= m_nParaBeforeSpacing;
3734 else if (rValue.first ==
"ParaBottomMarginAfterAutoSpacing")
3736 m_bParaAfterAutoSpacing =
true;
3737 rValue.second >>= m_nParaAfterSpacing;
3755 m_rExport.OutputField(pField,
ww::eNONE, sCmd);
3765 SAL_INFO(
"sw.rtf",
"TODO: " << __func__);
3770 SAL_INFO(
"sw.rtf",
"TODO: " << __func__);
3776 SAL_INFO(
"sw.rtf",
"TODO: " << __func__);
3784 auto it = m_rOpenedAnnotationMarksIds.find(aName);
3785 if (it != m_rOpenedAnnotationMarksIds.end())
3789 m_aPostitFields[it->second] = &rPField;
3795 m_aRunText->append(
"}");
3798 m_aRunText->append(
"}");
3803 if (m_nCurrentAnnotationMarkId != -1)
3806 m_aRunText->append(m_nCurrentAnnotationMarkId);
3807 m_aRunText->append(
'}');
3811 m_aRunText->append(
'}');
3814 m_aRunText->append(
'}');
3827 " MACROBUTTON None ");
3829 m_aRunText->append(
"}}");
3835 , m_rExport(rExport)
3836 , m_pPrevPageDesc(nullptr)
3841 , m_bControlLtrRtl(
false)
3842 , m_nNextAnnotationMarkId(0)
3843 , m_nCurrentAnnotationMarkId(-1)
3844 , m_bTableCellOpen(
false)
3846 , m_bTableAfterCell(
false)
3847 , m_nColBreakNeeded(
false)
3848 , m_bBufferSectionBreaks(
false)
3849 , m_bBufferSectionHeaders(
false)
3850 , m_bLastTable(true)
3851 , m_bWroteCellInfo(
false)
3852 , m_bTableRowEnded(
false)
3853 , m_bIsBeforeFirstParagraph(true)
3854 , m_bSingleEmptyRun(
false)
3857 , m_pFlyFrameSize(nullptr)
3858 , m_bParaBeforeAutoSpacing(
false)
3859 , m_nParaBeforeSpacing(0)
3860 , m_bParaAfterAutoSpacing(
false)
3861 , m_nParaAfterSpacing(0)
3946 sal_uInt16 nVal = 0;
3961 static void lcl_AppendSP(OStringBuffer& rBuffer,
const char cName[],
const OUString& rValue,
3966 rBuffer.append(cName);
3970 rBuffer.append(
"}}");
3975 const char* pBLIPType,
const sal_uInt8* pGraphicAry, sal_uInt64 nSize,
3977 bool bWritePicProp =
true,
const SwAttrSet* pAttrSet =
nullptr)
3980 if (pBLIPType && nSize && pGraphicAry)
3986 if (pFlyFrameFormat && bWritePicProp)
3993 lcl_AppendSP(aRet,
"wzDescription", sDescription, rExport);
4012 nXCroppedSize = 100;
4014 nYCroppedSize = 100;
4020 aRet.append(static_cast<sal_Int32>((100 * rRendered.
Width()) / nXCroppedSize));
4022 aRet.append(static_cast<sal_Int32>((100 * rRendered.
Height()) / nYCroppedSize));
4029 aRet.append(rCr.
GetTop());
4034 aRet.append(static_cast<sal_Int32>(rMapped.
Width()));
4036 aRet.append(static_cast<sal_Int32>(rMapped.
Height()));
4039 aRet.append(static_cast<sal_Int32>(rOrig.
Width()));
4041 aRet.append(static_cast<sal_Int32>(rOrig.
Height()));
4043 aRet.append(pBLIPType);
4046 aRet.append(sal_Int32(8));
4051 pStream->WriteOString(aRet.makeStringAndClear());
4058 pStream->WriteOString(aRet.makeStringAndClear());
4060 return aRet.makeStringAndClear();
4068 Size aRendered(aSize);
4069 aRendered.setWidth(rSize.
Width());
4070 aRendered.setHeight(rSize.
Height());
4078 SAL_WARN(
"sw.rtf",
"failed to export the graphic");
4079 sal_uInt32 nSize = aStream.
TellEnd();
4088 SAL_WARN(
"sw.rtf",
"failed to export the graphic");
4100 sal_Int64 nAspect = rOLENode.
GetAspect();
4108 uno::Reference<util::XCloseable> xClosable = xObj->getComponent();
4109 if (!xClosable.is())
4116 assert(pBase !=
nullptr);
4144 sal_uInt32 nSize = 0;
4149 if (rGraphic.GetType() == GraphicType::NONE)
4156 const char* pBLIPType =
nullptr;
4157 if (rGraphic.IsGfxLink())
4159 aGraphicLink = rGraphic.GetGfxLink();
4161 pGraphicAry = aGraphicLink.
GetData();
4162 switch (aGraphicLink.
GetType())
4172 case GfxLinkType::NativeBmp:
4174 pGraphicAry =
nullptr;
4177 case GfxLinkType::NativeJpg:
4180 case GfxLinkType::NativePng:
4183 case GfxLinkType::NativeWmf:
4187 case GfxLinkType::NativeGif:
4189 aConvertDestinationFormat = ConvertDataFormat::PNG;
4202 (eGraphicType == GraphicType::Bitmap)
4203 ? ConvertDataFormat::PNG
4204 : ConvertDataFormat::WMF))
4213 Size aMapped(eGraphicType == GraphicType::Bitmap ? rGraphic.GetSizePixel()
4214 : rGraphic.GetPrefSize());
4220 Size aRendered(aSize);
4229 if (pFlyFrameFormat == &rFrame.GetFrameFormat())
4264 std::vector<std::pair<OString, OString>> aFlyProperties{
4280 if (pPolyPoly && pPolyPoly->
Count())
4283 *pPolyPoly, pNd,
true);
4284 OStringBuffer aVerticies;
4285 for (sal_uInt16
i = 0;
i < aPoly.
GetSize(); ++
i)
4286 aVerticies.append(
";(" + OString::number(aPoly[
i].X()) +
","
4287 + OString::number(aPoly[
i].
Y()) +
")");
4288 aFlyProperties.push_back(std::make_pair<OString, OString>(
4289 "pWrapPolygonVertices",
4290 "8;" + OString::number(aPoly.
GetSize()) + aVerticies.makeStringAndClear()));
4296 if (!pFlyFrameFormat->
GetOpaque().GetValue())
4297 aFlyProperties.push_back(std::make_pair<OString, OString>(
"fBehindDocument",
"1"));
4308 aFlyProperties.emplace_back(
"rotation", OString::number(nRot));
4312 for (
const std::pair<OString, OString>& rPair : aFlyProperties)
4326 bool bWritePicProp = !pFrame || pFrame->
IsInline();
4328 ExportPICT(pFlyFrameFormat, aSize, aRendered, aMapped, rCr, pBLIPType, pGraphicAry, nSize,
4334 SAL_WARN(
"sw.rtf",
"failed to export the graphic");
4335 pBLIPType = pConvertDestinationBLIPType;
4339 ExportPICT(pFlyFrameFormat, aSize, aRendered, aMapped, rCr, pBLIPType, pGraphicAry, nSize,
4352 SAL_WARN(
"sw.rtf",
"failed to export the graphic");
4357 ExportPICT(pFlyFrameFormat, aSize, aRendered, aMapped, rCr, pBLIPType, pGraphicAry,
4383 SAL_WARN(
"sw.rtf",
"failed to export the numbering picture bullet");
4384 sal_uInt32 nSize = aStream.
TellEnd();
#define OOO_STRING_SVTOOLS_RTF_SNEXT
#define OOO_STRING_SVTOOLS_RTF_ULW
void FormatBackground(const SvxBrushItem &rBrush) override
Sfx item RES_BACKGROUND.
void FormatTextGrid(const SwTextGridItem &rItem) override
Sfx item RES_TEXTGRID.
SvxNumType GetNumberingType() const
SvStream & OutULong(sal_uLong nVal)
void CharFontCTL(const SvxFontItem &rFont) override
Sfx item RES_CHRATR_CTL_FONT.
tools::Long GetWidth() const
#define OOO_STRING_SVTOOLS_RTF_QL
void StartRun(const SwRedlineData *pRedlineData, sal_Int32 nPos, bool bSingleEmptyRun=false) override
Start of the text run.
Wrapper around OStringBuffers, so less hexdump of graphics have to be kept in memory during RTF expor...
bool EndURL(bool isAtEndOfParagraph) override
Output URL end.
void TableHeight(ww8::WW8TableNodeInfoInner::Pointer_t pTableTextNodeInfoInner) override
#define OOO_STRING_SVTOOLS_RTF_CONTEXTUALSPACE
#define OOO_STRING_SVTOOLS_RTF_LTRSECT
#define OOO_STRING_SVTOOLS_RTF_ACCCOMMA
SVX_NUM_CHARS_UPPER_LETTER_N
void CharGrabBag(const SfxGrabBagItem &rItem) override
Sfx item RES_CHRATR_GRABBAG.
void Redline(const SwRedlineData *pRedline) override
Output redlining.
SwNoTextNode * GetNoTextNodeFromSwFrameFormat(const SwFrameFormat &rFormat)
Get the SwNoTextNode associated with a SwFrameFormat if here is one.
sal_Int64 GetAspect() const
void TableSpacing(ww8::WW8TableNodeInfoInner::Pointer_t pTableTextNodeInfoInner) override
#define OOO_STRING_SVTOOLS_RTF_WIDCTLPAR
#define OOO_STRING_SVTOOLS_RTF_SHPRIGHT
void TextINetFormat(const SwFormatINetFormat &rURL) override
Sfx item RES_TXTATR_INETFMT.
SwCharFormat * GetCharFormat()
void FormatULSpace(const SvxULSpaceItem &rULSpace) override
Sfx item RES_UL_SPACE.
void FormatColumns_Impl(sal_uInt16 nCols, const SwFormatCol &rCol, bool bEven, SwTwips nPageSize) override
Sfx item RES_COL.
#define OOO_STRING_SVTOOLS_RTF_QR
SwNodeOffset EndOfSectionIndex() const
#define OOO_STRING_SVTOOLS_RTF_ANIMTEXT
#define OOO_STRING_SVTOOLS_RTF_ULTHDASHD
sal_uInt16 GetRowSpan() const
#define OOO_STRING_SVTOOLS_RTF_ALANG
#define OOO_STRING_SVTOOLS_RTF_BRDRINSET
const T * GetItemIfSet(TypedWhichId< T > nWhich, bool bSrchInParent=true) const
#define OOO_STRING_SVTOOLS_RTF_COLNO
sal_Int32 GetLeft() const
std::vector< SwColumn > SwColumns
void FormatKeep(const SvxFormatKeepItem &rItem) override
Sfx item RES_KEEP.
#define OOO_STRING_SVTOOLS_RTF_FSWISS
void EndRuby(const SwTextNode &rNode, sal_Int32 nPos) override
Output ruby end.
#define OOO_STRING_SVTOOLS_RTF_SN
void CharKerning(const SvxKerningItem &rKerning) override
Sfx item RES_CHRATR_KERNING.
#define OOO_STRING_SVTOOLS_RTF_ULHWAVE
sal_uInt16 GetLower() const
SvxAdjust GetAdjust() const
#define OOO_STRING_SVTOOLS_RTF_PNGBLIP
constexpr auto toTwips(N number, Length from)
SwOLENode * GetOLENode()
Inline methods from Node.hxx.
void ParaSnapToGrid(const SvxParaGridItem &rItem) override
Sfx item RES_PARATR_SNAPTOGRID.
#define OOO_STRING_SVTOOLS_RTF_CLVMGF
void CharBidiRTL(const SfxPoolItem &rItem) override
Sfx item RES_CHRATR_BidiRTL.
void WriteBookmarks_Impl(std::vector< OUString > &rStarts, std::vector< OUString > &rEnds)
const SwOLEObj & GetOLEObj() const
double ConvertBorderWidthToWord(SvxBorderLineStyle, double)
void EndRun(const SwTextNode *pNode, sal_Int32 nPos, bool bLastRun=false) override
End of the text run.
#define OOO_STRING_SVTOOLS_RTF_SUB
void StartTableRow(const ww8::WW8TableNodeInfoInner::Pointer_t &pTableTextNodeInfoInner)
#define OOO_STRING_SVTOOLS_RTF_EXPNDTW
RtfAttributeOutput(RtfExport &rExport)
#define OOO_STRING_SVTOOLS_RTF_FTNALT
#define OOO_STRING_SVTOOLS_RTF_BRDRENGRAVE
SVX_NUM_FULL_WIDTH_ARABIC
sal_Unicode GetStartBracket() const
#define OOO_STRING_SVTOOLS_RTF_FMODERN
rtl_TextEncoding GetCurrentEncoding() const
void CharBackground(const SvxBrushItem &rBrush) override
Sfx item RES_CHRATR_BACKGROUND.
#define OOO_STRING_SVTOOLS_RTF_SBASEDON
void FormatVertOrientation(const SwFormatVertOrient &rFlyVert) override
Sfx item RES_VERT_ORIENT.
bool IsTransparent() const
#define OOO_STRING_SVTOOLS_RTF_ULDASH
sal_uInt16 GetCountBy() const
#define OOO_STRING_SVTOOLS_RTF_S
void PostitField(const SwField *pField) override
#define OOO_STRING_SVTOOLS_RTF_CLBRDRR
const SwNumFormat * GetNumFormat(sal_uInt16 i) const
#define OOO_STRING_SVTOOLS_RTF_SLMULT
#define OOO_STRING_SVTOOLS_RTF_LI
#define OOO_STRING_SVTOOLS_RTF_PICCROPT
#define OOO_STRING_SVTOOLS_RTF_LEVELFOLLOW
std::size_t GetAuthor() const
#define OOO_STRING_SVTOOLS_RTF_FOOTNOTE
#define OOO_STRING_SVTOOLS_RTF_FROMAN
#define OOO_STRING_SVTOOLS_RTF_FFTYPE
#define OOO_STRING_SVTOOLS_RTF_TLUL
#define OOO_STRING_SVTOOLS_RTF_FOOTERY
#define OOO_STRING_SVTOOLS_RTF_FFOWNSTAT
#define OOO_STRING_SVTOOLS_RTF_TQDEC
sal_uInt8 TransColToIco(const Color &rCol)
#define OOO_STRING_SVTOOLS_RTF_ULDASHD
void SectionPageNumbering(sal_uInt16 nNumType, const ::std::optional< sal_uInt16 > &oPageRestartNumber) override
The style of the page numbers.
constexpr TypedWhichId< SvxLanguageItem > RES_CHRATR_LANGUAGE(10)
tools::Long GetRight() const
void CharHighlight(const SvxBrushItem &rBrush) override
Sfx item RES_CHRATR_HIGHLIGHT.
void FormatDrop(const SwTextNode &rNode, const SwFormatDrop &rSwFormatDrop, sal_uInt16 nStyle, ww8::WW8TableNodeInfo::Pointer_t pTextNodeInfo, ww8::WW8TableNodeInfoInner::Pointer_t pTextNodeInfoInner) override
#define OOO_STRING_SVTOOLS_RTF_CLPADFR
sal_uInt8 & GetProportionalHeight()
#define OOO_STRING_SVTOOLS_RTF_TRPADDB
#define OOO_STRING_SVTOOLS_RTF_ASPALPHA
#define OOO_STRING_SVTOOLS_RTF_NESTTABLEPROPRS
constexpr TypedWhichId< SvxFontHeightItem > RES_CHRATR_FONTSIZE(8)
bool FlyFrameOLEMath(const SwFlyFrameFormat *pFlyFrameFormat, SwOLENode &rOLENode, const Size &rSize)
Math export.
#define OOO_STRING_SVTOOLS_RTF_ULTHLDASH
#define OOO_STRING_SVTOOLS_RTF_UP
Base class of all fields.
constexpr::Color COL_AUTO(ColorTransparency, 0xFF, 0xFF, 0xFF, 0xFF)
#define OOO_STRING_SVTOOLS_RTF_PICCROPL
#define OOO_STRING_SVTOOLS_RTF_RIN
tools::Long GetWidth() const
void ParaHangingPunctuation(const SfxBoolItem &rItem) override
Sfx item RES_PARATR_HANGINGPUNCTUATION.
SVX_NUM_CHARS_UPPER_LETTER
#define LO_STRING_SVTOOLS_RTF_LEVELPICTURE
css::uno::Reference< css::embed::XEmbeddedObject > const & GetOleRef()
constexpr Point convert(const Point &rPoint, o3tl::Length eFrom, o3tl::Length eTo)
#define OOO_STRING_SVTOOLS_RTF_FORMFIELD
void SectionRtlGutter(const SfxBoolItem &rRtlGutter) override
RES_RTL_GUTTER.
#define OOO_STRING_SVTOOLS_RTF_AF
#define OOO_STRING_SVTOOLS_RTF_FFNAME
#define OOO_STRING_SVTOOLS_RTF_LISTLEVEL
void ParaNumRule_Impl(const SwTextNode *pTextNd, sal_Int32 nLvl, sal_Int32 nNumId) override
Sfx item RES_PARATR_NUMRULE.
#define OOO_STRING_SVTOOLS_RTF_ATNREF
#define OOO_STRING_SVTOOLS_RTF_SHPBXCOLUMN
#define OOO_STRING_SVTOOLS_RTF_SL
void ParaSplit(const SvxFormatSplitItem &rSplit) override
Sfx item RES_PARATR_SPLIT.
void StartFont(const OUString &rFamilyName) const
Start the font.
constexpr sal_uInt8 MAXLEVEL
void CharFontCJK(const SvxFontItem &rFont) override
Sfx item RES_CHRATR_CJK_FONT.
sal_uInt16 GetDistance(SvxBoxItemLine nLine) const
void FlyFrameGraphic(const SwFlyFrameFormat *pFlyFrameFormat, const SwGrfNode *pGrfNode)
Output graphic fly frames.
#define OOO_STRING_SVTOOLS_RTF_PICT
void clear()
Similar to ->setLength(0), but for all buffers.
void TableInfoCell(ww8::WW8TableNodeInfoInner::Pointer_t pTableTextNodeInfoInner) override
virtual OUString GetPar1() const override
Author.
sal_uInt64 Seek(sal_uInt64 nPos)
void ParaWidows(const SvxWidowsItem &rWidows) override
Sfx item RES_PARATR_WIDOWS.
#define OOO_STRING_SVTOOLS_RTF_FIELD
SwTableLine is one table row in the document model.
#define OOO_STRING_SVTOOLS_RTF_KEEPN
#define OOO_STRING_SVTOOLS_RTF_ULDB
#define OOO_STRING_SVTOOLS_RTF_SAUTOUPD
#define OOO_STRING_SVTOOLS_RTF_SHPWRK
void FormatSurround(const SwFormatSurround &rSurround) override
Sfx item RES_SURROUND.
#define OOO_STRING_SVTOOLS_RTF_PICSCALEY
void EndStyles(sal_uInt16 nNumberOfStyles) override
End of the styles table.
#define LO_STRING_SVTOOLS_RTF_MMATH
#define LO_STRING_SVTOOLS_RTF_MMATHPICT
void RefField(const SwField &rField, const OUString &rRef) override
#define OOO_STRING_SVTOOLS_RTF_INTBL
#define OOO_STRING_SVTOOLS_RTF_CLTXTBRL
#define OOO_STRING_SVTOOLS_RTF_SOUTLVL
#define OOO_STRING_SVTOOLS_RTF_BKMKEND
void CharLanguage(const SvxLanguageItem &rLanguage) override
Sfx item RES_CHRATR_LANGUAGE.
#define OOO_STRING_SVTOOLS_RTF_OUTLINELEVEL
#define OOO_STRING_SVTOOLS_RTF_FLYANCHOR
#define OOO_STRING_SVTOOLS_RTF_FSCRIPT
void StartAbstractNumbering(sal_uInt16 nId) override
Start of the abstract numbering definition instance.
#define OOO_STRING_SVTOOLS_RTF_CLVMRG
#define OOO_STRING_SVTOOLS_RTF_RTLPAR
#define DFLT_ESC_AUTO_SUB
#define OOO_STRING_SVTOOLS_RTF_LEVELSTARTAT
#define OOO_STRING_SVTOOLS_RTF_FLDRSLT
void StartStyles() override
Start of the styles table.
void FormatFrameSize(const SwFormatFrameSize &rSize) override
Sfx item RES_FRM_SIZE.
void SectionTitlePage() override
Has different headers/footers for the title page.
void CharPostureCTL(const SvxPostureItem &rPosture) override
Sfx item RES_CHRATR_CTL_POSTUR