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