/************************************************************** * * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. * *************************************************************/ #ifndef __com_sun_star_i18n_NumberFormatIndex_idl__ #define __com_sun_star_i18n_NumberFormatIndex_idl__ //============================================================================= module com { module sun { module star { module i18n { //============================================================================= //! Do NOT insert any new values! //! Locale data number format creation must match these values! //! Number formatter internals must match these values! /** Number format indices to be passed as the index argument to XNumberFormatCode::getFormatCode() or XNumberFormatTypes::getFormatIndex().

Each locale can support up to about 5000 arbitrary format codes. But for backward compatiblity reasons, each locale MUST support some predefined format codes. These predefined format codes are accessed through indices as the following, and the locale data format code definitions in i18npool\source\localedata\data\*.xml MUST have matching entries in the form
<FormatElement formatindex="0">
(see also FormatElement::formatIndex). The index values are also used to define the enum NfIndexTableOffset in file svtools/inc/zforlist.hxx

Note: This index has nothing to do with the index key used internally by the number formatter.


Date formats may have a comment of DIN/EN/ISO, meaning

Some names of date format constants indicate a special behavior of those formats in StarOffice 5.2 or older. Those are:

DATE_SYSTEM_...
On Windows platforms these formats were entirely retrieved from the system's Regional Settings. OpenOffice.org / StarOffice 6 don't use those Windows settings anymore in order to provide the same functionality and document layout on every platform. Like all other formats these formats are now defined in the i18n framework locale data files under i18npool\source\localedata\data\*.xml
DATE_SYS_...
On Windows platforms these formats used separators and YMD order retrieved from the Regional Settings, but appearance of short/long days/months/years was defined by the application.
DATE_DEF_...
The format code was hard defined, only the date separator was taken from the Windows Regional Settings, but not the YMD order.

*/ published constants NumberFormatIndex { /// Start of simple numerical formats (first format) const short NUMBER_START = 0; /// The "General" standard format const short NUMBER_STANDARD = NUMBER_START; /// 0
Integer number const short NUMBER_INT = NUMBER_START+1; /// 0.00
Decimal number with 2 decimals const short NUMBER_DEC2 = NUMBER_START+2; /// #,##0
Integer number with group separator const short NUMBER_1000INT = NUMBER_START+3; /// #,##0.00
Decimal number with group separator const short NUMBER_1000DEC2 = NUMBER_START+4; /// #,##0.00
In SO5/Win this format was retrieved from the Regional Settings const short NUMBER_SYSTEM = NUMBER_START+5; /// End of simple numerical formats (last format) const short NUMBER_END = NUMBER_SYSTEM ; /// Start of Scientific formats (first format) const short SCIENTIFIC_START = NUMBER_END+1; /// 0.00E+000
Number in scientific notation with exponent in 3 digit placeholders const short SCIENTIFIC_000E000 = SCIENTIFIC_START; /// 0.00E+00
Number in scientific notation with exponent in 2 digit placeholders const short SCIENTIFIC_000E00 = SCIENTIFIC_START+1; /// End of Scientific formats (last format) const short SCIENTIFIC_END = SCIENTIFIC_000E00; /// Start of Percent formats (first format) const short PERCENT_START = SCIENTIFIC_END+1; /// 0%
Percentage format, rounded to integer const short PERCENT_INT = PERCENT_START; /// 0.00%
Percentage format, rounded to 2 decimals const short PERCENT_DEC2 = PERCENT_START+1; /// End of Percent formats (last format) const short PERCENT_END = PERCENT_DEC2; /// Start of Fraction formats (first format) const short FRACTION_START = PERCENT_END+1; /// # ?/?
Number with decimal in fraction in 1 digit placeholder const short FRACTION_1 = FRACTION_START; /// # ??/??
Number with decimal in fraction in 2 digit placeholders const short FRACTION_2 = FRACTION_START+1; /// End of Fraction formats (last format) const short FRACTION_END = FRACTION_2; /// Start of Currency formats (first format) const short CURRENCY_START = FRACTION_END+1; /// #,##0 DM
Integer currency format with group separator const short CURRENCY_1000INT = CURRENCY_START; /// #,##0.00 DM
Decimal currency format with group separator const short CURRENCY_1000DEC2 = CURRENCY_START+1; /// #,##0 DM
Integer currency format with negative in red const short CURRENCY_1000INT_RED = CURRENCY_START+2; /// #,##0.00 DM
Decimal currency format with negative in red const short CURRENCY_1000DEC2_RED = CURRENCY_START+3; /// #,##0.00 DEM
Currency in ISO-4217 abbreviation format const short CURRENCY_1000DEC2_CCC = CURRENCY_START+4; /// #,##0.-- DM
Currency format with dash representing 0 in decimals const short CURRENCY_1000DEC2_DASHED = CURRENCY_START+5; /// End of Currency formats (last format) const short CURRENCY_END = CURRENCY_1000DEC2_DASHED; /// Start of Date formats (first format) const short DATE_START = CURRENCY_END+1; /// 08.10.97
see also DATE_SYSTEM_... explanation const short DATE_SYSTEM_SHORT = DATE_START; /// Wednesday, 8. October 1997
see also DATE_SYSTEM_... explanation const short DATE_SYSTEM_LONG = DATE_START+1; /// 08.10.97
see also DATE_SYS_... explanation const short DATE_SYS_DDMMYY = DATE_START+2; /** 08.10.1997
see also DATE_SYS_... explanation
Note: When editing already existing date data this format is forced in order to always edit the full century. */ const short DATE_SYS_DDMMYYYY = DATE_START+3; /// 8. Oct 97
see also DATE_SYS_... explanation const short DATE_SYS_DMMMYY = DATE_START+4; /// 8. Oct 1997
see also DATE_SYS_... explanation const short DATE_SYS_DMMMYYYY = DATE_START+5; /// 8. Oct. 1997
DIN/EN const short DATE_DIN_DMMMYYYY = DATE_START+6; /// 8. October 1997
see also DATE_SYS_... explanation const short DATE_SYS_DMMMMYYYY = DATE_START+7; /// 8. October 1997
DIN/EN const short DATE_DIN_DMMMMYYYY = DATE_START+8; /// Wed, 8. Oct 97
see also DATE_SYS_... explanation const short DATE_SYS_NNDMMMYY = DATE_START+9; /// Wed 08.Oct 97
see also DATE_DEF_... explanation const short DATE_DEF_NNDDMMMYY = DATE_START+10; /// Wed, 8. October 1997
see also DATE_SYS_... explanation const short DATE_SYS_NNDMMMMYYYY = DATE_START+11; /// Wednesday, 8. October 1997 const short DATE_SYS_NNNNDMMMMYYYY = DATE_START+12; /// 10-08
DIN/EN const short DATE_DIN_MMDD = DATE_START+13; /// 97-10-08
DIN/EN/ISO const short DATE_DIN_YYMMDD = DATE_START+14; /// 1997-10-08
DIN/EN/ISO const short DATE_DIN_YYYYMMDD = DATE_START+15; /// 10.97
see also DATE_SYS_... explanation const short DATE_SYS_MMYY = DATE_START+16; /// 08.Oct
see also DATE_SYS_... explanation const short DATE_SYS_DDMMM = DATE_START+17; /// October const short DATE_MMMM = DATE_START+18; /// 4th quarter 97 const short DATE_QQJJ = DATE_START+19; /// week of year const short DATE_WW = DATE_START+20; /// End of Date formats (last format) const short DATE_END = DATE_WW; /// Start of Time formats (first format) const short TIME_START = DATE_END+1; /// HH:MM
Time format with hour and minute const short TIME_HHMM = TIME_START; /// HH:MM:SS
Time format with hour, minute and second const short TIME_HHMMSS = TIME_START+1; /// HH:MM AM/PM
Time format with hour, minute and morning/afternoon notation const short TIME_HHMMAMPM = TIME_START+2; /// HH:MM:SS AM/PM
Time format with hour, minute, second and morning/afternoon notation const short TIME_HHMMSSAMPM = TIME_START+3; /// [HH]:MM:SS
Time format with amount of hours const short TIME_HH_MMSS = TIME_START+4; /// MM:SS,00
Time format with second in fraction const short TIME_MMSS00 = TIME_START+5; /// [HH]:MM:SS,00
Time format with amount of hours and seconds with fraction const short TIME_HH_MMSS00 = TIME_START+6; /// End of Time formats (last format) const short TIME_END = TIME_HH_MMSS00; /// Start of DateTime formats (first format) const short DATETIME_START = TIME_END + 1; /// 08.10.97 01:23 Date/time format const short DATETIME_SYSTEM_SHORT_HHMM = DATETIME_START; /** 08.10.1997 01:23:45 Date/time format with second
Note: When editing already existing date/time data this format is forced in order to always edit the full century. */ const short DATETIME_SYS_DDMMYYYY_HHMMSS= DATETIME_START+1; /// End of DateTime formats (last format) const short DATETIME_END = DATETIME_SYS_DDMMYYYY_HHMMSS; /** BOOLEAN format @ATTENTION Not defined in locale data, but generated by the number formatter. If you want to access this format you MUST do it via XNumberFormatTypes::getFormatIndex() instead of XNumberFormatCode::getFormatCode(). */ const short BOOLEAN = DATETIME_END+1; /** Text format @ATTENTION Not defined in locale data, but generated by the number formatter. If you want to access this format you MUST do it via XNumberFormatTypes::getFormatIndex() instead of XNumberFormatCode::getFormatCode() */ const short TEXT = BOOLEAN+1; /// count of built-in format codes. const short INDEX_TABLE_ENTRIES = TEXT+1; }; //============================================================================= }; }; }; }; #endif