xref: /aoo41x/main/starmath/inc/format.hxx (revision f6a9d5ca)
1*f6a9d5caSAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
3*f6a9d5caSAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
4*f6a9d5caSAndrew Rist  * or more contributor license agreements.  See the NOTICE file
5*f6a9d5caSAndrew Rist  * distributed with this work for additional information
6*f6a9d5caSAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
7*f6a9d5caSAndrew Rist  * to you under the Apache License, Version 2.0 (the
8*f6a9d5caSAndrew Rist  * "License"); you may not use this file except in compliance
9*f6a9d5caSAndrew Rist  * with the License.  You may obtain a copy of the License at
10*f6a9d5caSAndrew Rist  *
11*f6a9d5caSAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12*f6a9d5caSAndrew Rist  *
13*f6a9d5caSAndrew Rist  * Unless required by applicable law or agreed to in writing,
14*f6a9d5caSAndrew Rist  * software distributed under the License is distributed on an
15*f6a9d5caSAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*f6a9d5caSAndrew Rist  * KIND, either express or implied.  See the License for the
17*f6a9d5caSAndrew Rist  * specific language governing permissions and limitations
18*f6a9d5caSAndrew Rist  * under the License.
19*f6a9d5caSAndrew Rist  *
20*f6a9d5caSAndrew Rist  *************************************************************/
21*f6a9d5caSAndrew Rist 
22*f6a9d5caSAndrew Rist 
23cdf0e10cSrcweir #ifndef FORMAT_HXX
24cdf0e10cSrcweir #define FORMAT_HXX
25cdf0e10cSrcweir 
26cdf0e10cSrcweir 
27cdf0e10cSrcweir #include <svl/smplhint.hxx>
28cdf0e10cSrcweir #include <svl/brdcst.hxx>
29cdf0e10cSrcweir #include "utility.hxx"
30cdf0e10cSrcweir #include <types.hxx>
31cdf0e10cSrcweir 
32cdf0e10cSrcweir 
33cdf0e10cSrcweir #define SM_FMT_VERSION_51	((sal_uInt8) 0x01)
34cdf0e10cSrcweir #define SM_FMT_VERSION_NOW	SM_FMT_VERSION_51
35cdf0e10cSrcweir 
36cdf0e10cSrcweir #define FNTNAME_TIMES	"Times New Roman"
37cdf0e10cSrcweir #define FNTNAME_HELV	"Helvetica"
38cdf0e10cSrcweir #define FNTNAME_COUR	"Courier"
39cdf0e10cSrcweir #define FNTNAME_MATH    FONTNAME_MATH
40cdf0e10cSrcweir 
41cdf0e10cSrcweir 
42cdf0e10cSrcweir // symbolic names used as array indices
43cdf0e10cSrcweir #define SIZ_BEGIN		0
44cdf0e10cSrcweir #define SIZ_TEXT		0
45cdf0e10cSrcweir #define SIZ_INDEX		1
46cdf0e10cSrcweir #define SIZ_FUNCTION	2
47cdf0e10cSrcweir #define SIZ_OPERATOR	3
48cdf0e10cSrcweir #define SIZ_LIMITS		4
49cdf0e10cSrcweir #define SIZ_END			4
50cdf0e10cSrcweir 
51cdf0e10cSrcweir // symbolic names used as array indices
52cdf0e10cSrcweir #define FNT_BEGIN		0
53cdf0e10cSrcweir #define FNT_VARIABLE	0
54cdf0e10cSrcweir #define FNT_FUNCTION	1
55cdf0e10cSrcweir #define FNT_NUMBER		2
56cdf0e10cSrcweir #define FNT_TEXT		3
57cdf0e10cSrcweir #define FNT_SERIF		4
58cdf0e10cSrcweir #define FNT_SANS		5
59cdf0e10cSrcweir #define FNT_FIXED		6
60cdf0e10cSrcweir #define FNT_MATH		7
61cdf0e10cSrcweir #define FNT_END			7
62cdf0e10cSrcweir 
63cdf0e10cSrcweir // symbolic names used as array indices
64cdf0e10cSrcweir #define DIS_BEGIN				 0
65cdf0e10cSrcweir #define DIS_HORIZONTAL			 0
66cdf0e10cSrcweir #define DIS_VERTICAL			 1
67cdf0e10cSrcweir #define DIS_ROOT				 2
68cdf0e10cSrcweir #define DIS_SUPERSCRIPT 		 3
69cdf0e10cSrcweir #define DIS_SUBSCRIPT			 4
70cdf0e10cSrcweir #define DIS_NUMERATOR			 5
71cdf0e10cSrcweir #define DIS_DENOMINATOR 		 6
72cdf0e10cSrcweir #define DIS_FRACTION			 7
73cdf0e10cSrcweir #define DIS_STROKEWIDTH 		 8
74cdf0e10cSrcweir #define DIS_UPPERLIMIT			 9
75cdf0e10cSrcweir #define DIS_LOWERLIMIT			10
76cdf0e10cSrcweir #define DIS_BRACKETSIZE 		11
77cdf0e10cSrcweir #define DIS_BRACKETSPACE		12
78cdf0e10cSrcweir #define DIS_MATRIXROW			13
79cdf0e10cSrcweir #define DIS_MATRIXCOL			14
80cdf0e10cSrcweir #define DIS_ORNAMENTSIZE		15
81cdf0e10cSrcweir #define DIS_ORNAMENTSPACE		16
82cdf0e10cSrcweir #define DIS_OPERATORSIZE		17
83cdf0e10cSrcweir #define DIS_OPERATORSPACE		18
84cdf0e10cSrcweir #define DIS_LEFTSPACE			19
85cdf0e10cSrcweir #define DIS_RIGHTSPACE			20
86cdf0e10cSrcweir #define DIS_TOPSPACE			21
87cdf0e10cSrcweir #define DIS_BOTTOMSPACE			22
88cdf0e10cSrcweir #define DIS_NORMALBRACKETSIZE	23
89cdf0e10cSrcweir #define DIS_END					23
90cdf0e10cSrcweir 
91cdf0e10cSrcweir 
92cdf0e10cSrcweir // to be broadcastet on format changes:
93cdf0e10cSrcweir #define HINT_FORMATCHANGED	10003
94cdf0e10cSrcweir 
95cdf0e10cSrcweir enum SmHorAlign	{ AlignLeft, AlignCenter, AlignRight };
96cdf0e10cSrcweir 
97cdf0e10cSrcweir String GetDefaultFontName( LanguageType nLang, sal_uInt16 nIdent );
98cdf0e10cSrcweir 
99cdf0e10cSrcweir class SmFormat : public SfxBroadcaster
100cdf0e10cSrcweir {
101cdf0e10cSrcweir 	SmFace		vFont[FNT_END + 1];
102cdf0e10cSrcweir     sal_Bool        bDefaultFont[FNT_END + 1];
103cdf0e10cSrcweir 	Size		aBaseSize;
104cdf0e10cSrcweir 	long		nVersion;
105cdf0e10cSrcweir 	sal_uInt16		vSize[SIZ_END + 1];
106cdf0e10cSrcweir 	sal_uInt16		vDist[DIS_END + 1];
107cdf0e10cSrcweir 	SmHorAlign	eHorAlign;
108cdf0e10cSrcweir     sal_Int16       nGreekCharStyle;
109cdf0e10cSrcweir 	sal_Bool		bIsTextmode,
110cdf0e10cSrcweir 				bScaleNormalBrackets;
111cdf0e10cSrcweir 
112cdf0e10cSrcweir public:
113cdf0e10cSrcweir 	SmFormat();
114cdf0e10cSrcweir     SmFormat(const SmFormat &rFormat) : SfxBroadcaster() { *this = rFormat; }
115cdf0e10cSrcweir 
116cdf0e10cSrcweir 	const Size & 	GetBaseSize() const 			{ return aBaseSize; }
117cdf0e10cSrcweir 	void			SetBaseSize(const Size &rSize)	{ aBaseSize = rSize; }
118cdf0e10cSrcweir 
119cdf0e10cSrcweir 	const SmFace &  GetFont(sal_uInt16 nIdent) const { return vFont[nIdent]; }
120cdf0e10cSrcweir     void            SetFont(sal_uInt16 nIdent, const SmFace &rFont, sal_Bool bDefault = sal_False);
121cdf0e10cSrcweir     void            SetFontSize(sal_uInt16 nIdent, const Size &rSize)   { vFont[nIdent].SetSize( rSize ); }
122cdf0e10cSrcweir 
123cdf0e10cSrcweir     void            SetDefaultFont(sal_uInt16 nIdent, sal_Bool bVal)    { bDefaultFont[nIdent] = bVal; }
124cdf0e10cSrcweir     sal_Bool            IsDefaultFont(sal_uInt16 nIdent) const   { return bDefaultFont[nIdent]; }
125cdf0e10cSrcweir 
126cdf0e10cSrcweir 	sal_uInt16			GetRelSize(sal_uInt16 nIdent) const			{ return vSize[nIdent]; }
127cdf0e10cSrcweir 	void			SetRelSize(sal_uInt16 nIdent, sal_uInt16 nVal)	{ vSize[nIdent] = nVal;}
128cdf0e10cSrcweir 
129cdf0e10cSrcweir 	sal_uInt16			GetDistance(sal_uInt16 nIdent) const			{ return vDist[nIdent]; }
130cdf0e10cSrcweir 	void			SetDistance(sal_uInt16 nIdent, sal_uInt16 nVal)	{ vDist[nIdent] = nVal; }
131cdf0e10cSrcweir 
132cdf0e10cSrcweir 	SmHorAlign		GetHorAlign() const				{ return eHorAlign; }
133cdf0e10cSrcweir 	void			SetHorAlign(SmHorAlign eAlign)	{ eHorAlign = eAlign; }
134cdf0e10cSrcweir 
135cdf0e10cSrcweir 	sal_Bool			IsTextmode() const     { return bIsTextmode; }
136cdf0e10cSrcweir 	void			SetTextmode(sal_Bool bVal) { bIsTextmode = bVal; }
137cdf0e10cSrcweir 
138cdf0e10cSrcweir     sal_Int16           GetGreekCharStyle() const     { return nGreekCharStyle; }
139cdf0e10cSrcweir     void            SetGreekCharStyle(sal_Int16 nVal) { nGreekCharStyle = nVal; }
140cdf0e10cSrcweir 
141cdf0e10cSrcweir 	sal_Bool			IsScaleNormalBrackets() const     { return bScaleNormalBrackets; }
142cdf0e10cSrcweir 	void			SetScaleNormalBrackets(sal_Bool bVal) { bScaleNormalBrackets = bVal; }
143cdf0e10cSrcweir 
144cdf0e10cSrcweir 	long			GetVersion() const { return nVersion; }
145cdf0e10cSrcweir 
146cdf0e10cSrcweir 	//! at time (5.1) use only the lower byte!!!
147cdf0e10cSrcweir 	void			SetVersion(long nVer) { nVersion = nVer; }
148cdf0e10cSrcweir 
149cdf0e10cSrcweir 	SmFormat & 		operator = (const SmFormat &rFormat);
150cdf0e10cSrcweir 
151cdf0e10cSrcweir     sal_Bool            operator == (const SmFormat &rFormat) const;
152cdf0e10cSrcweir     inline sal_Bool     operator != (const SmFormat &rFormat) const;
153cdf0e10cSrcweir 
154cdf0e10cSrcweir 	void RequestApplyChanges() const
155cdf0e10cSrcweir 	{
156cdf0e10cSrcweir 		((SmFormat *) this)->Broadcast(SfxSimpleHint(HINT_FORMATCHANGED));
157cdf0e10cSrcweir 	}
158cdf0e10cSrcweir 
159cdf0e10cSrcweir };
160cdf0e10cSrcweir 
161cdf0e10cSrcweir inline sal_Bool    SmFormat::operator != (const SmFormat &rFormat) const
162cdf0e10cSrcweir {
163cdf0e10cSrcweir     return !(*this == rFormat);
164cdf0e10cSrcweir }
165cdf0e10cSrcweir 
166cdf0e10cSrcweir #endif
167cdf0e10cSrcweir 
168