LibreOffice Module starmath (master) 1
format.cxx
Go to the documentation of this file.
1/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2/*
3 * This file is part of the LibreOffice project.
4 *
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 *
9 * This file incorporates work covered by the following license notice:
10 *
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18 */
19
20#include <format.hxx>
21
22
24: aBaseSize(0, o3tl::convert(12, o3tl::Length::pt, SmO3tlLengthUnit()))
25{
29
30 vSize[SIZ_TEXT] = 100;
31 vSize[SIZ_INDEX] = 60;
33 vSize[SIZ_OPERATOR] = 100;
34 vSize[SIZ_LIMITS] = 60;
35
38 vDist[DIS_ROOT] = 0;
40 vDist[DIS_SUBSCRIPT] = 20;
43 vDist[DIS_FRACTION] = 10;
50 vDist[DIS_MATRIXCOL] = 30;
60
69
70 vFont[FNT_MATH].SetCharSet( RTL_TEXTENCODING_UNICODE );
71
79
80 for ( sal_uInt16 i = FNT_BEGIN; i <= FNT_END; i++ )
81 {
82 SmFace &rFace = vFont[i];
83 rFace.SetTransparent( true );
85 rFace.SetColor( COL_AUTO );
86 bDefaultFont[i] = false;
87 }
88}
89
90
91void SmFormat::SetFont(sal_uInt16 nIdent, const SmFace &rFont, bool bDefault )
92{
93 vFont[nIdent] = rFont;
94 vFont[nIdent].SetTransparent( true );
96
97 bDefaultFont[nIdent] = bDefault;
98}
99
101{
102 SetBaseSize(rFormat.GetBaseSize());
103 SetHorAlign(rFormat.GetHorAlign());
104 SetTextmode(rFormat.IsTextmode());
107
108 sal_uInt16 i;
109 for (i = FNT_BEGIN; i <= FNT_END; i++)
110 {
111 SetFont(i, rFormat.GetFont(i));
112 SetDefaultFont(i, rFormat.IsDefaultFont(i));
113 }
114 for (i = SIZ_BEGIN; i <= SIZ_END; i++)
115 SetRelSize(i, rFormat.GetRelSize(i));
116 for (i = DIS_BEGIN; i <= DIS_END; i++)
117 SetDistance(i, rFormat.GetDistance(i));
118
119 return *this;
120}
121
122
123bool SmFormat::operator == (const SmFormat &rFormat) const
124{
125 bool bRes = aBaseSize == rFormat.aBaseSize &&
126 eHorAlign == rFormat.eHorAlign &&
127 nGreekCharStyle == rFormat.nGreekCharStyle &&
128 bIsTextmode == rFormat.bIsTextmode &&
130
131 sal_uInt16 i;
132 for (i = 0; i <= SIZ_END && bRes; ++i)
133 {
134 if (vSize[i] != rFormat.vSize[i])
135 bRes = false;
136 }
137 for (i = 0; i <= DIS_END && bRes; ++i)
138 {
139 if (vDist[i] != rFormat.vDist[i])
140 bRes = false;
141 }
142 for (i = 0; i <= FNT_END && bRes; ++i)
143 {
144 if (vFont[i] != rFormat.vFont[i] ||
145 bDefaultFont[i] != rFormat.bDefaultFont[i])
146 bRes = false;
147 }
148
149 return bRes;
150}
151
152
153/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
bool IsDefaultFont(sal_uInt16 nIdent) const
Definition: format.hxx:115
void SetTextmode(bool bVal)
Definition: format.hxx:127
bool bScaleNormalBrackets
Definition: format.hxx:101
bool operator==(const SmFormat &rFormat) const
Definition: format.cxx:123
bool bDefaultFont[FNT_END+1]
Definition: format.hxx:94
const Size & GetBaseSize() const
Definition: format.hxx:107
SmFormat & operator=(const SmFormat &rFormat)
Definition: format.cxx:100
void SetDefaultFont(sal_uInt16 nIdent, bool bVal)
Definition: format.hxx:114
const SmFace & GetFont(sal_uInt16 nIdent) const
Definition: format.hxx:110
sal_uInt16 GetRelSize(sal_uInt16 nIdent) const
Definition: format.hxx:117
SmFace vFont[FNT_END+1]
Definition: format.hxx:93
SmFormat()
Definition: format.cxx:23
void SetRelSize(sal_uInt16 nIdent, sal_uInt16 nVal)
Definition: format.hxx:118
bool IsTextmode() const
Definition: format.hxx:126
bool IsScaleNormalBrackets() const
Definition: format.hxx:132
void SetHorAlign(SmHorAlign eAlign)
Definition: format.hxx:124
sal_Int16 nGreekCharStyle
Definition: format.hxx:99
void SetScaleNormalBrackets(bool bVal)
Definition: format.hxx:133
Size aBaseSize
Definition: format.hxx:95
void SetGreekCharStyle(sal_Int16 nVal)
Definition: format.hxx:130
void SetFont(sal_uInt16 nIdent, const SmFace &rFont, bool bDefault=false)
Definition: format.cxx:91
sal_uInt16 vSize[SIZ_END+1]
Definition: format.hxx:96
sal_uInt16 GetDistance(sal_uInt16 nIdent) const
Definition: format.hxx:120
void SetDistance(sal_uInt16 nIdent, sal_uInt16 nVal)
Definition: format.hxx:121
sal_Int16 GetGreekCharStyle() const
Definition: format.hxx:129
SmHorAlign GetHorAlign() const
Definition: format.hxx:123
sal_uInt16 vDist[DIS_END+1]
Definition: format.hxx:97
void SetBaseSize(const Size &rSize)
Definition: format.hxx:108
SmHorAlign eHorAlign
Definition: format.hxx:98
bool bIsTextmode
Definition: format.hxx:100
void SetTransparent(bool bTransparent)
void SetColor(const Color &)
void SetItalic(FontItalic)
void SetCharSet(rtl_TextEncoding)
void SetAlignment(TextAlign)
constexpr ::Color COL_AUTO(ColorTransparency, 0xFF, 0xFF, 0xFF, 0xFF)
ITALIC_NORMAL
ITALIC_NONE
ALIGN_BASELINE
#define FNT_SERIF
Definition: format.hxx:50
#define DIS_NUMERATOR
Definition: format.hxx:63
constexpr OUStringLiteral FNTNAME_COUR
Definition: format.hxx:31
#define DIS_HORIZONTAL
Definition: format.hxx:58
#define DIS_BEGIN
Definition: format.hxx:57
constexpr OUStringLiteral FNTNAME_TIMES
Definition: format.hxx:29
#define DIS_BOTTOMSPACE
Definition: format.hxx:80
#define DIS_SUPERSCRIPT
Definition: format.hxx:61
#define DIS_BRACKETSIZE
Definition: format.hxx:69
#define DIS_BRACKETSPACE
Definition: format.hxx:70
#define DIS_TOPSPACE
Definition: format.hxx:79
#define FNT_FIXED
Definition: format.hxx:52
#define SIZ_END
Definition: format.hxx:42
#define DIS_MATRIXCOL
Definition: format.hxx:72
#define DIS_SUBSCRIPT
Definition: format.hxx:62
#define DIS_OPERATORSIZE
Definition: format.hxx:75
#define SIZ_OPERATOR
Definition: format.hxx:40
constexpr OUStringLiteral FNTNAME_HELV
Definition: format.hxx:30
#define SIZ_FUNCTION
Definition: format.hxx:39
#define SIZ_INDEX
Definition: format.hxx:38
#define DIS_NORMALBRACKETSIZE
Definition: format.hxx:81
#define FNT_MATH
Definition: format.hxx:53
#define DIS_LOWERLIMIT
Definition: format.hxx:68
#define DIS_OPERATORSPACE
Definition: format.hxx:76
#define DIS_STROKEWIDTH
Definition: format.hxx:66
#define DIS_RIGHTSPACE
Definition: format.hxx:78
#define DIS_DENOMINATOR
Definition: format.hxx:64
#define DIS_UPPERLIMIT
Definition: format.hxx:67
#define FNT_FUNCTION
Definition: format.hxx:47
#define FNT_NUMBER
Definition: format.hxx:48
#define FNT_BEGIN
Definition: format.hxx:45
#define DIS_FRACTION
Definition: format.hxx:65
#define FNT_TEXT
Definition: format.hxx:49
#define DIS_VERTICAL
Definition: format.hxx:59
#define SIZ_BEGIN
Definition: format.hxx:36
#define DIS_ORNAMENTSPACE
Definition: format.hxx:74
#define DIS_END
Definition: format.hxx:82
#define FNT_END
Definition: format.hxx:54
#define SIZ_TEXT
Definition: format.hxx:37
#define DIS_LEFTSPACE
Definition: format.hxx:77
#define SIZ_LIMITS
Definition: format.hxx:41
#define DIS_MATRIXROW
Definition: format.hxx:71
#define DIS_ORNAMENTSIZE
Definition: format.hxx:73
#define FNT_SANS
Definition: format.hxx:51
#define FNTNAME_MATH
Definition: format.hxx:32
#define DIS_ROOT
Definition: format.hxx:60
#define FNT_VARIABLE
Definition: format.hxx:46
convert
int i
Length
o3tl::Length SmO3tlLengthUnit()
Definition: utility.hxx:125