ACF $AcfVersion:0$
TPixelConversion.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// ACF includes
6#include <iimg/iimg.h>
7
8
9namespace iimg
10{
11
12
23template <typename SourcePixel, typename DestPixel, typename CalcPixel = DestPixel>
25{
26public:
27 typedef SourcePixel SourcePixelType;
28 typedef DestPixel DestPixelType;
29 typedef CalcPixel CalcPixelType;
30
31
36
42 DestPixel operator()(const SourcePixel& pixel) const;
43
44 CalcPixel GetCalc(const SourcePixel& pixel) const;
45 DestPixel GetDest(const CalcPixel& pixel) const;
46
54 double GetWeight(const CalcPixel& pixel) const;
55
60 double GetIntensity(const CalcPixel& pixel) const;
61
63};
64
65
66// inline methods
67
68template <typename SourcePixel, typename DestPixel, typename CalcPixel>
73
74
75template <typename SourcePixel, typename DestPixel, typename CalcPixel>
76inline DestPixel TPixelConversion<SourcePixel, DestPixel, CalcPixel>::operator()(const SourcePixel& pixel) const
77{
78 return DestPixel(pixel);
79}
80
81
82template <typename SourcePixel, typename DestPixel, typename CalcPixel>
83inline CalcPixel TPixelConversion<SourcePixel, DestPixel, CalcPixel>::GetCalc(const SourcePixel& pixel) const
84{
85 return CalcPixel(pixel);
86}
87
88
89template <typename SourcePixel, typename DestPixel, typename CalcPixel>
90inline DestPixel TPixelConversion<SourcePixel, DestPixel, CalcPixel>::GetDest(const CalcPixel& pixel) const
91{
92 return DestPixel(pixel);
93}
94
95
96template <typename SourcePixel, typename DestPixel, typename CalcPixel>
97inline double TPixelConversion<SourcePixel, DestPixel, CalcPixel>::GetWeight(const CalcPixel& /*pixel*/) const
98{
99 return 1.0;
100}
101
102
103template <typename SourcePixel, typename DestPixel, typename CalcPixel>
105{
106 return double(pixel);
107}
108
109
110template <>
112: whiteIntensity(255)
113{
114}
115
116
117template <>
118inline float TPixelConversion<quint8, float, float>::operator()(const quint8& pixel) const
119{
120 return pixel / 255.0f;
121}
122
123
124template <>
125inline float TPixelConversion<quint8, float, float>::GetCalc(const quint8& pixel) const
126{
127 return pixel / 255.0f;
128}
129
130
131template <>
132inline quint8 TPixelConversion<float, quint8, float>::operator()(const float& pixel) const
133{
134 return quint8(pixel * 255);
135}
136
137
138template <>
139inline quint8 TPixelConversion<float, quint8, float>::GetDest(const float& pixel) const
140{
141 return quint8(pixel * 255);
142}
143
144
149
150
151} // namespace iimg
152
153
154
155
A generic pixel conversion.
double GetIntensity(const CalcPixel &pixel) const
Get intensity of pixel value.
CalcPixel GetCalc(const SourcePixel &pixel) const
DestPixel operator()(const SourcePixel &pixel) const
Casting operator.
double GetWeight(const CalcPixel &pixel) const
Get weight of pixel value.
DestPixel GetDest(const CalcPixel &pixel) const
TPixelConversion()
Default constructor.
Contains the system indenendent definitions of image and related themes.
Definition CBitmap.h:17
TPixelConversion< float, quint8, float > CFloatGrayPixelConversion
TPixelConversion< float, float > CFloatFloatPixelConversion
TPixelConversion< quint8, quint8 > CGrayGrayPixelConversion
TPixelConversion< quint8, float, float > CGrayFloatPixelConversion