1 /*************************************************************************
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 * Copyright 2008 by Sun Microsystems, Inc.
7 * OpenOffice.org - a multi-platform office productivity suite
9 * $RCSfile: swtypes.hxx,v $
12 * This file is part of OpenOffice.org.
14 * OpenOffice.org is free software: you can redistribute it and/or modify
15 * it under the terms of the GNU Lesser General Public License version 3
16 * only, as published by the Free Software Foundation.
18 * OpenOffice.org is distributed in the hope that it will be useful,
19 * but WITHOUT ANY WARRANTY; without even the implied warranty of
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 * GNU Lesser General Public License version 3 for more details
22 * (a copy is included in the LICENSE file that accompanied this code).
24 * You should have received a copy of the GNU Lesser General Public License
25 * version 3 along with OpenOffice.org. If not, see
26 * <http://www.openoffice.org/license.html>
27 * for a copy of the LGPLv3 License.
29 ************************************************************************/
32 #include <tools/solar.h>
33 #include <SwGetPoolIdFromName.hxx>
35 #ifndef INCLUDED_LIMITS_H
36 #include <limits.h> //fuer LONG_MAX
37 #define INCLUDED_LIMITS_H
43 #include <com/sun/star/uno/Reference.h>
45 #include <i18npool/lang.h>
46 // wenn das hier geaendert wird, dann auch im globals.hrc aendern!!!
47 //#define SW_FILEFORMAT_40 SOFFICE_FILEFORMAT_40
49 namespace com
{ namespace sun
{ namespace star
{
50 namespace linguistic2
{
51 class XDictionaryList
;
61 class TransliterationWrapper
;
72 class LocaleDataWrapper
;
73 class CollatorWrapper
;
76 #define INVALID_TWIPS LONG_MAX
77 #define TWIPS_MAX (LONG_MAX - 1)
79 #define MM50 283 // 1/2 cm in TWIPS
80 // --> OD 2004-06-18 #i19922# - constant for minimal page header/footer height of 1mm
81 const SwTwips cMinHdFtHeight
= 56;
83 #define MINFLY 23 //Minimalgroesse fuer FlyFrms
84 #define MINLAY 23 //Minimalgroesse anderer Frms
86 // Default-Spaltenabstand zweier Textspalten entspricht 0.3 cm
87 #define DEF_GUTTER_WIDTH (MM50 / 5 * 3)
89 //Minimale Distance (Abstand zum Text) fuer das BorderAttribut, damit
90 //die aligned'en Linien nicht geplaettet werden.
92 #define MIN_BORDER_DIST 28
94 /* minimaler Dokmentrand */
95 const SwTwips lMinBorder
= 1134;
97 //Die Wiesenbreite links neben und ueber dem Dokument.
98 //Die halbe Wiesenbreite ist der Abstand zwischen den Seiten.
99 #define DOCUMENTBORDER 568L
100 #define GAPBETWEENPAGES 284L
102 //initiale UndoActionCount
103 #define UNDO_ACTION_COUNT 20
106 SW_DLLPUBLIC
extern UniString aEmptyStr
; // ""
107 extern ByteString aEmptyByteStr
; // ""
108 SW_DLLPUBLIC
extern UniString aDotStr
; // '.'
110 //Zum Einfuegen von Beschriftungen (wie bzw. wo soll eingefuegt werden).
111 //Hier weil ein eigenes hxx nicht lohnt und es sonst nirgendwo so recht
115 LTYPE_TABLE
, //Beschriftung einer Tabelle
116 LTYPE_OBJECT
, //Beschriftung von Grafik oder OLE
117 LTYPE_FLY
, //Beschriftung eines (Text-)Rahmens
118 LTYPE_DRAW
//Beschriftung eines Zeichen-Objektes
122 const BYTE OLD_MAXLEVEL
= 5;
123 const BYTE MAXLEVEL
= 10; //Ehemals numrule.hxx
124 const BYTE NO_NUM
= 200; //Ehemals numrule.hxx
125 //const BYTE NO_NUMBERING = 201; //Ehemals numrule.hxx //#outline level,removed by zhaojianwei
126 //const BYTE NO_INIT = 202; //Ehemals numrule.hxx
128 // fuer Absaetze mit NO_NUM aber auf unterschiedlichen Leveln
129 // DAMIT entfaellt das NO_NUM !!!!
130 const BYTE NO_NUMLEVEL
= 0x20; // wird mit den Levels verodert
134 * Nette Funktionen als MACRO oder inline
137 /* ein KiloByte sind 1024 Byte */
140 #define SET_CURR_SHELL( shell ) CurrShell aCurr( shell )
142 // pPathFinder wird von der UI initialisiert. Die Klasse liefert alle
143 // benoetigten Pfade.
144 extern SwPathFinder
*pPathFinder
;
146 // Werte fuer die Einzuege an der Nummerierung und BulletListe
147 // (fuer die weiteren Ebenen sind die Werte mit den Ebenen+1 zu
148 // multiplizieren; Ebenen 0..4 !!!)
151 const USHORT lBullIndent
= 1440/4;
152 const short lBullFirstLineOffset
= -lBullIndent
;
153 const USHORT lNumIndent
= 1440/4;
154 const short lNumFirstLineOffset
= -lNumIndent
;
155 const short lOutlineMinTextDistance
= 216; // 0.15 inch = 0.38 cm
158 // Anzahl der SystemField-Types vom SwDoc
159 #define INIT_FLDTYPES 32
160 // Anzahl der vordefinierten Seq-Feldtypen. Es handelt sich dabei
161 // immer um die letzen Felder vor INIT_FLDTYPES
162 #define INIT_SEQ_FLDTYPES 4
164 //Die ehemaligen Rendevouz-Ids leben weiter:
165 //Es gibt Ids fuer die Anker (SwFmtAnchor) und ein paar weitere die nur fuer
166 //Schnittstellen Bedeutung haben (SwDoc).
169 FLY_AT_CNTNT
, //Absatzgebundener Rahmen
170 FLY_IN_CNTNT
, //Zeichengebundener Rahmen
171 FLY_PAGE
, //Seitengebundener Rahmen
172 FLY_AT_FLY
, //Rahmengebundener Rahmen ( LAYER_IMPL )
173 FLY_AUTO_CNTNT
, //Automatisch positionierter, absatzgebundener Rahmen
174 //Der Rest wird nur fuer SS benutzt.
182 RND_DRAW_OBJECT
// ein Draw-Object !! nur fuer die SwDoc-Schnittstelle!
186 extern ResMgr
* pSwResMgr
; // steht in swapp0.cxx
187 #define SW_RES(i) ResId(i,*pSwResMgr)
188 #define SW_RESSTR(i) UniString(ResId(i,*pSwResMgr))
190 ::com::sun::star::uno::Reference
<
191 ::com::sun::star::linguistic2::XSpellChecker1
> GetSpellChecker();
192 ::com::sun::star::uno::Reference
<
193 ::com::sun::star::linguistic2::XHyphenator
> GetHyphenator();
194 ::com::sun::star::uno::Reference
<
195 ::com::sun::star::linguistic2::XThesaurus
> GetThesaurus();
196 ::com::sun::star::uno::Reference
<
197 ::com::sun::star::beans::XPropertySet
> GetLinguPropertySet();
199 // reutns the twip size of this graphic
200 SW_DLLPUBLIC Size
GetGraphicSizeTwip( const Graphic
&, OutputDevice
* pOutDev
);
203 // Seperator fuer Sprunge im Dokument auf verschiedene Inhalttype
204 const sal_Unicode cMarkSeperator
= '|';
205 extern const sal_Char
* __FAR_DATA pMarkToTable
; // Strings stehen
206 extern const sal_Char
* __FAR_DATA pMarkToFrame
; // im Init.cxx
207 extern const sal_Char
* __FAR_DATA pMarkToRegion
;
208 SW_DLLPUBLIC
extern const sal_Char
* __FAR_DATA pMarkToOutline
;
209 extern const sal_Char
* __FAR_DATA pMarkToText
;
210 extern const sal_Char
* __FAR_DATA pMarkToGraphic
;
211 extern const sal_Char
* __FAR_DATA pMarkToOLE
;
213 #ifndef DB_DELIM // Ist in OFA definiert!!!
214 #define DB_DELIM ((sal_Unicode)0xff) // Datenbank <-> Tabellen-Trenner
218 typedef USHORT SetAttrMode
;
220 namespace nsSetAttrMode
222 const SetAttrMode SETATTR_DEFAULT
= 0x0000; // default
223 const SetAttrMode SETATTR_DONTEXPAND
= 0x0001; // TextAttribute nicht weiter expand.
224 const SetAttrMode SETATTR_DONTREPLACE
= 0x0002; // kein anderes TextAttrib verdraengen
226 const SetAttrMode SETATTR_NOTXTATRCHR
= 0x0004; // bei Attr ohne Ende kein 0xFF einfuegen
227 const SetAttrMode SETATTR_NOHINTADJUST
= 0x0008; // keine Zusammenfassung von Bereichen.
228 const SetAttrMode SETATTR_NOFORMATATTR
= 0x0010; // nicht zum FormatAttribut umwandeln
229 const SetAttrMode SETATTR_DONTCHGNUMRULE
= 0x0020; // nicht die NumRule veraendern
230 const SetAttrMode SETATTR_APICALL
= 0x0040; // called from API (all UI related
231 // functionality will be disabled)
234 //Umrechnung Twip<-> 1/100 mm fuer UNO
236 #define TWIP_TO_MM100(TWIP) ((TWIP) >= 0 ? (((TWIP)*127L+36L)/72L) : (((TWIP)*127L-36L)/72L))
237 #define MM100_TO_TWIP(MM100) ((MM100) >= 0 ? (((MM100)*72L+63L)/127L) : (((MM100)*72L-63L)/127L))
238 #define TWIP_TO_MM100_UNSIGNED(TWIP) ((((TWIP)*127L+36L)/72L))
239 #define MM100_TO_TWIP_UNSIGNED(MM100) ((((MM100)*72L+63L)/127L))
241 #define SW_ISPRINTABLE( c ) ( c >= ' ' && 127 != c )
243 #ifndef SW_CONSTASCII_DECL
244 #define SW_CONSTASCII_DECL( n, s ) n[sizeof(s)]
246 #ifndef SW_CONSTASCII_DEF
247 #define SW_CONSTASCII_DEF( n, s ) n[sizeof(s)] = s
251 #define CHAR_HARDBLANK ((sal_Unicode)0x00A0)
252 #define CHAR_HARDHYPHEN ((sal_Unicode)0x2011)
253 #define CHAR_SOFTHYPHEN ((sal_Unicode)0x00AD)
254 #define CHAR_RLM ((sal_Unicode)0x200F)
255 #define CHAR_LRM ((sal_Unicode)0x200E)
256 #define CHAR_ZWSP ((sal_Unicode)0x200B)
257 #define CHAR_ZWNBSP ((sal_Unicode)0x2060)
260 // returns the APP - CharClass instance - used for all ToUpper/ToLower/...
261 SW_DLLPUBLIC CharClass
& GetAppCharClass();
262 SW_DLLPUBLIC LocaleDataWrapper
& GetAppLocaleData();
263 SW_DLLPUBLIC LanguageType
GetAppLanguage();
267 // I18N doesn't get this right, can't specify more than one to ignore
268 #define SW_COLLATOR_IGNORES ( \
269 ::com::sun::star::i18n::CollatorOptions::CollatorOptions_IGNORE_CASE | \
270 ::com::sun::star::i18n::CollatorOptions::CollatorOptions_IGNORE_KANA | \
271 ::com::sun::star::i18n::CollatorOptions::CollatorOptions_IGNORE_WIDTH )
273 #define SW_COLLATOR_IGNORES ( \
274 ::com::sun::star::i18n::CollatorOptions::CollatorOptions_IGNORE_CASE )
277 SW_DLLPUBLIC CollatorWrapper
& GetAppCollator();
278 SW_DLLPUBLIC CollatorWrapper
& GetAppCaseCollator();
280 SW_DLLPUBLIC
const ::utl::TransliterationWrapper
& GetAppCmpStrIgnore();
282 // --> OD 2004-06-30 #i28701# - moved from <frame.hxx>
283 //fuer Prepare() zur Benachrichtigung des Inhaltes durch das Layout auf
284 //dem kurzen Dienstweg.
285 //Der Inhalt sorgt dafuer, dass beim naechsten Aufruf von ::Format() das
286 //minimal notwendige berechnet wird.
290 PREP_CLEAR
= PREP_BEGIN
,//Komplett neuformatieren.
291 PREP_WIDOWS_ORPHANS
, //Nur Witwen- und Waisen-Regelung pruefen und ggf.
293 PREP_FIXSIZE_CHG
, //Die FixSize hat sich veraendert.
294 PREP_FOLLOW_FOLLOWS
, //Follow ist jetzt moeglicherweise direkter
296 PREP_ADJUST_FRM
, //Groesse per Grow/Shrink Ausrichten ohne zu
298 PREP_FLY_CHGD
, //Ein FlyFrm hat sich (Groesse) veraendert.
299 PREP_FLY_ATTR_CHG
, //Ein FlyFrm hat seine Attribute veraendert
301 PREP_FLY_ARRIVE
, //Ein FlyFrm ueberlappt den Bereich jetzt neu.
302 PREP_FLY_LEAVE
, //Ein FlyFrm hat den Bereich verlassen.
303 PREP_FTN
, //Fussnoten-Invalidierung
304 PREP_POS_CHGD
, //Position des Frm hat sich verandert
305 //(Zum Fly-Umbruch pruefen). Im void* des Prepare()
306 //wird ein BOOL& uebergeben, dieser zeigt mit TRUE,
307 //dass ein Format ausgefuehrt wurde.
308 PREP_UL_SPACE
, //UL-Space hat sich veraendert, TxtFrms muessen
309 //den Zeilenabstand neu kalkulieren.
310 PREP_MUST_FIT
, //Frm passen machen (aufspalten) auch wenn die
311 //Attribute es nicht erlauben (z.B. zusammenhalten).
312 PREP_WIDOWS
, // Ein Follow stellt fest, dass in ihm die Orphans-
313 // regel zuschlaegt und verschickt an seinen
314 // Vorgaenger (Master/Follow) ein PREP_WIDOWS
315 PREP_QUOVADIS
, // Wenn eine Fussnote _zwischen_ zwei Absaetzen
316 // aufgespalten werden muss, dann muss der
317 // letzte auf der Seite noch ein QUOVADIS bekommen
318 // damit er den Text hineinformatiert.
319 PREP_BOSS_CHGD
, // Wenn ein Frm die Spalte/Seite wechselt, wird dieses
320 // Zusatzprepare zum POS_CHGD im MoveFwd/Bwd
321 // verschickt (Ftn-Nummern joinen etc.)
322 // Die Richtung wird ueber pVoid mitgeteilt:
323 // MoveFwd: pVoid == 0
324 // MoveBwd: pVoid == pOldPage
325 PREP_SWAP
, //Grafiken Swappen, fuer Grafiken im sichtbaren
327 PREP_REGISTER
, //Registerhaltige Frames invalidieren
328 PREP_FTN_GONE
, //Ein Follow verliert eine Fussnote, ggf. kann seine erste
330 PREP_MOVEFTN
, //eine Fussnote wechselt die Seite, der Inhalt bekommt
331 //zunaechst eine Hoehe von Null, damit nicht zuviel
332 //Unruhe entsteht. Beim Formatieren prueft er, ob er
333 //ueberhaupt passt und wechselt ggf. unbemerkt wieder
335 PREP_ERGOSUM
, //wg. Bewegung in FtnFrms QuoVadis/ErgoSum pruefen