Coverage Report

Created: 2026-04-09 11:41

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/libreoffice/starmath/source/format.cxx
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
#include <format.hxx>
21
#include <tools/color.hxx>
22
23
24
SmFormat::SmFormat()
25
23.3k
:   aBaseSize(0, o3tl::convert(12, o3tl::Length::pt, SmO3tlLengthUnit()))
26
23.3k
{
27
23.3k
    eHorAlign       = SmHorAlign::Center;
28
23.3k
    nGreekCharStyle = 0;
29
23.3k
    bIsTextmode     = bIsRightToLeft = bScaleNormalBrackets = false;
30
31
23.3k
    vSize[SIZ_TEXT]     = 100;
32
23.3k
    vSize[SIZ_INDEX]    = 60;
33
23.3k
    vSize[SIZ_FUNCTION] =
34
23.3k
    vSize[SIZ_OPERATOR] = 100;
35
23.3k
    vSize[SIZ_LIMITS]   = 60;
36
37
23.3k
    vDist[DIS_HORIZONTAL]           = 10;
38
23.3k
    vDist[DIS_VERTICAL]             = 5;
39
23.3k
    vDist[DIS_ROOT]                 = 0;
40
23.3k
    vDist[DIS_SUPERSCRIPT]          =
41
23.3k
    vDist[DIS_SUBSCRIPT]            = 20;
42
23.3k
    vDist[DIS_NUMERATOR]            =
43
23.3k
    vDist[DIS_DENOMINATOR]          = 0;
44
23.3k
    vDist[DIS_FRACTION]             = 10;
45
23.3k
    vDist[DIS_STROKEWIDTH]          = 5;
46
23.3k
    vDist[DIS_UPPERLIMIT]           =
47
23.3k
    vDist[DIS_LOWERLIMIT]           = 0;
48
23.3k
    vDist[DIS_BRACKETSIZE]          =
49
23.3k
    vDist[DIS_BRACKETSPACE]         = 5;
50
23.3k
    vDist[DIS_MATRIXROW]            = 3;
51
23.3k
    vDist[DIS_MATRIXCOL]            = 30;
52
23.3k
    vDist[DIS_ORNAMENTSIZE]         =
53
23.3k
    vDist[DIS_ORNAMENTSPACE]        = 0;
54
23.3k
    vDist[DIS_OPERATORSIZE]         = 50;
55
23.3k
    vDist[DIS_OPERATORSPACE]        = 20;
56
23.3k
    vDist[DIS_LEFTSPACE]            =
57
23.3k
    vDist[DIS_RIGHTSPACE]           = 0;
58
23.3k
    vDist[DIS_TOPSPACE]             =
59
23.3k
    vDist[DIS_BOTTOMSPACE]          =
60
23.3k
    vDist[DIS_NORMALBRACKETSIZE]    = 0;
61
62
23.3k
    vFont[FNT_VARIABLE] =
63
23.3k
    vFont[FNT_FUNCTION] =
64
23.3k
    vFont[FNT_NUMBER]   =
65
23.3k
    vFont[FNT_TEXT]     =
66
23.3k
    vFont[FNT_SERIF]    = SmFace(FNTNAME_TIMES, aBaseSize);
67
23.3k
    vFont[FNT_SANS]     = SmFace(FNTNAME_HELV,  aBaseSize);
68
23.3k
    vFont[FNT_FIXED]    = SmFace(FNTNAME_COUR,  aBaseSize);
69
23.3k
    vFont[FNT_MATH]     = SmFace(FNTNAME_MATH,  aBaseSize);
70
71
23.3k
    vFont[FNT_MATH].SetCharSet( RTL_TEXTENCODING_UNICODE );
72
73
23.3k
    vFont[FNT_VARIABLE].SetItalic(ITALIC_NORMAL);
74
23.3k
    vFont[FNT_FUNCTION].SetItalic(ITALIC_NONE);
75
23.3k
    vFont[FNT_NUMBER]  .SetItalic(ITALIC_NONE);
76
23.3k
    vFont[FNT_TEXT]    .SetItalic(ITALIC_NONE);
77
23.3k
    vFont[FNT_SERIF]   .SetItalic(ITALIC_NONE);
78
23.3k
    vFont[FNT_SANS]    .SetItalic(ITALIC_NONE);
79
23.3k
    vFont[FNT_FIXED]   .SetItalic(ITALIC_NONE);
80
81
210k
    for ( sal_uInt16 i = FNT_BEGIN;  i <= FNT_END;  i++ )
82
186k
    {
83
186k
        SmFace &rFace = vFont[i];
84
186k
        rFace.SetTransparent( true );
85
186k
        rFace.SetAlignment( ALIGN_BASELINE );
86
186k
        rFace.SetColor( COL_AUTO );
87
186k
        bDefaultFont[i] = false;
88
186k
    }
89
23.3k
}
90
91
92
void SmFormat::SetFont(sal_uInt16 nIdent, const SmFace &rFont, bool bDefault )
93
200k
{
94
200k
    vFont[nIdent] = rFont;
95
200k
    vFont[nIdent].SetTransparent( true );
96
200k
    vFont[nIdent].SetAlignment( ALIGN_BASELINE );
97
98
200k
    bDefaultFont[nIdent] = bDefault;
99
200k
}
100
101
SmFormat & SmFormat::operator = (const SmFormat &rFormat)
102
25.0k
{
103
25.0k
    SetBaseSize(rFormat.GetBaseSize());
104
25.0k
    SetHorAlign(rFormat.GetHorAlign());
105
25.0k
    SetTextmode(rFormat.IsTextmode());
106
25.0k
    SetRightToLeft(rFormat.IsRightToLeft());
107
25.0k
    SetGreekCharStyle(rFormat.GetGreekCharStyle());
108
25.0k
    SetScaleNormalBrackets(rFormat.IsScaleNormalBrackets());
109
110
25.0k
    sal_uInt16  i;
111
225k
    for (i = FNT_BEGIN;  i <= FNT_END;  i++)
112
200k
    {
113
200k
        SetFont(i, rFormat.GetFont(i));
114
200k
        SetDefaultFont(i, rFormat.IsDefaultFont(i));
115
200k
    }
116
150k
    for (i = SIZ_BEGIN;  i <= SIZ_END;  i++)
117
125k
        SetRelSize(i, rFormat.GetRelSize(i));
118
625k
    for (i = DIS_BEGIN;  i <= DIS_END;  i++)
119
600k
        SetDistance(i, rFormat.GetDistance(i));
120
121
25.0k
    return *this;
122
25.0k
}
123
124
125
bool SmFormat::operator == (const SmFormat &rFormat) const
126
0
{
127
0
    bool bRes = aBaseSize == rFormat.aBaseSize  &&
128
0
                eHorAlign == rFormat.eHorAlign  &&
129
0
                nGreekCharStyle == rFormat.nGreekCharStyle &&
130
0
                bIsTextmode == rFormat.bIsTextmode  &&
131
0
                bIsRightToLeft == rFormat.bIsRightToLeft &&
132
0
                bScaleNormalBrackets  == rFormat.bScaleNormalBrackets;
133
134
0
    sal_uInt16 i;
135
0
    for (i = 0;  i <= SIZ_END && bRes;  ++i)
136
0
    {
137
0
        if (vSize[i] != rFormat.vSize[i])
138
0
            bRes = false;
139
0
    }
140
0
    for (i = 0;  i <= DIS_END && bRes;  ++i)
141
0
    {
142
0
        if (vDist[i] != rFormat.vDist[i])
143
0
            bRes = false;
144
0
    }
145
0
    for (i = 0;  i <= FNT_END && bRes;  ++i)
146
0
    {
147
0
        if (vFont[i] != rFormat.vFont[i]  ||
148
0
            bDefaultFont[i] != rFormat.bDefaultFont[i])
149
0
            bRes = false;
150
0
    }
151
152
0
    return bRes;
153
0
}
154
155
156
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */