Krita Source Code Documentation
Loading...
Searching...
No Matches
KisColorSelectionPolicies::OptimizedColorOrTransparentDifferencePolicy< SrcPixelType > Class Template Reference

#include <KisColorSelectionPolicies.h>

+ Inheritance diagram for KisColorSelectionPolicies::OptimizedColorOrTransparentDifferencePolicy< SrcPixelType >:

Public Member Functions

ALWAYS_INLINE quint8 difference (const quint8 *colorPtr) const
 
 OptimizedColorOrTransparentDifferencePolicy (const KoColor &referenceColor, int threshold)
 
- Public Member Functions inherited from KisColorSelectionPolicies::OptimizedDifferencePolicy< SrcPixelType >
ALWAYS_INLINE quint8 difference (const quint8 *colorPtr) const
 
 OptimizedDifferencePolicy (const KoColor &referenceColor, int threshold)
 
- Public Member Functions inherited from KisColorSelectionPolicies::SlowDifferencePolicy
ALWAYS_INLINE quint8 difference (const quint8 *colorPtr) const
 
 SlowDifferencePolicy (const KoColor &referenceColor, int threshold)
 

Protected Types

using HashKeyType = typename OptimizedDifferencePolicy<SrcPixelType>::HashKeyType
 
using HashType = typename OptimizedDifferencePolicy<SrcPixelType>::HashType
 
- Protected Types inherited from KisColorSelectionPolicies::OptimizedDifferencePolicy< SrcPixelType >
using HashKeyType = SrcPixelType
 
using HashType = QHash<HashKeyType, quint8>
 

Additional Inherited Members

- Protected Attributes inherited from KisColorSelectionPolicies::OptimizedDifferencePolicy< SrcPixelType >
HashType m_differences
 
- Protected Attributes inherited from KisColorSelectionPolicies::SlowDifferencePolicy
const KoColorSpacem_colorSpace
 
KoColor m_referenceColor
 
const bool m_referenceColorIsTransparent
 
const quint8 * m_referenceColorPtr
 
int m_threshold
 

Detailed Description

template<typename SrcPixelType>
class KisColorSelectionPolicies::OptimizedColorOrTransparentDifferencePolicy< SrcPixelType >

Definition at line 112 of file KisColorSelectionPolicies.h.

Member Typedef Documentation

◆ HashKeyType

template<typename SrcPixelType >
using KisColorSelectionPolicies::OptimizedColorOrTransparentDifferencePolicy< SrcPixelType >::HashKeyType = typename OptimizedDifferencePolicy<SrcPixelType>::HashKeyType
protected

Definition at line 140 of file KisColorSelectionPolicies.h.

◆ HashType

template<typename SrcPixelType >
using KisColorSelectionPolicies::OptimizedColorOrTransparentDifferencePolicy< SrcPixelType >::HashType = typename OptimizedDifferencePolicy<SrcPixelType>::HashType
protected

Definition at line 141 of file KisColorSelectionPolicies.h.

Constructor & Destructor Documentation

◆ OptimizedColorOrTransparentDifferencePolicy()

template<typename SrcPixelType >
KisColorSelectionPolicies::OptimizedColorOrTransparentDifferencePolicy< SrcPixelType >::OptimizedColorOrTransparentDifferencePolicy ( const KoColor & referenceColor,
int threshold )
inline

Definition at line 115 of file KisColorSelectionPolicies.h.

116 : OptimizedDifferencePolicy<SrcPixelType>(referenceColor, threshold)
117 {}

Member Function Documentation

◆ difference()

template<typename SrcPixelType >
ALWAYS_INLINE quint8 KisColorSelectionPolicies::OptimizedColorOrTransparentDifferencePolicy< SrcPixelType >::difference ( const quint8 * colorPtr) const
inline

Definition at line 119 of file KisColorSelectionPolicies.h.

120 {
121 HashKeyType key = *reinterpret_cast<const HashKeyType*>(colorPtr);
122
123 quint8 result;
124
125 typename HashType::iterator it = this->m_differences.find(key);
126
127 if (it != this->m_differences.end()) {
128 result = *it;
129 } else {
130 const quint8 colorDifference = this->m_colorSpace->difference(this->m_referenceColorPtr, colorPtr);
131 const quint8 opacityDifference = this->m_colorSpace->opacityU8(colorPtr) * 100 / quint8_MAX;
132 result = qMin(colorDifference, opacityDifference);
133 this->m_differences.insert(key, result);
134 }
135
136 return result;
137 }
typename OptimizedDifferencePolicy< SrcPixelType >::HashKeyType HashKeyType
virtual quint8 difference(const quint8 *src1, const quint8 *src2) const =0
virtual quint8 opacityU8(const quint8 *pixel) const =0
const quint8 quint8_MAX
Definition kis_global.h:24
qreal colorDifference(const QColor &c1, const QColor &c2)

References KoColorSpace::difference(), KisColorSelectionPolicies::SlowDifferencePolicy::m_colorSpace, KisColorSelectionPolicies::OptimizedDifferencePolicy< SrcPixelType >::m_differences, KisColorSelectionPolicies::SlowDifferencePolicy::m_referenceColorPtr, KoColorSpace::opacityU8(), and quint8_MAX.


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