Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_paint_device.cc File Reference
#include "kis_paint_device.h"
#include <QRect>
#include <QImage>
#include <QList>
#include <QHash>
#include <QMutex>
#include <QMutexLocker>
#include <QIODevice>
#include <qmath.h>
#include <KisRegion.h>
#include <klocalizedstring.h>
#include <KoChannelInfo.h>
#include <KoColorProfile.h>
#include <KoColor.h>
#include <KoColorSpace.h>
#include <KoColorSpaceRegistry.h>
#include <KoColorModelStandardIds.h>
#include <KoIntegerMaths.h>
#include <KoMixColorsOp.h>
#include <KoUpdater.h>
#include "kis_image.h"
#include "kis_random_sub_accessor.h"
#include "kis_selection.h"
#include "kis_node.h"
#include "kis_datamanager.h"
#include "kis_paint_device_writer.h"
#include "kis_selection_component.h"
#include "kis_pixel_selection.h"
#include "kis_repeat_iterators_pixel.h"
#include "kis_fixed_paint_device.h"
#include "tiles3/kis_hline_iterator.h"
#include "tiles3/kis_vline_iterator.h"
#include "tiles3/kis_random_accessor.h"
#include "kis_default_bounds.h"
#include "kis_lod_transform.h"
#include "kis_raster_keyframe_channel.h"
#include "kis_paint_device_cache.h"
#include "kis_paint_device_data.h"
#include "kis_paint_device_frames_interface.h"
#include "kis_transform_worker.h"
#include "kis_filter_strategy.h"
#include "krita_utils.h"
#include <KisStaticInitializer.h>
#include "kis_paint_device_strategies.h"

Go to the source code of this file.

Classes

struct  Impl::CheckFullyTransparent
 
struct  Impl::CheckNonDefault
 
class  KisPaintDevice::Private::DeviceChangeColorSpaceCommand
 
class  KisPaintDevice::Private::DeviceChangeProfileCommand
 
class  KisPaintDevice::Private::FrameInsertionCommand
 
struct  KisPaintDevice::Private::LodDataStructImpl
 
struct  KisPaintDevice::Private
 
struct  KisPaintDevice::Private::StrategyPolicy
 

Namespaces

namespace  Impl
 

Functions

template<class ComparePixelOp >
QRect Impl::calculateExactBoundsImpl (const KisPaintDevice *device, const QRect &startRect, const QRect &endRect, ComparePixelOp compareOp)
 
static KisPaintDeviceSP createThumbnailDeviceInternal (const KisPaintDevice *srcDev, qint32 srcX0, qint32 srcY0, qint32 srcWidth, qint32 srcHeight, qint32 w, qint32 h, QRect outputRect)
 
QSize fixThumbnailSize (QSize size)
 
bool moveBy (KisSequentialConstIterator &iter, int numPixels)
 

Variables

 KIS_DECLARE_STATIC_INITIALIZER
 

Function Documentation

◆ createThumbnailDeviceInternal()

static KisPaintDeviceSP createThumbnailDeviceInternal ( const KisPaintDevice * srcDev,
qint32 srcX0,
qint32 srcY0,
qint32 srcWidth,
qint32 srcHeight,
qint32 w,
qint32 h,
QRect outputRect )
static

Definition at line 1691 of file kis_paint_device.cc.

1692{
1693 KisPaintDeviceSP thumbnail = new KisPaintDevice(srcDev->colorSpace());
1694 qint32 pixelSize = srcDev->pixelSize();
1695
1697 KisRandomAccessorSP dstIter = thumbnail->createRandomAccessorNG();
1698
1699 for (qint32 y = outputRect.y(); y < outputRect.y() + outputRect.height(); ++y) {
1700 qint32 iY = srcY0 + (y * srcHeight) / h;
1701 for (qint32 x = outputRect.x(); x < outputRect.x() + outputRect.width(); ++x) {
1702 qint32 iX = srcX0 + (x * srcWidth) / w;
1703 srcIter->moveTo(iX, iY);
1704 dstIter->moveTo(x, y);
1705 memcpy(dstIter->rawData(), srcIter->rawDataConst(), pixelSize);
1706 }
1707 }
1708 return thumbnail;
1709}
virtual quint8 * rawData()=0
virtual const quint8 * rawDataConst() const =0
quint32 pixelSize() const
KisRandomConstAccessorSP createRandomConstAccessorNG() const
const KoColorSpace * colorSpace() const
KisRandomAccessorSP createRandomAccessorNG()
virtual void moveTo(qint32 x, qint32 y)=0

References KisPaintDevice::colorSpace(), KisPaintDevice::createRandomAccessorNG(), KisPaintDevice::createRandomConstAccessorNG(), KisRandomConstAccessorNG::moveTo(), KisPaintDevice::pixelSize(), KisBaseAccessor::rawData(), and KisBaseConstAccessor::rawDataConst().

◆ fixThumbnailSize()

QSize fixThumbnailSize ( QSize size)

Definition at line 1711 of file kis_paint_device.cc.

1712{
1713 if (!size.width() && size.height()) {
1714 size.setWidth(1);
1715 }
1716
1717 if (size.width() && !size.height()) {
1718 size.setHeight(1);
1719 }
1720
1721 return size;
1722}
int size(const Forest< T > &forest)
Definition KisForest.h:1232

◆ moveBy()

bool moveBy ( KisSequentialConstIterator & iter,
int numPixels )
inline

Definition at line 1679 of file kis_paint_device.cc.

1680{
1681 int pos = 0;
1682 while (pos < numPixels) {
1683 int step = std::min(iter.nConseqPixels(), numPixels - pos);
1684 if (!iter.nextPixels(step))
1685 return false;
1686 pos += step;
1687 }
1688 return true;
1689}

References KisSequentialIteratorBase< IteratorPolicy, SourcePolicy, ProgressPolicy >::nConseqPixels(), and KisSequentialIteratorBase< IteratorPolicy, SourcePolicy, ProgressPolicy >::nextPixels().

Variable Documentation

◆ KIS_DECLARE_STATIC_INITIALIZER

KIS_DECLARE_STATIC_INITIALIZER
Initial value:
{
qRegisterMetaType<KisPaintDeviceSP>("KisPaintDeviceSP")

Definition at line 63 of file kis_paint_device.cc.