Coverage Report

Created: 2025-07-07 10:01

/src/libreoffice/chart2/source/tools/HistogramDataSequence.cxx
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
10
#include <HistogramDataSequence.hxx>
11
12
#include <CommonFunctors.hxx>
13
#include <ModifyListenerHelper.hxx>
14
15
#include <comphelper/sequenceashashmap.hxx>
16
#include <cppuhelper/supportsservice.hxx>
17
18
#include <algorithm>
19
#include <strings.hrc>
20
#include <ResId.hxx>
21
#include <utility>
22
23
using namespace css;
24
25
namespace
26
{
27
constexpr OUString lcl_aServiceName = u"com.sun.star.comp.chart.HistogramDataSequence"_ustr;
28
29
enum
30
{
31
    PROP_PROPOSED_ROLE
32
};
33
34
} // anonymous namespace
35
36
namespace chart
37
{
38
HistogramDataSequence::HistogramDataSequence()
39
0
    : m_xModifyEventForwarder(new ModifyEventForwarder())
40
0
{
41
0
    registerProperty(u"Role"_ustr, PROP_PROPOSED_ROLE,
42
0
                     0, // PropertyAttributes
43
0
                     &m_sRole, cppu::UnoType<decltype(m_sRole)>::get());
44
0
}
Unexecuted instantiation: chart::HistogramDataSequence::HistogramDataSequence()
Unexecuted instantiation: chart::HistogramDataSequence::HistogramDataSequence()
45
46
0
HistogramDataSequence::~HistogramDataSequence() {}
47
48
IMPLEMENT_FORWARD_XINTERFACE2(HistogramDataSequence, HistogramDataSequence_Base,
49
                              comphelper::OPropertyContainer2)
50
51
IMPLEMENT_FORWARD_XTYPEPROVIDER2(HistogramDataSequence, HistogramDataSequence_Base,
52
                                 comphelper::OPropertyContainer2)
53
54
// XPropertySet
55
uno::Reference<beans::XPropertySetInfo> SAL_CALL HistogramDataSequence::getPropertySetInfo()
56
0
{
57
0
    return createPropertySetInfo(getInfoHelper());
58
0
}
59
60
// comphelper::OPropertySetHelper
61
0
::cppu::IPropertyArrayHelper& HistogramDataSequence::getInfoHelper() { return *getArrayHelper(); }
62
63
// comphelper::OPropertyArrayHelper
64
::cppu::IPropertyArrayHelper* HistogramDataSequence::createArrayHelper() const
65
0
{
66
0
    uno::Sequence<beans::Property> aProperties;
67
    // describes all properties which have been registered in the ctor
68
0
    describeProperties(aProperties);
69
70
0
    return new ::cppu::OPropertyArrayHelper(aProperties);
71
0
}
72
73
0
OUString SAL_CALL HistogramDataSequence::getImplementationName() { return lcl_aServiceName; }
74
75
sal_Bool SAL_CALL HistogramDataSequence::supportsService(const OUString& rServiceName)
76
0
{
77
0
    return cppu::supportsService(this, rServiceName);
78
0
}
79
80
uno::Sequence<OUString> SAL_CALL HistogramDataSequence::getSupportedServiceNames()
81
0
{
82
0
    return { lcl_aServiceName, u"com.sun.star.chart2.data.DataSequence"_ustr,
83
0
             u"com.sun.star.chart2.data.NumericalDataSequence"_ustr,
84
0
             u"com.sun.star.chart2.data.TextualDataSequence"_ustr };
85
0
}
86
87
// XNumericalDataSequence
88
uno::Sequence<double> SAL_CALL HistogramDataSequence::getNumericalData()
89
0
{
90
0
    std::unique_lock<std::mutex> aGuard;
91
92
0
    return mxValues;
93
0
}
94
95
// XTextualDataSequence
96
uno::Sequence<OUString> SAL_CALL HistogramDataSequence::getTextualData()
97
0
{
98
0
    std::unique_lock<std::mutex> aGuard;
99
0
    return {};
100
0
}
101
102
// XDataSequence
103
uno::Sequence<uno::Any> SAL_CALL HistogramDataSequence::getData()
104
0
{
105
0
    std::unique_lock<std::mutex> aGuard;
106
0
    uno::Sequence<uno::Any> aSequence(mxValues.size());
107
0
    auto pSequence = aSequence.getArray();
108
109
0
    size_t i = 0;
110
0
    for (double nValue : mxValues)
111
0
    {
112
0
        pSequence[i] <<= nValue;
113
0
        i++;
114
0
    }
115
0
    return aSequence;
116
0
}
117
118
0
OUString SAL_CALL HistogramDataSequence::getSourceRangeRepresentation() { return m_sRole; }
119
120
uno::Sequence<OUString>
121
    SAL_CALL HistogramDataSequence::generateLabel(css::chart2::data::LabelOrigin)
122
0
{
123
0
    return mxLabels;
124
0
}
125
126
sal_Int32 SAL_CALL HistogramDataSequence::getNumberFormatKeyByIndex(sal_Int32)
127
0
{
128
0
    return 0; // TODO - NumberFormat support
129
0
}
130
131
// XModifyBroadcaster
132
void SAL_CALL
133
HistogramDataSequence::addModifyListener(const uno::Reference<util::XModifyListener>& aListener)
134
0
{
135
0
    m_xModifyEventForwarder->addModifyListener(aListener);
136
0
}
137
138
void SAL_CALL
139
HistogramDataSequence::removeModifyListener(const uno::Reference<util::XModifyListener>& aListener)
140
0
{
141
0
    m_xModifyEventForwarder->removeModifyListener(aListener);
142
0
}
143
144
// XCloneable
145
146
uno::Reference<util::XCloneable> SAL_CALL HistogramDataSequence::createClone()
147
0
{
148
0
    rtl::Reference<HistogramDataSequence> pClone(new HistogramDataSequence());
149
0
    return pClone;
150
0
}
151
152
} // namespace chart2
153
154
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */