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