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