Krita Source Code Documentation
Loading...
Searching...
No Matches
KisSelectionFilter Class Referenceabstract

#include <kis_selection_filters.h>

+ Inheritance diagram for KisSelectionFilter:

Public Member Functions

virtual QRect changeRect (const QRect &rect, KisDefaultBoundsBaseSP defaultBounds)
 
virtual KUndo2MagicString name ()
 
virtual void process (KisPixelSelectionSP pixelSelection, const QRect &rect)=0
 
virtual ~KisSelectionFilter ()
 

Protected Member Functions

void computeBorder (qint32 *circ, qint32 xradius, qint32 yradius)
 
void computeTransition (quint8 *transition, quint8 **buf, qint32 width)
 
void rotatePointers (quint8 **p, quint32 n)
 

Detailed Description

Definition at line 21 of file kis_selection_filters.h.

Constructor & Destructor Documentation

◆ ~KisSelectionFilter()

KisSelectionFilter::~KisSelectionFilter ( )
virtual

Definition at line 24 of file kis_selection_filters.cpp.

25{
26}

Member Function Documentation

◆ changeRect()

QRect KisSelectionFilter::changeRect ( const QRect & rect,
KisDefaultBoundsBaseSP defaultBounds )
virtual

◆ computeBorder()

void KisSelectionFilter::computeBorder ( qint32 * circ,
qint32 xradius,
qint32 yradius )
protected

Definition at line 39 of file kis_selection_filters.cpp.

40{
41 qint32 i;
42 qint32 diameter = xradius * 2 + 1;
43 double tmp;
44
45 for (i = 0; i < diameter; i++) {
46 if (i > xradius)
47 tmp = (i - xradius) - 0.5;
48 else if (i < xradius)
49 tmp = (xradius - i) - 0.5;
50 else
51 tmp = 0.0;
52
53 double divisor = (double) xradius;
54 if (divisor == 0.0) {
55 divisor = 1.0;
56 }
57 circ[i] = (qint32) RINT(yradius * sqrt(xradius * xradius - tmp * tmp) / divisor);
58 }
59}
#define RINT(x)

References RINT.

◆ computeTransition()

void KisSelectionFilter::computeTransition ( quint8 * transition,
quint8 ** buf,
qint32 width )
protected

Definition at line 71 of file kis_selection_filters.cpp.

72{
73 qint32 x = 0;
74
75 if (width == 1) {
76 if (buf[1][x] > 127 && (buf[0][x] < 128 || buf[2][x] < 128))
77 transition[x] = 255;
78 else
79 transition[x] = 0;
80 return;
81 }
82 if (buf[1][x] > 127) {
83 if (buf[0][x] < 128 || buf[0][x + 1] < 128 ||
84 buf[1][x + 1] < 128 ||
85 buf[2][x] < 128 || buf[2][x + 1] < 128)
86 transition[x] = 255;
87 else
88 transition[x] = 0;
89 } else
90 transition[x] = 0;
91 for (qint32 x = 1; x < width - 1; x++) {
92 if (buf[1][x] >= 128) {
93 if (buf[0][x - 1] < 128 || buf[0][x] < 128 || buf[0][x + 1] < 128 ||
94 buf[1][x - 1] < 128 || buf[1][x + 1] < 128 ||
95 buf[2][x - 1] < 128 || buf[2][x] < 128 || buf[2][x + 1] < 128)
96 transition[x] = 255;
97 else
98 transition[x] = 0;
99 } else
100 transition[x] = 0;
101 }
102 if (buf[1][x] >= 128) {
103 if (buf[0][x - 1] < 128 || buf[0][x] < 128 ||
104 buf[1][x - 1] < 128 ||
105 buf[2][x - 1] < 128 || buf[2][x] < 128)
106 transition[x] = 255;
107 else
108 transition[x] = 0;
109 } else
110 transition[x] = 0;
111}

◆ name()

◆ process()

◆ rotatePointers()

void KisSelectionFilter::rotatePointers ( quint8 ** p,
quint32 n )
protected

Definition at line 61 of file kis_selection_filters.cpp.

62{
63 quint32 i;
64 quint8 *p0 = p[0];
65 for (i = 0; i < n - 1; i++) {
66 p[i] = p[i + 1];
67 }
68 p[i] = p0;
69}
const Params2D p
QPointF p0

References p, and p0.


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