summaryrefslogtreecommitdiff
path: root/lotuswordpro/source/filter/lwpnumericfmt.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'lotuswordpro/source/filter/lwpnumericfmt.hxx')
-rw-r--r--lotuswordpro/source/filter/lwpnumericfmt.hxx312
1 files changed, 312 insertions, 0 deletions
diff --git a/lotuswordpro/source/filter/lwpnumericfmt.hxx b/lotuswordpro/source/filter/lwpnumericfmt.hxx
new file mode 100644
index 000000000000..79be18ebf329
--- /dev/null
+++ b/lotuswordpro/source/filter/lwpnumericfmt.hxx
@@ -0,0 +1,312 @@
+/*************************************************************************
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (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.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: IBM Corporation
+ *
+ * Copyright: 2008 by IBM Corporation
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+/**
+ * @file
+ * For LWP filter architecture prototype - table object
+ */
+/*************************************************************************
+ * Change History
+ Mar 2005 Created
+ ************************************************************************/
+#ifndef _LWPNUMBERICFMT_HXX
+#define _LWPNUMBERICFMT_HXX
+
+#include "lwpatomholder.hxx"
+#include "lwptblcell.hxx"
+#include "lwpcolor.hxx"
+
+//For converting to xml
+#include "xfilter/xfnumberstyle.hxx"
+
+class LwpObjectStream;
+
+class LwpNumericFormatSubset
+{
+public:
+ LwpNumericFormatSubset();
+ ~LwpNumericFormatSubset();
+ void QuickRead(LwpObjectStream* pStrm);
+ String GetPrefix(){ return cPrefix.str();}
+ String GetSuffix(){ return cSuffix.str();}
+ sal_Bool IsBlack(){ return (cColor.GetBlue()==0 && cColor.GetGreen()==0 && cColor.GetRed()==0);}
+ sal_Bool IsDefaultPrefix(){ return !(cSubFlags&SF_OVER_PREFIX); }
+ sal_Bool IsDefaultSuffix(){ return !(cSubFlags&SF_OVER_SUFFIX); }
+ LwpColor GetColor();
+protected:
+ LwpColor cColor;
+ LwpAtomHolder cPrefix;
+ LwpAtomHolder cSuffix;
+ sal_uInt16 cSubFlags;
+ enum // for cSubFlags
+ {
+ SF_OVER_PREFIX = 0x0001,
+ SF_OVER_SUFFIX = 0x0002,
+ SF_OVER_COLOR = 0x0004
+ };
+};
+
+struct LwpCurrencyInfo
+{
+ String sSymbol;
+ sal_Bool bPost;
+ sal_Bool bShowSpace;
+ LwpCurrencyInfo(String sSym)
+ {
+ sSymbol = sSym;
+ bPost = sal_False;
+ bShowSpace = sal_False;
+ }
+ LwpCurrencyInfo()
+ {
+ bPost = sal_False;
+ bShowSpace = sal_False;
+ }
+ LwpCurrencyInfo(String sSym,sal_Bool bPost, sal_Bool bShowSpace)
+ {
+ this->sSymbol = sSym;
+ this->bPost = bPost;
+ this->bShowSpace = bShowSpace;
+ }
+};
+
+enum
+{
+ /* These are types of formats. They are mutually exclusive.
+ */
+ FMT_NONE = 0,
+ FMT_ARGENTINEANPESO = 1,
+ FMT_AUSTRALIANDOLLAR = 2,
+ FMT_AUSTRIANSCHILLING = 3,
+ FMT_BELGIANFRANC = 4,
+ FMT_BRAZILIANCRUZEIRO = 5,
+ FMT_BRITISHPOUND = 6,
+ FMT_CANADIANDOLLAR = 7,
+ FMT_CHINESEYUAN = 8,
+ FMT_CZECHKORUNA = 9,
+ FMT_DANISHKRONE = 10,
+ FMT_ECU = 11,
+ FMT_FINNISHMARKKA = 12,
+ FMT_FRENCHFRANC = 13,
+ FMT_GERMANMARK = 14,
+ FMT_GREEKDRACHMA = 15,
+ FMT_HONGKONGDOLLAR = 16,
+ FMT_HUNGARIANFORINT = 17,
+ FMT_INDIANRUPEE = 18,
+ FMT_INDONESIANRUPIAH = 19,
+ FMT_IRISHPUNT = 20,
+ FMT_ITALIANLIRA = 21,
+ FMT_JAPANESEYEN = 22,
+ FMT_LUXEMBOURGFRANC = 23,
+ FMT_MALAYSIANRINGGIT = 24,
+ FMT_MEXICANPESO = 25,
+ FMT_NETHERLANDSGUILDER = 26,
+ FMT_NEWZEALANDDOLLAR = 27,
+ FMT_NORWEGIANKRONE = 28,
+ FMT_POLISHZLOTY = 29,
+ FMT_PORTUGUESEESCUDO = 30,
+ FMT_ROMANIANLEI = 31,
+ FMT_RUSSIANRUBLE = 32,
+ FMT_SINGAPOREDOLLAR = 33,
+ FMT_SLOVAKIANKORUNA = 34,
+ FMT_SLOVENIANTHOLAR = 35,
+ FMT_SOUTHAFRICANRAND = 36,
+ FMT_SOUTHKOREANWON = 37,
+ FMT_SPANISHPESETA = 38,
+ FMT_SWEDISHKRONA = 39,
+ FMT_SWISSFRANC = 40,
+ FMT_TAIWANDOLLAR = 41,
+ FMT_THAIBAHT = 42,
+ FMT_USDOLLAR = 43,
+ FMT_OTHERCURRENCY = 44,
+ FMT_DEFAULT = 45,
+ FMT_GENERAL = 46,
+ FMT_FIXED = 47,
+ FMT_COMMA = 48,
+ FMT_PERCENT = 49,
+ FMT_SCIENTIFIC = 50,
+ FMT_LABEL = 51,
+ FMT_EURO = 52
+};
+
+class LwpCurrencyPool
+{
+public:
+ LwpCurrencyPool(){InitCurrencySymbol();}
+ String GetCurrencySymbol(sal_uInt16 nFormat);
+ sal_Bool IsShowSpace(sal_uInt16 nFormat);
+ sal_Bool IsSymbolPost(sal_uInt16 nFormat);
+private:
+ std::map<sal_uInt16,LwpCurrencyInfo> m_aCurrencyInfo;
+ void InitCurrencySymbol()
+ {
+ USHORT nC=FMT_ARGENTINEANPESO;
+ m_aCurrencyInfo[nC++]=LwpCurrencyInfo(String::CreateFromAscii("A")); //FMT_ARGENTINEANPESO = 1,
+ m_aCurrencyInfo[nC++]=LwpCurrencyInfo(String::CreateFromAscii("A$")); //FMT_AUSTRALIANDOLLAR = 2,
+ m_aCurrencyInfo[nC++]=LwpCurrencyInfo(String::CreateFromAscii("oS"),sal_True, sal_True);//FMT_AUSTRIANSCHILLING = 3,
+ m_aCurrencyInfo[nC++]=LwpCurrencyInfo(String::CreateFromAscii("BF"),sal_True, sal_True);//FMT_BELGIANFRANC = 4,
+ m_aCurrencyInfo[nC++]=LwpCurrencyInfo(String::CreateFromAscii("R$"),sal_False, sal_True);//FMT_BRAZILIANCRUZEIRO = 5,
+ m_aCurrencyInfo[nC++]=LwpCurrencyInfo(String("£",RTL_TEXTENCODING_UTF8)); //FMT_BRITISHPOUND = 6,
+ m_aCurrencyInfo[nC++]=LwpCurrencyInfo(String::CreateFromAscii("C$")); //FMT_CANADIANDOLLAR = 7,
+ m_aCurrencyInfo[nC++]=LwpCurrencyInfo(String("PRC¥",RTL_TEXTENCODING_UTF8),sal_False,sal_True); //FMT_CHINESEYUAN = 8,
+ m_aCurrencyInfo[nC++]=LwpCurrencyInfo(String::CreateFromAscii("Kc"),sal_True, sal_True);//FMT_CZECHKORUNA = 9,
+ m_aCurrencyInfo[nC++]=LwpCurrencyInfo(String::CreateFromAscii("Dkr"),sal_False, sal_True);//FMT_DANISHKRONE = 10,
+ m_aCurrencyInfo[nC++]=LwpCurrencyInfo(String::CreateFromAscii("ECU"),sal_True, sal_True);//FMT_ECU = 11,
+ m_aCurrencyInfo[nC++]=LwpCurrencyInfo(String::CreateFromAscii("mk"),sal_True, sal_True);//FMT_FINNISHMARKKA = 12,
+ m_aCurrencyInfo[nC++]=LwpCurrencyInfo(String::CreateFromAscii("F"),sal_True, sal_True);//FMT_FRENCHFRANC = 13,
+ m_aCurrencyInfo[nC++]=LwpCurrencyInfo(String::CreateFromAscii("DM"),sal_True, sal_True);//FMT_GERMANMARK = 14,
+ m_aCurrencyInfo[nC++]=LwpCurrencyInfo(String::CreateFromAscii("Dr"),sal_True, sal_True);//FMT_GREEKDRACHMA = 15,
+ m_aCurrencyInfo[nC++]=LwpCurrencyInfo(String::CreateFromAscii("HK$")); //FMT_HONGKONGDOLLAR = 16,
+ m_aCurrencyInfo[nC++]=LwpCurrencyInfo(String::CreateFromAscii("Ft"),sal_True, sal_True);//FMT_HUNGARIANFORINT = 17,
+ m_aCurrencyInfo[nC++]=LwpCurrencyInfo(String::CreateFromAscii("Rs"),sal_False, sal_True);//FMT_INDIANRUPEE = 18,
+ m_aCurrencyInfo[nC++]=LwpCurrencyInfo(String::CreateFromAscii("Rp"),sal_False, sal_True);//FMT_INDONESIANRUPIAH = 19,
+ m_aCurrencyInfo[nC++]=LwpCurrencyInfo(String("IR£",RTL_TEXTENCODING_UTF8)); //FMT_IRISHPUNT = 20,
+ m_aCurrencyInfo[nC++]=LwpCurrencyInfo(String::CreateFromAscii("L."),sal_False, sal_True);//FMT_ITALIANLIRA = 21,
+ m_aCurrencyInfo[nC++]=LwpCurrencyInfo(String("¥",RTL_TEXTENCODING_UTF8)); //FMT_JAPANESEYEN = 22,
+ m_aCurrencyInfo[nC++]=LwpCurrencyInfo(String::CreateFromAscii("LF"),sal_True, sal_True);//FMT_LUXEMBOURGFRANC = 23,
+ m_aCurrencyInfo[nC++]=LwpCurrencyInfo(String::CreateFromAscii("Rm"),sal_False, sal_True);//FMT_MALAYSIANRINGGIT = 24,
+ m_aCurrencyInfo[nC++]=LwpCurrencyInfo(String::CreateFromAscii("Mex$")); //FMT_MEXICANPESO = 25,
+ m_aCurrencyInfo[nC++]=LwpCurrencyInfo(String::CreateFromAscii("F"),sal_False, sal_True);//FMT_NETHERLANDSGUILDER = 26,
+ m_aCurrencyInfo[nC++]=LwpCurrencyInfo(String::CreateFromAscii("NZ$")); //FMT_NEWZEALANDDOLLAR = 27,
+ m_aCurrencyInfo[nC++]=LwpCurrencyInfo(String::CreateFromAscii("Nkr"),sal_False, sal_True);//FMT_NORWEGIANKRONE = 28,
+ m_aCurrencyInfo[nC++]=LwpCurrencyInfo(String::CreateFromAscii("Zl"),sal_True, sal_True);//FMT_POLISHZLOTY = 29,
+ m_aCurrencyInfo[nC++]=LwpCurrencyInfo(String::CreateFromAscii("Esc."),sal_True, sal_True);//FMT_PORTUGUESEESCUDO = 30,
+ m_aCurrencyInfo[nC++]=LwpCurrencyInfo(String::CreateFromAscii("Leu"),sal_True, sal_True);//FMT_ROMANIANLEI = 31,
+ m_aCurrencyInfo[nC++]=LwpCurrencyInfo(String::CreateFromAscii("R"),sal_True, sal_True);//FMT_RUSSIANRUBLE = 32,
+ m_aCurrencyInfo[nC++]=LwpCurrencyInfo(String::CreateFromAscii("S$")); //FMT_SINGAPOREDOLLAR = 33,
+ m_aCurrencyInfo[nC++]=LwpCurrencyInfo(String::CreateFromAscii("Sk"),sal_True, sal_True);//FMT_SLOVAKIANKORUNA = 34,
+ m_aCurrencyInfo[nC++]=LwpCurrencyInfo(String::CreateFromAscii("SIT"),sal_False, sal_True);//FMT_SLOVENIANTHOLAR = 35,
+ m_aCurrencyInfo[nC++]=LwpCurrencyInfo(String::CreateFromAscii("R")); //FMT_SOUTHAFRICANRAND = 36,
+ m_aCurrencyInfo[nC++]=LwpCurrencyInfo(String::CreateFromAscii("W")); //FMT_SOUTHKOREANWON = 37,
+ m_aCurrencyInfo[nC++]=LwpCurrencyInfo(String::CreateFromAscii("Pts"),sal_True, sal_True);//FMT_SPANISHPESETA = 38,
+ m_aCurrencyInfo[nC++]=LwpCurrencyInfo(String::CreateFromAscii("Skr"),sal_True, sal_True);//FMT_SWEDISHKRONA = 39,
+ m_aCurrencyInfo[nC++]=LwpCurrencyInfo(String::CreateFromAscii("SFr"),sal_False, sal_True);//FMT_SWISSFRANC = 40,
+ m_aCurrencyInfo[nC++]=LwpCurrencyInfo(String::CreateFromAscii("NT$")); //FMT_TAIWANDOLLAR = 41,
+ m_aCurrencyInfo[nC++]=LwpCurrencyInfo(String::CreateFromAscii("Bt"),sal_True, sal_True);//FMT_THAIBAHT = 42,
+ m_aCurrencyInfo[nC++]=LwpCurrencyInfo(String::CreateFromAscii("$")); //FMT_USDOLLAR = 43,
+ m_aCurrencyInfo[nC++]=LwpCurrencyInfo(String::CreateFromAscii("OTH"),sal_False, sal_True);//FMT_OTHERCURRENCY = 44,
+
+ m_aCurrencyInfo[FMT_EURO]=LwpCurrencyInfo(String("€",RTL_TEXTENCODING_UTF8)); //FMT_EURO = 52
+ }
+};
+
+class LwpNumericFormat
+{
+public:
+ LwpNumericFormat(LwpObjectStream * pStrm);
+ ~LwpNumericFormat(){};
+ void Read();
+ static sal_Bool IsCurrencyFormat(USHORT Format);
+ USHORT GetDecimalPlaces(void);
+ sal_Bool IsDecimalPlacesOverridden(void);
+ sal_Bool IsNegativeOverridden(void);
+ sal_Bool IsZeroOverridden(void);
+ XFStyle* Convert();
+private:
+ LwpObjectStream * m_pObjStrm;
+
+ sal_uInt16 cFlags;
+ enum // for cFlags
+ {
+ NF_OVER_ZERO = 0x0001,
+ NF_OVER_NEGATIVE = 0x0002,
+ NF_OVER_DECIMAL_PLACES = 0x0004
+ };
+
+ sal_uInt16 cFormat;
+
+ LwpNumericFormatSubset cAnyNumber;
+ LwpNumericFormatSubset cZero;
+ LwpNumericFormatSubset cNegative;
+
+ sal_uInt16 cDecimalPlaces;
+
+ static USHORT GetDefaultDecimalPlaces(USHORT Format);
+ static LwpCurrencyPool m_aCurrencyInfo;
+
+ void GetCurrencyStr(LwpNumericFormatSubset aNumber, String& aPrefix, String& aSuffix, sal_Bool bNegtive=sal_False);
+ void SetNumberType(XFNumberStyle* pStyle);
+ OUString reencode(OUString sCode);
+};
+
+inline sal_Bool
+LwpNumericFormat::IsDecimalPlacesOverridden(void)
+{
+ return (cFlags & NF_OVER_DECIMAL_PLACES) != 0;
+}
+inline sal_Bool
+LwpNumericFormat::IsNegativeOverridden(void)
+{
+ return (cFlags & NF_OVER_NEGATIVE) != 0;
+}
+inline sal_Bool
+LwpNumericFormat::IsZeroOverridden(void)
+{
+ return (cFlags & NF_OVER_ZERO) != 0;
+}
+
+#include "lwppiece.hxx"
+class LwpLayoutNumerics : public LwpVirtualPiece
+{
+public:
+ LwpLayoutNumerics(LwpObjectHeader& objHdr, LwpSvStream* pStrm)
+ :LwpVirtualPiece(objHdr, pStrm),cNumerics(m_pObjStrm){};
+ ~LwpLayoutNumerics(){};
+ XFStyle* Convert();
+ virtual void Read();
+protected:
+ LwpNumericFormat cNumerics;
+};
+
+#endif