ACF $AcfVersion:0$
TComposedColorGradient.h
Go to the documentation of this file.
1// SPDX-License-Identifier: LGPL-2.1-or-later OR GPL-2.0-or-later OR GPL-3.0-or-later OR LicenseRef-ACF-Commercial
2#pragma once
3
4
5// Qt includes
6#include <QtCore/QPair>
7
8// ACF includes
9#include <istd/TRange.h>
10#include <icmm/TColorGradient.h>
11
12
13namespace icmm
14{
15
16
21template <class Gradient>
23{
24public:
25 void AddGradient(const istd::CRange& intervall, const Gradient& gradient);
26
27 // reimplemented (icmm::IColorTransformation)
28 virtual bool GetValueAt(const Argument& argument, Result& result) const override;
29 virtual Result GetValueAt(const Argument& argument) const override;
30
31private:
32 typedef QPair<istd::CRange, Gradient> IntervalGradient;
33 typedef QVector<IntervalGradient> Gradients;
34
35 Gradients m_gradients;
36};
37
38
39// public methods
40
41template <class GradientFunction>
42void TColorGradient<GradientFunction>::AddGradient(const istd::CRange& intervall, const Gradient& gradient)
43{
44 m_gradients.push_back(std::make_pair<istd::CRange, Gradient>(intervall, gradient));
45}
46
47
48// reimplemented (icmm::IColorTransformation)
49
50template <class GradientFunction>
51bool TColorGradient<GradientFunction>::GetValueAt(const Argument& argument, Result& result) const
52{
53 for (int gradientIndex = 0; gradientIndex < int(m_gradients.size()); gradientIndex++){
54 IntervalGradient gradient = m_gradients[gradientIndex];
55
56 if (gradient.first.Contains(argument)){
57 return gradient.second.GetValueAt(argument, result);
58 }
59 }
60
61 return false;
62}
63
64
65template <class GradientFunction>
66TColorGradient<GradientFunction>::Result TColorGradient<GradientFunction>::GetValueAt(const Argument& argument) const
67{
68 ResultType result;
69
70 GetValueAt(argument, result);
71
72 return result;
73}
74
75
77
78
79} // namespace icmm
80
81
Basic interface for color transformations between color models.
Simple implementation of color gradient based on interpolation between start and end colors.
virtual bool GetValueAt(const ArgumentType &argument, ResultType &result) const override
Implementation of color gradient based on set of defined gradients for each subintervall of the full ...
virtual bool GetValueAt(const Argument &argument, Result &result) const override
virtual Result GetValueAt(const Argument &argument) const override
void AddGradient(const istd::CRange &intervall, const Gradient &gradient)
Contains color management classes.
TComposedColorGradient< CLinearGradient > CComposedLinearGradient