Prusa Slicer 2.6.0
Loading...
Searching...
No Matches
agg::gamma_lut< LoResT, HiResT, GammaShift, HiResShift > Class Template Reference

#include <src/agg/agg_gamma_lut.h>

Public Types

enum  gamma_scale_e { gamma_shift = GammaShift , gamma_size = 1 << gamma_shift , gamma_mask = gamma_size - 1 }
 
enum  hi_res_scale_e { hi_res_shift = HiResShift , hi_res_size = 1 << hi_res_shift , hi_res_mask = hi_res_size - 1 }
 
typedef gamma_lut< LoResT, HiResT, GammaShift, HiResShift > self_type
 

Public Member Functions

 ~gamma_lut ()
 
 gamma_lut ()
 
 gamma_lut (double g)
 
void gamma (double g)
 
double gamma () const
 
HiResT dir (LoResT v) const
 
LoResT inv (HiResT v) const
 

Private Member Functions

 gamma_lut (const self_type &)
 
const self_typeoperator= (const self_type &)
 

Private Attributes

double m_gamma
 
HiResT * m_dir_gamma
 
LoResT * m_inv_gamma
 

Detailed Description

template<class LoResT = int8u, class HiResT = int8u, unsigned GammaShift = 8, unsigned HiResShift = 8>
class agg::gamma_lut< LoResT, HiResT, GammaShift, HiResShift >

Member Typedef Documentation

◆ self_type

template<class LoResT = int8u, class HiResT = int8u, unsigned GammaShift = 8, unsigned HiResShift = 8>
typedef gamma_lut<LoResT, HiResT, GammaShift, HiResShift> agg::gamma_lut< LoResT, HiResT, GammaShift, HiResShift >::self_type

Member Enumeration Documentation

◆ gamma_scale_e

template<class LoResT = int8u, class HiResT = int8u, unsigned GammaShift = 8, unsigned HiResShift = 8>
enum agg::gamma_lut::gamma_scale_e
Enumerator
gamma_shift 
gamma_size 
gamma_mask 
34 {
35 gamma_shift = GammaShift,
38 };
@ gamma_shift
Definition agg_gamma_lut.h:35
@ gamma_mask
Definition agg_gamma_lut.h:37
@ gamma_size
Definition agg_gamma_lut.h:36

◆ hi_res_scale_e

template<class LoResT = int8u, class HiResT = int8u, unsigned GammaShift = 8, unsigned HiResShift = 8>
enum agg::gamma_lut::hi_res_scale_e
Enumerator
hi_res_shift 
hi_res_size 
hi_res_mask 
41 {
42 hi_res_shift = HiResShift,
45 };
@ hi_res_shift
Definition agg_gamma_lut.h:42
@ hi_res_mask
Definition agg_gamma_lut.h:44
@ hi_res_size
Definition agg_gamma_lut.h:43

Constructor & Destructor Documentation

◆ ~gamma_lut()

template<class LoResT = int8u, class HiResT = int8u, unsigned GammaShift = 8, unsigned HiResShift = 8>
agg::gamma_lut< LoResT, HiResT, GammaShift, HiResShift >::~gamma_lut ( )
inline
48 {
51 }
LoResT * m_inv_gamma
Definition agg_gamma_lut.h:118
HiResT * m_dir_gamma
Definition agg_gamma_lut.h:117
static void deallocate(T *ptr, unsigned)
Definition agg_basics.h:39

References agg::pod_allocator< T >::deallocate(), agg::gamma_lut< LoResT, HiResT, GammaShift, HiResShift >::gamma_size, agg::gamma_lut< LoResT, HiResT, GammaShift, HiResShift >::hi_res_size, agg::gamma_lut< LoResT, HiResT, GammaShift, HiResShift >::m_dir_gamma, and agg::gamma_lut< LoResT, HiResT, GammaShift, HiResShift >::m_inv_gamma.

+ Here is the call graph for this function:

◆ gamma_lut() [1/3]

template<class LoResT = int8u, class HiResT = int8u, unsigned GammaShift = 8, unsigned HiResShift = 8>
agg::gamma_lut< LoResT, HiResT, GammaShift, HiResShift >::gamma_lut ( )
inline

◆ gamma_lut() [2/3]

template<class LoResT = int8u, class HiResT = int8u, unsigned GammaShift = 8, unsigned HiResShift = 8>
agg::gamma_lut< LoResT, HiResT, GammaShift, HiResShift >::gamma_lut ( double  g)
inline
70 :
71 m_gamma(1.0),
74 {
75 gamma(g);
76 }
double gamma() const
Definition agg_gamma_lut.h:97

References agg::gamma_lut< LoResT, HiResT, GammaShift, HiResShift >::gamma().

+ Here is the call graph for this function:

◆ gamma_lut() [3/3]

template<class LoResT = int8u, class HiResT = int8u, unsigned GammaShift = 8, unsigned HiResShift = 8>
agg::gamma_lut< LoResT, HiResT, GammaShift, HiResShift >::gamma_lut ( const self_type )
private

Member Function Documentation

◆ dir()

template<class LoResT = int8u, class HiResT = int8u, unsigned GammaShift = 8, unsigned HiResShift = 8>
HiResT agg::gamma_lut< LoResT, HiResT, GammaShift, HiResShift >::dir ( LoResT  v) const
inline

◆ gamma() [1/2]

template<class LoResT = int8u, class HiResT = int8u, unsigned GammaShift = 8, unsigned HiResShift = 8>
double agg::gamma_lut< LoResT, HiResT, GammaShift, HiResShift >::gamma ( ) const
inline
98 {
99 return m_gamma;
100 }

References agg::gamma_lut< LoResT, HiResT, GammaShift, HiResShift >::m_gamma.

Referenced by agg::gamma_lut< LoResT, HiResT, GammaShift, HiResShift >::gamma_lut().

+ Here is the caller graph for this function:

◆ gamma() [2/2]

template<class LoResT = int8u, class HiResT = int8u, unsigned GammaShift = 8, unsigned HiResShift = 8>
void agg::gamma_lut< LoResT, HiResT, GammaShift, HiResShift >::gamma ( double  g)
inline
79 {
80 m_gamma = g;
81
82 unsigned i;
83 for(i = 0; i < gamma_size; i++)
84 {
85 m_dir_gamma[i] = (HiResT)
86 uround(pow(i / double(gamma_mask), m_gamma) * double(hi_res_mask));
87 }
88
89 double inv_g = 1.0 / g;
90 for(i = 0; i < hi_res_size; i++)
91 {
92 m_inv_gamma[i] = (LoResT)
93 uround(pow(i / double(hi_res_mask), inv_g) * double(gamma_mask));
94 }
95 }
EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC half pow(const half &a, const half &b)
Definition Half.h:477
AGG_INLINE int uround(double v)
Definition agg_basics.h:192

References agg::gamma_lut< LoResT, HiResT, GammaShift, HiResShift >::gamma_mask, agg::gamma_lut< LoResT, HiResT, GammaShift, HiResShift >::gamma_size, agg::gamma_lut< LoResT, HiResT, GammaShift, HiResShift >::hi_res_mask, agg::gamma_lut< LoResT, HiResT, GammaShift, HiResShift >::hi_res_size, agg::gamma_lut< LoResT, HiResT, GammaShift, HiResShift >::m_dir_gamma, agg::gamma_lut< LoResT, HiResT, GammaShift, HiResShift >::m_gamma, agg::gamma_lut< LoResT, HiResT, GammaShift, HiResShift >::m_inv_gamma, and agg::uround().

+ Here is the call graph for this function:

◆ inv()

template<class LoResT = int8u, class HiResT = int8u, unsigned GammaShift = 8, unsigned HiResShift = 8>
LoResT agg::gamma_lut< LoResT, HiResT, GammaShift, HiResShift >::inv ( HiResT  v) const
inline

◆ operator=()

template<class LoResT = int8u, class HiResT = int8u, unsigned GammaShift = 8, unsigned HiResShift = 8>
const self_type & agg::gamma_lut< LoResT, HiResT, GammaShift, HiResShift >::operator= ( const self_type )
private

Member Data Documentation

◆ m_dir_gamma

template<class LoResT = int8u, class HiResT = int8u, unsigned GammaShift = 8, unsigned HiResShift = 8>
HiResT* agg::gamma_lut< LoResT, HiResT, GammaShift, HiResShift >::m_dir_gamma
private

◆ m_gamma

template<class LoResT = int8u, class HiResT = int8u, unsigned GammaShift = 8, unsigned HiResShift = 8>
double agg::gamma_lut< LoResT, HiResT, GammaShift, HiResShift >::m_gamma
private

◆ m_inv_gamma

template<class LoResT = int8u, class HiResT = int8u, unsigned GammaShift = 8, unsigned HiResShift = 8>
LoResT* agg::gamma_lut< LoResT, HiResT, GammaShift, HiResShift >::m_inv_gamma
private

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