1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
|
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed
* with this work for additional information regarding copyright
* ownership. The ASF licenses this file to you under the Apache
* License, Version 2.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
#ifndef INCLUDED_SW_SOURCE_CORE_INC_DOCUMENTSETTINGMANAGER_HXX
#define INCLUDED_SW_SOURCE_CORE_INC_DOCUMENTSETTINGMANAGER_HXX
#include <IDocumentSettingAccess.hxx>
class SwDoc;
typedef struct _xmlTextWriter* xmlTextWriterPtr;
namespace sw {
class DocumentSettingManager final :
public IDocumentSettingAccess
{
std::shared_ptr<SvxForbiddenCharactersTable> mxForbiddenCharsTable;
SwDoc &m_rDoc;
sal_uInt16 mnLinkUpdMode; //< UpdateMode for links.
SwFieldUpdateFlags meFieldUpdMode;//< Automatically Update Mode for fields/charts.
CharCompressType meChrCmprType;//< for ASIAN: compress punctuation/kana
sal_uInt32 mn32DummyCompatibilityOptions1;
sal_uInt32 mn32DummyCompatibilityOptions2;
// COMPATIBILITY FLAGS START
//
//
// HISTORY OF THE COMPATIBILITY FLAGS:
//
// SO5:
// mbParaSpaceMax def = false, true since SO8
// mbParaSpaceMaxAtPages def = false, true since SO8
//
// SO6:
// mbTabCompat def = false, true since SO8
//
// SO7:
// mbUseVirtualDevice def = true
// mbAddFlyOffsets def = false, hidden
//
// SO7pp1:
// bOldNumbering def = false, hidden
//
// SO8:
// mbAddExternalLeading def = true
// mbUseHiResolutionVirtualDevice def = true, hidden
// mbOldLineSpacing def = false
// mbAddParaSpacingToTableCells def = true
// mbUseFormerObjectPos def = false
// mbUseFormerTextWrapping def = false
// mbConsiderWrapOnObjPos def = false
//
// SO8pp1:
// mbIgnoreFirstLineIndentInNumbering def = false, hidden
// mbDoNotJustifyLinesWithManualBreak def = false, hidden
// mbDoNotResetParaAttrsForNumFont def = false, hidden
//
// SO8pp3
// mbDoNotCaptureDrawObjsOnPage def = false, hidden
// - Relevant for drawing objects, which don't follow the text flow, but
// whose position is outside the page area:
// false: Such drawing objects are captured on the page area of its anchor.
// true: Such drawing objects can leave the page area, they aren't captured.
// mbTableRowKeep def = false, hidden
// mbIgnoreTabsAndBlanksForLineCalculation def = false, hidden
// mbClipAsCharacterAnchoredWriterFlyFrame def = false, hidden
// - Introduced in order to re-activate clipping of as-character anchored
// Writer fly frames in method <SwFlyInContentFrame::MakeAll()> for documents,
// which are created with version prior SO8/OOo 2.0
//
// SO8pp4
// mbUnixForceZeroExtLeading def = false, hidden
//
// SO8pu8
//
// SO9
// #i24363# tab stops relative to indent
// mbTabRelativeToIndent def = true, hidden
// #i89181# suppress tab stop at left indent for paragraphs in lists, whose
// list level position and space mode equals LABEL_ALIGNMENT and whose list
// label is followed by a tab character.
// mbTabAtLeftIndentForParagraphsInList def = false, hidden
bool mbHTMLMode : 1; //< true: Document is in HTMLMode.
bool mbIsGlobalDoc : 1; //< true: It's a global document.
bool mbGlblDocSaveLinks : 1; //< true: Save sections linked in global document.
bool mbIsLabelDoc : 1; //< true: It's a label document.
bool mbPurgeOLE : 1; //< true: Purge OLE-Objects
bool mbKernAsianPunctuation : 1; //< true: kerning also for ASIAN punctuation
bool mbParaSpaceMax : 1;
bool mbParaSpaceMaxAtPages : 1;
bool mbTabCompat : 1;
bool mbUseVirtualDevice : 1;
bool mbAddFlyOffsets : 1;
bool mbAddVerticalFlyOffsets : 1;
bool mbAddExternalLeading : 1;
bool mbUseHiResolutionVirtualDevice : 1;
bool mbOldLineSpacing : 1; // #i11859#
bool mbAddParaSpacingToTableCells : 1;
bool mbUseFormerObjectPos : 1; // #i11860#
bool mbUseFormerTextWrapping : 1;
bool mbConsiderWrapOnObjPos : 1; // #i28701#
// true: object positioning algorithm has consider the wrapping style of // the floating screen objects as given by its attribute 'WrapInfluenceOnObjPos'
// floating screen objects as given by its
// attribute 'WrapInfluenceOnObjPos'.
bool mbMathBaselineAlignment : 1; // TL 2010-10-29 #i972#
bool mbStylesNoDefault : 1;
bool mbFloattableNomargins : 1; //< If paragraph margins next to a floating table should be ignored.
bool mEmbedFonts : 1; //< Whether to embed fonts when saving.
bool mEmbedUsedFonts : 1; //< Whether to embed fonts that are used by the document when saving.
bool mEmbedLatinScriptFonts : 1; //< Whether to embed latin script fonts when saving.
bool mEmbedAsianScriptFonts : 1; //< Whether to embed asian script fonts when saving.
bool mEmbedComplexScriptFonts : 1; //< Whether to embed complex script fonts when saving.
bool mEmbedSystemFonts : 1; //< Whether to embed also system fonts.
// non-ui-compatibility flags:
bool mbOldNumbering : 1;
bool mbIgnoreFirstLineIndentInNumbering : 1; // #i47448#
bool mbDoNotJustifyLinesWithManualBreak : 1; // #i49277#
bool mbDoNotResetParaAttrsForNumFont : 1; // #i53199#
bool mbTableRowKeep : 1;
bool mbIgnoreTabsAndBlanksForLineCalculation : 1; // #i3952#
bool mbDoNotCaptureDrawObjsOnPage : 1; // #i62875#
bool mbClipAsCharacterAnchoredWriterFlyFrames : 1;
bool mbUnixForceZeroExtLeading : 1; // #i60945#
bool mbTabRelativeToIndent : 1; // #i24363# tab stops relative to indent
bool mbProtectForm : 1;
bool mbMsWordCompTrailingBlanks : 1; // tdf#104349 tdf#104668
bool mbMsWordCompMinLineHeightByFly : 1;
bool mbInvertBorderSpacing : 1;
bool mbCollapseEmptyCellPara : 1;
bool mbTabAtLeftIndentForParagraphsInList; // #i89181# - see above
bool mbSmallCapsPercentage66;
bool mbTabOverflow;
bool mbUnbreakableNumberings;
bool mbClippedPictures;
bool mbBackgroundParaOverDrawings;
bool mbTabOverMargin;
bool mbTabOverSpacing;
bool mbTreatSingleColumnBreakAsPageBreak; // tdf#76349
bool mbSurroundTextWrapSmall;
bool mbPropLineSpacingShrinksFirstLine; // fdo#79602
bool mbSubtractFlys; // tdf#86578
bool mApplyParagraphMarkFormatToNumbering;
bool mbAddParaLineSpacingToTableCells; // tdf#125300 tdf#134782
bool mbLastBrowseMode : 1;
bool mbDisableOffPagePositioning; // tdf#112443
bool mbEmptyDbFieldHidesPara;
bool mbContinuousEndnotes = false;
bool mbProtectBookmarks;
bool mbProtectFields;
bool mbHeaderSpacingBelowLastPara;
bool mbFrameAutowidthWithMorePara; //tdf#124423
/// Gutter position: false means left (not a compatibility setting).
bool mbGutterAtTop;
bool mbFootnoteInColumnToPageEnd;
sal_Int32 mnImagePreferredDPI;
bool mbAutoFirstLineIndentDisregardLineSpace;
// If this is on as_char flys wrapping will be handled the same like in Word
bool mbWrapAsCharFlysLikeInOOXML;
bool mbNoNumberingShowFollowBy;
public:
DocumentSettingManager(SwDoc &rDoc);
virtual ~DocumentSettingManager() override;
// IDocumentSettingAccess
virtual bool get(/*[in]*/ DocumentSettingId id) const override;
virtual void set(/*[in]*/ DocumentSettingId id, /*[in]*/ bool value) override;
virtual const css::i18n::ForbiddenCharacters* getForbiddenCharacters(/*[in]*/ LanguageType nLang, /*[in]*/ bool bLocaleData ) const override;
virtual void setForbiddenCharacters(/*[in]*/ LanguageType nLang, /*[in]*/ const css::i18n::ForbiddenCharacters& rForbiddenCharacters ) override;
virtual std::shared_ptr<SvxForbiddenCharactersTable>& getForbiddenCharacterTable() override;
virtual const std::shared_ptr<SvxForbiddenCharactersTable>& getForbiddenCharacterTable() const override;
virtual sal_uInt16 getLinkUpdateMode( /*[in]*/bool bGlobalSettings ) const override;
virtual void setLinkUpdateMode( /*[in]*/ sal_uInt16 nMode ) override;
virtual SwFieldUpdateFlags getFieldUpdateFlags( /*[in]*/bool bGlobalSettings ) const override;
virtual void setFieldUpdateFlags( /*[in]*/ SwFieldUpdateFlags eMode ) override;
virtual CharCompressType getCharacterCompressionType() const override;
virtual void setCharacterCompressionType( /*[in]*/CharCompressType nType ) override;
sal_Int32 getImagePreferredDPI() override
{
return mnImagePreferredDPI;
}
void setImagePreferredDPI(sal_Int32 nValue) override
{
mnImagePreferredDPI = nValue;
}
// Replace all compatibility options with those from rSource.
void ReplaceCompatibilityOptions(const DocumentSettingManager& rSource);
sal_uInt32 Getn32DummyCompatibilityOptions1() const override;
void Setn32DummyCompatibilityOptions1( const sal_uInt32 CompatibilityOptions1 ) override;
sal_uInt32 Getn32DummyCompatibilityOptions2() const override;
void Setn32DummyCompatibilityOptions2( const sal_uInt32 CompatibilityOptions2 ) override;
void dumpAsXml(xmlTextWriterPtr pWriter) const;
};
}
#endif //_DOCSETTING_HXX
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|