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
TbxImageItem(sal_uInt16 _nWhich,sal_uInt16 nImage)89 TbxImageItem::TbxImageItem( sal_uInt16 _nWhich, sal_uInt16 nImage ) :
90 SfxUInt16Item( _nWhich, nImage )
91 {
92 }
93
94 //---------------------------------------------------------
95
Clone(SfxItemPool *) const96 SfxPoolItem* TbxImageItem::Clone( SfxItemPool* ) const
97 {
98 return new TbxImageItem( *this );
99 }
100
101 //---------------------------------------------------------
102
operator ==(const SfxPoolItem & rItem) const103 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 );
GetCommand() const133 const OUString& GetCommand() const { return maCommand; }
134 };
135
136 // -----------------------------------------------------------------------------
137
ImplGrafMetricField(Window * pParent,const rtl::OUString & rCmd,const Reference<XFrame> & rFrame)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
~ImplGrafMetricField()179 ImplGrafMetricField::~ImplGrafMetricField()
180 {
181 }
182
183 // -----------------------------------------------------------------------------
184
Modify()185 void ImplGrafMetricField::Modify()
186 {
187 maTimer.Start();
188 }
189
190 // -----------------------------------------------------------------------------
191
IMPL_LINK(ImplGrafMetricField,ImplModifyHdl,Timer *,EMPTYARG)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
Update(const SfxPoolItem * pItem)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
ImplGetRID(const OUString & aCommand,bool bHighContrast)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
Update(const SfxPoolItem * pItem)307 void Update( const SfxPoolItem* pItem ) { maField.Update( pItem ); }
SetText(const String & rStr)308 void SetText( const String& rStr ) { maField.SetText( rStr ); }
309 };
310
311 // -----------------------------------------------------------------------------
312
ImplGrafControl(Window * pParent,sal_uInt16,const rtl::OUString & rCmd,const Reference<XFrame> & rFrame)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
~ImplGrafControl()356 ImplGrafControl::~ImplGrafControl()
357 {
358 }
359
360 // -----------------------------------------------------------------------------
361
GetFocus()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
ImplGrafModeControl(Window * pParent,const Reference<XFrame> & rFrame)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
~ImplGrafModeControl()410 ImplGrafModeControl::~ImplGrafModeControl()
411 {
412 }
413
414 // -----------------------------------------------------------------------
415
Select()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
PreNotify(NotifyEvent & rNEvt)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
Notify(NotifyEvent & rNEvt)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
ImplReleaseFocus()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
Update(const SfxPoolItem * pItem)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
SvxGrafFilterToolBoxControl(sal_uInt16 nSlotId,sal_uInt16 nId,ToolBox & rTbx)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
~SvxGrafFilterToolBoxControl()623 SvxGrafFilterToolBoxControl::~SvxGrafFilterToolBoxControl()
624 {
625 }
626
627 // -----------------------------------------------------------------------------
628
StateChanged(sal_uInt16,SfxItemState eState,const SfxPoolItem *)629 void SvxGrafFilterToolBoxControl::StateChanged( sal_uInt16, SfxItemState eState, const SfxPoolItem* )
630 {
631 GetToolBox().EnableItem( GetId(), ( eState != SFX_ITEM_DISABLED ) );
632 }
633
634 // -----------------------------------------------------------------------------
635
GetPopupWindowType() const636 SfxPopupWindowType SvxGrafFilterToolBoxControl::GetPopupWindowType() const
637 {
638 return SFX_POPUPWINDOW_ONCLICK;
639 }
640
641 // -----------------------------------------------------------------------------
642
CreatePopupWindow()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
SvxGrafToolBoxControl(sal_uInt16 nSlotId,sal_uInt16 nId,ToolBox & rTbx)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
~SvxGrafToolBoxControl()669 SvxGrafToolBoxControl::~SvxGrafToolBoxControl()
670 {
671 }
672
673 // -----------------------------------------------------------------------------
674
StateChanged(sal_uInt16,SfxItemState eState,const SfxPoolItem * pState)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
CreateItemWindow(Window * pParent)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
SvxGrafRedToolBoxControl(sal_uInt16 nSlotId,sal_uInt16 nId,ToolBox & rTbx)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
SvxGrafGreenToolBoxControl(sal_uInt16 nSlotId,sal_uInt16 nId,ToolBox & rTbx)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
SvxGrafBlueToolBoxControl(sal_uInt16 nSlotId,sal_uInt16 nId,ToolBox & rTbx)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
SvxGrafLuminanceToolBoxControl(sal_uInt16 nSlotId,sal_uInt16 nId,ToolBox & rTbx)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
SvxGrafContrastToolBoxControl(sal_uInt16 nSlotId,sal_uInt16 nId,ToolBox & rTbx)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
SvxGrafGammaToolBoxControl(sal_uInt16 nSlotId,sal_uInt16 nId,ToolBox & rTbx)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
SvxGrafTransparenceToolBoxControl(sal_uInt16 nSlotId,sal_uInt16 nId,ToolBox & rTbx)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
SvxGrafModeToolBoxControl(sal_uInt16 nSlotId,sal_uInt16 nId,ToolBox & rTbx)803 SvxGrafModeToolBoxControl::SvxGrafModeToolBoxControl( sal_uInt16 nSlotId, sal_uInt16 nId, ToolBox& rTbx ) :
804 SfxToolBoxControl( nSlotId, nId, rTbx )
805 {
806 }
807
808 // -----------------------------------------------------------------------------
809
~SvxGrafModeToolBoxControl()810 SvxGrafModeToolBoxControl::~SvxGrafModeToolBoxControl()
811 {
812 }
813
814 // -----------------------------------------------------------------------------
815
StateChanged(sal_uInt16,SfxItemState eState,const SfxPoolItem * pState)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
CreateItemWindow(Window * pParent)840 Window* SvxGrafModeToolBoxControl::CreateItemWindow( Window *pParent )
841 {
842 return( new ImplGrafModeControl( pParent, m_xFrame ) );
843 }
844
845 // ---------------------
846 // - SvxGrafAttrHelper -
847 // ---------------------
848
ExecuteGrafAttr(SfxRequest & rReq,SdrView & rView)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
GetGrafAttrState(SfxItemSet & rSet,SdrView & rView)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