20#ifndef INCLUDED_SW_SOURCE_FILTER_WW8_WRTWW8_HXX
21#define INCLUDED_SW_SOURCE_FILTER_WW8_WRTWW8_HXX
66namespace editeng {
class SvxBorderLine; }
129namespace sw::mark {
class IFieldmark; }
132typedef std::map<const css::embed::XEmbeddedObject*, sal_Int32>
WW8OleMap;
135#define GRF_MAGIC_1 0x12
136#define GRF_MAGIC_2 0x34
137#define GRF_MAGIC_3 0x56
138#define GRF_MAGIC_321 0x563412L
140#define OLE_PREVIEW_AS_EMF
183 sal_uLong nLnRestart, ::std::optional<sal_uInt16> oPgRestart = std::nullopt,
184 const SwNode* pNd =
nullptr,
bool bIsFirstPara =
false )
216 bool bIsFirstParagraph =
false );
284 std::vector<std::unique_ptr<WW8_WrPc>>
m_Pcts;
310 rtl_TextEncoding eChrSet);
325 std::vector< const wwFont* >
AsVector()
const;
354 unsigned int nHdFtIndex)
369 sal_uInt32 nLen)
const = 0;
375 const Point& rNdTopLeft );
390 sal_uInt32 nLen)
const override;
403 sal_uInt32 nLen)
const override;
504 std::unique_ptr<WW8_WrPlcAnnotations>
m_pAtn;
634 return static_cast<const T&
>(
GetItem(sal_uInt16(nWhich)));
642 static OUString
GetBookmarkName( sal_uInt16 nTyp,
const OUString* pName, sal_uInt16 nSeqNo );
645 void OutputItemSet(
const SfxItemSet& rSet,
bool bPapFormat,
bool bChpFormat, sal_uInt16 nScript,
bool bExportParentItemSet );
671 OUString
const& rListId,
676 sal_uInt16 nLevelNum,
677 sal_uInt16 nStartAt);
728 void OutputFormat(
const SwFormat& rFormat,
bool bPapFormat,
bool bChpFormat,
bool bFlyFormat =
false );
777 OUString& rFontName )
const;
791 sal_uInt8 nBreakCode,
bool bEvenAndOddHeaders) = 0;
802 const OUString &rHelp,
803 const OUString &ToolTip,
804 const OUString &rSelected,
805 const css::uno::Sequence<OUString> &rListItems) = 0;
819 return static_cast<const T*
>(
HasItem(sal_uInt16(nWhich)));
859 bool bExtraPageBreak =
false ) = 0;
892 bool NearestBookmark( sal_Int32& rNearest,
const sal_Int32 nCurrentPos,
bool bNextPositionOnly );
901 void NearestAnnotationMark( sal_Int32& rNearest,
const sal_Int32 nCurrentPos,
bool bNextPositionOnly );
949 SwWW8Writer(std::u16string_view rFltName,
const OUString& rBaseURL);
964 rtl_TextEncoding eCodeSet);
978 bool bAddZero, rtl_TextEncoding eCodeSet);
999 std::unique_ptr<ww::bytes>
m_pO;
1006 std::unique_ptr<WW8_WrPlcFootnoteEdn>
m_pEdn;
1047 void DoComboBox(css::uno::Reference<css::beans::XPropertySet>
const & xPropSet);
1099 sal_Int32& rlcbSttbf);
1106 void OutSwString(
const OUString&, sal_Int32 nStt, sal_Int32 nLen);
1113 {
m_pO->insert(
m_pO->end(), pBytes, pBytes+nSiz ); }
1123 bool bExtraPageBreak =
false )
override;
1126 sal_uInt16 nDist, sal_uInt16 nSprmNo, sal_uInt16 nSprmNoVer9,
1135 sal_uInt16 nDist,
bool bShadow);
1167 SwDoc& rDocument, std::shared_ptr<SwUnoCursor> & pCurrentPam,
SwPaM* pOriginalPam,
1172 const OUString &rHelp,
1173 const OUString &ToolTip,
1174 const OUString &rSelected,
1175 const css::uno::Sequence<OUString> &rListItems)
override;
1182 virtual void WriteFormData( const ::sw::mark::IFieldmark& rFieldmark )
override;
1183 virtual void WriteHyperlinkData( const ::sw::mark::IFieldmark& rFieldmark )
override;
1200 sal_uInt8 nBreakCode,
bool bEvenAndOddHeaders)
override;
1236 sal_Int32& rTextCnt,
WW8_FC& rRefStt, sal_Int32& rRefCnt )
const;
1238 virtual const std::vector<sal_uInt32>*
GetShapeIdArr()
const;
1298 virtual const std::vector<sal_uInt32>*
GetShapeIdArr()
const override;
1312 std::vector<const void*>::const_iterator it
1323 std::vector<std::unique_ptr<WW8_WrFkp>>
m_Fkps;
1421 sal_uInt16 mm, sal_uInt16 nWidth, sal_uInt16 nHeight,
1425 const ww8::Frame &rFly, sal_uInt16 nWidth, sal_uInt16 nHeight);
1458 return static_cast<const T*
>(
HasTextItem(sal_uInt16(nWhich)));
1490 void OutParaAttr(
bool bCharAttr,
const std::set<sal_uInt16>* pWhichsToIgnore =
nullptr);
1497 void OutAttr( sal_Int32 nSwPos );
1556 void OutAttr(sal_Int32 nSwPos,
bool bWriteCombinedChars);
1569 OUString
GetSnippet(
const OUString &rStr, sal_Int32 nCurrentPos,
1570 sal_Int32 nLen)
const;
1576 void SplitRun( sal_Int32 nSplitEndPos );
1613 void GetStyleData(
const SwFormat* pFormat,
bool& bFormatColl, sal_uInt16& nBase, sal_uInt16& nNext, sal_uInt16& nLink );
1642 OString
const &
GetStyleId(sal_uInt16 nSlot)
const;
1652#define MSWORD_MAX_STYLES_LIMIT 4091
1657OUString
BookmarkToWord(std::u16string_view rBookmark,
bool* pIsMove =
nullptr,
bool* pIsFrom =
nullptr);
The class that has handlers for various resource types when exporting as DOCX.
DrawObj(const ww8::Frame &rContent, WW8_CP nCp, Point aParentPos, SvxFrameDirection nDir, unsigned int nHdFtIndex)
SvxFrameDirection mnDirection
void SetShapeDetails(sal_uInt32 nId, sal_Int32 nThick)
GraphicDetails(const ww8::Frame &rFly, sal_uInt16 nWid, sal_uInt16 nHei)
bool operator==(const GraphicDetails &rIn) const
HdFtPlcDrawObj & operator=(const HdFtPlcDrawObj &)=delete
virtual void RegisterWithFib(WW8Fib &rFib, sal_uInt32 nStart, sal_uInt32 nLen) const override
HdFtPlcDrawObj(const HdFtPlcDrawObj &)=delete
virtual WW8_CP GetCpOffset(const WW8Fib &rFib) const override
The class MSWordAttrIter is a helper class to build the Fkp.chpx.
virtual ~MSWordAttrIter()
MSWordAttrIter & operator=(const MSWordAttrIter &)=delete
MSWordExportBase & m_rExport
virtual const SfxPoolItem & GetItem(sal_uInt16 nWhich) const =0
const T * HasTextItem(TypedWhichId< T > nWhich) const
MSWordAttrIter(const MSWordAttrIter &)=delete
virtual const SfxPoolItem * HasTextItem(sal_uInt16 nWhich) const =0
Base class for WW8Export and DocxExport.
std::unique_ptr< WW8_WrtRedlineAuthor > m_pRedlAuthors
virtual void WriteFormData(const ::sw::mark::IFieldmark &rFieldmark)=0
Write the data of the form field.
void OutputItemSet(const SfxItemSet &rSet, bool bPapFormat, bool bChpFormat, sal_uInt16 nScript, bool bExportParentItemSet)
Use OutputItem() on an item set according to the parameters.
void WriteText()
Iterate through the nodes and call the appropriate OutputNode() on them.
SvxFrameDirection TrueFrameDirection(const SwFrameFormat &rFlyFormat) const
Right to left?
RndStdIds m_eNewAnchorType
void GetSortedAnnotationMarks(const SwWW8AttrIter &rAttrs, sal_Int32 nCurrentPos, sal_Int32 nLen)
virtual void SectionBreaksAndFrames(const SwTextNode &rNode)=0
virtual void WriteHeadersFooters(sal_uInt8 nHeadFootFlags, const SwFrameFormat &rFormat, const SwFrameFormat &rLeftHeaderFormat, const SwFrameFormat &rLeftFooterFormat, const SwFrameFormat &rFirstPageFormat, sal_uInt8 nBreakCode, bool bEvenAndOddHeaders)=0
Output the actual headers and footers.
std::stack< MSWordSaveData > m_aSaveData
Stack to remember the nesting (see MSWordSaveData for more)
const SfxItemSet * GetCurItemSet() const
Getter for pISet.
void GetId(const wwFont &rFont)
This is an overloaded member function, provided for convenience. It differs from the above function o...
std::unique_ptr< WW8_WrPlcField > m_pFieldAtn
bool OutputFollowPageDesc(const SfxItemSet *pSet, const SwTextNode *pNd)
The return value indicates, if a follow page desc is written.
static void CorrectTabStopInSet(SfxItemSet &rSet, sal_Int32 nAbsLeft)
virtual bool CollapseScriptsforWordOk(sal_uInt16 nScript, sal_uInt16 nWhich)=0
Guess the script (asian/western).
virtual ErrCode ExportDocument_Impl()=0
Format-dependent part of the actual export.
void CollectOutlineBookmarks(const SwDoc &rDoc)
sal_uInt16 m_nStyleBeforeFly
style number of the node
IMarkVector m_rSortedBookmarksEnd
bool HasRefToFootOrEndnote(const bool isEndNote, const sal_uInt16 nSeqNo)
void SubstituteBullet(OUString &rNumStr, rtl_TextEncoding &rChrSet, OUString &rFontName) const
void WriteHeaderFooterText(const SwFormat &rFormat, bool bHeader)
Write header/footer text.
virtual void WriteChar(sal_Unicode c)=0
bool m_bFootnoteAtTextEnd
int CollectGrfsOfBullets()
Populates m_vecBulletPic with all the bullet graphics used by numberings.
IMarkVector m_rSortedBookmarksStart
bool IsInTable() const
Return whether currently exported node is in table.
bool m_bOrigShowChanges
Remember the original Show Changes mode.
const sw::BroadcastingModify * m_pOutFormatNode
sal_uInt16 m_nUniqueList
current number for creating unique list names
virtual void OutputEndNode(const SwEndNode &)
Output SwEndNode.
std::unique_ptr< MainTextPlcDrawObj > m_pSdrObjs
std::unique_ptr< WW8_WrPct > m_pPiece
std::unique_ptr< WW8_WrPlcTextBoxes > m_pHFTextBxs
sal_uInt16 DuplicateNumRule(const SwNumRule *pRule, sal_uInt8 nLevel, sal_uInt16 nVal)
In case of numbering restart.
bool NeedSectionBreak(const SwNode &rNd) const
void UpdatePosition(SwWW8AttrIter *pAttrIter, sal_Int32 nCurrentPos)
Update the information for GetNextPos().
SwNumRule * DuplicateNumRuleImpl(const SwNumRule *pRule)
virtual void WriteNumbering()=0
Output the numbering table.
sal_Int32 GetNextPos(SwWW8AttrIter const *pAttrIter, const SwTextNode &rNode, sal_Int32 nCurrentPos)
Get the next position in the text node to output.
virtual void SaveData(SwNodeOffset nStt, SwNodeOffset nEnd)
Remember some of the members so that we can recurse in WriteText().
RedlineFlags m_nOrigRedlineFlags
Remember the original redline mode.
std::vector< const Graphic * > m_vecBulletPic
Vector to record all the graphics of bullets.
void AddListLevelOverride(sal_uInt16 nListId, sal_uInt16 nLevelNum, sal_uInt16 nStartAt)
Store list level overrides (restart of list)
std::unique_ptr< SvxBrushItem > getBackground()
Get background color of the document, if there is one.
ErrCode ExportDocument(bool bWriteAll)
The main function to export the document.
void GetSortedBookmarks(const SwTextNode &rNd, sal_Int32 nCurrentPos, sal_Int32 nLen)
sal_Int32 m_nLinkedTextboxesChainId
void OutputSectionNode(const SwSectionNode &)
Output SwSectionNode.
std::vector< const SwTOXType * > m_aTOXArr
sal_uInt16 OverrideNumRule(SwNumRule const &rExistingRule, OUString const &rListId, SwNumRule const &rAbstractRule)
Create a overriding numbering definition (if it does not yet exist)
void WriteSpecialText(SwNodeOffset nStart, SwNodeOffset nEnd, sal_uInt8 nTTyp)
Set the pCurPam appropriately and call WriteText().
std::stack< sal_Int32 > m_aCurrentCharPropStarts
To remember the position in a run.
std::unique_ptr< SwWW8WrGrf > m_pGrf
bool GetNumberFormat(const SwField &rField, OUString &rStr)
void OutputContentNode(SwContentNode &)
Call the right (virtual) function according to the type of the item.
std::vector< SwNodeOffset > m_aChapterFieldLocs
std::unique_ptr< WW8_WrPlcField > m_pFieldTextBxs
std::unique_ptr< WW8_WrtBookmarks > m_pBkmks
std::shared_ptr< NfKeywordTable > m_pKeyMap
IMarkVector m_rSortedAnnotationMarksStart
virtual void OutputGrfNode(const SwGrfNode &)=0
Output SwGrfNode.
bool m_bSubstituteBullets
const SwPageDesc * m_pPreviousSectionPageDesc
std::unique_ptr< MSWordStyles > m_pStyles
bool m_bLinkedTextboxesHelperInitialized
std::vector< aBookmarkPair > m_aImplicitBookmarks
ww8::WW8TableInfo::Pointer_t m_pTableInfo
const NfKeywordTable & GetNfKeywordTable()
std::map< size_t, std::pair< size_t, size_t > > m_OverridingNums
overriding numdef index -> (existing numdef index, abstractnumdef index)
virtual void AppendSection(const SwPageDesc *pPageDesc, const SwSectionFormat *pFormat, sal_uLong nLnNum)=0
virtual void WriteHyperlinkData(const ::sw::mark::IFieldmark &rFieldmark)=0
sal_uInt16 m_nCharFormatStart
virtual bool PreferPageBreakBefore() const =0
If saving page break is preferred as a paragraph attribute (yes) or as a special character (no).
bool FormatHdFtContainsChapterField(const SwFrameFormat &rFormat) const
static void UpdateTocSectionNodeProperties(const SwSectionNode &rSectionNode)
virtual void OutputLinkedOLE(const OUString &)=0
std::vector< ::sw::mark::IMark * > IMarkVector
Used to split the runs according to the bookmarks start and ends.
const SfxPoolItem * HasItem(sal_uInt16 nWhich) const
bool NearestBookmark(sal_Int32 &rNearest, const sal_Int32 nCurrentPos, bool bNextPositionOnly)
Find the nearest bookmark from the current position.
void NumberingLevel(SwNumRule const &rRule, sal_uInt8 nLvl)
Write one numbering level.
bool ContentContainsChapterField(const SwFormatContent &rContent) const
virtual void RestoreData()
Restore what was saved in SaveData().
wwFontHelper m_aFontHelper
virtual MSWordSections & Sections() const =0
Access to the sections/headers/footres.
void OutputStartNode(const SwStartNode &)
Output SwStartNode.
const SfxPoolItem & GetItem(sal_uInt16 nWhich) const
bool SetCurrentPageDescFromNode(const SwNode &rNd)
const T * HasItem(TypedWhichId< T > nWhich) const
SvxFrameDirection GetCurrentPageDirection() const
Right to left?
std::optional< SvxMSExportOLEObjects > m_oOLEExp
virtual bool AddSectionBreaksForTOX() const =0
Determines the Section Breaks are to be added for TOX Section.
const SwAttrSet * m_pStyAttr
std::unique_ptr< WW8_WrMagicTable > m_pMagicTable
virtual void OutputField(const SwField *pField, ww::eField eFieldType, const OUString &rFieldCmd, FieldFlags nMode=FieldFlags::All)=0
Write the field.
std::unique_ptr< WW8_WrPlcField > m_pFieldMain
int GetGrfIndex(const SvxBrushItem &rBrush)
Returns the index of a picture bullet, used in numberings.
std::unique_ptr< WW8_WrPlcField > m_pFieldEdn
virtual void AppendSmartTags(SwTextNode &)
virtual bool DisallowInheritingOutlineNumbering(const SwFormat &rFormat)=0
Return value indicates if an inherited outline numbering is suppressed.
void AddLinkTarget(std::u16string_view rURL)
static sal_uLong GetSectionLineNo(const SfxItemSet *pSet, const SwNode &rNd)
Line number of the section start.
const SwTextNode * GetHdFtPageRoot() const
Top node of host page when in header/footer.
void OutputSectionBreaks(const SfxItemSet *pSet, const SwNode &rNd, bool isCellOpen=false)
Start new section.
void GatherChapterFields()
Setup the chapter fields (maChapterFieldLocs).
virtual void AppendBookmark(const OUString &rName)=0
virtual void WriteCR(ww8::WW8TableNodeInfoInner::Pointer_t pTableTextNodeInfoInner=ww8::WW8TableNodeInfoInner::Pointer_t())=0
virtual void OutputOLENode(const SwOLENode &)=0
Output SwOLENode.
MSWordExportBase & operator=(const MSWordExportBase &)=delete
bool m_bFontSizeWritten
Is font size written already as part of the current character properties?
unsigned int m_nHdFtIndex
const SwPageDesc * m_pCurrentPageDesc
sal_uInt16 m_nFormatCollStart
std::unique_ptr< WW8_WrPlcField > m_pFieldHdFt
void NearestAnnotationMark(sal_Int32 &rNearest, const sal_Int32 nCurrentPos, bool bNextPositionOnly)
Find the nearest annotation mark from the current position.
std::unique_ptr< SwMSConvertControls > m_pOCXExp
std::unique_ptr< WW8_WrtFactoids > m_pFactoids
void SectionProperties(const WW8_SepInfo &rSectionInfo, WW8_PdAttrDesc *pA=nullptr)
Write section properties.
bool GetBookmarks(const SwTextNode &rNd, sal_Int32 nStt, sal_Int32 nEnd, IMarkVector &rArr)
virtual void DoFormText(const SwInputField *pField)=0
sal_uInt16 GetNumberingId(const SwNumRule &rNumRule)
Return the numeric id of the numbering rule.
bool NeedTextNodeSplit(const SwTextNode &rNd, SwSoftPageBreakList &pList) const
MSWordExportBase(const MSWordExportBase &)=delete
const T & GetItem(TypedWhichId< T > nWhich) const
const SfxItemSet * m_pISet
const SwFormat * m_pCurrentStyle
const ww8::Frame * m_pParentFrame
bool GetAnnotationMarks(const SwWW8AttrIter &rAttrs, sal_Int32 nStt, sal_Int32 nEnd, IMarkVector &rArr)
void OutputFormat(const SwFormat &rFormat, bool bPapFormat, bool bChpFormat, bool bFlyFormat=false)
Output attributes.
const SwFrameFormat * m_pFirstPageFormat
virtual void OutputTextNode(SwTextNode &)
Output SwTextNode.
std::unique_ptr< SwNumRuleTable > m_pUsedNumTable
virtual void AppendAnnotationMarks(const SwWW8AttrIter &rAttrs, sal_Int32 nCurrentPos, sal_Int32 nLen)=0
sal_uInt16 m_nLastFormatId
Style of last TextNode in normal range.
static OUString GetBookmarkName(sal_uInt16 nTyp, const OUString *pName, sal_uInt16 nSeqNo)
Find the bookmark name.
SvxFrameDirection GetDefaultFrameDirection() const
bool m_bOutPageDescs
PageDescs (section properties) are being written.
void SetHdFtPageRoot(const SwTextNode *pNd)
Top node of host page when in header/footer.
std::unordered_map< OUString, OUString > m_TOXMarkBookmarksByURL
bool HasRefToAttr(const OUString &rName)
Find the reference.
sal_uInt16 GetId(const SvxFontItem &rFont)
Return the numeric id of the font (and add it to the font list if needed)
std::unique_ptr< WW8_WrPlcField > m_pFieldHFTextBxs
virtual AttributeOutputBase & AttrOutput() const =0
Access to the attribute output class.
std::unordered_map< SwTOXMark const *, OUString > m_TOXMarkBookmarksByTOXMark
const SwTextNode * m_pTopNodeOfHdFtPage
Top node of host page when in hd/ft.
virtual ~MSWordExportBase()
std::map< OUString, size_t > m_Lists
list-id -> abstractnumdef index
std::shared_ptr< SwUnoCursor > & m_pCurPam
tools::Long GetParaTabStopOffset() const
sal_uInt16 DuplicateAbsNum(OUString const &rListId, SwNumRule const &rAbstractRule)
check if a new abstractNum is needed for this list
virtual void AppendBookmarks(const SwTextNode &rNd, sal_Int32 nCurrentPos, sal_Int32 nLen, const SwRedlineData *pSwRedline=nullptr)=0
virtual void PrepareNewPageDesc(const SfxItemSet *pSet, const SwNode &rNd, const SwFormatPageDesc *pNewPgDescFormat, const SwPageDesc *pNewPgDesc, bool bExtraPageBreak=false)=0
std::map< OUString, LinkedTextboxInfo > m_aLinkedTextboxesHelper
MSWordExportBase(SwDoc &rDocument, std::shared_ptr< SwUnoCursor > &pCurrentPam, SwPaM *pOriginalPam)
std::unique_ptr< WW8_WrPlcField > m_pFieldFootnote
static const SwSectionFormat * GetSectionFormat(const SwNode &rNd)
Format of the section.
void AbstractNumberingDefinitions()
Write all Levels for all SwNumRules - LVLF.
virtual bool ignoreAttributeForStyleDefaults(sal_uInt16) const
Used to filter out attributes that can be e.g. written to .doc but not to .docx.
virtual void SetupSectionPositions(WW8_PdAttrDesc *)
Setup the pA's info.
void SetCurItemSet(const SfxItemSet *pS)
Setter for pISet.
bool m_bFirstTOCNodeWithSection
void ExportPoolItemsToCHP(ww8::PoolItems &rItems, sal_uInt16 nScript, const SvxFontItem *pFont, bool bWriteCombChars=false)
Export the pool items to attributes (through an attribute output class).
std::unique_ptr< WW8_WrPlcPn > m_pPapPlc
std::unique_ptr< HdFtPlcDrawObj > m_pHFSdrObjs
virtual ExportFormat GetExportFormat() const =0
void BulletDefinitions()
Write the numbering picture bullets.
IMarkVector m_rSortedAnnotationMarksEnd
std::unique_ptr< WW8_WrPlcTextBoxes > m_pTextBxs
MSWordAttrIter * m_pChpIter
virtual void DoComboBox(const OUString &rName, const OUString &rHelp, const OUString &ToolTip, const OUString &rSelected, const css::uno::Sequence< OUString > &rListItems)=0
std::map< size_t, std::map< size_t, size_t > > m_ListLevelOverrides
Map of maps for list levels overrides listid -> level number -> restart value.
std::unique_ptr< WW8_WrPlcPn > m_pChpPlc
void NumberingDefinitions()
Write static data of SwNumRule - LSTF.
virtual bool FieldsQuoted() const =0
Determines if the import filter already quoted fields or not.
void SetCurPam(SwNodeOffset nStt, SwNodeOffset nEnd)
sal_uInt16 GetId(const SwTextFormatColl &rColl) const
Return the numeric id of the style.
virtual void ExportGrfBullet(const SwTextNode &rNd)=0
virtual sal_uInt64 ReplaceCr(sal_uInt8 nChar)=0
std::unique_ptr< WW8_WrPlcAnnotations > m_pAtn
static bool NoPageBreakSection(const SfxItemSet *pSet)
bool m_bHideTabLeaderAndPageNumbers
Class to collect and output the sections/headers/footers.
bool mbDocumentIsProtected
const WW8_SepInfo * CurrentSectionInfo()
The most recent WW8_SepInfo.
bool DocumentIsProtected() const
MSWordSections & operator=(const MSWordSections &)
sal_uInt16 CurrentNumberOfColumns(const SwDoc &rDoc) const
Number of columns based on the most recent WW8_SepInfo.
MSWordSections(const MSWordSections &)
static bool HasBorderItem(const SwFormat &rFormat)
Should we output borders?
virtual ~MSWordSections()
void AppendSection(const SwPageDesc *pPd, const SwSectionFormat *pSectionFormat, sal_uLong nLnNumRestartNo, bool bIsFirstParagraph=false)
static void SetFooterFlag(sal_uInt8 &rHeadFootFlags, const SwFormat &rFormat, sal_uInt8 nFlag)
void NeedsDocumentProtected(const WW8_SepInfo &rInfo)
std::vector< WW8_SepInfo > m_aSects
static void SetHeaderFlag(sal_uInt8 &rHeadFootFlags, const SwFormat &rFormat, sal_uInt8 nFlag)
virtual bool HeaderFooterWritten()
void CheckForFacinPg(const WW8Export &rWrt) const
static const SwFormatCol & GetFormatCol(const SwDoc &rDoc, const WW8_SepInfo &rInfo)
Number of columns of the provided WW8_SepInfo.
Class to collect and output the styles table.
static OString CreateStyleId(std::u16string_view aName)
create style id using only ASCII characters of the style name
MSWordStyles & operator=(const MSWordStyles &)=delete
void GetStyleData(const SwFormat *pFormat, bool &bFormatColl, sal_uInt16 &nBase, sal_uInt16 &nNext, sal_uInt16 &nLink)
Return information about one style.
MSWordExportBase & m_rExport
void BuildStyleIds()
Based on style names, fill in unique, MS-like names.
void WriteProperties(const SwFormat *pFormat, bool bPap, sal_uInt16 nPos, bool bInsDefCharSiz)
Outputs attributes of one style.
void BuildStylesTable()
Create the style table, called from the constructor.
void OutputStyle(sal_uInt16 nSlot)
Outputs one style - called (in a loop) from OutputStylesTable().
sal_uInt16 GetHeadingParagraphStyleId(sal_uInt16 nLevel) const
OUString GetStyleWWName(SwFormat const *pFormat) const
the awful TOC field references names, not styleIds
OString const & GetStyleId(sal_uInt16 nSlot) const
Get styleId of the nSlot-th style (nSlot is its position in m_aStyles).
void SetStyleDefaults(const SwFormat &rFormat, bool bPap)
static sal_uInt16 GetWWId(const SwFormat &rFormat)
void OutputStylesTable()
Output the styles table.
sal_uInt16 GetSlot(const SwFormat *pFormat) const
Get slot of the style (rFormat).
const SwNumRule * GetSwNumRule(sal_uInt16 nSlot) const
Get numbering rule of the nSlot-th style.
MSWordStyles(const MSWordStyles &)=delete
std::vector< MapEntry > m_aStyles
Slot <-> Character/paragraph/list style array.
void BuildWwNames()
Generate proper Word names, taking mapping between special types into account.
bool m_bListStyles
If list styles are requested to be exported as well.
sal_uInt16 m_aHeadingParagraphStyles[MAXLEVEL]
const SwFormat * GetSwFormat(sal_uInt16 nSlot) const
Used to export formatted text associated to drawings.
virtual const SfxPoolItem & GetItem(sal_uInt16 nWhich) const override
void SetCharSet(const EECharAttrib &rTextAttr, bool bStart)
void OutAttr(sal_Int32 nSwPos)
rtl_TextEncoding GetNextCharSet() const
void OutParaAttr(bool bCharAttr, const std::set< sal_uInt16 > *pWhichsToIgnore=nullptr)
rtl_TextEncoding GetNodeCharSet() const
MSWord_SdrAttrIter(const MSWord_SdrAttrIter &)=delete
virtual const SfxPoolItem * HasTextItem(sal_uInt16 nWhich) const override
MSWord_SdrAttrIter & operator=(const MSWord_SdrAttrIter &)=delete
std::vector< EECharAttrib > m_aTextAtrArr
sal_Int32 SearchNext(sal_Int32 nStartPos)
sal_Int32 m_nCurrentSwPos
std::vector< const EECharAttrib * > m_aChrTextAtrArr
std::vector< rtl_TextEncoding > m_aChrSetArr
void NextPara(sal_Int32 nPar)
bool IsTextAttr(sal_Int32 nSwPos)
void SetItemsThatDifferFromStandard(bool bCharAttr, SfxItemSet &rSet)
void OutEEField(const SfxPoolItem &rHt)
sal_Int32 WhereNext() const
const SfxItemPool * m_pEditPool
const EditTextObject * m_pEditObj
rtl_TextEncoding m_eNdChrSet
MainTextPlcDrawObj(const MainTextPlcDrawObj &)=delete
MainTextPlcDrawObj & operator=(const MainTextPlcDrawObj &)=delete
virtual WW8_CP GetCpOffset(const WW8Fib &) const override
virtual void RegisterWithFib(WW8Fib &rFib, sal_uInt32 nStart, sal_uInt32 nLen) const override
DrawObjVector & GetObjArr()
virtual void RegisterWithFib(WW8Fib &rFib, sal_uInt32 nStart, sal_uInt32 nLen) const =0
virtual WW8_CP GetCpOffset(const WW8Fib &rFib) const =0
void WritePlc(WW8Export &rWrt) const
bool Append(WW8Export const &, WW8_CP nCp, const ww8::Frame &rFormat, const Point &rNdTopLeft)
PlcDrawObj & operator=(const PlcDrawObj &)=delete
PlcDrawObj(const PlcDrawObj &)=delete
The class that has handlers for various resource types when exporting as RTF.
virtual ErrCode Write(SwPaM &, const css::uno::Reference< css::embed::XStorage > &, const OUString *, SfxMedium *=nullptr) override
SvStream & WriteInt32(sal_Int32 nInt32)
SvStream & WriteInt16(sal_Int16 nInt16)
Ends a section of nodes in the document model.
Base class of all fields.
Content, content of frame (header, footer, fly).
Pagedescriptor Client of SwPageDesc that is "described" by the attribute.
Base class of the Writer document model elements.
PaM is Point and Mark: a selection of the document model.
vector_type::size_type size_type
A section node represents the start of a section on the UI, i.e.
Starts a section of nodes in the document model.
Represents the style of a paragraph.
SwTextNode is a paragraph in the document model.
sal_uInt16 GetScript() const
const SwFormatDrop & GetSwFormatDrop() const
sal_Int32 m_nCurrentSwPos
bool IsAnchorLinkedToThisNode(SwNodeOffset nNodePos)
bool IncludeEndOfParaCRInRedlineProperties(sal_Int32 nPos) const
sw::util::CharRuns::const_iterator maCharRunIter
sal_Int32 WhereNext() const
void OutAttr(sal_Int32 nSwPos, bool bWriteCombinedChars)
virtual const SfxPoolItem * HasTextItem(sal_uInt16 nWhich) const override
SwWW8AttrIter & operator=(const SwWW8AttrIter &)=delete
FlyProcessingState OutFlys(sal_Int32 nSwPos)
const SwRedlineData * GetRunLevelRedline(sal_Int32 nPos)
bool IsTextAttr(sal_Int32 nSwPos) const
bool IsDropCap(int nSwPos)
void SplitRun(sal_Int32 nSplitEndPos)
rtl_TextEncoding GetCharSet() const
bool HasFlysAt(sal_Int32 nSwPos) const
OUString GetSnippet(const OUString &rStr, sal_Int32 nCurrentPos, sal_Int32 nLen) const
SwRedlineTable::size_type m_nCurRedlinePos
virtual const SfxPoolItem & GetItem(sal_uInt16 nWhich) const override
int OutAttrWithRange(const SwTextNode &rNode, sal_Int32 nPos)
SwWW8AttrIter(const SwWW8AttrIter &)=delete
bool IsExportableAttr(sal_Int32 nSwPos) const
rtl_TextEncoding meChrSet
sal_Int32 SearchNext(sal_Int32 nStartPos)
const SwFormatDrop & mrSwFormatDrop
const SwRangeRedline * m_pCurRedline
sw::util::CharRuns maCharRuns
const SwTextNode & m_rNode
const SwRedlineData * GetParagraphLevelRedline()
void OutSwFormatRefMark(const SwFormatRefMark &rAttr)
void handleToggleProperty(SfxItemSet &rExportSet, const SwFormatCharFormat *pCharFormatItem, sal_uInt16 nWhich, const SfxPoolItem *pValue)
bool RequiresImplicitBookmark()
const SwTextNode & GetNode() const
void WriteGraphicNode(SvStream &rStrm, const GraphicDetails &rItem)
SwWW8WrGrf(WW8Export &rW)
SwWW8WrGrf & operator=(const SwWW8WrGrf &)=delete
void WriteGrfForBullet(SvStream &rStrm, const Graphic &rGrf, sal_uInt16 nWidth, sal_uInt16 nHeight)
void WriteGrfFromGrfNode(SvStream &rStrm, const SwGrfNode &rNd, const ww8::Frame &rFly, sal_uInt16 nWidth, sal_uInt16 nHeight)
SwWW8WrGrf(const SwWW8WrGrf &)=delete
WW8Export & m_rWrt
for access to the variables
static void WritePICBulletFHeader(SvStream &rStrm, const Graphic &rGrf, sal_uInt16 mm, sal_uInt16 nWidth, sal_uInt16 nHeight)
static void WritePICFHeader(SvStream &rStrm, const ww8::Frame &rFly, sal_uInt16 mm, sal_uInt16 nWidth, sal_uInt16 nHeight, const SwAttrSet *pAttrSet=nullptr)
std::vector< GraphicDetails > maDetails
void Insert(const ww8::Frame &rFly)
The writer class that gets called for the WW8 filter.
static sal_uLong FillUntil(SvStream &rStrm, sal_uLong nEndPos=0)
static void InsUInt32(ww::bytes &rO, sal_uInt32 n)
static void WriteString8(SvStream &rStrm, std::u16string_view rStr, bool bAddZero, rtl_TextEncoding eCodeSet)
virtual ErrCode WriteStorage() override
static void InsAsString16(ww::bytes &rO, const OUString &rStr)
ErrCode WriteStorageImpl()
static void FillCount(SvStream &rStrm, sal_uLong nCount)
static void WriteString_xstz(SvStream &rStrm, const OUString &rStr, bool bAddZero)
static void InsUInt16(ww::bytes &rO, sal_uInt16 n)
virtual ErrCode Write(SwPaM &, SfxMedium &, const OUString *) override
virtual ErrCode WriteMedium(SfxMedium &) override
static void InsAsString8(ww::bytes &O, std::u16string_view rStr, rtl_TextEncoding eCodeSet)
SwWW8Writer & operator=(const SwWW8Writer &)=delete
static void WriteLong(SvStream &rStrm, sal_Int32 nVal)
bool InitStd97CodecUpdateMedium(::msfilter::MSCodec_Std97 &rCodec)
static void WriteString16(SvStream &rStrm, const OUString &rStr, bool bAddZero)
static void WriteShort(SvStream &rStrm, sal_Int16 nVal)
virtual ~SwWW8Writer() override
SwWW8Writer(std::u16string_view rFltName, const OUString &rBaseURL)
SwWW8Writer(const SwWW8Writer &)=delete
Exporter of the binary Word file formats.
void IncrementHdFtIndex()
virtual void OutputField(const SwField *pField, ww::eField eFieldType, const OUString &rFieldCmd, FieldFlags nMode=FieldFlags::All) override
Write the field.
void Out_CellRangeBorders(const SvxBoxItem *pBox, sal_uInt8 nStart, sal_uInt8 nLimit)
static bool TransBrush(const Color &rCol, WW8_SHD &rShd)
TransBrush converts SW-Brushes to WW.
void WriteSdrTextObj(const SdrTextObj &rObj, sal_uInt8 nTyp)
void Out_SwFormatBox(const SvxBoxItem &rBox, bool bShadow)
is for all boxes except in tables.
void DoComboBox(css::uno::Reference< css::beans::XPropertySet > const &xPropSet)
std::unique_ptr< WW8AttributeOutput > m_pAttrOutput
Converting attributes to stream data.
std::unique_ptr< WW8_WrPlcSepx > m_pSepx
Sections/headers/footers.
virtual MSWordSections & Sections() const override
Access to the sections/headers/footres.
void OutSprmBytes(sal_uInt8 *pBytes, sal_uInt16 nSiz)
void InsUInt16(sal_uInt16 n)
void InsInt16(sal_Int16 n)
tools::SvRef< SotStorage > m_xEscherStg
SwMSConvertControls & GetOCXExp()
virtual void SaveData(SwNodeOffset nStt, SwNodeOffset nEnd) override
Remember some of the members so that we can recurse in WriteText().
static void Out_BorderLine(ww::bytes &rO, const ::editeng::SvxBorderLine *pLine, sal_uInt16 nDist, sal_uInt16 nSprmNo, sal_uInt16 nSprmNoVer9, bool bShadow)
Gets passed a WW8Bytes*, so the function also can be used for the table border.
WW8Export(SwWW8Writer *pWriter, SwDoc &rDocument, std::shared_ptr< SwUnoCursor > &pCurrentPam, SwPaM *pOriginalPam, bool bDot)
Setup the exporter.
virtual void OutputGrfNode(const SwGrfNode &) override
Output SwGrfNode.
virtual ~WW8Export() override
void WritePostItBegin(ww::bytes *pO=nullptr)
virtual ErrCode ExportDocument_Impl() override
Format-dependent part of the actual export.
void WriteStringAsPara(const OUString &rText)
bool m_bDot
Template or document.
void OutGrf(const ww8::Frame &rFrame)
void WriteOutliner(const OutlinerParaObject &rOutliner, sal_uInt8 nTyp)
virtual void WriteNumbering() override
Output the numbering table.
virtual void WriteFormData(const ::sw::mark::IFieldmark &rFieldmark) override
Write the data of the form field.
SwWW8Writer * m_pWriter
Pointer to the writer.
virtual void OutputOLENode(const SwOLENode &) override
Output SwOLENode.
void WriteChar(sal_Unicode c) override
virtual sal_uInt64 ReplaceCr(sal_uInt8 nChar) override
ReplaceCr() is used for Pagebreaks and Pagedescs.
virtual void ExportGrfBullet(const SwTextNode &rNd) override
void InsUInt32(sal_uInt32 n)
virtual bool DisallowInheritingOutlineNumbering(const SwFormat &rFormat) override
Return value indicates if an inherited outline numbering is suppressed.
bool TestOleNeedsGraphic(const SwAttrSet &rSet, tools::SvRef< SotStorage > const &xOleStg, const tools::SvRef< SotStorage > &xObjStg, OUString const &rStorageName, SwOLENode *pOLENd)
WW8_WrPlcField * CurrentFieldPlc() const
Fields.
SvStream * m_pDataStrm
Streams for WW97 Export.
virtual void AppendSection(const SwPageDesc *pPageDesc, const SwSectionFormat *pFormat, sal_uLong nLnNum) override
void SetHdFtIndex(unsigned int nHdFtIndex)
void MiserableRTLFrameFormatHack(SwTwips &rLeft, SwTwips &rRight, const ww8::Frame &rFrameFormat)
Nasty swap for bidi if necessary.
virtual ExportFormat GetExportFormat() const override
virtual void AppendBookmark(const OUString &rName) override
bool MiserableFormFieldExportHack(const SwFrameFormat &rFrameFormat)
virtual bool FieldsQuoted() const override
Determines if the import filter already quoted fields or not.
const SvxBrushItem * GetCurrentPageBgBrush() const
sal_uInt16 AddRedlineAuthor(std::size_t nId)
std::unique_ptr< WW8_WrPlcFootnoteEdn > m_pFootnote
Footnotes - structure to remember them, and output.
void AppendFlyInFlys(const ww8::Frame &rFrameFormat, const Point &rNdTopLeft)
void ExportDopTypography(WW8DopTypography &rTypo)
virtual void DoComboBox(const OUString &rName, const OUString &rHelp, const OUString &ToolTip, const OUString &rSelected, const css::uno::Sequence< OUString > &rListItems) override
virtual void AppendAnnotationMarks(const SwWW8AttrIter &rAttrs, sal_Int32 nCurrentPos, sal_Int32 nLen) override
std::unique_ptr< WW8Dop > m_pDop
Document Properties.
unsigned int GetHdFtIndex() const
static WW8_BRCVer9 TranslateBorderLine(const ::editeng::SvxBorderLine &pLine, sal_uInt16 nDist, bool bShadow)
std::unique_ptr< WW8Fib > m_pFib
File Information Block.
void WriteAsStringTable(const std::vector< OUString > &, sal_Int32 &rfcSttbf, sal_Int32 &rlcbSttbf)
virtual void AppendSmartTags(SwTextNode &rTextNode) override
virtual void PrepareNewPageDesc(const SfxItemSet *pSet, const SwNode &rNd, const SwFormatPageDesc *pNewPgDescFormat, const SwPageDesc *pNewPgDesc, bool bExtraPageBreak=false) override
Helper method for OutputSectionBreaks() and OutputFollowPageDesc().
std::shared_ptr< SvxBrushItem > TrueFrameBgBrush(const SwFrameFormat &rFlyFormat) const
void OutOverrideListTab()
virtual void AppendBookmarks(const SwTextNode &rNd, sal_Int32 nCurrentPos, sal_Int32 nLen, const SwRedlineData *pRedlineData=nullptr) override
SwTwips CurrentPageWidth(SwTwips &rLeft, SwTwips &rRight) const
virtual AttributeOutputBase & AttrOutput() const override
memory leak #i120098#, to hold the reference to unnamed SotStorage obj
void StartCommentOutput(std::u16string_view rName)
virtual bool AddSectionBreaksForTOX() const override
Determines the Section Breaks are to be added for TOX Section.
virtual void WriteHeadersFooters(sal_uInt8 nHeadFootFlags, const SwFrameFormat &rFormat, const SwFrameFormat &rLeftHeaderFormat, const SwFrameFormat &rLeftFooterFormat, const SwFrameFormat &rFirstPageFormat, sal_uInt8 nBreakCode, bool bEvenAndOddHeaders) override
Output the actual headers and footers.
void GetCurrentItems(ww::bytes &rItems) const
virtual void SectionBreaksAndFrames(const SwTextNode &rNode) override
sal_uInt32 GetSdrOrdNum(const SwFrameFormat &rFormat) const
static sal_uInt8 GetNumId(sal_uInt16 eNumType)
Converts the SVX numbering type to MSONFC.
WW8Export & operator=(const WW8Export &)=delete
virtual void DoFormText(const SwInputField *pField) override
static void Out_SwFormatTableBox(ww::bytes &rO, const SvxBoxItem *rBox)
FormatBox2() is for TC structures in tables.
virtual void OutputLinkedOLE(const OUString &) override
void OutGrfBullets(const ww8::Frame &rFrame)
WW8_CP Fc2Cp(sal_uLong nFc) const
void WriteFootnoteBegin(const SwFormatFootnote &rFootnote, ww::bytes *pO=nullptr)
virtual bool PreferPageBreakBefore() const override
If saving page break is preferred as a paragraph attribute (yes) or as a special character (no).
SwWW8Writer & GetWriter() const
WW8Export(const WW8Export &)=delete
void AppendBookmarkEndWithCorrection(const OUString &rName)
virtual void SetupSectionPositions(WW8_PdAttrDesc *pA) override
Setup the pA's info.
virtual void WriteHyperlinkData(const ::sw::mark::IFieldmark &rFieldmark) override
std::unique_ptr< ww::bytes > m_pO
Buffer.
virtual void WriteCR(ww8::WW8TableNodeInfoInner::Pointer_t pTableTextNodeInfoInner=ww8::WW8TableNodeInfoInner::Pointer_t()) override
virtual void RestoreData() override
Restore what was saved in SaveData().
void EndCommentOutput(std::u16string_view rName)
std::unique_ptr< WW8_WrPlcFootnoteEdn > m_pEdn
Endnotes - structure to remember them, and output.
void OutSwString(const OUString &, sal_Int32 nStt, sal_Int32 nLen)
void MoveFieldMarks(WW8_CP nFrom, WW8_CP nTo)
virtual bool CollapseScriptsforWordOk(sal_uInt16 nScript, sal_uInt16 nWhich) override
Guess the script (asian/western).
FIB - the File Information Block.
void setCvBack(sal_uInt32 cvBack)
void setCvFore(sal_uInt32 cvFore)
void Write(WW8Export &rExport)
FKP - Formatted disK Page.
void Append(WW8_CP nCp, sal_uLong nData)
WW8_WrMagicTable(const WW8_WrMagicTable &)=delete
WW8_WrMagicTable & operator=(const WW8_WrMagicTable &)=delete
void Write(WW8Export &rWrt)
WW8_WrPct(WW8_FC nStartFc)
std::vector< std::unique_ptr< WW8_WrPc > > m_Pcts
void WritePc(WW8Export &rWrt)
void AppendPc(WW8_FC nStartFc)
WW8_CP Fc2Cp(sal_uLong nFc) const
WW8_WrPlc1 & operator=(const WW8_WrPlc1 &)=delete
std::vector< WW8_CP > m_aPos
void Write(SvStream &rStrm)
std::unique_ptr< sal_uInt8[]> m_pData
void Append(WW8_CP nCp, const void *pData)
WW8_WrPlc1(const WW8_WrPlc1 &)=delete
void Finish(sal_uLong nLastCp, sal_uLong nStartCp)
void AddRangeStartPosition(const OUString &rName, WW8_CP nStartCp, bool bIgnoreEmpty)
virtual ~WW8_WrPlcAnnotations() override
WW8_WrPlcAnnotations(const WW8_WrPlcAnnotations &)=delete
o3tl::sorted_vector< const SwRedlineData * > maProcessedRedlines
void Append(WW8_CP nCp, const SwPostItField *pPostIt)
void WritePlc(WW8Export &rWrt) const
bool WriteText(WW8Export &rWrt)
bool IsNewRedlineComment(const SwRedlineData *pRedLine)
std::map< const OUString, std::pair< WW8_CP, bool > > m_aRangeStartPositions
WW8_WrPlcAnnotations & operator=(WW8_WrPlcAnnotations const &)=delete
WW8_WrPlcField(const WW8_WrPlcField &)=delete
void Write(WW8Export &rWrt)
WW8_WrPlcField(sal_uInt16 nStructSz, sal_uInt8 nTTyp)
sal_uInt16 ResultCount() const
WW8_WrPlcField & operator=(const WW8_WrPlcField &)=delete
std::vector< std::unique_ptr< WW8_WrFkp > > m_Fkps
sal_uInt8 * CopyLastSprms(sal_uInt8 &rLen)
void AppendFkpEntry(WW8_FC nEndFc, short nVarLen=0, const sal_uInt8 *pSprms=nullptr)
sal_uInt16 m_nFkpStartPage
WW8_WrPlcPn & operator=(const WW8_WrPlcPn &)=delete
WW8_WrPlcPn(const WW8_WrPlcPn &)=delete
std::unique_ptr< WW8_WrPlc0 > m_pTextPos
WW8_WrPlcSepx(const WW8_WrPlcSepx &)=delete
void OutHeaderFooter(WW8Export &rWrt, bool bHeader, const SwFormat &rFormat, sal_uLong &rCpPos, sal_uInt8 nHFFlags, sal_uInt8 nFlag, sal_uInt8 nBreakCode)
void WritePlcSed(WW8Export &rWrt) const
virtual bool HeaderFooterWritten() override
void WriteSepx(SvStream &rStrm) const
std::vector< std::shared_ptr< WW8_PdAttrDesc > > m_SectionAttributes
void AppendSep(WW8_CP nStartCp, const SwPageDesc *pPd, const SwSectionFormat *pSectionFormat, sal_uLong nLnNumRestartNo)
void Finish(WW8_CP nEndCp)
WW8_WrPlcSepx & operator=(const WW8_WrPlcSepx &)=delete
void WritePlcHdd(WW8Export &rWrt) const
bool WriteKFText(WW8Export &rWrt)
bool m_bHeaderFooterWritten
virtual ~WW8_WrPlcSepx() override
void WriteFootnoteEndText(WW8Export &rWrt, sal_uLong nCpStt)
std::vector< WW8_CP > m_aCps
std::vector< const void * > m_aContent
virtual ~WW8_WrPlcSubDoc()
WW8_WrPlcSubDoc & operator=(const WW8_WrPlcSubDoc &)=delete
WW8_WrPlcSubDoc(const WW8_WrPlcSubDoc &)=delete
void WriteGenericPlc(WW8Export &rWrt, sal_uInt8 nTTyp, WW8_FC &rTextStt, sal_Int32 &rTextCnt, WW8_FC &rRefStt, sal_Int32 &rRefCnt) const
std::vector< WW8_CP > m_aCps
virtual const std::vector< sal_uInt32 > * GetShapeIdArr() const
std::unique_ptr< WW8_WrPlc0 > m_pTextPos
std::vector< const SwFrameFormat * > m_aSpareFormats
bool WriteGenericText(WW8Export &rWrt, sal_uInt8 nTTyp, WW8_CP &rCount)
void Append(const SdrObject &rObj, sal_uInt32 nShapeId)
WW8_WrPlcTextBoxes & operator=(WW8_WrPlcTextBoxes const &)=delete
std::vector< sal_uInt32 > m_aShapeIds
WW8_WrPlcTextBoxes(const WW8_WrPlcTextBoxes &)=delete
sal_uInt16 GetPos(const void *p) const
WW8_WrPlcTextBoxes(sal_uInt8 nTTyp)
bool WriteText(WW8Export &rWrt)
virtual const std::vector< sal_uInt32 > * GetShapeIdArr() const override
void WritePlc(WW8Export &rWrt) const
Handles export of smart tags.
virtual void Write(Writer &rWrt) override
IDocumentSettingAccess & getIDocumentSettingAccess()
Make exporting a Writer Frame easy.
bool RefersToSameFrameAs(const Frame &rOther) const
Does this ww8::Frame refer to the same writer content as another.
std::shared_ptr< WW8TableInfo > Pointer_t
std::shared_ptr< WW8TableNodeInfoInner > Pointer_t
std::map< wwFont, sal_uInt16 > maFonts
Keep track of fonts that need to be exported.
void InitFontTable(const SwDoc &rDoc)
rDoc used only to get the initial standard font(s) in use.
sal_uInt16 GetId(const SvxFontItem &rFont)
void WriteFontTable(SvStream *pTableStream, WW8Fib &pFib)
std::vector< const wwFont * > AsVector() const
Convert from fast insertion map to linear vector in the order that we want to write.
bool m_bLoadAllFonts
If true, all fonts are loaded before processing the document.
Collects and outputs fonts.
void WriteRtf(const RtfAttributeOutput *rAttrOutput) const
void Write(SvStream *pTableStram) const
void WriteDocx(DocxAttributeOutput *rAttrOutput) const
rtl_TextEncoding meChrSet
friend bool operator<(const wwFont &r1, const wwFont &r2)
OUString const & GetFamilyName() const
wwFont(std::u16string_view rFamilyName, FontPitch ePitch, FontFamily eFamily, rtl_TextEncoding eChrSet)
std::vector< CharRunEntry > CharRuns
std::vector< Frame > Frames
STL container of Frames.
std::map< sal_uInt16, const SfxPoolItem *, sw::util::ItemSort > PoolItems
STL container of SfxPoolItems (Attributes)
std::vector< Frame >::iterator FrameIter
STL iterator for Frames.
std::vector< sal_uInt8 > bytes
::std::array< OUString, NF_KEYWORD_ENTRIES_COUNT > NfKeywordTable
Structure that is used to save some of the WW8Export/DocxExport data.
std::shared_ptr< SwUnoCursor > pOldPam
bool bOldWriteAll
WW8Export only.
const ww8::Frame * pOldFlyFormat
const SwPageDesc * pOldPageDesc
std::unique_ptr< ww::bytes > pOOld
WW8Export only.
MapEntry(const SwFormat *f)
MapEntry(const SwNumRule *r)
sal_uInt16 ww_id
We need to build style id's for DOCX export; ideally we should roundtrip that, but this is good enoug...
const SwNumRule * num_rule
const OutlinerParaObject * mpRichText
bool HasRange() const
An annotation has a range if start != end or the m_bIgnoreEmpty flag is cleared.
WW8_Annotation(const SwPostItField *pPostIt, WW8_CP nRangeStart, WW8_CP nRangeEnd)
For the output of sections.
sal_uLong nLnNumRestartNo
::std::optional< sal_uInt16 > oPgRestartNo
const SwSectionFormat * pSectionFormat
const SwPageDesc * pPageDesc
WW8_SepInfo(const SwPageDesc *pPD, const SwSectionFormat *pFormat, sal_uLong nLnRestart, ::std::optional< sal_uInt16 > oPgRestart=std::nullopt, const SwNode *pNd=nullptr, bool bIsFirstPara=false)
constexpr sal_uInt8 MAXLEVEL
FlyProcessingState
enum to state the present state of the fly
o3tl::sorted_vector< sal_Int32 > SwSoftPageBreakList
std::vector< DrawObj * > DrawObjPointerVector
OUString BookmarkToWord(std::u16string_view rBookmark, bool *pIsMove=nullptr, bool *pIsFrom=nullptr)
std::pair< OUString, SwNodeOffset > aBookmarkPair
sal_Int16 GetWordFirstLineOffset(const SwNumFormat &rFormat)
OUString FieldString(ww::eField eIndex)
std::vector< DrawObj > DrawObjVector
std::map< const css::embed::XEmbeddedObject *, sal_Int32 > WW8OleMap