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

#include <kis_fixed_paint_device.h>

+ Inheritance diagram for KisFixedPaintDevice:

Public Member Functions

int allocatedPixels () const
 
QRect bounds () const
 
void clear (const QRect &rc)
 
const KoColorSpacecolorSpace () const
 
const quint8 * constData () const
 
virtual void convertFromQImage (const QImage &image, const QString &srcProfileName)
 
void convertTo (const KoColorSpace *dstColorSpace=0, KoColorConversionTransformation::Intent renderingIntent=KoColorConversionTransformation::internalRenderingIntent(), KoColorConversionTransformation::ConversionFlags conversionFlags=KoColorConversionTransformation::internalConversionFlags())
 
virtual QImage convertToQImage (const KoColorProfile *dstProfile, KoColorConversionTransformation::Intent renderingIntent=KoColorConversionTransformation::internalRenderingIntent(), KoColorConversionTransformation::ConversionFlags conversionFlags=KoColorConversionTransformation::internalConversionFlags()) const
 
virtual QImage convertToQImage (const KoColorProfile *dstProfile, qint32 x, qint32 y, qint32 w, qint32 h, KoColorConversionTransformation::Intent renderingIntent=KoColorConversionTransformation::internalRenderingIntent(), KoColorConversionTransformation::ConversionFlags conversionFlags=KoColorConversionTransformation::internalConversionFlags()) const
 
quint8 * data ()
 
quint8 * data () const
 
void fill (const QRect &rc, const KoColor &color)
 
void fill (qint32 x, qint32 y, qint32 w, qint32 h, const quint8 *fillPixel)
 
bool initialize (quint8 defaultValue=0)
 
 KisFixedPaintDevice (const KisFixedPaintDevice &rhs)
 
 KisFixedPaintDevice (const KoColorSpace *colorSpace, KisOptimizedByteArray::MemoryAllocatorSP allocator=KisOptimizedByteArray::MemoryAllocatorSP())
 
void lazyGrowBufferWithoutInitialization ()
 
void mirror (bool horizontal, bool vertical)
 
KisFixedPaintDeviceoperator= (const KisFixedPaintDevice &rhs)
 
quint32 pixelSize () const
 
void readBytes (quint8 *dstData, qint32 x, qint32 y, qint32 w, qint32 h) const
 
void reallocateBufferWithoutInitialization ()
 
void setColorSpace (const KoColorSpace *cs)
 
void setProfile (const KoColorProfile *profile)
 
void setRect (const QRect &rc)
 
virtual ~KisFixedPaintDevice ()
 
- Public Member Functions inherited from KisShared
bool deref ()
 
bool ref ()
 
int refCount ()
 
QAtomicInt * sharedWeakReference ()
 

Private Attributes

QRect m_bounds
 
const KoColorSpacem_colorSpace
 
KisOptimizedByteArray m_data
 

Additional Inherited Members

- Protected Member Functions inherited from KisShared
 KisShared ()
 
 ~KisShared ()
 

Detailed Description

A fixed paint device is a simple paint device that consists of an array of bytes and a rectangle. It cannot grow, it cannot shrink, all you can do is fill the paint device with the right bytes and use it as an argument to KisPainter or use the bytes as an argument to KoColorSpace functions.

Definition at line 27 of file kis_fixed_paint_device.h.

Constructor & Destructor Documentation

◆ KisFixedPaintDevice() [1/2]

KisFixedPaintDevice::KisFixedPaintDevice ( const KoColorSpace * colorSpace,
KisOptimizedByteArray::MemoryAllocatorSP allocator = KisOptimizedByteArray::MemoryAllocatorSP() )

Definition at line 14 of file kis_fixed_paint_device.cpp.

16 m_data(allocator)
17{
18}
const KoColorSpace * m_colorSpace
KisOptimizedByteArray m_data
const KoColorSpace * colorSpace() const

◆ ~KisFixedPaintDevice()

KisFixedPaintDevice::~KisFixedPaintDevice ( )
virtual

Definition at line 20 of file kis_fixed_paint_device.cpp.

21{
22}

◆ KisFixedPaintDevice() [2/2]

KisFixedPaintDevice::KisFixedPaintDevice ( const KisFixedPaintDevice & rhs)

Deep copy the fixed paint device, including the data.

Definition at line 24 of file kis_fixed_paint_device.cpp.

References m_bounds, m_colorSpace, and m_data.

Member Function Documentation

◆ allocatedPixels()

int KisFixedPaintDevice::allocatedPixels ( ) const
Returns
the amount of allocated pixels (you can fake the size with setRect/bounds) It is useful to know the accumulated memory size in pixels (not in bytes) for optimizations to avoid re-allocation.

Definition at line 65 of file kis_fixed_paint_device.cpp.

66{
67 return m_data.size() / m_colorSpace->pixelSize();
68}
virtual quint32 pixelSize() const =0

References m_colorSpace, m_data, KoColorSpace::pixelSize(), and KisOptimizedByteArray::size().

◆ bounds()

QRect KisFixedPaintDevice::bounds ( ) const
Returns
the rect that the data represents

Definition at line 59 of file kis_fixed_paint_device.cpp.

60{
61 return m_bounds;
62}

References m_bounds.

◆ clear()

void KisFixedPaintDevice::clear ( const QRect & rc)

Clear the given rectangle to transparent black.

XXX: this will not (yet) expand the paint device to contain the specified rect but if the paintdevice has not been initialized, it will be.

Definition at line 227 of file kis_fixed_paint_device.cpp.

228{
229 KoColor c(Qt::black, m_colorSpace);
230 quint8* black = new quint8[pixelSize()];
231 memcpy(black, c.data(), m_colorSpace->pixelSize());
233 fill(rc.x(), rc.y(), rc.width(), rc.height(), black);
234 delete[] black;
235}
const quint8 OPACITY_TRANSPARENT_U8
void fill(qint32 x, qint32 y, qint32 w, qint32 h, const quint8 *fillPixel)
virtual void setOpacity(quint8 *pixels, quint8 alpha, qint32 nPixels) const =0

References KoColor::data(), fill(), m_colorSpace, OPACITY_TRANSPARENT_U8, pixelSize(), KoColorSpace::pixelSize(), and KoColorSpace::setOpacity().

◆ colorSpace()

const KoColorSpace * KisFixedPaintDevice::colorSpace ( ) const
inline

Definition at line 79 of file kis_fixed_paint_device.h.

79 {
80 return m_colorSpace;
81 }

◆ constData()

const quint8 * KisFixedPaintDevice::constData ( ) const

Definition at line 106 of file kis_fixed_paint_device.cpp.

107{
108 return (const quint8*) m_data.constData();
109}
const quint8 * constData() const

References KisOptimizedByteArray::constData(), and m_data.

◆ convertFromQImage()

void KisFixedPaintDevice::convertFromQImage ( const QImage & image,
const QString & srcProfileName )
virtual

Fill this paint device with the data from image

Parameters
imagethe image
srcProfileNamename of the RGB profile to interpret the image as. 0 is interpreted as sRGB

Definition at line 154 of file kis_fixed_paint_device.cpp.

155{
156 QImage image = _image;
157
158 if (image.format() != QImage::Format_ARGB32) {
159 image.convertTo(QImage::Format_ARGB32);
160 }
161 setRect(image.rect());
163
164 // Don't convert if not no profile is given and both paint dev and qimage are rgba.
165 if (srcProfileName.isEmpty() && colorSpace()->id() == "RGBA") {
166 memcpy(data(), image.constBits(), image.sizeInBytes());
167 } else {
170 ->convertPixelsTo(image.constBits(), data(), colorSpace(), image.width() * image.height(),
173 }
174}
const KoID Integer8BitsColorDepthID("U8", ki18n("8-bit integer/channel"))
const KoID RGBAColorModelID("RGBA", ki18n("RGB/Alpha"))
void setRect(const QRect &rc)
virtual bool convertPixelsTo(const quint8 *src, quint8 *dst, const KoColorSpace *dstColorSpace, quint32 numPixels, KoColorConversionTransformation::Intent renderingIntent, KoColorConversionTransformation::ConversionFlags conversionFlags) const
QString id() const
Definition KoID.cpp:63
const KoColorSpace * colorSpace(const QString &colorModelId, const QString &colorDepthId, const KoColorProfile *profile)
static KoColorSpaceRegistry * instance()

References colorSpace(), KoColorSpaceRegistry::colorSpace(), KoColorSpace::convertPixelsTo(), data(), KoID::id(), KoColorSpaceRegistry::instance(), Integer8BitsColorDepthID, KoColorConversionTransformation::internalConversionFlags(), KoColorConversionTransformation::internalRenderingIntent(), lazyGrowBufferWithoutInitialization(), RGBAColorModelID, and setRect().

◆ convertTo()

void KisFixedPaintDevice::convertTo ( const KoColorSpace * dstColorSpace = 0,
KoColorConversionTransformation::Intent renderingIntent = KoColorConversionTransformation::internalRenderingIntent(),
KoColorConversionTransformation::ConversionFlags conversionFlags = KoColorConversionTransformation::internalConversionFlags() )

Converts the paint device to a different colorspace

Definition at line 116 of file kis_fixed_paint_device.cpp.

119{
120 if (*m_colorSpace == *dstColorSpace) {
121 return;
122 }
123 quint32 size = m_bounds.width() * m_bounds.height();
125
126 // make sure that we are not initializing the destination pixels!
127 dstData.resize(size * dstColorSpace->pixelSize());
128
129 m_colorSpace->convertPixelsTo(constData(), (quint8*)dstData.data(),
130 dstColorSpace,
131 size,
132 renderingIntent,
133 conversionFlags);
134
135 m_colorSpace = dstColorSpace;
136 m_data = dstData;
137}
const quint8 * constData() const
MemoryAllocatorSP customMemoryAllocator() const
int size(const Forest< T > &forest)
Definition KisForest.h:1232

References constData(), KoColorSpace::convertPixelsTo(), KisOptimizedByteArray::customMemoryAllocator(), KisOptimizedByteArray::data(), m_bounds, m_colorSpace, m_data, KoColorSpace::pixelSize(), and KisOptimizedByteArray::resize().

◆ convertToQImage() [1/2]

QImage KisFixedPaintDevice::convertToQImage ( const KoColorProfile * dstProfile,
KoColorConversionTransformation::Intent renderingIntent = KoColorConversionTransformation::internalRenderingIntent(),
KoColorConversionTransformation::ConversionFlags conversionFlags = KoColorConversionTransformation::internalConversionFlags() ) const
virtual

Create an RGBA QImage from a rectangle in the paint device. The rectangle is defined by the parent image's bounds.

Parameters
dstProfileRGB profile to use in conversion. May be 0, in which case it's up to the color strategy to choose a profile (most like sRGB).
renderingIntentThe rendering intent of conversion.
conversionFlagsThe conversion flags.

Definition at line 176 of file kis_fixed_paint_device.cpp.

177{
178 qint32 x1;
179 qint32 y1;
180 qint32 w;
181 qint32 h;
182
183 x1 = m_bounds.x();
184 y1 = m_bounds.y();
185 w = m_bounds.width();
186 h = m_bounds.height();
187
188 return convertToQImage(dstProfile, x1, y1, w, h, intent, conversionFlags);
189}
virtual QImage convertToQImage(const KoColorProfile *dstProfile, qint32 x, qint32 y, qint32 w, qint32 h, KoColorConversionTransformation::Intent renderingIntent=KoColorConversionTransformation::internalRenderingIntent(), KoColorConversionTransformation::ConversionFlags conversionFlags=KoColorConversionTransformation::internalConversionFlags()) const

References convertToQImage(), and m_bounds.

◆ convertToQImage() [2/2]

QImage KisFixedPaintDevice::convertToQImage ( const KoColorProfile * dstProfile,
qint32 x,
qint32 y,
qint32 w,
qint32 h,
KoColorConversionTransformation::Intent renderingIntent = KoColorConversionTransformation::internalRenderingIntent(),
KoColorConversionTransformation::ConversionFlags conversionFlags = KoColorConversionTransformation::internalConversionFlags() ) const
virtual

Create an RGBA QImage from a rectangle in the paint device.

Parameters
dstProfileRGB profile to use in conversion. May be 0, in which case it's up to the color strategy to choose a profile (most like sRGB).
xLeft coordinate of the rectangle
yTop coordinate of the rectangle
wWidth of the rectangle in pixels
hHeight of the rectangle in pixels
renderingIntentRendering intent
conversionFlagsConversion flags

Definition at line 191 of file kis_fixed_paint_device.cpp.

192{
193 Q_ASSERT( m_bounds.contains(QRect(x1,y1,w,h)) );
194
195 if (w < 0)
196 return QImage();
197
198 if (h < 0)
199 return QImage();
200
201 if (QRect(x1, y1, w, h) == m_bounds) {
202 return colorSpace()->convertToQImage(constData(), w, h, dstProfile,
203 intent, conversionFlags);
204 } else {
205 try {
206 // XXX: fill the image row by row!
207 const int pSize = pixelSize();
208 const int deviceWidth = m_bounds.width();
209 quint8* newData = new quint8[w * h * pSize];
210 const quint8* srcPtr = constData() + x1 * pSize + y1 * deviceWidth * pSize;
211 quint8* dstPtr = newData;
212 // copy the right area out of the paint device into data
213 for (int row = 0; row < h; row++) {
214 memcpy(dstPtr, srcPtr, w * pSize);
215 srcPtr += deviceWidth * pSize;
216 dstPtr += w * pSize;
217 }
218 QImage image = colorSpace()->convertToQImage(newData, w, h, dstProfile, intent, conversionFlags);
219 return image;
220 }
221 catch(const std::bad_alloc&) {
222 return QImage();
223 }
224 }
225}
virtual QImage convertToQImage(const quint8 *data, qint32 width, qint32 height, const KoColorProfile *dstProfile, KoColorConversionTransformation::Intent renderingIntent, KoColorConversionTransformation::ConversionFlags conversionFlags) const

References colorSpace(), constData(), KoColorSpace::convertToQImage(), m_bounds, and pixelSize().

◆ data() [1/2]

quint8 * KisFixedPaintDevice::data ( )
Returns
a pointer to the beginning of the data associated with this fixed paint device.

Definition at line 101 of file kis_fixed_paint_device.cpp.

102{
103 return (quint8*) m_data.data();
104}

References KisOptimizedByteArray::data(), and m_data.

◆ data() [2/2]

quint8 * KisFixedPaintDevice::data ( ) const

Definition at line 111 of file kis_fixed_paint_device.cpp.

112{
113 return const_cast<quint8*>(m_data.constData());
114}

References KisOptimizedByteArray::constData(), and m_data.

◆ fill() [1/2]

void KisFixedPaintDevice::fill ( const QRect & rc,
const KoColor & color )

Definition at line 237 of file kis_fixed_paint_device.cpp.

238{
239 KoColor realColor(color);
240 realColor.convertTo(colorSpace());
241 fill(rc.x(), rc.y(), rc.width(), rc.height(), realColor.data());
242}

References colorSpace(), KoColor::convertTo(), KoColor::data(), and fill().

◆ fill() [2/2]

void KisFixedPaintDevice::fill ( qint32 x,
qint32 y,
qint32 w,
qint32 h,
const quint8 * fillPixel )

Fill the given rectangle with the given pixel. This does not take the selection into account.

XXX: this will not (yet) expand the paint device to contain the specified rect but if the paintdevice has not been initialized, it will be.

Definition at line 244 of file kis_fixed_paint_device.cpp.

245{
246 if (m_data.isEmpty() || m_bounds.isEmpty()) {
247 setRect(QRect(x, y, w, h));
249 }
250
251 QRect rc(x, y, w, h);
252 if (!m_bounds.contains(rc)) {
253 rc = m_bounds;
254 }
255
256 quint8 pixelSize = m_colorSpace->pixelSize();
257 quint8* dabPointer = data();
258
259 if (rc.contains(m_bounds)) {
260 for (int i = 0; i < w * h ; ++i) {
261 memcpy(dabPointer, fillPixel, pixelSize);
262 dabPointer += pixelSize;
263 }
264
265 } else {
266 int deviceWidth = bounds().width();
267 quint8* rowPointer = dabPointer + ((y - bounds().y()) * deviceWidth + (x - bounds().x())) * pixelSize;
268 for (int row = 0; row < h; row++) {
269 for (int col = 0; col < w; col++) {
270 memcpy(rowPointer + col * pixelSize , fillPixel, pixelSize);
271 }
272 rowPointer += deviceWidth * pixelSize;
273 }
274 }
275}

References bounds(), data(), KisOptimizedByteArray::isEmpty(), m_bounds, m_colorSpace, m_data, pixelSize(), KoColorSpace::pixelSize(), reallocateBufferWithoutInitialization(), and setRect().

◆ initialize()

bool KisFixedPaintDevice::initialize ( quint8 defaultValue = 0)

initializes the paint device.

Parameters
defaultValuethe default byte with which all pixels will be filled.
Returns
false if the allocation failed.

Definition at line 76 of file kis_fixed_paint_device.cpp.

77{
78 m_data.fill(defaultValue, m_bounds.height() * m_bounds.width() * pixelSize());
79
80 return true;
81}
void fill(quint8 value, int size=-1)

References KisOptimizedByteArray::fill(), m_bounds, m_data, and pixelSize().

◆ lazyGrowBufferWithoutInitialization()

void KisFixedPaintDevice::lazyGrowBufferWithoutInitialization ( )

If the size of the internal buffer is smaller than the one needed to accommodate bounds(), resize the buffer. Otherwise, do nothing. The allocated data is neither copying or initialized!

Definition at line 92 of file kis_fixed_paint_device.cpp.

93{
94 const int referenceSize = m_bounds.height() * m_bounds.width() * pixelSize();
95
96 if (m_data.size() < referenceSize) {
97 m_data.resize(referenceSize);
98 }
99}

References m_bounds, m_data, pixelSize(), KisOptimizedByteArray::resize(), and KisOptimizedByteArray::size().

◆ mirror()

void KisFixedPaintDevice::mirror ( bool horizontal,
bool vertical )

Mirrors the device.

Definition at line 305 of file kis_fixed_paint_device.cpp.

306{
307 if (!horizontal && !vertical){
308 return;
309 }
310
312 int w = m_bounds.width();
313 int h = m_bounds.height();
314
315 if (horizontal){
316 int rowSize = pixelSize * w;
317
318 quint8 * dabPointer = data();
319 quint8 * row = new quint8[ rowSize ];
320 quint8 * mirror = 0;
321
322 for (int y = 0; y < h ; y++){
323 // TODO: implement better flipping of the data
324
325 memcpy(row, dabPointer, rowSize);
326 mirror = row;
327 mirror += (w-1) * pixelSize;
328 for (int x = 0; x < w; x++){
329 memcpy(dabPointer,mirror,pixelSize);
330 dabPointer += pixelSize;
331 mirror -= pixelSize;
332 }
333 }
334
335 delete [] row;
336 }
337
338 if (vertical){
339 int rowsToMove = h / 2;
340 int rowSize = pixelSize * w;
341
342 quint8 * startRow = data();
343 quint8 * endRow = data() + (h-1) * w * pixelSize;
344 quint8 * row = new quint8[ rowSize ];
345
346 for (int y = 0; y < rowsToMove; y++){
347 memcpy(row, startRow, rowSize);
348 memcpy(startRow, endRow, rowSize);
349 memcpy(endRow, row, rowSize);
350
351 startRow += rowSize;
352 endRow -= rowSize;
353 }
354
355 delete [] row;
356 }
357
358}
void mirror(bool horizontal, bool vertical)

References data(), m_bounds, m_colorSpace, mirror(), pixelSize(), and KoColorSpace::pixelSize().

◆ operator=()

KisFixedPaintDevice & KisFixedPaintDevice::operator= ( const KisFixedPaintDevice & rhs)

Deep copy the fixed paint device, including the data.

Definition at line 32 of file kis_fixed_paint_device.cpp.

33{
34 m_bounds = rhs.m_bounds;
36
37
38 const int referenceSize = m_bounds.height() * m_bounds.width() * pixelSize();
39
40 if (m_data.size() >= referenceSize) {
41 memcpy(m_data.data(), rhs.m_data.constData(), referenceSize);
42 } else {
43 m_data = rhs.m_data;
44 }
45
46 return *this;
47}

References KisOptimizedByteArray::constData(), KisOptimizedByteArray::data(), m_bounds, m_colorSpace, m_data, pixelSize(), and KisOptimizedByteArray::size().

◆ pixelSize()

quint32 KisFixedPaintDevice::pixelSize ( ) const
Returns
the pixelSize associated with this fixed paint device.

Definition at line 71 of file kis_fixed_paint_device.cpp.

72{
73 return m_colorSpace->pixelSize();
74}

References m_colorSpace, and KoColorSpace::pixelSize().

◆ readBytes()

void KisFixedPaintDevice::readBytes ( quint8 * dstData,
qint32 x,
qint32 y,
qint32 w,
qint32 h ) const

Read the bytes representing the rectangle described by x, y, w, h into data. If data is not big enough, Krita will gladly overwrite the rest of your precious memory.

Since this is a copy, you need to make sure you have enough memory.

The reading is done only if the rectangular area x,y,w,h is inside the bounds of the device and the device is not empty

Definition at line 278 of file kis_fixed_paint_device.cpp.

279{
280 if (m_data.isEmpty() || m_bounds.isEmpty()) {
281 return;
282 }
283
284 QRect rc(x, y, w, h);
285 if (!m_bounds.contains(rc)){
286 return;
287 }
288
289 const int pixelSize = m_colorSpace->pixelSize();
290 const quint8* dabPointer = constData();
291
292 if (rc == m_bounds) {
293 memcpy(dstData, dabPointer, pixelSize * w * h);
294 } else {
295 int deviceWidth = m_bounds.width();
296 const quint8* rowPointer = dabPointer + ((y - bounds().y()) * deviceWidth + (x - bounds().x())) * pixelSize;
297 for (int row = 0; row < h; row++) {
298 memcpy(dstData, rowPointer, w * pixelSize);
299 rowPointer += deviceWidth * pixelSize;
300 dstData += w * pixelSize;
301 }
302 }
303}

References bounds(), constData(), KisOptimizedByteArray::isEmpty(), m_bounds, m_colorSpace, m_data, pixelSize(), and KoColorSpace::pixelSize().

◆ reallocateBufferWithoutInitialization()

void KisFixedPaintDevice::reallocateBufferWithoutInitialization ( )

Changed the size of the internal buffer to accommodate the exact number of bytes needed to store area bounds(). The allocated data is not initialized!

Definition at line 83 of file kis_fixed_paint_device.cpp.

84{
85 const int referenceSize = m_bounds.height() * m_bounds.width() * pixelSize();
86
87 if (referenceSize != m_data.size()) {
88 m_data.resize(m_bounds.height() * m_bounds.width() * pixelSize());
89 }
90}

References m_bounds, m_data, pixelSize(), KisOptimizedByteArray::resize(), and KisOptimizedByteArray::size().

◆ setColorSpace()

void KisFixedPaintDevice::setColorSpace ( const KoColorSpace * cs)

setColorSpace reassigns the color space of the paint device without converting or reallocating the buffer. One needs to update the buffer manually after that.

Definition at line 54 of file kis_fixed_paint_device.cpp.

55{
56 m_colorSpace = cs;
57}

References m_colorSpace.

◆ setProfile()

void KisFixedPaintDevice::setProfile ( const KoColorProfile * profile)

Set color profile for the device without converting actual pixel data

Definition at line 139 of file kis_fixed_paint_device.cpp.

140{
142
143 const KoColorSpace *dstColorSpace =
145 colorSpace()->colorModelId().id(),
146 colorSpace()->colorDepthId().id(),
147 profile);
148
149 KIS_SAFE_ASSERT_RECOVER_RETURN(dstColorSpace);
150
151 m_colorSpace = dstColorSpace;
152}
#define KIS_SAFE_ASSERT_RECOVER_RETURN(cond)
Definition kis_assert.h:128

References colorSpace(), KoColorSpaceRegistry::colorSpace(), KoColorSpaceRegistry::instance(), KIS_SAFE_ASSERT_RECOVER_RETURN, and m_colorSpace.

◆ setRect()

void KisFixedPaintDevice::setRect ( const QRect & rc)

setRect sets the rect of the fixed paint device to rect. This will not create the associated data area.

Parameters
rcthe bounds in pixels. The x,y of the rect represent the origin of the fixed paint device.

Definition at line 49 of file kis_fixed_paint_device.cpp.

50{
51 m_bounds = rc;
52}

References m_bounds.

Member Data Documentation

◆ m_bounds

QRect KisFixedPaintDevice::m_bounds
private

Definition at line 204 of file kis_fixed_paint_device.h.

◆ m_colorSpace

const KoColorSpace* KisFixedPaintDevice::m_colorSpace
private

Definition at line 203 of file kis_fixed_paint_device.h.

◆ m_data

KisOptimizedByteArray KisFixedPaintDevice::m_data
private

Definition at line 205 of file kis_fixed_paint_device.h.


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