1*f6e50924SAndrew Rist /************************************************************** 2cdf0e10cSrcweir * 3*f6e50924SAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 4*f6e50924SAndrew Rist * or more contributor license agreements. See the NOTICE file 5*f6e50924SAndrew Rist * distributed with this work for additional information 6*f6e50924SAndrew Rist * regarding copyright ownership. The ASF licenses this file 7*f6e50924SAndrew Rist * to you under the Apache License, Version 2.0 (the 8*f6e50924SAndrew Rist * "License"); you may not use this file except in compliance 9*f6e50924SAndrew Rist * with the License. You may obtain a copy of the License at 10cdf0e10cSrcweir * 11*f6e50924SAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12cdf0e10cSrcweir * 13*f6e50924SAndrew Rist * Unless required by applicable law or agreed to in writing, 14*f6e50924SAndrew Rist * software distributed under the License is distributed on an 15*f6e50924SAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*f6e50924SAndrew Rist * KIND, either express or implied. See the License for the 17*f6e50924SAndrew Rist * specific language governing permissions and limitations 18*f6e50924SAndrew Rist * under the License. 19cdf0e10cSrcweir * 20*f6e50924SAndrew Rist *************************************************************/ 21*f6e50924SAndrew Rist 22*f6e50924SAndrew Rist 23cdf0e10cSrcweir 24cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove 25cdf0e10cSrcweir #include "precompiled_svx.hxx" 26cdf0e10cSrcweir #include <vcl/wrkwin.hxx> 27cdf0e10cSrcweir #include <sot/factory.hxx> 28cdf0e10cSrcweir #include <tools/shl.hxx> 29cdf0e10cSrcweir #include <vcl/salbtype.hxx> // FRound 30cdf0e10cSrcweir #include <vcl/msgbox.hxx> 31cdf0e10cSrcweir #include <svl/eitem.hxx> 32cdf0e10cSrcweir #include <sfx2/dispatch.hxx> 33cdf0e10cSrcweir #include <sfx2/viewfrm.hxx> 34cdf0e10cSrcweir #include <svtools/miscopt.hxx> 35cdf0e10cSrcweir #include <unotools/localedatawrapper.hxx> 36cdf0e10cSrcweir #ifndef _UNOTOOLS_PROCESSFACTORY_HXX 37cdf0e10cSrcweir #include <comphelper/processfactory.hxx> 38cdf0e10cSrcweir #endif 39cdf0e10cSrcweir 40cdf0e10cSrcweir #define _SDR_NOITEMS 41cdf0e10cSrcweir #define _SDR_NOTOUCH 42cdf0e10cSrcweir #define _SDR_NOTRANSFORM 43cdf0e10cSrcweir #define _SDR_NOOBJECTS 44cdf0e10cSrcweir #define _SDR_NOVIEWMARKER 45cdf0e10cSrcweir #define _SDR_NODRAGMETHODS 46cdf0e10cSrcweir #define _SDR_NOUNDO 47cdf0e10cSrcweir #define _SDR_NOXOUTDEV 48cdf0e10cSrcweir #define _XOUTBMP_STATICS_ONLY 49cdf0e10cSrcweir 50cdf0e10cSrcweir #include <svx/dialmgr.hxx> 51cdf0e10cSrcweir #include "svx/xoutbmp.hxx" 52cdf0e10cSrcweir #include <svx/dialogs.hrc> 53cdf0e10cSrcweir #include <svx/svxids.hrc> 54cdf0e10cSrcweir #include <svx/contdlg.hxx> 55cdf0e10cSrcweir #include "contimp.hxx" 56cdf0e10cSrcweir #include "contdlg.hrc" 57cdf0e10cSrcweir #include "contwnd.hxx" 58cdf0e10cSrcweir #include <svx/svdtrans.hxx> 59cdf0e10cSrcweir #include <svx/svdopath.hxx> 60cdf0e10cSrcweir #include "svx/dlgutil.hxx" 61cdf0e10cSrcweir #include <vcl/svapp.hxx> 62cdf0e10cSrcweir 63cdf0e10cSrcweir /******************************************************************************/ 64cdf0e10cSrcweir 65cdf0e10cSrcweir inline String GetUnitString( long nVal_100, FieldUnit eFieldUnit, sal_Unicode cSep ) 66cdf0e10cSrcweir { 67cdf0e10cSrcweir String aVal = UniString::CreateFromInt64( MetricField::ConvertValue( nVal_100, 2, MAP_100TH_MM, eFieldUnit ) ); 68cdf0e10cSrcweir 69cdf0e10cSrcweir while( aVal.Len() < 3 ) 70cdf0e10cSrcweir aVal.Insert( sal_Unicode('0'), 0 ); 71cdf0e10cSrcweir 72cdf0e10cSrcweir aVal.Insert( cSep, aVal.Len() - 2 ); 73cdf0e10cSrcweir aVal += sal_Unicode(' '); 74cdf0e10cSrcweir aVal += SdrFormatter::GetUnitStr( eFieldUnit ); 75cdf0e10cSrcweir 76cdf0e10cSrcweir return aVal; 77cdf0e10cSrcweir } 78cdf0e10cSrcweir 79cdf0e10cSrcweir 80cdf0e10cSrcweir /******************************************************************************/ 81cdf0e10cSrcweir 82cdf0e10cSrcweir 83cdf0e10cSrcweir SFX_IMPL_FLOATINGWINDOW( SvxContourDlgChildWindow, SID_CONTOUR_DLG ); 84cdf0e10cSrcweir 85cdf0e10cSrcweir 86cdf0e10cSrcweir /******************************************************************************/ 87cdf0e10cSrcweir 88cdf0e10cSrcweir 89cdf0e10cSrcweir /************************************************************************* 90cdf0e10cSrcweir |* 91cdf0e10cSrcweir |* ControllerItem 92cdf0e10cSrcweir |* 93cdf0e10cSrcweir \************************************************************************/ 94cdf0e10cSrcweir 95cdf0e10cSrcweir SvxContourDlgItem::SvxContourDlgItem( sal_uInt16 _nId, SvxSuperContourDlg& rContourDlg, SfxBindings& rBindings ) : 96cdf0e10cSrcweir SfxControllerItem ( _nId, rBindings ), 97cdf0e10cSrcweir rDlg ( rContourDlg ) 98cdf0e10cSrcweir { 99cdf0e10cSrcweir } 100cdf0e10cSrcweir 101cdf0e10cSrcweir 102cdf0e10cSrcweir /************************************************************************* 103cdf0e10cSrcweir |* 104cdf0e10cSrcweir |* 105cdf0e10cSrcweir |* 106cdf0e10cSrcweir \************************************************************************/ 107cdf0e10cSrcweir 108cdf0e10cSrcweir void SvxContourDlgItem::StateChanged( sal_uInt16 nSID, SfxItemState /*eState*/, const SfxPoolItem* pItem ) 109cdf0e10cSrcweir { 110cdf0e10cSrcweir if ( pItem && ( SID_CONTOUR_EXEC == nSID ) ) 111cdf0e10cSrcweir { 112cdf0e10cSrcweir const SfxBoolItem* pStateItem = PTR_CAST( SfxBoolItem, pItem ); 113cdf0e10cSrcweir 114cdf0e10cSrcweir DBG_ASSERT( pStateItem || pItem == 0, "SfxBoolItem erwartet"); 115cdf0e10cSrcweir 116cdf0e10cSrcweir rDlg.SetExecState( !pStateItem->GetValue() ); 117cdf0e10cSrcweir } 118cdf0e10cSrcweir } 119cdf0e10cSrcweir 120cdf0e10cSrcweir 121cdf0e10cSrcweir /******************************************************************************/ 122cdf0e10cSrcweir 123cdf0e10cSrcweir 124cdf0e10cSrcweir /************************************************************************* 125cdf0e10cSrcweir |* 126cdf0e10cSrcweir |* Contour-Float 127cdf0e10cSrcweir |* 128cdf0e10cSrcweir \************************************************************************/ 129cdf0e10cSrcweir 130cdf0e10cSrcweir SvxContourDlgChildWindow::SvxContourDlgChildWindow( Window* _pParent, sal_uInt16 nId, 131cdf0e10cSrcweir SfxBindings* pBindings, SfxChildWinInfo* pInfo ) : 132cdf0e10cSrcweir SfxChildWindow( _pParent, nId ) 133cdf0e10cSrcweir { 134cdf0e10cSrcweir SvxSuperContourDlg* pDlg = new SvxSuperContourDlg( pBindings, this, _pParent, CONT_RESID( RID_SVXDLG_CONTOUR ) ); 135cdf0e10cSrcweir pWindow = pDlg; 136cdf0e10cSrcweir 137cdf0e10cSrcweir if ( pInfo->nFlags & SFX_CHILDWIN_ZOOMIN ) 138cdf0e10cSrcweir pDlg->RollUp(); 139cdf0e10cSrcweir 140cdf0e10cSrcweir eChildAlignment = SFX_ALIGN_NOALIGNMENT; 141cdf0e10cSrcweir 142cdf0e10cSrcweir pDlg->Initialize( pInfo ); 143cdf0e10cSrcweir } 144cdf0e10cSrcweir 145cdf0e10cSrcweir /************************************************************************* 146cdf0e10cSrcweir |* 147cdf0e10cSrcweir |* 148cdf0e10cSrcweir |* 149cdf0e10cSrcweir \************************************************************************/ 150cdf0e10cSrcweir 151cdf0e10cSrcweir void SvxContourDlgChildWindow::UpdateContourDlg( const Graphic& rGraphic, sal_Bool bGraphicLinked, 152cdf0e10cSrcweir const PolyPolygon* pPolyPoly, void* pEditingObj ) 153cdf0e10cSrcweir { 154cdf0e10cSrcweir if ( SfxViewFrame::Current() && 155cdf0e10cSrcweir SfxViewFrame::Current()->HasChildWindow( SvxContourDlgChildWindow::GetChildWindowId() ) ) 156cdf0e10cSrcweir SVXCONTOURDLG()->Update( rGraphic, bGraphicLinked, pPolyPoly, pEditingObj ); 157cdf0e10cSrcweir } 158cdf0e10cSrcweir 159cdf0e10cSrcweir /************************************************************************* 160cdf0e10cSrcweir |* 161cdf0e10cSrcweir |* 162cdf0e10cSrcweir |* 163cdf0e10cSrcweir \************************************************************************/ 164cdf0e10cSrcweir 165cdf0e10cSrcweir SvxContourDlg::SvxContourDlg( SfxBindings* _pBindings, SfxChildWindow* pCW, 166cdf0e10cSrcweir Window* _pParent, const ResId& rResId ) : 167cdf0e10cSrcweir 168cdf0e10cSrcweir SfxFloatingWindow ( _pBindings, pCW, _pParent, rResId ) 169cdf0e10cSrcweir 170cdf0e10cSrcweir { 171cdf0e10cSrcweir } 172cdf0e10cSrcweir 173cdf0e10cSrcweir /************************************************************************* 174cdf0e10cSrcweir |* 175cdf0e10cSrcweir |* 176cdf0e10cSrcweir |* 177cdf0e10cSrcweir \************************************************************************/ 178cdf0e10cSrcweir 179cdf0e10cSrcweir SvxContourDlg::~SvxContourDlg() 180cdf0e10cSrcweir { 181cdf0e10cSrcweir } 182cdf0e10cSrcweir 183cdf0e10cSrcweir /************************************************************************* 184cdf0e10cSrcweir |* 185cdf0e10cSrcweir |* 186cdf0e10cSrcweir |* 187cdf0e10cSrcweir \************************************************************************/ 188cdf0e10cSrcweir 189cdf0e10cSrcweir PolyPolygon SvxContourDlg::CreateAutoContour( const Graphic& rGraphic, 190cdf0e10cSrcweir const Rectangle* pRect, 191cdf0e10cSrcweir const sal_uIntPtr nFlags ) 192cdf0e10cSrcweir { 193cdf0e10cSrcweir Bitmap aBmp; 194cdf0e10cSrcweir sal_uIntPtr nContourFlags = XOUTBMP_CONTOUR_HORZ; 195cdf0e10cSrcweir 196cdf0e10cSrcweir if ( rGraphic.GetType() == GRAPHIC_BITMAP ) 197cdf0e10cSrcweir { 198cdf0e10cSrcweir if( rGraphic.IsAnimated() ) 199cdf0e10cSrcweir { 200cdf0e10cSrcweir VirtualDevice aVDev; 201cdf0e10cSrcweir MapMode aTransMap; 202cdf0e10cSrcweir PolyPolygon aAnimPolyPoly; 203cdf0e10cSrcweir const Animation aAnim( rGraphic.GetAnimation() ); 204cdf0e10cSrcweir const Size& rSizePix = aAnim.GetDisplaySizePixel(); 205cdf0e10cSrcweir const sal_uInt16 nCount = aAnim.Count(); 206cdf0e10cSrcweir 207cdf0e10cSrcweir if ( aVDev.SetOutputSizePixel( rSizePix ) ) 208cdf0e10cSrcweir { 209cdf0e10cSrcweir aVDev.SetLineColor( Color( COL_BLACK ) ); 210cdf0e10cSrcweir aVDev.SetFillColor( Color( COL_BLACK ) ); 211cdf0e10cSrcweir 212cdf0e10cSrcweir for( sal_uInt16 i = 0; i < nCount; i++ ) 213cdf0e10cSrcweir { 214cdf0e10cSrcweir const AnimationBitmap& rStepBmp = aAnim.Get( i ); 215cdf0e10cSrcweir 216cdf0e10cSrcweir // Polygonausgabe an die richtige Stelle schieben; 217cdf0e10cSrcweir // dies ist der Offset des Teilbildes innerhalb 218cdf0e10cSrcweir // der Gesamtanimation 219cdf0e10cSrcweir aTransMap.SetOrigin( Point( rStepBmp.aPosPix.X(), rStepBmp.aPosPix.Y() ) ); 220cdf0e10cSrcweir aVDev.SetMapMode( aTransMap ); 221cdf0e10cSrcweir aVDev.DrawPolyPolygon( CreateAutoContour( rStepBmp.aBmpEx, pRect, nFlags ) ); 222cdf0e10cSrcweir } 223cdf0e10cSrcweir 224cdf0e10cSrcweir aTransMap.SetOrigin( Point() ); 225cdf0e10cSrcweir aVDev.SetMapMode( aTransMap ); 226cdf0e10cSrcweir aBmp = aVDev.GetBitmap( Point(), rSizePix ); 227cdf0e10cSrcweir aBmp.Convert( BMP_CONVERSION_1BIT_THRESHOLD ); 228cdf0e10cSrcweir } 229cdf0e10cSrcweir } 230cdf0e10cSrcweir else if( rGraphic.IsTransparent() ) 231cdf0e10cSrcweir aBmp = rGraphic.GetBitmapEx().GetMask(); 232cdf0e10cSrcweir else 233cdf0e10cSrcweir { 234cdf0e10cSrcweir aBmp = rGraphic.GetBitmap(); 235cdf0e10cSrcweir nContourFlags |= XOUTBMP_CONTOUR_EDGEDETECT; 236cdf0e10cSrcweir } 237cdf0e10cSrcweir } 238cdf0e10cSrcweir else if( rGraphic.GetType() != GRAPHIC_NONE ) 239cdf0e10cSrcweir { 240cdf0e10cSrcweir const Graphic aTmpGrf( rGraphic.GetGDIMetaFile().GetMonochromeMtf( Color( COL_BLACK ) ) ); 241cdf0e10cSrcweir VirtualDevice aVDev; 242cdf0e10cSrcweir Size aSizePix( aVDev.LogicToPixel( aTmpGrf.GetPrefSize(), aTmpGrf.GetPrefMapMode() ) ); 243cdf0e10cSrcweir 244cdf0e10cSrcweir if( aSizePix.Width() && aSizePix.Height() && ( aSizePix.Width() > 512 || aSizePix.Height() > 512 ) ) 245cdf0e10cSrcweir { 246cdf0e10cSrcweir double fWH = (double) aSizePix.Width() / aSizePix.Height(); 247cdf0e10cSrcweir 248cdf0e10cSrcweir if( fWH <= 1.0 ) 249cdf0e10cSrcweir aSizePix.Width() = FRound( ( aSizePix.Height() = 512 ) * fWH ); 250cdf0e10cSrcweir else 251cdf0e10cSrcweir aSizePix.Height() = FRound( ( aSizePix.Width() = 512 ) / fWH ); 252cdf0e10cSrcweir } 253cdf0e10cSrcweir 254cdf0e10cSrcweir if( aVDev.SetOutputSizePixel( aSizePix ) ) 255cdf0e10cSrcweir { 256cdf0e10cSrcweir const Point aPt; 257cdf0e10cSrcweir aTmpGrf.Draw( &aVDev, aPt, aSizePix ); 258cdf0e10cSrcweir aBmp = aVDev.GetBitmap( aPt, aSizePix ); 259cdf0e10cSrcweir } 260cdf0e10cSrcweir 261cdf0e10cSrcweir nContourFlags |= XOUTBMP_CONTOUR_EDGEDETECT; 262cdf0e10cSrcweir } 263cdf0e10cSrcweir 264cdf0e10cSrcweir aBmp.SetPrefSize( rGraphic.GetPrefSize() ); 265cdf0e10cSrcweir aBmp.SetPrefMapMode( rGraphic.GetPrefMapMode() ); 266cdf0e10cSrcweir 267cdf0e10cSrcweir return PolyPolygon( XOutBitmap::GetCountour( aBmp, nContourFlags, 128, pRect ) ); 268cdf0e10cSrcweir } 269cdf0e10cSrcweir 270cdf0e10cSrcweir 271cdf0e10cSrcweir /************************************************************************* 272cdf0e10cSrcweir |* 273cdf0e10cSrcweir |* 274cdf0e10cSrcweir |* 275cdf0e10cSrcweir \************************************************************************/ 276cdf0e10cSrcweir 277cdf0e10cSrcweir void SvxContourDlg::ScaleContour( PolyPolygon& rContour, const Graphic& rGraphic, 278cdf0e10cSrcweir const MapUnit eUnit, const Size& rDisplaySize ) 279cdf0e10cSrcweir { 280cdf0e10cSrcweir DBG_ASSERT( rGraphic.GetType() != GRAPHIC_NONE, "Graphic is not valid!" ); 281cdf0e10cSrcweir 282cdf0e10cSrcweir OutputDevice* pOutDev = Application::GetDefaultDevice(); 283cdf0e10cSrcweir const MapMode aDispMap( eUnit ); 284cdf0e10cSrcweir const MapMode aGrfMap( rGraphic.GetPrefMapMode() ); 285cdf0e10cSrcweir const Size aGrfSize( rGraphic.GetPrefSize() ); 286cdf0e10cSrcweir double fScaleX; 287cdf0e10cSrcweir double fScaleY; 288cdf0e10cSrcweir Size aOrgSize; 289cdf0e10cSrcweir Point aNewPoint; 290cdf0e10cSrcweir sal_Bool bPixelMap = aGrfMap.GetMapUnit() == MAP_PIXEL; 291cdf0e10cSrcweir 292cdf0e10cSrcweir if ( bPixelMap ) 293cdf0e10cSrcweir aOrgSize = pOutDev->PixelToLogic( aGrfSize, aDispMap ); 294cdf0e10cSrcweir else 295cdf0e10cSrcweir aOrgSize = pOutDev->LogicToLogic( aGrfSize, aGrfMap, aDispMap ); 296cdf0e10cSrcweir 297cdf0e10cSrcweir if ( aOrgSize.Width() && aOrgSize.Height() ) 298cdf0e10cSrcweir { 299cdf0e10cSrcweir fScaleX = (double) rDisplaySize.Width() / aOrgSize.Width(); 300cdf0e10cSrcweir fScaleY = (double) rDisplaySize.Height() / aOrgSize.Height(); 301cdf0e10cSrcweir 302cdf0e10cSrcweir for ( sal_uInt16 j = 0, nPolyCount = rContour.Count(); j < nPolyCount; j++ ) 303cdf0e10cSrcweir { 304cdf0e10cSrcweir Polygon& rPoly = rContour[ j ]; 305cdf0e10cSrcweir 306cdf0e10cSrcweir for ( sal_uInt16 i = 0, nCount = rPoly.GetSize(); i < nCount; i++ ) 307cdf0e10cSrcweir { 308cdf0e10cSrcweir if ( bPixelMap ) 309cdf0e10cSrcweir aNewPoint = pOutDev->PixelToLogic( rPoly[ i ], aDispMap ); 310cdf0e10cSrcweir else 311cdf0e10cSrcweir aNewPoint = pOutDev->LogicToLogic( rPoly[ i ], aGrfMap, aDispMap ); 312cdf0e10cSrcweir 313cdf0e10cSrcweir rPoly[ i ] = Point( FRound( aNewPoint.X() * fScaleX ), FRound( aNewPoint.Y() * fScaleY ) ); 314cdf0e10cSrcweir } 315cdf0e10cSrcweir } 316cdf0e10cSrcweir } 317cdf0e10cSrcweir } 318cdf0e10cSrcweir 319cdf0e10cSrcweir 320cdf0e10cSrcweir /************************************************************************* 321cdf0e10cSrcweir |* 322cdf0e10cSrcweir |* Durchschleifen an SuperClass; keine virt. Methoden, um 323cdf0e10cSrcweir |* bei IF-Aenderungen nicht inkompatibel zu werden 324cdf0e10cSrcweir |* 325cdf0e10cSrcweir \************************************************************************/ 326cdf0e10cSrcweir 327cdf0e10cSrcweir void SvxContourDlg::SetExecState( sal_Bool bEnable ) 328cdf0e10cSrcweir { 329cdf0e10cSrcweir pSuperClass->SetExecState( bEnable ); 330cdf0e10cSrcweir } 331cdf0e10cSrcweir 332cdf0e10cSrcweir void SvxContourDlg::SetGraphic( const Graphic& rGraphic ) 333cdf0e10cSrcweir { 334cdf0e10cSrcweir pSuperClass->SetGraphic( rGraphic ); 335cdf0e10cSrcweir } 336cdf0e10cSrcweir 337cdf0e10cSrcweir void SvxContourDlg::SetGraphicLinked( sal_Bool bGraphicLinked ) 338cdf0e10cSrcweir { 339cdf0e10cSrcweir pSuperClass->SetGraphicLinked( bGraphicLinked ); 340cdf0e10cSrcweir } 341cdf0e10cSrcweir 342cdf0e10cSrcweir const Graphic& SvxContourDlg::GetGraphic() const 343cdf0e10cSrcweir { 344cdf0e10cSrcweir return pSuperClass->GetGraphic(); 345cdf0e10cSrcweir } 346cdf0e10cSrcweir 347cdf0e10cSrcweir sal_Bool SvxContourDlg::IsGraphicChanged() const 348cdf0e10cSrcweir { 349cdf0e10cSrcweir return pSuperClass->IsGraphicChanged(); 350cdf0e10cSrcweir } 351cdf0e10cSrcweir 352cdf0e10cSrcweir void SvxContourDlg::SetPolyPolygon( const PolyPolygon& rPolyPoly ) 353cdf0e10cSrcweir { 354cdf0e10cSrcweir pSuperClass->SetPolyPolygon( rPolyPoly ); 355cdf0e10cSrcweir } 356cdf0e10cSrcweir 357cdf0e10cSrcweir PolyPolygon SvxContourDlg::GetPolyPolygon() 358cdf0e10cSrcweir { 359cdf0e10cSrcweir return pSuperClass->GetPolyPolygon( sal_True ); 360cdf0e10cSrcweir } 361cdf0e10cSrcweir 362cdf0e10cSrcweir void SvxContourDlg::SetEditingObject( void* pObj ) 363cdf0e10cSrcweir { 364cdf0e10cSrcweir pSuperClass->SetEditingObject( pObj ); 365cdf0e10cSrcweir } 366cdf0e10cSrcweir 367cdf0e10cSrcweir const void* SvxContourDlg::GetEditingObject() const 368cdf0e10cSrcweir { 369cdf0e10cSrcweir return pSuperClass->GetEditingObject(); 370cdf0e10cSrcweir } 371cdf0e10cSrcweir 372cdf0e10cSrcweir void SvxContourDlg::Update( const Graphic& rGraphic, sal_Bool bGraphicLinked, 373cdf0e10cSrcweir const PolyPolygon* pPolyPoly, void* pEditingObj ) 374cdf0e10cSrcweir { 375cdf0e10cSrcweir pSuperClass->UpdateGraphic( rGraphic, bGraphicLinked, pPolyPoly, pEditingObj ); 376cdf0e10cSrcweir } 377cdf0e10cSrcweir 378cdf0e10cSrcweir 379cdf0e10cSrcweir /************************************************************************* 380cdf0e10cSrcweir |* 381cdf0e10cSrcweir |* 382cdf0e10cSrcweir |* 383cdf0e10cSrcweir \************************************************************************/ 384cdf0e10cSrcweir 385cdf0e10cSrcweir SvxSuperContourDlg::SvxSuperContourDlg( SfxBindings *_pBindings, SfxChildWindow *pCW, 386cdf0e10cSrcweir Window* _pParent, const ResId& rResId ) : 387cdf0e10cSrcweir SvxContourDlg ( _pBindings, pCW, _pParent, rResId ), 388cdf0e10cSrcweir pCheckObj ( NULL ), 389cdf0e10cSrcweir aContourItem ( SID_CONTOUR_EXEC, *this, *_pBindings ), 390cdf0e10cSrcweir aTbx1 ( this, ResId( TBX1, *rResId.GetResMgr() ) ), 391cdf0e10cSrcweir aMtfTolerance ( this, ResId( MTF_TOLERANCE, *rResId.GetResMgr() ) ), 392cdf0e10cSrcweir aContourWnd ( this, ResId( CTL_CONTOUR, *rResId.GetResMgr() ) ), 393cdf0e10cSrcweir aStbStatus ( this, WB_BORDER | WB_3DLOOK | WB_LEFT ), 394cdf0e10cSrcweir nGrfChanged ( 0UL ), 395cdf0e10cSrcweir bExecState ( sal_False ), 396cdf0e10cSrcweir bGraphicLinked ( sal_False ), 397cdf0e10cSrcweir maImageList ( SVX_RES( CD_IMAPDLG ) ), 398cdf0e10cSrcweir maImageListH ( SVX_RES( CDH_IMAPDLG ) ) 399cdf0e10cSrcweir { 400cdf0e10cSrcweir ApplyImageList(); 401cdf0e10cSrcweir 402cdf0e10cSrcweir FreeResource(); 403cdf0e10cSrcweir 404cdf0e10cSrcweir SvxContourDlg::SetSuperClass( *this ); 405cdf0e10cSrcweir 406cdf0e10cSrcweir aContourWnd.SetMousePosLink( LINK( this, SvxSuperContourDlg, MousePosHdl ) ); 407cdf0e10cSrcweir aContourWnd.SetGraphSizeLink( LINK( this, SvxSuperContourDlg, GraphSizeHdl ) ); 408cdf0e10cSrcweir aContourWnd.SetUpdateLink( LINK( this, SvxSuperContourDlg, StateHdl ) ); 409cdf0e10cSrcweir aContourWnd.SetPipetteHdl( LINK( this, SvxSuperContourDlg, PipetteHdl ) ); 410cdf0e10cSrcweir aContourWnd.SetPipetteClickHdl( LINK( this, SvxSuperContourDlg, PipetteClickHdl ) ); 411cdf0e10cSrcweir aContourWnd.SetWorkplaceClickHdl( LINK( this, SvxSuperContourDlg, WorkplaceClickHdl ) ); 412cdf0e10cSrcweir 413cdf0e10cSrcweir const Size aTbxSize( aTbx1.CalcWindowSizePixel() ); 414cdf0e10cSrcweir Point aPos( aTbx1.GetPosPixel() ); 415cdf0e10cSrcweir SvtMiscOptions aMiscOptions; 416cdf0e10cSrcweir 417cdf0e10cSrcweir aMiscOptions.AddListenerLink( LINK( this, SvxSuperContourDlg, MiscHdl ) ); 418cdf0e10cSrcweir 419cdf0e10cSrcweir aTbx1.SetOutStyle( aMiscOptions.GetToolboxStyle() ); 420cdf0e10cSrcweir aTbx1.SetSizePixel( aTbxSize ); 421cdf0e10cSrcweir aTbx1.SetSelectHdl( LINK( this, SvxSuperContourDlg, Tbx1ClickHdl ) ); 422cdf0e10cSrcweir 423cdf0e10cSrcweir aPos.X() += aTbxSize.Width() + LogicToPixel( Size( 3, 0 ), MapMode( MAP_APPFONT ) ).Width(); 424cdf0e10cSrcweir aMtfTolerance.SetPosPixel( aPos ); 425cdf0e10cSrcweir aMtfTolerance.SetValue( 10L ); 426cdf0e10cSrcweir 427cdf0e10cSrcweir SetMinOutputSizePixel( aLastSize = GetOutputSizePixel() ); 428cdf0e10cSrcweir 429cdf0e10cSrcweir aStbStatus.InsertItem( 1, 130, SIB_LEFT | SIB_IN | SIB_AUTOSIZE ); 430cdf0e10cSrcweir aStbStatus.InsertItem( 2, 10 + GetTextWidth( String::CreateFromAscii( " 9999,99 cm / 9999,99 cm " ) ), SIB_CENTER | SIB_IN ); 431cdf0e10cSrcweir aStbStatus.InsertItem( 3, 10 + GetTextWidth( String::CreateFromAscii( " 9999,99 cm x 9999,99 cm " ) ), SIB_CENTER | SIB_IN ); 432cdf0e10cSrcweir aStbStatus.InsertItem( 4, 20, SIB_CENTER | SIB_IN ); 433cdf0e10cSrcweir 434cdf0e10cSrcweir Resize(); 435cdf0e10cSrcweir 436cdf0e10cSrcweir aUpdateTimer.SetTimeout( 100 ); 437cdf0e10cSrcweir aUpdateTimer.SetTimeoutHdl( LINK( this, SvxSuperContourDlg, UpdateHdl ) ); 438cdf0e10cSrcweir 439cdf0e10cSrcweir aCreateTimer.SetTimeout( 50 ); 440cdf0e10cSrcweir aCreateTimer.SetTimeoutHdl( LINK( this, SvxSuperContourDlg, CreateHdl ) ); 441cdf0e10cSrcweir } 442cdf0e10cSrcweir 443cdf0e10cSrcweir 444cdf0e10cSrcweir /************************************************************************* 445cdf0e10cSrcweir |* 446cdf0e10cSrcweir |* Dtor 447cdf0e10cSrcweir |* 448cdf0e10cSrcweir \************************************************************************/ 449cdf0e10cSrcweir 450cdf0e10cSrcweir SvxSuperContourDlg::~SvxSuperContourDlg() 451cdf0e10cSrcweir { 452cdf0e10cSrcweir } 453cdf0e10cSrcweir 454cdf0e10cSrcweir 455cdf0e10cSrcweir /************************************************************************* 456cdf0e10cSrcweir |* 457cdf0e10cSrcweir |* Resize-Methode 458cdf0e10cSrcweir |* 459cdf0e10cSrcweir \************************************************************************/ 460cdf0e10cSrcweir 461cdf0e10cSrcweir void SvxSuperContourDlg::Resize() 462cdf0e10cSrcweir { 463cdf0e10cSrcweir SfxFloatingWindow::Resize(); 464cdf0e10cSrcweir 465cdf0e10cSrcweir Size aMinSize( GetMinOutputSizePixel() ); 466cdf0e10cSrcweir Size aNewSize( GetOutputSizePixel() ); 467cdf0e10cSrcweir 468cdf0e10cSrcweir if ( aNewSize.Height() >= aMinSize.Height() ) 469cdf0e10cSrcweir { 470cdf0e10cSrcweir Size _aSize( aStbStatus.GetSizePixel() ); 471cdf0e10cSrcweir Point aPoint( 0, aNewSize.Height() - _aSize.Height() ); 472cdf0e10cSrcweir 473cdf0e10cSrcweir // StatusBar positionieren 474cdf0e10cSrcweir aStbStatus.SetPosSizePixel( aPoint, Size( aNewSize.Width(), _aSize.Height() ) ); 475cdf0e10cSrcweir aStbStatus.Show(); 476cdf0e10cSrcweir 477cdf0e10cSrcweir // EditWindow positionieren 478cdf0e10cSrcweir _aSize.Width() = aNewSize.Width() - 18; 479cdf0e10cSrcweir _aSize.Height() = aPoint.Y() - aContourWnd.GetPosPixel().Y() - 6; 480cdf0e10cSrcweir aContourWnd.SetSizePixel( _aSize ); 481cdf0e10cSrcweir 482cdf0e10cSrcweir aLastSize = aNewSize; 483cdf0e10cSrcweir } 484cdf0e10cSrcweir } 485cdf0e10cSrcweir 486cdf0e10cSrcweir 487cdf0e10cSrcweir /************************************************************************* 488cdf0e10cSrcweir |* 489cdf0e10cSrcweir |* Close-Methode 490cdf0e10cSrcweir |* 491cdf0e10cSrcweir \************************************************************************/ 492cdf0e10cSrcweir 493cdf0e10cSrcweir sal_Bool SvxSuperContourDlg::Close() 494cdf0e10cSrcweir { 495cdf0e10cSrcweir sal_Bool bRet = sal_True; 496cdf0e10cSrcweir 497cdf0e10cSrcweir if ( aTbx1.IsItemEnabled( TBI_APPLY ) ) 498cdf0e10cSrcweir { 499cdf0e10cSrcweir QueryBox aQBox( this, WB_YES_NO_CANCEL | WB_DEF_YES, 500cdf0e10cSrcweir String( CONT_RESID( STR_CONTOURDLG_MODIFY ) ) ); 501cdf0e10cSrcweir const long nRet = aQBox.Execute(); 502cdf0e10cSrcweir 503cdf0e10cSrcweir if ( nRet == RET_YES ) 504cdf0e10cSrcweir { 505cdf0e10cSrcweir SfxBoolItem aBoolItem( SID_CONTOUR_EXEC, sal_True ); 506cdf0e10cSrcweir GetBindings().GetDispatcher()->Execute( 507cdf0e10cSrcweir SID_CONTOUR_EXEC, SFX_CALLMODE_SYNCHRON | SFX_CALLMODE_RECORD, &aBoolItem, 0L ); 508cdf0e10cSrcweir } 509cdf0e10cSrcweir else if ( nRet == RET_CANCEL ) 510cdf0e10cSrcweir bRet = sal_False; 511cdf0e10cSrcweir } 512cdf0e10cSrcweir 513cdf0e10cSrcweir return( bRet ? SfxFloatingWindow::Close() : sal_False ); 514cdf0e10cSrcweir } 515cdf0e10cSrcweir 516cdf0e10cSrcweir 517cdf0e10cSrcweir /************************************************************************* 518cdf0e10cSrcweir |* 519cdf0e10cSrcweir |* Enabled oder disabled alle Controls 520cdf0e10cSrcweir |* 521cdf0e10cSrcweir \************************************************************************/ 522cdf0e10cSrcweir 523cdf0e10cSrcweir void SvxSuperContourDlg::SetExecState( sal_Bool bEnable ) 524cdf0e10cSrcweir { 525cdf0e10cSrcweir bExecState = bEnable; 526cdf0e10cSrcweir } 527cdf0e10cSrcweir 528cdf0e10cSrcweir 529cdf0e10cSrcweir /************************************************************************* 530cdf0e10cSrcweir |* 531cdf0e10cSrcweir |* 532cdf0e10cSrcweir |* 533cdf0e10cSrcweir \************************************************************************/ 534cdf0e10cSrcweir 535cdf0e10cSrcweir void SvxSuperContourDlg::SetGraphic( const Graphic& rGraphic ) 536cdf0e10cSrcweir { 537cdf0e10cSrcweir aUndoGraphic = aRedoGraphic = Graphic(); 538cdf0e10cSrcweir aGraphic = rGraphic; 539cdf0e10cSrcweir nGrfChanged = 0UL; 540cdf0e10cSrcweir aContourWnd.SetGraphic( aGraphic ); 541cdf0e10cSrcweir } 542cdf0e10cSrcweir 543cdf0e10cSrcweir 544cdf0e10cSrcweir /************************************************************************* 545cdf0e10cSrcweir |* 546cdf0e10cSrcweir |* 547cdf0e10cSrcweir |* 548cdf0e10cSrcweir \************************************************************************/ 549cdf0e10cSrcweir 550cdf0e10cSrcweir void SvxSuperContourDlg::SetPolyPolygon( const PolyPolygon& rPolyPoly ) 551cdf0e10cSrcweir { 552cdf0e10cSrcweir DBG_ASSERT( aContourWnd.GetGraphic().GetType() != GRAPHIC_NONE, "Graphic must've been set first!" ); 553cdf0e10cSrcweir 554cdf0e10cSrcweir PolyPolygon aPolyPoly( rPolyPoly ); 555cdf0e10cSrcweir const MapMode aMap100( MAP_100TH_MM ); 556cdf0e10cSrcweir const MapMode aGrfMap( aGraphic.GetPrefMapMode() ); 557cdf0e10cSrcweir OutputDevice* pOutDev = Application::GetDefaultDevice(); 558cdf0e10cSrcweir sal_Bool bPixelMap = aGrfMap.GetMapUnit() == MAP_PIXEL; 559cdf0e10cSrcweir 560cdf0e10cSrcweir for ( sal_uInt16 j = 0, nPolyCount = aPolyPoly.Count(); j < nPolyCount; j++ ) 561cdf0e10cSrcweir { 562cdf0e10cSrcweir Polygon& rPoly = aPolyPoly[ j ]; 563cdf0e10cSrcweir 564cdf0e10cSrcweir for ( sal_uInt16 i = 0, nCount = rPoly.GetSize(); i < nCount; i++ ) 565cdf0e10cSrcweir { 566cdf0e10cSrcweir Point& rPt = rPoly[ i ]; 567cdf0e10cSrcweir 568cdf0e10cSrcweir if ( !bPixelMap ) 569cdf0e10cSrcweir rPt = pOutDev->LogicToPixel( rPt, aGrfMap ); 570cdf0e10cSrcweir 571cdf0e10cSrcweir rPt = pOutDev->PixelToLogic( rPt, aMap100 ); 572cdf0e10cSrcweir } 573cdf0e10cSrcweir } 574cdf0e10cSrcweir 575cdf0e10cSrcweir aContourWnd.SetPolyPolygon( aPolyPoly ); 576cdf0e10cSrcweir aContourWnd.GetSdrModel()->SetChanged( sal_True ); 577cdf0e10cSrcweir } 578cdf0e10cSrcweir 579cdf0e10cSrcweir 580cdf0e10cSrcweir /************************************************************************* 581cdf0e10cSrcweir |* 582cdf0e10cSrcweir |* 583cdf0e10cSrcweir |* 584cdf0e10cSrcweir \************************************************************************/ 585cdf0e10cSrcweir 586cdf0e10cSrcweir PolyPolygon SvxSuperContourDlg::GetPolyPolygon( sal_Bool bRescaleToGraphic ) 587cdf0e10cSrcweir { 588cdf0e10cSrcweir PolyPolygon aRetPolyPoly( aContourWnd.GetPolyPolygon() ); 589cdf0e10cSrcweir 590cdf0e10cSrcweir if ( bRescaleToGraphic ) 591cdf0e10cSrcweir { 592cdf0e10cSrcweir const MapMode aMap100( MAP_100TH_MM ); 593cdf0e10cSrcweir const MapMode aGrfMap( aGraphic.GetPrefMapMode() ); 594cdf0e10cSrcweir OutputDevice* pOutDev = Application::GetDefaultDevice(); 595cdf0e10cSrcweir sal_Bool bPixelMap = aGrfMap.GetMapUnit() == MAP_PIXEL; 596cdf0e10cSrcweir 597cdf0e10cSrcweir for ( sal_uInt16 j = 0, nPolyCount = aRetPolyPoly.Count(); j < nPolyCount; j++ ) 598cdf0e10cSrcweir { 599cdf0e10cSrcweir Polygon& rPoly = aRetPolyPoly[ j ]; 600cdf0e10cSrcweir 601cdf0e10cSrcweir for ( sal_uInt16 i = 0, nCount = rPoly.GetSize(); i < nCount; i++ ) 602cdf0e10cSrcweir { 603cdf0e10cSrcweir Point& rPt = rPoly[ i ]; 604cdf0e10cSrcweir 605cdf0e10cSrcweir rPt = pOutDev->LogicToPixel( rPt, aMap100 ); 606cdf0e10cSrcweir 607cdf0e10cSrcweir if ( !bPixelMap ) 608cdf0e10cSrcweir rPt = pOutDev->PixelToLogic( rPt, aGrfMap ); 609cdf0e10cSrcweir } 610cdf0e10cSrcweir } 611cdf0e10cSrcweir } 612cdf0e10cSrcweir 613cdf0e10cSrcweir return aRetPolyPoly; 614cdf0e10cSrcweir } 615cdf0e10cSrcweir 616cdf0e10cSrcweir 617cdf0e10cSrcweir /************************************************************************* 618cdf0e10cSrcweir |* 619cdf0e10cSrcweir |* 620cdf0e10cSrcweir |* 621cdf0e10cSrcweir \************************************************************************/ 622cdf0e10cSrcweir 623cdf0e10cSrcweir void SvxSuperContourDlg::UpdateGraphic( const Graphic& rGraphic, sal_Bool _bGraphicLinked, 624cdf0e10cSrcweir const PolyPolygon* pPolyPoly, void* pEditingObj ) 625cdf0e10cSrcweir { 626cdf0e10cSrcweir aUpdateGraphic = rGraphic; 627cdf0e10cSrcweir bUpdateGraphicLinked = _bGraphicLinked; 628cdf0e10cSrcweir pUpdateEditingObject = pEditingObj; 629cdf0e10cSrcweir 630cdf0e10cSrcweir if ( pPolyPoly ) 631cdf0e10cSrcweir aUpdatePolyPoly = *pPolyPoly; 632cdf0e10cSrcweir else 633cdf0e10cSrcweir aUpdatePolyPoly = PolyPolygon(); 634cdf0e10cSrcweir 635cdf0e10cSrcweir aUpdateTimer.Start(); 636cdf0e10cSrcweir } 637cdf0e10cSrcweir 638cdf0e10cSrcweir 639cdf0e10cSrcweir /************************************************************************* 640cdf0e10cSrcweir |* 641cdf0e10cSrcweir |* 642cdf0e10cSrcweir |* 643cdf0e10cSrcweir \************************************************************************/ 644cdf0e10cSrcweir 645cdf0e10cSrcweir sal_Bool SvxSuperContourDlg::IsUndoPossible() const 646cdf0e10cSrcweir { 647cdf0e10cSrcweir return aUndoGraphic.GetType() != GRAPHIC_NONE; 648cdf0e10cSrcweir } 649cdf0e10cSrcweir 650cdf0e10cSrcweir 651cdf0e10cSrcweir /************************************************************************* 652cdf0e10cSrcweir |* 653cdf0e10cSrcweir |* 654cdf0e10cSrcweir |* 655cdf0e10cSrcweir \************************************************************************/ 656cdf0e10cSrcweir 657cdf0e10cSrcweir sal_Bool SvxSuperContourDlg::IsRedoPossible() const 658cdf0e10cSrcweir { 659cdf0e10cSrcweir return aRedoGraphic.GetType() != GRAPHIC_NONE; 660cdf0e10cSrcweir } 661cdf0e10cSrcweir 662cdf0e10cSrcweir 663cdf0e10cSrcweir /************************************************************************* 664cdf0e10cSrcweir |* 665cdf0e10cSrcweir |* 666cdf0e10cSrcweir |* 667cdf0e10cSrcweir \************************************************************************/ 668cdf0e10cSrcweir 669cdf0e10cSrcweir void SvxSuperContourDlg::DoAutoCreate() 670cdf0e10cSrcweir { 671cdf0e10cSrcweir aCreateTimer.Start(); 672cdf0e10cSrcweir } 673cdf0e10cSrcweir 674cdf0e10cSrcweir 675cdf0e10cSrcweir /************************************************************************* 676cdf0e10cSrcweir |* 677cdf0e10cSrcweir |* 678cdf0e10cSrcweir |* 679cdf0e10cSrcweir \************************************************************************/ 680cdf0e10cSrcweir 681cdf0e10cSrcweir void SvxSuperContourDlg::ReducePoints( const long nTol ) 682cdf0e10cSrcweir { 683cdf0e10cSrcweir PolyPolygon aPolyPoly( GetPolyPolygon( sal_False ) ); 684cdf0e10cSrcweir 685cdf0e10cSrcweir if ( aPolyPoly.Count() ) 686cdf0e10cSrcweir { 687cdf0e10cSrcweir const MapMode aMapMode( MAP_100TH_MM ); 688cdf0e10cSrcweir const long nTol2 = nTol * nTol; 689cdf0e10cSrcweir Polygon& rPoly = aPolyPoly[ 0 ]; 690cdf0e10cSrcweir OutputDevice* pOutDev = Application::GetDefaultDevice(); 691cdf0e10cSrcweir Point aPtPix; 692cdf0e10cSrcweir const sal_uInt16 nSize = rPoly.GetSize(); 693cdf0e10cSrcweir sal_uInt16 nCounter = 0; 694cdf0e10cSrcweir 695cdf0e10cSrcweir if ( nSize ) 696cdf0e10cSrcweir aPtPix = pOutDev->LogicToPixel( rPoly[ 0 ], aMapMode ); 697cdf0e10cSrcweir 698cdf0e10cSrcweir for( sal_uInt16 i = 1; i < nSize; i++ ) 699cdf0e10cSrcweir { 700cdf0e10cSrcweir const Point& rNewPt = rPoly[ i ]; 701cdf0e10cSrcweir const Point aNewPtPix( pOutDev->LogicToPixel( rNewPt, aMapMode ) ); 702cdf0e10cSrcweir 703cdf0e10cSrcweir const long nDistX = aNewPtPix.X() - aPtPix.X(); 704cdf0e10cSrcweir const long nDistY = aNewPtPix.Y() - aPtPix.Y(); 705cdf0e10cSrcweir 706cdf0e10cSrcweir if( ( nDistX * nDistX + nDistY * nDistY ) >= nTol2 ) 707cdf0e10cSrcweir { 708cdf0e10cSrcweir rPoly[ ++nCounter ] = rNewPt; 709cdf0e10cSrcweir aPtPix = aNewPtPix; 710cdf0e10cSrcweir } 711cdf0e10cSrcweir } 712cdf0e10cSrcweir 713cdf0e10cSrcweir rPoly.SetSize( nCounter ); 714cdf0e10cSrcweir aContourWnd.SetPolyPolygon( aPolyPoly ); 715cdf0e10cSrcweir aContourWnd.GetSdrModel()->SetChanged( sal_True ); 716cdf0e10cSrcweir } 717cdf0e10cSrcweir } 718cdf0e10cSrcweir 719cdf0e10cSrcweir 720cdf0e10cSrcweir /************************************************************************* 721cdf0e10cSrcweir |* 722cdf0e10cSrcweir |* Click-Hdl fuer ToolBox 723cdf0e10cSrcweir |* 724cdf0e10cSrcweir \************************************************************************/ 725cdf0e10cSrcweir 726cdf0e10cSrcweir IMPL_LINK( SvxSuperContourDlg, Tbx1ClickHdl, ToolBox*, pTbx ) 727cdf0e10cSrcweir { 728cdf0e10cSrcweir sal_uInt16 nNewItemId = pTbx->GetCurItemId(); 729cdf0e10cSrcweir 730cdf0e10cSrcweir switch( pTbx->GetCurItemId() ) 731cdf0e10cSrcweir { 732cdf0e10cSrcweir case( TBI_APPLY ): 733cdf0e10cSrcweir { 734cdf0e10cSrcweir SfxBoolItem aBoolItem( SID_CONTOUR_EXEC, sal_True ); 735cdf0e10cSrcweir GetBindings().GetDispatcher()->Execute( 736cdf0e10cSrcweir SID_CONTOUR_EXEC, SFX_CALLMODE_ASYNCHRON | SFX_CALLMODE_RECORD, &aBoolItem, 0L ); 737cdf0e10cSrcweir } 738cdf0e10cSrcweir break; 739cdf0e10cSrcweir 740cdf0e10cSrcweir case( TBI_WORKPLACE ): 741cdf0e10cSrcweir { 742cdf0e10cSrcweir if ( aTbx1.IsItemChecked( TBI_WORKPLACE ) ) 743cdf0e10cSrcweir { 744cdf0e10cSrcweir QueryBox aQBox( this, WB_YES_NO | WB_DEF_NO, String( CONT_RESID( STR_CONTOURDLG_WORKPLACE ) ) ); 745cdf0e10cSrcweir 746cdf0e10cSrcweir if ( !aContourWnd.IsContourChanged() || ( aQBox.Execute() == RET_YES ) ) 747cdf0e10cSrcweir aContourWnd.SetWorkplaceMode( sal_True ); 748cdf0e10cSrcweir else 749cdf0e10cSrcweir aTbx1.CheckItem( TBI_WORKPLACE, sal_False ); 750cdf0e10cSrcweir } 751cdf0e10cSrcweir else 752cdf0e10cSrcweir aContourWnd.SetWorkplaceMode( sal_False ); 753cdf0e10cSrcweir } 754cdf0e10cSrcweir break; 755cdf0e10cSrcweir 756cdf0e10cSrcweir case( TBI_SELECT ): 757cdf0e10cSrcweir { 758cdf0e10cSrcweir pTbx->CheckItem( nNewItemId, sal_True ); 759cdf0e10cSrcweir aContourWnd.SetEditMode( sal_True ); 760cdf0e10cSrcweir } 761cdf0e10cSrcweir break; 762cdf0e10cSrcweir 763cdf0e10cSrcweir case( TBI_RECT ): 764cdf0e10cSrcweir { 765cdf0e10cSrcweir pTbx->CheckItem( nNewItemId, sal_True ); 766cdf0e10cSrcweir aContourWnd.SetObjKind( OBJ_RECT ); 767cdf0e10cSrcweir } 768cdf0e10cSrcweir break; 769cdf0e10cSrcweir 770cdf0e10cSrcweir case( TBI_CIRCLE ): 771cdf0e10cSrcweir { 772cdf0e10cSrcweir pTbx->CheckItem( nNewItemId, sal_True ); 773cdf0e10cSrcweir aContourWnd.SetObjKind( OBJ_CIRC ); 774cdf0e10cSrcweir 775cdf0e10cSrcweir } 776cdf0e10cSrcweir break; 777cdf0e10cSrcweir 778cdf0e10cSrcweir case( TBI_POLY ): 779cdf0e10cSrcweir { 780cdf0e10cSrcweir pTbx->CheckItem( nNewItemId, sal_True ); 781cdf0e10cSrcweir aContourWnd.SetObjKind( OBJ_POLY ); 782cdf0e10cSrcweir } 783cdf0e10cSrcweir break; 784cdf0e10cSrcweir 785cdf0e10cSrcweir case( TBI_FREEPOLY ): 786cdf0e10cSrcweir { 787cdf0e10cSrcweir pTbx->CheckItem( nNewItemId, sal_True ); 788cdf0e10cSrcweir aContourWnd.SetObjKind( OBJ_FREEFILL ); 789cdf0e10cSrcweir } 790cdf0e10cSrcweir break; 791cdf0e10cSrcweir 792cdf0e10cSrcweir case( TBI_POLYEDIT ): 793cdf0e10cSrcweir aContourWnd.SetPolyEditMode( pTbx->IsItemChecked( TBI_POLYEDIT ) ? SID_BEZIER_MOVE : 0 ); 794cdf0e10cSrcweir break; 795cdf0e10cSrcweir 796cdf0e10cSrcweir case( TBI_POLYMOVE ): 797cdf0e10cSrcweir aContourWnd.SetPolyEditMode( SID_BEZIER_MOVE ); 798cdf0e10cSrcweir break; 799cdf0e10cSrcweir 800cdf0e10cSrcweir case( TBI_POLYINSERT ): 801cdf0e10cSrcweir aContourWnd.SetPolyEditMode( SID_BEZIER_INSERT ); 802cdf0e10cSrcweir break; 803cdf0e10cSrcweir 804cdf0e10cSrcweir case( TBI_POLYDELETE ): 805cdf0e10cSrcweir aContourWnd.GetSdrView()->DeleteMarkedPoints(); 806cdf0e10cSrcweir break; 807cdf0e10cSrcweir 808cdf0e10cSrcweir case( TBI_UNDO ): 809cdf0e10cSrcweir { 810cdf0e10cSrcweir nGrfChanged = nGrfChanged ? nGrfChanged-- : 0UL; 811cdf0e10cSrcweir aRedoGraphic = aGraphic; 812cdf0e10cSrcweir aGraphic = aUndoGraphic; 813cdf0e10cSrcweir aUndoGraphic = Graphic(); 814cdf0e10cSrcweir aContourWnd.SetGraphic( aGraphic, sal_False ); 815cdf0e10cSrcweir } 816cdf0e10cSrcweir break; 817cdf0e10cSrcweir 818cdf0e10cSrcweir case( TBI_REDO ): 819cdf0e10cSrcweir { 820cdf0e10cSrcweir nGrfChanged++; 821cdf0e10cSrcweir aUndoGraphic = aGraphic; 822cdf0e10cSrcweir aGraphic = aRedoGraphic; 823cdf0e10cSrcweir aRedoGraphic = Graphic(); 824cdf0e10cSrcweir aContourWnd.SetGraphic( aGraphic, sal_False ); 825cdf0e10cSrcweir } 826cdf0e10cSrcweir break; 827cdf0e10cSrcweir 828cdf0e10cSrcweir case( TBI_AUTOCONTOUR ): 829cdf0e10cSrcweir aCreateTimer.Start(); 830cdf0e10cSrcweir break; 831cdf0e10cSrcweir 832cdf0e10cSrcweir case( TBI_PIPETTE ): 833cdf0e10cSrcweir { 834cdf0e10cSrcweir sal_Bool bPipette = aTbx1.IsItemChecked( TBI_PIPETTE ); 835cdf0e10cSrcweir 836cdf0e10cSrcweir if ( !bPipette ) 837cdf0e10cSrcweir aStbStatus.Invalidate(); 838cdf0e10cSrcweir else if ( bGraphicLinked ) 839cdf0e10cSrcweir { 840cdf0e10cSrcweir QueryBox aQBox( this, WB_YES_NO | WB_DEF_YES, String( CONT_RESID( STR_CONTOURDLG_LINKED ) ) ); 841cdf0e10cSrcweir 842cdf0e10cSrcweir if ( aQBox.Execute() != RET_YES ) 843cdf0e10cSrcweir { 844cdf0e10cSrcweir aTbx1.CheckItem( TBI_PIPETTE, bPipette = sal_False ); 845cdf0e10cSrcweir aStbStatus.Invalidate(); 846cdf0e10cSrcweir } 847cdf0e10cSrcweir } 848cdf0e10cSrcweir 849cdf0e10cSrcweir aContourWnd.SetPipetteMode( bPipette ); 850cdf0e10cSrcweir } 851cdf0e10cSrcweir break; 852cdf0e10cSrcweir 853cdf0e10cSrcweir default: 854cdf0e10cSrcweir break; 855cdf0e10cSrcweir } 856cdf0e10cSrcweir 857cdf0e10cSrcweir return 0L; 858cdf0e10cSrcweir } 859cdf0e10cSrcweir 860cdf0e10cSrcweir 861cdf0e10cSrcweir /************************************************************************* 862cdf0e10cSrcweir |* 863cdf0e10cSrcweir |* 864cdf0e10cSrcweir |* 865cdf0e10cSrcweir \************************************************************************/ 866cdf0e10cSrcweir 867cdf0e10cSrcweir IMPL_LINK( SvxSuperContourDlg, MousePosHdl, ContourWindow*, pWnd ) 868cdf0e10cSrcweir { 869cdf0e10cSrcweir String aStr; 870cdf0e10cSrcweir const FieldUnit eFieldUnit = GetBindings().GetDispatcher()->GetModule()->GetFieldUnit(); 871cdf0e10cSrcweir const Point& rMousePos = pWnd->GetMousePos(); 872cdf0e10cSrcweir LocaleDataWrapper aLocaleWrapper( ::comphelper::getProcessServiceFactory(), Application::GetSettings().GetLocale() ); 873cdf0e10cSrcweir const sal_Unicode cSep = aLocaleWrapper.getNumDecimalSep().GetChar(0); 874cdf0e10cSrcweir 875cdf0e10cSrcweir aStr.Assign( GetUnitString( rMousePos.X(), eFieldUnit, cSep ) ); 876cdf0e10cSrcweir aStr.Append( String::CreateFromAscii( " / " ) ); 877cdf0e10cSrcweir aStr.Append( GetUnitString( rMousePos.Y(), eFieldUnit, cSep ) ); 878cdf0e10cSrcweir 879cdf0e10cSrcweir aStbStatus.SetItemText( 2, aStr ); 880cdf0e10cSrcweir 881cdf0e10cSrcweir return 0L; 882cdf0e10cSrcweir } 883cdf0e10cSrcweir 884cdf0e10cSrcweir /************************************************************************* 885cdf0e10cSrcweir |* 886cdf0e10cSrcweir |* 887cdf0e10cSrcweir |* 888cdf0e10cSrcweir \************************************************************************/ 889cdf0e10cSrcweir 890cdf0e10cSrcweir IMPL_LINK( SvxSuperContourDlg, GraphSizeHdl, ContourWindow*, pWnd ) 891cdf0e10cSrcweir { 892cdf0e10cSrcweir String aStr; 893cdf0e10cSrcweir const FieldUnit eFieldUnit = GetBindings().GetDispatcher()->GetModule()->GetFieldUnit(); 894cdf0e10cSrcweir const Size& rSize = pWnd->GetGraphicSize(); 895cdf0e10cSrcweir LocaleDataWrapper aLocaleWrapper( ::comphelper::getProcessServiceFactory(), Application::GetSettings().GetLocale() ); 896cdf0e10cSrcweir const sal_Unicode cSep = aLocaleWrapper.getNumDecimalSep().GetChar(0); 897cdf0e10cSrcweir 898cdf0e10cSrcweir aStr.Assign( GetUnitString( rSize.Width(), eFieldUnit, cSep ) ); 899cdf0e10cSrcweir aStr.Append( String::CreateFromAscii( " x " ) ); 900cdf0e10cSrcweir aStr.Append( GetUnitString( rSize.Height(), eFieldUnit, cSep ) ); 901cdf0e10cSrcweir 902cdf0e10cSrcweir aStbStatus.SetItemText( 3, aStr ); 903cdf0e10cSrcweir 904cdf0e10cSrcweir return 0L; 905cdf0e10cSrcweir } 906cdf0e10cSrcweir 907cdf0e10cSrcweir /************************************************************************* 908cdf0e10cSrcweir |* 909cdf0e10cSrcweir |* 910cdf0e10cSrcweir |* 911cdf0e10cSrcweir \************************************************************************/ 912cdf0e10cSrcweir 913cdf0e10cSrcweir IMPL_LINK( SvxSuperContourDlg, UpdateHdl, Timer*, EMPTYARG ) 914cdf0e10cSrcweir { 915cdf0e10cSrcweir aUpdateTimer.Stop(); 916cdf0e10cSrcweir 917cdf0e10cSrcweir if ( pUpdateEditingObject != pCheckObj ) 918cdf0e10cSrcweir { 919cdf0e10cSrcweir if( !GetEditingObject() ) 920cdf0e10cSrcweir aContourWnd.GrabFocus(); 921cdf0e10cSrcweir 922cdf0e10cSrcweir SetGraphic( aUpdateGraphic ); 923cdf0e10cSrcweir SetPolyPolygon( aUpdatePolyPoly ); 924cdf0e10cSrcweir SetEditingObject( pUpdateEditingObject ); 925cdf0e10cSrcweir bGraphicLinked = bUpdateGraphicLinked; 926cdf0e10cSrcweir 927cdf0e10cSrcweir aUpdateGraphic = Graphic(); 928cdf0e10cSrcweir aUpdatePolyPoly = PolyPolygon(); 929cdf0e10cSrcweir bUpdateGraphicLinked = sal_False; 930cdf0e10cSrcweir 931cdf0e10cSrcweir aContourWnd.GetSdrModel()->SetChanged( sal_False ); 932cdf0e10cSrcweir } 933cdf0e10cSrcweir 934cdf0e10cSrcweir GetBindings().Invalidate( SID_CONTOUR_EXEC ); 935cdf0e10cSrcweir 936cdf0e10cSrcweir return 0L; 937cdf0e10cSrcweir } 938cdf0e10cSrcweir 939cdf0e10cSrcweir 940cdf0e10cSrcweir /************************************************************************* 941cdf0e10cSrcweir |* 942cdf0e10cSrcweir |* 943cdf0e10cSrcweir |* 944cdf0e10cSrcweir \************************************************************************/ 945cdf0e10cSrcweir 946cdf0e10cSrcweir IMPL_LINK( SvxSuperContourDlg, CreateHdl, Timer*, EMPTYARG ) 947cdf0e10cSrcweir { 948cdf0e10cSrcweir aCreateTimer.Stop(); 949cdf0e10cSrcweir 950cdf0e10cSrcweir const Rectangle aWorkRect = aContourWnd.LogicToPixel( aContourWnd.GetWorkRect(), MapMode( MAP_100TH_MM ) ); 951cdf0e10cSrcweir const Graphic& rGraphic = aContourWnd.GetGraphic(); 952cdf0e10cSrcweir const sal_Bool bValid = aWorkRect.Left() != aWorkRect.Right() && aWorkRect.Top() != aWorkRect.Bottom(); 953cdf0e10cSrcweir 954cdf0e10cSrcweir EnterWait(); 955cdf0e10cSrcweir SetPolyPolygon( CreateAutoContour( rGraphic, bValid ? &aWorkRect : NULL ) ); 956cdf0e10cSrcweir LeaveWait(); 957cdf0e10cSrcweir 958cdf0e10cSrcweir return 0L; 959cdf0e10cSrcweir } 960cdf0e10cSrcweir 961cdf0e10cSrcweir 962cdf0e10cSrcweir /************************************************************************* 963cdf0e10cSrcweir |* 964cdf0e10cSrcweir |* 965cdf0e10cSrcweir |* 966cdf0e10cSrcweir \************************************************************************/ 967cdf0e10cSrcweir 968cdf0e10cSrcweir IMPL_LINK( SvxSuperContourDlg, StateHdl, ContourWindow*, pWnd ) 969cdf0e10cSrcweir { 970cdf0e10cSrcweir const SdrObject* pObj = pWnd->GetSelectedSdrObject(); 971cdf0e10cSrcweir const SdrView* pView = pWnd->GetSdrView(); 972cdf0e10cSrcweir const sal_Bool bPolyEdit = ( pObj != NULL ) && pObj->ISA( SdrPathObj ); 973cdf0e10cSrcweir const sal_Bool bDrawEnabled = !( bPolyEdit && aTbx1.IsItemChecked( TBI_POLYEDIT ) ); 974cdf0e10cSrcweir const sal_Bool bPipette = aTbx1.IsItemChecked( TBI_PIPETTE ); 975cdf0e10cSrcweir const sal_Bool bWorkplace = aTbx1.IsItemChecked( TBI_WORKPLACE ); 976cdf0e10cSrcweir const sal_Bool bDontHide = !( bPipette || bWorkplace ); 977cdf0e10cSrcweir const sal_Bool bBitmap = pWnd->GetGraphic().GetType() == GRAPHIC_BITMAP; 978cdf0e10cSrcweir 979cdf0e10cSrcweir aTbx1.EnableItem( TBI_APPLY, bDontHide && bExecState && pWnd->IsChanged() ); 980cdf0e10cSrcweir 981cdf0e10cSrcweir aTbx1.EnableItem( TBI_WORKPLACE, !bPipette && bDrawEnabled ); 982cdf0e10cSrcweir 983cdf0e10cSrcweir aTbx1.EnableItem( TBI_SELECT, bDontHide && bDrawEnabled ); 984cdf0e10cSrcweir aTbx1.EnableItem( TBI_RECT, bDontHide && bDrawEnabled ); 985cdf0e10cSrcweir aTbx1.EnableItem( TBI_CIRCLE, bDontHide && bDrawEnabled ); 986cdf0e10cSrcweir aTbx1.EnableItem( TBI_POLY, bDontHide && bDrawEnabled ); 987cdf0e10cSrcweir aTbx1.EnableItem( TBI_FREEPOLY, bDontHide && bDrawEnabled ); 988cdf0e10cSrcweir 989cdf0e10cSrcweir aTbx1.EnableItem( TBI_POLYEDIT, bDontHide && bPolyEdit ); 990cdf0e10cSrcweir aTbx1.EnableItem( TBI_POLYMOVE, bDontHide && !bDrawEnabled ); 991cdf0e10cSrcweir aTbx1.EnableItem( TBI_POLYINSERT, bDontHide && !bDrawEnabled ); 992cdf0e10cSrcweir aTbx1.EnableItem( TBI_POLYDELETE, bDontHide && !bDrawEnabled && pView->IsDeleteMarkedPointsPossible() ); 993cdf0e10cSrcweir 994cdf0e10cSrcweir aTbx1.EnableItem( TBI_AUTOCONTOUR, bDontHide && bDrawEnabled ); 995cdf0e10cSrcweir aTbx1.EnableItem( TBI_PIPETTE, !bWorkplace && bDrawEnabled && bBitmap ); 996cdf0e10cSrcweir 997cdf0e10cSrcweir aTbx1.EnableItem( TBI_UNDO, bDontHide && IsUndoPossible() ); 998cdf0e10cSrcweir aTbx1.EnableItem( TBI_REDO, bDontHide && IsRedoPossible() ); 999cdf0e10cSrcweir 1000cdf0e10cSrcweir if ( bPolyEdit ) 1001cdf0e10cSrcweir { 1002cdf0e10cSrcweir sal_uInt16 nId = 0; 1003cdf0e10cSrcweir 1004cdf0e10cSrcweir switch( pWnd->GetPolyEditMode() ) 1005cdf0e10cSrcweir { 1006cdf0e10cSrcweir case( SID_BEZIER_MOVE ): nId = TBI_POLYMOVE; break; 1007cdf0e10cSrcweir case( SID_BEZIER_INSERT ): nId = TBI_POLYINSERT; break; 1008cdf0e10cSrcweir 1009cdf0e10cSrcweir default: 1010cdf0e10cSrcweir break; 1011cdf0e10cSrcweir } 1012cdf0e10cSrcweir 1013cdf0e10cSrcweir aTbx1.CheckItem( nId, sal_True ); 1014cdf0e10cSrcweir } 1015cdf0e10cSrcweir else 1016cdf0e10cSrcweir { 1017cdf0e10cSrcweir aTbx1.CheckItem( TBI_POLYEDIT, sal_False ); 1018cdf0e10cSrcweir aTbx1.CheckItem( TBI_POLYMOVE, sal_True ); 1019cdf0e10cSrcweir aTbx1.CheckItem( TBI_POLYINSERT, sal_False ); 1020cdf0e10cSrcweir pWnd->SetPolyEditMode( 0 ); 1021cdf0e10cSrcweir } 1022cdf0e10cSrcweir 1023cdf0e10cSrcweir return 0L; 1024cdf0e10cSrcweir } 1025cdf0e10cSrcweir 1026cdf0e10cSrcweir 1027cdf0e10cSrcweir /************************************************************************* 1028cdf0e10cSrcweir |* 1029cdf0e10cSrcweir |* 1030cdf0e10cSrcweir |* 1031cdf0e10cSrcweir \************************************************************************/ 1032cdf0e10cSrcweir 1033cdf0e10cSrcweir IMPL_LINK( SvxSuperContourDlg, PipetteHdl, ContourWindow*, pWnd ) 1034cdf0e10cSrcweir { 1035cdf0e10cSrcweir const Color& rOldLineColor = aStbStatus.GetLineColor(); 1036cdf0e10cSrcweir const Color& rOldFillColor = aStbStatus.GetFillColor(); 1037cdf0e10cSrcweir 1038cdf0e10cSrcweir Rectangle aRect( aStbStatus.GetItemRect( 4 ) ); 1039cdf0e10cSrcweir const Color& rColor = pWnd->GetPipetteColor(); 1040cdf0e10cSrcweir 1041cdf0e10cSrcweir aStbStatus.SetLineColor( rColor ); 1042cdf0e10cSrcweir aStbStatus.SetFillColor( rColor ); 1043cdf0e10cSrcweir 1044cdf0e10cSrcweir aRect.Left() += 4; 1045cdf0e10cSrcweir aRect.Top() += 4; 1046cdf0e10cSrcweir aRect.Right() -= 4; 1047cdf0e10cSrcweir aRect.Bottom() -= 4; 1048cdf0e10cSrcweir 1049cdf0e10cSrcweir aStbStatus.DrawRect( aRect ); 1050cdf0e10cSrcweir 1051cdf0e10cSrcweir aStbStatus.SetLineColor( rOldLineColor ); 1052cdf0e10cSrcweir aStbStatus.SetFillColor( rOldFillColor ); 1053cdf0e10cSrcweir 1054cdf0e10cSrcweir return 0L; 1055cdf0e10cSrcweir } 1056cdf0e10cSrcweir 1057cdf0e10cSrcweir 1058cdf0e10cSrcweir /************************************************************************* 1059cdf0e10cSrcweir |* 1060cdf0e10cSrcweir |* 1061cdf0e10cSrcweir |* 1062cdf0e10cSrcweir \************************************************************************/ 1063cdf0e10cSrcweir 1064cdf0e10cSrcweir IMPL_LINK( SvxSuperContourDlg, PipetteClickHdl, ContourWindow*, pWnd ) 1065cdf0e10cSrcweir { 1066cdf0e10cSrcweir if ( pWnd->IsClickValid() ) 1067cdf0e10cSrcweir { 1068cdf0e10cSrcweir Bitmap aMask; 1069cdf0e10cSrcweir const Color& rColor = pWnd->GetPipetteColor(); 1070cdf0e10cSrcweir 1071cdf0e10cSrcweir EnterWait(); 1072cdf0e10cSrcweir 1073cdf0e10cSrcweir if( aGraphic.GetType() == GRAPHIC_BITMAP ) 1074cdf0e10cSrcweir { 1075cdf0e10cSrcweir Bitmap aBmp( aGraphic.GetBitmap() ); 1076cdf0e10cSrcweir const long nTol = static_cast<long>(aMtfTolerance.GetValue() * 255L / 100L); 1077cdf0e10cSrcweir 1078cdf0e10cSrcweir aMask = aBmp.CreateMask( rColor, nTol ); 1079cdf0e10cSrcweir 1080cdf0e10cSrcweir if( aGraphic.IsTransparent() ) 1081cdf0e10cSrcweir aMask.CombineSimple( aGraphic.GetBitmapEx().GetMask(), BMP_COMBINE_OR ); 1082cdf0e10cSrcweir 1083cdf0e10cSrcweir if( !!aMask ) 1084cdf0e10cSrcweir { 1085cdf0e10cSrcweir QueryBox aQBox( this, WB_YES_NO | WB_DEF_YES, String( CONT_RESID( STR_CONTOURDLG_NEWPIPETTE ) ) ); 1086cdf0e10cSrcweir sal_Bool bNewContour; 1087cdf0e10cSrcweir 1088cdf0e10cSrcweir aRedoGraphic = Graphic(); 1089cdf0e10cSrcweir aUndoGraphic = aGraphic; 1090cdf0e10cSrcweir aGraphic = Graphic( BitmapEx( aBmp, aMask ) ); 1091cdf0e10cSrcweir nGrfChanged++; 1092cdf0e10cSrcweir 1093cdf0e10cSrcweir bNewContour = ( aQBox.Execute() == RET_YES ); 1094cdf0e10cSrcweir pWnd->SetGraphic( aGraphic, bNewContour ); 1095cdf0e10cSrcweir 1096cdf0e10cSrcweir if( bNewContour ) 1097cdf0e10cSrcweir aCreateTimer.Start(); 1098cdf0e10cSrcweir } 1099cdf0e10cSrcweir } 1100cdf0e10cSrcweir 1101cdf0e10cSrcweir LeaveWait(); 1102cdf0e10cSrcweir } 1103cdf0e10cSrcweir 1104cdf0e10cSrcweir aTbx1.CheckItem( TBI_PIPETTE, sal_False ); 1105cdf0e10cSrcweir pWnd->SetPipetteMode( sal_False ); 1106cdf0e10cSrcweir aStbStatus.Invalidate(); 1107cdf0e10cSrcweir 1108cdf0e10cSrcweir return 0L; 1109cdf0e10cSrcweir } 1110cdf0e10cSrcweir 1111cdf0e10cSrcweir 1112cdf0e10cSrcweir /************************************************************************* 1113cdf0e10cSrcweir |* 1114cdf0e10cSrcweir |* 1115cdf0e10cSrcweir |* 1116cdf0e10cSrcweir \************************************************************************/ 1117cdf0e10cSrcweir 1118cdf0e10cSrcweir IMPL_LINK( SvxSuperContourDlg, WorkplaceClickHdl, ContourWindow*, pWnd ) 1119cdf0e10cSrcweir { 1120cdf0e10cSrcweir aTbx1.CheckItem( TBI_WORKPLACE, sal_False ); 1121cdf0e10cSrcweir aTbx1.CheckItem( TBI_SELECT, sal_True ); 1122cdf0e10cSrcweir pWnd->SetWorkplaceMode( sal_False ); 1123cdf0e10cSrcweir 1124cdf0e10cSrcweir return 0L; 1125cdf0e10cSrcweir } 1126cdf0e10cSrcweir 1127cdf0e10cSrcweir void SvxSuperContourDlg::ApplyImageList() 1128cdf0e10cSrcweir { 1129cdf0e10cSrcweir bool bHighContrast = GetSettings().GetStyleSettings().GetHighContrastMode(); 1130cdf0e10cSrcweir 1131cdf0e10cSrcweir ImageList& rImgLst = bHighContrast ? maImageListH : maImageList; 1132cdf0e10cSrcweir 1133cdf0e10cSrcweir aTbx1.SetImageList( rImgLst ); 1134cdf0e10cSrcweir } 1135cdf0e10cSrcweir 1136cdf0e10cSrcweir void SvxSuperContourDlg::DataChanged( const DataChangedEvent& rDCEvt ) 1137cdf0e10cSrcweir { 1138cdf0e10cSrcweir SfxFloatingWindow::DataChanged( rDCEvt ); 1139cdf0e10cSrcweir 1140cdf0e10cSrcweir if ( (rDCEvt.GetType() == DATACHANGED_SETTINGS) && (rDCEvt.GetFlags() & SETTINGS_STYLE) ) 1141cdf0e10cSrcweir ApplyImageList(); 1142cdf0e10cSrcweir } 1143cdf0e10cSrcweir 1144cdf0e10cSrcweir /************************************************************************* 1145cdf0e10cSrcweir |* 1146cdf0e10cSrcweir |* 1147cdf0e10cSrcweir |* 1148cdf0e10cSrcweir \************************************************************************/ 1149cdf0e10cSrcweir 1150cdf0e10cSrcweir IMPL_LINK( SvxSuperContourDlg, MiscHdl, void*, EMPTYARG ) 1151cdf0e10cSrcweir { 1152cdf0e10cSrcweir SvtMiscOptions aMiscOptions; 1153cdf0e10cSrcweir aTbx1.SetOutStyle( aMiscOptions.GetToolboxStyle() ); 1154cdf0e10cSrcweir 1155cdf0e10cSrcweir return 0L; 1156cdf0e10cSrcweir } 1157cdf0e10cSrcweir 1158