Prusa Slicer 2.6.0
Loading...
Searching...
No Matches
agg::blender_rgb_gamma< ColorT, Order, Gamma > Class Template Reference

#include <src/agg/agg_pixfmt_rgb.h>

+ Inheritance diagram for agg::blender_rgb_gamma< ColorT, Order, Gamma >:
+ Collaboration diagram for agg::blender_rgb_gamma< ColorT, Order, Gamma >:

Public Types

typedef ColorT color_type
 
typedef Order order_type
 
typedef Gamma gamma_type
 
typedef color_type::value_type value_type
 
typedef color_type::calc_type calc_type
 
typedef color_type::long_type long_type
 

Public Member Functions

 blender_rgb_gamma ()
 
void gamma (const gamma_type &g)
 
AGG_INLINE void blend_pix (value_type *p, value_type cr, value_type cg, value_type cb, value_type alpha, cover_type cover)
 
AGG_INLINE void blend_pix (value_type *p, value_type cr, value_type cg, value_type cb, value_type alpha)
 

Static Public Member Functions

static rgba get (value_type r, value_type g, value_type b, value_type a, cover_type cover=cover_full)
 
static rgba get (const value_type *p, cover_type cover=cover_full)
 
static void set (value_type *p, value_type r, value_type g, value_type b, value_type a)
 
static void set (value_type *p, const rgba &c)
 

Private Attributes

const gamma_typem_gamma
 

Detailed Description

template<class ColorT, class Order, class Gamma>
class agg::blender_rgb_gamma< ColorT, Order, Gamma >

Member Typedef Documentation

◆ calc_type

template<class ColorT , class Order , class Gamma >
typedef color_type::calc_type agg::blender_rgb_gamma< ColorT, Order, Gamma >::calc_type

◆ color_type

template<class ColorT , class Order , class Gamma >
typedef ColorT agg::blender_rgb_gamma< ColorT, Order, Gamma >::color_type

◆ gamma_type

template<class ColorT , class Order , class Gamma >
typedef Gamma agg::blender_rgb_gamma< ColorT, Order, Gamma >::gamma_type

◆ long_type

template<class ColorT , class Order , class Gamma >
typedef color_type::long_type agg::blender_rgb_gamma< ColorT, Order, Gamma >::long_type

◆ order_type

template<class ColorT , class Order , class Gamma >
typedef Order agg::blender_rgb_gamma< ColorT, Order, Gamma >::order_type

◆ value_type

template<class ColorT , class Order , class Gamma >
typedef color_type::value_type agg::blender_rgb_gamma< ColorT, Order, Gamma >::value_type

Constructor & Destructor Documentation

◆ blender_rgb_gamma()

template<class ColorT , class Order , class Gamma >
agg::blender_rgb_gamma< ColorT, Order, Gamma >::blender_rgb_gamma ( )
inline
153: m_gamma(0) {}
const gamma_type * m_gamma
Definition agg_pixfmt_rgb.h:176

Member Function Documentation

◆ blend_pix() [1/2]

template<class ColorT , class Order , class Gamma >
AGG_INLINE void agg::blender_rgb_gamma< ColorT, Order, Gamma >::blend_pix ( value_type p,
value_type  cr,
value_type  cg,
value_type  cb,
value_type  alpha 
)
inline
166 {
167 calc_type r = m_gamma->dir(p[Order::R]);
168 calc_type g = m_gamma->dir(p[Order::G]);
169 calc_type b = m_gamma->dir(p[Order::B]);
170 p[Order::R] = m_gamma->inv(color_type::downscale((m_gamma->dir(cr) - r) * alpha) + r);
171 p[Order::G] = m_gamma->inv(color_type::downscale((m_gamma->dir(cg) - g) * alpha) + g);
172 p[Order::B] = m_gamma->inv(color_type::downscale((m_gamma->dir(cb) - b) * alpha) + b);
173 }
color_type::calc_type calc_type
Definition agg_pixfmt_rgb.h:149

References agg::blender_rgb_gamma< ColorT, Order, Gamma >::m_gamma.

◆ blend_pix() [2/2]

template<class ColorT , class Order , class Gamma >
AGG_INLINE void agg::blender_rgb_gamma< ColorT, Order, Gamma >::blend_pix ( value_type p,
value_type  cr,
value_type  cg,
value_type  cb,
value_type  alpha,
cover_type  cover 
)
inline
159 {
160 blend_pix(p, cr, cg, cb, color_type::mult_cover(alpha, cover));
161 }
AGG_INLINE void blend_pix(value_type *p, value_type cr, value_type cg, value_type cb, value_type alpha, cover_type cover)
Definition agg_pixfmt_rgb.h:157

References agg::blender_rgb_gamma< ColorT, Order, Gamma >::blend_pix().

Referenced by agg::blender_rgb_gamma< ColorT, Order, Gamma >::blend_pix().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gamma()

template<class ColorT , class Order , class Gamma >
void agg::blender_rgb_gamma< ColorT, Order, Gamma >::gamma ( const gamma_type g)
inline

◆ get() [1/2]

static rgba agg::blender_base< ColorT, Order >::get ( const value_type p,
cover_type  cover = cover_full 
)
inlinestaticinherited
70 {
71 return get(
72 p[order_type::R],
73 p[order_type::G],
74 p[order_type::B],
75 p[order_type::A],
76 cover);
77 }

◆ get() [2/2]

static rgba agg::blender_base< ColorT, Order >::get ( value_type  r,
value_type  g,
value_type  b,
value_type  a,
cover_type  cover = cover_full 
)
inlinestaticinherited
46 {
47 if (cover > cover_none)
48 {
49 rgba c(
50 color_type::to_double(r),
51 color_type::to_double(g),
52 color_type::to_double(b),
53 color_type::to_double(a));
54
55 if (cover < cover_full)
56 {
57 double x = double(cover) / cover_full;
58 c.r *= x;
59 c.g *= x;
60 c.b *= x;
61 c.a *= x;
62 }
63
64 return c;
65 }
66 else return rgba::no_color();
67 }
@ cover_full
Definition agg_basics.h:244
TCoord< P > x(const P &p)
Definition geometry_traits.hpp:297

◆ set() [1/2]

static void agg::blender_base< ColorT, Order >::set ( value_type p,
const rgba c 
)
inlinestaticinherited
88 {
89 p[order_type::R] = color_type::from_double(c.r);
90 p[order_type::G] = color_type::from_double(c.g);
91 p[order_type::B] = color_type::from_double(c.b);
92 p[order_type::A] = color_type::from_double(c.a);
93 }

◆ set() [2/2]

static void agg::blender_base< ColorT, Order >::set ( value_type p,
value_type  r,
value_type  g,
value_type  b,
value_type  a 
)
inlinestaticinherited
80 {
81 p[order_type::R] = r;
82 p[order_type::G] = g;
83 p[order_type::B] = b;
84 p[order_type::A] = a;
85 }

Member Data Documentation

◆ m_gamma

template<class ColorT , class Order , class Gamma >
const gamma_type* agg::blender_rgb_gamma< ColorT, Order, Gamma >::m_gamma
private

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