Coverage Report

Created: 2026-07-10 11:04

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/libreoffice/include/oox/export/utils.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 <sal/config.h>
23
24
#include <o3tl/unit_conversion.hxx>
25
#include <rtl/strbuf.hxx>
26
#include <rtl/string.hxx>
27
#include <sal/types.h>
28
29
#include <cmath>
30
31
// Only used to output rgb colors as hex
32
inline OString I32SHEX(sal_Int32 x)
33
0
{
34
0
    assert(x <= 0xffffff);
35
0
    rtl::OStringBuffer aRes(6);
36
0
    aRes.setLength(6);
37
0
    sal_Int32 n = 0;
38
0
    for (int nShift = 24-4; nShift >=0; nShift -= 4)
39
0
    {
40
0
        char nDigit = static_cast<char>((x >> nShift) & 0xf);
41
0
        if ( nDigit > 9 )
42
0
            aRes[n] = (nDigit-10) + 'A';
43
0
        else
44
0
            aRes[n] = (nDigit + '0');
45
0
        n++;
46
0
    }
47
0
    return aRes.makeStringAndClear();
48
0
}
49
50
/**
51
 * @return const char* literal "true" for true value, or literal "false"
52
 *         for false value.
53
 */
54
static constexpr const char* ToPsz(bool b)
55
0
{
56
0
    return b ? "true" : "false";
57
0
}
Unexecuted instantiation: xeroot.cxx:ToPsz(bool)
Unexecuted instantiation: xestyle.cxx:ToPsz(bool)
Unexecuted instantiation: excdoc.cxx:ToPsz(bool)
Unexecuted instantiation: excrecds.cxx:ToPsz(bool)
Unexecuted instantiation: xecontent.cxx:ToPsz(bool)
Unexecuted instantiation: xedbdata.cxx:ToPsz(bool)
Unexecuted instantiation: xeescher.cxx:ToPsz(bool)
Unexecuted instantiation: xeextlst.cxx:ToPsz(bool)
Unexecuted instantiation: xename.cxx:ToPsz(bool)
Unexecuted instantiation: xepage.cxx:ToPsz(bool)
Unexecuted instantiation: xepivotxml.cxx:ToPsz(bool)
Unexecuted instantiation: xerecord.cxx:ToPsz(bool)
Unexecuted instantiation: xestream.cxx:ToPsz(bool)
Unexecuted instantiation: xetable.cxx:ToPsz(bool)
Unexecuted instantiation: xeview.cxx:ToPsz(bool)
Unexecuted instantiation: NamedSheetViews.cxx:ToPsz(bool)
Unexecuted instantiation: SparklineExt.cxx:ToPsz(bool)
Unexecuted instantiation: XclExpChangeTrack.cxx:ToPsz(bool)
Unexecuted instantiation: xcl97esc.cxx:ToPsz(bool)
Unexecuted instantiation: xcl97rec.cxx:ToPsz(bool)
Unexecuted instantiation: xechart.cxx:ToPsz(bool)
Unexecuted instantiation: chartexport.cxx:ToPsz(bool)
Unexecuted instantiation: shape.cxx:ToPsz(bool)
Unexecuted instantiation: textbodycontext.cxx:ToPsz(bool)
Unexecuted instantiation: drawingml.cxx:ToPsz(bool)
Unexecuted instantiation: shapes.cxx:ToPsz(bool)
Unexecuted instantiation: vmlexport.cxx:ToPsz(bool)
Unexecuted instantiation: ThemeExport.cxx:ToPsz(bool)
Unexecuted instantiation: imexport.cxx:ToPsz(bool)
Unexecuted instantiation: diagram.cxx:ToPsz(bool)
Unexecuted instantiation: DMLPresetShapeExport.cxx:ToPsz(bool)
Unexecuted instantiation: datamodel_oox.cxx:ToPsz(bool)
Unexecuted instantiation: unodoc.cxx:ToPsz(bool)
Unexecuted instantiation: unofilter.cxx:ToPsz(bool)
Unexecuted instantiation: unomodel.cxx:ToPsz(bool)
Unexecuted instantiation: utility.cxx:ToPsz(bool)
Unexecuted instantiation: view.cxx:ToPsz(bool)
Unexecuted instantiation: mathmlexport.cxx:ToPsz(bool)
Unexecuted instantiation: mathmlimport.cxx:ToPsz(bool)
Unexecuted instantiation: accessibility.cxx:ToPsz(bool)
Unexecuted instantiation: cursor.cxx:ToPsz(bool)
Unexecuted instantiation: dialog.cxx:ToPsz(bool)
Unexecuted instantiation: document.cxx:ToPsz(bool)
Unexecuted instantiation: edit.cxx:ToPsz(bool)
Unexecuted instantiation: ooxmlexport.cxx:ToPsz(bool)
Unexecuted instantiation: smdll.cxx:ToPsz(bool)
Unexecuted instantiation: smmod.cxx:ToPsz(bool)
Unexecuted instantiation: action.cxx:ToPsz(bool)
Unexecuted instantiation: rtfdocumentimpl.cxx:ToPsz(bool)
Unexecuted instantiation: DomainMapper_Impl.cxx:ToPsz(bool)
Unexecuted instantiation: GraphicImport.cxx:ToPsz(bool)
Unexecuted instantiation: OOXMLFastContextHandler.cxx:ToPsz(bool)
Unexecuted instantiation: wrtw8sty.cxx:ToPsz(bool)
Unexecuted instantiation: docxattributeoutput.cxx:ToPsz(bool)
Unexecuted instantiation: docxexport.cxx:ToPsz(bool)
Unexecuted instantiation: docxsdrexport.cxx:ToPsz(bool)
Unexecuted instantiation: docxtableexport.cxx:ToPsz(bool)
Unexecuted instantiation: rtfattributeoutput.cxx:ToPsz(bool)
Unexecuted instantiation: drviews3.cxx:ToPsz(bool)
Unexecuted instantiation: eppt.cxx:ToPsz(bool)
Unexecuted instantiation: pptx-epptooxml.cxx:ToPsz(bool)
Unexecuted instantiation: pptx-animations.cxx:ToPsz(bool)
Unexecuted instantiation: pptx-animations-nodectx.cxx:ToPsz(bool)
58
59
/**
60
 * @return literal "1" for true value, or literal "0" for false value.
61
 */
62
static constexpr const char* ToPsz10(bool b)
63
0
{
64
    // xlsx seems to use "1" or "0" for boolean values.  I wonder it ever uses
65
    // the "true" "false" variant.
66
0
    return b ? "1" : "0";
67
0
}
Unexecuted instantiation: xeroot.cxx:ToPsz10(bool)
Unexecuted instantiation: xestyle.cxx:ToPsz10(bool)
Unexecuted instantiation: excdoc.cxx:ToPsz10(bool)
Unexecuted instantiation: excrecds.cxx:ToPsz10(bool)
Unexecuted instantiation: xecontent.cxx:ToPsz10(bool)
Unexecuted instantiation: xedbdata.cxx:ToPsz10(bool)
Unexecuted instantiation: xeescher.cxx:ToPsz10(bool)
Unexecuted instantiation: xeextlst.cxx:ToPsz10(bool)
Unexecuted instantiation: xename.cxx:ToPsz10(bool)
Unexecuted instantiation: xepage.cxx:ToPsz10(bool)
Unexecuted instantiation: xepivotxml.cxx:ToPsz10(bool)
Unexecuted instantiation: xerecord.cxx:ToPsz10(bool)
Unexecuted instantiation: xestream.cxx:ToPsz10(bool)
Unexecuted instantiation: xetable.cxx:ToPsz10(bool)
Unexecuted instantiation: xeview.cxx:ToPsz10(bool)
Unexecuted instantiation: NamedSheetViews.cxx:ToPsz10(bool)
Unexecuted instantiation: SparklineExt.cxx:ToPsz10(bool)
Unexecuted instantiation: XclExpChangeTrack.cxx:ToPsz10(bool)
Unexecuted instantiation: xcl97esc.cxx:ToPsz10(bool)
Unexecuted instantiation: xcl97rec.cxx:ToPsz10(bool)
Unexecuted instantiation: xechart.cxx:ToPsz10(bool)
Unexecuted instantiation: chartexport.cxx:ToPsz10(bool)
Unexecuted instantiation: shape.cxx:ToPsz10(bool)
Unexecuted instantiation: textbodycontext.cxx:ToPsz10(bool)
Unexecuted instantiation: drawingml.cxx:ToPsz10(bool)
Unexecuted instantiation: shapes.cxx:ToPsz10(bool)
Unexecuted instantiation: vmlexport.cxx:ToPsz10(bool)
Unexecuted instantiation: ThemeExport.cxx:ToPsz10(bool)
Unexecuted instantiation: imexport.cxx:ToPsz10(bool)
Unexecuted instantiation: diagram.cxx:ToPsz10(bool)
Unexecuted instantiation: DMLPresetShapeExport.cxx:ToPsz10(bool)
Unexecuted instantiation: datamodel_oox.cxx:ToPsz10(bool)
Unexecuted instantiation: unodoc.cxx:ToPsz10(bool)
Unexecuted instantiation: unofilter.cxx:ToPsz10(bool)
Unexecuted instantiation: unomodel.cxx:ToPsz10(bool)
Unexecuted instantiation: utility.cxx:ToPsz10(bool)
Unexecuted instantiation: view.cxx:ToPsz10(bool)
Unexecuted instantiation: mathmlexport.cxx:ToPsz10(bool)
Unexecuted instantiation: mathmlimport.cxx:ToPsz10(bool)
Unexecuted instantiation: accessibility.cxx:ToPsz10(bool)
Unexecuted instantiation: cursor.cxx:ToPsz10(bool)
Unexecuted instantiation: dialog.cxx:ToPsz10(bool)
Unexecuted instantiation: document.cxx:ToPsz10(bool)
Unexecuted instantiation: edit.cxx:ToPsz10(bool)
Unexecuted instantiation: ooxmlexport.cxx:ToPsz10(bool)
Unexecuted instantiation: smdll.cxx:ToPsz10(bool)
Unexecuted instantiation: smmod.cxx:ToPsz10(bool)
Unexecuted instantiation: action.cxx:ToPsz10(bool)
Unexecuted instantiation: rtfdocumentimpl.cxx:ToPsz10(bool)
Unexecuted instantiation: DomainMapper_Impl.cxx:ToPsz10(bool)
Unexecuted instantiation: GraphicImport.cxx:ToPsz10(bool)
Unexecuted instantiation: OOXMLFastContextHandler.cxx:ToPsz10(bool)
Unexecuted instantiation: wrtw8sty.cxx:ToPsz10(bool)
Unexecuted instantiation: docxattributeoutput.cxx:ToPsz10(bool)
Unexecuted instantiation: docxexport.cxx:ToPsz10(bool)
Unexecuted instantiation: docxsdrexport.cxx:ToPsz10(bool)
Unexecuted instantiation: docxtableexport.cxx:ToPsz10(bool)
Unexecuted instantiation: rtfattributeoutput.cxx:ToPsz10(bool)
Unexecuted instantiation: drviews3.cxx:ToPsz10(bool)
Unexecuted instantiation: eppt.cxx:ToPsz10(bool)
Unexecuted instantiation: pptx-epptooxml.cxx:ToPsz10(bool)
Unexecuted instantiation: pptx-animations.cxx:ToPsz10(bool)
Unexecuted instantiation: pptx-animations-nodectx.cxx:ToPsz10(bool)
68
69
static constexpr sal_Int64 PPTtoEMU( sal_Int32 nPPT )
70
0
{
71
0
    return o3tl::convert(nPPT, o3tl::Length::master, o3tl::Length::emu);
72
0
}
Unexecuted instantiation: xeroot.cxx:PPTtoEMU(int)
Unexecuted instantiation: xestyle.cxx:PPTtoEMU(int)
Unexecuted instantiation: excdoc.cxx:PPTtoEMU(int)
Unexecuted instantiation: excrecds.cxx:PPTtoEMU(int)
Unexecuted instantiation: xecontent.cxx:PPTtoEMU(int)
Unexecuted instantiation: xedbdata.cxx:PPTtoEMU(int)
Unexecuted instantiation: xeescher.cxx:PPTtoEMU(int)
Unexecuted instantiation: xeextlst.cxx:PPTtoEMU(int)
Unexecuted instantiation: xename.cxx:PPTtoEMU(int)
Unexecuted instantiation: xepage.cxx:PPTtoEMU(int)
Unexecuted instantiation: xepivotxml.cxx:PPTtoEMU(int)
Unexecuted instantiation: xerecord.cxx:PPTtoEMU(int)
Unexecuted instantiation: xestream.cxx:PPTtoEMU(int)
Unexecuted instantiation: xetable.cxx:PPTtoEMU(int)
Unexecuted instantiation: xeview.cxx:PPTtoEMU(int)
Unexecuted instantiation: NamedSheetViews.cxx:PPTtoEMU(int)
Unexecuted instantiation: SparklineExt.cxx:PPTtoEMU(int)
Unexecuted instantiation: XclExpChangeTrack.cxx:PPTtoEMU(int)
Unexecuted instantiation: xcl97esc.cxx:PPTtoEMU(int)
Unexecuted instantiation: xcl97rec.cxx:PPTtoEMU(int)
Unexecuted instantiation: xechart.cxx:PPTtoEMU(int)
Unexecuted instantiation: chartexport.cxx:PPTtoEMU(int)
Unexecuted instantiation: shape.cxx:PPTtoEMU(int)
Unexecuted instantiation: textbodycontext.cxx:PPTtoEMU(int)
Unexecuted instantiation: drawingml.cxx:PPTtoEMU(int)
Unexecuted instantiation: shapes.cxx:PPTtoEMU(int)
Unexecuted instantiation: vmlexport.cxx:PPTtoEMU(int)
Unexecuted instantiation: ThemeExport.cxx:PPTtoEMU(int)
Unexecuted instantiation: imexport.cxx:PPTtoEMU(int)
Unexecuted instantiation: diagram.cxx:PPTtoEMU(int)
Unexecuted instantiation: DMLPresetShapeExport.cxx:PPTtoEMU(int)
Unexecuted instantiation: datamodel_oox.cxx:PPTtoEMU(int)
Unexecuted instantiation: unodoc.cxx:PPTtoEMU(int)
Unexecuted instantiation: unofilter.cxx:PPTtoEMU(int)
Unexecuted instantiation: unomodel.cxx:PPTtoEMU(int)
Unexecuted instantiation: utility.cxx:PPTtoEMU(int)
Unexecuted instantiation: view.cxx:PPTtoEMU(int)
Unexecuted instantiation: mathmlexport.cxx:PPTtoEMU(int)
Unexecuted instantiation: mathmlimport.cxx:PPTtoEMU(int)
Unexecuted instantiation: accessibility.cxx:PPTtoEMU(int)
Unexecuted instantiation: cursor.cxx:PPTtoEMU(int)
Unexecuted instantiation: dialog.cxx:PPTtoEMU(int)
Unexecuted instantiation: document.cxx:PPTtoEMU(int)
Unexecuted instantiation: edit.cxx:PPTtoEMU(int)
Unexecuted instantiation: ooxmlexport.cxx:PPTtoEMU(int)
Unexecuted instantiation: smdll.cxx:PPTtoEMU(int)
Unexecuted instantiation: smmod.cxx:PPTtoEMU(int)
Unexecuted instantiation: action.cxx:PPTtoEMU(int)
Unexecuted instantiation: rtfdocumentimpl.cxx:PPTtoEMU(int)
Unexecuted instantiation: DomainMapper_Impl.cxx:PPTtoEMU(int)
Unexecuted instantiation: GraphicImport.cxx:PPTtoEMU(int)
Unexecuted instantiation: OOXMLFastContextHandler.cxx:PPTtoEMU(int)
Unexecuted instantiation: wrtw8sty.cxx:PPTtoEMU(int)
Unexecuted instantiation: docxattributeoutput.cxx:PPTtoEMU(int)
Unexecuted instantiation: docxexport.cxx:PPTtoEMU(int)
Unexecuted instantiation: docxsdrexport.cxx:PPTtoEMU(int)
Unexecuted instantiation: docxtableexport.cxx:PPTtoEMU(int)
Unexecuted instantiation: rtfattributeoutput.cxx:PPTtoEMU(int)
Unexecuted instantiation: drviews3.cxx:PPTtoEMU(int)
Unexecuted instantiation: eppt.cxx:PPTtoEMU(int)
Unexecuted instantiation: pptx-epptooxml.cxx:PPTtoEMU(int)
Unexecuted instantiation: pptx-animations.cxx:PPTtoEMU(int)
Unexecuted instantiation: pptx-animations-nodectx.cxx:PPTtoEMU(int)
73
74
static constexpr sal_Int64 TwipsToEMU( sal_Int32 nTwips )
75
0
{
76
0
    return o3tl::convert(nTwips, o3tl::Length::twip, o3tl::Length::emu);
77
0
}
Unexecuted instantiation: xeroot.cxx:TwipsToEMU(int)
Unexecuted instantiation: xestyle.cxx:TwipsToEMU(int)
Unexecuted instantiation: excdoc.cxx:TwipsToEMU(int)
Unexecuted instantiation: excrecds.cxx:TwipsToEMU(int)
Unexecuted instantiation: xecontent.cxx:TwipsToEMU(int)
Unexecuted instantiation: xedbdata.cxx:TwipsToEMU(int)
Unexecuted instantiation: xeescher.cxx:TwipsToEMU(int)
Unexecuted instantiation: xeextlst.cxx:TwipsToEMU(int)
Unexecuted instantiation: xename.cxx:TwipsToEMU(int)
Unexecuted instantiation: xepage.cxx:TwipsToEMU(int)
Unexecuted instantiation: xepivotxml.cxx:TwipsToEMU(int)
Unexecuted instantiation: xerecord.cxx:TwipsToEMU(int)
Unexecuted instantiation: xestream.cxx:TwipsToEMU(int)
Unexecuted instantiation: xetable.cxx:TwipsToEMU(int)
Unexecuted instantiation: xeview.cxx:TwipsToEMU(int)
Unexecuted instantiation: NamedSheetViews.cxx:TwipsToEMU(int)
Unexecuted instantiation: SparklineExt.cxx:TwipsToEMU(int)
Unexecuted instantiation: XclExpChangeTrack.cxx:TwipsToEMU(int)
Unexecuted instantiation: xcl97esc.cxx:TwipsToEMU(int)
Unexecuted instantiation: xcl97rec.cxx:TwipsToEMU(int)
Unexecuted instantiation: xechart.cxx:TwipsToEMU(int)
Unexecuted instantiation: chartexport.cxx:TwipsToEMU(int)
Unexecuted instantiation: shape.cxx:TwipsToEMU(int)
Unexecuted instantiation: textbodycontext.cxx:TwipsToEMU(int)
Unexecuted instantiation: drawingml.cxx:TwipsToEMU(int)
Unexecuted instantiation: shapes.cxx:TwipsToEMU(int)
Unexecuted instantiation: vmlexport.cxx:TwipsToEMU(int)
Unexecuted instantiation: ThemeExport.cxx:TwipsToEMU(int)
Unexecuted instantiation: imexport.cxx:TwipsToEMU(int)
Unexecuted instantiation: diagram.cxx:TwipsToEMU(int)
Unexecuted instantiation: DMLPresetShapeExport.cxx:TwipsToEMU(int)
Unexecuted instantiation: datamodel_oox.cxx:TwipsToEMU(int)
Unexecuted instantiation: unodoc.cxx:TwipsToEMU(int)
Unexecuted instantiation: unofilter.cxx:TwipsToEMU(int)
Unexecuted instantiation: unomodel.cxx:TwipsToEMU(int)
Unexecuted instantiation: utility.cxx:TwipsToEMU(int)
Unexecuted instantiation: view.cxx:TwipsToEMU(int)
Unexecuted instantiation: mathmlexport.cxx:TwipsToEMU(int)
Unexecuted instantiation: mathmlimport.cxx:TwipsToEMU(int)
Unexecuted instantiation: accessibility.cxx:TwipsToEMU(int)
Unexecuted instantiation: cursor.cxx:TwipsToEMU(int)
Unexecuted instantiation: dialog.cxx:TwipsToEMU(int)
Unexecuted instantiation: document.cxx:TwipsToEMU(int)
Unexecuted instantiation: edit.cxx:TwipsToEMU(int)
Unexecuted instantiation: ooxmlexport.cxx:TwipsToEMU(int)
Unexecuted instantiation: smdll.cxx:TwipsToEMU(int)
Unexecuted instantiation: smmod.cxx:TwipsToEMU(int)
Unexecuted instantiation: action.cxx:TwipsToEMU(int)
Unexecuted instantiation: rtfdocumentimpl.cxx:TwipsToEMU(int)
Unexecuted instantiation: DomainMapper_Impl.cxx:TwipsToEMU(int)
Unexecuted instantiation: GraphicImport.cxx:TwipsToEMU(int)
Unexecuted instantiation: OOXMLFastContextHandler.cxx:TwipsToEMU(int)
Unexecuted instantiation: wrtw8sty.cxx:TwipsToEMU(int)
Unexecuted instantiation: docxattributeoutput.cxx:TwipsToEMU(int)
Unexecuted instantiation: docxexport.cxx:TwipsToEMU(int)
Unexecuted instantiation: docxsdrexport.cxx:TwipsToEMU(int)
Unexecuted instantiation: docxtableexport.cxx:TwipsToEMU(int)
Unexecuted instantiation: rtfattributeoutput.cxx:TwipsToEMU(int)
Unexecuted instantiation: drviews3.cxx:TwipsToEMU(int)
Unexecuted instantiation: eppt.cxx:TwipsToEMU(int)
Unexecuted instantiation: pptx-epptooxml.cxx:TwipsToEMU(int)
Unexecuted instantiation: pptx-animations.cxx:TwipsToEMU(int)
Unexecuted instantiation: pptx-animations-nodectx.cxx:TwipsToEMU(int)
78
79
template <typename T>
80
OString write1000thOfAPercent(T number)
81
0
{
82
0
    return OString::number( lround(number * 1000.0) );
83
0
}
84
85
namespace oox::drawingml {
86
    enum DocumentType { DOCUMENT_DOCX, DOCUMENT_PPTX, DOCUMENT_XLSX };
87
}
88
89
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */