Img2Num C++ (Internal Developer Docs) dev
API Documentation
Loading...
Searching...
No Matches
LABAPixel.h
1#ifndef LABAPixel_H
2#define LABAPixel_H
3
4#include "internal/LABPixel.h"
5
6namespace ImageLib {
7
8#ifdef _MSC_VER
9#pragma pack(push, 1)
10#endif
11template <typename NumberT> struct LABAPixel : public ImageLib::LABPixel<NumberT> {
12 // ----- Members -----
13 NumberT alpha;
14
15 // ----- Constructors -----
16 constexpr LABAPixel(NumberT l = 0, NumberT a = 0, NumberT b = 0, NumberT alpha = 255)
17 : LABPixel<NumberT>(l, a, b)
18 , alpha(alpha) {
19 }
20
21 // ----- Modifiers -----
22 [[nodiscard]] inline bool operator==(const LABAPixel& other) const {
23 return LABPixel<NumberT>::operator==(other) && alpha == other.alpha;
24 }
25 [[nodiscard]] inline bool operator!=(const LABAPixel& other) const {
26 return !(*this == other);
27 }
28
29 // ----- Utilities -----
30 inline void setGray(NumberT gray, NumberT alpha = 255) {
32 this->alpha = alpha;
33 }
34
35}
36#ifndef _MSC_VER
37__attribute__((packed))
38#endif
39;
40#ifdef _MSC_VER
41#pragma pack(pop)
42#endif
43
44template <typename NumberT>
45std::ostream& operator<<(std::ostream& out, const ImageLib::LABAPixel<NumberT>& pixel) {
46 out << "( " << pixel.l << "," << pixel.a << "," << pixel.b << "," << pixel.alpha << " )";
47 return out;
48}
49
50} // namespace ImageLib
51
52#endif // LABAPixel_H