1*ecfe53c5SAndrew Rist /************************************************************** 2cdf0e10cSrcweir * 3*ecfe53c5SAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 4*ecfe53c5SAndrew Rist * or more contributor license agreements. See the NOTICE file 5*ecfe53c5SAndrew Rist * distributed with this work for additional information 6*ecfe53c5SAndrew Rist * regarding copyright ownership. The ASF licenses this file 7*ecfe53c5SAndrew Rist * to you under the Apache License, Version 2.0 (the 8*ecfe53c5SAndrew Rist * "License"); you may not use this file except in compliance 9*ecfe53c5SAndrew Rist * with the License. You may obtain a copy of the License at 10*ecfe53c5SAndrew Rist * 11*ecfe53c5SAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12*ecfe53c5SAndrew Rist * 13*ecfe53c5SAndrew Rist * Unless required by applicable law or agreed to in writing, 14*ecfe53c5SAndrew Rist * software distributed under the License is distributed on an 15*ecfe53c5SAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*ecfe53c5SAndrew Rist * KIND, either express or implied. See the License for the 17*ecfe53c5SAndrew Rist * specific language governing permissions and limitations 18*ecfe53c5SAndrew Rist * under the License. 19*ecfe53c5SAndrew Rist * 20*ecfe53c5SAndrew Rist *************************************************************/ 21*ecfe53c5SAndrew Rist 22*ecfe53c5SAndrew Rist 23cdf0e10cSrcweir 24cdf0e10cSrcweir #ifndef _XMLOFF_XMLNUMFE_HXX 25cdf0e10cSrcweir #define _XMLOFF_XMLNUMFE_HXX 26cdf0e10cSrcweir 27cdf0e10cSrcweir #include "sal/config.h" 28cdf0e10cSrcweir #include "xmloff/dllapi.h" 29cdf0e10cSrcweir #include "sal/types.h" 30cdf0e10cSrcweir #include <com/sun/star/util/XNumberFormatsSupplier.hpp> 31cdf0e10cSrcweir #include <com/sun/star/uno/Sequence.h> 32cdf0e10cSrcweir #include <rtl/ustrbuf.hxx> 33cdf0e10cSrcweir 34cdf0e10cSrcweir #define XML_WRITTENNUMBERSTYLES "WrittenNumberStyles" 35cdf0e10cSrcweir 36cdf0e10cSrcweir class Color; 37cdf0e10cSrcweir class LocaleDataWrapper; 38cdf0e10cSrcweir class CharClass; 39cdf0e10cSrcweir class SvXMLExport; 40cdf0e10cSrcweir class SvXMLNamespaceMap; 41cdf0e10cSrcweir class SvXMLAttributeList; 42cdf0e10cSrcweir class SvNumberFormatter; 43cdf0e10cSrcweir class SvNumberformat; 44cdf0e10cSrcweir class SvXMLNumUsedList_Impl; 45cdf0e10cSrcweir class SvXMLEmbeddedTextEntryArr; 46cdf0e10cSrcweir 47cdf0e10cSrcweir class XMLOFF_DLLPUBLIC SvXMLNumFmtExport 48cdf0e10cSrcweir { 49cdf0e10cSrcweir private: 50cdf0e10cSrcweir SvXMLExport& rExport; 51cdf0e10cSrcweir ::rtl::OUString sPrefix; 52cdf0e10cSrcweir SvNumberFormatter* pFormatter; 53cdf0e10cSrcweir ::rtl::OUStringBuffer sTextContent; 54cdf0e10cSrcweir SvXMLNumUsedList_Impl* pUsedList; 55cdf0e10cSrcweir CharClass* pCharClass; 56cdf0e10cSrcweir LocaleDataWrapper* pLocaleData; 57cdf0e10cSrcweir 58cdf0e10cSrcweir SAL_DLLPRIVATE void AddCalendarAttr_Impl( const ::rtl::OUString& rCalendar ); 59cdf0e10cSrcweir SAL_DLLPRIVATE void AddStyleAttr_Impl( sal_Bool bLong ); 60cdf0e10cSrcweir SAL_DLLPRIVATE void AddTextualAttr_Impl( sal_Bool bText ); 61cdf0e10cSrcweir SAL_DLLPRIVATE void AddLanguageAttr_Impl( sal_Int32 nLang ); 62cdf0e10cSrcweir 63cdf0e10cSrcweir SAL_DLLPRIVATE void AddToTextElement_Impl( const ::rtl::OUString& rString ); 64cdf0e10cSrcweir SAL_DLLPRIVATE void FinishTextElement_Impl(); 65cdf0e10cSrcweir 66cdf0e10cSrcweir SAL_DLLPRIVATE void WriteColorElement_Impl( const Color& rColor ); 67cdf0e10cSrcweir SAL_DLLPRIVATE void WriteNumberElement_Impl( sal_Int32 nDecimals, sal_Int32 nInteger, 68cdf0e10cSrcweir const ::rtl::OUString& rDashStr, sal_Bool bVarDecimals, 69cdf0e10cSrcweir sal_Bool bGrouping, sal_Int32 nTrailingThousands, 70cdf0e10cSrcweir const SvXMLEmbeddedTextEntryArr& rEmbeddedEntries ); 71cdf0e10cSrcweir SAL_DLLPRIVATE void WriteScientificElement_Impl( sal_Int32 nDecimals, sal_Int32 nInteger, 72cdf0e10cSrcweir sal_Bool bGrouping, sal_Int32 nExp ); 73cdf0e10cSrcweir SAL_DLLPRIVATE void WriteFractionElement_Impl( sal_Int32 nInteger, sal_Bool bGrouping, 74cdf0e10cSrcweir sal_Int32 nNumerator, sal_Int32 nDenominator ); 75cdf0e10cSrcweir SAL_DLLPRIVATE void WriteCurrencyElement_Impl( const ::rtl::OUString& rString, 76cdf0e10cSrcweir const ::rtl::OUString& rExt ); 77cdf0e10cSrcweir SAL_DLLPRIVATE void WriteBooleanElement_Impl(); 78cdf0e10cSrcweir SAL_DLLPRIVATE void WriteTextContentElement_Impl(); 79cdf0e10cSrcweir SAL_DLLPRIVATE void WriteDayElement_Impl( const ::rtl::OUString& rCalendar, sal_Bool bLong ); 80cdf0e10cSrcweir SAL_DLLPRIVATE void WriteMonthElement_Impl( const ::rtl::OUString& rCalendar, sal_Bool bLong, sal_Bool bText ); 81cdf0e10cSrcweir SAL_DLLPRIVATE void WriteYearElement_Impl( const ::rtl::OUString& rCalendar, sal_Bool bLong ); 82cdf0e10cSrcweir SAL_DLLPRIVATE void WriteEraElement_Impl( const ::rtl::OUString& rCalendar, sal_Bool bLong ); 83cdf0e10cSrcweir SAL_DLLPRIVATE void WriteDayOfWeekElement_Impl( const ::rtl::OUString& rCalendar, sal_Bool bLong ); 84cdf0e10cSrcweir SAL_DLLPRIVATE void WriteWeekElement_Impl( const ::rtl::OUString& rCalendar ); 85cdf0e10cSrcweir SAL_DLLPRIVATE void WriteQuarterElement_Impl( const ::rtl::OUString& rCalendar, sal_Bool bLong ); 86cdf0e10cSrcweir SAL_DLLPRIVATE void WriteHoursElement_Impl( sal_Bool bLong ); 87cdf0e10cSrcweir SAL_DLLPRIVATE void WriteMinutesElement_Impl( sal_Bool bLong ); 88cdf0e10cSrcweir SAL_DLLPRIVATE void WriteSecondsElement_Impl( sal_Bool bLong, sal_uInt16 nDecimals ); 89cdf0e10cSrcweir SAL_DLLPRIVATE void WriteAMPMElement_Impl(); 90cdf0e10cSrcweir SAL_DLLPRIVATE void WriteMapElement_Impl( sal_Int32 nOp, double fLimit, 91cdf0e10cSrcweir sal_Int32 nKey, sal_Int32 nPart ); 92cdf0e10cSrcweir 93cdf0e10cSrcweir SAL_DLLPRIVATE sal_Bool WriteTextWithCurrency_Impl( const ::rtl::OUString& rString, 94cdf0e10cSrcweir const ::com::sun::star::lang::Locale& rLocale ); 95cdf0e10cSrcweir SAL_DLLPRIVATE void ExportPart_Impl( const SvNumberformat& rFormat, sal_uInt32 nKey, 96cdf0e10cSrcweir sal_uInt16 nPart, sal_Bool bDefPart ); 97cdf0e10cSrcweir 98cdf0e10cSrcweir SAL_DLLPRIVATE void ExportFormat_Impl( const SvNumberformat& rFormat, sal_uInt32 nKey ); 99cdf0e10cSrcweir 100cdf0e10cSrcweir public: 101cdf0e10cSrcweir SvXMLNumFmtExport( SvXMLExport& rExport, 102cdf0e10cSrcweir const ::com::sun::star::uno::Reference< 103cdf0e10cSrcweir ::com::sun::star::util::XNumberFormatsSupplier >& rSupp ); 104cdf0e10cSrcweir SvXMLNumFmtExport( SvXMLExport& rExport, 105cdf0e10cSrcweir const ::com::sun::star::uno::Reference< 106cdf0e10cSrcweir ::com::sun::star::util::XNumberFormatsSupplier >& rSupp, 107cdf0e10cSrcweir const rtl::OUString& rPrefix ); 108cdf0e10cSrcweir 109cdf0e10cSrcweir virtual ~SvXMLNumFmtExport(); 110cdf0e10cSrcweir 111cdf0e10cSrcweir // core API 112cdf0e10cSrcweir void Export( sal_Bool bIsAutoStyle); 113cdf0e10cSrcweir 114cdf0e10cSrcweir // mark number format as used 115cdf0e10cSrcweir void SetUsed( sal_uInt32 nKey ); 116cdf0e10cSrcweir 117cdf0e10cSrcweir // get the style name that was generated for a key 118cdf0e10cSrcweir ::rtl::OUString GetStyleName( sal_uInt32 nKey ); 119cdf0e10cSrcweir 120cdf0e10cSrcweir void GetWasUsed(com::sun::star::uno::Sequence<sal_Int32>& rWasUsed); 121cdf0e10cSrcweir void SetWasUsed(const com::sun::star::uno::Sequence<sal_Int32>& rWasUsed); 122cdf0e10cSrcweir 123cdf0e10cSrcweir 124cdf0e10cSrcweir 125cdf0e10cSrcweir // two methods to allow the field import/export to treat system languages 126cdf0e10cSrcweir // properly: 127cdf0e10cSrcweir 128cdf0e10cSrcweir /// obtain number format with system languange for a given key 129cdf0e10cSrcweir sal_uInt32 ForceSystemLanguage( sal_uInt32 nKey ); 130cdf0e10cSrcweir 131cdf0e10cSrcweir /// determine whether number format uses system language 132cdf0e10cSrcweir bool IsSystemLanguage( sal_uInt32 nKey ); 133cdf0e10cSrcweir }; 134cdf0e10cSrcweir 135cdf0e10cSrcweir #endif 136cdf0e10cSrcweir 137