diff options
Diffstat (limited to 'svx/source/dialog/dlgutil.cxx')
-rw-r--r-- | svx/source/dialog/dlgutil.cxx | 932 |
1 files changed, 10 insertions, 922 deletions
diff --git a/svx/source/dialog/dlgutil.cxx b/svx/source/dialog/dlgutil.cxx index 1d2b295a793d..6c7a42f90970 100644 --- a/svx/source/dialog/dlgutil.cxx +++ b/svx/source/dialog/dlgutil.cxx @@ -2,13 +2,10 @@ * * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * - * Copyright 2008 by Sun Microsystems, Inc. + * Copyright 2000, 2010 Oracle and/or its affiliates. * * OpenOffice.org - a multi-platform office productivity suite * - * $RCSfile: dlgutil.cxx,v $ - * $Revision: 1.17 $ - * * This file is part of OpenOffice.org. * * OpenOffice.org is free software: you can redistribute it and/or modify @@ -33,935 +30,26 @@ // include --------------------------------------------------------------- -#include <limits.h> -#include <tools/shl.hxx> -#include <tools/urlobj.hxx> -#include <unolingu.hxx> - -#include <svtools/langtab.hxx> -#include <svl/itemset.hxx> -#include <sfx2/viewfrm.hxx> -#include <sfx2/objsh.hxx> - -#include <svx/dialogs.hrc> - #include "dlgutil.hxx" -#include <svx/dialmgr.hxx> - -// ----------------------------------------------------------------------- - -String GetLanguageString( LanguageType eType ) -{ - static const SvtLanguageTable aLangTable; - return aLangTable.GetString( eType ); -} - -// ----------------------------------------------------------------------- - -String GetDicInfoStr( const String& rName, const USHORT nLang, const BOOL bNeg ) -{ - INetURLObject aURLObj; - aURLObj.SetSmartProtocol( INET_PROT_FILE ); - aURLObj.SetSmartURL( rName, INetURLObject::ENCODE_ALL ); - String aTmp( aURLObj.GetBase() ); - aTmp += sal_Unicode( ' ' ); - - if ( bNeg ) - { - sal_Char const sTmp[] = " (-) "; - aTmp.AppendAscii( sTmp ); - } - - if ( LANGUAGE_NONE == nLang ) - aTmp += String( ResId( RID_SVXSTR_LANGUAGE_ALL, DIALOG_MGR() ) ); - else - { - aTmp += sal_Unicode( '[' ); - aTmp += ::GetLanguageString( (LanguageType)nLang ); - aTmp += sal_Unicode( ']' ); - } - - return aTmp; -} - -// ----------------------------------------------------------------------- - -void SetFieldUnit( MetricField& rField, FieldUnit eUnit, BOOL bAll ) -{ - sal_Int64 nFirst = rField.Denormalize( rField.GetFirst( FUNIT_TWIP ) ); - sal_Int64 nLast = rField.Denormalize( rField.GetLast( FUNIT_TWIP ) ); - sal_Int64 nMin = rField.Denormalize( rField.GetMin( FUNIT_TWIP ) ); - sal_Int64 nMax = rField.Denormalize( rField.GetMax( FUNIT_TWIP ) ); - - if ( !bAll ) - { - switch ( eUnit ) - { - case FUNIT_M: - case FUNIT_KM: - eUnit = FUNIT_CM; - break; - - case FUNIT_FOOT: - case FUNIT_MILE: - eUnit = FUNIT_INCH; - break; - default: ;//prevent warning - } - } - rField.SetUnit( eUnit ); - switch( eUnit ) - { - case FUNIT_MM: - rField.SetSpinSize( 50 ); - break; - - case FUNIT_INCH: - rField.SetSpinSize( 2 ); - break; - - default: - rField.SetSpinSize( 10 ); - } - - if ( FUNIT_POINT == eUnit ) - { - if( rField.GetDecimalDigits() > 1 ) - rField.SetDecimalDigits( 1 ); - } - else - rField.SetDecimalDigits( 2 ); - - if ( !bAll ) - { - rField.SetFirst( rField.Normalize( nFirst ), FUNIT_TWIP ); - rField.SetLast( rField.Normalize( nLast ), FUNIT_TWIP ); - rField.SetMin( rField.Normalize( nMin ), FUNIT_TWIP ); - rField.SetMax( rField.Normalize( nMax ), FUNIT_TWIP ); - } -} - -// ----------------------------------------------------------------------- - -void SetFieldUnit( MetricBox& rBox, FieldUnit eUnit, BOOL bAll ) -{ - sal_Int64 nMin = rBox.Denormalize( rBox.GetMin( FUNIT_TWIP ) ); - sal_Int64 nMax = rBox.Denormalize( rBox.GetMax( FUNIT_TWIP ) ); - - if ( !bAll ) - { - switch ( eUnit ) - { - case FUNIT_M: - case FUNIT_KM: - eUnit = FUNIT_CM; - break; - - case FUNIT_FOOT: - case FUNIT_MILE: - eUnit = FUNIT_INCH; - break; - default: ;//prevent warning - } - } - rBox.SetUnit( eUnit ); - - if ( FUNIT_POINT == eUnit && rBox.GetDecimalDigits() > 1 ) - rBox.SetDecimalDigits( 1 ); - else - rBox.SetDecimalDigits( 2 ); - - if ( !bAll ) - { - rBox.SetMin( rBox.Normalize( nMin ), FUNIT_TWIP ); - rBox.SetMax( rBox.Normalize( nMax ), FUNIT_TWIP ); - } -} +#include <svl/itemset.hxx> +#include <sfx2/sfxsids.hrc> +#include <sfx2/module.hxx> +#include <svl/intitem.hxx> // ----------------------------------------------------------------------- -FieldUnit GetModuleFieldUnit( const SfxItemSet* pSet ) +FieldUnit GetModuleFieldUnit( const SfxItemSet& rSet ) { FieldUnit eUnit = FUNIT_INCH; const SfxPoolItem* pItem = NULL; - if ( pSet && SFX_ITEM_SET == pSet->GetItemState( SID_ATTR_METRIC, FALSE, &pItem ) ) + if ( SFX_ITEM_SET == rSet.GetItemState( SID_ATTR_METRIC, FALSE, &pItem ) ) eUnit = (FieldUnit)( (const SfxUInt16Item*)pItem )->GetValue(); else { - SfxViewFrame* pFrame = SfxViewFrame::Current(); - SfxObjectShell* pSh = NULL; - if ( pFrame ) - pSh = pFrame->GetObjectShell(); - if ( pSh ) // #93209# the object shell is not always available during reload - { - SfxModule* pModule = pSh->GetModule(); - if ( pModule ) - { - const SfxPoolItem* _pItem = pModule->GetItem( SID_ATTR_METRIC ); - if ( _pItem ) - eUnit = (FieldUnit)( (SfxUInt16Item*)_pItem )->GetValue(); - } - else - { - DBG_ERRORFILE( "GetModuleFieldUnit(): no module found" ); - } - } - } - return eUnit; -} - -// ----------------------------------------------------------------------- -void SetMetricValue( MetricField& rField, long nCoreValue, SfxMapUnit eUnit ) -{ - sal_Int64 nVal = OutputDevice::LogicToLogic( nCoreValue, (MapUnit)eUnit, MAP_100TH_MM ); - nVal = rField.Normalize( nVal ); - rField.SetValue( nVal, FUNIT_100TH_MM ); - -/* - if ( SFX_MAPUNIT_100TH_MM == eUnit ) - { - FieldUnit eFUnit = ( (MetricField&)rField ).GetUnit(); - USHORT nDigits = rField.GetDecimalDigits(); - - if ( FUNIT_MM == eFUnit ) - { - if ( 0 == nDigits ) - lCoreValue /= 100; - else if ( 1 == nDigits ) - lCoreValue /= 10; - else if ( nDigits > 2 ) - { - DBG_ERROR( "too much decimal digits" ); - return; - } - rField.SetValue( lCoreValue, FUNIT_MM ); - return; - } - else if ( FUNIT_CM == eFUnit ) - { - if ( 0 == nDigits ) - lCoreValue /= 1000; - else if ( 1 == nDigits ) - lCoreValue /= 100; - else if ( 2 == nDigits ) - lCoreValue /= 10; - else if ( nDigits > 3 ) - { - DBG_ERROR( "too much decimal digits" ); - return; - } - rField.SetValue( lCoreValue, FUNIT_CM ); - return; - } - } - rField.SetValue( rField.Normalize( - ConvertValueToUnit( lCoreValue, eUnit ) ), MapToFieldUnit( eUnit ) ); -*/ -} - -// ----------------------------------------------------------------------- - -long GetCoreValue( const MetricField& rField, SfxMapUnit eUnit ) -{ - sal_Int64 nVal = rField.GetValue( FUNIT_100TH_MM ); - // avoid rounding issues - const sal_Int64 nSizeMask = 0xffffffffff000000LL; - bool bRoundBefore = true; - if( nVal >= 0 ) - { - if( (nVal & nSizeMask) == 0 ) - bRoundBefore = false; - } - else - { - if( ((-nVal) & nSizeMask ) == 0 ) - bRoundBefore = false; - } - if( bRoundBefore ) - nVal = rField.Denormalize( nVal ); - sal_Int64 nUnitVal = OutputDevice::LogicToLogic( static_cast<long>(nVal), MAP_100TH_MM, (MapUnit)eUnit ); - if( ! bRoundBefore ) - nUnitVal = rField.Denormalize( nUnitVal ); - return static_cast<long>(nUnitVal); - -/* - long nRet = rField.GetValue( MapToFieldUnit( eUnit ) ); - FieldUnit eFUnit = ( (MetricField&)rField ).GetUnit(); - USHORT nDigits = rField.GetDecimalDigits(); - DBG_ASSERT( nDigits <= 2, "decimal digits > 2!" ); - - switch ( eUnit ) - { - case SFX_MAPUNIT_100TH_MM: - { - if ( 2 == nDigits ) - return nRet; - else if ( 1 == nDigits ) - return nRet * 10; - else - return nRet * 100; - } - - case SFX_MAPUNIT_TWIP: - { - if ( 2 == nDigits ) - { - long nMod = 100; - long nTmp = nRet % nMod; - - if ( nTmp >= 49 ) - nRet += 100 - nTmp; - return nRet / 100; - } - else if ( 1 == nDigits ) - { - long nMod = 10; - long nTmp = nRet % nMod; - - if ( nTmp >= 4 ) - nRet += 10 - nTmp; - return nRet / 10; - } - else - return nRet; - } - - default: - DBG_ERROR( "this unit is not implemented" ); - return 0; - } -*/ - -/*!!! - return ConvertValueToMap( rField.Denormalize( - rField.GetValue( MapToFieldUnit( eUnit ) ) ), eUnit ); -*/ -} - -// ----------------------------------------------------------------------- - -long CalcToUnit( float nIn, SfxMapUnit eUnit ) -{ - // nIn ist in Points - - DBG_ASSERT( eUnit == SFX_MAPUNIT_TWIP || - eUnit == SFX_MAPUNIT_100TH_MM || - eUnit == SFX_MAPUNIT_10TH_MM || - eUnit == SFX_MAPUNIT_MM || - eUnit == SFX_MAPUNIT_CM, "this unit is not implemented" ); - - float nTmp = nIn; - - if ( SFX_MAPUNIT_TWIP != eUnit ) - nTmp = nIn * 10 / 567; - - switch ( eUnit ) - { - case SFX_MAPUNIT_100TH_MM: nTmp *= 100; break; - case SFX_MAPUNIT_10TH_MM: nTmp *= 10; break; - case SFX_MAPUNIT_MM: break; - case SFX_MAPUNIT_CM: nTmp /= 10; break; - default: ;//prevent warning - } - - nTmp *= 20; - long nRet = (long)nTmp; - return nRet; -//! return (long)(nTmp * 20); -} - -// ----------------------------------------------------------------------- - -long ItemToControl( long nIn, SfxMapUnit eItem, SfxFieldUnit eCtrl ) -{ - long nOut = 0; - - switch ( eItem ) - { - case SFX_MAPUNIT_100TH_MM: - case SFX_MAPUNIT_10TH_MM: - case SFX_MAPUNIT_MM: - { - if ( eItem == SFX_MAPUNIT_10TH_MM ) - nIn /= 10; - else if ( eItem == SFX_MAPUNIT_100TH_MM ) - nIn /= 100; - nOut = TransformMetric( nIn, FUNIT_MM, (FieldUnit)eCtrl ); - } - break; - - case SFX_MAPUNIT_CM: - { - nOut = TransformMetric( nIn, FUNIT_CM, (FieldUnit)eCtrl ); - } - break; - - case SFX_MAPUNIT_1000TH_INCH: - case SFX_MAPUNIT_100TH_INCH: - case SFX_MAPUNIT_10TH_INCH: - case SFX_MAPUNIT_INCH: - { - if ( eItem == SFX_MAPUNIT_10TH_INCH ) - nIn /= 10; - else if ( eItem == SFX_MAPUNIT_100TH_INCH ) - nIn /= 100; - else if ( eItem == SFX_MAPUNIT_1000TH_INCH ) - nIn /= 1000; - nOut = TransformMetric( nIn, FUNIT_INCH, (FieldUnit)eCtrl ); - } - break; - - case SFX_MAPUNIT_POINT: - { - nOut = TransformMetric( nIn, FUNIT_POINT, (FieldUnit)eCtrl ); - } - break; - - case SFX_MAPUNIT_TWIP: - { - nOut = TransformMetric( nIn, FUNIT_TWIP, (FieldUnit)eCtrl ); - } - break; - default: ;//prevent warning - } - return nOut; -} - -// ----------------------------------------------------------------------- - -long ControlToItem( long nIn, SfxFieldUnit eCtrl, SfxMapUnit eItem ) -{ - return ItemToControl( nIn, eItem, eCtrl ); -} - -// ----------------------------------------------------------------------- - -FieldUnit MapToFieldUnit( const SfxMapUnit eUnit ) -{ - switch ( eUnit ) - { - case SFX_MAPUNIT_100TH_MM: - case SFX_MAPUNIT_10TH_MM: - case SFX_MAPUNIT_MM: - return FUNIT_MM; - - case SFX_MAPUNIT_CM: - return FUNIT_CM; - - case SFX_MAPUNIT_1000TH_INCH: - case SFX_MAPUNIT_100TH_INCH: - case SFX_MAPUNIT_10TH_INCH: - case SFX_MAPUNIT_INCH: - return FUNIT_INCH; - - case SFX_MAPUNIT_POINT: - return FUNIT_POINT; - - case SFX_MAPUNIT_TWIP: - return FUNIT_TWIP; - default: ;//prevent warning - } - return FUNIT_NONE; -} - -// ----------------------------------------------------------------------- - -MapUnit FieldToMapUnit( const SfxFieldUnit /*eUnit*/ ) -{ - return MAP_APPFONT; -} - -// ----------------------------------------------------------------------- - -long ConvertValueToMap( long nVal, SfxMapUnit eUnit ) -{ - long nNew = nVal; - - switch ( eUnit ) - { - case SFX_MAPUNIT_10TH_MM: - case SFX_MAPUNIT_10TH_INCH: - nNew *= 10; - break; - - case SFX_MAPUNIT_100TH_MM: - case SFX_MAPUNIT_100TH_INCH: - nNew *= 100; - break; - - case SFX_MAPUNIT_1000TH_INCH: - nNew *= 1000; - default: ;//prevent warning - } - return nNew; -} - -// ----------------------------------------------------------------------- - -long ConvertValueToUnit( long nVal, SfxMapUnit eUnit ) -{ - long nNew = nVal; - - switch ( eUnit ) - { - case SFX_MAPUNIT_10TH_MM: - case SFX_MAPUNIT_10TH_INCH: - nNew /= 10; - break; - - case SFX_MAPUNIT_100TH_MM: - case SFX_MAPUNIT_100TH_INCH: - nNew /= 100; - break; - - case SFX_MAPUNIT_1000TH_INCH: - nNew /= 1000; - break; - default: ;//prevent warning - } - return nNew; -} - -// ----------------------------------------------------------------------- - -long CalcToPoint( long nIn, SfxMapUnit eUnit, USHORT nFaktor ) -{ - DBG_ASSERT( eUnit == SFX_MAPUNIT_TWIP || - eUnit == SFX_MAPUNIT_100TH_MM || - eUnit == SFX_MAPUNIT_10TH_MM || - eUnit == SFX_MAPUNIT_MM || - eUnit == SFX_MAPUNIT_CM, "this unit is not implemented" ); - - long nRet = 0; - - if ( SFX_MAPUNIT_TWIP == eUnit ) - nRet = nIn; - else - nRet = nIn * 567; - - switch ( eUnit ) - { - case SFX_MAPUNIT_100TH_MM: nRet /= 100; break; - case SFX_MAPUNIT_10TH_MM: nRet /= 10; break; - case SFX_MAPUNIT_MM: break; - case SFX_MAPUNIT_CM: nRet *= 10; break; - default: ;//prevent warning - } - - // ggf. aufrunden - if ( SFX_MAPUNIT_TWIP != eUnit ) - { - long nMod = 10; - long nTmp = nRet % nMod; - - if ( nTmp >= 4 ) - nRet += 10 - nTmp; - nRet /= 10; - } - return nRet * nFaktor / 20; -} - -// ----------------------------------------------------------------------- - -long CMToTwips( long nIn ) -{ - long nRet = 0; - - if ( nIn <= ( LONG_MAX / 567 ) && nIn >= ( LONG_MIN / 567 ) ) - nRet = nIn * 567; - return nRet; -} - -// ----------------------------------------------------------------------- - -long MMToTwips( long nIn ) -{ - long nRet = 0; - - if ( nIn <= ( LONG_MAX / 567 ) && nIn >= ( LONG_MIN / 567 ) ) - nRet = nIn * 567 / 10; - return nRet; -} - -// ----------------------------------------------------------------------- - -long InchToTwips( long nIn ) -{ - long nRet = 0; - - if ( nIn <= ( LONG_MAX / 1440 ) && nIn >= ( LONG_MIN / 1440 ) ) - nRet = nIn * 1440; - return nRet; -} - -// ----------------------------------------------------------------------- - -long PointToTwips( long nIn ) -{ - long nRet = 0; - - if ( nIn <= ( LONG_MAX / 20 ) && nIn >= ( LONG_MIN / 20 ) ) - nRet = nIn * 20; - return nRet; -} - -// ----------------------------------------------------------------------- - -long PicaToTwips( long nIn ) -{ - long nRet = 0; - - if ( nIn <= ( LONG_MAX / 240 ) && nIn >= ( LONG_MIN / 240 ) ) - nRet = nIn * 240; - return nRet; -} - -// ----------------------------------------------------------------------- - -long TwipsToCM( long nIn ) -{ - long nRet = nIn / 567; - return nRet; -} - -// ----------------------------------------------------------------------- - -long InchToCM( long nIn ) -{ - long nRet = 0; - - if ( nIn <= ( LONG_MAX / 254 ) && nIn >= ( LONG_MIN / 254 ) ) - nRet = nIn * 254 / 100; - return nRet; -} - -// ----------------------------------------------------------------------- - -long MMToCM( long nIn ) -{ - long nRet = nIn / 10; - return nRet; -} - -// ----------------------------------------------------------------------- - -long PointToCM( long nIn ) -{ - long nRet = 0; - - if ( nIn <= ( LONG_MAX / 20 ) && nIn >= ( LONG_MIN / 20 ) ) - nRet = nIn * 20 / 567; - return nRet; -} - -// ----------------------------------------------------------------------- - -long PicaToCM( long nIn) -{ - long nRet = 0; - - if ( nIn <= ( LONG_MAX / 12 / 20 ) && nIn >= ( LONG_MIN / 12 / 20 ) ) - nRet = nIn * 12 * 20 / 567; - return nRet; -} - -// ----------------------------------------------------------------------- - -long TwipsToMM( long nIn ) -{ - long nRet = 0; - - if ( nIn <= ( LONG_MAX / 10 ) && nIn >= ( LONG_MIN / 10 ) ) - nRet = nIn * 10 / 566; - return nRet; -} - -// ----------------------------------------------------------------------- - -long CMToMM( long nIn ) -{ - long nRet = 0; - - if ( nIn <= ( LONG_MAX / 10 ) && nIn >= ( LONG_MIN / 10 ) ) - nRet = nIn * 10; - return nRet; -} - -// ----------------------------------------------------------------------- - -long InchToMM( long nIn ) -{ - long nRet = 0; - - if ( nIn <= ( LONG_MAX / 254 ) && nIn >= ( LONG_MIN / 254 ) ) - nRet = nIn * 254 / 10; - return nRet; -} - -// ----------------------------------------------------------------------- - -long PointToMM( long nIn ) -{ - long nRet = 0; - - if ( nIn <= ( LONG_MAX / 200 ) && nIn >= ( LONG_MIN / 200 ) ) - nRet = nIn * 200 / 567; - return nRet; -} - -// ----------------------------------------------------------------------- - -long PicaToMM( long nIn ) -{ - long nRet = 0; - - if ( nIn <= ( LONG_MAX / 12 / 200 ) && nIn >= ( LONG_MIN / 12 / 200 ) ) - nRet = nIn * 12 * 200 / 567; - return nRet; -} - -// ----------------------------------------------------------------------- - -long TwipsToInch( long nIn ) -{ - long nRet = nIn / 1440; - return nRet; -} - -// ----------------------------------------------------------------------- - -long CMToInch( long nIn ) -{ - long nRet = 0; - - if ( nIn <= ( LONG_MAX / 100 ) && nIn >= ( LONG_MIN / 100 ) ) - nRet = nIn * 100 / 254; - return nRet; -} - -// ----------------------------------------------------------------------- - -long MMToInch( long nIn ) -{ - long nRet = 0; - - if ( nIn <= ( LONG_MAX / 10 ) && nIn >= ( LONG_MIN / 10 ) ) - nRet = nIn * 10 / 254; - return nRet; -} - -// ----------------------------------------------------------------------- - -long PointToInch( long nIn ) -{ - long nRet = nIn / 72; - return nRet; -} - -// ----------------------------------------------------------------------- - -long PicaToInch( long nIn ) -{ - long nRet = nIn / 6; - return nRet; -} - -// ----------------------------------------------------------------------- - -long TwipsToPoint( long nIn ) -{ - long nRet = nIn / 20; - return nRet; -} - -// ----------------------------------------------------------------------- - -long InchToPoint( long nIn ) -{ - long nRet = 0; - - if ( nIn <= ( LONG_MAX / 72 ) && nIn >= ( LONG_MIN / 72 ) ) - nRet = nIn * 72; - return nRet; -} - -// ----------------------------------------------------------------------- - -long CMToPoint( long nIn ) -{ - long nRet = 0; - - if ( nIn <= ( LONG_MAX / 567 ) && nIn >= ( LONG_MIN / 567 ) ) - nRet = nIn * 567 / 20; - return nRet; -} - -// ----------------------------------------------------------------------- - -long MMToPoint( long nIn ) -{ - long nRet = 0; - - if ( nIn <= ( LONG_MAX / 567 ) && nIn >= ( LONG_MIN / 567 ) ) - nRet = nIn * 567 / 200; - return nRet; -} - -// ----------------------------------------------------------------------- - -long PicaToPoint( long nIn ) -{ - long nRet = nIn / 12; - return nRet; -} - -// ----------------------------------------------------------------------- - -long TwipsToPica( long nIn ) -{ - long nRet = nIn / 240; - return nRet; -} - -// ----------------------------------------------------------------------- - -long InchToPica( long nIn ) -{ - long nRet = 0; - - if ( nIn <= ( LONG_MAX / 6 ) && nIn >= ( LONG_MIN / 6 ) ) - nRet = nIn * 6; - return nRet; -} - -// ----------------------------------------------------------------------- - -long PointToPica( long nIn ) -{ - long nRet = 0; - - if ( nIn <= ( LONG_MAX / 12 ) && nIn >= ( LONG_MIN / 12 ) ) - nRet = nIn * 12; - return nRet; -} - -// ----------------------------------------------------------------------- - -long CMToPica( long nIn ) -{ - long nRet = 0; - - if ( nIn <= ( LONG_MAX / 567 ) && nIn >= ( LONG_MIN / 567 ) ) - nRet = nIn * 567 / 20 / 12; - return nRet; -} - -// ----------------------------------------------------------------------- - -long MMToPica( long nIn ) -{ - long nRet = 0; - - if ( nIn <= ( LONG_MAX / 567 ) && nIn >= ( LONG_MIN / 567 ) ) - nRet = nIn * 567 / 200 / 12; - return nRet; -} - -// ----------------------------------------------------------------------- - -long Nothing( long nIn ) -{ - long nRet = nIn; - return nRet; -} - -FUNC_CONVERT ConvertTable[6][6] = -{ -// CM, MM INCH POINT PICAS=32 TWIPS - { Nothing, CMToMM, CMToInch, CMToPoint, CMToPica, CMToTwips }, - { MMToCM, Nothing, MMToInch, MMToPoint, MMToPica, MMToTwips }, - { InchToCM, InchToMM, Nothing, InchToPoint, InchToPica, InchToTwips }, - { PointToCM, PointToMM, PointToInch, Nothing, PointToPica, PointToTwips }, - { PicaToCM, PicaToMM, PicaToInch, PicaToPoint, Nothing, PicaToTwips }, - { TwipsToCM, TwipsToMM, TwipsToInch, TwipsToPoint,TwipsToPica, Nothing } -}; - -// ----------------------------------------------------------------------- - -long TransformMetric( long nVal, FieldUnit aOld, FieldUnit aNew ) -{ - if ( aOld == FUNIT_NONE || aNew == FUNIT_NONE || - aOld == FUNIT_CUSTOM || aNew == FUNIT_CUSTOM ) - { - return nVal; - } - - USHORT nOld = 0; - USHORT nNew = 0; - - switch ( aOld ) - { - case FUNIT_CM: - nOld = 0; break; - case FUNIT_MM: - nOld = 1; break; - case FUNIT_INCH: - nOld = 2; break; - case FUNIT_POINT: - nOld = 3; break; - case FUNIT_PICA: - nOld = 4; break; - case FUNIT_TWIP: - nOld = 5; break; - default: ;//prevent warning + DBG_ERROR("Using fallback for field unit - field unit should be provided in ItemSet"); + return SfxModule::GetCurrentFieldUnit(); } - switch ( aNew ) - { - case FUNIT_CM: - nNew = 0; break; - case FUNIT_MM: - nNew = 1; break; - case FUNIT_INCH: - nNew = 2; break; - case FUNIT_POINT: - nNew = 3; break; - case FUNIT_PICA: - nNew = 4; break; - case FUNIT_TWIP: - nNew = 5; break; - default: ;//prevent warning - } - return ConvertTable[nOld][nNew]( nVal ); -} - -String ConvertPosSizeToIniString( const Point& rPos, const Size& rSize ) -{ - String aRet = String::CreateFromInt32( rPos.X() ); - aRet += '/'; - aRet += String::CreateFromInt32( rPos.Y() ); - aRet += '/'; - aRet += String::CreateFromInt32( rSize.Width() ); - aRet += '/'; - aRet += String::CreateFromInt32( rSize.Height() ); - return aRet; -} - -sal_Bool ConvertIniStringToPosSize( const String& rIniStr, Point& rPos, Size& rSize ) -{ - if ( rIniStr.GetTokenCount('/') != 4 ) - return sal_False; - - USHORT nIdx = 0; - rPos.X() = rIniStr.GetToken( 0, '/', nIdx ).ToInt32(); - rPos.Y() = rIniStr.GetToken( 0, '/', nIdx ).ToInt32(); - rSize.Width() = rIniStr.GetToken( 0, '/', nIdx ).ToInt32(); - rSize.Height() = rIniStr.GetToken( 0, '/', nIdx ).ToInt32(); - - // negative sizes are invalid - if ( rSize.Width() < 0 || rSize.Height() < 0 ) - return sal_False; - - return sal_True; + return eUnit; } |