15 : m_colorSpace(colorSpace),
118 KoColorConversionTransformation::ConversionFlags conversionFlags)
156 QImage image = _image;
158 if (image.format() != QImage::Format_ARGB32) {
159 image.convertTo(QImage::Format_ARGB32);
165 if (srcProfileName.isEmpty() &&
colorSpace()->
id() ==
"RGBA") {
166 memcpy(
data(), image.constBits(), image.sizeInBytes());
188 return convertToQImage(dstProfile, x1, y1, w, h, intent, conversionFlags);
193 Q_ASSERT(
m_bounds.contains(QRect(x1,y1,w,h)) );
201 if (QRect(x1, y1, w, h) ==
m_bounds) {
203 intent, conversionFlags);
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;
213 for (
int row = 0; row < h; row++) {
214 memcpy(dstPtr, srcPtr, w * pSize);
215 srcPtr += deviceWidth * pSize;
221 catch(
const std::bad_alloc&) {
233 fill(rc.x(), rc.y(), rc.width(), rc.height(), black);
241 fill(rc.x(), rc.y(), rc.width(), rc.height(), realColor.
data());
251 QRect rc(x, y, w, h);
257 quint8* dabPointer =
data();
260 for (
int i = 0; i < w * h ; ++i) {
261 memcpy(dabPointer, fillPixel,
pixelSize);
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++) {
284 QRect rc(x, y, w, h);
293 memcpy(dstData, dabPointer,
pixelSize * w * h);
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);
307 if (!horizontal && !vertical){
318 quint8 * dabPointer =
data();
319 quint8 * row =
new quint8[ rowSize ];
322 for (
int y = 0; y < h ; y++){
325 memcpy(row, dabPointer, rowSize);
328 for (
int x = 0; x < w; x++){
339 int rowsToMove = h / 2;
342 quint8 * startRow =
data();
344 quint8 * row =
new quint8[ rowSize ];
346 for (
int y = 0; y < rowsToMove; y++){
347 memcpy(row, startRow, rowSize);
348 memcpy(startRow, endRow, rowSize);
349 memcpy(endRow, row, rowSize);
const KoID Integer8BitsColorDepthID("U8", ki18n("8-bit integer/channel"))
const KoID RGBAColorModelID("RGBA", ki18n("RGB/Alpha"))
const quint8 OPACITY_TRANSPARENT_U8
int allocatedPixels() const
void readBytes(quint8 *dstData, qint32 x, qint32 y, qint32 w, qint32 h) const
void reallocateBufferWithoutInitialization()
const quint8 * constData() const
const KoColorSpace * m_colorSpace
void setColorSpace(const KoColorSpace *cs)
KisFixedPaintDevice(const KoColorSpace *colorSpace, KisOptimizedByteArray::MemoryAllocatorSP allocator=KisOptimizedByteArray::MemoryAllocatorSP())
void setRect(const QRect &rc)
bool initialize(quint8 defaultValue=0)
virtual ~KisFixedPaintDevice()
KisOptimizedByteArray m_data
void clear(const QRect &rc)
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
void lazyGrowBufferWithoutInitialization()
void setProfile(const KoColorProfile *profile)
quint32 pixelSize() const
virtual void convertFromQImage(const QImage &image, const QString &srcProfileName)
KisFixedPaintDevice & operator=(const KisFixedPaintDevice &rhs)
void mirror(bool horizontal, bool vertical)
void convertTo(const KoColorSpace *dstColorSpace=0, KoColorConversionTransformation::Intent renderingIntent=KoColorConversionTransformation::internalRenderingIntent(), KoColorConversionTransformation::ConversionFlags conversionFlags=KoColorConversionTransformation::internalConversionFlags())
void fill(qint32 x, qint32 y, qint32 w, qint32 h, const quint8 *fillPixel)
const KoColorSpace * colorSpace() const
const quint8 * constData() const
void fill(quint8 value, int size=-1)
MemoryAllocatorSP customMemoryAllocator() const
virtual quint32 pixelSize() const =0
virtual QImage convertToQImage(const quint8 *data, qint32 width, qint32 height, const KoColorProfile *dstProfile, KoColorConversionTransformation::Intent renderingIntent, KoColorConversionTransformation::ConversionFlags conversionFlags) const
virtual void setOpacity(quint8 *pixels, quint8 alpha, qint32 nPixels) const =0
virtual bool convertPixelsTo(const quint8 *src, quint8 *dst, const KoColorSpace *dstColorSpace, quint32 numPixels, KoColorConversionTransformation::Intent renderingIntent, KoColorConversionTransformation::ConversionFlags conversionFlags) const
void convertTo(const KoColorSpace *cs, KoColorConversionTransformation::Intent renderingIntent, KoColorConversionTransformation::ConversionFlags conversionFlags)
#define KIS_SAFE_ASSERT_RECOVER_RETURN(cond)
const KoColorSpace * colorSpace(const QString &colorModelId, const QString &colorDepthId, const KoColorProfile *profile)
static KoColorSpaceRegistry * instance()