Coverage Report

Created: 2025-12-31 10:39

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