Coverage Report

Created: 2025-07-07 10:01

/src/libreoffice/starmath/inc/format.hxx
Line
Count
Source (jump to first uncovered line)
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
#pragma once
21
22
#include "smdllapi.hxx"
23
#include <svl/hint.hxx>
24
#include <svl/SfxBroadcaster.hxx>
25
#include "utility.hxx"
26
#include "types.hxx"
27
28
29
inline constexpr OUString FNTNAME_TIMES = u"Times New Roman"_ustr;
30
inline constexpr OUString FNTNAME_HELV = u"Helvetica"_ustr;
31
inline constexpr OUString FNTNAME_COUR = u"Courier"_ustr;
32
27.7k
#define FNTNAME_MATH    FONTNAME_MATH
33
34
35
// symbolic names used as array indices
36
27.7k
#define SIZ_BEGIN       0
37
4.51M
#define SIZ_TEXT        0
38
144k
#define SIZ_INDEX       1
39
59.8k
#define SIZ_FUNCTION    2
40
877k
#define SIZ_OPERATOR    3
41
57.2k
#define SIZ_LIMITS      4
42
166k
#define SIZ_END         4
43
44
// symbolic names used as array indices
45
55.5k
#define FNT_BEGIN       0
46
8.73M
#define FNT_VARIABLE    0
47
1.94M
#define FNT_FUNCTION    1
48
850k
#define FNT_NUMBER      2
49
472k
#define FNT_TEXT        3
50
138k
#define FNT_SERIF       4
51
138k
#define FNT_SANS        5
52
140k
#define FNT_FIXED       6
53
9.38M
#define FNT_MATH        7
54
499k
#define FNT_END         7
55
56
// symbolic names used as array indices
57
27.7k
#define DIS_BEGIN                0
58
1.77M
#define DIS_HORIZONTAL           0
59
59.6k
#define DIS_VERTICAL             1
60
66.3k
#define DIS_ROOT                 2
61
94.5k
#define DIS_SUPERSCRIPT          3
62
79.8k
#define DIS_SUBSCRIPT            4
63
59.3k
#define DIS_NUMERATOR            5
64
59.3k
#define DIS_DENOMINATOR          6
65
59.3k
#define DIS_FRACTION             7
66
59.3k
#define DIS_STROKEWIDTH          8
67
56.6k
#define DIS_UPPERLIMIT           9
68
56.1k
#define DIS_LOWERLIMIT          10
69
55.8k
#define DIS_BRACKETSIZE         11
70
105k
#define DIS_BRACKETSPACE        12
71
56.2k
#define DIS_MATRIXROW           13
72
56.2k
#define DIS_MATRIXCOL           14
73
3.38M
#define DIS_ORNAMENTSIZE        15
74
55.5k
#define DIS_ORNAMENTSPACE       16
75
60.6k
#define DIS_OPERATORSIZE        17
76
63.1k
#define DIS_OPERATORSPACE       18
77
59.6k
#define DIS_LEFTSPACE           19
78
59.6k
#define DIS_RIGHTSPACE          20
79
59.6k
#define DIS_TOPSPACE            21
80
59.6k
#define DIS_BOTTOMSPACE         22
81
103k
#define DIS_NORMALBRACKETSIZE   23
82
694k
#define DIS_END                 23
83
84
85
enum class SmHorAlign {
86
    Left,
87
    Center,
88
    Right
89
};
90
91
class SM_DLLPUBLIC SmFormat final : public SfxBroadcaster
92
{
93
    SmFace      vFont[FNT_END + 1];
94
    bool        bDefaultFont[FNT_END + 1];
95
    Size        aBaseSize;
96
    sal_uInt16      vSize[SIZ_END + 1];
97
    sal_uInt16      vDist[DIS_END + 1];
98
    SmHorAlign  eHorAlign;
99
    sal_Int16       nGreekCharStyle;
100
    bool        bIsTextmode,
101
                bIsRightToLeft,
102
                bScaleNormalBrackets;
103
104
public:
105
    SmFormat();
106
10
    SmFormat(const SmFormat &rFormat) : SfxBroadcaster() { *this = rFormat; }
107
108
94.2k
    const Size &    GetBaseSize() const             { return aBaseSize; }
109
27.7k
    void            SetBaseSize(const Size &rSize)  { aBaseSize = rSize; }
110
111
9.97M
    const SmFace &  GetFont(sal_uInt16 nIdent) const { return vFont[nIdent]; }
112
    void            SetFont(sal_uInt16 nIdent, const SmFace &rFont, bool bDefault = false);
113
0
    void            SetFontSize(sal_uInt16 nIdent, const Size &rSize)   { vFont[nIdent].SetSize( rSize ); }
114
115
222k
    void            SetDefaultFont(sal_uInt16 nIdent, bool bVal)    { bDefaultFont[nIdent] = bVal; }
116
222k
    bool            IsDefaultFont(sal_uInt16 nIdent) const   { return bDefaultFont[nIdent]; }
117
118
3.68M
    sal_uInt16      GetRelSize(sal_uInt16 nIdent) const         { return vSize[nIdent]; }
119
138k
    void            SetRelSize(sal_uInt16 nIdent, sal_uInt16 nVal)  { vSize[nIdent] = nVal;}
120
121
5.90M
    sal_uInt16      GetDistance(sal_uInt16 nIdent) const            { return vDist[nIdent]; }
122
666k
    void            SetDistance(sal_uInt16 nIdent, sal_uInt16 nVal) { vDist[nIdent] = nVal; }
123
124
5.24M
    SmHorAlign      GetHorAlign() const             { return eHorAlign; }
125
27.7k
    void            SetHorAlign(SmHorAlign eAlign)  { eHorAlign = eAlign; }
126
127
166k
    bool            IsTextmode() const     { return bIsTextmode; }
128
27.7k
    void            SetTextmode(bool bVal) { bIsTextmode = bVal; }
129
130
31.9k
    bool            IsRightToLeft() const     { return bIsRightToLeft; }
131
27.7k
    void            SetRightToLeft(bool bVal) { bIsRightToLeft = bVal; }
132
133
27.7k
    sal_Int16       GetGreekCharStyle() const     { return nGreekCharStyle; }
134
27.7k
    void            SetGreekCharStyle(sal_Int16 nVal) { nGreekCharStyle = nVal; }
135
136
78.3k
    bool            IsScaleNormalBrackets() const     { return bScaleNormalBrackets; }
137
27.7k
    void            SetScaleNormalBrackets(bool bVal) { bScaleNormalBrackets = bVal; }
138
139
    SmFormat &      operator = (const SmFormat &rFormat);
140
141
    bool            operator == (const SmFormat &rFormat) const;
142
    inline bool     operator != (const SmFormat &rFormat) const;
143
144
    void RequestApplyChanges()
145
0
    {
146
0
        Broadcast(SfxHint(SfxHintId::MathFormatChanged));
147
0
    }
148
149
};
150
151
inline bool    SmFormat::operator != (const SmFormat &rFormat) const
152
0
{
153
0
    return !(*this == rFormat);
154
0
}
155
156
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */