1*cdf0e10cSrcweir /************************************************************************* 2*cdf0e10cSrcweir * 3*cdf0e10cSrcweir * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4*cdf0e10cSrcweir * 5*cdf0e10cSrcweir * Copyright 2000, 2010 Oracle and/or its affiliates. 6*cdf0e10cSrcweir * 7*cdf0e10cSrcweir * OpenOffice.org - a multi-platform office productivity suite 8*cdf0e10cSrcweir * 9*cdf0e10cSrcweir * This file is part of OpenOffice.org. 10*cdf0e10cSrcweir * 11*cdf0e10cSrcweir * OpenOffice.org is free software: you can redistribute it and/or modify 12*cdf0e10cSrcweir * it under the terms of the GNU Lesser General Public License version 3 13*cdf0e10cSrcweir * only, as published by the Free Software Foundation. 14*cdf0e10cSrcweir * 15*cdf0e10cSrcweir * OpenOffice.org is distributed in the hope that it will be useful, 16*cdf0e10cSrcweir * but WITHOUT ANY WARRANTY; without even the implied warranty of 17*cdf0e10cSrcweir * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18*cdf0e10cSrcweir * GNU Lesser General Public License version 3 for more details 19*cdf0e10cSrcweir * (a copy is included in the LICENSE file that accompanied this code). 20*cdf0e10cSrcweir * 21*cdf0e10cSrcweir * You should have received a copy of the GNU Lesser General Public License 22*cdf0e10cSrcweir * version 3 along with OpenOffice.org. If not, see 23*cdf0e10cSrcweir * <http://www.openoffice.org/license.html> 24*cdf0e10cSrcweir * for a copy of the LGPLv3 License. 25*cdf0e10cSrcweir * 26*cdf0e10cSrcweir ************************************************************************/ 27*cdf0e10cSrcweir 28*cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove 29*cdf0e10cSrcweir #include "precompiled_svx.hxx" 30*cdf0e10cSrcweir 31*cdf0e10cSrcweir // include --------------------------------------------------------------- 32*cdf0e10cSrcweir #include <tools/shl.hxx> 33*cdf0e10cSrcweir #ifndef _APP_HXX //autogen 34*cdf0e10cSrcweir #include <vcl/svapp.hxx> 35*cdf0e10cSrcweir #endif 36*cdf0e10cSrcweir 37*cdf0e10cSrcweir #include <svx/xtable.hxx> 38*cdf0e10cSrcweir #include <svx/xpool.hxx> 39*cdf0e10cSrcweir 40*cdf0e10cSrcweir #include <svx/dialogs.hrc> 41*cdf0e10cSrcweir #include "accessibility.hrc" 42*cdf0e10cSrcweir #include <svx/dlgctrl.hxx> 43*cdf0e10cSrcweir #include <svx/dialmgr.hxx> 44*cdf0e10cSrcweir #include <tools/poly.hxx> 45*cdf0e10cSrcweir #include <vcl/region.hxx> 46*cdf0e10cSrcweir #include <vcl/gradient.hxx> 47*cdf0e10cSrcweir #include <vcl/hatch.hxx> 48*cdf0e10cSrcweir #include <svtools/colorcfg.hxx> 49*cdf0e10cSrcweir 50*cdf0e10cSrcweir #include "svxrectctaccessiblecontext.hxx" 51*cdf0e10cSrcweir #include <com/sun/star/lang/XUnoTunnel.hpp> 52*cdf0e10cSrcweir #include <basegfx/point/b2dpoint.hxx> 53*cdf0e10cSrcweir #include <basegfx/polygon/b2dpolygon.hxx> 54*cdf0e10cSrcweir #include <svx/svdorect.hxx> 55*cdf0e10cSrcweir 56*cdf0e10cSrcweir #include <svx/svdmodel.hxx> 57*cdf0e10cSrcweir #include <svx/svdopath.hxx> 58*cdf0e10cSrcweir #include <svx/sdr/contact/objectcontactofobjlistpainter.hxx> 59*cdf0e10cSrcweir #include <svx/sdr/contact/displayinfo.hxx> 60*cdf0e10cSrcweir #include "linectrl.hrc" 61*cdf0e10cSrcweir 62*cdf0e10cSrcweir #define OUTPUT_DRAWMODE_COLOR (DRAWMODE_DEFAULT) 63*cdf0e10cSrcweir #define OUTPUT_DRAWMODE_CONTRAST (DRAWMODE_SETTINGSLINE | DRAWMODE_SETTINGSFILL | DRAWMODE_SETTINGSTEXT | DRAWMODE_SETTINGSGRADIENT) 64*cdf0e10cSrcweir 65*cdf0e10cSrcweir using namespace ::com::sun::star::uno; 66*cdf0e10cSrcweir using namespace ::com::sun::star::lang; 67*cdf0e10cSrcweir using namespace ::com::sun::star::accessibility; 68*cdf0e10cSrcweir 69*cdf0e10cSrcweir 70*cdf0e10cSrcweir /************************************************************************* 71*cdf0e10cSrcweir |* 72*cdf0e10cSrcweir |* Control zur Darstellung und Auswahl der Eckpunkte (und Mittelpunkt) 73*cdf0e10cSrcweir |* eines Objekts 74*cdf0e10cSrcweir |* 75*cdf0e10cSrcweir \************************************************************************/ 76*cdf0e10cSrcweir 77*cdf0e10cSrcweir Bitmap& SvxRectCtl::GetRectBitmap( void ) 78*cdf0e10cSrcweir { 79*cdf0e10cSrcweir if( !pBitmap ) 80*cdf0e10cSrcweir InitRectBitmap(); 81*cdf0e10cSrcweir 82*cdf0e10cSrcweir return *pBitmap; 83*cdf0e10cSrcweir } 84*cdf0e10cSrcweir 85*cdf0e10cSrcweir SvxRectCtl::SvxRectCtl( Window* pParent, const ResId& rResId, RECT_POINT eRpt, 86*cdf0e10cSrcweir sal_uInt16 nBorder, sal_uInt16 nCircle, CTL_STYLE eStyle ) : 87*cdf0e10cSrcweir 88*cdf0e10cSrcweir Control( pParent, rResId ), 89*cdf0e10cSrcweir 90*cdf0e10cSrcweir pAccContext ( NULL ), 91*cdf0e10cSrcweir nBorderWidth( nBorder ), 92*cdf0e10cSrcweir nRadius ( nCircle), 93*cdf0e10cSrcweir eDefRP ( eRpt ), 94*cdf0e10cSrcweir eCS ( eStyle ), 95*cdf0e10cSrcweir pBitmap ( NULL ), 96*cdf0e10cSrcweir m_nState ( 0 ), 97*cdf0e10cSrcweir mbCompleteDisable(sal_False) 98*cdf0e10cSrcweir { 99*cdf0e10cSrcweir SetMapMode( MAP_100TH_MM ); 100*cdf0e10cSrcweir Resize_Impl(); 101*cdf0e10cSrcweir } 102*cdf0e10cSrcweir 103*cdf0e10cSrcweir // ----------------------------------------------------------------------- 104*cdf0e10cSrcweir 105*cdf0e10cSrcweir SvxRectCtl::~SvxRectCtl() 106*cdf0e10cSrcweir { 107*cdf0e10cSrcweir delete pBitmap; 108*cdf0e10cSrcweir 109*cdf0e10cSrcweir if( pAccContext ) 110*cdf0e10cSrcweir pAccContext->release(); 111*cdf0e10cSrcweir } 112*cdf0e10cSrcweir 113*cdf0e10cSrcweir // ----------------------------------------------------------------------- 114*cdf0e10cSrcweir void SvxRectCtl::Resize() 115*cdf0e10cSrcweir { 116*cdf0e10cSrcweir Resize_Impl(); 117*cdf0e10cSrcweir Control::Resize(); 118*cdf0e10cSrcweir } 119*cdf0e10cSrcweir 120*cdf0e10cSrcweir // ----------------------------------------------------------------------- 121*cdf0e10cSrcweir 122*cdf0e10cSrcweir void SvxRectCtl::Resize_Impl() 123*cdf0e10cSrcweir { 124*cdf0e10cSrcweir aSize = GetOutputSize(); 125*cdf0e10cSrcweir 126*cdf0e10cSrcweir switch( eCS ) 127*cdf0e10cSrcweir { 128*cdf0e10cSrcweir case CS_RECT: 129*cdf0e10cSrcweir case CS_ANGLE: 130*cdf0e10cSrcweir case CS_SHADOW: 131*cdf0e10cSrcweir aPtLT = Point( 0 + nBorderWidth, 0 + nBorderWidth ); 132*cdf0e10cSrcweir aPtMT = Point( aSize.Width() / 2, 0 + nBorderWidth ); 133*cdf0e10cSrcweir aPtRT = Point( aSize.Width() - nBorderWidth, 0 + nBorderWidth ); 134*cdf0e10cSrcweir 135*cdf0e10cSrcweir aPtLM = Point( 0 + nBorderWidth, aSize.Height() / 2 ); 136*cdf0e10cSrcweir aPtMM = Point( aSize.Width() / 2, aSize.Height() / 2 ); 137*cdf0e10cSrcweir aPtRM = Point( aSize.Width() - nBorderWidth, aSize.Height() / 2 ); 138*cdf0e10cSrcweir 139*cdf0e10cSrcweir aPtLB = Point( 0 + nBorderWidth, aSize.Height() - nBorderWidth ); 140*cdf0e10cSrcweir aPtMB = Point( aSize.Width() / 2, aSize.Height() - nBorderWidth ); 141*cdf0e10cSrcweir aPtRB = Point( aSize.Width() - nBorderWidth, aSize.Height() - nBorderWidth ); 142*cdf0e10cSrcweir break; 143*cdf0e10cSrcweir 144*cdf0e10cSrcweir case CS_LINE: 145*cdf0e10cSrcweir aPtLT = Point( 0 + 3 * nBorderWidth, 0 + nBorderWidth ); 146*cdf0e10cSrcweir aPtMT = Point( aSize.Width() / 2, 0 + nBorderWidth ); 147*cdf0e10cSrcweir aPtRT = Point( aSize.Width() - 3 * nBorderWidth, 0 + nBorderWidth ); 148*cdf0e10cSrcweir 149*cdf0e10cSrcweir aPtLM = Point( 0 + 3 * nBorderWidth, aSize.Height() / 2 ); 150*cdf0e10cSrcweir aPtMM = Point( aSize.Width() / 2, aSize.Height() / 2 ); 151*cdf0e10cSrcweir aPtRM = Point( aSize.Width() - 3 * nBorderWidth, aSize.Height() / 2 ); 152*cdf0e10cSrcweir 153*cdf0e10cSrcweir aPtLB = Point( 0 + 3 * nBorderWidth, aSize.Height() - nBorderWidth ); 154*cdf0e10cSrcweir aPtMB = Point( aSize.Width() / 2, aSize.Height() - nBorderWidth ); 155*cdf0e10cSrcweir aPtRB = Point( aSize.Width() - 3 * nBorderWidth, aSize.Height() - nBorderWidth ); 156*cdf0e10cSrcweir break; 157*cdf0e10cSrcweir } 158*cdf0e10cSrcweir Reset(); 159*cdf0e10cSrcweir InitSettings( sal_True, sal_True ); 160*cdf0e10cSrcweir } 161*cdf0e10cSrcweir // ----------------------------------------------------------------------- 162*cdf0e10cSrcweir 163*cdf0e10cSrcweir void SvxRectCtl::InitRectBitmap( void ) 164*cdf0e10cSrcweir { 165*cdf0e10cSrcweir if( pBitmap ) 166*cdf0e10cSrcweir delete pBitmap; 167*cdf0e10cSrcweir 168*cdf0e10cSrcweir const StyleSettings& rStyles = Application::GetSettings().GetStyleSettings(); 169*cdf0e10cSrcweir svtools::ColorConfig aColorConfig; 170*cdf0e10cSrcweir 171*cdf0e10cSrcweir pBitmap = new Bitmap( SVX_RES( RID_SVXCTRL_RECTBTNS ) ); 172*cdf0e10cSrcweir 173*cdf0e10cSrcweir // set bitmap-colors 174*cdf0e10cSrcweir Color aColorAry1[7]; 175*cdf0e10cSrcweir Color aColorAry2[7]; 176*cdf0e10cSrcweir aColorAry1[0] = Color( 0xC0, 0xC0, 0xC0 ); // light-gray 177*cdf0e10cSrcweir aColorAry1[1] = Color( 0xFF, 0xFF, 0x00 ); // yellow 178*cdf0e10cSrcweir aColorAry1[2] = Color( 0xFF, 0xFF, 0xFF ); // white 179*cdf0e10cSrcweir aColorAry1[3] = Color( 0x80, 0x80, 0x80 ); // dark-gray 180*cdf0e10cSrcweir aColorAry1[4] = Color( 0x00, 0x00, 0x00 ); // black 181*cdf0e10cSrcweir aColorAry1[5] = Color( 0x00, 0xFF, 0x00 ); // green 182*cdf0e10cSrcweir aColorAry1[6] = Color( 0x00, 0x00, 0xFF ); // blue 183*cdf0e10cSrcweir aColorAry2[0] = rStyles.GetDialogColor(); // background 184*cdf0e10cSrcweir aColorAry2[1] = rStyles.GetWindowColor(); 185*cdf0e10cSrcweir aColorAry2[2] = rStyles.GetLightColor(); 186*cdf0e10cSrcweir aColorAry2[3] = rStyles.GetShadowColor(); 187*cdf0e10cSrcweir aColorAry2[4] = rStyles.GetDarkShadowColor(); 188*cdf0e10cSrcweir aColorAry2[5] = Color( aColorConfig.GetColorValue( svtools::FONTCOLOR ).nColor ); 189*cdf0e10cSrcweir aColorAry2[6] = rStyles.GetDialogColor(); 190*cdf0e10cSrcweir 191*cdf0e10cSrcweir #ifdef DBG_UTIL 192*cdf0e10cSrcweir static sal_Bool bModify = sal_False; 193*cdf0e10cSrcweir sal_Bool& rModify = bModify; 194*cdf0e10cSrcweir if( rModify ) 195*cdf0e10cSrcweir { 196*cdf0e10cSrcweir static int n = 0; 197*cdf0e10cSrcweir static sal_uInt8 r = 0xFF; 198*cdf0e10cSrcweir static sal_uInt8 g = 0x00; 199*cdf0e10cSrcweir static sal_uInt8 b = 0xFF; 200*cdf0e10cSrcweir int& rn = n; 201*cdf0e10cSrcweir sal_uInt8& rr = r; 202*cdf0e10cSrcweir sal_uInt8& rg = g; 203*cdf0e10cSrcweir sal_uInt8& rb = b; 204*cdf0e10cSrcweir aColorAry2[ rn ] = Color( rr, rg, rb ); 205*cdf0e10cSrcweir } 206*cdf0e10cSrcweir #endif 207*cdf0e10cSrcweir 208*cdf0e10cSrcweir pBitmap->Replace( aColorAry1, aColorAry2, 7, NULL ); 209*cdf0e10cSrcweir } 210*cdf0e10cSrcweir 211*cdf0e10cSrcweir // ----------------------------------------------------------------------- 212*cdf0e10cSrcweir 213*cdf0e10cSrcweir void SvxRectCtl::InitSettings( sal_Bool bForeground, sal_Bool bBackground ) 214*cdf0e10cSrcweir { 215*cdf0e10cSrcweir const StyleSettings& rStyleSettings = Application::GetSettings().GetStyleSettings(); 216*cdf0e10cSrcweir 217*cdf0e10cSrcweir if( bForeground ) 218*cdf0e10cSrcweir { 219*cdf0e10cSrcweir svtools::ColorConfig aColorConfig; 220*cdf0e10cSrcweir Color aTextColor( aColorConfig.GetColorValue( svtools::FONTCOLOR ).nColor ); 221*cdf0e10cSrcweir 222*cdf0e10cSrcweir if ( IsControlForeground() ) 223*cdf0e10cSrcweir aTextColor = GetControlForeground(); 224*cdf0e10cSrcweir SetTextColor( aTextColor ); 225*cdf0e10cSrcweir } 226*cdf0e10cSrcweir 227*cdf0e10cSrcweir if( bBackground ) 228*cdf0e10cSrcweir { 229*cdf0e10cSrcweir if ( IsControlBackground() ) 230*cdf0e10cSrcweir SetBackground( GetControlBackground() ); 231*cdf0e10cSrcweir else 232*cdf0e10cSrcweir SetBackground( rStyleSettings.GetWindowColor() ); 233*cdf0e10cSrcweir } 234*cdf0e10cSrcweir 235*cdf0e10cSrcweir delete pBitmap; 236*cdf0e10cSrcweir pBitmap = NULL; // forces new creating of bitmap 237*cdf0e10cSrcweir 238*cdf0e10cSrcweir Invalidate(); 239*cdf0e10cSrcweir } 240*cdf0e10cSrcweir 241*cdf0e10cSrcweir /************************************************************************* 242*cdf0e10cSrcweir |* 243*cdf0e10cSrcweir |* Das angeklickte Rechteck (3 x 3) wird ermittelt und der Parent (Dialog) 244*cdf0e10cSrcweir |* wird benachrichtigt, dass der Punkt geaendert wurde 245*cdf0e10cSrcweir |* 246*cdf0e10cSrcweir \************************************************************************/ 247*cdf0e10cSrcweir 248*cdf0e10cSrcweir void SvxRectCtl::MouseButtonDown( const MouseEvent& rMEvt ) 249*cdf0e10cSrcweir { 250*cdf0e10cSrcweir // #103516# CompletelyDisabled() added to have a disabled state for SvxRectCtl 251*cdf0e10cSrcweir if(!IsCompletelyDisabled()) 252*cdf0e10cSrcweir { 253*cdf0e10cSrcweir Point aPtLast = aPtNew; 254*cdf0e10cSrcweir 255*cdf0e10cSrcweir aPtNew = GetApproxLogPtFromPixPt( rMEvt.GetPosPixel() ); 256*cdf0e10cSrcweir 257*cdf0e10cSrcweir if( aPtNew == aPtMM && ( eCS == CS_SHADOW || eCS == CS_ANGLE ) ) 258*cdf0e10cSrcweir { 259*cdf0e10cSrcweir aPtNew = aPtLast; 260*cdf0e10cSrcweir } 261*cdf0e10cSrcweir else 262*cdf0e10cSrcweir { 263*cdf0e10cSrcweir Invalidate( Rectangle( aPtLast - Point( nRadius, nRadius ), 264*cdf0e10cSrcweir aPtLast + Point( nRadius, nRadius ) ) ); 265*cdf0e10cSrcweir Invalidate( Rectangle( aPtNew - Point( nRadius, nRadius ), 266*cdf0e10cSrcweir aPtNew + Point( nRadius, nRadius ) ) ); 267*cdf0e10cSrcweir eRP = GetRPFromPoint( aPtNew ); 268*cdf0e10cSrcweir 269*cdf0e10cSrcweir SetActualRP( eRP ); 270*cdf0e10cSrcweir 271*cdf0e10cSrcweir if( WINDOW_TABPAGE == GetParent()->GetType() ) 272*cdf0e10cSrcweir ( (SvxTabPage*) GetParent() )->PointChanged( this, eRP ); 273*cdf0e10cSrcweir } 274*cdf0e10cSrcweir } 275*cdf0e10cSrcweir } 276*cdf0e10cSrcweir 277*cdf0e10cSrcweir // ----------------------------------------------------------------------- 278*cdf0e10cSrcweir 279*cdf0e10cSrcweir void SvxRectCtl::KeyInput( const KeyEvent& rKeyEvt ) 280*cdf0e10cSrcweir { 281*cdf0e10cSrcweir // #103516# CompletelyDisabled() added to have a disabled state for SvxRectCtl 282*cdf0e10cSrcweir if(!IsCompletelyDisabled()) 283*cdf0e10cSrcweir { 284*cdf0e10cSrcweir RECT_POINT eNewRP = eRP; 285*cdf0e10cSrcweir sal_Bool bUseMM = (eCS != CS_SHADOW) && (eCS != CS_ANGLE); 286*cdf0e10cSrcweir 287*cdf0e10cSrcweir switch( rKeyEvt.GetKeyCode().GetCode() ) 288*cdf0e10cSrcweir { 289*cdf0e10cSrcweir case KEY_DOWN: 290*cdf0e10cSrcweir { 291*cdf0e10cSrcweir if( !(m_nState & CS_NOVERT) ) 292*cdf0e10cSrcweir switch( eNewRP ) 293*cdf0e10cSrcweir { 294*cdf0e10cSrcweir case RP_LT: eNewRP = RP_LM; break; 295*cdf0e10cSrcweir case RP_MT: eNewRP = bUseMM ? RP_MM : RP_MB; break; 296*cdf0e10cSrcweir case RP_RT: eNewRP = RP_RM; break; 297*cdf0e10cSrcweir case RP_LM: eNewRP = RP_LB; break; 298*cdf0e10cSrcweir case RP_MM: eNewRP = RP_MB; break; 299*cdf0e10cSrcweir case RP_RM: eNewRP = RP_RB; break; 300*cdf0e10cSrcweir default: ; //prevent warning 301*cdf0e10cSrcweir } 302*cdf0e10cSrcweir } 303*cdf0e10cSrcweir break; 304*cdf0e10cSrcweir case KEY_UP: 305*cdf0e10cSrcweir { 306*cdf0e10cSrcweir if( !(m_nState & CS_NOVERT) ) 307*cdf0e10cSrcweir switch( eNewRP ) 308*cdf0e10cSrcweir { 309*cdf0e10cSrcweir case RP_LM: eNewRP = RP_LT; break; 310*cdf0e10cSrcweir case RP_MM: eNewRP = RP_MT; break; 311*cdf0e10cSrcweir case RP_RM: eNewRP = RP_RT; break; 312*cdf0e10cSrcweir case RP_LB: eNewRP = RP_LM; break; 313*cdf0e10cSrcweir case RP_MB: eNewRP = bUseMM ? RP_MM : RP_MT; break; 314*cdf0e10cSrcweir case RP_RB: eNewRP = RP_RM; break; 315*cdf0e10cSrcweir default: ; //prevent warning 316*cdf0e10cSrcweir } 317*cdf0e10cSrcweir } 318*cdf0e10cSrcweir break; 319*cdf0e10cSrcweir case KEY_LEFT: 320*cdf0e10cSrcweir { 321*cdf0e10cSrcweir if( !(m_nState & CS_NOHORZ) ) 322*cdf0e10cSrcweir switch( eNewRP ) 323*cdf0e10cSrcweir { 324*cdf0e10cSrcweir case RP_MT: eNewRP = RP_LT; break; 325*cdf0e10cSrcweir case RP_RT: eNewRP = RP_MT; break; 326*cdf0e10cSrcweir case RP_MM: eNewRP = RP_LM; break; 327*cdf0e10cSrcweir case RP_RM: eNewRP = bUseMM ? RP_MM : RP_LM; break; 328*cdf0e10cSrcweir case RP_MB: eNewRP = RP_LB; break; 329*cdf0e10cSrcweir case RP_RB: eNewRP = RP_MB; break; 330*cdf0e10cSrcweir default: ; //prevent warning 331*cdf0e10cSrcweir } 332*cdf0e10cSrcweir } 333*cdf0e10cSrcweir break; 334*cdf0e10cSrcweir case KEY_RIGHT: 335*cdf0e10cSrcweir { 336*cdf0e10cSrcweir if( !(m_nState & CS_NOHORZ) ) 337*cdf0e10cSrcweir switch( eNewRP ) 338*cdf0e10cSrcweir { 339*cdf0e10cSrcweir case RP_LT: eNewRP = RP_MT; break; 340*cdf0e10cSrcweir case RP_MT: eNewRP = RP_RT; break; 341*cdf0e10cSrcweir case RP_LM: eNewRP = bUseMM ? RP_MM : RP_RM; break; 342*cdf0e10cSrcweir case RP_MM: eNewRP = RP_RM; break; 343*cdf0e10cSrcweir case RP_LB: eNewRP = RP_MB; break; 344*cdf0e10cSrcweir case RP_MB: eNewRP = RP_RB; break; 345*cdf0e10cSrcweir default: ; //prevent warning 346*cdf0e10cSrcweir } 347*cdf0e10cSrcweir } 348*cdf0e10cSrcweir break; 349*cdf0e10cSrcweir default: 350*cdf0e10cSrcweir Control::KeyInput( rKeyEvt ); 351*cdf0e10cSrcweir return; 352*cdf0e10cSrcweir } 353*cdf0e10cSrcweir if( eNewRP != eRP ) 354*cdf0e10cSrcweir { 355*cdf0e10cSrcweir SetActualRP( eNewRP ); 356*cdf0e10cSrcweir 357*cdf0e10cSrcweir if( WINDOW_TABPAGE == GetParent()->GetType() ) 358*cdf0e10cSrcweir ( (SvxTabPage*) GetParent() )->PointChanged( this, eRP ); 359*cdf0e10cSrcweir 360*cdf0e10cSrcweir SetFocusRect(); 361*cdf0e10cSrcweir } 362*cdf0e10cSrcweir } 363*cdf0e10cSrcweir } 364*cdf0e10cSrcweir 365*cdf0e10cSrcweir // ----------------------------------------------------------------------- 366*cdf0e10cSrcweir 367*cdf0e10cSrcweir void SvxRectCtl::StateChanged( StateChangedType nType ) 368*cdf0e10cSrcweir { 369*cdf0e10cSrcweir if ( nType == STATE_CHANGE_CONTROLFOREGROUND ) 370*cdf0e10cSrcweir InitSettings( sal_True, sal_False ); 371*cdf0e10cSrcweir else if ( nType == STATE_CHANGE_CONTROLBACKGROUND ) 372*cdf0e10cSrcweir InitSettings( sal_False, sal_True ); 373*cdf0e10cSrcweir 374*cdf0e10cSrcweir Window::StateChanged( nType ); 375*cdf0e10cSrcweir } 376*cdf0e10cSrcweir 377*cdf0e10cSrcweir // ----------------------------------------------------------------------- 378*cdf0e10cSrcweir 379*cdf0e10cSrcweir void SvxRectCtl::DataChanged( const DataChangedEvent& rDCEvt ) 380*cdf0e10cSrcweir { 381*cdf0e10cSrcweir if ( ( rDCEvt.GetType() == DATACHANGED_SETTINGS ) && ( rDCEvt.GetFlags() & SETTINGS_STYLE ) ) 382*cdf0e10cSrcweir InitSettings( sal_True, sal_True ); 383*cdf0e10cSrcweir else 384*cdf0e10cSrcweir Window::DataChanged( rDCEvt ); 385*cdf0e10cSrcweir } 386*cdf0e10cSrcweir 387*cdf0e10cSrcweir /************************************************************************* 388*cdf0e10cSrcweir |* 389*cdf0e10cSrcweir |* Zeichnet das Control (Rechteck mit 9 Kreisen) 390*cdf0e10cSrcweir |* 391*cdf0e10cSrcweir \************************************************************************/ 392*cdf0e10cSrcweir 393*cdf0e10cSrcweir void SvxRectCtl::Paint( const Rectangle& ) 394*cdf0e10cSrcweir { 395*cdf0e10cSrcweir Point aPtDiff( PixelToLogic( Point( 1, 1 ) ) ); 396*cdf0e10cSrcweir 397*cdf0e10cSrcweir const StyleSettings& rStyles = Application::GetSettings().GetStyleSettings(); 398*cdf0e10cSrcweir 399*cdf0e10cSrcweir SetLineColor( rStyles.GetDialogColor() ); 400*cdf0e10cSrcweir SetFillColor( rStyles.GetDialogColor() ); 401*cdf0e10cSrcweir DrawRect( Rectangle( Point(0,0), GetOutputSize() ) ); 402*cdf0e10cSrcweir 403*cdf0e10cSrcweir if( IsEnabled() ) 404*cdf0e10cSrcweir SetLineColor( rStyles.GetLabelTextColor() ); 405*cdf0e10cSrcweir else 406*cdf0e10cSrcweir SetLineColor( rStyles.GetShadowColor() ); 407*cdf0e10cSrcweir 408*cdf0e10cSrcweir SetFillColor(); 409*cdf0e10cSrcweir 410*cdf0e10cSrcweir switch( eCS ) 411*cdf0e10cSrcweir { 412*cdf0e10cSrcweir 413*cdf0e10cSrcweir case CS_RECT: 414*cdf0e10cSrcweir case CS_SHADOW: 415*cdf0e10cSrcweir if( !IsEnabled() ) 416*cdf0e10cSrcweir { 417*cdf0e10cSrcweir Color aOldCol = GetLineColor(); 418*cdf0e10cSrcweir SetLineColor( rStyles.GetLightColor() ); 419*cdf0e10cSrcweir DrawRect( Rectangle( aPtLT + aPtDiff, aPtRB + aPtDiff ) ); 420*cdf0e10cSrcweir SetLineColor( aOldCol ); 421*cdf0e10cSrcweir } 422*cdf0e10cSrcweir DrawRect( Rectangle( aPtLT, aPtRB ) ); 423*cdf0e10cSrcweir break; 424*cdf0e10cSrcweir 425*cdf0e10cSrcweir case CS_LINE: 426*cdf0e10cSrcweir if( !IsEnabled() ) 427*cdf0e10cSrcweir { 428*cdf0e10cSrcweir Color aOldCol = GetLineColor(); 429*cdf0e10cSrcweir SetLineColor( rStyles.GetLightColor() ); 430*cdf0e10cSrcweir DrawLine( aPtLM - Point( 2 * nBorderWidth, 0) + aPtDiff, 431*cdf0e10cSrcweir aPtRM + Point( 2 * nBorderWidth, 0 ) + aPtDiff ); 432*cdf0e10cSrcweir SetLineColor( aOldCol ); 433*cdf0e10cSrcweir } 434*cdf0e10cSrcweir DrawLine( aPtLM - Point( 2 * nBorderWidth, 0), 435*cdf0e10cSrcweir aPtRM + Point( 2 * nBorderWidth, 0 ) ); 436*cdf0e10cSrcweir break; 437*cdf0e10cSrcweir 438*cdf0e10cSrcweir case CS_ANGLE: 439*cdf0e10cSrcweir if( !IsEnabled() ) 440*cdf0e10cSrcweir { 441*cdf0e10cSrcweir Color aOldCol = GetLineColor(); 442*cdf0e10cSrcweir SetLineColor( rStyles.GetLightColor() ); 443*cdf0e10cSrcweir DrawLine( aPtLT + aPtDiff, aPtRB + aPtDiff ); 444*cdf0e10cSrcweir DrawLine( aPtLB + aPtDiff, aPtRT + aPtDiff ); 445*cdf0e10cSrcweir DrawLine( aPtLM + aPtDiff, aPtRM + aPtDiff ); 446*cdf0e10cSrcweir DrawLine( aPtMT + aPtDiff, aPtMB + aPtDiff ); 447*cdf0e10cSrcweir SetLineColor( aOldCol ); 448*cdf0e10cSrcweir } 449*cdf0e10cSrcweir DrawLine( aPtLT, aPtRB ); 450*cdf0e10cSrcweir DrawLine( aPtLB, aPtRT ); 451*cdf0e10cSrcweir DrawLine( aPtLM, aPtRM ); 452*cdf0e10cSrcweir DrawLine( aPtMT, aPtMB ); 453*cdf0e10cSrcweir break; 454*cdf0e10cSrcweir 455*cdf0e10cSrcweir default: 456*cdf0e10cSrcweir break; 457*cdf0e10cSrcweir } 458*cdf0e10cSrcweir SetFillColor( GetBackground().GetColor() ); 459*cdf0e10cSrcweir 460*cdf0e10cSrcweir Size aBtnSize( 11, 11 ); 461*cdf0e10cSrcweir Size aDstBtnSize( PixelToLogic( aBtnSize ) ); 462*cdf0e10cSrcweir Point aToCenter( aDstBtnSize.Width() >> 1, aDstBtnSize.Height() >> 1); 463*cdf0e10cSrcweir Point aBtnPnt1( IsEnabled()?0:22,0 ); 464*cdf0e10cSrcweir Point aBtnPnt2( 11,0 ); 465*cdf0e10cSrcweir Point aBtnPnt3( 22,0 ); 466*cdf0e10cSrcweir 467*cdf0e10cSrcweir sal_Bool bNoHorz = (m_nState & CS_NOHORZ) != 0; 468*cdf0e10cSrcweir sal_Bool bNoVert = (m_nState & CS_NOVERT) != 0; 469*cdf0e10cSrcweir 470*cdf0e10cSrcweir Bitmap& rBitmap = GetRectBitmap(); 471*cdf0e10cSrcweir 472*cdf0e10cSrcweir // #103516# CompletelyDisabled() added to have a disabled state for SvxRectCtl 473*cdf0e10cSrcweir if(IsCompletelyDisabled()) 474*cdf0e10cSrcweir { 475*cdf0e10cSrcweir DrawBitmap( aPtLT - aToCenter, aDstBtnSize, aBtnPnt3, aBtnSize, rBitmap ); 476*cdf0e10cSrcweir DrawBitmap( aPtMT - aToCenter, aDstBtnSize, aBtnPnt3, aBtnSize, rBitmap ); 477*cdf0e10cSrcweir DrawBitmap( aPtRT - aToCenter, aDstBtnSize, aBtnPnt3, aBtnSize, rBitmap ); 478*cdf0e10cSrcweir DrawBitmap( aPtLM - aToCenter, aDstBtnSize, aBtnPnt3, aBtnSize, rBitmap ); 479*cdf0e10cSrcweir if( eCS == CS_RECT || eCS == CS_LINE ) 480*cdf0e10cSrcweir DrawBitmap( aPtMM - aToCenter, aDstBtnSize, aBtnPnt3, aBtnSize, rBitmap ); 481*cdf0e10cSrcweir DrawBitmap( aPtRM - aToCenter, aDstBtnSize, aBtnPnt3, aBtnSize, rBitmap ); 482*cdf0e10cSrcweir DrawBitmap( aPtLB - aToCenter, aDstBtnSize, aBtnPnt3, aBtnSize, rBitmap ); 483*cdf0e10cSrcweir DrawBitmap( aPtMB - aToCenter, aDstBtnSize, aBtnPnt3, aBtnSize, rBitmap ); 484*cdf0e10cSrcweir DrawBitmap( aPtRB - aToCenter, aDstBtnSize, aBtnPnt3, aBtnSize, rBitmap ); 485*cdf0e10cSrcweir } 486*cdf0e10cSrcweir else 487*cdf0e10cSrcweir { 488*cdf0e10cSrcweir DrawBitmap( aPtLT - aToCenter, aDstBtnSize, (bNoHorz | bNoVert)?aBtnPnt3:aBtnPnt1, aBtnSize, rBitmap ); 489*cdf0e10cSrcweir DrawBitmap( aPtMT - aToCenter, aDstBtnSize, bNoVert?aBtnPnt3:aBtnPnt1, aBtnSize, rBitmap ); 490*cdf0e10cSrcweir DrawBitmap( aPtRT - aToCenter, aDstBtnSize, (bNoHorz | bNoVert)?aBtnPnt3:aBtnPnt1, aBtnSize, rBitmap ); 491*cdf0e10cSrcweir 492*cdf0e10cSrcweir DrawBitmap( aPtLM - aToCenter, aDstBtnSize, bNoHorz?aBtnPnt3:aBtnPnt1, aBtnSize, rBitmap ); 493*cdf0e10cSrcweir 494*cdf0e10cSrcweir // Mittelpunkt bei Rechteck und Linie 495*cdf0e10cSrcweir if( eCS == CS_RECT || eCS == CS_LINE ) 496*cdf0e10cSrcweir DrawBitmap( aPtMM - aToCenter, aDstBtnSize, aBtnPnt1, aBtnSize, rBitmap ); 497*cdf0e10cSrcweir 498*cdf0e10cSrcweir DrawBitmap( aPtRM - aToCenter, aDstBtnSize, bNoHorz?aBtnPnt3:aBtnPnt1, aBtnSize, rBitmap ); 499*cdf0e10cSrcweir 500*cdf0e10cSrcweir DrawBitmap( aPtLB - aToCenter, aDstBtnSize, (bNoHorz | bNoVert)?aBtnPnt3:aBtnPnt1, aBtnSize, rBitmap ); 501*cdf0e10cSrcweir DrawBitmap( aPtMB - aToCenter, aDstBtnSize, bNoVert?aBtnPnt3:aBtnPnt1, aBtnSize, rBitmap ); 502*cdf0e10cSrcweir DrawBitmap( aPtRB - aToCenter, aDstBtnSize, (bNoHorz | bNoVert)?aBtnPnt3:aBtnPnt1, aBtnSize, rBitmap ); 503*cdf0e10cSrcweir } 504*cdf0e10cSrcweir 505*cdf0e10cSrcweir // draw active button, avoid center pos for angle 506*cdf0e10cSrcweir // #103516# CompletelyDisabled() added to have a disabled state for SvxRectCtl 507*cdf0e10cSrcweir if(!IsCompletelyDisabled()) 508*cdf0e10cSrcweir { 509*cdf0e10cSrcweir if( IsEnabled() && (eCS != CS_ANGLE || aPtNew != aPtMM) ) 510*cdf0e10cSrcweir { 511*cdf0e10cSrcweir Point aCenterPt( aPtNew ); 512*cdf0e10cSrcweir aCenterPt -= aToCenter; 513*cdf0e10cSrcweir 514*cdf0e10cSrcweir DrawBitmap( aCenterPt, aDstBtnSize, aBtnPnt2, aBtnSize, rBitmap ); 515*cdf0e10cSrcweir } 516*cdf0e10cSrcweir } 517*cdf0e10cSrcweir } 518*cdf0e10cSrcweir 519*cdf0e10cSrcweir /************************************************************************* 520*cdf0e10cSrcweir |* 521*cdf0e10cSrcweir |* Konvertiert RECT_POINT in Point 522*cdf0e10cSrcweir |* 523*cdf0e10cSrcweir \************************************************************************/ 524*cdf0e10cSrcweir 525*cdf0e10cSrcweir Point SvxRectCtl::GetPointFromRP( RECT_POINT _eRP) const 526*cdf0e10cSrcweir { 527*cdf0e10cSrcweir switch( _eRP ) 528*cdf0e10cSrcweir { 529*cdf0e10cSrcweir case RP_LT: return aPtLT; 530*cdf0e10cSrcweir case RP_MT: return aPtMT; 531*cdf0e10cSrcweir case RP_RT: return aPtRT; 532*cdf0e10cSrcweir case RP_LM: return aPtLM; 533*cdf0e10cSrcweir case RP_MM: return aPtMM; 534*cdf0e10cSrcweir case RP_RM: return aPtRM; 535*cdf0e10cSrcweir case RP_LB: return aPtLB; 536*cdf0e10cSrcweir case RP_MB: return aPtMB; 537*cdf0e10cSrcweir case RP_RB: return aPtRB; 538*cdf0e10cSrcweir } 539*cdf0e10cSrcweir return( aPtMM ); // default 540*cdf0e10cSrcweir } 541*cdf0e10cSrcweir 542*cdf0e10cSrcweir 543*cdf0e10cSrcweir void SvxRectCtl::SetFocusRect( const Rectangle* pRect ) 544*cdf0e10cSrcweir { 545*cdf0e10cSrcweir HideFocus(); 546*cdf0e10cSrcweir 547*cdf0e10cSrcweir if( pRect ) 548*cdf0e10cSrcweir ShowFocus( *pRect ); 549*cdf0e10cSrcweir else 550*cdf0e10cSrcweir ShowFocus( CalculateFocusRectangle() ); 551*cdf0e10cSrcweir } 552*cdf0e10cSrcweir 553*cdf0e10cSrcweir Point SvxRectCtl::SetActualRPWithoutInvalidate( RECT_POINT eNewRP ) 554*cdf0e10cSrcweir { 555*cdf0e10cSrcweir Point aPtLast = aPtNew; 556*cdf0e10cSrcweir aPtNew = GetPointFromRP( eNewRP ); 557*cdf0e10cSrcweir 558*cdf0e10cSrcweir if( (m_nState & CS_NOHORZ) != 0 ) 559*cdf0e10cSrcweir aPtNew.X() = aPtMM.X(); 560*cdf0e10cSrcweir 561*cdf0e10cSrcweir if( (m_nState & CS_NOVERT) != 0 ) 562*cdf0e10cSrcweir aPtNew.Y() = aPtMM.Y(); 563*cdf0e10cSrcweir 564*cdf0e10cSrcweir eNewRP = GetRPFromPoint( aPtNew ); 565*cdf0e10cSrcweir 566*cdf0e10cSrcweir eDefRP = eNewRP; 567*cdf0e10cSrcweir eRP = eNewRP; 568*cdf0e10cSrcweir 569*cdf0e10cSrcweir return aPtLast; 570*cdf0e10cSrcweir } 571*cdf0e10cSrcweir 572*cdf0e10cSrcweir void SvxRectCtl::GetFocus() 573*cdf0e10cSrcweir { 574*cdf0e10cSrcweir SetFocusRect(); 575*cdf0e10cSrcweir } 576*cdf0e10cSrcweir 577*cdf0e10cSrcweir 578*cdf0e10cSrcweir void SvxRectCtl::LoseFocus() 579*cdf0e10cSrcweir { 580*cdf0e10cSrcweir HideFocus(); 581*cdf0e10cSrcweir } 582*cdf0e10cSrcweir 583*cdf0e10cSrcweir 584*cdf0e10cSrcweir Point SvxRectCtl::GetApproxLogPtFromPixPt( const Point& rPt ) const 585*cdf0e10cSrcweir { 586*cdf0e10cSrcweir Point aPt = PixelToLogic( rPt ); 587*cdf0e10cSrcweir long x; 588*cdf0e10cSrcweir long y; 589*cdf0e10cSrcweir 590*cdf0e10cSrcweir if( ( m_nState & CS_NOHORZ ) == 0 ) 591*cdf0e10cSrcweir { 592*cdf0e10cSrcweir if( aPt.X() < aSize.Width() / 3 ) 593*cdf0e10cSrcweir x = aPtLT.X(); 594*cdf0e10cSrcweir else if( aPt.X() < aSize.Width() * 2 / 3 ) 595*cdf0e10cSrcweir x = aPtMM.X(); 596*cdf0e10cSrcweir else 597*cdf0e10cSrcweir x = aPtRB.X(); 598*cdf0e10cSrcweir } 599*cdf0e10cSrcweir else 600*cdf0e10cSrcweir x = aPtMM.X(); 601*cdf0e10cSrcweir 602*cdf0e10cSrcweir if( ( m_nState & CS_NOVERT ) == 0 ) 603*cdf0e10cSrcweir { 604*cdf0e10cSrcweir if( aPt.Y() < aSize.Height() / 3 ) 605*cdf0e10cSrcweir y = aPtLT.Y(); 606*cdf0e10cSrcweir else if( aPt.Y() < aSize.Height() * 2 / 3 ) 607*cdf0e10cSrcweir y = aPtMM.Y(); 608*cdf0e10cSrcweir else 609*cdf0e10cSrcweir y = aPtRB.Y(); 610*cdf0e10cSrcweir } 611*cdf0e10cSrcweir else 612*cdf0e10cSrcweir y = aPtMM.Y(); 613*cdf0e10cSrcweir 614*cdf0e10cSrcweir return Point( x, y ); 615*cdf0e10cSrcweir } 616*cdf0e10cSrcweir 617*cdf0e10cSrcweir 618*cdf0e10cSrcweir /************************************************************************* 619*cdf0e10cSrcweir |* 620*cdf0e10cSrcweir |* Konvertiert Point in RECT_POINT 621*cdf0e10cSrcweir |* 622*cdf0e10cSrcweir \************************************************************************/ 623*cdf0e10cSrcweir 624*cdf0e10cSrcweir RECT_POINT SvxRectCtl::GetRPFromPoint( Point aPt ) const 625*cdf0e10cSrcweir { 626*cdf0e10cSrcweir if ( aPt == aPtLT) return RP_LT; 627*cdf0e10cSrcweir else if( aPt == aPtMT) return RP_MT; 628*cdf0e10cSrcweir else if( aPt == aPtRT) return RP_RT; 629*cdf0e10cSrcweir else if( aPt == aPtLM) return RP_LM; 630*cdf0e10cSrcweir else if( aPt == aPtRM) return RP_RM; 631*cdf0e10cSrcweir else if( aPt == aPtLB) return RP_LB; 632*cdf0e10cSrcweir else if( aPt == aPtMB) return RP_MB; 633*cdf0e10cSrcweir else if( aPt == aPtRB) return RP_RB; 634*cdf0e10cSrcweir 635*cdf0e10cSrcweir else 636*cdf0e10cSrcweir return RP_MM; // default 637*cdf0e10cSrcweir } 638*cdf0e10cSrcweir 639*cdf0e10cSrcweir /************************************************************************* 640*cdf0e10cSrcweir |* 641*cdf0e10cSrcweir |* Bewirkt den Ursprungszustand des Controls 642*cdf0e10cSrcweir |* 643*cdf0e10cSrcweir \************************************************************************/ 644*cdf0e10cSrcweir 645*cdf0e10cSrcweir void SvxRectCtl::Reset() 646*cdf0e10cSrcweir { 647*cdf0e10cSrcweir aPtNew = GetPointFromRP( eDefRP ); 648*cdf0e10cSrcweir eRP = eDefRP; 649*cdf0e10cSrcweir Invalidate(); 650*cdf0e10cSrcweir } 651*cdf0e10cSrcweir 652*cdf0e10cSrcweir /************************************************************************* 653*cdf0e10cSrcweir |* 654*cdf0e10cSrcweir |* Gibt den aktuell ausgewaehlten RECT_POINT zur�ck 655*cdf0e10cSrcweir |* 656*cdf0e10cSrcweir \************************************************************************/ 657*cdf0e10cSrcweir 658*cdf0e10cSrcweir RECT_POINT SvxRectCtl::GetActualRP() const 659*cdf0e10cSrcweir { 660*cdf0e10cSrcweir return( eRP ); 661*cdf0e10cSrcweir } 662*cdf0e10cSrcweir 663*cdf0e10cSrcweir /************************************************************************* 664*cdf0e10cSrcweir |* 665*cdf0e10cSrcweir |* Gibt den aktuell ausgewaehlten RECT_POINT zur�ck 666*cdf0e10cSrcweir |* 667*cdf0e10cSrcweir \************************************************************************/ 668*cdf0e10cSrcweir 669*cdf0e10cSrcweir void SvxRectCtl::SetActualRP( RECT_POINT eNewRP ) 670*cdf0e10cSrcweir { 671*cdf0e10cSrcweir Point aPtLast( SetActualRPWithoutInvalidate( eNewRP ) ); 672*cdf0e10cSrcweir 673*cdf0e10cSrcweir Invalidate( Rectangle( aPtLast - Point( nRadius, nRadius ), aPtLast + Point( nRadius, nRadius ) ) ); 674*cdf0e10cSrcweir Invalidate( Rectangle( aPtNew - Point( nRadius, nRadius ), aPtNew + Point( nRadius, nRadius ) ) ); 675*cdf0e10cSrcweir 676*cdf0e10cSrcweir // notify accessibility object about change 677*cdf0e10cSrcweir if( pAccContext ) 678*cdf0e10cSrcweir pAccContext->selectChild( eNewRP ); 679*cdf0e10cSrcweir } 680*cdf0e10cSrcweir 681*cdf0e10cSrcweir void SvxRectCtl::SetState( CTL_STATE nState ) 682*cdf0e10cSrcweir { 683*cdf0e10cSrcweir m_nState = nState; 684*cdf0e10cSrcweir 685*cdf0e10cSrcweir Point aPtLast( GetPointFromRP( eRP ) ); 686*cdf0e10cSrcweir Point _aPtNew( aPtLast ); 687*cdf0e10cSrcweir 688*cdf0e10cSrcweir if( (m_nState & CS_NOHORZ) != 0 ) 689*cdf0e10cSrcweir _aPtNew.X() = aPtMM.X(); 690*cdf0e10cSrcweir 691*cdf0e10cSrcweir if( (m_nState & CS_NOVERT) != 0 ) 692*cdf0e10cSrcweir _aPtNew.Y() = aPtMM.Y(); 693*cdf0e10cSrcweir 694*cdf0e10cSrcweir eRP = GetRPFromPoint( _aPtNew ); 695*cdf0e10cSrcweir Invalidate(); 696*cdf0e10cSrcweir 697*cdf0e10cSrcweir if( WINDOW_TABPAGE == GetParent()->GetType() ) 698*cdf0e10cSrcweir ( (SvxTabPage*) GetParent() )->PointChanged( this, eRP ); 699*cdf0e10cSrcweir } 700*cdf0e10cSrcweir 701*cdf0e10cSrcweir sal_uInt8 SvxRectCtl::GetNumOfChilds( void ) const 702*cdf0e10cSrcweir { 703*cdf0e10cSrcweir return ( eCS == CS_ANGLE )? 8 : 9; 704*cdf0e10cSrcweir } 705*cdf0e10cSrcweir 706*cdf0e10cSrcweir Rectangle SvxRectCtl::CalculateFocusRectangle( void ) const 707*cdf0e10cSrcweir { 708*cdf0e10cSrcweir Size aDstBtnSize( PixelToLogic( Size( 15, 15 ) ) ); 709*cdf0e10cSrcweir return Rectangle( aPtNew - Point( aDstBtnSize.Width() >> 1, aDstBtnSize.Height() >> 1 ), aDstBtnSize ); 710*cdf0e10cSrcweir } 711*cdf0e10cSrcweir 712*cdf0e10cSrcweir Rectangle SvxRectCtl::CalculateFocusRectangle( RECT_POINT eRectPoint ) const 713*cdf0e10cSrcweir { 714*cdf0e10cSrcweir Rectangle aRet; 715*cdf0e10cSrcweir RECT_POINT eOldRectPoint = GetActualRP(); 716*cdf0e10cSrcweir 717*cdf0e10cSrcweir if( eOldRectPoint == eRectPoint ) 718*cdf0e10cSrcweir aRet = CalculateFocusRectangle(); 719*cdf0e10cSrcweir else 720*cdf0e10cSrcweir { 721*cdf0e10cSrcweir SvxRectCtl* pThis = const_cast< SvxRectCtl* >( this ); 722*cdf0e10cSrcweir 723*cdf0e10cSrcweir pThis->SetActualRPWithoutInvalidate( eRectPoint ); // no invalidation because it's only temporary! 724*cdf0e10cSrcweir aRet = CalculateFocusRectangle(); 725*cdf0e10cSrcweir 726*cdf0e10cSrcweir pThis->SetActualRPWithoutInvalidate( eOldRectPoint ); // no invalidation because nothing has changed! 727*cdf0e10cSrcweir } 728*cdf0e10cSrcweir 729*cdf0e10cSrcweir return aRet; 730*cdf0e10cSrcweir } 731*cdf0e10cSrcweir 732*cdf0e10cSrcweir Reference< XAccessible > SvxRectCtl::CreateAccessible() 733*cdf0e10cSrcweir { 734*cdf0e10cSrcweir Window* pParent = GetAccessibleParentWindow(); 735*cdf0e10cSrcweir 736*cdf0e10cSrcweir DBG_ASSERT( pParent, "-SvxRectCtl::CreateAccessible(): No Parent!" ); 737*cdf0e10cSrcweir 738*cdf0e10cSrcweir Reference< XAccessible > xAccParent = pParent->GetAccessible(); 739*cdf0e10cSrcweir if( xAccParent.is() ) 740*cdf0e10cSrcweir { 741*cdf0e10cSrcweir pAccContext = new SvxRectCtlAccessibleContext( xAccParent, *this ); 742*cdf0e10cSrcweir pAccContext->acquire(); 743*cdf0e10cSrcweir 744*cdf0e10cSrcweir SetActualRP( GetActualRP() ); 745*cdf0e10cSrcweir 746*cdf0e10cSrcweir return pAccContext; 747*cdf0e10cSrcweir } 748*cdf0e10cSrcweir else 749*cdf0e10cSrcweir return Reference< XAccessible >(); 750*cdf0e10cSrcweir } 751*cdf0e10cSrcweir 752*cdf0e10cSrcweir RECT_POINT SvxRectCtl::GetApproxRPFromPixPt( const ::com::sun::star::awt::Point& r ) const 753*cdf0e10cSrcweir { 754*cdf0e10cSrcweir return GetRPFromPoint( GetApproxLogPtFromPixPt( Point( r.X, r.Y ) ) ); 755*cdf0e10cSrcweir } 756*cdf0e10cSrcweir 757*cdf0e10cSrcweir // #103516# CompletelyDisabled() added to have a disabled state for SvxRectCtl 758*cdf0e10cSrcweir void SvxRectCtl::DoCompletelyDisable(sal_Bool bNew) 759*cdf0e10cSrcweir { 760*cdf0e10cSrcweir mbCompleteDisable = bNew; 761*cdf0e10cSrcweir Invalidate(); 762*cdf0e10cSrcweir } 763*cdf0e10cSrcweir 764*cdf0e10cSrcweir /************************************************************************* 765*cdf0e10cSrcweir |* 766*cdf0e10cSrcweir |* Konstruktor ohne Size-Parameter 767*cdf0e10cSrcweir |* 768*cdf0e10cSrcweir \************************************************************************/ 769*cdf0e10cSrcweir 770*cdf0e10cSrcweir SvxAngleCtl::SvxAngleCtl( Window* pParent, const ResId& rResId ) : 771*cdf0e10cSrcweir 772*cdf0e10cSrcweir SvxRectCtl( pParent, rResId ), 773*cdf0e10cSrcweir 774*cdf0e10cSrcweir aFont( Application::GetSettings().GetStyleSettings().GetAppFont() ) 775*cdf0e10cSrcweir { 776*cdf0e10cSrcweir aFontSize = Size( 250, 400 ); 777*cdf0e10cSrcweir Initialize(); 778*cdf0e10cSrcweir } 779*cdf0e10cSrcweir 780*cdf0e10cSrcweir /************************************************************************* 781*cdf0e10cSrcweir |* 782*cdf0e10cSrcweir |* Konstruktor mit Size-Parameter 783*cdf0e10cSrcweir |* 784*cdf0e10cSrcweir \************************************************************************/ 785*cdf0e10cSrcweir 786*cdf0e10cSrcweir SvxAngleCtl::SvxAngleCtl( Window* pParent, const ResId& rResId, Size _aSize ) : 787*cdf0e10cSrcweir 788*cdf0e10cSrcweir SvxRectCtl( pParent, rResId ), 789*cdf0e10cSrcweir 790*cdf0e10cSrcweir aFont( Application::GetSettings().GetStyleSettings().GetAppFont() ) 791*cdf0e10cSrcweir { 792*cdf0e10cSrcweir aFontSize = _aSize; 793*cdf0e10cSrcweir Initialize(); 794*cdf0e10cSrcweir } 795*cdf0e10cSrcweir 796*cdf0e10cSrcweir /************************************************************************* 797*cdf0e10cSrcweir |* 798*cdf0e10cSrcweir |* Initialisierung 799*cdf0e10cSrcweir |* 800*cdf0e10cSrcweir \************************************************************************/ 801*cdf0e10cSrcweir 802*cdf0e10cSrcweir void SvxAngleCtl::Initialize() 803*cdf0e10cSrcweir { 804*cdf0e10cSrcweir bPositive = sal_True; 805*cdf0e10cSrcweir 806*cdf0e10cSrcweir // aFont.SetName( "Helvetica" ); 807*cdf0e10cSrcweir aFont.SetSize( aFontSize ); 808*cdf0e10cSrcweir aFont.SetWeight( WEIGHT_NORMAL ); 809*cdf0e10cSrcweir aFont.SetTransparent( sal_False ); 810*cdf0e10cSrcweir 811*cdf0e10cSrcweir SetFont( aFont ); 812*cdf0e10cSrcweir } 813*cdf0e10cSrcweir 814*cdf0e10cSrcweir /************************************************************************* 815*cdf0e10cSrcweir |* 816*cdf0e10cSrcweir |* Zeichnet das (Mini-)Koordinatensystem 817*cdf0e10cSrcweir |* 818*cdf0e10cSrcweir \************************************************************************/ 819*cdf0e10cSrcweir 820*cdf0e10cSrcweir void SvxAngleCtl::Paint( const Rectangle& ) 821*cdf0e10cSrcweir { 822*cdf0e10cSrcweir SetLineColor( Color( COL_BLACK ) ); // PEN_DOT ??? 823*cdf0e10cSrcweir DrawLine( aPtLT - Point( 0, 0), aPtRB + Point( 0, 0 ) ); 824*cdf0e10cSrcweir DrawLine( aPtLB - Point( 0, 0), aPtRT + Point( 0, 0 ) ); 825*cdf0e10cSrcweir 826*cdf0e10cSrcweir SetLineColor( Color( COL_BLACK ) ); 827*cdf0e10cSrcweir DrawLine( aPtLM - Point( 0, 0), aPtRM + Point( 0, 0 ) ); 828*cdf0e10cSrcweir DrawLine( aPtMT - Point( 0, 0), aPtMB + Point( 0, 0 ) ); 829*cdf0e10cSrcweir 830*cdf0e10cSrcweir Point aDiff(aFontSize.Width() / 2, aFontSize.Height() / 2); 831*cdf0e10cSrcweir 832*cdf0e10cSrcweir DrawText( aPtLT - aDiff, UniString::CreateFromAscii( 833*cdf0e10cSrcweir RTL_CONSTASCII_STRINGPARAM( "135" ) ) ); 834*cdf0e10cSrcweir DrawText( aPtLM - aDiff, UniString::CreateFromAscii( 835*cdf0e10cSrcweir RTL_CONSTASCII_STRINGPARAM( "180" ) ) ); 836*cdf0e10cSrcweir 837*cdf0e10cSrcweir if ( bPositive ) 838*cdf0e10cSrcweir DrawText( aPtLB - aDiff, UniString::CreateFromAscii( 839*cdf0e10cSrcweir RTL_CONSTASCII_STRINGPARAM( "225" ) ) ); 840*cdf0e10cSrcweir else 841*cdf0e10cSrcweir DrawText( aPtLB - aDiff, UniString::CreateFromAscii( 842*cdf0e10cSrcweir RTL_CONSTASCII_STRINGPARAM( "-135" ) ) ); 843*cdf0e10cSrcweir 844*cdf0e10cSrcweir aDiff.X() = aFontSize.Width(); 845*cdf0e10cSrcweir DrawText( aPtMT - aDiff, UniString::CreateFromAscii( 846*cdf0e10cSrcweir RTL_CONSTASCII_STRINGPARAM( "90" ) ) ); 847*cdf0e10cSrcweir DrawText( aPtRT - aDiff, UniString::CreateFromAscii( 848*cdf0e10cSrcweir RTL_CONSTASCII_STRINGPARAM( "45" ) ) ); 849*cdf0e10cSrcweir aDiff.X() = aDiff .X() * 3 / 2; 850*cdf0e10cSrcweir 851*cdf0e10cSrcweir if ( bPositive ) 852*cdf0e10cSrcweir DrawText( aPtMB - aDiff, UniString::CreateFromAscii( 853*cdf0e10cSrcweir RTL_CONSTASCII_STRINGPARAM( "270" ) ) ); 854*cdf0e10cSrcweir else 855*cdf0e10cSrcweir DrawText( aPtMB - aDiff, UniString::CreateFromAscii( 856*cdf0e10cSrcweir RTL_CONSTASCII_STRINGPARAM( "-90" ) ) ); 857*cdf0e10cSrcweir 858*cdf0e10cSrcweir DrawText( aPtRM - Point( 0, aDiff.Y() ), UniString::CreateFromAscii( 859*cdf0e10cSrcweir RTL_CONSTASCII_STRINGPARAM( "0" ) ) ); 860*cdf0e10cSrcweir aDiff.X() = aFontSize.Width() * 2; 861*cdf0e10cSrcweir 862*cdf0e10cSrcweir if ( bPositive ) 863*cdf0e10cSrcweir DrawText( aPtRB - aDiff, UniString::CreateFromAscii( 864*cdf0e10cSrcweir RTL_CONSTASCII_STRINGPARAM( "315" ) ) ); 865*cdf0e10cSrcweir else 866*cdf0e10cSrcweir DrawText( aPtRB - aDiff, UniString::CreateFromAscii( 867*cdf0e10cSrcweir RTL_CONSTASCII_STRINGPARAM( "-45" ) ) ); 868*cdf0e10cSrcweir } 869*cdf0e10cSrcweir 870*cdf0e10cSrcweir /************************************************************************* 871*cdf0e10cSrcweir |* 872*cdf0e10cSrcweir |* Control zum Editieren von Bitmaps 873*cdf0e10cSrcweir |* 874*cdf0e10cSrcweir \************************************************************************/ 875*cdf0e10cSrcweir 876*cdf0e10cSrcweir SvxPixelCtl::SvxPixelCtl( Window* pParent, const ResId& rResId, sal_uInt16 nNumber ) : 877*cdf0e10cSrcweir Control ( pParent, rResId ), 878*cdf0e10cSrcweir nLines ( nNumber ), 879*cdf0e10cSrcweir bPaintable ( sal_True ) 880*cdf0e10cSrcweir { 881*cdf0e10cSrcweir // SetMapMode( MAP_100TH_MM ); 882*cdf0e10cSrcweir aRectSize = GetOutputSize(); 883*cdf0e10cSrcweir 884*cdf0e10cSrcweir SetPixelColor( Color( COL_BLACK ) ); 885*cdf0e10cSrcweir SetBackgroundColor( Color( COL_WHITE ) ); 886*cdf0e10cSrcweir SetLineColor( Application::GetSettings().GetStyleSettings().GetShadowColor() ); 887*cdf0e10cSrcweir 888*cdf0e10cSrcweir nSquares = nLines * nLines; 889*cdf0e10cSrcweir pPixel = new sal_uInt16[ nSquares ]; 890*cdf0e10cSrcweir rtl_zeroMemory(pPixel, nSquares * sizeof(sal_uInt16)); 891*cdf0e10cSrcweir } 892*cdf0e10cSrcweir 893*cdf0e10cSrcweir /************************************************************************* 894*cdf0e10cSrcweir |* 895*cdf0e10cSrcweir |* Destruktor dealociert dyn. Array 896*cdf0e10cSrcweir |* 897*cdf0e10cSrcweir \************************************************************************/ 898*cdf0e10cSrcweir 899*cdf0e10cSrcweir SvxPixelCtl::~SvxPixelCtl( ) 900*cdf0e10cSrcweir { 901*cdf0e10cSrcweir delete []pPixel; 902*cdf0e10cSrcweir } 903*cdf0e10cSrcweir 904*cdf0e10cSrcweir /************************************************************************* 905*cdf0e10cSrcweir |* 906*cdf0e10cSrcweir |* Wechselt die Vordergrund- ,bzw. Hintergrundfarbe 907*cdf0e10cSrcweir |* 908*cdf0e10cSrcweir \************************************************************************/ 909*cdf0e10cSrcweir 910*cdf0e10cSrcweir void SvxPixelCtl::ChangePixel( sal_uInt16 nPixel ) 911*cdf0e10cSrcweir { 912*cdf0e10cSrcweir if( *( pPixel + nPixel) == 0 ) 913*cdf0e10cSrcweir *( pPixel + nPixel) = 1; // koennte erweitert werden auf mehrere Farben 914*cdf0e10cSrcweir else 915*cdf0e10cSrcweir *( pPixel + nPixel) = 0; 916*cdf0e10cSrcweir } 917*cdf0e10cSrcweir 918*cdf0e10cSrcweir /************************************************************************* 919*cdf0e10cSrcweir |* 920*cdf0e10cSrcweir |* Das angeklickte Rechteck wird ermittelt um die Farbe zu wechseln 921*cdf0e10cSrcweir |* 922*cdf0e10cSrcweir \************************************************************************/ 923*cdf0e10cSrcweir 924*cdf0e10cSrcweir void SvxPixelCtl::MouseButtonDown( const MouseEvent& rMEvt ) 925*cdf0e10cSrcweir { 926*cdf0e10cSrcweir Point aPt = PixelToLogic( rMEvt.GetPosPixel() ); 927*cdf0e10cSrcweir Point aPtTl, aPtBr; 928*cdf0e10cSrcweir sal_uInt16 nX, nY; 929*cdf0e10cSrcweir 930*cdf0e10cSrcweir nX = (sal_uInt16) ( aPt.X() * nLines / aRectSize.Width() ); 931*cdf0e10cSrcweir nY = (sal_uInt16) ( aPt.Y() * nLines / aRectSize.Height() ); 932*cdf0e10cSrcweir 933*cdf0e10cSrcweir ChangePixel( nX + nY * nLines ); 934*cdf0e10cSrcweir 935*cdf0e10cSrcweir aPtTl.X() = aRectSize.Width() * nX / nLines + 1; 936*cdf0e10cSrcweir aPtBr.X() = aRectSize.Width() * (nX + 1) / nLines - 1; 937*cdf0e10cSrcweir aPtTl.Y() = aRectSize.Height() * nY / nLines + 1; 938*cdf0e10cSrcweir aPtBr.Y() = aRectSize.Height() * (nY + 1) / nLines - 1; 939*cdf0e10cSrcweir 940*cdf0e10cSrcweir Invalidate( Rectangle( aPtTl, aPtBr ) ); 941*cdf0e10cSrcweir 942*cdf0e10cSrcweir if( WINDOW_TABPAGE == GetParent()->GetType() ) 943*cdf0e10cSrcweir ( (SvxTabPage*) GetParent() )->PointChanged( this, RP_MM ); // RectPoint ist dummy 944*cdf0e10cSrcweir } 945*cdf0e10cSrcweir 946*cdf0e10cSrcweir /************************************************************************* 947*cdf0e10cSrcweir |* 948*cdf0e10cSrcweir |* Zeichnet das Control (Rechteck mit 9 Kreisen) 949*cdf0e10cSrcweir |* 950*cdf0e10cSrcweir \************************************************************************/ 951*cdf0e10cSrcweir 952*cdf0e10cSrcweir void SvxPixelCtl::Paint( const Rectangle& ) 953*cdf0e10cSrcweir { 954*cdf0e10cSrcweir sal_uInt16 i, j, nTmp; 955*cdf0e10cSrcweir Point aPtTl, aPtBr; 956*cdf0e10cSrcweir 957*cdf0e10cSrcweir if( bPaintable ) 958*cdf0e10cSrcweir { 959*cdf0e10cSrcweir // Linien Zeichnen 960*cdf0e10cSrcweir Control::SetLineColor( aLineColor ); 961*cdf0e10cSrcweir for( i = 1; i < nLines; i++) 962*cdf0e10cSrcweir { 963*cdf0e10cSrcweir // horizontal 964*cdf0e10cSrcweir nTmp = (sal_uInt16) ( aRectSize.Height() * i / nLines ); 965*cdf0e10cSrcweir DrawLine( Point( 0, nTmp ), Point( aRectSize.Width(), nTmp ) ); 966*cdf0e10cSrcweir // vertikal 967*cdf0e10cSrcweir nTmp = (sal_uInt16) ( aRectSize.Width() * i / nLines ); 968*cdf0e10cSrcweir DrawLine( Point( nTmp, 0 ), Point( nTmp, aRectSize.Height() ) ); 969*cdf0e10cSrcweir } 970*cdf0e10cSrcweir 971*cdf0e10cSrcweir // Rechtecke (Quadrate) zeichnen 972*cdf0e10cSrcweir Control::SetLineColor(); 973*cdf0e10cSrcweir sal_uInt16 nLastPixel = *pPixel ? 0 : 1; 974*cdf0e10cSrcweir 975*cdf0e10cSrcweir for( i = 0; i < nLines; i++) 976*cdf0e10cSrcweir { 977*cdf0e10cSrcweir aPtTl.Y() = aRectSize.Height() * i / nLines + 1; 978*cdf0e10cSrcweir aPtBr.Y() = aRectSize.Height() * (i + 1) / nLines - 1; 979*cdf0e10cSrcweir 980*cdf0e10cSrcweir for( j = 0; j < nLines; j++) 981*cdf0e10cSrcweir { 982*cdf0e10cSrcweir aPtTl.X() = aRectSize.Width() * j / nLines + 1; 983*cdf0e10cSrcweir aPtBr.X() = aRectSize.Width() * (j + 1) / nLines - 1; 984*cdf0e10cSrcweir 985*cdf0e10cSrcweir if ( *( pPixel + i * nLines + j ) != nLastPixel ) 986*cdf0e10cSrcweir { 987*cdf0e10cSrcweir nLastPixel = *( pPixel + i * nLines + j ); 988*cdf0e10cSrcweir // Farbe wechseln: 0 -> Hintergrundfarbe 989*cdf0e10cSrcweir SetFillColor( nLastPixel ? aPixelColor : aBackgroundColor ); 990*cdf0e10cSrcweir } 991*cdf0e10cSrcweir DrawRect( Rectangle( aPtTl, aPtBr ) ); 992*cdf0e10cSrcweir } 993*cdf0e10cSrcweir } 994*cdf0e10cSrcweir } // bPaintable 995*cdf0e10cSrcweir else 996*cdf0e10cSrcweir { 997*cdf0e10cSrcweir SetBackground( Wallpaper( Color( COL_LIGHTGRAY ) ) ); 998*cdf0e10cSrcweir Control::SetLineColor( Color( COL_LIGHTRED ) ); 999*cdf0e10cSrcweir DrawLine( Point( 0, 0 ), Point( aRectSize.Width(), aRectSize.Height() ) ); 1000*cdf0e10cSrcweir DrawLine( Point( 0, aRectSize.Height() ), Point( aRectSize.Width(), 0 ) ); 1001*cdf0e10cSrcweir } 1002*cdf0e10cSrcweir } 1003*cdf0e10cSrcweir 1004*cdf0e10cSrcweir /************************************************************************* 1005*cdf0e10cSrcweir |* 1006*cdf0e10cSrcweir |* 1007*cdf0e10cSrcweir |* 1008*cdf0e10cSrcweir \************************************************************************/ 1009*cdf0e10cSrcweir 1010*cdf0e10cSrcweir void SvxPixelCtl::SetXBitmap( const XOBitmap& rXBmp ) 1011*cdf0e10cSrcweir { 1012*cdf0e10cSrcweir if( rXBmp.GetBitmapType() == XBITMAP_8X8 ) 1013*cdf0e10cSrcweir { 1014*cdf0e10cSrcweir aPixelColor = rXBmp.GetPixelColor(); 1015*cdf0e10cSrcweir aBackgroundColor = rXBmp.GetBackgroundColor(); 1016*cdf0e10cSrcweir 1017*cdf0e10cSrcweir sal_uInt16* pArray = rXBmp.GetPixelArray(); 1018*cdf0e10cSrcweir 1019*cdf0e10cSrcweir for( sal_uInt16 i = 0; i < nSquares; i++ ) 1020*cdf0e10cSrcweir *( pPixel + i ) = *( pArray + i ); 1021*cdf0e10cSrcweir } 1022*cdf0e10cSrcweir } 1023*cdf0e10cSrcweir 1024*cdf0e10cSrcweir /************************************************************************* 1025*cdf0e10cSrcweir |* 1026*cdf0e10cSrcweir |* Gibt ein bestimmtes Pixel zurueck 1027*cdf0e10cSrcweir |* 1028*cdf0e10cSrcweir \************************************************************************/ 1029*cdf0e10cSrcweir 1030*cdf0e10cSrcweir sal_uInt16 SvxPixelCtl::GetBitmapPixel( const sal_uInt16 nPixel ) 1031*cdf0e10cSrcweir { 1032*cdf0e10cSrcweir return( *( pPixel + nPixel ) ); 1033*cdf0e10cSrcweir } 1034*cdf0e10cSrcweir 1035*cdf0e10cSrcweir /************************************************************************* 1036*cdf0e10cSrcweir |* 1037*cdf0e10cSrcweir |* Bewirkt den Ursprungszustand des Controls 1038*cdf0e10cSrcweir |* 1039*cdf0e10cSrcweir \************************************************************************/ 1040*cdf0e10cSrcweir 1041*cdf0e10cSrcweir void SvxPixelCtl::Reset() 1042*cdf0e10cSrcweir { 1043*cdf0e10cSrcweir // clear pixel area 1044*cdf0e10cSrcweir rtl_zeroMemory(pPixel, nSquares * sizeof(sal_uInt16)); 1045*cdf0e10cSrcweir Invalidate(); 1046*cdf0e10cSrcweir } 1047*cdf0e10cSrcweir 1048*cdf0e10cSrcweir /************************************************************************* 1049*cdf0e10cSrcweir |* 1050*cdf0e10cSrcweir |* Ctor: BitmapCtl fuer SvxPixelCtl 1051*cdf0e10cSrcweir |* 1052*cdf0e10cSrcweir \************************************************************************/ 1053*cdf0e10cSrcweir 1054*cdf0e10cSrcweir SvxBitmapCtl::SvxBitmapCtl( Window* /*pParent*/, const Size& rSize ) 1055*cdf0e10cSrcweir { 1056*cdf0e10cSrcweir aSize = rSize; 1057*cdf0e10cSrcweir // aVD.SetOutputSizePixel( aSize ); 1058*cdf0e10cSrcweir } 1059*cdf0e10cSrcweir 1060*cdf0e10cSrcweir /************************************************************************* 1061*cdf0e10cSrcweir |* 1062*cdf0e10cSrcweir |* Dtor 1063*cdf0e10cSrcweir |* 1064*cdf0e10cSrcweir \************************************************************************/ 1065*cdf0e10cSrcweir 1066*cdf0e10cSrcweir SvxBitmapCtl::~SvxBitmapCtl() 1067*cdf0e10cSrcweir { 1068*cdf0e10cSrcweir } 1069*cdf0e10cSrcweir 1070*cdf0e10cSrcweir /************************************************************************* 1071*cdf0e10cSrcweir |* 1072*cdf0e10cSrcweir |* BitmapCtl: Gibt die Bitmap zurueck 1073*cdf0e10cSrcweir |* 1074*cdf0e10cSrcweir \************************************************************************/ 1075*cdf0e10cSrcweir 1076*cdf0e10cSrcweir XOBitmap SvxBitmapCtl::GetXBitmap() 1077*cdf0e10cSrcweir { 1078*cdf0e10cSrcweir XOBitmap aXOBitmap( pBmpArray, aPixelColor, aBackgroundColor ); 1079*cdf0e10cSrcweir 1080*cdf0e10cSrcweir return( aXOBitmap ); 1081*cdf0e10cSrcweir } 1082*cdf0e10cSrcweir 1083*cdf0e10cSrcweir /************************************************************************* 1084*cdf0e10cSrcweir |* 1085*cdf0e10cSrcweir |* Fuellt die Listbox mit Farben und Strings 1086*cdf0e10cSrcweir |* 1087*cdf0e10cSrcweir \************************************************************************/ 1088*cdf0e10cSrcweir 1089*cdf0e10cSrcweir void ColorLB::Fill( const XColorTable* pColorTab ) 1090*cdf0e10cSrcweir { 1091*cdf0e10cSrcweir long nCount = pColorTab->Count(); 1092*cdf0e10cSrcweir XColorEntry* pEntry; 1093*cdf0e10cSrcweir SetUpdateMode( sal_False ); 1094*cdf0e10cSrcweir 1095*cdf0e10cSrcweir for( long i = 0; i < nCount; i++ ) 1096*cdf0e10cSrcweir { 1097*cdf0e10cSrcweir pEntry = pColorTab->GetColor( i ); 1098*cdf0e10cSrcweir InsertEntry( pEntry->GetColor(), pEntry->GetName() ); 1099*cdf0e10cSrcweir } 1100*cdf0e10cSrcweir SetUpdateMode( sal_True ); 1101*cdf0e10cSrcweir } 1102*cdf0e10cSrcweir 1103*cdf0e10cSrcweir /************************************************************************/ 1104*cdf0e10cSrcweir 1105*cdf0e10cSrcweir void ColorLB::Append( XColorEntry* pEntry, Bitmap* ) 1106*cdf0e10cSrcweir { 1107*cdf0e10cSrcweir InsertEntry( pEntry->GetColor(), pEntry->GetName() ); 1108*cdf0e10cSrcweir } 1109*cdf0e10cSrcweir 1110*cdf0e10cSrcweir /************************************************************************/ 1111*cdf0e10cSrcweir 1112*cdf0e10cSrcweir void ColorLB::Modify( XColorEntry* pEntry, sal_uInt16 nPos, Bitmap* ) 1113*cdf0e10cSrcweir { 1114*cdf0e10cSrcweir RemoveEntry( nPos ); 1115*cdf0e10cSrcweir InsertEntry( pEntry->GetColor(), pEntry->GetName(), nPos ); 1116*cdf0e10cSrcweir } 1117*cdf0e10cSrcweir 1118*cdf0e10cSrcweir /************************************************************************* 1119*cdf0e10cSrcweir |* 1120*cdf0e10cSrcweir |* Fuellt die Listbox mit Farben und Strings 1121*cdf0e10cSrcweir |* 1122*cdf0e10cSrcweir \************************************************************************/ 1123*cdf0e10cSrcweir 1124*cdf0e10cSrcweir void FillAttrLB::Fill( const XColorTable* pColorTab ) 1125*cdf0e10cSrcweir { 1126*cdf0e10cSrcweir long nCount = pColorTab->Count(); 1127*cdf0e10cSrcweir XColorEntry* pEntry; 1128*cdf0e10cSrcweir SetUpdateMode( sal_False ); 1129*cdf0e10cSrcweir 1130*cdf0e10cSrcweir for( long i = 0; i < nCount; i++ ) 1131*cdf0e10cSrcweir { 1132*cdf0e10cSrcweir pEntry = pColorTab->GetColor( i ); 1133*cdf0e10cSrcweir InsertEntry( pEntry->GetColor(), pEntry->GetName() ); 1134*cdf0e10cSrcweir } 1135*cdf0e10cSrcweir SetUpdateMode( sal_True ); 1136*cdf0e10cSrcweir } 1137*cdf0e10cSrcweir 1138*cdf0e10cSrcweir /************************************************************************* 1139*cdf0e10cSrcweir |* 1140*cdf0e10cSrcweir |* Fuellt die Listbox (vorlaeufig) mit Strings 1141*cdf0e10cSrcweir |* 1142*cdf0e10cSrcweir \************************************************************************/ 1143*cdf0e10cSrcweir 1144*cdf0e10cSrcweir HatchingLB::HatchingLB( Window* pParent, ResId Id, sal_Bool bUserDraw /*= sal_True*/ ) 1145*cdf0e10cSrcweir : ListBox( pParent, Id ), 1146*cdf0e10cSrcweir mpList ( NULL ), 1147*cdf0e10cSrcweir mbUserDraw( bUserDraw ) 1148*cdf0e10cSrcweir { 1149*cdf0e10cSrcweir EnableUserDraw( mbUserDraw ); 1150*cdf0e10cSrcweir } 1151*cdf0e10cSrcweir 1152*cdf0e10cSrcweir HatchingLB::HatchingLB( Window* pParent, WinBits aWB, sal_Bool bUserDraw /*= sal_True*/ ) 1153*cdf0e10cSrcweir : ListBox( pParent, aWB ), 1154*cdf0e10cSrcweir mpList ( NULL ), 1155*cdf0e10cSrcweir mbUserDraw( bUserDraw ) 1156*cdf0e10cSrcweir { 1157*cdf0e10cSrcweir EnableUserDraw( mbUserDraw ); 1158*cdf0e10cSrcweir } 1159*cdf0e10cSrcweir 1160*cdf0e10cSrcweir void HatchingLB::Fill( const XHatchList* pList ) 1161*cdf0e10cSrcweir { 1162*cdf0e10cSrcweir mpList = (XHatchList*)pList; 1163*cdf0e10cSrcweir XHatchEntry* pEntry; 1164*cdf0e10cSrcweir long nCount = pList->Count(); 1165*cdf0e10cSrcweir 1166*cdf0e10cSrcweir SetUpdateMode( sal_False ); 1167*cdf0e10cSrcweir 1168*cdf0e10cSrcweir if( mbUserDraw ) 1169*cdf0e10cSrcweir { 1170*cdf0e10cSrcweir for( long i = 0; i < nCount; i++ ) 1171*cdf0e10cSrcweir InsertEntry( pList->GetHatch( i )->GetName() ); 1172*cdf0e10cSrcweir } 1173*cdf0e10cSrcweir else 1174*cdf0e10cSrcweir { 1175*cdf0e10cSrcweir for( long i = 0; i < nCount; i++ ) 1176*cdf0e10cSrcweir { 1177*cdf0e10cSrcweir pEntry = pList->GetHatch( i ); 1178*cdf0e10cSrcweir Bitmap* pBitmap = pList->GetBitmap( i ); 1179*cdf0e10cSrcweir if( pBitmap ) 1180*cdf0e10cSrcweir InsertEntry( pEntry->GetName(), *pBitmap ); 1181*cdf0e10cSrcweir else 1182*cdf0e10cSrcweir InsertEntry( pEntry->GetName() ); 1183*cdf0e10cSrcweir } 1184*cdf0e10cSrcweir } 1185*cdf0e10cSrcweir 1186*cdf0e10cSrcweir SetUpdateMode( sal_True ); 1187*cdf0e10cSrcweir } 1188*cdf0e10cSrcweir 1189*cdf0e10cSrcweir void HatchingLB::UserDraw( const UserDrawEvent& rUDEvt ) 1190*cdf0e10cSrcweir { 1191*cdf0e10cSrcweir if( mpList != NULL ) 1192*cdf0e10cSrcweir { 1193*cdf0e10cSrcweir // Draw gradient with borderrectangle 1194*cdf0e10cSrcweir const Rectangle& rDrawRect = rUDEvt.GetRect(); 1195*cdf0e10cSrcweir Rectangle aRect( rDrawRect.nLeft+1, rDrawRect.nTop+1, rDrawRect.nLeft+33, rDrawRect.nBottom-1 ); 1196*cdf0e10cSrcweir 1197*cdf0e10cSrcweir sal_Int32 nId = rUDEvt.GetItemId(); 1198*cdf0e10cSrcweir if( nId >= 0 && nId <= mpList->Count() ) 1199*cdf0e10cSrcweir { 1200*cdf0e10cSrcweir OutputDevice* pDevice = rUDEvt.GetDevice(); 1201*cdf0e10cSrcweir 1202*cdf0e10cSrcweir sal_uIntPtr nOldDrawMode = pDevice->GetDrawMode(); 1203*cdf0e10cSrcweir pDevice->SetDrawMode( GetSettings().GetStyleSettings().GetHighContrastMode() ? OUTPUT_DRAWMODE_CONTRAST : OUTPUT_DRAWMODE_COLOR ); 1204*cdf0e10cSrcweir 1205*cdf0e10cSrcweir XHatch& rXHatch = mpList->GetHatch( rUDEvt.GetItemId() )->GetHatch(); 1206*cdf0e10cSrcweir MapMode aMode( MAP_100TH_MM ); 1207*cdf0e10cSrcweir Hatch aHatch( (HatchStyle) rXHatch.GetHatchStyle(), 1208*cdf0e10cSrcweir rXHatch.GetColor(), 1209*cdf0e10cSrcweir rUDEvt.GetDevice()->LogicToPixel( Point( rXHatch.GetDistance(), 0 ), aMode ).X(), 1210*cdf0e10cSrcweir (sal_uInt16)rXHatch.GetAngle() ); 1211*cdf0e10cSrcweir const Polygon aPolygon( aRect ); 1212*cdf0e10cSrcweir const PolyPolygon aPolypoly( aPolygon ); 1213*cdf0e10cSrcweir pDevice->DrawHatch( aPolypoly, aHatch ); 1214*cdf0e10cSrcweir 1215*cdf0e10cSrcweir pDevice->SetLineColor( COL_BLACK ); 1216*cdf0e10cSrcweir pDevice->SetFillColor(); 1217*cdf0e10cSrcweir pDevice->DrawRect( aRect ); 1218*cdf0e10cSrcweir 1219*cdf0e10cSrcweir pDevice->SetDrawMode( nOldDrawMode ); 1220*cdf0e10cSrcweir 1221*cdf0e10cSrcweir // Draw name 1222*cdf0e10cSrcweir pDevice->DrawText( Point( aRect.nRight+7, aRect.nTop-1 ), mpList->GetHatch( rUDEvt.GetItemId() )->GetName() ); 1223*cdf0e10cSrcweir } 1224*cdf0e10cSrcweir } 1225*cdf0e10cSrcweir } 1226*cdf0e10cSrcweir 1227*cdf0e10cSrcweir /************************************************************************/ 1228*cdf0e10cSrcweir 1229*cdf0e10cSrcweir void HatchingLB::Append( XHatchEntry* pEntry, Bitmap* pBmp ) 1230*cdf0e10cSrcweir { 1231*cdf0e10cSrcweir if( pBmp ) 1232*cdf0e10cSrcweir InsertEntry( pEntry->GetName(), *pBmp ); 1233*cdf0e10cSrcweir else 1234*cdf0e10cSrcweir InsertEntry( pEntry->GetName() ); 1235*cdf0e10cSrcweir } 1236*cdf0e10cSrcweir 1237*cdf0e10cSrcweir /************************************************************************/ 1238*cdf0e10cSrcweir 1239*cdf0e10cSrcweir void HatchingLB::Modify( XHatchEntry* pEntry, sal_uInt16 nPos, Bitmap* pBmp ) 1240*cdf0e10cSrcweir { 1241*cdf0e10cSrcweir RemoveEntry( nPos ); 1242*cdf0e10cSrcweir 1243*cdf0e10cSrcweir if( pBmp ) 1244*cdf0e10cSrcweir InsertEntry( pEntry->GetName(), *pBmp, nPos ); 1245*cdf0e10cSrcweir else 1246*cdf0e10cSrcweir InsertEntry( pEntry->GetName(), nPos ); 1247*cdf0e10cSrcweir } 1248*cdf0e10cSrcweir 1249*cdf0e10cSrcweir /************************************************************************/ 1250*cdf0e10cSrcweir 1251*cdf0e10cSrcweir void HatchingLB::SelectEntryByList( const XHatchList* pList, const String& rStr, 1252*cdf0e10cSrcweir const XHatch& rHatch, sal_uInt16 nDist ) 1253*cdf0e10cSrcweir { 1254*cdf0e10cSrcweir long nCount = pList->Count(); 1255*cdf0e10cSrcweir XHatchEntry* pEntry; 1256*cdf0e10cSrcweir sal_Bool bFound = sal_False; 1257*cdf0e10cSrcweir String aStr; 1258*cdf0e10cSrcweir 1259*cdf0e10cSrcweir long i; 1260*cdf0e10cSrcweir for( i = 0; i < nCount && !bFound; i++ ) 1261*cdf0e10cSrcweir { 1262*cdf0e10cSrcweir pEntry = pList->GetHatch( i ); 1263*cdf0e10cSrcweir 1264*cdf0e10cSrcweir aStr = pEntry->GetName(); 1265*cdf0e10cSrcweir 1266*cdf0e10cSrcweir if( rStr == aStr && rHatch == pEntry->GetHatch() ) 1267*cdf0e10cSrcweir bFound = sal_True; 1268*cdf0e10cSrcweir } 1269*cdf0e10cSrcweir if( bFound ) 1270*cdf0e10cSrcweir SelectEntryPos( (sal_uInt16) ( i - 1 + nDist ) ); 1271*cdf0e10cSrcweir } 1272*cdf0e10cSrcweir 1273*cdf0e10cSrcweir /************************************************************************* 1274*cdf0e10cSrcweir |* 1275*cdf0e10cSrcweir |* Fuellt die Listbox (vorlaeufig) mit Strings 1276*cdf0e10cSrcweir |* 1277*cdf0e10cSrcweir \************************************************************************/ 1278*cdf0e10cSrcweir 1279*cdf0e10cSrcweir void FillAttrLB::Fill( const XHatchList* pList ) 1280*cdf0e10cSrcweir { 1281*cdf0e10cSrcweir long nCount = pList->Count(); 1282*cdf0e10cSrcweir XHatchEntry* pEntry; 1283*cdf0e10cSrcweir ListBox::SetUpdateMode( sal_False ); 1284*cdf0e10cSrcweir 1285*cdf0e10cSrcweir for( long i = 0; i < nCount; i++ ) 1286*cdf0e10cSrcweir { 1287*cdf0e10cSrcweir pEntry = pList->GetHatch( i ); 1288*cdf0e10cSrcweir Bitmap* pBitmap = pList->GetBitmap( i ); 1289*cdf0e10cSrcweir if( pBitmap ) 1290*cdf0e10cSrcweir ListBox::InsertEntry( pEntry->GetName(), *pBitmap ); 1291*cdf0e10cSrcweir else 1292*cdf0e10cSrcweir InsertEntry( pEntry->GetName() ); 1293*cdf0e10cSrcweir } 1294*cdf0e10cSrcweir ListBox::SetUpdateMode( sal_True ); 1295*cdf0e10cSrcweir } 1296*cdf0e10cSrcweir 1297*cdf0e10cSrcweir /************************************************************************* 1298*cdf0e10cSrcweir |* 1299*cdf0e10cSrcweir |* Fuellt die Listbox (vorlaeufig) mit Strings 1300*cdf0e10cSrcweir |* 1301*cdf0e10cSrcweir \************************************************************************/ 1302*cdf0e10cSrcweir 1303*cdf0e10cSrcweir GradientLB::GradientLB( Window* pParent, ResId Id, sal_Bool bUserDraw /*= sal_True*/ ) 1304*cdf0e10cSrcweir : ListBox( pParent, Id ), 1305*cdf0e10cSrcweir mpList(NULL), 1306*cdf0e10cSrcweir mbUserDraw( bUserDraw ) 1307*cdf0e10cSrcweir { 1308*cdf0e10cSrcweir EnableUserDraw( mbUserDraw); 1309*cdf0e10cSrcweir } 1310*cdf0e10cSrcweir 1311*cdf0e10cSrcweir GradientLB::GradientLB( Window* pParent, WinBits aWB, sal_Bool bUserDraw /*= sal_True*/ ) 1312*cdf0e10cSrcweir : ListBox( pParent, aWB ), 1313*cdf0e10cSrcweir mpList(NULL), 1314*cdf0e10cSrcweir mbUserDraw( bUserDraw ) 1315*cdf0e10cSrcweir { 1316*cdf0e10cSrcweir EnableUserDraw( mbUserDraw ); 1317*cdf0e10cSrcweir } 1318*cdf0e10cSrcweir 1319*cdf0e10cSrcweir void GradientLB::Fill( const XGradientList* pList ) 1320*cdf0e10cSrcweir { 1321*cdf0e10cSrcweir mpList = (XGradientList*)pList; 1322*cdf0e10cSrcweir XGradientEntry* pEntry; 1323*cdf0e10cSrcweir long nCount = pList->Count(); 1324*cdf0e10cSrcweir 1325*cdf0e10cSrcweir SetUpdateMode( sal_False ); 1326*cdf0e10cSrcweir 1327*cdf0e10cSrcweir if( mbUserDraw ) 1328*cdf0e10cSrcweir { 1329*cdf0e10cSrcweir for( long i = 0; i < nCount; i++ ) 1330*cdf0e10cSrcweir InsertEntry( pList->GetGradient( i )->GetName() ); 1331*cdf0e10cSrcweir } 1332*cdf0e10cSrcweir else 1333*cdf0e10cSrcweir { 1334*cdf0e10cSrcweir for( long i = 0; i < nCount; i++ ) 1335*cdf0e10cSrcweir { 1336*cdf0e10cSrcweir pEntry = pList->GetGradient( i ); 1337*cdf0e10cSrcweir Bitmap* pBitmap = pList->GetBitmap( i ); 1338*cdf0e10cSrcweir if( pBitmap ) 1339*cdf0e10cSrcweir InsertEntry( pEntry->GetName(), *pBitmap ); 1340*cdf0e10cSrcweir else 1341*cdf0e10cSrcweir InsertEntry( pEntry->GetName() ); 1342*cdf0e10cSrcweir } 1343*cdf0e10cSrcweir } 1344*cdf0e10cSrcweir 1345*cdf0e10cSrcweir SetUpdateMode( sal_True ); 1346*cdf0e10cSrcweir } 1347*cdf0e10cSrcweir 1348*cdf0e10cSrcweir void GradientLB::UserDraw( const UserDrawEvent& rUDEvt ) 1349*cdf0e10cSrcweir { 1350*cdf0e10cSrcweir if( mpList != NULL ) 1351*cdf0e10cSrcweir { 1352*cdf0e10cSrcweir // Draw gradient with borderrectangle 1353*cdf0e10cSrcweir const Rectangle& rDrawRect = rUDEvt.GetRect(); 1354*cdf0e10cSrcweir Rectangle aRect( rDrawRect.nLeft+1, rDrawRect.nTop+1, rDrawRect.nLeft+33, rDrawRect.nBottom-1 ); 1355*cdf0e10cSrcweir 1356*cdf0e10cSrcweir sal_Int32 nId = rUDEvt.GetItemId(); 1357*cdf0e10cSrcweir if( nId >= 0 && nId <= mpList->Count() ) 1358*cdf0e10cSrcweir { 1359*cdf0e10cSrcweir OutputDevice* pDevice = rUDEvt.GetDevice(); 1360*cdf0e10cSrcweir 1361*cdf0e10cSrcweir XGradient& rXGrad = mpList->GetGradient( rUDEvt.GetItemId() )->GetGradient(); 1362*cdf0e10cSrcweir Gradient aGradient( (GradientStyle) rXGrad.GetGradientStyle(), rXGrad.GetStartColor(), rXGrad.GetEndColor() ); 1363*cdf0e10cSrcweir aGradient.SetAngle( (sal_uInt16)rXGrad.GetAngle() ); 1364*cdf0e10cSrcweir aGradient.SetBorder( rXGrad.GetBorder() ); 1365*cdf0e10cSrcweir aGradient.SetOfsX( rXGrad.GetXOffset() ); 1366*cdf0e10cSrcweir aGradient.SetOfsY( rXGrad.GetYOffset() ); 1367*cdf0e10cSrcweir aGradient.SetStartIntensity( rXGrad.GetStartIntens() ); 1368*cdf0e10cSrcweir aGradient.SetEndIntensity( rXGrad.GetEndIntens() ); 1369*cdf0e10cSrcweir aGradient.SetSteps( 255 ); 1370*cdf0e10cSrcweir 1371*cdf0e10cSrcweir // #i76307# always paint the preview in LTR, because this is what the document does 1372*cdf0e10cSrcweir Window* pWin = dynamic_cast<Window*>(pDevice); 1373*cdf0e10cSrcweir if( pWin && pWin->IsRTLEnabled() && Application::GetSettings().GetLayoutRTL()) 1374*cdf0e10cSrcweir { 1375*cdf0e10cSrcweir long nWidth = pDevice->GetOutputSize().Width(); 1376*cdf0e10cSrcweir 1377*cdf0e10cSrcweir pWin->EnableRTL( sal_False ); 1378*cdf0e10cSrcweir 1379*cdf0e10cSrcweir Rectangle aMirrorRect( Point( nWidth - aRect.Left() - aRect.GetWidth(), aRect.Top() ), 1380*cdf0e10cSrcweir aRect.GetSize() ); 1381*cdf0e10cSrcweir 1382*cdf0e10cSrcweir pDevice->DrawGradient( aMirrorRect, aGradient ); 1383*cdf0e10cSrcweir 1384*cdf0e10cSrcweir pWin->EnableRTL( sal_True ); 1385*cdf0e10cSrcweir } 1386*cdf0e10cSrcweir else 1387*cdf0e10cSrcweir pDevice->DrawGradient( aRect, aGradient ); 1388*cdf0e10cSrcweir 1389*cdf0e10cSrcweir pDevice->SetLineColor( COL_BLACK ); 1390*cdf0e10cSrcweir pDevice->SetFillColor(); 1391*cdf0e10cSrcweir pDevice->DrawRect( aRect ); 1392*cdf0e10cSrcweir 1393*cdf0e10cSrcweir // Draw name 1394*cdf0e10cSrcweir pDevice->DrawText( Point( aRect.nRight+7, aRect.nTop-1 ), mpList->GetGradient( rUDEvt.GetItemId() )->GetName() ); 1395*cdf0e10cSrcweir } 1396*cdf0e10cSrcweir } 1397*cdf0e10cSrcweir } 1398*cdf0e10cSrcweir 1399*cdf0e10cSrcweir /************************************************************************/ 1400*cdf0e10cSrcweir 1401*cdf0e10cSrcweir void GradientLB::Append( XGradientEntry* pEntry, Bitmap* pBmp ) 1402*cdf0e10cSrcweir { 1403*cdf0e10cSrcweir if( pBmp ) 1404*cdf0e10cSrcweir InsertEntry( pEntry->GetName(), *pBmp ); 1405*cdf0e10cSrcweir else 1406*cdf0e10cSrcweir InsertEntry( pEntry->GetName() ); 1407*cdf0e10cSrcweir } 1408*cdf0e10cSrcweir 1409*cdf0e10cSrcweir /************************************************************************/ 1410*cdf0e10cSrcweir 1411*cdf0e10cSrcweir void GradientLB::Modify( XGradientEntry* pEntry, sal_uInt16 nPos, Bitmap* pBmp ) 1412*cdf0e10cSrcweir { 1413*cdf0e10cSrcweir RemoveEntry( nPos ); 1414*cdf0e10cSrcweir 1415*cdf0e10cSrcweir if( pBmp ) 1416*cdf0e10cSrcweir InsertEntry( pEntry->GetName(), *pBmp, nPos ); 1417*cdf0e10cSrcweir else 1418*cdf0e10cSrcweir InsertEntry( pEntry->GetName(), nPos ); 1419*cdf0e10cSrcweir } 1420*cdf0e10cSrcweir 1421*cdf0e10cSrcweir /************************************************************************/ 1422*cdf0e10cSrcweir 1423*cdf0e10cSrcweir void GradientLB::SelectEntryByList( const XGradientList* pList, const String& rStr, 1424*cdf0e10cSrcweir const XGradient& rGradient, sal_uInt16 nDist ) 1425*cdf0e10cSrcweir { 1426*cdf0e10cSrcweir long nCount = pList->Count(); 1427*cdf0e10cSrcweir XGradientEntry* pEntry; 1428*cdf0e10cSrcweir sal_Bool bFound = sal_False; 1429*cdf0e10cSrcweir String aStr; 1430*cdf0e10cSrcweir 1431*cdf0e10cSrcweir long i; 1432*cdf0e10cSrcweir for( i = 0; i < nCount && !bFound; i++ ) 1433*cdf0e10cSrcweir { 1434*cdf0e10cSrcweir pEntry = pList->GetGradient( i ); 1435*cdf0e10cSrcweir 1436*cdf0e10cSrcweir aStr = pEntry->GetName(); 1437*cdf0e10cSrcweir 1438*cdf0e10cSrcweir if( rStr == aStr && rGradient == pEntry->GetGradient() ) 1439*cdf0e10cSrcweir bFound = sal_True; 1440*cdf0e10cSrcweir } 1441*cdf0e10cSrcweir if( bFound ) 1442*cdf0e10cSrcweir SelectEntryPos( (sal_uInt16) ( i - 1 + nDist ) ); 1443*cdf0e10cSrcweir } 1444*cdf0e10cSrcweir 1445*cdf0e10cSrcweir /************************************************************************* 1446*cdf0e10cSrcweir |* 1447*cdf0e10cSrcweir |* Fuellt die Listbox (vorlaeufig) mit Strings 1448*cdf0e10cSrcweir |* 1449*cdf0e10cSrcweir \************************************************************************/ 1450*cdf0e10cSrcweir 1451*cdf0e10cSrcweir void FillAttrLB::Fill( const XGradientList* pList ) 1452*cdf0e10cSrcweir { 1453*cdf0e10cSrcweir long nCount = pList->Count(); 1454*cdf0e10cSrcweir XGradientEntry* pEntry; 1455*cdf0e10cSrcweir ListBox::SetUpdateMode( sal_False ); 1456*cdf0e10cSrcweir 1457*cdf0e10cSrcweir for( long i = 0; i < nCount; i++ ) 1458*cdf0e10cSrcweir { 1459*cdf0e10cSrcweir pEntry = pList->GetGradient( i ); 1460*cdf0e10cSrcweir Bitmap* pBitmap = pList->GetBitmap( i ); 1461*cdf0e10cSrcweir if( pBitmap ) 1462*cdf0e10cSrcweir ListBox::InsertEntry( pEntry->GetName(), *pBitmap ); 1463*cdf0e10cSrcweir else 1464*cdf0e10cSrcweir InsertEntry( pEntry->GetName() ); 1465*cdf0e10cSrcweir } 1466*cdf0e10cSrcweir ListBox::SetUpdateMode( sal_True ); 1467*cdf0e10cSrcweir } 1468*cdf0e10cSrcweir 1469*cdf0e10cSrcweir /************************************************************************* 1470*cdf0e10cSrcweir |* 1471*cdf0e10cSrcweir |* Konstruktor von BitmapLB 1472*cdf0e10cSrcweir |* 1473*cdf0e10cSrcweir \************************************************************************/ 1474*cdf0e10cSrcweir 1475*cdf0e10cSrcweir BitmapLB::BitmapLB( Window* pParent, ResId Id, sal_Bool bUserDraw /*= sal_True*/ ) 1476*cdf0e10cSrcweir : ListBox( pParent, Id ), 1477*cdf0e10cSrcweir mpList( NULL ), 1478*cdf0e10cSrcweir mbUserDraw( bUserDraw ) 1479*cdf0e10cSrcweir { 1480*cdf0e10cSrcweir aVD.SetOutputSizePixel( Size( 32, 16 ) ); 1481*cdf0e10cSrcweir EnableUserDraw( mbUserDraw ); 1482*cdf0e10cSrcweir } 1483*cdf0e10cSrcweir 1484*cdf0e10cSrcweir /************************************************************************/ 1485*cdf0e10cSrcweir 1486*cdf0e10cSrcweir void BitmapLB::SetVirtualDevice() 1487*cdf0e10cSrcweir { 1488*cdf0e10cSrcweir if( aBitmap.GetSizePixel().Width() > 8 || 1489*cdf0e10cSrcweir aBitmap.GetSizePixel().Height() > 8 ) 1490*cdf0e10cSrcweir { 1491*cdf0e10cSrcweir aVD.DrawBitmap( Point( 0, 0 ), Size( 32, 16 ), aBitmap ); 1492*cdf0e10cSrcweir } 1493*cdf0e10cSrcweir else 1494*cdf0e10cSrcweir { 1495*cdf0e10cSrcweir aVD.DrawBitmap( Point( 0, 0 ), aBitmap ); 1496*cdf0e10cSrcweir aVD.DrawBitmap( Point( 8, 0 ), aBitmap ); 1497*cdf0e10cSrcweir aVD.DrawBitmap( Point( 16, 0 ), aBitmap ); 1498*cdf0e10cSrcweir aVD.DrawBitmap( Point( 24, 0 ), aBitmap ); 1499*cdf0e10cSrcweir aVD.DrawBitmap( Point( 0, 8 ), aBitmap ); 1500*cdf0e10cSrcweir aVD.DrawBitmap( Point( 8, 8 ), aBitmap ); 1501*cdf0e10cSrcweir aVD.DrawBitmap( Point( 16, 8 ), aBitmap ); 1502*cdf0e10cSrcweir aVD.DrawBitmap( Point( 24, 8 ), aBitmap ); 1503*cdf0e10cSrcweir } 1504*cdf0e10cSrcweir } 1505*cdf0e10cSrcweir 1506*cdf0e10cSrcweir /************************************************************************/ 1507*cdf0e10cSrcweir 1508*cdf0e10cSrcweir void BitmapLB::Fill( const XBitmapList* pList ) 1509*cdf0e10cSrcweir { 1510*cdf0e10cSrcweir mpList = (XBitmapList*)pList; 1511*cdf0e10cSrcweir XBitmapEntry* pEntry; 1512*cdf0e10cSrcweir long nCount = pList->Count(); 1513*cdf0e10cSrcweir 1514*cdf0e10cSrcweir SetUpdateMode( sal_False ); 1515*cdf0e10cSrcweir 1516*cdf0e10cSrcweir if( mbUserDraw ) 1517*cdf0e10cSrcweir { 1518*cdf0e10cSrcweir for( long i = 0; i < nCount; i++ ) 1519*cdf0e10cSrcweir InsertEntry( pList->GetBitmap( i )->GetName() ); 1520*cdf0e10cSrcweir } 1521*cdf0e10cSrcweir else 1522*cdf0e10cSrcweir { 1523*cdf0e10cSrcweir for( long i = 0; i < nCount; i++ ) 1524*cdf0e10cSrcweir { 1525*cdf0e10cSrcweir pEntry = pList->GetBitmap( i ); 1526*cdf0e10cSrcweir aBitmap = pEntry->GetXBitmap().GetBitmap(); 1527*cdf0e10cSrcweir 1528*cdf0e10cSrcweir SetVirtualDevice(); 1529*cdf0e10cSrcweir 1530*cdf0e10cSrcweir InsertEntry( pEntry->GetName(), aVD.GetBitmap( Point( 0, 2 ), Size( 32, 12 ) ) ); 1531*cdf0e10cSrcweir } 1532*cdf0e10cSrcweir } 1533*cdf0e10cSrcweir 1534*cdf0e10cSrcweir SetUpdateMode( sal_True ); 1535*cdf0e10cSrcweir } 1536*cdf0e10cSrcweir 1537*cdf0e10cSrcweir void BitmapLB::UserDraw( const UserDrawEvent& rUDEvt ) 1538*cdf0e10cSrcweir { 1539*cdf0e10cSrcweir if( mpList != NULL ) 1540*cdf0e10cSrcweir { 1541*cdf0e10cSrcweir // Draw bitmap 1542*cdf0e10cSrcweir const Rectangle& rDrawRect = rUDEvt.GetRect(); 1543*cdf0e10cSrcweir Rectangle aRect( rDrawRect.nLeft+1, rDrawRect.nTop+1, rDrawRect.nLeft+33, rDrawRect.nBottom-1 ); 1544*cdf0e10cSrcweir 1545*cdf0e10cSrcweir sal_Int32 nId = rUDEvt.GetItemId(); 1546*cdf0e10cSrcweir if( nId >= 0 && nId <= mpList->Count() ) 1547*cdf0e10cSrcweir { 1548*cdf0e10cSrcweir Rectangle aClipRect( rDrawRect.nLeft+1, rDrawRect.nTop+1, rDrawRect.nRight-1, rDrawRect.nBottom-1 ); 1549*cdf0e10cSrcweir 1550*cdf0e10cSrcweir OutputDevice* pDevice = rUDEvt.GetDevice(); 1551*cdf0e10cSrcweir pDevice->SetClipRegion( Region( aClipRect ) ); 1552*cdf0e10cSrcweir 1553*cdf0e10cSrcweir aBitmap = mpList->GetBitmap( nId )->GetXBitmap().GetBitmap(); 1554*cdf0e10cSrcweir 1555*cdf0e10cSrcweir long nPosBaseX = aRect.nLeft; 1556*cdf0e10cSrcweir long nPosBaseY = aRect.nTop; 1557*cdf0e10cSrcweir 1558*cdf0e10cSrcweir if( aBitmap.GetSizePixel().Width() > 8 || 1559*cdf0e10cSrcweir aBitmap.GetSizePixel().Height() > 8 ) 1560*cdf0e10cSrcweir { 1561*cdf0e10cSrcweir pDevice->DrawBitmap( Point( nPosBaseX, nPosBaseY ), Size( 32, 16 ), aBitmap ); 1562*cdf0e10cSrcweir } 1563*cdf0e10cSrcweir else 1564*cdf0e10cSrcweir { 1565*cdf0e10cSrcweir pDevice->DrawBitmap( Point( nPosBaseX+ 0, nPosBaseY+0 ), aBitmap ); 1566*cdf0e10cSrcweir pDevice->DrawBitmap( Point( nPosBaseX+ 8, nPosBaseY+0 ), aBitmap ); 1567*cdf0e10cSrcweir pDevice->DrawBitmap( Point( nPosBaseX+16, nPosBaseY+0 ), aBitmap ); 1568*cdf0e10cSrcweir pDevice->DrawBitmap( Point( nPosBaseX+24, nPosBaseY+0 ), aBitmap ); 1569*cdf0e10cSrcweir pDevice->DrawBitmap( Point( nPosBaseX+ 0, nPosBaseY+8 ), aBitmap ); 1570*cdf0e10cSrcweir pDevice->DrawBitmap( Point( nPosBaseX+ 8, nPosBaseY+8 ), aBitmap ); 1571*cdf0e10cSrcweir pDevice->DrawBitmap( Point( nPosBaseX+16, nPosBaseY+8 ), aBitmap ); 1572*cdf0e10cSrcweir pDevice->DrawBitmap( Point( nPosBaseX+24, nPosBaseY+8 ), aBitmap ); 1573*cdf0e10cSrcweir } 1574*cdf0e10cSrcweir 1575*cdf0e10cSrcweir pDevice->SetClipRegion(); 1576*cdf0e10cSrcweir 1577*cdf0e10cSrcweir // Draw name 1578*cdf0e10cSrcweir pDevice->DrawText( Point( aRect.nRight+7, aRect.nTop-1 ), mpList->GetBitmap( nId )->GetName() ); 1579*cdf0e10cSrcweir } 1580*cdf0e10cSrcweir } 1581*cdf0e10cSrcweir } 1582*cdf0e10cSrcweir 1583*cdf0e10cSrcweir /************************************************************************/ 1584*cdf0e10cSrcweir 1585*cdf0e10cSrcweir void BitmapLB::Append( XBitmapEntry* pEntry, Bitmap* pBmp ) 1586*cdf0e10cSrcweir { 1587*cdf0e10cSrcweir if( pBmp ) 1588*cdf0e10cSrcweir { 1589*cdf0e10cSrcweir aBitmap = pEntry->GetXBitmap().GetBitmap(); 1590*cdf0e10cSrcweir SetVirtualDevice(); 1591*cdf0e10cSrcweir InsertEntry( pEntry->GetName(), aVD.GetBitmap( Point( 0, 2 ), Size( 32, 12 ) ) ); 1592*cdf0e10cSrcweir } 1593*cdf0e10cSrcweir else 1594*cdf0e10cSrcweir InsertEntry( pEntry->GetName() ); 1595*cdf0e10cSrcweir } 1596*cdf0e10cSrcweir 1597*cdf0e10cSrcweir /************************************************************************/ 1598*cdf0e10cSrcweir 1599*cdf0e10cSrcweir void BitmapLB::Modify( XBitmapEntry* pEntry, sal_uInt16 nPos, Bitmap* pBmp ) 1600*cdf0e10cSrcweir { 1601*cdf0e10cSrcweir RemoveEntry( nPos ); 1602*cdf0e10cSrcweir 1603*cdf0e10cSrcweir if( pBmp ) 1604*cdf0e10cSrcweir { 1605*cdf0e10cSrcweir aBitmap = pEntry->GetXBitmap().GetBitmap(); 1606*cdf0e10cSrcweir SetVirtualDevice(); 1607*cdf0e10cSrcweir 1608*cdf0e10cSrcweir InsertEntry( pEntry->GetName(), aVD.GetBitmap( Point( 0, 2 ), Size( 32, 12 ) ), nPos ); 1609*cdf0e10cSrcweir } 1610*cdf0e10cSrcweir else 1611*cdf0e10cSrcweir InsertEntry( pEntry->GetName() ); 1612*cdf0e10cSrcweir } 1613*cdf0e10cSrcweir 1614*cdf0e10cSrcweir /************************************************************************/ 1615*cdf0e10cSrcweir 1616*cdf0e10cSrcweir void BitmapLB::SelectEntryByList( const XBitmapList* pList, const String& rStr, 1617*cdf0e10cSrcweir const Bitmap& ) 1618*cdf0e10cSrcweir { 1619*cdf0e10cSrcweir long nCount = pList->Count(); 1620*cdf0e10cSrcweir XBitmapEntry* pEntry; 1621*cdf0e10cSrcweir sal_Bool bFound = sal_False; 1622*cdf0e10cSrcweir 1623*cdf0e10cSrcweir long i; 1624*cdf0e10cSrcweir for( i = 0; i < nCount && !bFound; i++ ) 1625*cdf0e10cSrcweir { 1626*cdf0e10cSrcweir pEntry = pList->GetBitmap( i ); 1627*cdf0e10cSrcweir 1628*cdf0e10cSrcweir String aStr = pEntry->GetName(); 1629*cdf0e10cSrcweir // Bitmap aBmp = pEntry->GetBitmap(); 1630*cdf0e10cSrcweir 1631*cdf0e10cSrcweir if( rStr == aStr ) 1632*cdf0e10cSrcweir { 1633*cdf0e10cSrcweir bFound = sal_True; 1634*cdf0e10cSrcweir } 1635*cdf0e10cSrcweir } 1636*cdf0e10cSrcweir if( bFound ) 1637*cdf0e10cSrcweir SelectEntryPos( (sal_uInt16) ( i - 1 ) ); 1638*cdf0e10cSrcweir } 1639*cdf0e10cSrcweir 1640*cdf0e10cSrcweir /************************************************************************* 1641*cdf0e10cSrcweir |* 1642*cdf0e10cSrcweir |* Konstruktor von FillAttrLB 1643*cdf0e10cSrcweir |* 1644*cdf0e10cSrcweir \************************************************************************/ 1645*cdf0e10cSrcweir 1646*cdf0e10cSrcweir FillAttrLB::FillAttrLB( Window* pParent, ResId Id ) : 1647*cdf0e10cSrcweir ColorListBox( pParent, Id ) 1648*cdf0e10cSrcweir { 1649*cdf0e10cSrcweir aVD.SetOutputSizePixel( Size( 32, 16 ) ); 1650*cdf0e10cSrcweir } 1651*cdf0e10cSrcweir 1652*cdf0e10cSrcweir /************************************************************************/ 1653*cdf0e10cSrcweir 1654*cdf0e10cSrcweir FillAttrLB::FillAttrLB( Window* pParent, WinBits aWB ) : 1655*cdf0e10cSrcweir ColorListBox( pParent, aWB ) 1656*cdf0e10cSrcweir { 1657*cdf0e10cSrcweir aVD.SetOutputSizePixel( Size( 32, 16 ) ); 1658*cdf0e10cSrcweir } 1659*cdf0e10cSrcweir 1660*cdf0e10cSrcweir /************************************************************************/ 1661*cdf0e10cSrcweir 1662*cdf0e10cSrcweir void FillAttrLB::SetVirtualDevice() 1663*cdf0e10cSrcweir { 1664*cdf0e10cSrcweir if( aBitmap.GetSizePixel().Width() > 8 || 1665*cdf0e10cSrcweir aBitmap.GetSizePixel().Height() > 8 ) 1666*cdf0e10cSrcweir { 1667*cdf0e10cSrcweir aVD.DrawBitmap( Point( 0, 0 ), Size( 32, 16 ), aBitmap ); 1668*cdf0e10cSrcweir } 1669*cdf0e10cSrcweir else 1670*cdf0e10cSrcweir { 1671*cdf0e10cSrcweir aVD.DrawBitmap( Point( 0, 0 ), aBitmap ); 1672*cdf0e10cSrcweir aVD.DrawBitmap( Point( 8, 0 ), aBitmap ); 1673*cdf0e10cSrcweir aVD.DrawBitmap( Point( 16, 0 ), aBitmap ); 1674*cdf0e10cSrcweir aVD.DrawBitmap( Point( 24, 0 ), aBitmap ); 1675*cdf0e10cSrcweir aVD.DrawBitmap( Point( 0, 8 ), aBitmap ); 1676*cdf0e10cSrcweir aVD.DrawBitmap( Point( 8, 8 ), aBitmap ); 1677*cdf0e10cSrcweir aVD.DrawBitmap( Point( 16, 8 ), aBitmap ); 1678*cdf0e10cSrcweir aVD.DrawBitmap( Point( 24, 8 ), aBitmap ); 1679*cdf0e10cSrcweir } 1680*cdf0e10cSrcweir } 1681*cdf0e10cSrcweir 1682*cdf0e10cSrcweir /************************************************************************/ 1683*cdf0e10cSrcweir 1684*cdf0e10cSrcweir void FillAttrLB::Fill( const XBitmapList* pList ) 1685*cdf0e10cSrcweir { 1686*cdf0e10cSrcweir long nCount = pList->Count(); 1687*cdf0e10cSrcweir XBitmapEntry* pEntry; 1688*cdf0e10cSrcweir ListBox::SetUpdateMode( sal_False ); 1689*cdf0e10cSrcweir 1690*cdf0e10cSrcweir for( long i = 0; i < nCount; i++ ) 1691*cdf0e10cSrcweir { 1692*cdf0e10cSrcweir pEntry = pList->GetBitmap( i ); 1693*cdf0e10cSrcweir aBitmap = pEntry->GetXBitmap().GetBitmap(); 1694*cdf0e10cSrcweir 1695*cdf0e10cSrcweir SetVirtualDevice(); 1696*cdf0e10cSrcweir 1697*cdf0e10cSrcweir ListBox::InsertEntry( pEntry->GetName(), aVD.GetBitmap( Point( 0, 2 ), Size( 32, 12 ) ) ); 1698*cdf0e10cSrcweir } 1699*cdf0e10cSrcweir ListBox::SetUpdateMode( sal_True ); 1700*cdf0e10cSrcweir } 1701*cdf0e10cSrcweir 1702*cdf0e10cSrcweir /************************************************************************/ 1703*cdf0e10cSrcweir 1704*cdf0e10cSrcweir void FillAttrLB::SelectEntryByList( const XBitmapList* pList, const String& rStr, 1705*cdf0e10cSrcweir const Bitmap& /*rBmp*/) 1706*cdf0e10cSrcweir { 1707*cdf0e10cSrcweir long nCount = pList->Count(); 1708*cdf0e10cSrcweir XBitmapEntry* pEntry; 1709*cdf0e10cSrcweir sal_Bool bFound = sal_False; 1710*cdf0e10cSrcweir 1711*cdf0e10cSrcweir long i; 1712*cdf0e10cSrcweir for( i = 0; i < nCount && !bFound; i++ ) 1713*cdf0e10cSrcweir { 1714*cdf0e10cSrcweir pEntry = pList->GetBitmap( i ); 1715*cdf0e10cSrcweir 1716*cdf0e10cSrcweir String aStr = pEntry->GetName(); 1717*cdf0e10cSrcweir // Bitmap aBmp = pEntry->GetBitmap(); 1718*cdf0e10cSrcweir 1719*cdf0e10cSrcweir if( rStr == aStr ) 1720*cdf0e10cSrcweir { 1721*cdf0e10cSrcweir bFound = sal_True; 1722*cdf0e10cSrcweir } 1723*cdf0e10cSrcweir /* 1724*cdf0e10cSrcweir if( rStr == aStr && rBmp == aBmp ) 1725*cdf0e10cSrcweir bFound = sal_True; */ 1726*cdf0e10cSrcweir } 1727*cdf0e10cSrcweir if( bFound ) 1728*cdf0e10cSrcweir SelectEntryPos( (sal_uInt16) ( i - 1 ) ); 1729*cdf0e10cSrcweir } 1730*cdf0e10cSrcweir 1731*cdf0e10cSrcweir /************************************************************************* 1732*cdf0e10cSrcweir |* 1733*cdf0e10cSrcweir |* Fuellt die Listbox (vorlaeufig) mit Strings 1734*cdf0e10cSrcweir |* 1735*cdf0e10cSrcweir \************************************************************************/ 1736*cdf0e10cSrcweir 1737*cdf0e10cSrcweir void FillTypeLB::Fill() 1738*cdf0e10cSrcweir { 1739*cdf0e10cSrcweir SetUpdateMode( sal_False ); 1740*cdf0e10cSrcweir InsertEntry( String( SVX_RES( RID_SVXSTR_INVISIBLE ) ) ); 1741*cdf0e10cSrcweir InsertEntry( String( SVX_RES( RID_SVXSTR_COLOR ) ) ); 1742*cdf0e10cSrcweir InsertEntry( String( SVX_RES( RID_SVXSTR_GRADIENT ) ) ); 1743*cdf0e10cSrcweir InsertEntry( String( SVX_RES( RID_SVXSTR_HATCH ) ) ); 1744*cdf0e10cSrcweir InsertEntry( String( SVX_RES( RID_SVXSTR_BITMAP ) ) ); 1745*cdf0e10cSrcweir SetUpdateMode( sal_True ); 1746*cdf0e10cSrcweir } 1747*cdf0e10cSrcweir 1748*cdf0e10cSrcweir /************************************************************************* 1749*cdf0e10cSrcweir |* 1750*cdf0e10cSrcweir |* Fuellt die Listbox (vorlaeufig) mit Strings 1751*cdf0e10cSrcweir |* 1752*cdf0e10cSrcweir \************************************************************************/ 1753*cdf0e10cSrcweir 1754*cdf0e10cSrcweir void LineLB::Fill( const XDashList* pList ) 1755*cdf0e10cSrcweir { 1756*cdf0e10cSrcweir long nCount = pList->Count(); 1757*cdf0e10cSrcweir XDashEntry* pEntry; 1758*cdf0e10cSrcweir SetUpdateMode( sal_False ); 1759*cdf0e10cSrcweir 1760*cdf0e10cSrcweir for( long i = 0; i < nCount; i++ ) 1761*cdf0e10cSrcweir { 1762*cdf0e10cSrcweir pEntry = pList->GetDash( i ); 1763*cdf0e10cSrcweir Bitmap* pBitmap = const_cast<XDashList*>(pList)->CreateBitmapForUI( i ); 1764*cdf0e10cSrcweir if( pBitmap ) 1765*cdf0e10cSrcweir { 1766*cdf0e10cSrcweir InsertEntry( pEntry->GetName(), *pBitmap ); 1767*cdf0e10cSrcweir delete pBitmap; 1768*cdf0e10cSrcweir } 1769*cdf0e10cSrcweir else 1770*cdf0e10cSrcweir InsertEntry( pEntry->GetName() ); 1771*cdf0e10cSrcweir } 1772*cdf0e10cSrcweir SetUpdateMode( sal_True ); 1773*cdf0e10cSrcweir } 1774*cdf0e10cSrcweir 1775*cdf0e10cSrcweir void LineLB::FillStyles() 1776*cdf0e10cSrcweir { 1777*cdf0e10cSrcweir ResMgr& rMgr = DIALOG_MGR(); 1778*cdf0e10cSrcweir 1779*cdf0e10cSrcweir // Linienstile 1780*cdf0e10cSrcweir Clear(); 1781*cdf0e10cSrcweir InsertEntry( String( ResId( RID_SVXSTR_INVISIBLE, rMgr ) ) ); 1782*cdf0e10cSrcweir 1783*cdf0e10cSrcweir const StyleSettings& rStyles = Application::GetSettings().GetStyleSettings(); 1784*cdf0e10cSrcweir Bitmap aBitmap ( SVX_RES ( RID_SVXCTRL_LINECTRL ) ); 1785*cdf0e10cSrcweir Color aSourceColors[2]; 1786*cdf0e10cSrcweir Color aDestColors[2]; 1787*cdf0e10cSrcweir 1788*cdf0e10cSrcweir aSourceColors[0] = Color( COL_WHITE ); 1789*cdf0e10cSrcweir aSourceColors[1] = Color( COL_BLACK ); 1790*cdf0e10cSrcweir 1791*cdf0e10cSrcweir aDestColors[0] = rStyles.GetFieldColor(); 1792*cdf0e10cSrcweir aDestColors[1] = rStyles.GetFieldTextColor(); 1793*cdf0e10cSrcweir 1794*cdf0e10cSrcweir aBitmap.Replace ( aSourceColors, aDestColors, 2 ); 1795*cdf0e10cSrcweir Image aSolidLine ( aBitmap ); 1796*cdf0e10cSrcweir InsertEntry( String( ResId( RID_SVXSTR_SOLID, rMgr ) ), aSolidLine ); 1797*cdf0e10cSrcweir } 1798*cdf0e10cSrcweir 1799*cdf0e10cSrcweir /************************************************************************/ 1800*cdf0e10cSrcweir 1801*cdf0e10cSrcweir void LineLB::Append( XDashEntry* pEntry, Bitmap* pBmp ) 1802*cdf0e10cSrcweir { 1803*cdf0e10cSrcweir if( pBmp ) 1804*cdf0e10cSrcweir InsertEntry( pEntry->GetName(), *pBmp ); 1805*cdf0e10cSrcweir else 1806*cdf0e10cSrcweir InsertEntry( pEntry->GetName() ); 1807*cdf0e10cSrcweir } 1808*cdf0e10cSrcweir 1809*cdf0e10cSrcweir /************************************************************************/ 1810*cdf0e10cSrcweir 1811*cdf0e10cSrcweir void LineLB::Modify( XDashEntry* pEntry, sal_uInt16 nPos, Bitmap* pBmp ) 1812*cdf0e10cSrcweir { 1813*cdf0e10cSrcweir RemoveEntry( nPos ); 1814*cdf0e10cSrcweir 1815*cdf0e10cSrcweir if( pBmp ) 1816*cdf0e10cSrcweir InsertEntry( pEntry->GetName(), *pBmp, nPos ); 1817*cdf0e10cSrcweir else 1818*cdf0e10cSrcweir InsertEntry( pEntry->GetName(), nPos ); 1819*cdf0e10cSrcweir } 1820*cdf0e10cSrcweir 1821*cdf0e10cSrcweir /************************************************************************/ 1822*cdf0e10cSrcweir 1823*cdf0e10cSrcweir void LineLB::SelectEntryByList( const XDashList* pList, const String& rStr, 1824*cdf0e10cSrcweir const XDash& rDash, sal_uInt16 nDist ) 1825*cdf0e10cSrcweir { 1826*cdf0e10cSrcweir long nCount = pList->Count(); 1827*cdf0e10cSrcweir XDashEntry* pEntry; 1828*cdf0e10cSrcweir sal_Bool bFound = sal_False; 1829*cdf0e10cSrcweir String aStr; 1830*cdf0e10cSrcweir XDash aDash; 1831*cdf0e10cSrcweir 1832*cdf0e10cSrcweir long i; 1833*cdf0e10cSrcweir for( i = 0; i < nCount && !bFound; i++ ) 1834*cdf0e10cSrcweir { 1835*cdf0e10cSrcweir pEntry = pList->GetDash( i ); 1836*cdf0e10cSrcweir 1837*cdf0e10cSrcweir aStr = pEntry->GetName(); 1838*cdf0e10cSrcweir aDash = pEntry->GetDash(); 1839*cdf0e10cSrcweir 1840*cdf0e10cSrcweir if( rStr == aStr && rDash == aDash ) 1841*cdf0e10cSrcweir bFound = sal_True; 1842*cdf0e10cSrcweir } 1843*cdf0e10cSrcweir if( bFound ) 1844*cdf0e10cSrcweir SelectEntryPos( (sal_uInt16) ( i - 1 + nDist ) ); 1845*cdf0e10cSrcweir } 1846*cdf0e10cSrcweir 1847*cdf0e10cSrcweir /************************************************************************* 1848*cdf0e10cSrcweir |* 1849*cdf0e10cSrcweir |* Fuellt die Listbox (vorlaeufig) mit Strings 1850*cdf0e10cSrcweir |* 1851*cdf0e10cSrcweir \************************************************************************/ 1852*cdf0e10cSrcweir 1853*cdf0e10cSrcweir void LineEndLB::Fill( const XLineEndList* pList, sal_Bool bStart ) 1854*cdf0e10cSrcweir { 1855*cdf0e10cSrcweir long nCount = pList->Count(); 1856*cdf0e10cSrcweir XLineEndEntry* pEntry; 1857*cdf0e10cSrcweir VirtualDevice aVD; 1858*cdf0e10cSrcweir SetUpdateMode( sal_False ); 1859*cdf0e10cSrcweir 1860*cdf0e10cSrcweir for( long i = 0; i < nCount; i++ ) 1861*cdf0e10cSrcweir { 1862*cdf0e10cSrcweir pEntry = pList->GetLineEnd( i ); 1863*cdf0e10cSrcweir Bitmap* pBitmap = const_cast<XLineEndList*>(pList)->CreateBitmapForUI( i ); 1864*cdf0e10cSrcweir if( pBitmap ) 1865*cdf0e10cSrcweir { 1866*cdf0e10cSrcweir Size aBmpSize( pBitmap->GetSizePixel() ); 1867*cdf0e10cSrcweir aVD.SetOutputSizePixel( aBmpSize, sal_False ); 1868*cdf0e10cSrcweir aVD.DrawBitmap( Point(), *pBitmap ); 1869*cdf0e10cSrcweir InsertEntry( pEntry->GetName(), 1870*cdf0e10cSrcweir aVD.GetBitmap( bStart ? Point() : Point( aBmpSize.Width() / 2, 0 ), 1871*cdf0e10cSrcweir Size( aBmpSize.Width() / 2, aBmpSize.Height() ) ) ); 1872*cdf0e10cSrcweir 1873*cdf0e10cSrcweir delete pBitmap; 1874*cdf0e10cSrcweir } 1875*cdf0e10cSrcweir else 1876*cdf0e10cSrcweir InsertEntry( pEntry->GetName() ); 1877*cdf0e10cSrcweir } 1878*cdf0e10cSrcweir SetUpdateMode( sal_True ); 1879*cdf0e10cSrcweir } 1880*cdf0e10cSrcweir 1881*cdf0e10cSrcweir /************************************************************************/ 1882*cdf0e10cSrcweir 1883*cdf0e10cSrcweir void LineEndLB::Append( XLineEndEntry* pEntry, Bitmap* pBmp, 1884*cdf0e10cSrcweir sal_Bool bStart ) 1885*cdf0e10cSrcweir { 1886*cdf0e10cSrcweir if( pBmp ) 1887*cdf0e10cSrcweir { 1888*cdf0e10cSrcweir VirtualDevice aVD; 1889*cdf0e10cSrcweir Size aBmpSize( pBmp->GetSizePixel() ); 1890*cdf0e10cSrcweir 1891*cdf0e10cSrcweir aVD.SetOutputSizePixel( aBmpSize, sal_False ); 1892*cdf0e10cSrcweir aVD.DrawBitmap( Point(), *pBmp ); 1893*cdf0e10cSrcweir InsertEntry( pEntry->GetName(), 1894*cdf0e10cSrcweir aVD.GetBitmap( bStart ? Point() : Point( aBmpSize.Width() / 2, 0 ), 1895*cdf0e10cSrcweir Size( aBmpSize.Width() / 2, aBmpSize.Height() ) ) ); 1896*cdf0e10cSrcweir } 1897*cdf0e10cSrcweir else 1898*cdf0e10cSrcweir InsertEntry( pEntry->GetName() ); 1899*cdf0e10cSrcweir } 1900*cdf0e10cSrcweir 1901*cdf0e10cSrcweir /************************************************************************/ 1902*cdf0e10cSrcweir 1903*cdf0e10cSrcweir void LineEndLB::Modify( XLineEndEntry* pEntry, sal_uInt16 nPos, Bitmap* pBmp, 1904*cdf0e10cSrcweir sal_Bool bStart ) 1905*cdf0e10cSrcweir { 1906*cdf0e10cSrcweir RemoveEntry( nPos ); 1907*cdf0e10cSrcweir 1908*cdf0e10cSrcweir if( pBmp ) 1909*cdf0e10cSrcweir { 1910*cdf0e10cSrcweir VirtualDevice aVD; 1911*cdf0e10cSrcweir Size aBmpSize( pBmp->GetSizePixel() ); 1912*cdf0e10cSrcweir 1913*cdf0e10cSrcweir aVD.SetOutputSizePixel( aBmpSize, sal_False ); 1914*cdf0e10cSrcweir aVD.DrawBitmap( Point(), *pBmp ); 1915*cdf0e10cSrcweir InsertEntry( pEntry->GetName(), 1916*cdf0e10cSrcweir aVD.GetBitmap( bStart ? Point() : Point( aBmpSize.Width() / 2, 0 ), 1917*cdf0e10cSrcweir Size( aBmpSize.Width() / 2, aBmpSize.Height() ) ), nPos ); 1918*cdf0e10cSrcweir } 1919*cdf0e10cSrcweir else 1920*cdf0e10cSrcweir InsertEntry( pEntry->GetName(), nPos ); 1921*cdf0e10cSrcweir } 1922*cdf0e10cSrcweir 1923*cdf0e10cSrcweir ////////////////////////////////////////////////////////////////////////////// 1924*cdf0e10cSrcweir 1925*cdf0e10cSrcweir void SvxPreviewBase::InitSettings(bool bForeground, bool bBackground) 1926*cdf0e10cSrcweir { 1927*cdf0e10cSrcweir const StyleSettings& rStyleSettings = Application::GetSettings().GetStyleSettings(); 1928*cdf0e10cSrcweir 1929*cdf0e10cSrcweir if(bForeground) 1930*cdf0e10cSrcweir { 1931*cdf0e10cSrcweir svtools::ColorConfig aColorConfig; 1932*cdf0e10cSrcweir Color aTextColor(aColorConfig.GetColorValue(svtools::FONTCOLOR).nColor); 1933*cdf0e10cSrcweir 1934*cdf0e10cSrcweir if(IsControlForeground()) 1935*cdf0e10cSrcweir { 1936*cdf0e10cSrcweir aTextColor = GetControlForeground(); 1937*cdf0e10cSrcweir } 1938*cdf0e10cSrcweir 1939*cdf0e10cSrcweir getBufferDevice().SetTextColor(aTextColor); 1940*cdf0e10cSrcweir } 1941*cdf0e10cSrcweir 1942*cdf0e10cSrcweir if(bBackground) 1943*cdf0e10cSrcweir { 1944*cdf0e10cSrcweir if(IsControlBackground()) 1945*cdf0e10cSrcweir { 1946*cdf0e10cSrcweir getBufferDevice().SetBackground(GetControlBackground()); 1947*cdf0e10cSrcweir } 1948*cdf0e10cSrcweir else 1949*cdf0e10cSrcweir { 1950*cdf0e10cSrcweir getBufferDevice().SetBackground(rStyleSettings.GetWindowColor()); 1951*cdf0e10cSrcweir } 1952*cdf0e10cSrcweir } 1953*cdf0e10cSrcweir 1954*cdf0e10cSrcweir // do not paint background self, it gets painted buffered 1955*cdf0e10cSrcweir SetControlBackground(); 1956*cdf0e10cSrcweir SetBackground(); 1957*cdf0e10cSrcweir 1958*cdf0e10cSrcweir Invalidate(); 1959*cdf0e10cSrcweir } 1960*cdf0e10cSrcweir 1961*cdf0e10cSrcweir SvxPreviewBase::SvxPreviewBase( Window* pParent, const ResId& rResId ) 1962*cdf0e10cSrcweir : Control( pParent, rResId ), 1963*cdf0e10cSrcweir mpModel( new SdrModel() ), 1964*cdf0e10cSrcweir mpBufferDevice( new VirtualDevice(*this) ) 1965*cdf0e10cSrcweir { 1966*cdf0e10cSrcweir // Draw the control's border as a flat thin black line. 1967*cdf0e10cSrcweir SetBorderStyle(WINDOW_BORDER_MONO); 1968*cdf0e10cSrcweir SetDrawMode( GetSettings().GetStyleSettings().GetHighContrastMode() ? OUTPUT_DRAWMODE_CONTRAST : OUTPUT_DRAWMODE_COLOR ); 1969*cdf0e10cSrcweir SetMapMode(MAP_100TH_MM); 1970*cdf0e10cSrcweir 1971*cdf0e10cSrcweir // init model 1972*cdf0e10cSrcweir mpModel->GetItemPool().FreezeIdRanges(); 1973*cdf0e10cSrcweir } 1974*cdf0e10cSrcweir 1975*cdf0e10cSrcweir SvxPreviewBase::~SvxPreviewBase() 1976*cdf0e10cSrcweir { 1977*cdf0e10cSrcweir delete mpModel; 1978*cdf0e10cSrcweir delete mpBufferDevice; 1979*cdf0e10cSrcweir } 1980*cdf0e10cSrcweir 1981*cdf0e10cSrcweir void SvxPreviewBase::LocalPrePaint() 1982*cdf0e10cSrcweir { 1983*cdf0e10cSrcweir // init BufferDevice 1984*cdf0e10cSrcweir if(mpBufferDevice->GetOutputSizePixel() != GetOutputSizePixel()) 1985*cdf0e10cSrcweir { 1986*cdf0e10cSrcweir mpBufferDevice->SetDrawMode(GetDrawMode()); 1987*cdf0e10cSrcweir mpBufferDevice->SetSettings(GetSettings()); 1988*cdf0e10cSrcweir mpBufferDevice->SetAntialiasing(GetAntialiasing()); 1989*cdf0e10cSrcweir mpBufferDevice->SetOutputSizePixel(GetOutputSizePixel()); 1990*cdf0e10cSrcweir mpBufferDevice->SetMapMode(GetMapMode()); 1991*cdf0e10cSrcweir } 1992*cdf0e10cSrcweir 1993*cdf0e10cSrcweir mpBufferDevice->Erase(); 1994*cdf0e10cSrcweir } 1995*cdf0e10cSrcweir 1996*cdf0e10cSrcweir void SvxPreviewBase::LocalPostPaint() 1997*cdf0e10cSrcweir { 1998*cdf0e10cSrcweir // copy to front (in pixel mode) 1999*cdf0e10cSrcweir const bool bWasEnabledSrc(mpBufferDevice->IsMapModeEnabled()); 2000*cdf0e10cSrcweir const bool bWasEnabledDst(IsMapModeEnabled()); 2001*cdf0e10cSrcweir const Point aEmptyPoint; 2002*cdf0e10cSrcweir 2003*cdf0e10cSrcweir mpBufferDevice->EnableMapMode(false); 2004*cdf0e10cSrcweir EnableMapMode(false); 2005*cdf0e10cSrcweir 2006*cdf0e10cSrcweir DrawOutDev( 2007*cdf0e10cSrcweir aEmptyPoint, GetOutputSizePixel(), 2008*cdf0e10cSrcweir aEmptyPoint, GetOutputSizePixel(), 2009*cdf0e10cSrcweir *mpBufferDevice); 2010*cdf0e10cSrcweir 2011*cdf0e10cSrcweir mpBufferDevice->EnableMapMode(bWasEnabledSrc); 2012*cdf0e10cSrcweir EnableMapMode(bWasEnabledDst); 2013*cdf0e10cSrcweir } 2014*cdf0e10cSrcweir 2015*cdf0e10cSrcweir void SvxPreviewBase::StateChanged(StateChangedType nType) 2016*cdf0e10cSrcweir { 2017*cdf0e10cSrcweir Control::StateChanged(nType); 2018*cdf0e10cSrcweir 2019*cdf0e10cSrcweir if(STATE_CHANGE_CONTROLFOREGROUND == nType) 2020*cdf0e10cSrcweir { 2021*cdf0e10cSrcweir InitSettings(true, false); 2022*cdf0e10cSrcweir } 2023*cdf0e10cSrcweir else if(STATE_CHANGE_CONTROLBACKGROUND == nType) 2024*cdf0e10cSrcweir { 2025*cdf0e10cSrcweir InitSettings(false, true); 2026*cdf0e10cSrcweir } 2027*cdf0e10cSrcweir } 2028*cdf0e10cSrcweir 2029*cdf0e10cSrcweir void SvxPreviewBase::DataChanged(const DataChangedEvent& rDCEvt) 2030*cdf0e10cSrcweir { 2031*cdf0e10cSrcweir SetDrawMode(GetSettings().GetStyleSettings().GetHighContrastMode() ? OUTPUT_DRAWMODE_CONTRAST : OUTPUT_DRAWMODE_COLOR); 2032*cdf0e10cSrcweir 2033*cdf0e10cSrcweir if((DATACHANGED_SETTINGS == rDCEvt.GetType()) && (rDCEvt.GetFlags() & SETTINGS_STYLE)) 2034*cdf0e10cSrcweir { 2035*cdf0e10cSrcweir InitSettings(true, true); 2036*cdf0e10cSrcweir } 2037*cdf0e10cSrcweir else 2038*cdf0e10cSrcweir { 2039*cdf0e10cSrcweir Control::DataChanged(rDCEvt); 2040*cdf0e10cSrcweir } 2041*cdf0e10cSrcweir } 2042*cdf0e10cSrcweir 2043*cdf0e10cSrcweir /************************************************************************* 2044*cdf0e10cSrcweir |* 2045*cdf0e10cSrcweir |* SvxXLinePreview::SvxXLinePreview() 2046*cdf0e10cSrcweir |* 2047*cdf0e10cSrcweir *************************************************************************/ 2048*cdf0e10cSrcweir 2049*cdf0e10cSrcweir SvxXLinePreview::SvxXLinePreview( Window* pParent, const ResId& rResId ) 2050*cdf0e10cSrcweir : SvxPreviewBase( pParent, rResId ), 2051*cdf0e10cSrcweir mpLineObjA( 0L ), 2052*cdf0e10cSrcweir mpLineObjB( 0L ), 2053*cdf0e10cSrcweir mpLineObjC( 0L ), 2054*cdf0e10cSrcweir mpGraphic( 0L ), 2055*cdf0e10cSrcweir mbWithSymbol( sal_False ) 2056*cdf0e10cSrcweir { 2057*cdf0e10cSrcweir const Size aOutputSize(GetOutputSize()); 2058*cdf0e10cSrcweir InitSettings( sal_True, sal_True ); 2059*cdf0e10cSrcweir 2060*cdf0e10cSrcweir const sal_Int32 nDistance(500L); 2061*cdf0e10cSrcweir const sal_Int32 nAvailableLength(aOutputSize.Width() - (4 * nDistance)); 2062*cdf0e10cSrcweir 2063*cdf0e10cSrcweir // create DrawObectA 2064*cdf0e10cSrcweir const sal_Int32 aYPosA(aOutputSize.Height() / 2); 2065*cdf0e10cSrcweir const basegfx::B2DPoint aPointA1( nDistance, aYPosA); 2066*cdf0e10cSrcweir const basegfx::B2DPoint aPointA2( aPointA1.getX() + ((nAvailableLength * 14) / 20), aYPosA ); 2067*cdf0e10cSrcweir basegfx::B2DPolygon aPolygonA; 2068*cdf0e10cSrcweir aPolygonA.append(aPointA1); 2069*cdf0e10cSrcweir aPolygonA.append(aPointA2); 2070*cdf0e10cSrcweir mpLineObjA = new SdrPathObj(OBJ_LINE, basegfx::B2DPolyPolygon(aPolygonA)); 2071*cdf0e10cSrcweir mpLineObjA->SetModel(&getModel()); 2072*cdf0e10cSrcweir 2073*cdf0e10cSrcweir // create DrawObectB 2074*cdf0e10cSrcweir const sal_Int32 aYPosB1((aOutputSize.Height() * 3) / 4); 2075*cdf0e10cSrcweir const sal_Int32 aYPosB2((aOutputSize.Height() * 1) / 4); 2076*cdf0e10cSrcweir const basegfx::B2DPoint aPointB1( aPointA2.getX() + nDistance, aYPosB1); 2077*cdf0e10cSrcweir const basegfx::B2DPoint aPointB2( aPointB1.getX() + ((nAvailableLength * 2) / 20), aYPosB2 ); 2078*cdf0e10cSrcweir const basegfx::B2DPoint aPointB3( aPointB2.getX() + ((nAvailableLength * 2) / 20), aYPosB1 ); 2079*cdf0e10cSrcweir basegfx::B2DPolygon aPolygonB; 2080*cdf0e10cSrcweir aPolygonB.append(aPointB1); 2081*cdf0e10cSrcweir aPolygonB.append(aPointB2); 2082*cdf0e10cSrcweir aPolygonB.append(aPointB3); 2083*cdf0e10cSrcweir mpLineObjB = new SdrPathObj(OBJ_PLIN, basegfx::B2DPolyPolygon(aPolygonB)); 2084*cdf0e10cSrcweir mpLineObjB->SetModel(&getModel()); 2085*cdf0e10cSrcweir 2086*cdf0e10cSrcweir // create DrawObectC 2087*cdf0e10cSrcweir const basegfx::B2DPoint aPointC1( aPointB3.getX() + nDistance, aYPosB1); 2088*cdf0e10cSrcweir const basegfx::B2DPoint aPointC2( aPointC1.getX() + ((nAvailableLength * 1) / 20), aYPosB2 ); 2089*cdf0e10cSrcweir const basegfx::B2DPoint aPointC3( aPointC2.getX() + ((nAvailableLength * 1) / 20), aYPosB1 ); 2090*cdf0e10cSrcweir basegfx::B2DPolygon aPolygonC; 2091*cdf0e10cSrcweir aPolygonC.append(aPointC1); 2092*cdf0e10cSrcweir aPolygonC.append(aPointC2); 2093*cdf0e10cSrcweir aPolygonC.append(aPointC3); 2094*cdf0e10cSrcweir mpLineObjC = new SdrPathObj(OBJ_PLIN, basegfx::B2DPolyPolygon(aPolygonC)); 2095*cdf0e10cSrcweir mpLineObjC->SetModel(&getModel()); 2096*cdf0e10cSrcweir } 2097*cdf0e10cSrcweir 2098*cdf0e10cSrcweir SvxXLinePreview::~SvxXLinePreview() 2099*cdf0e10cSrcweir { 2100*cdf0e10cSrcweir SdrObject::Free( mpLineObjA ); 2101*cdf0e10cSrcweir SdrObject::Free( mpLineObjB ); 2102*cdf0e10cSrcweir SdrObject::Free( mpLineObjC ); 2103*cdf0e10cSrcweir } 2104*cdf0e10cSrcweir 2105*cdf0e10cSrcweir // ----------------------------------------------------------------------- 2106*cdf0e10cSrcweir 2107*cdf0e10cSrcweir void SvxXLinePreview::SetSymbol(Graphic* p,const Size& s) 2108*cdf0e10cSrcweir { 2109*cdf0e10cSrcweir mpGraphic = p; 2110*cdf0e10cSrcweir maSymbolSize = s; 2111*cdf0e10cSrcweir } 2112*cdf0e10cSrcweir 2113*cdf0e10cSrcweir // ----------------------------------------------------------------------- 2114*cdf0e10cSrcweir 2115*cdf0e10cSrcweir void SvxXLinePreview::ResizeSymbol(const Size& s) 2116*cdf0e10cSrcweir { 2117*cdf0e10cSrcweir if ( s != maSymbolSize ) 2118*cdf0e10cSrcweir { 2119*cdf0e10cSrcweir maSymbolSize = s; 2120*cdf0e10cSrcweir Invalidate(); 2121*cdf0e10cSrcweir } 2122*cdf0e10cSrcweir } 2123*cdf0e10cSrcweir 2124*cdf0e10cSrcweir // ----------------------------------------------------------------------- 2125*cdf0e10cSrcweir 2126*cdf0e10cSrcweir void SvxXLinePreview::SetLineAttributes(const SfxItemSet& rItemSet) 2127*cdf0e10cSrcweir { 2128*cdf0e10cSrcweir // Set ItemSet at objects 2129*cdf0e10cSrcweir mpLineObjA->SetMergedItemSet(rItemSet); 2130*cdf0e10cSrcweir 2131*cdf0e10cSrcweir // At line joints, do not use arrows 2132*cdf0e10cSrcweir SfxItemSet aTempSet(rItemSet); 2133*cdf0e10cSrcweir aTempSet.ClearItem(XATTR_LINESTART); 2134*cdf0e10cSrcweir aTempSet.ClearItem(XATTR_LINEEND); 2135*cdf0e10cSrcweir 2136*cdf0e10cSrcweir mpLineObjB->SetMergedItemSet(aTempSet); 2137*cdf0e10cSrcweir mpLineObjC->SetMergedItemSet(aTempSet); 2138*cdf0e10cSrcweir } 2139*cdf0e10cSrcweir 2140*cdf0e10cSrcweir // ----------------------------------------------------------------------- 2141*cdf0e10cSrcweir 2142*cdf0e10cSrcweir void SvxXLinePreview::Paint( const Rectangle& ) 2143*cdf0e10cSrcweir { 2144*cdf0e10cSrcweir LocalPrePaint(); 2145*cdf0e10cSrcweir 2146*cdf0e10cSrcweir // paint objects to buffer device 2147*cdf0e10cSrcweir sdr::contact::SdrObjectVector aObjectVector; 2148*cdf0e10cSrcweir aObjectVector.push_back(mpLineObjA); 2149*cdf0e10cSrcweir aObjectVector.push_back(mpLineObjB); 2150*cdf0e10cSrcweir aObjectVector.push_back(mpLineObjC); 2151*cdf0e10cSrcweir 2152*cdf0e10cSrcweir sdr::contact::ObjectContactOfObjListPainter aPainter(getBufferDevice(), aObjectVector, 0); 2153*cdf0e10cSrcweir sdr::contact::DisplayInfo aDisplayInfo; 2154*cdf0e10cSrcweir 2155*cdf0e10cSrcweir // do processing 2156*cdf0e10cSrcweir aPainter.ProcessDisplay(aDisplayInfo); 2157*cdf0e10cSrcweir 2158*cdf0e10cSrcweir if ( mbWithSymbol && mpGraphic ) 2159*cdf0e10cSrcweir { 2160*cdf0e10cSrcweir const Size aOutputSize(GetOutputSize()); 2161*cdf0e10cSrcweir Point aPos = Point( aOutputSize.Width() / 3, aOutputSize.Height() / 2 ); 2162*cdf0e10cSrcweir aPos.X() -= maSymbolSize.Width() / 2; 2163*cdf0e10cSrcweir aPos.Y() -= maSymbolSize.Height() / 2; 2164*cdf0e10cSrcweir mpGraphic->Draw( &getBufferDevice(), aPos, maSymbolSize ); 2165*cdf0e10cSrcweir } 2166*cdf0e10cSrcweir 2167*cdf0e10cSrcweir LocalPostPaint(); 2168*cdf0e10cSrcweir } 2169*cdf0e10cSrcweir 2170*cdf0e10cSrcweir /************************************************************************* 2171*cdf0e10cSrcweir |* 2172*cdf0e10cSrcweir |* SvxXRectPreview::SvxXRectPreview() 2173*cdf0e10cSrcweir |* 2174*cdf0e10cSrcweir *************************************************************************/ 2175*cdf0e10cSrcweir 2176*cdf0e10cSrcweir SvxXRectPreview::SvxXRectPreview( Window* pParent, const ResId& rResId ) 2177*cdf0e10cSrcweir : SvxPreviewBase( pParent, rResId ), 2178*cdf0e10cSrcweir mpRectangleObject(0) 2179*cdf0e10cSrcweir { 2180*cdf0e10cSrcweir InitSettings(true, true); 2181*cdf0e10cSrcweir 2182*cdf0e10cSrcweir // create RectangleObject 2183*cdf0e10cSrcweir const Rectangle aObjectSize(Point(), GetOutputSize()); 2184*cdf0e10cSrcweir mpRectangleObject = new SdrRectObj(aObjectSize); 2185*cdf0e10cSrcweir mpRectangleObject->SetModel(&getModel()); 2186*cdf0e10cSrcweir } 2187*cdf0e10cSrcweir 2188*cdf0e10cSrcweir SvxXRectPreview::~SvxXRectPreview() 2189*cdf0e10cSrcweir { 2190*cdf0e10cSrcweir SdrObject::Free(mpRectangleObject); 2191*cdf0e10cSrcweir } 2192*cdf0e10cSrcweir 2193*cdf0e10cSrcweir void SvxXRectPreview::SetAttributes(const SfxItemSet& rItemSet) 2194*cdf0e10cSrcweir { 2195*cdf0e10cSrcweir mpRectangleObject->SetMergedItemSet(rItemSet, true); 2196*cdf0e10cSrcweir mpRectangleObject->SetMergedItem(XLineStyleItem(XLINE_NONE)); 2197*cdf0e10cSrcweir } 2198*cdf0e10cSrcweir 2199*cdf0e10cSrcweir void SvxXRectPreview::Paint( const Rectangle& ) 2200*cdf0e10cSrcweir { 2201*cdf0e10cSrcweir LocalPrePaint(); 2202*cdf0e10cSrcweir 2203*cdf0e10cSrcweir sdr::contact::SdrObjectVector aObjectVector; 2204*cdf0e10cSrcweir 2205*cdf0e10cSrcweir aObjectVector.push_back(mpRectangleObject); 2206*cdf0e10cSrcweir 2207*cdf0e10cSrcweir sdr::contact::ObjectContactOfObjListPainter aPainter(getBufferDevice(), aObjectVector, 0); 2208*cdf0e10cSrcweir sdr::contact::DisplayInfo aDisplayInfo; 2209*cdf0e10cSrcweir 2210*cdf0e10cSrcweir aPainter.ProcessDisplay(aDisplayInfo); 2211*cdf0e10cSrcweir 2212*cdf0e10cSrcweir LocalPostPaint(); 2213*cdf0e10cSrcweir } 2214*cdf0e10cSrcweir 2215*cdf0e10cSrcweir /************************************************************************* 2216*cdf0e10cSrcweir |* 2217*cdf0e10cSrcweir |* SvxXShadowPreview::SvxXShadowPreview() 2218*cdf0e10cSrcweir |* 2219*cdf0e10cSrcweir *************************************************************************/ 2220*cdf0e10cSrcweir 2221*cdf0e10cSrcweir SvxXShadowPreview::SvxXShadowPreview( Window* pParent, const ResId& rResId ) 2222*cdf0e10cSrcweir : SvxPreviewBase( pParent, rResId ), 2223*cdf0e10cSrcweir mpRectangleObject(0), 2224*cdf0e10cSrcweir mpRectangleShadow(0) 2225*cdf0e10cSrcweir { 2226*cdf0e10cSrcweir InitSettings(true, true); 2227*cdf0e10cSrcweir 2228*cdf0e10cSrcweir // prepare size 2229*cdf0e10cSrcweir Size aSize = GetOutputSize(); 2230*cdf0e10cSrcweir aSize.Width() = aSize.Width() / 3; 2231*cdf0e10cSrcweir aSize.Height() = aSize.Height() / 3; 2232*cdf0e10cSrcweir 2233*cdf0e10cSrcweir // create RectangleObject 2234*cdf0e10cSrcweir const Rectangle aObjectSize( Point( aSize.Width(), aSize.Height() ), aSize ); 2235*cdf0e10cSrcweir mpRectangleObject = new SdrRectObj(aObjectSize); 2236*cdf0e10cSrcweir mpRectangleObject->SetModel(&getModel()); 2237*cdf0e10cSrcweir 2238*cdf0e10cSrcweir // create ShadowObject 2239*cdf0e10cSrcweir const Rectangle aShadowSize( Point( aSize.Width(), aSize.Height() ), aSize ); 2240*cdf0e10cSrcweir mpRectangleShadow = new SdrRectObj(aShadowSize); 2241*cdf0e10cSrcweir mpRectangleShadow->SetModel(&getModel()); 2242*cdf0e10cSrcweir } 2243*cdf0e10cSrcweir 2244*cdf0e10cSrcweir SvxXShadowPreview::~SvxXShadowPreview() 2245*cdf0e10cSrcweir { 2246*cdf0e10cSrcweir SdrObject::Free(mpRectangleObject); 2247*cdf0e10cSrcweir SdrObject::Free(mpRectangleShadow); 2248*cdf0e10cSrcweir } 2249*cdf0e10cSrcweir 2250*cdf0e10cSrcweir void SvxXShadowPreview::SetRectangleAttributes(const SfxItemSet& rItemSet) 2251*cdf0e10cSrcweir { 2252*cdf0e10cSrcweir mpRectangleObject->SetMergedItemSet(rItemSet, true); 2253*cdf0e10cSrcweir mpRectangleObject->SetMergedItem(XLineStyleItem(XLINE_NONE)); 2254*cdf0e10cSrcweir } 2255*cdf0e10cSrcweir 2256*cdf0e10cSrcweir void SvxXShadowPreview::SetShadowAttributes(const SfxItemSet& rItemSet) 2257*cdf0e10cSrcweir { 2258*cdf0e10cSrcweir mpRectangleShadow->SetMergedItemSet(rItemSet, true); 2259*cdf0e10cSrcweir mpRectangleShadow->SetMergedItem(XLineStyleItem(XLINE_NONE)); 2260*cdf0e10cSrcweir } 2261*cdf0e10cSrcweir 2262*cdf0e10cSrcweir void SvxXShadowPreview::SetShadowPosition(const Point& rPos) 2263*cdf0e10cSrcweir { 2264*cdf0e10cSrcweir Rectangle aObjectPosition(mpRectangleObject->GetSnapRect()); 2265*cdf0e10cSrcweir aObjectPosition.Move(rPos.X(), rPos.Y()); 2266*cdf0e10cSrcweir mpRectangleShadow->SetSnapRect(aObjectPosition); 2267*cdf0e10cSrcweir } 2268*cdf0e10cSrcweir 2269*cdf0e10cSrcweir void SvxXShadowPreview::Paint( const Rectangle& ) 2270*cdf0e10cSrcweir { 2271*cdf0e10cSrcweir LocalPrePaint(); 2272*cdf0e10cSrcweir 2273*cdf0e10cSrcweir sdr::contact::SdrObjectVector aObjectVector; 2274*cdf0e10cSrcweir 2275*cdf0e10cSrcweir aObjectVector.push_back(mpRectangleShadow); 2276*cdf0e10cSrcweir aObjectVector.push_back(mpRectangleObject); 2277*cdf0e10cSrcweir 2278*cdf0e10cSrcweir sdr::contact::ObjectContactOfObjListPainter aPainter(getBufferDevice(), aObjectVector, 0); 2279*cdf0e10cSrcweir sdr::contact::DisplayInfo aDisplayInfo; 2280*cdf0e10cSrcweir 2281*cdf0e10cSrcweir aPainter.ProcessDisplay(aDisplayInfo); 2282*cdf0e10cSrcweir 2283*cdf0e10cSrcweir LocalPostPaint(); 2284*cdf0e10cSrcweir } 2285*cdf0e10cSrcweir 2286*cdf0e10cSrcweir // ----------------------------------------------------------------------- 2287*cdf0e10cSrcweir // eof 2288