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 // MARKER(update_precomp.py): autogen include statement, do not remove 23 #include "precompiled_svx.hxx" 24 25 #include <string> // HACK: prevent conflict between STLPORT and Workshop headers 26 27 #ifndef _TOOLBOX_HXX //autogen 28 #include <vcl/toolbox.hxx> 29 #endif 30 #ifndef _FIELD_HXX //autogen 31 #include <vcl/field.hxx> 32 #endif 33 #include <vcl/fixed.hxx> 34 #include <vcl/msgbox.hxx> 35 #include <svl/intitem.hxx> 36 #include <svl/eitem.hxx> 37 #include <svl/whiter.hxx> 38 #include <sfx2/app.hxx> 39 #include <sfx2/dispatch.hxx> 40 #include <sfx2/objsh.hxx> 41 #include <sfx2/viewsh.hxx> 42 #include <sfx2/request.hxx> 43 #include <sfx2/basedlgs.hxx> 44 #include <tools/urlobj.hxx> 45 #include <comphelper/processfactory.hxx> 46 47 #include <svx/svxids.hrc> 48 #include "grafctrl.hrc" 49 #include <svx/dialogs.hrc> 50 #include <editeng/brshitem.hxx> 51 #include <editeng/sizeitem.hxx> 52 #include <svx/sdgcpitm.hxx> 53 //CHINA001 #include "../dialog/grfpage.hxx" 54 #include <svx/itemwin.hxx> 55 #include <svx/dialmgr.hxx> 56 #include <svx/svdview.hxx> 57 #include <svx/svdmodel.hxx> 58 #include <svx/svdograf.hxx> 59 #include <svx/svdundo.hxx> 60 #include <svx/svdtrans.hxx> 61 #include "svx/grafctrl.hxx" 62 #include "svx/tbxcolor.hxx" 63 64 // namespaces 65 using ::rtl::OUString; 66 using namespace ::com::sun::star::uno; 67 using namespace ::com::sun::star::frame; 68 using namespace ::com::sun::star::util; 69 using namespace ::com::sun::star::beans; 70 using namespace ::com::sun::star::lang; 71 72 #include <svx/svxdlg.hxx> //CHINA001 73 // ----------- 74 // - Defines - 75 // ----------- 76 77 #define SYMBOL_TO_FIELD_OFFSET 4 78 #define ITEMVALUE(ItemSet,Id,Cast) ((const Cast&)(ItemSet).Get(Id)).GetValue() 79 #define TOOLBOX_NAME ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "colorbar" ) ) 80 81 // ---------------- 82 // - TbxImageItem - 83 // ---------------- 84 85 TYPEINIT1_AUTOFACTORY( TbxImageItem, SfxUInt16Item ); 86 87 //--------------------------------------------------------- 88 89 TbxImageItem::TbxImageItem( sal_uInt16 _nWhich, sal_uInt16 nImage ) : 90 SfxUInt16Item( _nWhich, nImage ) 91 { 92 } 93 94 //--------------------------------------------------------- 95 96 SfxPoolItem* TbxImageItem::Clone( SfxItemPool* ) const 97 { 98 return new TbxImageItem( *this ); 99 } 100 101 //--------------------------------------------------------- 102 103 int TbxImageItem::operator==( const SfxPoolItem& rItem ) const 104 { 105 return( ( (TbxImageItem&) rItem ).GetValue() == GetValue() ); 106 } 107 108 // ----------------------- 109 // - ImplGrafMetricField - 110 // ----------------------- 111 112 class ImplGrafMetricField : public MetricField 113 { 114 using Window::Update; 115 116 private: 117 Timer maTimer; 118 OUString maCommand; 119 Reference< XFrame > mxFrame; 120 121 DECL_LINK( ImplModifyHdl, Timer* ); 122 123 protected: 124 125 virtual void Modify(); 126 127 public: 128 129 ImplGrafMetricField( Window* pParent, const rtl::OUString& aCmd, const Reference< XFrame >& rFrame ); 130 ~ImplGrafMetricField(); 131 132 void Update( const SfxPoolItem* pItem ); 133 const OUString& GetCommand() const { return maCommand; } 134 }; 135 136 // ----------------------------------------------------------------------------- 137 138 ImplGrafMetricField::ImplGrafMetricField( Window* pParent, const rtl::OUString& rCmd, const Reference< XFrame >& rFrame ) : 139 MetricField( pParent, WB_BORDER | WB_SPIN | WB_REPEAT | WB_3DLOOK ), 140 maCommand( rCmd ), 141 mxFrame( rFrame ) 142 { 143 Size aSize( GetTextWidth( String::CreateFromAscii("-100 %") ), GetTextHeight() ); 144 145 aSize.Width() += 20, aSize.Height() += 6; 146 SetSizePixel( aSize ); 147 148 if ( maCommand.equalsAscii( ".uno:GrafGamma" )) 149 { 150 SetDecimalDigits( 2 ); 151 152 SetMin( 10 ); 153 SetFirst( 10 ); 154 SetMax( 1000 ); 155 SetLast( 1000 ); 156 SetSpinSize( 10 ); 157 } 158 else 159 { 160 const long nMinVal = ( maCommand.equalsAscii( ".uno:GrafTransparence" )) ? 0 : -100; 161 162 SetUnit( FUNIT_CUSTOM ); 163 SetCustomUnitText( String::CreateFromAscii(" %") ); 164 SetDecimalDigits( 0 ); 165 166 SetMin( nMinVal ); 167 SetFirst( nMinVal ); 168 SetMax( 100 ); 169 SetLast( 100 ); 170 SetSpinSize( 1 ); 171 } 172 173 maTimer.SetTimeout( 100 ); 174 maTimer.SetTimeoutHdl( LINK( this, ImplGrafMetricField, ImplModifyHdl ) ); 175 } 176 177 // ----------------------------------------------------------------------------- 178 179 ImplGrafMetricField::~ImplGrafMetricField() 180 { 181 } 182 183 // ----------------------------------------------------------------------------- 184 185 void ImplGrafMetricField::Modify() 186 { 187 maTimer.Start(); 188 } 189 190 // ----------------------------------------------------------------------------- 191 192 IMPL_LINK( ImplGrafMetricField, ImplModifyHdl, Timer*, EMPTYARG ) 193 { 194 const sal_Int64 nVal = GetValue(); 195 196 // Convert value to an any to be usable with dispatch API 197 Any a; 198 if ( maCommand.equalsAscii( ".uno:GrafRed" ) || 199 maCommand.equalsAscii( ".uno:GrafGreen" ) || 200 maCommand.equalsAscii( ".uno:GrafBlue" ) || 201 maCommand.equalsAscii( ".uno:GrafLuminance" ) || 202 maCommand.equalsAscii( ".uno:GrafContrast" )) 203 a = makeAny( sal_Int16( nVal )); 204 else if ( maCommand.equalsAscii( ".uno:GrafGamma" ) || 205 maCommand.equalsAscii( ".uno:GrafTransparence" )) 206 a = makeAny( sal_Int32( nVal )); 207 208 if ( a.hasValue() ) 209 { 210 INetURLObject aObj( maCommand ); 211 212 Sequence< PropertyValue > aArgs( 1 ); 213 aArgs[0].Name = aObj.GetURLPath(); 214 aArgs[0].Value = a; 215 216 SfxToolBoxControl::Dispatch( 217 Reference< XDispatchProvider >( mxFrame->getController(), UNO_QUERY ), 218 maCommand, 219 aArgs ); 220 } 221 return 0L; 222 } 223 224 // ----------------------------------------------------------------------------- 225 226 void ImplGrafMetricField::Update( const SfxPoolItem* pItem ) 227 { 228 if( pItem ) 229 { 230 long nValue; 231 232 if ( maCommand.equalsAscii( ".uno:GrafTransparence" )) 233 nValue = ( (SfxUInt16Item*) pItem )->GetValue(); 234 else if ( maCommand.equalsAscii( ".uno:GrafGamma" )) 235 nValue = ( (SfxUInt32Item*) pItem )->GetValue(); 236 else 237 nValue = ( (SfxInt16Item*) pItem )->GetValue(); 238 239 SetValue( nValue ); 240 } 241 else 242 SetText( String() ); 243 } 244 245 // -------------------- 246 // - ImplGrafControl - 247 // -------------------- 248 249 struct CommandToRID 250 { 251 const char* pCommand; 252 sal_uInt16 nResId; 253 sal_uInt16 nHCResId; 254 }; 255 256 static sal_uInt16 ImplGetRID( const OUString& aCommand, bool bHighContrast ) 257 { 258 static const CommandToRID aImplCommandToResMap[] = 259 { 260 { ".uno:GrafRed", RID_SVXIMG_GRAF_RED, RID_SVXIMG_GRAF_RED_H }, 261 { ".uno:GrafGreen", RID_SVXIMG_GRAF_GREEN, RID_SVXIMG_GRAF_GREEN_H }, 262 { ".uno:GrafBlue", RID_SVXIMG_GRAF_BLUE, RID_SVXIMG_GRAF_BLUE_H }, 263 { ".uno:GrafLuminance", RID_SVXIMG_GRAF_LUMINANCE, RID_SVXIMG_GRAF_LUMINANCE_H }, 264 { ".uno:GrafContrast", RID_SVXIMG_GRAF_CONTRAST, RID_SVXIMG_GRAF_CONTRAST_H }, 265 { ".uno:GrafGamma", RID_SVXIMG_GRAF_GAMMA, RID_SVXIMG_GRAF_GAMMA_H }, 266 { ".uno:GrafTransparence", RID_SVXIMG_GRAF_TRANSPARENCE, RID_SVXIMG_GRAF_TRANSPARENCE_H }, 267 { 0, 0, 0 } 268 }; 269 270 sal_uInt16 nRID = 0; 271 272 sal_Int32 i( 0 ); 273 while ( aImplCommandToResMap[ i ].pCommand ) 274 { 275 if ( aCommand.equalsAscii( aImplCommandToResMap[ i ].pCommand )) 276 { 277 if ( bHighContrast ) 278 nRID = aImplCommandToResMap[ i ].nHCResId; 279 else 280 nRID = aImplCommandToResMap[ i ].nResId; 281 break; 282 } 283 ++i; 284 } 285 286 return nRID; 287 } 288 289 // ----------------------------------------------------------------------------- 290 291 class ImplGrafControl : public Control 292 { 293 using Window::Update; 294 private: 295 FixedImage maImage; 296 ImplGrafMetricField maField; 297 298 protected: 299 300 virtual void GetFocus(); 301 302 public: 303 304 ImplGrafControl( Window* pParent, sal_uInt16 nSlotId, const rtl::OUString& rCmd, const Reference< XFrame >& rFrame ); 305 ~ImplGrafControl(); 306 307 void Update( const SfxPoolItem* pItem ) { maField.Update( pItem ); } 308 void SetText( const String& rStr ) { maField.SetText( rStr ); } 309 }; 310 311 // ----------------------------------------------------------------------------- 312 313 ImplGrafControl::ImplGrafControl( Window* pParent, sal_uInt16, const rtl::OUString& rCmd, const Reference< XFrame >& rFrame ) : 314 Control( pParent, WB_TABSTOP ), 315 maImage ( this ), 316 maField ( this, rCmd, rFrame ) 317 { 318 ResId aResId( ImplGetRID( rCmd, false ), DIALOG_MGR() ) ; 319 Image aImage( aResId ); 320 321 ResId aResIdHC( ImplGetRID( rCmd, true ), DIALOG_MGR() ) ; 322 Image aImageHC( aResIdHC ); 323 324 Size aImgSize( aImage.GetSizePixel() ); 325 Size aFldSize( maField.GetSizePixel() ); 326 long nFldY, nImgY; 327 328 maImage.SetImage( aImage ); 329 maImage.SetModeImage( aImageHC, BMP_COLOR_HIGHCONTRAST ); 330 maImage.SetSizePixel( aImgSize ); 331 // we want to see the background of the toolbox, not of the FixedImage or Control 332 maImage.SetBackground( Wallpaper( COL_TRANSPARENT ) ); 333 SetBackground( Wallpaper( COL_TRANSPARENT ) ); 334 335 if( aImgSize.Height() > aFldSize.Height() ) 336 nImgY = 0, nFldY = ( aImgSize.Height() - aFldSize.Height() ) >> 1; 337 else 338 nFldY = 0, nImgY = ( aFldSize.Height() - aImgSize.Height() ) >> 1; 339 340 long nOffset = SYMBOL_TO_FIELD_OFFSET / 2; 341 maImage.SetPosPixel( Point( nOffset, nImgY ) ); 342 maField.SetPosPixel( Point( aImgSize.Width() + SYMBOL_TO_FIELD_OFFSET, nFldY ) ); 343 SetSizePixel( Size( aImgSize.Width() + aFldSize.Width() + SYMBOL_TO_FIELD_OFFSET + nOffset, 344 Max( aImgSize.Height(), aFldSize.Height() ) ) ); 345 346 SetBackground( Wallpaper() ); // transparent background 347 348 maImage.Show(); 349 350 maField.SetHelpId( rtl::OUStringToOString( rCmd, RTL_TEXTENCODING_UTF8 ) ); 351 maField.Show(); 352 } 353 354 // ----------------------------------------------------------------------------- 355 356 ImplGrafControl::~ImplGrafControl() 357 { 358 } 359 360 // ----------------------------------------------------------------------------- 361 362 void ImplGrafControl::GetFocus() 363 { 364 maField.GrabFocus(); 365 } 366 367 // ----------------------- 368 // - ImplGrafModeControl - 369 // ----------------------- 370 371 class ImplGrafModeControl : public ListBox 372 { 373 using Window::Update; 374 private: 375 sal_uInt16 mnCurPos; 376 Reference< XFrame > mxFrame; 377 378 virtual void Select(); 379 virtual long PreNotify( NotifyEvent& rNEvt ); 380 virtual long Notify( NotifyEvent& rNEvt ); 381 void ImplReleaseFocus(); 382 383 public: 384 385 ImplGrafModeControl( Window* pParent, const Reference< XFrame >& rFrame ); 386 ~ImplGrafModeControl(); 387 388 void Update( const SfxPoolItem* pItem ); 389 }; 390 391 // ----------------------------------------------------------------------------- 392 393 ImplGrafModeControl::ImplGrafModeControl( Window* pParent, const Reference< XFrame >& rFrame ) : 394 ListBox( pParent, WB_BORDER | WB_DROPDOWN | WB_AUTOHSCROLL ), 395 mnCurPos( 0 ), 396 mxFrame( rFrame ) 397 { 398 SetSizePixel( Size( 100, 260 ) ); 399 400 InsertEntry( SVX_RESSTR( RID_SVXSTR_GRAFMODE_STANDARD ) ); 401 InsertEntry( SVX_RESSTR( RID_SVXSTR_GRAFMODE_GREYS ) ); 402 InsertEntry( SVX_RESSTR( RID_SVXSTR_GRAFMODE_MONO ) ); 403 InsertEntry( SVX_RESSTR( RID_SVXSTR_GRAFMODE_WATERMARK ) ); 404 405 Show(); 406 } 407 408 // ----------------------------------------------------------------------- 409 410 ImplGrafModeControl::~ImplGrafModeControl() 411 { 412 } 413 414 // ----------------------------------------------------------------------- 415 416 void ImplGrafModeControl::Select() 417 { 418 if ( !IsTravelSelect() ) 419 { 420 Sequence< PropertyValue > aArgs( 1 ); 421 aArgs[0].Name = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "GrafMode" )); 422 aArgs[0].Value = makeAny( sal_Int16( GetSelectEntryPos() )); 423 424 /* #i33380# DR 2004-09-03 Moved the following line above the Dispatch() call. 425 This instance may be deleted in the meantime (i.e. when a dialog is opened 426 while in Dispatch()), accessing members will crash in this case. */ 427 ImplReleaseFocus(); 428 429 SfxToolBoxControl::Dispatch( 430 Reference< XDispatchProvider >( mxFrame->getController(), UNO_QUERY ), 431 OUString( RTL_CONSTASCII_USTRINGPARAM( ".uno:GrafMode" )), 432 aArgs ); 433 } 434 } 435 436 // ----------------------------------------------------------------------- 437 438 long ImplGrafModeControl::PreNotify( NotifyEvent& rNEvt ) 439 { 440 sal_uInt16 nType = rNEvt.GetType(); 441 442 if( EVENT_MOUSEBUTTONDOWN == nType || EVENT_GETFOCUS == nType ) 443 mnCurPos = GetSelectEntryPos(); 444 445 return ListBox::PreNotify( rNEvt ); 446 } 447 448 // ----------------------------------------------------------------------- 449 450 long ImplGrafModeControl::Notify( NotifyEvent& rNEvt ) 451 { 452 long nHandled = ListBox::Notify( rNEvt ); 453 454 if( rNEvt.GetType() == EVENT_KEYINPUT ) 455 { 456 const KeyEvent* pKEvt = rNEvt.GetKeyEvent(); 457 458 switch( pKEvt->GetKeyCode().GetCode() ) 459 { 460 case KEY_RETURN: 461 { 462 Select(); 463 nHandled = 1; 464 } 465 break; 466 467 case KEY_ESCAPE: 468 { 469 SelectEntryPos( mnCurPos ); 470 ImplReleaseFocus(); 471 nHandled = 1; 472 } 473 break; 474 } 475 } 476 477 return nHandled; 478 } 479 480 // ----------------------------------------------------------------------- 481 482 void ImplGrafModeControl::ImplReleaseFocus() 483 { 484 if( SfxViewShell::Current() ) 485 { 486 Window* pShellWnd = SfxViewShell::Current()->GetWindow(); 487 488 if( pShellWnd ) 489 pShellWnd->GrabFocus(); 490 } 491 } 492 493 // ----------------------------------------------------------------------- 494 495 void ImplGrafModeControl::Update( const SfxPoolItem* pItem ) 496 { 497 if( pItem ) 498 SelectEntryPos( ((SfxUInt16Item*)pItem)->GetValue() ); 499 else 500 SetNoSelection(); 501 } 502 503 // ----------------------- 504 // - ImplGrafFilterPopup - 505 // ----------------------- 506 /* 507 CD!!! 508 class ImplGrafFilterPopup : public SfxPopupWindow 509 { 510 private: 511 512 SvxGrafFilterToolBoxControl* mpParent; 513 Reference< XConfigurableUIElement > m_xToolBar; 514 // SfxToolBoxManager maTbxMgr; 515 ResId maResIdWin; 516 ResId maResIdTbx; 517 WindowAlign meTbxAlign; 518 Link maSelectHdl; 519 520 DECL_LINK( TbxSelectHdl, void* ); 521 522 public: 523 ImplGrafFilterPopup( sal_uInt16 nId, SvxGrafFilterToolBoxControl* pParent, 524 WindowAlign eAlign, 525 const ResId& rResIdWin, const ResId& rResIdTbx, 526 SfxBindings& rBindings ); 527 ~ImplGrafFilterPopup(); 528 529 virtual SfxPopupWindow* Clone() const; 530 virtual void PopupModeEnd(); 531 532 void StartSelection() { maTbxMgr.GetToolBox().StartSelection(); } 533 void Update(); 534 }; 535 536 // ----------------------------------------------------------------------------- 537 538 ImplGrafFilterPopup::ImplGrafFilterPopup( sal_uInt16 nId, SvxGrafFilterToolBoxControl* pParent, 539 WindowAlign eAlign, 540 const ResId& rResIdWin, const ResId& rResIdTbx ) : 541 SfxPopupWindow ( nId, rResIdWin ), 542 mpParent ( pParent ), 543 maTbxMgr ( this, GetBindings(), rResIdTbx ), 544 maResIdWin ( rResIdWin ), 545 maResIdTbx ( rResIdTbx ), 546 meTbxAlign ( eAlign ) 547 { 548 maTbxMgr.UseDefault(); 549 550 maSelectHdl = maTbxMgr.GetToolBox().GetSelectHdl(); 551 maTbxMgr.GetToolBox().SetSelectHdl( LINK( this, ImplGrafFilterPopup, TbxSelectHdl ) ); 552 553 FreeResource(); 554 555 const Size aSize( maTbxMgr.CalcWindowSizePixel() ); 556 maTbxMgr.SetPosSizePixel( Point(), aSize ); 557 SetOutputSizePixel( aSize ); 558 } 559 560 // ----------------------------------------------------------------------------- 561 562 ImplGrafFilterPopup::~ImplGrafFilterPopup() 563 { 564 } 565 566 // ----------------------------------------------------------------------------- 567 568 SfxPopupWindow* ImplGrafFilterPopup::Clone() const 569 { 570 return( new ImplGrafFilterPopup( GetId(), mpParent, meTbxAlign, 571 maResIdWin, maResIdTbx, 572 (SfxBindings&) GetBindings() ) ); 573 } 574 575 // ----------------------------------------------------------------------------- 576 577 void ImplGrafFilterPopup::Update() 578 { 579 ToolBox* pBox = &maTbxMgr.GetToolBox(); 580 maTbxMgr.Activate( pBox ); 581 maTbxMgr.Deactivate( pBox ); 582 } 583 584 // ----------------------------------------------------------------------------- 585 586 void ImplGrafFilterPopup::PopupModeEnd() 587 { 588 maTbxMgr.GetToolBox().EndSelection(); 589 SfxPopupWindow::PopupModeEnd(); 590 } 591 592 // ----------------------------------------------------------------------------- 593 594 IMPL_LINK( ImplGrafFilterPopup, TbxSelectHdl, void*, EMPTYARG ) 595 { 596 const sal_uInt16 nSlotId = maTbxMgr.GetToolBox().GetCurItemId(); 597 598 if( IsInPopupMode() ) 599 EndPopupMode(); 600 601 GetBindings().GetDispatcher()->Execute( nSlotId, SFX_CALLMODE_ASYNCHRON ); 602 603 return 0; 604 } 605 */ 606 // ------------------------------- 607 // - SvxGrafFilterToolBoxControl - 608 // ------------------------------- 609 610 SFX_IMPL_TOOLBOX_CONTROL( SvxGrafFilterToolBoxControl, TbxImageItem ); 611 612 // ----------------------------------------------------------------------------- 613 614 SvxGrafFilterToolBoxControl::SvxGrafFilterToolBoxControl( sal_uInt16 nSlotId, sal_uInt16 nId, ToolBox& rTbx ) : 615 SfxToolBoxControl( nSlotId, nId, rTbx ) 616 { 617 rTbx.SetItemBits( nId, TIB_DROPDOWNONLY | rTbx.GetItemBits( nId ) ); 618 rTbx.Invalidate(); 619 } 620 621 // ----------------------------------------------------------------------------- 622 623 SvxGrafFilterToolBoxControl::~SvxGrafFilterToolBoxControl() 624 { 625 } 626 627 // ----------------------------------------------------------------------------- 628 629 void SvxGrafFilterToolBoxControl::StateChanged( sal_uInt16, SfxItemState eState, const SfxPoolItem* ) 630 { 631 GetToolBox().EnableItem( GetId(), ( eState != SFX_ITEM_DISABLED ) ); 632 } 633 634 // ----------------------------------------------------------------------------- 635 636 SfxPopupWindowType SvxGrafFilterToolBoxControl::GetPopupWindowType() const 637 { 638 return SFX_POPUPWINDOW_ONCLICK; 639 } 640 641 // ----------------------------------------------------------------------------- 642 643 SfxPopupWindow* SvxGrafFilterToolBoxControl::CreatePopupWindow() 644 { 645 rtl::OUString aSubTbxResName( 646 RTL_CONSTASCII_USTRINGPARAM( "private:resource/toolbar/graffilterbar" ) ); 647 createAndPositionSubToolBar( aSubTbxResName ); 648 649 return NULL; 650 } 651 652 // ------------------------- 653 // - SvxGrafToolBoxControl - 654 // ------------------------- 655 656 SFX_IMPL_TOOLBOX_CONTROL( SvxGrafToolBoxControl, SfxVoidItem ); 657 658 // ----------------------------------------------------------------------------- 659 660 SvxGrafToolBoxControl::SvxGrafToolBoxControl( sal_uInt16 nSlotId, sal_uInt16 nId, ToolBox& rTbx) : 661 SfxToolBoxControl( nSlotId, nId, rTbx ) 662 { 663 rTbx.SetItemBits( nId, TIB_DROPDOWN | rTbx.GetItemBits( nId ) ); 664 rTbx.Invalidate(); 665 } 666 667 // ----------------------------------------------------------------------------- 668 669 SvxGrafToolBoxControl::~SvxGrafToolBoxControl() 670 { 671 } 672 673 // ----------------------------------------------------------------------------- 674 675 void SvxGrafToolBoxControl::StateChanged( sal_uInt16, SfxItemState eState, const SfxPoolItem* pState ) 676 677 { 678 ImplGrafControl* pCtrl = (ImplGrafControl*) GetToolBox().GetItemWindow( GetId() ); 679 DBG_ASSERT( pCtrl, "Control not found" ); 680 681 if( eState == SFX_ITEM_DISABLED ) 682 { 683 pCtrl->Disable(); 684 pCtrl->SetText( String() ); 685 } 686 else 687 { 688 pCtrl->Enable(); 689 690 if( eState == SFX_ITEM_AVAILABLE ) 691 pCtrl->Update( pState ); 692 else 693 pCtrl->Update( NULL ); 694 } 695 } 696 697 // ----------------------------------------------------------------------------- 698 699 Window* SvxGrafToolBoxControl::CreateItemWindow( Window *pParent ) 700 { 701 return( new ImplGrafControl( pParent, GetSlotId(), m_aCommandURL, m_xFrame ) ); 702 } 703 704 // ---------------------------- 705 // - SvxGrafRedToolBoxControl - 706 // ---------------------------- 707 708 SFX_IMPL_TOOLBOX_CONTROL( SvxGrafRedToolBoxControl, SfxInt16Item ); 709 710 // ----------------------------------------------------------------------------- 711 712 SvxGrafRedToolBoxControl::SvxGrafRedToolBoxControl( sal_uInt16 nSlotId, sal_uInt16 nId, ToolBox& rTbx ) : 713 SvxGrafToolBoxControl( nSlotId, nId, rTbx ) 714 { 715 } 716 717 // ------------------------------ 718 // - SvxGrafGreenToolBoxControl - 719 // ------------------------------ 720 721 SFX_IMPL_TOOLBOX_CONTROL( SvxGrafGreenToolBoxControl, SfxInt16Item ); 722 723 // ----------------------------------------------------------------------------- 724 725 SvxGrafGreenToolBoxControl::SvxGrafGreenToolBoxControl( sal_uInt16 nSlotId, sal_uInt16 nId, ToolBox& rTbx ) : 726 SvxGrafToolBoxControl( nSlotId, nId, rTbx ) 727 { 728 } 729 730 // ----------------------------- 731 // - SvxGrafBlueToolBoxControl - 732 // ----------------------------- 733 734 SFX_IMPL_TOOLBOX_CONTROL( SvxGrafBlueToolBoxControl, SfxInt16Item ); 735 736 // ----------------------------------------------------------------------------- 737 738 SvxGrafBlueToolBoxControl::SvxGrafBlueToolBoxControl( sal_uInt16 nSlotId, sal_uInt16 nId, ToolBox& rTbx ) : 739 SvxGrafToolBoxControl( nSlotId, nId, rTbx ) 740 { 741 } 742 743 // ---------------------------------- 744 // - SvxGrafLuminanceToolBoxControl - 745 // ---------------------------------- 746 747 SFX_IMPL_TOOLBOX_CONTROL( SvxGrafLuminanceToolBoxControl, SfxInt16Item ); 748 749 // ----------------------------------------------------------------------------- 750 751 SvxGrafLuminanceToolBoxControl::SvxGrafLuminanceToolBoxControl( sal_uInt16 nSlotId, sal_uInt16 nId, ToolBox& rTbx ) : 752 SvxGrafToolBoxControl( nSlotId, nId, rTbx ) 753 { 754 } 755 756 // ---------------------------------- 757 // - SvxGrafContrastToolBoxControl - 758 // ---------------------------------- 759 760 SFX_IMPL_TOOLBOX_CONTROL( SvxGrafContrastToolBoxControl, SfxInt16Item ); 761 762 // ----------------------------------------------------------------------------- 763 764 SvxGrafContrastToolBoxControl::SvxGrafContrastToolBoxControl( sal_uInt16 nSlotId, sal_uInt16 nId, ToolBox& rTbx ) : 765 SvxGrafToolBoxControl( nSlotId, nId, rTbx ) 766 { 767 } 768 769 // ------------------------------ 770 // - SvxGrafGammaToolBoxControl - 771 // ------------------------------ 772 773 SFX_IMPL_TOOLBOX_CONTROL( SvxGrafGammaToolBoxControl, SfxUInt32Item ); 774 775 // ----------------------------------------------------------------------------- 776 777 SvxGrafGammaToolBoxControl::SvxGrafGammaToolBoxControl( sal_uInt16 nSlotId, sal_uInt16 nId, ToolBox& rTbx ) : 778 SvxGrafToolBoxControl( nSlotId, nId, rTbx ) 779 { 780 } 781 782 // ------------------------------------- 783 // - SvxGrafTransparenceToolBoxControl - 784 // ------------------------------------- 785 786 SFX_IMPL_TOOLBOX_CONTROL( SvxGrafTransparenceToolBoxControl, SfxUInt16Item ); 787 788 // ----------------------------------------------------------------------------- 789 790 SvxGrafTransparenceToolBoxControl::SvxGrafTransparenceToolBoxControl( sal_uInt16 nSlotId, sal_uInt16 nId, ToolBox& rTbx ) : 791 SvxGrafToolBoxControl( nSlotId, nId, rTbx ) 792 { 793 } 794 795 // ----------------------------- 796 // - SvxGrafModeToolBoxControl - 797 // ----------------------------- 798 799 SFX_IMPL_TOOLBOX_CONTROL( SvxGrafModeToolBoxControl, SfxUInt16Item ); 800 801 // ----------------------------------------------------------------------------- 802 803 SvxGrafModeToolBoxControl::SvxGrafModeToolBoxControl( sal_uInt16 nSlotId, sal_uInt16 nId, ToolBox& rTbx ) : 804 SfxToolBoxControl( nSlotId, nId, rTbx ) 805 { 806 } 807 808 // ----------------------------------------------------------------------------- 809 810 SvxGrafModeToolBoxControl::~SvxGrafModeToolBoxControl() 811 { 812 } 813 814 // ----------------------------------------------------------------------------- 815 816 void SvxGrafModeToolBoxControl::StateChanged( sal_uInt16, SfxItemState eState, const SfxPoolItem* pState ) 817 818 { 819 ImplGrafModeControl* pCtrl = (ImplGrafModeControl*) GetToolBox().GetItemWindow( GetId() ); 820 DBG_ASSERT( pCtrl, "Control not found" ); 821 822 if( eState == SFX_ITEM_DISABLED ) 823 { 824 pCtrl->Disable(); 825 pCtrl->SetText( String() ); 826 } 827 else 828 { 829 pCtrl->Enable(); 830 831 if( eState == SFX_ITEM_AVAILABLE ) 832 pCtrl->Update( pState ); 833 else 834 pCtrl->Update( NULL ); 835 } 836 } 837 838 // ----------------------------------------------------------------------------- 839 840 Window* SvxGrafModeToolBoxControl::CreateItemWindow( Window *pParent ) 841 { 842 return( new ImplGrafModeControl( pParent, m_xFrame ) ); 843 } 844 845 // --------------------- 846 // - SvxGrafAttrHelper - 847 // --------------------- 848 849 void SvxGrafAttrHelper::ExecuteGrafAttr( SfxRequest& rReq, SdrView& rView ) 850 { 851 SfxItemPool& rPool = rView.GetModel()->GetItemPool(); 852 SfxItemSet aSet( rPool, SDRATTR_GRAF_FIRST, SDRATTR_GRAF_LAST ); 853 String aUndoStr; 854 const bool bUndo = rView.IsUndoEnabled(); 855 856 if( bUndo ) 857 { 858 aUndoStr = rView.GetDescriptionOfMarkedObjects(); 859 aUndoStr.Append( sal_Unicode(' ') ); 860 } 861 862 const SfxItemSet* pArgs = rReq.GetArgs(); 863 const SfxPoolItem* pItem; 864 sal_uInt16 nSlot = rReq.GetSlot(); 865 866 if( !pArgs || SFX_ITEM_SET != pArgs->GetItemState( nSlot, sal_False, &pItem )) 867 pItem = 0; 868 869 switch( nSlot ) 870 { 871 case SID_ATTR_GRAF_RED: 872 { 873 if( pItem ) 874 { 875 aSet.Put( SdrGrafRedItem( ((SfxInt16Item*)pItem)->GetValue() )); 876 if( bUndo ) 877 aUndoStr.Append( String( SVX_RESSTR( RID_SVXSTR_UNDO_GRAFRED ) ) ); 878 } 879 } 880 break; 881 882 case SID_ATTR_GRAF_GREEN: 883 { 884 if( pItem ) 885 { 886 aSet.Put( SdrGrafGreenItem( ((SfxInt16Item*)pItem)->GetValue() )); 887 if( bUndo ) 888 aUndoStr.Append( String( SVX_RESSTR( RID_SVXSTR_UNDO_GRAFGREEN ) ) ); 889 } 890 } 891 break; 892 893 case SID_ATTR_GRAF_BLUE: 894 { 895 if( pItem ) 896 { 897 aSet.Put( SdrGrafBlueItem( ((SfxInt16Item*)pItem)->GetValue() )); 898 if( bUndo ) 899 aUndoStr.Append( String( SVX_RESSTR( RID_SVXSTR_UNDO_GRAFBLUE ) ) ); 900 } 901 } 902 break; 903 904 case SID_ATTR_GRAF_LUMINANCE: 905 { 906 if( pItem ) 907 { 908 aSet.Put( SdrGrafLuminanceItem( ((SfxInt16Item*)pItem)->GetValue() )); 909 if( bUndo ) 910 aUndoStr.Append( String( SVX_RESSTR( RID_SVXSTR_UNDO_GRAFLUMINANCE ) ) ); 911 } 912 } 913 break; 914 915 case SID_ATTR_GRAF_CONTRAST: 916 { 917 if( pItem ) 918 { 919 aSet.Put( SdrGrafContrastItem( ((SfxInt16Item*)pItem)->GetValue() )); 920 if( bUndo ) 921 aUndoStr.Append( String( SVX_RESSTR( RID_SVXSTR_UNDO_GRAFCONTRAST ) ) ); 922 } 923 } 924 break; 925 926 case SID_ATTR_GRAF_GAMMA: 927 { 928 if( pItem ) 929 { 930 aSet.Put( SdrGrafGamma100Item( ((SfxUInt32Item*)pItem)->GetValue() )); 931 if( bUndo ) 932 aUndoStr.Append( String( SVX_RESSTR( RID_SVXSTR_UNDO_GRAFGAMMA ) ) ); 933 } 934 } 935 break; 936 937 case SID_ATTR_GRAF_TRANSPARENCE: 938 { 939 if( pItem ) 940 { 941 aSet.Put( SdrGrafTransparenceItem( ((SfxUInt16Item*)pItem)->GetValue() )); 942 if( bUndo ) 943 aUndoStr.Append( String( SVX_RESSTR( RID_SVXSTR_UNDO_GRAFTRANSPARENCY ) ) ); 944 } 945 } 946 break; 947 948 case SID_ATTR_GRAF_MODE: 949 { 950 if( pItem ) 951 { 952 aSet.Put( SdrGrafModeItem( (GraphicDrawMode) ((SfxUInt16Item*)pItem)->GetValue() )); 953 if( bUndo ) 954 aUndoStr.Append( String( SVX_RESSTR( RID_SVXSTR_UNDO_GRAFMODE ) ) ); 955 } 956 } 957 break; 958 959 case( SID_ATTR_GRAF_CROP ): 960 { 961 const SdrMarkList& rMarkList = rView.GetMarkedObjectList(); 962 963 if( 0 < rMarkList.GetMarkCount() ) 964 { 965 SdrGrafObj* pObj = (SdrGrafObj*) rMarkList.GetMark( 0 )->GetMarkedSdrObj(); 966 967 if( pObj && pObj->ISA( SdrGrafObj ) && 968 ( pObj->GetGraphicType() != GRAPHIC_NONE ) && 969 ( pObj->GetGraphicType() != GRAPHIC_DEFAULT ) ) 970 { 971 SfxItemSet aGrfAttr( rPool, SDRATTR_GRAFCROP, SDRATTR_GRAFCROP, 0 ); 972 const SfxMapUnit eOldMetric = rPool.GetMetric( 0 ); 973 const MapMode aMap100( MAP_100TH_MM ); 974 const MapMode aMapTwip( MAP_TWIP ); 975 976 aGrfAttr.Put(pObj->GetMergedItemSet()); 977 rPool.SetDefaultMetric( SFX_MAPUNIT_TWIP ); 978 979 SfxItemSet aCropDlgAttr( rPool, 980 SDRATTR_GRAFCROP, SDRATTR_GRAFCROP, 981 SID_ATTR_GRAF_GRAPHIC, SID_ATTR_GRAF_GRAPHIC, 982 SID_ATTR_PAGE_SIZE, SID_ATTR_PAGE_SIZE, 983 SID_ATTR_GRAF_FRMSIZE, SID_ATTR_GRAF_FRMSIZE, 984 SID_ATTR_GRAF_CROP, SID_ATTR_GRAF_CROP, 0 ); 985 986 aCropDlgAttr.Put( SvxBrushItem( pObj->GetGraphic(), GPOS_MM, SID_ATTR_GRAF_GRAPHIC ) ); 987 aCropDlgAttr.Put( SvxSizeItem( SID_ATTR_PAGE_SIZE, 988 Size( OutputDevice::LogicToLogic( 989 Size( 200000, 200000 ), aMap100, aMapTwip ) ) ) ); 990 aCropDlgAttr.Put( SvxSizeItem( SID_ATTR_GRAF_FRMSIZE, OutputDevice::LogicToLogic( 991 pObj->GetLogicRect().GetSize(), aMap100, aMapTwip ) ) ); 992 993 const SdrGrafCropItem& rCrop = (const SdrGrafCropItem&) aGrfAttr.Get( SDRATTR_GRAFCROP ); 994 Size aLTSize( OutputDevice::LogicToLogic( 995 Size( rCrop.GetLeft(), rCrop.GetTop() ), aMap100, aMapTwip ) ); 996 Size aRBSize( OutputDevice::LogicToLogic( 997 Size( rCrop.GetRight(), rCrop.GetBottom() ), aMap100, aMapTwip ) ); 998 999 aCropDlgAttr.Put( SdrGrafCropItem( aLTSize.Width(), aLTSize.Height(), 1000 aRBSize.Width(), aRBSize.Height() ) ); 1001 1002 SfxSingleTabDialog aCropDialog( SfxViewShell::Current() ? SfxViewShell::Current()->GetWindow() : NULL, 1003 aCropDlgAttr, 950 ); 1004 const String aCropStr = SVX_RESSTR( RID_SVXSTR_GRAFCROP ); 1005 //CHINA001 SfxTabPage* pTabPage = SvxGrfCropPage::Create( &aCropDialog, aCropDlgAttr ); 1006 SfxAbstractDialogFactory* pFact = SfxAbstractDialogFactory::Create(); 1007 DBG_ASSERT(pFact, "Dialogdiet error!");//CHINA001 1008 ::CreateTabPage fnCreatePage = pFact->GetTabPageCreatorFunc( RID_SVXPAGE_GRFCROP ); 1009 DBG_ASSERT(fnCreatePage, "Dialogdiet error!");//CHINA001 1010 SfxTabPage* pTabPage = (*fnCreatePage)( &aCropDialog, aCropDlgAttr ); 1011 //CHINA001 end 1012 pTabPage->SetText( aCropStr ); 1013 aCropDialog.SetTabPage( pTabPage ); 1014 1015 if( aCropDialog.Execute() == RET_OK ) 1016 { 1017 const SfxItemSet* pOutAttr = aCropDialog.GetOutputItemSet(); 1018 1019 if( pOutAttr ) 1020 { 1021 aUndoStr.Append( String( SVX_RESSTR( RID_SVXSTR_UNDO_GRAFCROP ) ) ); 1022 1023 // set crop attributes 1024 if( SFX_ITEM_SET <= pOutAttr->GetItemState( SDRATTR_GRAFCROP ) ) 1025 { 1026 const SdrGrafCropItem& rNewCrop = (const SdrGrafCropItem&) pOutAttr->Get( SDRATTR_GRAFCROP ); 1027 1028 aLTSize = OutputDevice::LogicToLogic( Size( rNewCrop.GetLeft(), rNewCrop.GetTop() ), aMapTwip, aMap100 ); 1029 aRBSize = OutputDevice::LogicToLogic( Size( rNewCrop.GetRight(), rNewCrop.GetBottom() ), aMapTwip, aMap100 ); 1030 aSet.Put( SdrGrafCropItem( aLTSize.Width(), aLTSize.Height(), aRBSize.Width(), aRBSize.Height() ) ); 1031 } 1032 1033 // set new logic rect 1034 if( SFX_ITEM_SET <= pOutAttr->GetItemState( SID_ATTR_GRAF_FRMSIZE ) ) 1035 { 1036 Point aNewOrigin( pObj->GetLogicRect().TopLeft() ); 1037 const Size& rGrfSize = ( (const SvxSizeItem&) pOutAttr->Get( SID_ATTR_GRAF_FRMSIZE ) ).GetSize(); 1038 Size aNewGrfSize( OutputDevice::LogicToLogic( rGrfSize, aMapTwip, aMap100 ) ); 1039 Size aOldGrfSize( pObj->GetLogicRect().GetSize() ); 1040 1041 Rectangle aNewRect( aNewOrigin, aNewGrfSize ); 1042 Point aOffset( (aNewGrfSize.Width() - aOldGrfSize.Width()) >> 1, 1043 (aNewGrfSize.Height() - aOldGrfSize.Height()) >> 1 ); 1044 1045 // #106181# rotate snap rect before setting it 1046 const GeoStat& aGeo = pObj->GetGeoStat(); 1047 1048 if (aGeo.nDrehWink!=0 || aGeo.nShearWink!=0) 1049 { 1050 Polygon aPol(aNewRect); 1051 1052 // also transform origin offset 1053 if (aGeo.nShearWink!=0) 1054 { 1055 ShearPoly(aPol, 1056 aNewRect.TopLeft(), 1057 aGeo.nTan); 1058 ShearPoint(aOffset, Point(0,0), aGeo.nTan); 1059 } 1060 if (aGeo.nDrehWink!=0) 1061 { 1062 RotatePoly(aPol, 1063 aNewRect.TopLeft(), 1064 aGeo.nSin,aGeo.nCos); 1065 RotatePoint(aOffset, Point(0,0), aGeo.nSin,aGeo.nCos); 1066 } 1067 1068 // apply offset 1069 aPol.Move( -aOffset.X(), -aOffset.Y() ); 1070 aNewRect=aPol.GetBoundRect(); 1071 } 1072 else 1073 { 1074 aNewRect.Move( -aOffset.X(), -aOffset.Y() ); 1075 } 1076 1077 if( !aSet.Count() ) 1078 rView.SetMarkedObjRect( aNewRect ); 1079 else 1080 { 1081 if( bUndo ) 1082 { 1083 rView.BegUndo( aUndoStr ); 1084 rView.AddUndo( rView.GetModel()->GetSdrUndoFactory().CreateUndoGeoObject( *pObj ) ); 1085 } 1086 pObj->SetSnapRect( aNewRect ); 1087 rView.SetAttributes( aSet ); 1088 1089 if( bUndo ) 1090 rView.EndUndo(); 1091 aSet.ClearItem(); 1092 } 1093 } 1094 } 1095 } 1096 1097 rPool.SetDefaultMetric( eOldMetric ); 1098 } 1099 } 1100 } 1101 break; 1102 1103 case SID_COLOR_SETTINGS: 1104 { 1105 svx::ToolboxAccess aToolboxAccess( TOOLBOX_NAME ); 1106 aToolboxAccess.toggleToolbox(); 1107 rReq.Done(); 1108 break; 1109 } 1110 1111 default: 1112 break; 1113 } 1114 1115 if( aSet.Count() ) 1116 { 1117 if( bUndo ) 1118 rView.BegUndo( aUndoStr ); 1119 1120 rView.SetAttributes( aSet ); 1121 1122 if( bUndo ) 1123 rView.EndUndo(); 1124 } 1125 } 1126 1127 // ----------------------------------------------------------------------------- 1128 1129 void SvxGrafAttrHelper::GetGrafAttrState( SfxItemSet& rSet, SdrView& rView ) 1130 { 1131 SfxItemPool& rPool = rView.GetModel()->GetItemPool(); 1132 SfxItemSet aAttrSet( rPool ); 1133 SfxWhichIter aIter( rSet ); 1134 sal_uInt16 nWhich = aIter.FirstWhich(); 1135 const SdrMarkList& rMarkList = rView.GetMarkedObjectList(); 1136 bool bEnableColors = true; 1137 bool bEnableTransparency = true; 1138 bool bEnableCrop = ( 1 == rMarkList.GetMarkCount() ); 1139 1140 for( int i = 0, nCount = rMarkList.GetMarkCount(); i < nCount; ++i ) 1141 { 1142 SdrGrafObj* pGrafObj = dynamic_cast< SdrGrafObj* >( rMarkList.GetMark( i )->GetMarkedSdrObj() ); 1143 1144 if( !pGrafObj || 1145 ( pGrafObj->GetGraphicType() == GRAPHIC_NONE ) || 1146 ( pGrafObj->GetGraphicType() == GRAPHIC_DEFAULT )) 1147 { 1148 bEnableColors = bEnableTransparency = bEnableCrop = false; 1149 break; 1150 } 1151 else if( bEnableTransparency && ( pGrafObj->HasGDIMetaFile() || pGrafObj->IsAnimated() ) ) 1152 { 1153 bEnableTransparency = false; 1154 } 1155 } 1156 1157 rView.GetAttributes( aAttrSet ); 1158 1159 while( nWhich ) 1160 { 1161 sal_uInt16 nSlotId = SfxItemPool::IsWhich( nWhich ) ? rPool.GetSlotId( nWhich ) : nWhich; 1162 1163 switch( nSlotId ) 1164 { 1165 case( SID_ATTR_GRAF_MODE ): 1166 { 1167 if( SFX_ITEM_AVAILABLE <= aAttrSet.GetItemState( SDRATTR_GRAFMODE ) ) 1168 { 1169 if( bEnableColors ) 1170 { 1171 rSet.Put( SfxUInt16Item( nSlotId, 1172 sal::static_int_cast< sal_uInt16 >( ITEMVALUE( aAttrSet, SDRATTR_GRAFMODE, SdrGrafModeItem ) ) ) ); 1173 } 1174 else 1175 { 1176 rSet.DisableItem( SID_ATTR_GRAF_MODE ); 1177 } 1178 } 1179 } 1180 break; 1181 1182 case( SID_ATTR_GRAF_RED ): 1183 { 1184 if( SFX_ITEM_AVAILABLE <= aAttrSet.GetItemState( SDRATTR_GRAFRED ) ) 1185 { 1186 if( bEnableColors ) 1187 { 1188 rSet.Put( SfxInt16Item( nSlotId, 1189 ITEMVALUE( aAttrSet, SDRATTR_GRAFRED, SdrGrafRedItem ) ) ); 1190 } 1191 else 1192 { 1193 rSet.DisableItem( SID_ATTR_GRAF_RED ); 1194 } 1195 } 1196 } 1197 break; 1198 1199 case( SID_ATTR_GRAF_GREEN ): 1200 { 1201 if( SFX_ITEM_AVAILABLE <= aAttrSet.GetItemState( SDRATTR_GRAFGREEN ) ) 1202 { 1203 if( bEnableColors ) 1204 { 1205 rSet.Put( SfxInt16Item( nSlotId, 1206 ITEMVALUE( aAttrSet, SDRATTR_GRAFGREEN, SdrGrafGreenItem ) ) ); 1207 } 1208 else 1209 { 1210 rSet.DisableItem( SID_ATTR_GRAF_GREEN ); 1211 } 1212 } 1213 } 1214 break; 1215 1216 case( SID_ATTR_GRAF_BLUE ): 1217 { 1218 if( SFX_ITEM_AVAILABLE <= aAttrSet.GetItemState( SDRATTR_GRAFBLUE ) ) 1219 { 1220 if( bEnableColors ) 1221 { 1222 rSet.Put( SfxInt16Item( nSlotId, 1223 ITEMVALUE( aAttrSet, SDRATTR_GRAFBLUE, SdrGrafBlueItem ) ) ); 1224 } 1225 else 1226 { 1227 rSet.DisableItem( SID_ATTR_GRAF_BLUE ); 1228 } 1229 } 1230 } 1231 break; 1232 1233 case( SID_ATTR_GRAF_LUMINANCE ): 1234 { 1235 if( SFX_ITEM_AVAILABLE <= aAttrSet.GetItemState( SDRATTR_GRAFLUMINANCE ) ) 1236 { 1237 if( bEnableColors ) 1238 { 1239 rSet.Put( SfxInt16Item( nSlotId, 1240 ITEMVALUE( aAttrSet, SDRATTR_GRAFLUMINANCE, SdrGrafLuminanceItem ) ) ); 1241 } 1242 else 1243 { 1244 rSet.DisableItem( SID_ATTR_GRAF_LUMINANCE ); 1245 } 1246 } 1247 } 1248 break; 1249 1250 case( SID_ATTR_GRAF_CONTRAST ): 1251 { 1252 if( SFX_ITEM_AVAILABLE <= aAttrSet.GetItemState( SDRATTR_GRAFCONTRAST ) ) 1253 { 1254 if( bEnableColors ) 1255 { 1256 rSet.Put( SfxInt16Item( nSlotId, 1257 ITEMVALUE( aAttrSet, SDRATTR_GRAFCONTRAST, SdrGrafContrastItem ) ) ); 1258 } 1259 else 1260 { 1261 rSet.DisableItem( SID_ATTR_GRAF_CONTRAST ); 1262 } 1263 } 1264 } 1265 break; 1266 1267 case( SID_ATTR_GRAF_GAMMA ): 1268 { 1269 if( SFX_ITEM_AVAILABLE <= aAttrSet.GetItemState( SDRATTR_GRAFGAMMA ) ) 1270 { 1271 if( bEnableColors ) 1272 { 1273 rSet.Put( SfxUInt32Item( nSlotId, 1274 ITEMVALUE( aAttrSet, SDRATTR_GRAFGAMMA, SdrGrafGamma100Item ) ) ); 1275 } 1276 else 1277 { 1278 rSet.DisableItem( SID_ATTR_GRAF_GAMMA ); 1279 } 1280 } 1281 } 1282 break; 1283 1284 case( SID_ATTR_GRAF_TRANSPARENCE ): 1285 { 1286 if( SFX_ITEM_AVAILABLE <= aAttrSet.GetItemState( SDRATTR_GRAFTRANSPARENCE ) ) 1287 { 1288 if( bEnableTransparency ) 1289 { 1290 rSet.Put( SfxUInt16Item( nSlotId, 1291 ITEMVALUE( aAttrSet, SDRATTR_GRAFTRANSPARENCE, SdrGrafTransparenceItem ) ) ); 1292 } 1293 else 1294 { 1295 rSet.DisableItem( SID_ATTR_GRAF_TRANSPARENCE ); 1296 } 1297 } 1298 } 1299 break; 1300 1301 case( SID_ATTR_GRAF_CROP ): 1302 { 1303 if( !bEnableCrop ) 1304 rSet.DisableItem( nSlotId ); 1305 } 1306 break; 1307 1308 case SID_COLOR_SETTINGS : 1309 { 1310 svx::ToolboxAccess aToolboxAccess( TOOLBOX_NAME ); 1311 rSet.Put( SfxBoolItem( nWhich, aToolboxAccess.isToolboxVisible() ) ); 1312 break; 1313 } 1314 1315 default: 1316 break; 1317 } 1318 1319 nWhich = aIter.NextWhich(); 1320 } 1321 } 1322 1323 /* vim: set noet sw=4 ts=4: */ 1324