Krita Source Code Documentation
Loading...
Searching...
No Matches
BaseLut< _FunctionT_, _OutputT_, _InputT_, _LutKeyT_ > Class Template Reference

#include <lut.h>

Public Member Functions

 BaseLut (_LutKeyT_ key, _FunctionT_ function=_FunctionT_())
 
_OutputT_ operator() (_InputT_ i) const
 
 ~BaseLut ()
 

Private Member Functions

void init ()
 

Private Attributes

_FunctionT_ m_function
 
_LutKeyT_ m_key
 
_OutputT_ * m_table
 

Detailed Description

template<typename _FunctionT_, typename _OutputT_, typename _InputT_, typename _LutKeyT_>
class BaseLut< _FunctionT_, _OutputT_, _InputT_, _LutKeyT_ >

Provide an implementation for a look-up table for a function. Do not use directly, instead use Lut when you are not interested in having the full look-up table or for floating point, or use FullLut for 8bits and 16bits when you want to have a full Lut.

struct MyFunction {
inline static int compute(int i)
{
return 1-i;
}
}
Definition lut.h:81

Definition at line 32 of file lut.h.

Constructor & Destructor Documentation

◆ BaseLut()

template<typename _FunctionT_ , typename _OutputT_ , typename _InputT_ , typename _LutKeyT_ >
BaseLut< _FunctionT_, _OutputT_, _InputT_, _LutKeyT_ >::BaseLut ( _LutKeyT_ key,
_FunctionT_ function = _FunctionT_() )
inline

Create the lut with the specific key.

Definition at line 50 of file lut.h.

50 : m_key(key), m_function(function)
51 {
52 init();
53 }
_FunctionT_ m_function
Definition lut.h:74
_LutKeyT_ m_key
Definition lut.h:73
void init()
Definition lut.h:37

References BaseLut< _FunctionT_, _OutputT_, _InputT_, _LutKeyT_ >::init().

◆ ~BaseLut()

template<typename _FunctionT_ , typename _OutputT_ , typename _InputT_ , typename _LutKeyT_ >
BaseLut< _FunctionT_, _OutputT_, _InputT_, _LutKeyT_ >::~BaseLut ( )
inline

Definition at line 54 of file lut.h.

54 {
55 // just leak on exit -- we get into trouble for explicitly
56 // deleting stuff from static objects, like registries
57 //delete[] m_table;
58 }

Member Function Documentation

◆ init()

template<typename _FunctionT_ , typename _OutputT_ , typename _InputT_ , typename _LutKeyT_ >
void BaseLut< _FunctionT_, _OutputT_, _InputT_, _LutKeyT_ >::init ( )
inlineprivate

Initialization of the table.

Definition at line 37 of file lut.h.

38 {
39 int size = m_key.size();
40 m_table = new _OutputT_[size];
41 for(int i = 0; i < size; ++i)
42 {
43 m_table[i] = m_function(m_key.keyToInput(i));
44 }
45 }
_OutputT_ * m_table
Definition lut.h:72
int size(const Forest< T > &forest)
Definition KisForest.h:1232

References BaseLut< _FunctionT_, _OutputT_, _InputT_, _LutKeyT_ >::m_function, BaseLut< _FunctionT_, _OutputT_, _InputT_, _LutKeyT_ >::m_key, and BaseLut< _FunctionT_, _OutputT_, _InputT_, _LutKeyT_ >::m_table.

◆ operator()()

template<typename _FunctionT_ , typename _OutputT_ , typename _InputT_ , typename _LutKeyT_ >
_OutputT_ BaseLut< _FunctionT_, _OutputT_, _InputT_, _LutKeyT_ >::operator() ( _InputT_ i) const
inline
Returns
the function value for parameter i

Definition at line 63 of file lut.h.

64 {
65 if(m_key.inrange(i))
66 {
67 return m_table[m_key.inputToKey(i)];
68 }
69 return m_function(i);
70 }

References BaseLut< _FunctionT_, _OutputT_, _InputT_, _LutKeyT_ >::m_function, BaseLut< _FunctionT_, _OutputT_, _InputT_, _LutKeyT_ >::m_key, and BaseLut< _FunctionT_, _OutputT_, _InputT_, _LutKeyT_ >::m_table.

Member Data Documentation

◆ m_function

template<typename _FunctionT_ , typename _OutputT_ , typename _InputT_ , typename _LutKeyT_ >
_FunctionT_ BaseLut< _FunctionT_, _OutputT_, _InputT_, _LutKeyT_ >::m_function
private

Definition at line 74 of file lut.h.

◆ m_key

template<typename _FunctionT_ , typename _OutputT_ , typename _InputT_ , typename _LutKeyT_ >
_LutKeyT_ BaseLut< _FunctionT_, _OutputT_, _InputT_, _LutKeyT_ >::m_key
private

Definition at line 73 of file lut.h.

◆ m_table

template<typename _FunctionT_ , typename _OutputT_ , typename _InputT_ , typename _LutKeyT_ >
_OutputT_* BaseLut< _FunctionT_, _OutputT_, _InputT_, _LutKeyT_ >::m_table
private

Definition at line 72 of file lut.h.


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