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

#include <KisImageThumbnailStrokeStrategy.h>

+ Inheritance diagram for KisImageThumbnailStrokeStrategyBase:

Public Member Functions

 KisImageThumbnailStrokeStrategyBase (KisPaintDeviceSP device, const QRect &rect, const QSize &thumbnailSize, bool isPixelArt, const KoColorProfile *profile, KoColorConversionTransformation::Intent renderingIntent, KoColorConversionTransformation::ConversionFlags conversionFlags)
 
 ~KisImageThumbnailStrokeStrategyBase () override
 
- Public Member Functions inherited from KisIdleTaskStrokeStrategy
KisStrokeStrategycreateLodClone (int levelOfDetail) override
 
QWeakPointer< boost::none_t > idleTaskCookie ()
 
 KisIdleTaskStrokeStrategy (const QLatin1String &id, const KUndo2MagicString &name=KUndo2MagicString())
 
 ~KisIdleTaskStrokeStrategy ()
 
- Public Member Functions inherited from KisRunnableBasedStrokeStrategy
void doStrokeCallback (KisStrokeJobData *data) override
 
 KisRunnableBasedStrokeStrategy (const KisRunnableBasedStrokeStrategy &rhs)
 
 KisRunnableBasedStrokeStrategy (const QLatin1String &id, const KUndo2MagicString &name=KUndo2MagicString())
 
KisRunnableStrokeJobsInterfacerunnableJobsInterface () const
 
 ~KisRunnableBasedStrokeStrategy ()
 
- Public Member Functions inherited from KisSimpleStrokeStrategy
virtual void cancelStrokeCallback ()
 
KisStrokeJobDatacreateCancelData () override
 
KisStrokeJobStrategycreateCancelStrategy () override
 
KisStrokeJobStrategycreateDabStrategy () override
 
KisStrokeJobDatacreateFinishData () override
 
KisStrokeJobStrategycreateFinishStrategy () override
 
KisStrokeJobDatacreateInitData () override
 
KisStrokeJobStrategycreateInitStrategy () override
 
KisStrokeJobDatacreateResumeData () override
 
KisStrokeJobStrategycreateResumeStrategy () override
 
KisStrokeJobDatacreateSuspendData () override
 
KisStrokeJobStrategycreateSuspendStrategy () override
 
 KisSimpleStrokeStrategy (const QLatin1String &id, const KUndo2MagicString &name=KUndo2MagicString())
 
virtual void resumeStrokeCallback ()
 
virtual void suspendStrokeCallback ()
 
- Public Member Functions inherited from KisStrokeStrategy
qreal balancingRatioOverride () const
 
bool canForgetAboutMe () const
 
bool clearsRedoOnStart () const
 
KisLodPreferences currentLodPreferences () const
 
bool forceLodModeIfPossible () const
 
QString id () const
 
bool isAsynchronouslyCancellable () const
 
bool isExclusive () const
 
 KisStrokeStrategy (const QLatin1String &id, const KUndo2MagicString &name=KUndo2MagicString())
 
KUndo2MagicString name () const
 
bool needsExplicitCancel () const
 
virtual void notifyUserEndedStroke ()
 
virtual void notifyUserStartedStroke ()
 
bool requestsOtherStrokesToEnd () const
 
void setForceLodModeIfPossible (bool forceLodModeIfPossible)
 
void setMutatedJobsInterface (KisStrokesQueueMutatedJobInterface *mutatedJobsInterface, KisStrokeId strokeId)
 
bool supportsWrapAroundMode () const
 
virtual void tryCancelCurrentStrokeJobAsync ()
 tryCancelCurrentStrokeJobAsync is called by the strokes queue when the stroke is being cancelled. The stroke strategy may or may not handle this request and cancel the currently running long action.
 
virtual ~KisStrokeStrategy ()
 

Protected Member Functions

virtual void reportThumbnailGenerationCompleted (KisPaintDeviceSP device, const QRect &rect)=0
 
- Protected Member Functions inherited from KisIdleTaskStrokeStrategy
void finishStrokeCallback () override
 
- Protected Member Functions inherited from KisSimpleStrokeStrategy
void enableJob (JobType type, bool enable=true, KisStrokeJobData::Sequentiality sequentiality=KisStrokeJobData::SEQUENTIAL, KisStrokeJobData::Exclusivity exclusivity=KisStrokeJobData::NORMAL)
 
 KisSimpleStrokeStrategy (const KisSimpleStrokeStrategy &rhs)
 
- Protected Member Functions inherited from KisStrokeStrategy
void addMutatedJob (KisStrokeJobData *data)
 
void addMutatedJobs (const QVector< KisStrokeJobData * > list)
 
 KisStrokeStrategy (const KisStrokeStrategy &rhs)
 
void setAsynchronouslyCancellable (bool value)
 
void setBalancingRatioOverride (qreal value)
 
void setCanForgetAboutMe (bool value)
 
void setClearsRedoOnStart (bool value)
 
void setExclusive (bool value)
 
void setNeedsExplicitCancel (bool value)
 
void setRequestsOtherStrokesToEnd (bool value)
 
void setSupportsWrapAroundMode (bool value)
 

Protected Attributes

KoColorConversionTransformation::ConversionFlags m_conversionFlags
 
const KoColorProfilem_profile
 
KoColorConversionTransformation::Intent m_renderingIntent
 

Private Member Functions

void initStrokeCallback () override
 

Private Attributes

KisPaintDeviceSP m_device
 
bool m_isPixelArt {false}
 
QRect m_rect
 
KisPaintDeviceSP m_thumbnailDevice
 
QSize m_thumbnailOversampledSize
 
QSize m_thumbnailSize
 

Additional Inherited Members

- Public Types inherited from KisSimpleStrokeStrategy
enum  JobType {
  JOB_INIT = 0 , JOB_CANCEL , JOB_FINISH , JOB_DOSTROKE ,
  JOB_SUSPEND , JOB_RESUME , NJOBS
}
 
- Signals inherited from KisIdleTaskStrokeStrategy
void sigIdleTaskFinished ()
 
- Static Public Member Functions inherited from KisIdleTaskStrokeStrategy
static int preferredIdleTaskMaximumTime ()
 
static int preferredIdleWatcherInterval ()
 
- Static Public Member Functions inherited from KisSimpleStrokeStrategy
static QLatin1String jobTypeToString (JobType type)
 

Detailed Description

Definition at line 24 of file KisImageThumbnailStrokeStrategy.h.

Constructor & Destructor Documentation

◆ KisImageThumbnailStrokeStrategyBase()

KisImageThumbnailStrokeStrategyBase::KisImageThumbnailStrokeStrategyBase ( KisPaintDeviceSP device,
const QRect & rect,
const QSize & thumbnailSize,
bool isPixelArt,
const KoColorProfile * profile,
KoColorConversionTransformation::Intent renderingIntent,
KoColorConversionTransformation::ConversionFlags conversionFlags )

Definition at line 24 of file KisImageThumbnailStrokeStrategy.cpp.

32 : KisIdleTaskStrokeStrategy(QLatin1String("OverviewThumbnail"), kundo2_i18n("Update overview thumbnail")),
33 m_device(device),
34 m_rect(rect),
35 m_thumbnailSize(thumbnailSize),
36 m_isPixelArt(isPixelArt),
37 m_profile(profile),
38 m_renderingIntent(renderingIntent),
39 m_conversionFlags(conversionFlags)
40{
41}
KisIdleTaskStrokeStrategy(const QLatin1String &id, const KUndo2MagicString &name=KUndo2MagicString())
KoColorConversionTransformation::ConversionFlags m_conversionFlags
KoColorConversionTransformation::Intent m_renderingIntent
KUndo2MagicString kundo2_i18n(const char *text)

◆ ~KisImageThumbnailStrokeStrategyBase()

KisImageThumbnailStrokeStrategyBase::~KisImageThumbnailStrokeStrategyBase ( )
override

Definition at line 43 of file KisImageThumbnailStrokeStrategy.cpp.

44{
45}

Member Function Documentation

◆ initStrokeCallback()

void KisImageThumbnailStrokeStrategyBase::initStrokeCallback ( )
overrideprivatevirtual

Reimplemented from KisIdleTaskStrokeStrategy.

Definition at line 47 of file KisImageThumbnailStrokeStrategy.cpp.

48{
52
53 const QRect imageRect = m_device->defaultBounds()->bounds();
54
56
57 if ((m_thumbnailOversampledSize.width() > imageRect.width()) || (m_thumbnailOversampledSize.height() > imageRect.height())) {
58 m_thumbnailOversampledSize.scale(imageRect.size(), Qt::KeepAspectRatio);
59 }
60
62
64
66 Q_FOREACH (const QRect &rc, tileRects) {
67 addJobConcurrent(jobs, [this, tileRect = rc] () {
68 //we aren't going to use oversample capability of createThumbnailDevice because it recomputes exact bounds for each small patch, which is
69 //slow. We'll handle scaling separately.
71 KisPainter::copyAreaOptimized(tileRect.topLeft(), thumbnailTile, m_thumbnailDevice, tileRect);
72 });
73 }
74
75 addJobSequential(jobs, [this] () {
76 KoDummyUpdaterHolder updaterHolder;
77 qreal xscale = m_thumbnailSize.width() / (qreal)m_thumbnailOversampledSize.width();
78 qreal yscale = m_thumbnailSize.height() / (qreal)m_thumbnailOversampledSize.height();
79 QString algorithm = m_isPixelArt ? "Box" : "Bilinear";
80 KisTransformWorker worker(m_thumbnailDevice, xscale, yscale, 0.0, 0.0, 0.0, 0.0, 0.0,
81 updaterHolder.updater(), KisFilterStrategyRegistry::instance()->value(algorithm));
82 worker.run();
83
85 });
86
88}
const qreal oversample
const int thumbnailTileDim
virtual QRect bounds() const =0
static KisFilterStrategyRegistry * instance()
virtual void reportThumbnailGenerationCompleted(KisPaintDeviceSP device, const QRect &rect)=0
const KoColorSpace * colorSpace() const
KisPaintDeviceSP createThumbnailDeviceOversampled(qint32 w, qint32 h, qreal oversample, QRect rect=QRect(), QRect outputRect=QRect()) const
KisDefaultBoundsBaseSP defaultBounds() const
static void copyAreaOptimized(const QPoint &dstPt, KisPaintDeviceSP src, KisPaintDeviceSP dst, const QRect &originalSrcRect)
KisRunnableStrokeJobsInterface * runnableJobsInterface() const
virtual void addRunnableJobs(const QVector< KisRunnableStrokeJobDataBase * > &list)=0
A holder for an updater that does nothing.
Definition KoUpdater.h:116
KoUpdater * updater()
const T value(const QString &id) const
QVector< QRect > splitRectIntoPatches(const QRect &rc, const QSize &patchSize)
void addJobConcurrent(QVector< Job * > &jobs, Func func)
void addJobSequential(QVector< Job * > &jobs, Func func)

References KritaUtils::addJobConcurrent(), KritaUtils::addJobSequential(), KisRunnableStrokeJobsInterface::addRunnableJobs(), KisDefaultBoundsBase::bounds(), KisPaintDevice::colorSpace(), KisPainter::copyAreaOptimized(), KisPaintDevice::createThumbnailDeviceOversampled(), KisPaintDevice::defaultBounds(), KisIdleTaskStrokeStrategy::initStrokeCallback(), KisFilterStrategyRegistry::instance(), m_device, m_isPixelArt, m_thumbnailDevice, m_thumbnailOversampledSize, m_thumbnailSize, oversample, reportThumbnailGenerationCompleted(), KisTransformWorker::run(), KisRunnableBasedStrokeStrategy::runnableJobsInterface(), KritaUtils::splitRectIntoPatches(), thumbnailTileDim, KoDummyUpdaterHolder::updater(), and KoGenericRegistry< T >::value().

◆ reportThumbnailGenerationCompleted()

virtual void KisImageThumbnailStrokeStrategyBase::reportThumbnailGenerationCompleted ( KisPaintDeviceSP device,
const QRect & rect )
protectedpure virtual

Member Data Documentation

◆ m_conversionFlags

KoColorConversionTransformation::ConversionFlags KisImageThumbnailStrokeStrategyBase::m_conversionFlags
protected

Definition at line 54 of file KisImageThumbnailStrokeStrategy.h.

◆ m_device

KisPaintDeviceSP KisImageThumbnailStrokeStrategyBase::m_device
private

Definition at line 44 of file KisImageThumbnailStrokeStrategy.h.

◆ m_isPixelArt

bool KisImageThumbnailStrokeStrategyBase::m_isPixelArt {false}
private

Definition at line 48 of file KisImageThumbnailStrokeStrategy.h.

48{false};

◆ m_profile

const KoColorProfile* KisImageThumbnailStrokeStrategyBase::m_profile
protected

Definition at line 52 of file KisImageThumbnailStrokeStrategy.h.

◆ m_rect

QRect KisImageThumbnailStrokeStrategyBase::m_rect
private

Definition at line 45 of file KisImageThumbnailStrokeStrategy.h.

◆ m_renderingIntent

KoColorConversionTransformation::Intent KisImageThumbnailStrokeStrategyBase::m_renderingIntent
protected

Definition at line 53 of file KisImageThumbnailStrokeStrategy.h.

◆ m_thumbnailDevice

KisPaintDeviceSP KisImageThumbnailStrokeStrategyBase::m_thumbnailDevice
private

Definition at line 49 of file KisImageThumbnailStrokeStrategy.h.

◆ m_thumbnailOversampledSize

QSize KisImageThumbnailStrokeStrategyBase::m_thumbnailOversampledSize
private

Definition at line 47 of file KisImageThumbnailStrokeStrategy.h.

◆ m_thumbnailSize

QSize KisImageThumbnailStrokeStrategyBase::m_thumbnailSize
private

Definition at line 46 of file KisImageThumbnailStrokeStrategy.h.


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