scifir-units 2.0.0
scifir-units is a library of units of measurement, angles, coordinates, fields, and related data, all lightweight, that help in the development of scientific software and scientific machines
Loading...
Searching...
No Matches
Public Member Functions | Private Member Functions | Private Attributes | List of all members
scifir::pixel Class Reference

#include <pixel.hpp>

Public Member Functions

 pixel ()
 
 pixel (const pixel &x)
 
 pixel (pixel &&x)
 
 pixel (float new_value)
 
 pixel (double new_value)
 
 pixel (long double new_value)
 
 pixel (int new_value)
 
 pixel (const string &init_pixel)
 
 pixel (const scalar_unit &x)
 
pixeloperator= (const pixel &x)
 
pixeloperator= (pixel &&x)
 
pixeloperator= (float new_value)
 
pixeloperator= (const string &init_pixel)
 
pixeloperator= (const scalar_unit &x)
 
 operator float () const
 
const floatget_value () const
 
pixel operator+ (const pixel &x) const
 
pixel operator- (const pixel &x) const
 
pixel operator* (const pixel &x) const
 
pixel operator/ (const pixel &x) const
 
pixel operator^ (const pixel &x) const
 
void operator+= (const pixel &x)
 
void operator-= (const pixel &x)
 
void operator*= (const pixel &x)
 
void operator/= (const pixel &x)
 
void operator^= (const pixel &x)
 
template<typename T , typename = typename enable_if<scifir::is_number<T>::value>::type>
void operator= (T x)
 
template<typename T , typename = typename enable_if<scifir::is_number<T>::value>::type>
pixel operator+ (T x) const
 
template<typename T , typename = typename enable_if<scifir::is_number<T>::value>::type>
pixel operator- (T x) const
 
template<typename T , typename = typename enable_if<scifir::is_number<T>::value>::type>
pixel operator* (T x) const
 
template<typename T , typename = typename enable_if<scifir::is_number<T>::value>::type>
pixel operator/ (T x) const
 
template<typename T , typename = typename enable_if<scifir::is_number<T>::value>::type>
pixel operator^ (T x) const
 
template<typename T , typename = typename enable_if<scifir::is_number<T>::value>::type>
void operator+= (T x)
 
template<typename T , typename = typename enable_if<scifir::is_number<T>::value>::type>
void operator-= (T x)
 
template<typename T , typename = typename enable_if<scifir::is_number<T>::value>::type>
void operator*= (T x)
 
template<typename T , typename = typename enable_if<scifir::is_number<T>::value>::type>
void operator/= (T x)
 
template<typename T , typename = typename enable_if<scifir::is_number<T>::value>::type>
void operator^= (T x)
 
pixeloperator++ ()
 
pixel operator++ (int)
 
pixeloperator-- ()
 
pixel operator-- (int)
 
scalar_unit to_scalar_unit () const
 
string display (int number_of_decimals=2) const
 

Private Member Functions

void initialize_from_string (const string &init_pixel)
 

Private Attributes

float value
 

Detailed Description

Definition at line 17 of file pixel.hpp.

Constructor & Destructor Documentation

◆ pixel() [1/9]

scifir::pixel::pixel ( )

Definition at line 16 of file pixel.cpp.

16 : value(0)
17 {}
float value
Definition pixel.hpp:133

◆ pixel() [2/9]

scifir::pixel::pixel ( const pixel x)

Definition at line 19 of file pixel.cpp.

19 : value(x.get_value())
20 {}

◆ pixel() [3/9]

scifir::pixel::pixel ( pixel &&  x)

Definition at line 22 of file pixel.cpp.

22 : value(std::move(x.get_value()))
23 {}

◆ pixel() [4/9]

scifir::pixel::pixel ( float  new_value)
explicit

Definition at line 25 of file pixel.cpp.

25 : value(new_value)
26 {}

◆ pixel() [5/9]

scifir::pixel::pixel ( double  new_value)
explicit

Definition at line 28 of file pixel.cpp.

28 : value(float(new_value))
29 {}

◆ pixel() [6/9]

scifir::pixel::pixel ( long double  new_value)
explicit

Definition at line 31 of file pixel.cpp.

31 : value(float(new_value))
32 {}

◆ pixel() [7/9]

scifir::pixel::pixel ( int  new_value)
explicit

Definition at line 34 of file pixel.cpp.

34 : value(float(new_value))
35 {}

◆ pixel() [8/9]

scifir::pixel::pixel ( const string init_pixel)
explicit

Definition at line 37 of file pixel.cpp.

37 : value()
38 {
39 initialize_from_string(init_pixel);
40 }
void initialize_from_string(const string &init_pixel)
Definition pixel.cpp:180

◆ pixel() [9/9]

scifir::pixel::pixel ( const scalar_unit x)
explicit

Definition at line 42 of file pixel.cpp.

43 {
44 if (x.has_empty_dimensions())
45 {
46 value = float(x);
47 }
48 else
49 {
50 cerr << "An pixel cannot be initialized with dimensions" << endl;
51 value = 0;
52 }
53 }

Member Function Documentation

◆ display()

string scifir::pixel::display ( int  number_of_decimals = 2) const

Definition at line 173 of file pixel.cpp.

174 {
175 ostringstream output;
176 output << display_float(value,number_of_decimals) << " px";
177 return output.str();
178 }
string display_float(const float &value, int number_of_decimals)
Definition types.cpp:36

◆ get_value()

const float & scifir::pixel::get_value ( ) const
inline

Definition at line 41 of file pixel.hpp.

42 {
43 return value;
44 }

◆ initialize_from_string()

void scifir::pixel::initialize_from_string ( const string init_pixel)
private

Definition at line 180 of file pixel.cpp.

181 {
182 if (init_pixel.substr(init_pixel.length() - 3,3) == " px")
183 {
184 value = stof(init_pixel.substr(0,init_pixel.length() - 3));
185 }
186 else if (init_pixel.substr(init_pixel.length() - 2,2) == "px")
187 {
188 value = stof(init_pixel.substr(0,init_pixel.length() - 2));
189 }
190 else
191 {
192 value = stof(init_pixel);
193 }
194 }

◆ operator float()

scifir::pixel::operator float ( ) const
inlineexplicit

Definition at line 36 of file pixel.hpp.

37 {
38 return float(value);
39 }

◆ operator*() [1/2]

pixel scifir::pixel::operator* ( const pixel x) const

Definition at line 102 of file pixel.cpp.

103 {
104 return pixel(value * x.get_value());
105 }

◆ operator*() [2/2]

template<typename T , typename = typename enable_if<scifir::is_number<T>::value>::type>
pixel scifir::pixel::operator* ( T  x) const
inline

Definition at line 76 of file pixel.hpp.

77 {
78 return pixel(value * x);
79 }

◆ operator*=() [1/2]

void scifir::pixel::operator*= ( const pixel x)

Definition at line 127 of file pixel.cpp.

128 {
129 value *= x.get_value();
130 }

◆ operator*=() [2/2]

template<typename T , typename = typename enable_if<scifir::is_number<T>::value>::type>
void scifir::pixel::operator*= ( T  x)
inline

Definition at line 106 of file pixel.hpp.

107 {
108 value *= x;
109 }

◆ operator+() [1/2]

pixel scifir::pixel::operator+ ( const pixel x) const

Definition at line 92 of file pixel.cpp.

93 {
94 return pixel(value + x.get_value());
95 }

◆ operator+() [2/2]

template<typename T , typename = typename enable_if<scifir::is_number<T>::value>::type>
pixel scifir::pixel::operator+ ( T  x) const
inline

Definition at line 64 of file pixel.hpp.

65 {
66 return pixel(value + x);
67 }

◆ operator++() [1/2]

pixel & scifir::pixel::operator++ ( )

Definition at line 142 of file pixel.cpp.

143 {
144 value++;
145 return *this;
146 }

◆ operator++() [2/2]

pixel scifir::pixel::operator++ ( int  )

Definition at line 148 of file pixel.cpp.

149 {
150 pixel tmp = pixel(*this);
151 operator ++();
152 return tmp;
153 }
pixel & operator++()
Definition pixel.cpp:142

◆ operator+=() [1/2]

void scifir::pixel::operator+= ( const pixel x)

Definition at line 117 of file pixel.cpp.

118 {
119 value += x.get_value();
120 }

◆ operator+=() [2/2]

template<typename T , typename = typename enable_if<scifir::is_number<T>::value>::type>
void scifir::pixel::operator+= ( T  x)
inline

Definition at line 94 of file pixel.hpp.

95 {
96 value += x;
97 }

◆ operator-() [1/2]

pixel scifir::pixel::operator- ( const pixel x) const

Definition at line 97 of file pixel.cpp.

98 {
99 return pixel(value - x.get_value());
100 }

◆ operator-() [2/2]

template<typename T , typename = typename enable_if<scifir::is_number<T>::value>::type>
pixel scifir::pixel::operator- ( T  x) const
inline

Definition at line 70 of file pixel.hpp.

71 {
72 return pixel(value - x);
73 }

◆ operator--() [1/2]

pixel & scifir::pixel::operator-- ( )

Definition at line 155 of file pixel.cpp.

156 {
157 value--;
158 return *this;
159 }

◆ operator--() [2/2]

pixel scifir::pixel::operator-- ( int  )

Definition at line 161 of file pixel.cpp.

162 {
163 pixel tmp = pixel(*this);
164 operator --();
165 return tmp;
166 }
pixel & operator--()
Definition pixel.cpp:155

◆ operator-=() [1/2]

void scifir::pixel::operator-= ( const pixel x)

Definition at line 122 of file pixel.cpp.

123 {
124 value -= x.get_value();
125 }

◆ operator-=() [2/2]

template<typename T , typename = typename enable_if<scifir::is_number<T>::value>::type>
void scifir::pixel::operator-= ( T  x)
inline

Definition at line 100 of file pixel.hpp.

101 {
102 value -= x;
103 }

◆ operator/() [1/2]

pixel scifir::pixel::operator/ ( const pixel x) const

Definition at line 107 of file pixel.cpp.

108 {
109 return pixel(value / x.get_value());
110 }

◆ operator/() [2/2]

template<typename T , typename = typename enable_if<scifir::is_number<T>::value>::type>
pixel scifir::pixel::operator/ ( T  x) const
inline

Definition at line 82 of file pixel.hpp.

83 {
84 return pixel(value / x);
85 }

◆ operator/=() [1/2]

void scifir::pixel::operator/= ( const pixel x)

Definition at line 132 of file pixel.cpp.

133 {
134 value /= x.get_value();
135 }

◆ operator/=() [2/2]

template<typename T , typename = typename enable_if<scifir::is_number<T>::value>::type>
void scifir::pixel::operator/= ( T  x)
inline

Definition at line 112 of file pixel.hpp.

113 {
114 value /= x;
115 }

◆ operator=() [1/6]

pixel & scifir::pixel::operator= ( const pixel x)

Definition at line 55 of file pixel.cpp.

56 {
57 value = x.get_value();
58 return *this;
59 }

◆ operator=() [2/6]

pixel & scifir::pixel::operator= ( const scalar_unit x)

Definition at line 79 of file pixel.cpp.

80 {
81 if (x.has_empty_dimensions())
82 {
83 value = x.get_value();
84 }
85 else
86 {
87 cerr << "An pixel cannot be initialized with dimensions" << endl;
88 }
89 return *this;
90 }

◆ operator=() [3/6]

pixel & scifir::pixel::operator= ( const string init_pixel)

Definition at line 73 of file pixel.cpp.

74 {
75 initialize_from_string(init_pixel);
76 return *this;
77 }

◆ operator=() [4/6]

pixel & scifir::pixel::operator= ( float  new_value)

Definition at line 67 of file pixel.cpp.

68 {
69 value = new_value;
70 return *this;
71 }

◆ operator=() [5/6]

pixel & scifir::pixel::operator= ( pixel &&  x)

Definition at line 61 of file pixel.cpp.

62 {
63 value = std::move(x.get_value());
64 return *this;
65 }

◆ operator=() [6/6]

template<typename T , typename = typename enable_if<scifir::is_number<T>::value>::type>
void scifir::pixel::operator= ( T  x)
inline

Definition at line 58 of file pixel.hpp.

59 {
60 value = x;
61 }

◆ operator^() [1/2]

pixel scifir::pixel::operator^ ( const pixel x) const

Definition at line 112 of file pixel.cpp.

113 {
114 return pixel(std::pow(value,x.get_value()));
115 }

◆ operator^() [2/2]

template<typename T , typename = typename enable_if<scifir::is_number<T>::value>::type>
pixel scifir::pixel::operator^ ( T  x) const
inline

Definition at line 88 of file pixel.hpp.

89 {
90 return pixel(std::pow(value, x));
91 }

◆ operator^=() [1/2]

void scifir::pixel::operator^= ( const pixel x)

Definition at line 137 of file pixel.cpp.

138 {
139 value = std::pow(value,x.get_value());
140 }

◆ operator^=() [2/2]

template<typename T , typename = typename enable_if<scifir::is_number<T>::value>::type>
void scifir::pixel::operator^= ( T  x)
inline

Definition at line 118 of file pixel.hpp.

119 {
120 value = std::pow(value, x);
121 }

◆ to_scalar_unit()

scalar_unit scifir::pixel::to_scalar_unit ( ) const

Definition at line 168 of file pixel.cpp.

169 {
170 return scalar_unit(value, { dimension(dimension::PIXEL, prefix::NONE, dimension::NUMERATOR) });
171 }
@ NUMERATOR
The dimension is at the numerator.
Definition dimension.hpp:38
@ PIXEL
Pixel, plural pixels. it represents the amount of pixels, it can be used as a replacemet of the metre...
Definition dimension.hpp:35
@ NONE
There is no prefix. Then, the dimension is not increased or decreased by some factor.
Definition prefix.hpp:16

Member Data Documentation

◆ value

float scifir::pixel::value
private

Definition at line 133 of file pixel.hpp.


The documentation for this class was generated from the following files: