1 /************************************************************** 2 * 3 * Licensed to the Apache Software Foundation (ASF) under one 4 * or more contributor license agreements. See the NOTICE file 5 * distributed with this work for additional information 6 * regarding copyright ownership. The ASF licenses this file 7 * to you under the Apache License, Version 2.0 (the 8 * "License"); you may not use this file except in compliance 9 * with the License. You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, 14 * software distributed under the License is distributed on an 15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 * KIND, either express or implied. See the License for the 17 * specific language governing permissions and limitations 18 * under the License. 19 * 20 *************************************************************/ 21 22 23 #ifndef _HINTS_HXX 24 #define _HINTS_HXX 25 26 #ifndef _TABLE_HXX //autogen 27 #include <tools/table.hxx> 28 #endif 29 #include <swatrset.hxx> 30 31 class SwFmt; 32 class OutputDevice; 33 class SwTable; 34 class SwNode; 35 class SwNodes; 36 class SwCntntNode; 37 class SwPageFrm; 38 class SwFrm; 39 class SwTxtNode; 40 class SwHistory; 41 42 // Basis-Klasse fuer alle Message-Hints: 43 // "Overhead" vom SfxPoolItem wird hier behandelt 44 class SwMsgPoolItem : public SfxPoolItem 45 { 46 public: 47 SwMsgPoolItem( sal_uInt16 nWhich ); 48 49 // "Overhead" vom SfxPoolItem 50 virtual int operator==( const SfxPoolItem& ) const; 51 virtual SfxPoolItem* Clone( SfxItemPool* pPool = 0 ) const; 52 }; 53 54 55 // --------------------------------------- 56 // SwPtrMsgPoolItem (altes SwObjectDying!) 57 // --------------------------------------- 58 59 class SwPtrMsgPoolItem : public SwMsgPoolItem 60 { 61 public: 62 void * pObject; 63 64 SwPtrMsgPoolItem( sal_uInt16 nId, void * pObj ) 65 : SwMsgPoolItem( nId ), pObject( pObj ) 66 {} 67 }; 68 69 70 71 /* 72 * SwFmtChg wird verschickt, wenn ein Format gegen ein anderes 73 * Format ausgewechselt worden ist. Es werden immer 2. Hints verschickt, 74 * das alte und neue Format. 75 */ 76 class SwFmtChg: public SwMsgPoolItem 77 { 78 public: 79 SwFmt *pChangedFmt; 80 SwFmtChg( SwFmt *pFmt ); 81 }; 82 83 84 class SwInsTxt: public SwMsgPoolItem 85 { 86 public: 87 xub_StrLen nPos; 88 xub_StrLen nLen; 89 90 SwInsTxt( xub_StrLen nP, xub_StrLen nL ); 91 }; 92 93 class SwDelChr: public SwMsgPoolItem 94 { 95 public: 96 xub_StrLen nPos; 97 98 SwDelChr( xub_StrLen nP ); 99 }; 100 101 class SwDelTxt: public SwMsgPoolItem 102 { 103 public: 104 xub_StrLen nStart; 105 xub_StrLen nLen; 106 107 SwDelTxt( xub_StrLen nS, xub_StrLen nL ); 108 }; 109 110 class SwUpdateAttr: public SwMsgPoolItem 111 { 112 public: 113 xub_StrLen nStart; 114 xub_StrLen nEnd; 115 sal_uInt16 nWhichAttr; 116 SwUpdateAttr( xub_StrLen nS, xub_StrLen nE, sal_uInt16 nW ); 117 }; 118 119 120 // SwRefMarkFldUpdate wird verschickt, wenn sich die ReferenzMarkierungen 121 // Updaten sollen. Um Seiten-/KapitelNummer feststellen zu koennen, muss 122 // der akt. Frame befragt werden. Dafuer wird das akt. OutputDevice benoetigt. 123 class SwRefMarkFldUpdate : public SwMsgPoolItem 124 { 125 public: 126 const OutputDevice* pOut; // Pointer auf das aktuelle Output-Device 127 SwRefMarkFldUpdate( const OutputDevice* ); 128 }; 129 130 // SwDocPosUpdate wird verschickt, um zu signalisieren, dass nur die 131 // Frames ab oder bis zu einer bestimmten dokument-globalen Position 132 // geupdated werden brauchen. Zur Zeit wird dies nur beim Updaten 133 // von Seitennummernfeldern benoetigt. 134 135 class SwDocPosUpdate : public SwMsgPoolItem 136 { 137 public: 138 const long nDocPos; 139 SwDocPosUpdate( const long nDocPos ); 140 }; 141 142 // SwTableFmlUpdate wird verschickt, wenn sich die Tabelle neu berechnen soll 143 // JP 16.02.99: oder wenn die Tabelle selbst gemergt oder gesplittet wird 144 enum TableFmlUpdtFlags { TBL_CALC = 0, 145 TBL_BOXNAME, 146 TBL_BOXPTR, 147 TBL_RELBOXNAME, 148 TBL_MERGETBL, 149 TBL_SPLITTBL 150 }; 151 class SwTableFmlUpdate : public SwMsgPoolItem 152 { 153 public: 154 const SwTable* pTbl; // Pointer auf die zu aktuelle Tabelle 155 union { 156 const SwTable* pDelTbl; // Merge: Ptr auf die zu loeschende Tabelle 157 const String* pNewTblNm; // Split: der Name der neuen Tabelle 158 } DATA; 159 SwHistory* pHistory; 160 sal_uInt16 nSplitLine; // Split: ab dieser BaseLine wird gespl. 161 TableFmlUpdtFlags eFlags; 162 sal_Bool bModified : 1; 163 sal_Bool bBehindSplitLine : 1; 164 165 SwTableFmlUpdate( const SwTable* ); 166 }; 167 168 169 class SwAutoFmtGetDocNode: public SwMsgPoolItem 170 { 171 public: 172 const SwCntntNode* pCntntNode; 173 const SwNodes* pNodes; 174 175 SwAutoFmtGetDocNode( const SwNodes* pNds ); 176 }; 177 178 /* 179 * SwAttrSetChg wird verschicht, wenn sich in dem SwAttrSet rTheChgdSet 180 * etwas veraendert hat. Es werden immer 2. Hints 181 * verschickt, die alten und neuen Items in dem rTheChgdSet. 182 */ 183 class SwAttrSetChg: public SwMsgPoolItem 184 { 185 sal_Bool bDelSet; 186 SwAttrSet* pChgSet; // was sich veraendert hat 187 const SwAttrSet* pTheChgdSet; // wird nur zum Vergleichen gebraucht !! 188 public: 189 SwAttrSetChg( const SwAttrSet& rTheSet, SwAttrSet& rSet ); 190 SwAttrSetChg( const SwAttrSetChg& ); 191 ~SwAttrSetChg(); 192 193 // was sich veraendert hat 194 const SwAttrSet* GetChgSet() const { return pChgSet; } 195 SwAttrSet* GetChgSet() { return pChgSet; } 196 197 // wo es sich geaendert hat 198 const SwAttrSet* GetTheChgdSet() const { return pTheChgdSet; } 199 200 sal_uInt16 Count() const { return pChgSet->Count(); } 201 void ClearItem( sal_uInt16 nWhichL = 0 ) 202 #ifndef DBG_UTIL 203 { pChgSet->ClearItem( nWhichL ); } 204 #else 205 ; 206 #endif 207 }; 208 209 class SwCondCollCondChg: public SwMsgPoolItem 210 { 211 public: 212 SwFmt *pChangedFmt; 213 SwCondCollCondChg( SwFmt *pFmt ); 214 }; 215 216 class SwVirtPageNumInfo: public SwMsgPoolItem 217 { 218 const SwPageFrm *pPage; 219 const SwPageFrm *pOrigPage; 220 const SwFrm *pFrm; //An einem Absatz/Tabelle koennen mehrere 221 //Attribute sitzen. Der Frame muss dann 222 //muss dann letztlich bei bestimmen 223 //welches Attribut gilt und um welche physikalische 224 //Seite es sich handelt. 225 public: 226 SwVirtPageNumInfo( const SwPageFrm *pPg ); 227 228 const SwPageFrm *GetPage() { return pPage; } 229 const SwPageFrm *GetOrigPage() { return pOrigPage;} 230 const SwFrm *GetFrm() { return pFrm; } 231 void SetInfo( const SwPageFrm *pPg, 232 const SwFrm *pF ) { pFrm = pF, pPage = pPg; } 233 }; 234 235 236 // --> OD 2008-02-19 #refactorlists# 237 //DECLARE_TABLE( SwTxtNodeTable, SwTxtNode* ) 238 239 //class SwNumRuleInfo : public SwMsgPoolItem 240 //{ 241 // SwTxtNodeTable aList; 242 // const String& rName; 243 //public: 244 // SwNumRuleInfo( const String& rRuleName ); 245 246 // const String& GetName() const { return rName; } 247 // void AddNode( SwTxtNode& rNd ); 248 249 // // erzeuge die Liste aller Nodes der NumRule in dem angegebenem Doc 250 // // Der Code steht im docnum.cxx 251 // // #111955# 252 // void MakeList( SwDoc& rDoc, sal_Bool bOutline = sal_False ); 253 254 // const SwTxtNodeTable& GetTxtNodeList() const { return aList; } 255 //}; 256 // <-- 257 258 class SwFindNearestNode : public SwMsgPoolItem 259 { 260 const SwNode *pNd, *pFnd; 261 public: 262 SwFindNearestNode( const SwNode& rNd ); 263 void CheckNode( const SwNode& rNd ); 264 265 const SwNode* GetFoundNode() const { return pFnd; } 266 }; 267 268 class SwStringMsgPoolItem : public SwMsgPoolItem 269 { 270 String sStr; 271 public: 272 273 const String& GetString() const { return sStr; } 274 275 SwStringMsgPoolItem( sal_uInt16 nId, const String& rStr ) 276 : SwMsgPoolItem( nId ), sStr( rStr ) 277 {} 278 }; 279 280 #endif 281