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 24 // MARKER(update_precomp.py): autogen include statement, do not remove 25 #include "precompiled_sw.hxx" 26 #include <hints.hxx> 27 28 #ifndef _COM_SUN_STAR_I18N_SCRIPTTYPE_HDL_ 29 #include <com/sun/star/i18n/ScriptType.hdl> 30 #endif 31 #include <editeng/scripttypeitem.hxx> 32 #include <hintids.hxx> 33 #include <swtypes.hxx> 34 #include <ndtxt.hxx> 35 #include <errhdl.hxx> 36 37 SwFmtChg::SwFmtChg( SwFmt *pFmt ) 38 : SwMsgPoolItem( RES_FMT_CHG ), 39 pChangedFmt( pFmt ) 40 {} 41 42 43 44 SwInsTxt::SwInsTxt( xub_StrLen nP, xub_StrLen nL ) 45 : SwMsgPoolItem( RES_INS_TXT ), 46 nPos( nP ), 47 nLen( nL ) 48 {} 49 50 51 52 SwDelChr::SwDelChr( xub_StrLen nP ) 53 : SwMsgPoolItem( RES_DEL_CHR ), 54 nPos( nP ) 55 {} 56 57 58 59 SwDelTxt::SwDelTxt( xub_StrLen nS, xub_StrLen nL ) 60 : SwMsgPoolItem( RES_DEL_TXT ), 61 nStart( nS ), 62 nLen( nL ) 63 {} 64 65 66 67 SwUpdateAttr::SwUpdateAttr( xub_StrLen nS, xub_StrLen nE, sal_uInt16 nW ) 68 : SwMsgPoolItem( RES_UPDATE_ATTR ), 69 nStart( nS ), 70 nEnd( nE ), 71 nWhichAttr( nW ) 72 {} 73 74 75 // SwRefMarkFldUpdate wird verschickt, wenn sich die ReferenzMarkierungen 76 // Updaten sollen. Um Seiten-/KapitelNummer feststellen zu koennen, muss 77 // der akt. Frame befragt werden. Dafuer wird das akt. OutputDevice benoetigt. 78 79 80 SwRefMarkFldUpdate::SwRefMarkFldUpdate( const OutputDevice* pOutput ) 81 : SwMsgPoolItem( RES_REFMARKFLD_UPDATE ), 82 pOut( pOutput ) 83 { 84 ASSERT( pOut, "es muss ein OutputDevice-Pointer gesetzt werden!" ); 85 } 86 87 88 SwDocPosUpdate::SwDocPosUpdate( const SwTwips nDcPos ) 89 : SwMsgPoolItem( RES_DOCPOS_UPDATE ), 90 nDocPos(nDcPos) 91 {} 92 93 94 95 // SwTableFmlUpdate wird verschickt, wenn sich die Tabelle neu berechnen soll 96 SwTableFmlUpdate::SwTableFmlUpdate( const SwTable* pNewTbl ) 97 : SwMsgPoolItem( RES_TABLEFML_UPDATE ), 98 pTbl( pNewTbl ), pHistory( 0 ), nSplitLine( USHRT_MAX ), 99 eFlags( TBL_CALC ) 100 { 101 DATA.pDelTbl = 0; 102 bModified = bBehindSplitLine = sal_False; 103 ASSERT( pTbl, "es muss ein Table-Pointer gesetzt werden!" ); 104 } 105 106 107 SwAutoFmtGetDocNode::SwAutoFmtGetDocNode( const SwNodes* pNds ) 108 : SwMsgPoolItem( RES_AUTOFMT_DOCNODE ), 109 pCntntNode( 0 ), pNodes( pNds ) 110 {} 111 112 113 SwAttrSetChg::SwAttrSetChg( const SwAttrSet& rTheSet, SwAttrSet& rSet ) 114 : SwMsgPoolItem( RES_ATTRSET_CHG ), 115 bDelSet( sal_False ), 116 pChgSet( &rSet ), 117 pTheChgdSet( &rTheSet ) 118 {} 119 120 121 SwAttrSetChg::SwAttrSetChg( const SwAttrSetChg& rChgSet ) 122 : SwMsgPoolItem( RES_ATTRSET_CHG ), 123 bDelSet( sal_True ), 124 pTheChgdSet( rChgSet.pTheChgdSet ) 125 { 126 pChgSet = new SwAttrSet( *rChgSet.pChgSet ); 127 } 128 129 130 SwAttrSetChg::~SwAttrSetChg() 131 { 132 if( bDelSet ) 133 delete pChgSet; 134 } 135 136 137 #ifdef DBG_UTIL 138 139 void SwAttrSetChg::ClearItem( sal_uInt16 nWhch ) 140 { 141 ASSERT( bDelSet, "der Set darf nicht veraendert werden!" ); 142 pChgSet->ClearItem( nWhch ); 143 } 144 145 #endif 146 147 148 SwMsgPoolItem::SwMsgPoolItem( sal_uInt16 nWhch ) 149 : SfxPoolItem( nWhch ) 150 {} 151 152 153 // "Overhead" vom SfxPoolItem 154 int SwMsgPoolItem::operator==( const SfxPoolItem& ) const 155 { 156 ASSERT( sal_False, "SwMsgPoolItem kennt kein ==" ); 157 return 0; 158 } 159 160 161 SfxPoolItem* SwMsgPoolItem::Clone( SfxItemPool* ) const 162 { 163 ASSERT( sal_False, "SwMsgPoolItem kennt kein Clone" ); 164 return 0; 165 } 166 167 /****************************************************************************** 168 * hole aus der Default-Attribut Tabelle ueber den Which-Wert 169 * das entsprechende default Attribut. 170 * Ist keines vorhanden, returnt ein 0-Pointer !!! 171 * Used to be inlined (hintids.hxx) in PRODUCT. 172 ******************************************************************************/ 173 #ifndef DBG_UTIL 174 const SfxPoolItem* GetDfltAttr( sal_uInt16 nWhich ) 175 { 176 return aAttrTab[ nWhich - POOLATTR_BEGIN ]; 177 } 178 #else 179 const SfxPoolItem* GetDfltAttr( sal_uInt16 nWhich ) 180 { 181 ASSERT_ID( nWhich < POOLATTR_END && nWhich >= POOLATTR_BEGIN, 182 ERR_OUTOFSCOPE ); 183 184 SfxPoolItem *pHt = aAttrTab[ nWhich - POOLATTR_BEGIN ]; 185 ASSERT( pHt, "GetDfltFmtAttr(): Dflt == 0" ); 186 return pHt; 187 } 188 #endif 189 190 191 192 SwCondCollCondChg::SwCondCollCondChg( SwFmt *pFmt ) 193 : SwMsgPoolItem( RES_CONDCOLL_CONDCHG ), pChangedFmt( pFmt ) 194 { 195 } 196 197 198 SwVirtPageNumInfo::SwVirtPageNumInfo( const SwPageFrm *pPg ) : 199 SwMsgPoolItem( RES_VIRTPAGENUM_INFO ), 200 pPage( 0 ), 201 pOrigPage( pPg ), 202 pFrm( 0 ) 203 { 204 } 205 206 // --> OD 2008-02-19 #refactorlists# 207 //SwNumRuleInfo::SwNumRuleInfo( const String& rRuleName ) 208 // : SwMsgPoolItem( RES_GETNUMNODES ), rName( rRuleName ) 209 //{ 210 //} 211 212 //void SwNumRuleInfo::AddNode( SwTxtNode& rNd ) 213 //{ 214 // aList.Insert(rNd.GetIndex(), &rNd); 215 //} 216 217 218 SwFindNearestNode::SwFindNearestNode( const SwNode& rNd ) 219 : SwMsgPoolItem( RES_FINDNEARESTNODE ), pNd( &rNd ), pFnd( 0 ) 220 { 221 } 222 223 void SwFindNearestNode::CheckNode( const SwNode& rNd ) 224 { 225 if( &pNd->GetNodes() == &rNd.GetNodes() ) 226 { 227 sal_uLong nIdx = rNd.GetIndex(); 228 if( nIdx < pNd->GetIndex() && 229 ( !pFnd || nIdx > pFnd->GetIndex() ) && 230 nIdx > rNd.GetNodes().GetEndOfExtras().GetIndex() ) 231 pFnd = &rNd; 232 } 233 } 234 235 236 237 sal_uInt16 GetWhichOfScript( sal_uInt16 nWhich, sal_uInt16 nScript ) 238 { 239 static const sal_uInt16 aLangMap[3] = 240 { RES_CHRATR_LANGUAGE, RES_CHRATR_CJK_LANGUAGE, RES_CHRATR_CTL_LANGUAGE }; 241 static const sal_uInt16 aFontMap[3] = 242 { RES_CHRATR_FONT, RES_CHRATR_CJK_FONT, RES_CHRATR_CTL_FONT}; 243 static const sal_uInt16 aFontSizeMap[3] = 244 { RES_CHRATR_FONTSIZE, RES_CHRATR_CJK_FONTSIZE, RES_CHRATR_CTL_FONTSIZE }; 245 static const sal_uInt16 aWeightMap[3] = 246 { RES_CHRATR_WEIGHT, RES_CHRATR_CJK_WEIGHT, RES_CHRATR_CTL_WEIGHT}; 247 static const sal_uInt16 aPostureMap[3] = 248 { RES_CHRATR_POSTURE, RES_CHRATR_CJK_POSTURE, RES_CHRATR_CTL_POSTURE}; 249 250 const sal_uInt16* pM; 251 switch( nWhich ) 252 { 253 case RES_CHRATR_LANGUAGE: 254 case RES_CHRATR_CJK_LANGUAGE: 255 case RES_CHRATR_CTL_LANGUAGE: 256 pM = aLangMap; 257 break; 258 259 case RES_CHRATR_FONT: 260 case RES_CHRATR_CJK_FONT: 261 case RES_CHRATR_CTL_FONT: 262 pM = aFontMap; 263 break; 264 265 case RES_CHRATR_FONTSIZE: 266 case RES_CHRATR_CJK_FONTSIZE: 267 case RES_CHRATR_CTL_FONTSIZE: 268 pM = aFontSizeMap; 269 break; 270 271 case RES_CHRATR_WEIGHT: 272 case RES_CHRATR_CJK_WEIGHT: 273 case RES_CHRATR_CTL_WEIGHT: 274 pM = aWeightMap; 275 break; 276 case RES_CHRATR_POSTURE: 277 case RES_CHRATR_CJK_POSTURE: 278 case RES_CHRATR_CTL_POSTURE: 279 pM = aPostureMap; 280 break; 281 282 default: 283 pM = 0; 284 } 285 286 sal_uInt16 nRet; 287 if( pM ) 288 { 289 using namespace ::com::sun::star::i18n; 290 { 291 if( ScriptType::WEAK == nScript ) 292 nScript = GetI18NScriptTypeOfLanguage( (sal_uInt16)GetAppLanguage() ); 293 switch( nScript) 294 { 295 case ScriptType::COMPLEX: ++pM; // no break; 296 case ScriptType::ASIAN: ++pM; // no break; 297 default: nRet = *pM; 298 } 299 } 300 } 301 else 302 nRet = nWhich; 303 return nRet; 304 } 305