xref: /trunk/main/starmath/inc/format.hxx (revision 914d351e5f5b84e4342a86d6ab8d4aca7308b9bd)
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
10cdf0e10cSrcweir  *
11*f6a9d5caSAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12cdf0e10cSrcweir  *
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.
19cdf0e10cSrcweir  *
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();
SmFormat(const SmFormat & rFormat)114cdf0e10cSrcweir     SmFormat(const SmFormat &rFormat) : SfxBroadcaster() { *this = rFormat; }
115cdf0e10cSrcweir 
GetBaseSize() const116cdf0e10cSrcweir     const Size &    GetBaseSize() const             { return aBaseSize; }
SetBaseSize(const Size & rSize)117cdf0e10cSrcweir     void            SetBaseSize(const Size &rSize)  { aBaseSize = rSize; }
118cdf0e10cSrcweir 
GetFont(sal_uInt16 nIdent) const119cdf0e10cSrcweir     const SmFace &  GetFont(sal_uInt16 nIdent) const { return vFont[nIdent]; }
120cdf0e10cSrcweir     void            SetFont(sal_uInt16 nIdent, const SmFace &rFont, sal_Bool bDefault = sal_False);
SetFontSize(sal_uInt16 nIdent,const Size & rSize)121cdf0e10cSrcweir     void            SetFontSize(sal_uInt16 nIdent, const Size &rSize)   { vFont[nIdent].SetSize( rSize ); }
122cdf0e10cSrcweir 
SetDefaultFont(sal_uInt16 nIdent,sal_Bool bVal)123cdf0e10cSrcweir     void            SetDefaultFont(sal_uInt16 nIdent, sal_Bool bVal)    { bDefaultFont[nIdent] = bVal; }
IsDefaultFont(sal_uInt16 nIdent) const124cdf0e10cSrcweir     sal_Bool            IsDefaultFont(sal_uInt16 nIdent) const   { return bDefaultFont[nIdent]; }
125cdf0e10cSrcweir 
GetRelSize(sal_uInt16 nIdent) const126cdf0e10cSrcweir     sal_uInt16          GetRelSize(sal_uInt16 nIdent) const         { return vSize[nIdent]; }
SetRelSize(sal_uInt16 nIdent,sal_uInt16 nVal)127cdf0e10cSrcweir     void            SetRelSize(sal_uInt16 nIdent, sal_uInt16 nVal)  { vSize[nIdent] = nVal;}
128cdf0e10cSrcweir 
GetDistance(sal_uInt16 nIdent) const129cdf0e10cSrcweir     sal_uInt16          GetDistance(sal_uInt16 nIdent) const            { return vDist[nIdent]; }
SetDistance(sal_uInt16 nIdent,sal_uInt16 nVal)130cdf0e10cSrcweir     void            SetDistance(sal_uInt16 nIdent, sal_uInt16 nVal) { vDist[nIdent] = nVal; }
131cdf0e10cSrcweir 
GetHorAlign() const132cdf0e10cSrcweir     SmHorAlign      GetHorAlign() const             { return eHorAlign; }
SetHorAlign(SmHorAlign eAlign)133cdf0e10cSrcweir     void            SetHorAlign(SmHorAlign eAlign)  { eHorAlign = eAlign; }
134cdf0e10cSrcweir 
IsTextmode() const135cdf0e10cSrcweir     sal_Bool            IsTextmode() const     { return bIsTextmode; }
SetTextmode(sal_Bool bVal)136cdf0e10cSrcweir     void            SetTextmode(sal_Bool bVal) { bIsTextmode = bVal; }
137cdf0e10cSrcweir 
GetGreekCharStyle() const138cdf0e10cSrcweir     sal_Int16           GetGreekCharStyle() const     { return nGreekCharStyle; }
SetGreekCharStyle(sal_Int16 nVal)139cdf0e10cSrcweir     void            SetGreekCharStyle(sal_Int16 nVal) { nGreekCharStyle = nVal; }
140cdf0e10cSrcweir 
IsScaleNormalBrackets() const141cdf0e10cSrcweir     sal_Bool            IsScaleNormalBrackets() const     { return bScaleNormalBrackets; }
SetScaleNormalBrackets(sal_Bool bVal)142cdf0e10cSrcweir     void            SetScaleNormalBrackets(sal_Bool bVal) { bScaleNormalBrackets = bVal; }
143cdf0e10cSrcweir 
GetVersion() const144cdf0e10cSrcweir     long            GetVersion() const { return nVersion; }
145cdf0e10cSrcweir 
146cdf0e10cSrcweir     //! at time (5.1) use only the lower byte!!!
SetVersion(long nVer)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 
RequestApplyChanges() const154cdf0e10cSrcweir     void RequestApplyChanges() const
155cdf0e10cSrcweir     {
156cdf0e10cSrcweir         ((SmFormat *) this)->Broadcast(SfxSimpleHint(HINT_FORMATCHANGED));
157cdf0e10cSrcweir     }
158cdf0e10cSrcweir 
159cdf0e10cSrcweir };
160cdf0e10cSrcweir 
operator !=(const SmFormat & rFormat) const161cdf0e10cSrcweir inline sal_Bool    SmFormat::operator != (const SmFormat &rFormat) const
162cdf0e10cSrcweir {
163cdf0e10cSrcweir     return !(*this == rFormat);
164cdf0e10cSrcweir }
165cdf0e10cSrcweir 
166cdf0e10cSrcweir #endif
167