LCOV - code coverage report
Current view: top level - svx/source/dialog - dialcontrol.cxx (source / functions) Hit Total Coverage
Test: commit c8344322a7af75b84dd3ca8f78b05543a976dfd5 Lines: 172 303 56.8 %
Date: 2015-06-13 12:38:46 Functions: 27 52 51.9 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
       2             : /*
       3             :  * This file is part of the LibreOffice project.
       4             :  *
       5             :  * This Source Code Form is subject to the terms of the Mozilla Public
       6             :  * License, v. 2.0. If a copy of the MPL was not distributed with this
       7             :  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
       8             :  *
       9             :  * This file incorporates work covered by the following license notice:
      10             :  *
      11             :  *   Licensed to the Apache Software Foundation (ASF) under one or more
      12             :  *   contributor license agreements. See the NOTICE file distributed
      13             :  *   with this work for additional information regarding copyright
      14             :  *   ownership. The ASF licenses this file to you under the Apache
      15             :  *   License, Version 2.0 (the "License"); you may not use this file
      16             :  *   except in compliance with the License. You may obtain a copy of
      17             :  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
      18             :  */
      19             : 
      20             : #include "svx/dialcontrol.hxx"
      21             : #include "bmpmask.hrc"
      22             : #include <svx/dialmgr.hxx>
      23             : #include <tools/rcid.h>
      24             : #include <cmath>
      25             : #include <vcl/virdev.hxx>
      26             : #include <vcl/svapp.hxx>
      27             : #include <vcl/bitmap.hxx>
      28             : #include <vcl/field.hxx>
      29             : #include <vcl/settings.hxx>
      30             : #include <svtools/colorcfg.hxx>
      31             : #include <vcl/builderfactory.hxx>
      32             : 
      33             : namespace svx {
      34             : 
      35             : const long DIAL_OUTER_WIDTH = 8;
      36             : 
      37           3 : DialControlBmp::DialControlBmp(vcl::Window& rParent) :
      38             :     VirtualDevice(rParent, 0, 0),
      39             :     mbEnabled(true),
      40             :     mrParent(rParent),
      41             :     mnCenterX(0),
      42           3 :     mnCenterY(0)
      43             : {
      44           3 :     EnableRTL(false);
      45           3 : }
      46             : 
      47           2 : void DialControlBmp::InitBitmap(const vcl::Font& rFont)
      48             : {
      49           2 :     Init();
      50           2 :     SetFont(rFont);
      51           2 : }
      52             : 
      53           3 : void DialControlBmp::CopyBackground( const DialControlBmp& rSrc )
      54             : {
      55           3 :     Init();
      56           3 :     SetSize(rSrc.maRect.GetSize());
      57           3 :     mbEnabled = rSrc.mbEnabled;
      58           3 :     Point aPos;
      59           3 :     DrawBitmapEx( aPos, rSrc.GetBitmapEx( aPos, maRect.GetSize() ) );
      60           3 : }
      61             : 
      62           8 : void DialControlBmp::DrawBackground( const Size& rSize, bool bEnabled )
      63             : {
      64           8 :     Init();
      65           8 :     SetSize(rSize);
      66           8 :     mbEnabled = bEnabled;
      67           8 :     DrawBackground();
      68           8 : }
      69             : 
      70           3 : void DialControlBmp::DrawElements( const OUString& rText, sal_Int32 nAngle )
      71             : {
      72           3 :     double fAngle = nAngle * F_PI180 / 100.0;
      73           3 :     double fSin = sin( fAngle );
      74           3 :     double fCos = cos( fAngle );
      75           3 :     double fWidth = GetTextWidth( rText ) / 2.0;
      76           3 :     double fHeight = GetTextHeight() / 2.0;
      77             : 
      78           3 :     if ( !rText.isEmpty() )
      79             :     {
      80             :         // rotated text
      81           0 :         vcl::Font aFont( GetFont() );
      82           0 :         aFont.SetColor( GetTextColor() );
      83           0 :         aFont.SetOrientation( static_cast< short >( (nAngle + 5) / 10 ) );  // Font uses 1/10 degrees
      84           0 :         aFont.SetWeight( WEIGHT_BOLD );
      85           0 :         SetFont( aFont );
      86             : 
      87           0 :         long nX = static_cast< long >( mnCenterX - fWidth * fCos - fHeight * fSin );
      88           0 :         long nY = static_cast< long >( mnCenterY + fWidth * fSin - fHeight * fCos );
      89           0 :         Rectangle aRect( nX, nY, 2 * mnCenterX - nX, 2 * mnCenterY - nY );
      90           0 :         DrawText( aRect, rText, mbEnabled ? DrawTextFlags::NONE : DrawTextFlags::Disable );
      91             :     }
      92             :     else
      93             :     {
      94             :         // only a line
      95           3 :         const sal_Int32 nDx (fCos * (maRect.GetWidth()-4) / 2);
      96           3 :         const sal_Int32 nDy (-fSin * (maRect.GetHeight()-4) / 2);
      97           3 :         Point pt1( maRect.Center() );
      98           3 :         Point pt2( pt1.X() + nDx, pt1.Y() + nDy);
      99             : 
     100           3 :         SetLineColor( GetTextColor() );
     101           3 :         DrawLine( pt1, pt2 );
     102             :     }
     103             : 
     104             :     // *** drag button ***
     105             : 
     106           3 :     bool bMain = (nAngle % 4500) != 0;
     107           3 :     SetLineColor( GetButtonLineColor() );
     108           3 :     SetFillColor( GetButtonFillColor( bMain ) );
     109             : 
     110           3 :     long nX = mnCenterX - static_cast< long >( (DIAL_OUTER_WIDTH / 2 - mnCenterX) * fCos );
     111           3 :     long nY = mnCenterY - static_cast< long >( (mnCenterY - DIAL_OUTER_WIDTH / 2) * fSin );
     112           3 :     long nSize = bMain ? (DIAL_OUTER_WIDTH / 4) : (DIAL_OUTER_WIDTH / 2 - 1);
     113           3 :     DrawEllipse( Rectangle( nX - nSize, nY - nSize, nX + nSize, nY + nSize ) );
     114           3 : }
     115             : 
     116          32 : const Color& DialControlBmp::GetBackgroundColor() const
     117             : {
     118          32 :     return GetSettings().GetStyleSettings().GetDialogColor();
     119             : }
     120             : 
     121           3 : const Color& DialControlBmp::GetTextColor() const
     122             : {
     123           3 :     return GetSettings().GetStyleSettings().GetLabelTextColor();
     124             : }
     125             : 
     126           8 : const Color& DialControlBmp::GetScaleLineColor() const
     127             : {
     128           8 :     const StyleSettings& rSett = GetSettings().GetStyleSettings();
     129           8 :     return mbEnabled ? rSett.GetButtonTextColor() : rSett.GetDisableColor();
     130             : }
     131             : 
     132           3 : const Color& DialControlBmp::GetButtonLineColor() const
     133             : {
     134           3 :     const StyleSettings& rSett = GetSettings().GetStyleSettings();
     135           3 :     return mbEnabled ? rSett.GetButtonTextColor() : rSett.GetDisableColor();
     136             : }
     137             : 
     138           3 : const Color& DialControlBmp::GetButtonFillColor( bool bMain ) const
     139             : {
     140           3 :     const StyleSettings& rSett = GetSettings().GetStyleSettings();
     141           3 :     return mbEnabled ? (bMain ? rSett.GetMenuColor() : rSett.GetHighlightColor()) : rSett.GetDisableColor();
     142             : }
     143             : 
     144          13 : void DialControlBmp::Init()
     145             : {
     146          13 :     SetSettings(mrParent.GetSettings());
     147          13 :     SetBackground();
     148          13 : }
     149             : 
     150          15 : void DialControlBmp::SetSize( const Size& rSize )
     151             : {
     152          15 :     maRect.SetPos( Point( 0, 0 ) );
     153          15 :     maRect.SetSize( rSize );
     154          15 :     mnCenterX = rSize.Width() / 2;
     155          15 :     mnCenterY = rSize.Height() / 2;
     156          15 :     SetOutputSize( rSize );
     157          15 : }
     158             : 
     159           8 : void DialControlBmp::DrawBackground()
     160             : {
     161             :     // *** background with 3D effect ***
     162             : 
     163           8 :     SetLineColor();
     164           8 :     SetFillColor();
     165           8 :     Erase();
     166             : 
     167           8 :     EnableRTL( true ); // draw 3D effect in correct direction
     168             : 
     169           8 :     sal_uInt8 nDiff = mbEnabled ? 0x18 : 0x10;
     170           8 :     Color aColor;
     171             : 
     172           8 :     aColor = GetBackgroundColor();
     173           8 :     SetFillColor( aColor );
     174           8 :     DrawPie( maRect, maRect.TopRight(), maRect.TopCenter() );
     175           8 :     DrawPie( maRect, maRect.BottomLeft(), maRect.BottomCenter() );
     176             : 
     177           8 :     aColor.DecreaseLuminance( nDiff );
     178           8 :     SetFillColor( aColor );
     179           8 :     DrawPie( maRect, maRect.BottomCenter(), maRect.TopRight() );
     180             : 
     181           8 :     aColor.DecreaseLuminance( nDiff );
     182           8 :     SetFillColor( aColor );
     183           8 :     DrawPie( maRect, maRect.BottomRight(), maRect.RightCenter() );
     184             : 
     185           8 :     aColor = GetBackgroundColor();
     186           8 :     aColor.IncreaseLuminance( nDiff );
     187           8 :     SetFillColor( aColor );
     188           8 :     DrawPie( maRect, maRect.TopCenter(), maRect.BottomLeft() );
     189             : 
     190           8 :     aColor.IncreaseLuminance( nDiff );
     191           8 :     SetFillColor( aColor );
     192           8 :     DrawPie( maRect, maRect.TopLeft(), maRect.LeftCenter() );
     193             : 
     194           8 :     EnableRTL( false );
     195             : 
     196             :     // *** calibration ***
     197             : 
     198           8 :     Point aStartPos( mnCenterX, mnCenterY );
     199           8 :     Color aFullColor( GetScaleLineColor() );
     200           8 :     Color aLightColor( GetBackgroundColor() );
     201           8 :     aLightColor.Merge( aFullColor, 128 );
     202             : 
     203         200 :     for( int nAngle = 0; nAngle < 360; nAngle += 15 )
     204             :     {
     205         192 :         SetLineColor( (nAngle % 45) ? aLightColor : aFullColor );
     206         192 :         double fAngle = nAngle * F_PI180;
     207         192 :         long nX = static_cast< long >( -mnCenterX * cos( fAngle ) );
     208         192 :         long nY = static_cast< long >( mnCenterY * sin( fAngle ) );
     209         192 :         DrawLine( aStartPos, Point( mnCenterX - nX, mnCenterY - nY ) );
     210             :     }
     211             : 
     212             :     // *** clear inner area ***
     213             : 
     214           8 :     SetLineColor();
     215           8 :     SetFillColor( GetBackgroundColor() );
     216          16 :     DrawEllipse( Rectangle( maRect.Left() + DIAL_OUTER_WIDTH, maRect.Top() + DIAL_OUTER_WIDTH,
     217          24 :         maRect.Right() - DIAL_OUTER_WIDTH, maRect.Bottom() - DIAL_OUTER_WIDTH ) );
     218           8 : }
     219             : 
     220             : 
     221             : 
     222           1 : DialControl::DialControl_Impl::DialControl_Impl ( vcl::Window& rParent ) :
     223             :     mxBmpEnabled(VclPtr<DialControlBmp>::Create(rParent)),
     224             :     mxBmpDisabled(VclPtr<DialControlBmp>::Create(rParent)),
     225             :     mxBmpBuffered(VclPtr<DialControlBmp>::Create(rParent)),
     226             :     mpLinkField( 0 ),
     227             :     mnLinkedFieldValueMultiplyer( 0 ),
     228             :     mnAngle( 0 ),
     229             :     mnInitialAngle( 0 ),
     230             :     mnOldAngle( 0 ),
     231             :     mnCenterX( 0 ),
     232             :     mnCenterY( 0 ),
     233           1 :     mbNoRot( false )
     234             : {
     235           1 : }
     236             : 
     237           2 : void DialControl::DialControl_Impl::Init( const Size& rWinSize, const vcl::Font& rWinFont )
     238             : {
     239           2 :     maWinFont = rWinFont;
     240           2 :     maWinFont.SetTransparent(true);
     241           2 :     mxBmpBuffered->InitBitmap(maWinFont);
     242           2 :     SetSize(rWinSize);
     243           2 : }
     244             : 
     245           4 : void DialControl::DialControl_Impl::SetSize( const Size& rWinSize )
     246             : {
     247             :     // make the control squared, and adjusted so that we have a well-defined
     248             :     // center ["(x - 1) | 1" creates odd value <= x]
     249           4 :     long nMin = (std::min(rWinSize.Width(), rWinSize.Height()) - 1) | 1;
     250             : 
     251           4 :     maWinSize = Size( nMin, nMin );
     252             : 
     253           4 :     mnCenterX = maWinSize.Width() / 2;
     254           4 :     mnCenterY = maWinSize.Height() / 2;
     255             : 
     256           4 :     mxBmpEnabled->DrawBackground( maWinSize, true );
     257           4 :     mxBmpDisabled->DrawBackground( maWinSize, false );
     258           4 :     mxBmpBuffered->SetSize( maWinSize );
     259           4 : }
     260             : 
     261             : 
     262             : 
     263           1 : DialControl::DialControl( vcl::Window* pParent, WinBits nBits ) :
     264             :     Control( pParent, nBits ),
     265           1 :      mpImpl( new DialControl_Impl( *this ) )
     266             : {
     267           1 :     Init( GetOutputSizePixel() );
     268           1 : }
     269             : 
     270           0 : VCL_BUILDER_FACTORY_ARGS(DialControl, WB_TABSTOP)
     271             : 
     272           2 : void DialControl::Resize()
     273             : {
     274           2 :     mpImpl->SetSize(GetOutputSizePixel());
     275           2 :     InvalidateControl();
     276           2 : }
     277             : 
     278           0 : void DialControl::Paint(vcl::RenderContext& rRenderContext, const Rectangle&)
     279             : {
     280           0 :     Point aPos;
     281           0 :     rRenderContext.DrawBitmapEx(aPos, mpImpl->mxBmpBuffered->GetBitmapEx(aPos, mpImpl->maWinSize));
     282           0 : }
     283             : 
     284           3 : void DialControl::StateChanged( StateChangedType nStateChange )
     285             : {
     286           3 :     if( nStateChange == StateChangedType::Enable )
     287           0 :         InvalidateControl();
     288             : 
     289             :     // update the linked edit field
     290           3 :     if( mpImpl->mpLinkField )
     291             :     {
     292           0 :         NumericField& rField = *mpImpl->mpLinkField;
     293           0 :         switch( nStateChange )
     294             :         {
     295           0 :             case StateChangedType::Visible:  rField.Show( IsVisible() );     break;
     296           0 :             case StateChangedType::Enable:   rField.Enable( IsEnabled() );   break;
     297             :             default:;
     298             :         }
     299             :     }
     300             : 
     301           3 :     Control::StateChanged( nStateChange );
     302           3 : }
     303             : 
     304           0 : void DialControl::DataChanged( const DataChangedEvent& rDCEvt )
     305             : {
     306           0 :     if( (rDCEvt.GetType() == DataChangedEventType::SETTINGS) && (rDCEvt.GetFlags() & AllSettingsFlags::STYLE) )
     307             :     {
     308           0 :         Init( mpImpl->maWinSize, mpImpl->maWinFont );
     309           0 :         InvalidateControl();
     310             :     }
     311           0 :     Control::DataChanged( rDCEvt );
     312           0 : }
     313             : 
     314           0 : void DialControl::MouseButtonDown( const MouseEvent& rMEvt )
     315             : {
     316           0 :     if( rMEvt.IsLeft() )
     317             :     {
     318           0 :         GrabFocus();
     319           0 :         CaptureMouse();
     320           0 :         mpImpl->mnOldAngle = mpImpl->mnAngle;
     321           0 :         HandleMouseEvent( rMEvt.GetPosPixel(), true );
     322             :     }
     323           0 :     Control::MouseButtonDown( rMEvt );
     324           0 : }
     325             : 
     326           0 : void DialControl::MouseMove( const MouseEvent& rMEvt )
     327             : {
     328           0 :     if( IsMouseCaptured() && rMEvt.IsLeft() )
     329           0 :         HandleMouseEvent( rMEvt.GetPosPixel(), false );
     330           0 :     Control::MouseMove(rMEvt );
     331           0 : }
     332             : 
     333           0 : void DialControl::MouseButtonUp( const MouseEvent& rMEvt )
     334             : {
     335           0 :     if( IsMouseCaptured() )
     336             :     {
     337           0 :         ReleaseMouse();
     338           0 :         if( mpImpl->mpLinkField )
     339           0 :             mpImpl->mpLinkField->GrabFocus();
     340             :     }
     341           0 :     Control::MouseButtonUp( rMEvt );
     342           0 : }
     343             : 
     344           0 : void DialControl::KeyInput( const KeyEvent& rKEvt )
     345             : {
     346           0 :     const vcl::KeyCode& rKCode = rKEvt.GetKeyCode();
     347           0 :     if( !rKCode.GetModifier() && (rKCode.GetCode() == KEY_ESCAPE) )
     348           0 :         HandleEscapeEvent();
     349             :     else
     350           0 :         Control::KeyInput( rKEvt );
     351           0 : }
     352             : 
     353           0 : void DialControl::LoseFocus()
     354             : {
     355             :     // release captured mouse
     356           0 :     HandleEscapeEvent();
     357           0 :     Control::LoseFocus();
     358           0 : }
     359             : 
     360           0 : bool DialControl::HasRotation() const
     361             : {
     362           0 :     return !mpImpl->mbNoRot;
     363             : }
     364             : 
     365           0 : void DialControl::SetNoRotation()
     366             : {
     367           0 :     if( !mpImpl->mbNoRot )
     368             :     {
     369           0 :         mpImpl->mbNoRot = true;
     370           0 :         InvalidateControl();
     371           0 :         if( mpImpl->mpLinkField )
     372           0 :             mpImpl->mpLinkField->SetText( "" );
     373             :     }
     374           0 : }
     375             : 
     376           0 : sal_Int32 DialControl::GetRotation() const
     377             : {
     378           0 :     return mpImpl->mnAngle;
     379             : }
     380             : 
     381           0 : Size DialControl::GetOptimalSize() const
     382             : {
     383           0 :     return LogicToPixel(Size(42 , 43), MAP_APPFONT);
     384             : }
     385             : 
     386           1 : void DialControl::SetRotation( sal_Int32 nAngle )
     387             : {
     388           1 :     SetRotation( nAngle, false );
     389           1 : }
     390             : 
     391           0 : void DialControl::SetLinkedField( NumericField* pField, sal_Int32 nDecimalPlaces )
     392             : {
     393           0 :     mpImpl->mnLinkedFieldValueMultiplyer = 100 / std::pow(10.0, double(nDecimalPlaces));
     394             : 
     395             :     // remove modify handler from old linked field
     396           0 :     ImplSetFieldLink( Link<>() );
     397             :     // remember the new linked field
     398           0 :     mpImpl->mpLinkField = pField;
     399             :     // set modify handler at new linked field
     400           0 :     ImplSetFieldLink( LINK( this, DialControl, LinkedFieldModifyHdl ) );
     401           0 : }
     402             : 
     403           0 : void DialControl::SaveValue()
     404             : {
     405           0 :     mpImpl->mnInitialAngle = mpImpl->mnAngle;
     406           0 : }
     407             : 
     408           0 : bool DialControl::IsValueModified()
     409             : {
     410           0 :     return mpImpl->mnInitialAngle != mpImpl->mnAngle;
     411             : }
     412             : 
     413           1 : void DialControl::SetModifyHdl( const Link<>& rLink )
     414             : {
     415           1 :     mpImpl->maModifyHdl = rLink;
     416           1 : }
     417             : 
     418           2 : void DialControl::Init( const Size& rWinSize, const vcl::Font& rWinFont )
     419             : {
     420           2 :     mpImpl->Init( rWinSize, rWinFont );
     421           2 :     EnableRTL( false ); // don't mirror mouse handling
     422           2 :     SetOutputSizePixel( mpImpl->maWinSize );
     423           2 :     SetBackground();
     424           2 : }
     425             : 
     426           2 : void DialControl::Init( const Size& rWinSize )
     427             : {
     428             :     //hidpi TODO: GetDefaultFont() picks a font size too small, so fix it here.
     429           2 :     vcl::Font aDefaultSize = GetFont();
     430             : 
     431             :     vcl::Font aFont( OutputDevice::GetDefaultFont(
     432           4 :         DefaultFontType::UI_SANS, Application::GetSettings().GetUILanguageTag().getLanguageType(), GetDefaultFontFlags::OnlyOne ) );
     433             : 
     434           2 :     aFont.SetHeight(aDefaultSize.GetHeight());
     435           4 :     Init( rWinSize, aFont );
     436           2 : }
     437             : 
     438           3 : void DialControl::InvalidateControl()
     439             : {
     440           3 :     mpImpl->mxBmpBuffered->CopyBackground( IsEnabled() ? *mpImpl->mxBmpEnabled : *mpImpl->mxBmpDisabled );
     441           3 :     if( !mpImpl->mbNoRot )
     442           3 :         mpImpl->mxBmpBuffered->DrawElements( GetText(), mpImpl->mnAngle );
     443           3 :     Invalidate();
     444           3 : }
     445             : 
     446           1 : void DialControl::SetRotation( sal_Int32 nAngle, bool bBroadcast )
     447             : {
     448           1 :     bool bOldSel = mpImpl->mbNoRot;
     449           1 :     mpImpl->mbNoRot = false;
     450             : 
     451           2 :     while( nAngle < 0 )
     452           0 :         nAngle += 36000;
     453             : 
     454           1 :     if( !bOldSel || (mpImpl->mnAngle != nAngle) )
     455             :     {
     456           1 :         mpImpl->mnAngle = nAngle;
     457           1 :         InvalidateControl();
     458           1 :         if( mpImpl->mpLinkField )
     459           0 :             mpImpl->mpLinkField->SetValue( static_cast< long >( GetRotation() / mpImpl->mnLinkedFieldValueMultiplyer ) );
     460           1 :         if( bBroadcast )
     461           0 :             mpImpl->maModifyHdl.Call( this );
     462             :     }
     463           1 : }
     464             : 
     465           0 : void DialControl::ImplSetFieldLink( const Link<>& rLink )
     466             : {
     467           0 :     if( mpImpl->mpLinkField )
     468             :     {
     469           0 :         NumericField& rField = *mpImpl->mpLinkField;
     470           0 :         rField.SetModifyHdl( rLink );
     471           0 :         rField.SetUpHdl( rLink );
     472           0 :         rField.SetDownHdl( rLink );
     473           0 :         rField.SetFirstHdl( rLink );
     474           0 :         rField.SetLastHdl( rLink );
     475           0 :         rField.SetLoseFocusHdl( rLink );
     476             :     }
     477           0 : }
     478             : 
     479           0 : void DialControl::HandleMouseEvent( const Point& rPos, bool bInitial )
     480             : {
     481           0 :     long nX = rPos.X() - mpImpl->mnCenterX;
     482           0 :     long nY = mpImpl->mnCenterY - rPos.Y();
     483           0 :     double fH = sqrt( static_cast< double >( nX ) * nX + static_cast< double >( nY ) * nY );
     484           0 :     if( fH != 0.0 )
     485             :     {
     486           0 :         double fAngle = acos( nX / fH );
     487           0 :         sal_Int32 nAngle = static_cast< sal_Int32 >( fAngle / F_PI180 * 100.0 );
     488           0 :         if( nY < 0 )
     489           0 :             nAngle = 36000 - nAngle;
     490           0 :         if( bInitial )  // round to entire 15 degrees
     491           0 :             nAngle = ((nAngle + 750) / 1500) * 1500;
     492             :         // Round up to 1 degree
     493           0 :         nAngle = (((nAngle + 50) / 100) * 100) % 36000;
     494           0 :         SetRotation( nAngle, true );
     495             :     }
     496           0 : }
     497             : 
     498           0 : void DialControl::HandleEscapeEvent()
     499             : {
     500           0 :     if( IsMouseCaptured() )
     501             :     {
     502           0 :         ReleaseMouse();
     503           0 :         SetRotation( mpImpl->mnOldAngle, true );
     504           0 :         if( mpImpl->mpLinkField )
     505           0 :             mpImpl->mpLinkField->GrabFocus();
     506             :     }
     507           0 : }
     508             : 
     509           0 : IMPL_LINK( DialControl, LinkedFieldModifyHdl, NumericField*, pField )
     510             : {
     511           0 :     if( pField )
     512           0 :         SetRotation( static_cast< sal_Int32 >( pField->GetValue() * mpImpl->mnLinkedFieldValueMultiplyer ), false );
     513           0 :     return 0;
     514             : }
     515             : 
     516             : 
     517             : 
     518           0 : DialControlWrapper::DialControlWrapper( DialControl& rDial ) :
     519           0 :     SingleControlWrapperType( rDial )
     520             : {
     521           0 : }
     522             : 
     523           0 : bool DialControlWrapper::IsControlDontKnow() const
     524             : {
     525           0 :     return !GetControl().HasRotation();
     526             : }
     527             : 
     528           0 : void DialControlWrapper::SetControlDontKnow( bool bSet )
     529             : {
     530           0 :     if( bSet )
     531           0 :         GetControl().SetNoRotation();
     532           0 : }
     533             : 
     534           0 : sal_Int32 DialControlWrapper::GetControlValue() const
     535             : {
     536           0 :     return GetControl().GetRotation();
     537             : }
     538             : 
     539           0 : void DialControlWrapper::SetControlValue( sal_Int32 nValue )
     540             : {
     541           0 :     GetControl().SetRotation( nValue );
     542           0 : }
     543             : 
     544             : 
     545             : 
     546         390 : }
     547             : 
     548             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.11