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_cui.hxx" 26 27 // include --------------------------------------------------------------- 28 #include <tools/shl.hxx> 29 #include <sfx2/app.hxx> 30 #include <sfx2/module.hxx> 31 #include <svx/dialogs.hrc> 32 33 #define _SVX_TPSHADOW_CXX 34 35 #include "svx/xattr.hxx" 36 #include <svx/xpool.hxx> 37 #include <cuires.hrc> 38 #include "tabarea.hrc" 39 #include <svx/svdattr.hxx> 40 #include "svx/drawitem.hxx" 41 #include "cuitabarea.hxx" 42 #include <dialmgr.hxx> 43 #include "svx/dlgutil.hxx" 44 #include <cuitabline.hxx> 45 #include "paragrph.hrc" 46 #include <svx/xlineit0.hxx> 47 #include <sfx2/request.hxx> //add CHINA001 48 49 #define DLGWIN this->GetParent()->GetParent() 50 51 // static ---------------------------------------------------------------- 52 53 static sal_uInt16 pShadowRanges[] = 54 { 55 SDRATTR_SHADOWCOLOR, 56 SDRATTR_SHADOWTRANSPARENCE, 57 SID_ATTR_FILL_SHADOW, 58 SID_ATTR_FILL_SHADOW, 59 0 60 }; 61 62 /************************************************************************* 63 |* 64 |* Dialog zum Aendern des Schattens 65 |* 66 \************************************************************************/ 67 68 SvxShadowTabPage::SvxShadowTabPage( Window* pParent, const SfxItemSet& rInAttrs ) : 69 70 SvxTabPage ( pParent, CUI_RES( RID_SVXPAGE_SHADOW ), rInAttrs ), 71 72 aFlProp ( this, CUI_RES( FL_PROP ) ), 73 aTsbShowShadow ( this, CUI_RES( TSB_SHOW_SHADOW ) ), 74 aFtPosition ( this, CUI_RES( FT_POSITION ) ), 75 aCtlPosition ( this, CUI_RES( CTL_POSITION ) ), 76 aFtDistance ( this, CUI_RES( FT_DISTANCE ) ), 77 aMtrDistance ( this, CUI_RES( MTR_FLD_DISTANCE ) ), 78 aFtShadowColor ( this, CUI_RES( FT_SHADOW_COLOR ) ), 79 aLbShadowColor ( this, CUI_RES( LB_SHADOW_COLOR ) ), 80 aFtTransparent ( this, CUI_RES( FT_TRANSPARENT ) ), 81 aMtrTransparent ( this, CUI_RES( MTR_SHADOW_TRANSPARENT ) ), 82 aCtlXRectPreview ( this, CUI_RES( CTL_COLOR_PREVIEW ) ), 83 rOutAttrs ( rInAttrs ), 84 pColorTab( NULL ), 85 bDisable ( sal_False ), 86 pXPool ( (XOutdevItemPool*) rInAttrs.GetPool() ), 87 aXFillAttr ( pXPool ), 88 rXFSet ( aXFillAttr.GetItemSet() ) 89 { 90 FreeResource(); 91 92 // diese Page braucht ExchangeSupport 93 SetExchangeSupport(); 94 95 // Metrik einstellen 96 FieldUnit eFUnit = GetModuleFieldUnit( rInAttrs ); 97 98 switch ( eFUnit ) 99 { 100 case FUNIT_M: 101 case FUNIT_KM: 102 eFUnit = FUNIT_MM; 103 break; 104 default: ;//prevent warning 105 } 106 SetFieldUnit( aMtrDistance, eFUnit ); 107 108 // PoolUnit ermitteln 109 SfxItemPool* pPool = rOutAttrs.GetPool(); 110 DBG_ASSERT( pPool, "Wo ist der Pool?" ); 111 ePoolUnit = pPool->GetMetric( SDRATTR_SHADOWXDIST ); 112 113 // Setzen des Output-Devices 114 XFillStyle eXFS = XFILL_SOLID; 115 if( rOutAttrs.GetItemState( XATTR_FILLSTYLE ) != SFX_ITEM_DONTCARE ) 116 { 117 eXFS = (XFillStyle) ( ( ( const XFillStyleItem& ) rOutAttrs. 118 Get( GetWhich( XATTR_FILLSTYLE ) ) ).GetValue() ); 119 switch( eXFS ) 120 { 121 //case XFILL_NONE: --> NICHTS 122 123 case XFILL_SOLID: 124 if( SFX_ITEM_DONTCARE != rOutAttrs.GetItemState( XATTR_FILLCOLOR ) ) 125 { 126 XFillColorItem aColorItem( ( const XFillColorItem& ) 127 rOutAttrs.Get( XATTR_FILLCOLOR ) ); 128 rXFSet.Put( aColorItem ); 129 } 130 break; 131 132 case XFILL_GRADIENT: 133 if( SFX_ITEM_DONTCARE != rOutAttrs.GetItemState( XATTR_FILLGRADIENT ) ) 134 { 135 XFillGradientItem aGradientItem( ( ( const XFillGradientItem& ) 136 rOutAttrs.Get( XATTR_FILLGRADIENT ) ) ); 137 rXFSet.Put( aGradientItem ); 138 } 139 break; 140 141 case XFILL_HATCH: 142 if( SFX_ITEM_DONTCARE != rOutAttrs.GetItemState( XATTR_FILLHATCH ) ) 143 { 144 XFillHatchItem aHatchItem( ( ( const XFillHatchItem& ) 145 rOutAttrs.Get( XATTR_FILLHATCH ) ) ); 146 rXFSet.Put( aHatchItem ); 147 } 148 break; 149 150 case XFILL_BITMAP: 151 { 152 if( SFX_ITEM_DONTCARE != rOutAttrs.GetItemState( XATTR_FILLBITMAP ) ) 153 { 154 XFillBitmapItem aBitmapItem( ( const XFillBitmapItem& ) 155 rOutAttrs.Get( XATTR_FILLBITMAP ) ); 156 rXFSet.Put( aBitmapItem ); 157 } 158 } 159 break; 160 case XFILL_NONE : break; 161 } 162 } 163 else 164 { 165 rXFSet.Put( XFillColorItem( String(), COL_LIGHTRED ) ); 166 } 167 168 if(XFILL_NONE == eXFS) 169 { 170 // #i96350# 171 // fallback to solid fillmode when no fill mode is provided to have 172 // a reasonable shadow preview. The used color will be a set one or 173 // the default (currently blue8) 174 eXFS = XFILL_SOLID; 175 } 176 177 rXFSet.Put( XFillStyleItem( eXFS ) ); 178 aCtlXRectPreview.SetRectangleAttributes(aXFillAttr.GetItemSet()); 179 //aCtlXRectPreview.SetFillAttr( aXFillAttr ); 180 181 aTsbShowShadow.SetClickHdl( LINK( this, SvxShadowTabPage, ClickShadowHdl_Impl ) ); 182 Link aLink = LINK( this, SvxShadowTabPage, ModifyShadowHdl_Impl ); 183 aLbShadowColor.SetSelectHdl( aLink ); 184 aMtrTransparent.SetModifyHdl( aLink ); 185 aMtrDistance.SetModifyHdl( aLink ); 186 187 aCtlXRectPreview.SetAccessibleName(String(CUI_RES(STR_EXAMPLE))); 188 aCtlPosition.SetAccessibleRelationMemberOf( &aFlProp ); 189 } 190 191 // ----------------------------------------------------------------------- 192 193 void SvxShadowTabPage::Construct() 194 { 195 // Farbtabelle fuellen 196 aLbShadowColor.Fill( pColorTab ); 197 198 if( bDisable ) 199 { 200 aTsbShowShadow.Disable(); 201 aFtPosition.Disable(); 202 aCtlPosition.Disable(); 203 aFtDistance.Disable(); 204 aMtrDistance.Disable(); 205 aFtShadowColor.Disable(); 206 aLbShadowColor.Disable(); 207 aFtTransparent.Disable(); 208 aMtrTransparent.Disable(); 209 } 210 } 211 212 // ----------------------------------------------------------------------- 213 214 void SvxShadowTabPage::ActivatePage( const SfxItemSet& rSet ) 215 { 216 sal_uInt16 nPos; 217 sal_uInt16 nCount; 218 //add CHINA001 Begin 219 SFX_ITEMSET_ARG (&rSet,pPageTypeItem,SfxUInt16Item,SID_PAGE_TYPE,sal_False); 220 if (pPageTypeItem) 221 SetPageType(pPageTypeItem->GetValue()); 222 //add CHINA001 end 223 if( nDlgType == 0 ) //CHINA001 // Flaechen-Dialogif( *pDlgType == 0 ) // Flaechen-Dialog 224 { 225 if( pColorTab ) 226 { 227 // ColorTable 228 if( *pnColorTableState & CT_CHANGED || 229 *pnColorTableState & CT_MODIFIED ) 230 { 231 if( *pnColorTableState & CT_CHANGED ) 232 { 233 SvxAreaTabDialog* pArea = dynamic_cast< SvxAreaTabDialog* >( DLGWIN ); 234 if( pArea ) 235 { 236 pColorTab = pArea->GetNewColorTable(); 237 } 238 else 239 { 240 SvxLineTabDialog* pLine = dynamic_cast< SvxLineTabDialog* >( DLGWIN ); 241 if( pLine ) 242 pColorTab = pLine->GetNewColorTable(); 243 } 244 } 245 246 // aLbShadowColor 247 nPos = aLbShadowColor.GetSelectEntryPos(); 248 aLbShadowColor.Clear(); 249 aLbShadowColor.Fill( pColorTab ); 250 nCount = aLbShadowColor.GetEntryCount(); 251 if( nCount == 0 ) 252 ; // Dieser Fall sollte nicht auftreten 253 else if( nCount <= nPos ) 254 aLbShadowColor.SelectEntryPos( 0 ); 255 else 256 aLbShadowColor.SelectEntryPos( nPos ); 257 258 ModifyShadowHdl_Impl( this ); 259 } 260 nPageType = PT_SHADOW;//CHINA001 *pPageType = PT_SHADOW; 261 } 262 } 263 } 264 265 // ----------------------------------------------------------------------- 266 267 int SvxShadowTabPage::DeactivatePage( SfxItemSet* _pSet ) 268 { 269 if( _pSet ) 270 FillItemSet( *_pSet ); 271 272 return( LEAVE_PAGE ); 273 } 274 275 // ----------------------------------------------------------------------- 276 277 sal_Bool SvxShadowTabPage::FillItemSet( SfxItemSet& rAttrs ) 278 { 279 const SfxPoolItem* pOld = NULL; 280 sal_Bool bModified = sal_False; 281 282 if( !bDisable ) 283 { 284 // Schatten 285 TriState eState = aTsbShowShadow.GetState(); 286 if( eState != aTsbShowShadow.GetSavedValue() ) 287 { 288 SdrShadowItem aItem( sal::static_int_cast< sal_Bool >( eState ) ); 289 pOld = GetOldItem( rAttrs, SDRATTR_SHADOW ); 290 if ( !pOld || !( *(const SdrShadowItem*)pOld == aItem ) ) 291 { 292 rAttrs.Put( aItem ); 293 bModified = sal_True; 294 } 295 } 296 297 // Schatten-Entfernung 298 // Etwas umstaendliche Abfrage, ob etwas geaendert wurde, 299 // da Items nicht direkt auf Controls abbildbar sind 300 sal_Int32 nX = 0L, nY = 0L; 301 sal_Int32 nXY = GetCoreValue( aMtrDistance, ePoolUnit ); 302 303 switch( aCtlPosition.GetActualRP() ) 304 { 305 case RP_LT: nX = nY = -nXY; break; 306 case RP_MT: nY = -nXY; break; 307 case RP_RT: nX = nXY; nY = -nXY; break; 308 case RP_LM: nX = -nXY; break; 309 case RP_RM: nX = nXY; break; 310 case RP_LB: nX = -nXY; nY = nXY; break; 311 case RP_MB: nY = nXY; break; 312 case RP_RB: nX = nY = nXY; break; 313 case RP_MM: break; 314 } 315 316 // Wenn die Werte des Schattenabstanden==SFX_ITEM_DONTCARE und der angezeigte 317 // String im entspr. MetricField=="", dann w�rde der Vergleich zw. alten und 318 // neuen Distance-Werte ein falsches Ergebnis liefern, da in so einem Fall die 319 // neuen Distance-Werte den Default-Werten des MetricField entspr�chen !!!! 320 if ( !aMtrDistance.IsEmptyFieldValue() || 321 rOutAttrs.GetItemState( SDRATTR_SHADOWXDIST ) != SFX_ITEM_DONTCARE || 322 rOutAttrs.GetItemState( SDRATTR_SHADOWYDIST ) != SFX_ITEM_DONTCARE ) 323 { 324 sal_Int32 nOldX = 9876543; // Unmoeglicher Wert, entspr. DontCare 325 sal_Int32 nOldY = 9876543; 326 if( rOutAttrs.GetItemState( SDRATTR_SHADOWXDIST ) != SFX_ITEM_DONTCARE && 327 rOutAttrs.GetItemState( SDRATTR_SHADOWYDIST ) != SFX_ITEM_DONTCARE ) 328 { 329 nOldX = ( ( const SdrShadowXDistItem& ) rOutAttrs. 330 Get( SDRATTR_SHADOWXDIST ) ).GetValue(); 331 nOldY = ( ( const SdrShadowYDistItem& ) rOutAttrs. 332 Get( SDRATTR_SHADOWYDIST ) ).GetValue(); 333 } 334 SdrShadowXDistItem aXItem( nX ); 335 pOld = GetOldItem( rAttrs, SDRATTR_SHADOWXDIST ); 336 if ( nX != nOldX && 337 ( !pOld || !( *(const SdrShadowXDistItem*)pOld == aXItem ) ) ) 338 { 339 rAttrs.Put( aXItem ); 340 bModified = sal_True; 341 } 342 SdrShadowYDistItem aYItem( nY ); 343 pOld = GetOldItem( rAttrs, SDRATTR_SHADOWYDIST ); 344 if ( nY != nOldY && 345 ( !pOld || !( *(const SdrShadowYDistItem*)pOld == aYItem ) ) ) 346 { 347 rAttrs.Put( aYItem ); 348 bModified = sal_True; 349 } 350 } 351 352 // ShadowColor 353 sal_uInt16 nPos = aLbShadowColor.GetSelectEntryPos(); 354 if( nPos != LISTBOX_ENTRY_NOTFOUND && 355 nPos != aLbShadowColor.GetSavedValue() ) 356 { 357 SdrShadowColorItem aItem( aLbShadowColor.GetSelectEntry(), 358 aLbShadowColor.GetSelectEntryColor() ); 359 pOld = GetOldItem( rAttrs, SDRATTR_SHADOWCOLOR ); 360 if ( !pOld || !( *(const SdrShadowColorItem*)pOld == aItem ) ) 361 { 362 rAttrs.Put( aItem ); 363 bModified = sal_True; 364 } 365 } 366 367 // Transparenz 368 sal_uInt16 nVal = (sal_uInt16)aMtrTransparent.GetValue(); 369 if( nVal != (sal_uInt16)aMtrTransparent.GetSavedValue().ToInt32() ) 370 { 371 SdrShadowTransparenceItem aItem( nVal ); 372 pOld = GetOldItem( rAttrs, SDRATTR_SHADOWTRANSPARENCE ); 373 if ( !pOld || !( *(const SdrShadowTransparenceItem*)pOld == aItem ) ) 374 { 375 rAttrs.Put( aItem ); 376 bModified = sal_True; 377 } 378 } 379 } 380 //add CHINA001 begin 381 rAttrs.Put (CntUInt16Item(SID_PAGE_TYPE,nPageType)); 382 //add CHINA001 end 383 return( bModified ); 384 } 385 386 // ----------------------------------------------------------------------- 387 388 void SvxShadowTabPage::Reset( const SfxItemSet& rAttrs ) 389 { 390 if( !bDisable ) 391 { 392 // Alle Objekte koennen einen Schatten besitzen 393 // z.Z. gibt es nur 8 m�gliche Positionen den Schatten zu setzen 394 395 // Ist Schatten gesetzt? 396 if( rAttrs.GetItemState( SDRATTR_SHADOW ) != SFX_ITEM_DONTCARE ) 397 { 398 aTsbShowShadow.EnableTriState( sal_False ); 399 400 if( ( ( const SdrShadowItem& ) rAttrs.Get( SDRATTR_SHADOW ) ).GetValue() ) 401 aTsbShowShadow.SetState( STATE_CHECK ); 402 else 403 { 404 aTsbShowShadow.SetState( STATE_NOCHECK ); 405 } 406 } 407 else 408 aTsbShowShadow.SetState( STATE_DONTKNOW ); 409 410 // Entfernung (nur 8 moegliche Positionen), deshalb 411 // wird nur ein Item ausgewertet 412 413 if( rAttrs.GetItemState( SDRATTR_SHADOWXDIST ) != SFX_ITEM_DONTCARE && 414 rAttrs.GetItemState( SDRATTR_SHADOWYDIST ) != SFX_ITEM_DONTCARE ) 415 { 416 sal_Int32 nX = ( ( const SdrShadowXDistItem& ) rAttrs.Get( SDRATTR_SHADOWXDIST ) ).GetValue(); 417 sal_Int32 nY = ( ( const SdrShadowYDistItem& ) rAttrs.Get( SDRATTR_SHADOWYDIST ) ).GetValue(); 418 419 if( nX != 0 ) 420 SetMetricValue( aMtrDistance, nX < 0L ? -nX : nX, ePoolUnit ); 421 else 422 SetMetricValue( aMtrDistance, nY < 0L ? -nY : nY, ePoolUnit ); 423 424 // Setzen des Schatten-Controls 425 if ( nX < 0L && nY < 0L ) aCtlPosition.SetActualRP( RP_LT ); 426 else if( nX == 0L && nY < 0L ) aCtlPosition.SetActualRP( RP_MT ); 427 else if( nX > 0L && nY < 0L ) aCtlPosition.SetActualRP( RP_RT ); 428 else if( nX < 0L && nY == 0L ) aCtlPosition.SetActualRP( RP_LM ); 429 // Mittelpunkt gibt es nicht mehr 430 else if( nX == 0L && nY == 0L ) aCtlPosition.SetActualRP( RP_RB ); 431 else if( nX > 0L && nY == 0L ) aCtlPosition.SetActualRP( RP_RM ); 432 else if( nX < 0L && nY > 0L ) aCtlPosition.SetActualRP( RP_LB ); 433 else if( nX == 0L && nY > 0L ) aCtlPosition.SetActualRP( RP_MB ); 434 else if( nX > 0L && nY > 0L ) aCtlPosition.SetActualRP( RP_RB ); 435 } 436 else 437 { 438 // determine default-distance 439 SfxItemPool* pPool = rOutAttrs.GetPool(); 440 SdrShadowXDistItem* pXDistItem = (SdrShadowXDistItem*)&pPool->GetDefaultItem (SDRATTR_SHADOWXDIST); 441 SdrShadowYDistItem* pYDistItem = (SdrShadowYDistItem*)&pPool->GetDefaultItem (SDRATTR_SHADOWYDIST); 442 if (pXDistItem && pYDistItem) 443 { 444 sal_Int32 nX = pXDistItem->GetValue(); 445 sal_Int32 nY = pYDistItem->GetValue(); 446 if( nX != 0 ) 447 SetMetricValue( aMtrDistance, nX < 0L ? -nX : nX, ePoolUnit ); 448 else 449 SetMetricValue( aMtrDistance, nY < 0L ? -nY : nY, ePoolUnit ); 450 } 451 452 // Tristate, z.B. mehrer Objekte wurden markiert, wovon einige einen Schatten besitzen, einige nicht. 453 // Der anzuzeigende Text des MetricFields wird auf "" gesetzt und dient in der Methode FillItemSet 454 // als Erkennungszeichen daf�r, das der Distance-Wert NICHT ver�ndert wurde !!!! 455 aMtrDistance.SetText( String() ); 456 aCtlPosition.SetActualRP( RP_MM ); 457 } 458 459 // SchattenFarbe: 460 if( rAttrs.GetItemState( SDRATTR_SHADOWCOLOR ) != SFX_ITEM_DONTCARE ) 461 { 462 aLbShadowColor.SelectEntry( ( ( const SdrShadowColorItem& ) rAttrs.Get( SDRATTR_SHADOWCOLOR ) ).GetColorValue() ); 463 } 464 else 465 aLbShadowColor.SetNoSelection(); 466 467 // Transparenz 468 if( rAttrs.GetItemState( SDRATTR_SHADOWTRANSPARENCE ) != SFX_ITEM_DONTCARE ) 469 { 470 sal_uInt16 nTransp = ( ( const SdrShadowTransparenceItem& ) rAttrs.Get( SDRATTR_SHADOWTRANSPARENCE ) ).GetValue(); 471 aMtrTransparent.SetValue( nTransp ); 472 } 473 else 474 aMtrTransparent.SetText( String() ); 475 476 // Werte sichern 477 //aCtlPosition 478 aMtrDistance.SaveValue(); 479 aLbShadowColor.SaveValue(); 480 aTsbShowShadow.SaveValue(); 481 482 // #66832# This field was not saved, but used to determine changes. 483 // Why? Seems to be the error. 484 // It IS the error. 485 aMtrTransparent.SaveValue(); 486 487 ClickShadowHdl_Impl( NULL ); 488 ModifyShadowHdl_Impl( NULL ); 489 } 490 } 491 492 // ----------------------------------------------------------------------- 493 494 SfxTabPage* SvxShadowTabPage::Create( Window* pWindow, 495 const SfxItemSet& rAttrs ) 496 { 497 return( new SvxShadowTabPage( pWindow, rAttrs ) ); 498 } 499 500 //------------------------------------------------------------------------ 501 502 sal_uInt16* SvxShadowTabPage::GetRanges() 503 { 504 return( pShadowRanges ); 505 } 506 507 //------------------------------------------------------------------------ 508 509 IMPL_LINK( SvxShadowTabPage, ClickShadowHdl_Impl, void *, EMPTYARG ) 510 { 511 if( aTsbShowShadow.GetState() == STATE_NOCHECK ) 512 { 513 aFtPosition.Disable(); 514 aCtlPosition.Disable(); 515 aFtDistance.Disable(); 516 aMtrDistance.Disable(); 517 aFtShadowColor.Disable(); 518 aLbShadowColor.Disable(); 519 aFtTransparent.Disable(); 520 aMtrTransparent.Disable(); 521 } 522 else 523 { 524 aFtPosition.Enable(); 525 aCtlPosition.Enable(); 526 aFtDistance.Enable(); 527 aMtrDistance.Enable(); 528 aFtShadowColor.Enable(); 529 aLbShadowColor.Enable(); 530 aFtTransparent.Enable(); 531 aMtrTransparent.Enable(); 532 } 533 aCtlPosition.Invalidate(); 534 535 ModifyShadowHdl_Impl( NULL ); 536 537 return( 0L ); 538 } 539 540 //------------------------------------------------------------------------ 541 542 IMPL_LINK( SvxShadowTabPage, ModifyShadowHdl_Impl, void *, EMPTYARG ) 543 { 544 if( aTsbShowShadow.GetState() == STATE_CHECK ) 545 rXFSet.Put( XFillStyleItem( XFILL_SOLID ) ); 546 else 547 rXFSet.Put( XFillStyleItem( XFILL_NONE ) ); 548 549 sal_uInt16 nPos = aLbShadowColor.GetSelectEntryPos(); 550 if( nPos != LISTBOX_ENTRY_NOTFOUND ) 551 { 552 rXFSet.Put( XFillColorItem( String(), 553 aLbShadowColor.GetSelectEntryColor() ) ); 554 } 555 sal_uInt16 nVal = (sal_uInt16)aMtrTransparent.GetValue(); 556 XFillTransparenceItem aItem( nVal ); 557 rXFSet.Put( XFillTransparenceItem( aItem ) ); 558 559 // Schatten-Entfernung 560 sal_Int32 nX = 0L, nY = 0L; 561 sal_Int32 nXY = GetCoreValue( aMtrDistance, ePoolUnit ); 562 switch( aCtlPosition.GetActualRP() ) 563 { 564 case RP_LT: nX = nY = -nXY; break; 565 case RP_MT: nY = -nXY; break; 566 case RP_RT: nX = nXY; nY = -nXY; break; 567 case RP_LM: nX = -nXY; break; 568 case RP_RM: nX = nXY; break; 569 case RP_LB: nX = -nXY; nY = nXY; break; 570 case RP_MB: nY = nXY; break; 571 case RP_RB: nX = nY = nXY; break; 572 case RP_MM: break; 573 } 574 575 aCtlXRectPreview.SetShadowPosition(Point(nX, nY)); 576 577 aCtlXRectPreview.SetShadowAttributes(aXFillAttr.GetItemSet()); 578 //aCtlXRectPreview.SetFillAttr( aXFillAttr ); 579 aCtlXRectPreview.Invalidate(); 580 581 return( 0L ); 582 } 583 584 //------------------------------------------------------------------------ 585 586 void SvxShadowTabPage::PointChanged( Window* pWindow, RECT_POINT eRcPt ) 587 { 588 eRP = eRcPt; 589 590 // Schatten neu zeichnen 591 ModifyShadowHdl_Impl( pWindow ); 592 } 593 594 void SvxShadowTabPage::PageCreated (SfxAllItemSet aSet) //add CHINA001 595 { 596 SFX_ITEMSET_ARG (&aSet,pColorTabItem,SvxColorTableItem,SID_COLOR_TABLE,sal_False); 597 SFX_ITEMSET_ARG (&aSet,pPageTypeItem,SfxUInt16Item,SID_PAGE_TYPE,sal_False); 598 SFX_ITEMSET_ARG (&aSet,pDlgTypeItem,SfxUInt16Item,SID_DLG_TYPE,sal_False); 599 600 601 if (pColorTabItem) 602 SetColorTable(pColorTabItem->GetColorTable()); 603 if (pPageTypeItem) 604 SetPageType(pPageTypeItem->GetValue()); 605 if (pDlgTypeItem) 606 SetDlgType(pDlgTypeItem->GetValue()); 607 Construct(); 608 } 609