Krita Source Code Documentation
Loading...
Searching...
No Matches
VBox Class Reference

Public Member Functions

unsigned char axisSize (ColorAxis axis) const
 
ColorAxis biggestAxis () const
 
VBox divide ()
 
QRgb mean () const
 
int population () const
 
 VBox (QList< Color > colorList)
 
 VBox (QList< QRgb > rgbList)
 

Private Member Functions

unsigned char divPos (ColorAxis axis) const
 

Private Attributes

QList< Colorm_colors
 

Detailed Description

Definition at line 33 of file kis_common_colors_recalculation_runner.cpp.

Constructor & Destructor Documentation

◆ VBox() [1/2]

VBox::VBox ( QList< QRgb > rgbList)
inline

Definition at line 37 of file kis_common_colors_recalculation_runner.cpp.

38 {
39 QList<Color> colorList;
40 for(int i=0; i<rgbList.size(); i++) {
41 colorList.append(Color(rgbList.at(i)));
42 }
43 m_colors = colorList;
44 }

References m_colors.

◆ VBox() [2/2]

VBox::VBox ( QList< Color > colorList)
inline

Definition at line 46 of file kis_common_colors_recalculation_runner.cpp.

46: m_colors(colorList) {}

Member Function Documentation

◆ axisSize()

unsigned char VBox::axisSize ( ColorAxis axis) const
inline

Definition at line 84 of file kis_common_colors_recalculation_runner.cpp.

85 {
86 unsigned char valMin = 255;
87 unsigned char valMax = 0;
88 for(int i=0; i<m_colors.size(); i++) {
89 if(m_colors.at(i)[axis]>valMax)
90 valMax=m_colors.at(i)[axis];
91 if(m_colors.at(i)[axis]<valMin)
92 valMin=m_colors.at(i)[axis];
93 }
94 return valMax-valMin;
95 }

References m_colors.

◆ biggestAxis()

ColorAxis VBox::biggestAxis ( ) const
inline

Definition at line 97 of file kis_common_colors_recalculation_runner.cpp.

98 {
99 unsigned char sR = axisSize(RedAxis);
100 unsigned char sG = axisSize(GreenAxis);
101 unsigned char sB = axisSize(BlueAxis);
102 if(sR>sG && sR>sB) return RedAxis;
103 if(sG>sR && sG>sB) return GreenAxis;
104 return BlueAxis;
105 }
unsigned char axisSize(ColorAxis axis) const

References axisSize(), BlueAxis, GreenAxis, and RedAxis.

◆ divide()

VBox VBox::divide ( )
inline

Definition at line 50 of file kis_common_colors_recalculation_runner.cpp.

51 {
52 ColorAxis axis = biggestAxis();
53 Q_ASSERT(axisSize(axis)>=3);
54
55 unsigned char divpos = divPos(axis);
56 QList<Color> newVBoxColors;
57 for(int i=m_colors.size()-1; i>=0; i--) {
58 Color c = m_colors.at(i);
59 if(c[axis]>divpos) {
60 m_colors.removeAt(i);
61 newVBoxColors.append(c);
62 }
63 }
64
65 return VBox(newVBoxColors);
66 }
VBox(QList< QRgb > rgbList)
unsigned char divPos(ColorAxis axis) const

References axisSize(), biggestAxis(), divPos(), m_colors, and VBox().

◆ divPos()

unsigned char VBox::divPos ( ColorAxis axis) const
inlineprivate

Definition at line 117 of file kis_common_colors_recalculation_runner.cpp.

118 {
119 short min=m_colors.at(0)[axis];
120 short max=m_colors.at(0)[axis];
121 for(int i=0;i<m_colors.size(); i++) {
122 if(min>m_colors.at(i)[axis]) min=m_colors.at(i)[axis];
123 if(max<m_colors.at(i)[axis]) max=m_colors.at(i)[axis];
124 }
125
126 return (min+max)/2;
127 }
T min(T a, T b, T c)
constexpr std::enable_if< sizeof...(values)==0, size_t >::type max()

References m_colors.

◆ mean()

QRgb VBox::mean ( ) const
inline

Definition at line 68 of file kis_common_colors_recalculation_runner.cpp.

69 {
70 int r=0;
71 int g=0;
72 int b=0;
73 for(int i=0;i<m_colors.size(); i++) {
74 r+=(int) m_colors.at(i)[RedAxis];
75 g+=(int) m_colors.at(i)[GreenAxis];
76 b+=(int) m_colors.at(i)[BlueAxis];
77 }
78 int size = m_colors.size();
79 Q_ASSERT(size>0);
80
81 return qRgb(r/size, g/size, b/size);
82 }
int size(const Forest< T > &forest)
Definition KisForest.h:1232

References BlueAxis, GreenAxis, m_colors, and RedAxis.

◆ population()

int VBox::population ( ) const
inline

Definition at line 48 of file kis_common_colors_recalculation_runner.cpp.

48{ return m_colors.size(); }

References m_colors.

Member Data Documentation

◆ m_colors

QList<Color> VBox::m_colors
private

Definition at line 35 of file kis_common_colors_recalculation_runner.cpp.


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