Coverage Report

Created: 2026-10-14 09:33

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/libreoffice/starmath/inc/format.hxx
Line
Count
Source
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
0
#define FNTNAME_MATH    FONTNAME_MATH
33
34
35
// symbolic names used as array indices
36
0
#define SIZ_BEGIN       0
37
0
#define SIZ_TEXT        0
38
0
#define SIZ_INDEX       1
39
0
#define SIZ_FUNCTION    2
40
0
#define SIZ_OPERATOR    3
41
0
#define SIZ_LIMITS      4
42
0
#define SIZ_END         4
43
44
// symbolic names used as array indices
45
0
#define FNT_BEGIN       0
46
0
#define FNT_VARIABLE    0
47
0
#define FNT_FUNCTION    1
48
0
#define FNT_NUMBER      2
49
0
#define FNT_TEXT        3
50
0
#define FNT_SERIF       4
51
0
#define FNT_SANS        5
52
0
#define FNT_FIXED       6
53
0
#define FNT_MATH        7
54
0
#define FNT_END         7
55
56
// symbolic names used as array indices
57
0
#define DIS_BEGIN                0
58
0
#define DIS_HORIZONTAL           0
59
0
#define DIS_VERTICAL             1
60
0
#define DIS_ROOT                 2
61
0
#define DIS_SUPERSCRIPT          3
62
0
#define DIS_SUBSCRIPT            4
63
0
#define DIS_NUMERATOR            5
64
0
#define DIS_DENOMINATOR          6
65
0
#define DIS_FRACTION             7
66
0
#define DIS_STROKEWIDTH          8
67
0
#define DIS_UPPERLIMIT           9
68
0
#define DIS_LOWERLIMIT          10
69
0
#define DIS_BRACKETSIZE         11
70
0
#define DIS_BRACKETSPACE        12
71
0
#define DIS_MATRIXROW           13
72
0
#define DIS_MATRIXCOL           14
73
0
#define DIS_ORNAMENTSIZE        15
74
0
#define DIS_ORNAMENTSPACE       16
75
0
#define DIS_OPERATORSIZE        17
76
0
#define DIS_OPERATORSPACE       18
77
0
#define DIS_LEFTSPACE           19
78
0
#define DIS_RIGHTSPACE          20
79
0
#define DIS_TOPSPACE            21
80
0
#define DIS_BOTTOMSPACE         22
81
0
#define DIS_NORMALBRACKETSIZE   23
82
0
#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
0
    SmFormat(const SmFormat &rFormat) : SfxBroadcaster() { *this = rFormat; }
107
108
0
    const Size &    GetBaseSize() const             { return aBaseSize; }
109
0
    void            SetBaseSize(const Size &rSize)  { aBaseSize = rSize; }
110
    /// Sets the base size and gives each of the fonts that same size.
111
    void            SetBaseSizeAndFonts(const Size &rSize);
112
113
0
    const SmFace &  GetFont(sal_uInt16 nIdent) const { return vFont[nIdent]; }
114
    void            SetFont(sal_uInt16 nIdent, const SmFace &rFont, bool bDefault = false);
115
0
    void            SetFontSize(sal_uInt16 nIdent, const Size &rSize)   { vFont[nIdent].SetSize( rSize ); }
116
117
0
    void            SetDefaultFont(sal_uInt16 nIdent, bool bVal)    { bDefaultFont[nIdent] = bVal; }
118
0
    bool            IsDefaultFont(sal_uInt16 nIdent) const   { return bDefaultFont[nIdent]; }
119
120
0
    sal_uInt16      GetRelSize(sal_uInt16 nIdent) const         { return vSize[nIdent]; }
121
0
    void            SetRelSize(sal_uInt16 nIdent, sal_uInt16 nVal)  { vSize[nIdent] = nVal;}
122
123
0
    sal_uInt16      GetDistance(sal_uInt16 nIdent) const            { return vDist[nIdent]; }
124
0
    void            SetDistance(sal_uInt16 nIdent, sal_uInt16 nVal) { vDist[nIdent] = nVal; }
125
126
0
    SmHorAlign      GetHorAlign() const             { return eHorAlign; }
127
0
    void            SetHorAlign(SmHorAlign eAlign)  { eHorAlign = eAlign; }
128
129
0
    bool            IsTextmode() const     { return bIsTextmode; }
130
0
    void            SetTextmode(bool bVal) { bIsTextmode = bVal; }
131
132
0
    bool            IsRightToLeft() const     { return bIsRightToLeft; }
133
0
    void            SetRightToLeft(bool bVal) { bIsRightToLeft = bVal; }
134
135
0
    sal_Int16       GetGreekCharStyle() const     { return nGreekCharStyle; }
136
0
    void            SetGreekCharStyle(sal_Int16 nVal) { nGreekCharStyle = nVal; }
137
138
0
    bool            IsScaleNormalBrackets() const     { return bScaleNormalBrackets; }
139
0
    void            SetScaleNormalBrackets(bool bVal) { bScaleNormalBrackets = bVal; }
140
141
    SmFormat &      operator = (const SmFormat &rFormat);
142
143
    bool            operator == (const SmFormat &rFormat) const;
144
    inline bool     operator != (const SmFormat &rFormat) const;
145
146
    void RequestApplyChanges()
147
0
    {
148
0
        Broadcast(SfxHint(SfxHintId::MathFormatChanged));
149
0
    }
150
151
};
152
153
inline bool    SmFormat::operator != (const SmFormat &rFormat) const
154
0
{
155
0
    return !(*this == rFormat);
156
0
}
157
158
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */