1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
3 * This file is part of the LibreOffice project.
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/.
9 * This file incorporates work covered by the following license notice:
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 .
20 #include <vcl/outdev.hxx>
21 #include <editeng/editrids.hrc>
22 #include <unotools/intlwrapper.hxx>
23 #include <unotools/localedatawrapper.hxx>
24 #include <editeng/itemtype.hxx>
25 #include <editeng/eerdll.hxx>
27 // -----------------------------------------------------------------------
29 XubString
GetMetricText( long nVal
, SfxMapUnit eSrcUnit
, SfxMapUnit eDestUnit
, const IntlWrapper
* pIntl
)
31 sal_Bool bNeg
= sal_False
;
43 case SFX_MAPUNIT_100TH_MM
:
44 case SFX_MAPUNIT_10TH_MM
:
48 nRet
= (long)OutputDevice::LogicToLogic(
49 nVal
, (MapUnit
)eSrcUnit
, (MapUnit
)SFX_MAPUNIT_100TH_MM
);
53 case SFX_MAPUNIT_100TH_MM
: nRet
*= 1000; break;
54 case SFX_MAPUNIT_10TH_MM
: nRet
*= 100; break;
55 case SFX_MAPUNIT_MM
: nRet
*= 10; break;
56 default: ;//prevent warning
61 case SFX_MAPUNIT_1000TH_INCH
:
62 case SFX_MAPUNIT_100TH_INCH
:
63 case SFX_MAPUNIT_10TH_INCH
:
64 case SFX_MAPUNIT_INCH
:
66 nRet
= (long)OutputDevice::LogicToLogic(
67 nVal
, (MapUnit
)eSrcUnit
, (MapUnit
)SFX_MAPUNIT_1000TH_INCH
);
71 case SFX_MAPUNIT_1000TH_INCH
: nRet
*= 1000; break;
72 case SFX_MAPUNIT_100TH_INCH
: nRet
*= 100; break;
73 case SFX_MAPUNIT_10TH_INCH
: nRet
*= 10; break;
74 default: ;//prevent warning
79 case SFX_MAPUNIT_POINT
:
80 case SFX_MAPUNIT_TWIP
:
81 case SFX_MAPUNIT_PIXEL
:
82 return String::CreateFromInt32( (long)OutputDevice::LogicToLogic(
83 nVal
, (MapUnit
)eSrcUnit
, (MapUnit
)eDestUnit
));
86 OSL_FAIL( "not supported mapunit" );
90 if ( SFX_MAPUNIT_CM
== eDestUnit
|| SFX_MAPUNIT_INCH
== eDestUnit
)
92 long nMod
= nRet
% 10;
101 sRet
+= sal_Unicode('-');
104 for( int nDigits
= 4; nDigits
; --nDigits
, nDiff
/= 10 )
107 sRet
+= sal_Unicode('0');
109 sRet
+= String::CreateFromInt32( nRet
/ nDiff
);
114 sRet
+= pIntl
->getLocaleData()->getNumDecimalSep();
119 sRet
+= sal_Unicode('0');
129 // -----------------------------------------------------------------------
131 XubString
GetSvxString( sal_uInt16 nId
)
133 return EE_RESSTR( nId
);
136 // -----------------------------------------------------------------------
138 XubString
GetColorString( const Color
& rCol
)
143 RGB_COLORDATA( rCol
.GetRed(), rCol
.GetGreen(), rCol
.GetBlue() );
144 sal_uInt16 nColor
= 0;
146 static ColorData aColAry
[] = {
147 COL_BLACK
, COL_BLUE
, COL_GREEN
, COL_CYAN
,
148 COL_RED
, COL_MAGENTA
, COL_BROWN
, COL_GRAY
,
149 COL_LIGHTGRAY
, COL_LIGHTBLUE
, COL_LIGHTGREEN
, COL_LIGHTCYAN
,
150 COL_LIGHTRED
, COL_LIGHTMAGENTA
, COL_YELLOW
, COL_WHITE
};
152 while ( nColor
< sizeof(aColAry
)/sizeof(ColorData
) &&
153 aColAry
[nColor
] != nColData
)
158 if ( nColor
< sizeof(aColAry
)/sizeof(ColorData
) )
159 sStr
= EE_RESSTR( RID_SVXITEMS_COLOR_BEGIN
+ nColor
+ 1 );
163 sStr
.AppendAscii(RTL_CONSTASCII_STRINGPARAM( "RGB" ));
164 sStr
+= sal_Unicode('(');
165 sStr
+= String::CreateFromInt32( rCol
.GetRed() );
167 sStr
+= String::CreateFromInt32( rCol
.GetGreen() );
169 sStr
+= String::CreateFromInt32( rCol
.GetBlue() );
170 sStr
+= sal_Unicode(')');
175 // -----------------------------------------------------------------------
177 sal_uInt16
GetMetricId( SfxMapUnit eUnit
)
179 sal_uInt16 nId
= RID_SVXITEMS_METRIC_MM
;
183 case SFX_MAPUNIT_100TH_MM
:
184 case SFX_MAPUNIT_10TH_MM
:
186 nId
= RID_SVXITEMS_METRIC_MM
;
190 nId
= RID_SVXITEMS_METRIC_CM
;
193 case SFX_MAPUNIT_1000TH_INCH
:
194 case SFX_MAPUNIT_100TH_INCH
:
195 case SFX_MAPUNIT_10TH_INCH
:
196 case SFX_MAPUNIT_INCH
:
197 nId
= RID_SVXITEMS_METRIC_INCH
;
200 case SFX_MAPUNIT_POINT
:
201 nId
= RID_SVXITEMS_METRIC_POINT
;
204 case SFX_MAPUNIT_TWIP
:
205 nId
= RID_SVXITEMS_METRIC_TWIP
;
208 case SFX_MAPUNIT_PIXEL
:
209 nId
= RID_SVXITEMS_METRIC_PIXEL
;
213 OSL_FAIL( "not supported mapunit" );
219 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */