1 /************************************************************************* 2 * 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * Copyright 2000, 2010 Oracle and/or its affiliates. 6 * 7 * OpenOffice.org - a multi-platform office productivity suite 8 * 9 * This file is part of OpenOffice.org. 10 * 11 * OpenOffice.org is free software: you can redistribute it and/or modify 12 * it under the terms of the GNU Lesser General Public License version 3 13 * only, as published by the Free Software Foundation. 14 * 15 * OpenOffice.org is distributed in the hope that it will be useful, 16 * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 * GNU Lesser General Public License version 3 for more details 19 * (a copy is included in the LICENSE file that accompanied this code). 20 * 21 * You should have received a copy of the GNU Lesser General Public License 22 * version 3 along with OpenOffice.org. If not, see 23 * <http://www.openoffice.org/license.html> 24 * for a copy of the LGPLv3 License. 25 * 26 ************************************************************************/ 27 #ifndef _SWTYPES_HXX 28 #define _SWTYPES_HXX 29 #include <tools/solar.h> 30 #include <SwGetPoolIdFromName.hxx> 31 32 #ifndef INCLUDED_LIMITS_H 33 #include <limits.h> //fuer LONG_MAX 34 #define INCLUDED_LIMITS_H 35 #endif 36 37 #ifdef PM20 38 #include <stdlib.h> 39 #endif 40 #include <com/sun/star/uno/Reference.h> 41 #include "swdllapi.h" 42 #include <i18npool/lang.h> 43 // wenn das hier geaendert wird, dann auch im globals.hrc aendern!!! 44 //#define SW_FILEFORMAT_40 SOFFICE_FILEFORMAT_40 45 46 namespace com { namespace sun { namespace star { 47 namespace linguistic2{ 48 class XDictionaryList; 49 class XSpellChecker1; 50 class XHyphenator; 51 class XThesaurus; 52 } 53 namespace beans{ 54 class XPropertySet; 55 } 56 }}} 57 namespace utl{ 58 class TransliterationWrapper; 59 } 60 61 class Size; 62 class ResMgr; 63 class UniString; 64 class ByteString; 65 class SwPathFinder; 66 class Graphic; 67 class OutputDevice; 68 class CharClass; 69 class LocaleDataWrapper; 70 class CollatorWrapper; 71 72 typedef long SwTwips; 73 #define INVALID_TWIPS LONG_MAX 74 #define TWIPS_MAX (LONG_MAX - 1) 75 76 #define MM50 283 // 1/2 cm in TWIPS 77 // --> OD 2004-06-18 #i19922# - constant for minimal page header/footer height of 1mm 78 const SwTwips cMinHdFtHeight = 56; 79 80 #define MINFLY 23 //Minimalgroesse fuer FlyFrms 81 #define MINLAY 23 //Minimalgroesse anderer Frms 82 83 // Default-Spaltenabstand zweier Textspalten entspricht 0.3 cm 84 #define DEF_GUTTER_WIDTH (MM50 / 5 * 3) 85 86 //Minimale Distance (Abstand zum Text) fuer das BorderAttribut, damit 87 //die aligned'en Linien nicht geplaettet werden. 88 //28 Twips == 0,4mm 89 #define MIN_BORDER_DIST 28 90 91 /* minimaler Dokmentrand */ 92 const SwTwips lMinBorder = 1134; 93 94 //Die Wiesenbreite links neben und ueber dem Dokument. 95 //Die halbe Wiesenbreite ist der Abstand zwischen den Seiten. 96 #define DOCUMENTBORDER 568L 97 #define GAPBETWEENPAGES 284L 98 99 //initiale UndoActionCount 100 #define UNDO_ACTION_COUNT 20 101 102 // Konstante Strings 103 SW_DLLPUBLIC extern UniString aEmptyStr; // "" 104 extern ByteString aEmptyByteStr; // "" 105 SW_DLLPUBLIC extern UniString aDotStr; // '.' 106 107 //Zum Einfuegen von Beschriftungen (wie bzw. wo soll eingefuegt werden). 108 //Hier weil ein eigenes hxx nicht lohnt und es sonst nirgendwo so recht 109 //hinpasst. 110 enum SwLabelType 111 { 112 LTYPE_TABLE, //Beschriftung einer Tabelle 113 LTYPE_OBJECT, //Beschriftung von Grafik oder OLE 114 LTYPE_FLY, //Beschriftung eines (Text-)Rahmens 115 LTYPE_DRAW //Beschriftung eines Zeichen-Objektes 116 }; 117 118 119 const sal_uInt8 OLD_MAXLEVEL = 5; 120 const sal_uInt8 MAXLEVEL = 10; //Ehemals numrule.hxx 121 const sal_uInt8 NO_NUM = 200; //Ehemals numrule.hxx 122 //const sal_uInt8 NO_NUMBERING = 201; //Ehemals numrule.hxx //#outline level,removed by zhaojianwei 123 //const sal_uInt8 NO_INIT = 202; //Ehemals numrule.hxx 124 125 // fuer Absaetze mit NO_NUM aber auf unterschiedlichen Leveln 126 // DAMIT entfaellt das NO_NUM !!!! 127 const sal_uInt8 NO_NUMLEVEL = 0x20; // wird mit den Levels verodert 128 129 130 /* 131 * Nette Funktionen als MACRO oder inline 132 */ 133 134 /* ein KiloByte sind 1024 Byte */ 135 #define KB 1024 136 137 #define SET_CURR_SHELL( shell ) CurrShell aCurr( shell ) 138 139 // pPathFinder wird von der UI initialisiert. Die Klasse liefert alle 140 // benoetigten Pfade. 141 extern SwPathFinder *pPathFinder; 142 143 // Werte fuer die Einzuege an der Nummerierung und BulletListe 144 // (fuer die weiteren Ebenen sind die Werte mit den Ebenen+1 zu 145 // multiplizieren; Ebenen 0..4 !!!) 146 147 // -> #i30312# 148 const sal_uInt16 lBullIndent = 1440/4; 149 const short lBullFirstLineOffset = -lBullIndent; 150 const sal_uInt16 lNumIndent = 1440/4; 151 const short lNumFirstLineOffset = -lNumIndent; 152 const short lOutlineMinTextDistance = 216; // 0.15 inch = 0.38 cm 153 // <- #i30312# 154 155 // Anzahl der SystemField-Types vom SwDoc 156 #define INIT_FLDTYPES 32 157 // Anzahl der vordefinierten Seq-Feldtypen. Es handelt sich dabei 158 // immer um die letzen Felder vor INIT_FLDTYPES 159 #define INIT_SEQ_FLDTYPES 4 160 161 //Die ehemaligen Rendevouz-Ids leben weiter: 162 //Es gibt Ids fuer die Anker (SwFmtAnchor) und ein paar weitere die nur fuer 163 //Schnittstellen Bedeutung haben (SwDoc). 164 enum RndStdIds 165 { 166 FLY_AT_PARA, // anchored at paragraph 167 FLY_AS_CHAR, // anchored as character 168 FLY_AT_PAGE, // anchored at page 169 FLY_AT_FLY, // anchored at frame 170 FLY_AT_CHAR, // anchored at character 171 //Der Rest wird nur fuer SS benutzt. 172 RND_STD_HEADER, 173 RND_STD_FOOTER, 174 RND_STD_HEADERL, 175 RND_STD_HEADERR, 176 RND_STD_FOOTERL, 177 RND_STD_FOOTERR, 178 179 RND_DRAW_OBJECT // ein Draw-Object !! nur fuer die SwDoc-Schnittstelle! 180 }; 181 182 183 extern ResMgr* pSwResMgr; // steht in swapp0.cxx 184 #define SW_RES(i) ResId(i,*pSwResMgr) 185 #define SW_RESSTR(i) UniString(ResId(i,*pSwResMgr)) 186 187 ::com::sun::star::uno::Reference< 188 ::com::sun::star::linguistic2::XSpellChecker1 > GetSpellChecker(); 189 ::com::sun::star::uno::Reference< 190 ::com::sun::star::linguistic2::XHyphenator > GetHyphenator(); 191 ::com::sun::star::uno::Reference< 192 ::com::sun::star::linguistic2::XThesaurus > GetThesaurus(); 193 ::com::sun::star::uno::Reference< 194 ::com::sun::star::beans::XPropertySet > GetLinguPropertySet(); 195 196 // reutns the twip size of this graphic 197 SW_DLLPUBLIC Size GetGraphicSizeTwip( const Graphic&, OutputDevice* pOutDev ); 198 199 200 // Seperator fuer Sprunge im Dokument auf verschiedene Inhalttype 201 const sal_Unicode cMarkSeperator = '|'; 202 extern const sal_Char* __FAR_DATA pMarkToTable; // Strings stehen 203 extern const sal_Char* __FAR_DATA pMarkToFrame; // im Init.cxx 204 extern const sal_Char* __FAR_DATA pMarkToRegion; 205 SW_DLLPUBLIC extern const sal_Char* __FAR_DATA pMarkToOutline; 206 extern const sal_Char* __FAR_DATA pMarkToText; 207 extern const sal_Char* __FAR_DATA pMarkToGraphic; 208 extern const sal_Char* __FAR_DATA pMarkToOLE; 209 210 #ifndef DB_DELIM // Ist in OFA definiert!!! 211 #define DB_DELIM ((sal_Unicode)0xff) // Datenbank <-> Tabellen-Trenner 212 #endif 213 214 215 typedef sal_uInt16 SetAttrMode; 216 217 namespace nsSetAttrMode 218 { 219 const SetAttrMode SETATTR_DEFAULT = 0x0000; // default 220 const SetAttrMode SETATTR_DONTEXPAND = 0x0001; // TextAttribute nicht weiter expand. 221 const SetAttrMode SETATTR_DONTREPLACE = 0x0002; // kein anderes TextAttrib verdraengen 222 223 const SetAttrMode SETATTR_NOTXTATRCHR = 0x0004; // bei Attr ohne Ende kein 0xFF einfuegen 224 const SetAttrMode SETATTR_NOHINTADJUST = 0x0008; // keine Zusammenfassung von Bereichen. 225 const SetAttrMode SETATTR_NOFORMATATTR = 0x0010; // nicht zum FormatAttribut umwandeln 226 const SetAttrMode SETATTR_DONTCHGNUMRULE = 0x0020; // nicht die NumRule veraendern 227 const SetAttrMode SETATTR_APICALL = 0x0040; // called from API (all UI related 228 // functionality will be disabled) 229 /// force hint expand (only matters for hints with CH_TXTATR) 230 const SetAttrMode SETATTR_FORCEHINTEXPAND= 0x0080; 231 /// the inserted item is a copy -- intended for use in ndtxt.cxx 232 const SetAttrMode SETATTR_IS_COPY = 0x0100; 233 } 234 235 //Umrechnung Twip<-> 1/100 mm fuer UNO 236 237 #define TWIP_TO_MM100(TWIP) ((TWIP) >= 0 ? (((TWIP)*127L+36L)/72L) : (((TWIP)*127L-36L)/72L)) 238 #define MM100_TO_TWIP(MM100) ((MM100) >= 0 ? (((MM100)*72L+63L)/127L) : (((MM100)*72L-63L)/127L)) 239 #define TWIP_TO_MM100_UNSIGNED(TWIP) ((((TWIP)*127L+36L)/72L)) 240 #define MM100_TO_TWIP_UNSIGNED(MM100) ((((MM100)*72L+63L)/127L)) 241 242 #define SW_ISPRINTABLE( c ) ( c >= ' ' && 127 != c ) 243 244 #ifndef SW_CONSTASCII_DECL 245 #define SW_CONSTASCII_DECL( n, s ) n[sizeof(s)] 246 #endif 247 #ifndef SW_CONSTASCII_DEF 248 #define SW_CONSTASCII_DEF( n, s ) n[sizeof(s)] = s 249 #endif 250 251 252 #define CHAR_HARDBLANK ((sal_Unicode)0x00A0) 253 #define CHAR_HARDHYPHEN ((sal_Unicode)0x2011) 254 #define CHAR_SOFTHYPHEN ((sal_Unicode)0x00AD) 255 #define CHAR_RLM ((sal_Unicode)0x200F) 256 #define CHAR_LRM ((sal_Unicode)0x200E) 257 #define CHAR_ZWSP ((sal_Unicode)0x200B) 258 #define CHAR_ZWNBSP ((sal_Unicode)0x2060) 259 260 261 // returns the APP - CharClass instance - used for all ToUpper/ToLower/... 262 SW_DLLPUBLIC CharClass& GetAppCharClass(); 263 SW_DLLPUBLIC LanguageType GetAppLanguage(); 264 265 266 #if 0 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 ) 272 #else 273 #define SW_COLLATOR_IGNORES ( \ 274 ::com::sun::star::i18n::CollatorOptions::CollatorOptions_IGNORE_CASE ) 275 #endif 276 277 SW_DLLPUBLIC CollatorWrapper& GetAppCollator(); 278 SW_DLLPUBLIC CollatorWrapper& GetAppCaseCollator(); 279 280 SW_DLLPUBLIC const ::utl::TransliterationWrapper& GetAppCmpStrIgnore(); 281 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. 287 enum PrepareHint 288 { 289 PREP_BEGIN, //BEGIN 290 PREP_CLEAR = PREP_BEGIN,//Komplett neuformatieren. 291 PREP_WIDOWS_ORPHANS, //Nur Witwen- und Waisen-Regelung pruefen und ggf. 292 //Aufspalten. 293 PREP_FIXSIZE_CHG, //Die FixSize hat sich veraendert. 294 PREP_FOLLOW_FOLLOWS, //Follow ist jetzt moeglicherweise direkter 295 //Nachbar. 296 PREP_ADJUST_FRM, //Groesse per Grow/Shrink Ausrichten ohne zu 297 //Formatieren. 298 PREP_FLY_CHGD, //Ein FlyFrm hat sich (Groesse) veraendert. 299 PREP_FLY_ATTR_CHG, //Ein FlyFrm hat seine Attribute veraendert 300 //(z.B. Umlauf) 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 sal_Bool& uebergeben, dieser zeigt mit sal_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 326 //Bereich. 327 PREP_REGISTER, //Registerhaltige Frames invalidieren 328 PREP_FTN_GONE, //Ein Follow verliert eine Fussnote, ggf. kann seine erste 329 //Zeile hochrutschen 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 334 //die Seite. 335 PREP_ERGOSUM, //wg. Bewegung in FtnFrms QuoVadis/ErgoSum pruefen 336 PREP_END //END 337 }; 338 // <-- 339 340 #endif 341