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

#include <kis_switch_time_stroke_strategy.h>

+ Inheritance diagram for KisSwitchTimeStrokeStrategy:

Classes

struct  Private
 
struct  SharedToken
 

Public Types

typedef QSharedPointer< SharedTokenSharedTokenSP
 
typedef QWeakPointer< SharedTokenSharedTokenWSP
 
- Public Types inherited from KisSimpleStrokeStrategy
enum  JobType {
  JOB_INIT = 0 , JOB_CANCEL , JOB_FINISH , JOB_DOSTROKE ,
  JOB_SUSPEND , JOB_RESUME , NJOBS
}
 

Public Member Functions

KisStrokeStrategycreateLodClone (int levelOfDetail) override
 
void initStrokeCallback () override
 
 KisSwitchTimeStrokeStrategy (int frameId, bool needsRegeneration, KisImageAnimationInterface *interface, KisPostExecutionUndoAdapter *undoAdapter)
 
SharedTokenSP token () const
 
 ~KisSwitchTimeStrokeStrategy () override
 
- 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
 
virtual void doStrokeCallback (KisStrokeJobData *data)
 
virtual void finishStrokeCallback ()
 
 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 ()
 

Private Attributes

const QScopedPointer< Privatem_d
 

Additional Inherited Members

- Static Public Member Functions inherited from KisSimpleStrokeStrategy
static QLatin1String jobTypeToString (JobType type)
 
- 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)
 

Detailed Description

Definition at line 18 of file kis_switch_time_stroke_strategy.h.

Member Typedef Documentation

◆ SharedTokenSP

◆ SharedTokenWSP

Constructor & Destructor Documentation

◆ KisSwitchTimeStrokeStrategy()

KisSwitchTimeStrokeStrategy::KisSwitchTimeStrokeStrategy ( int frameId,
bool needsRegeneration,
KisImageAnimationInterface * interface,
KisPostExecutionUndoAdapter * undoAdapter )

Switches current time to frameId

NOTE: switching time does end all the running stroke, because it is not a background action, but a distinct user action.

Definition at line 29 of file kis_switch_time_stroke_strategy.cpp.

33 : KisSimpleStrokeStrategy(QLatin1String("switch_current_frame_stroke"), kundo2_i18n("Switch Frames")),
34 m_d(new Private(frameId, needsRegeneration))
35{
36 m_d->interface = interface;
37 m_d->undoAdapter = undoAdapter;
38
39
41
42 // switching frames is a distinct user action, so it should
43 // cancel the playback or any action easily
46}
void enableJob(JobType type, bool enable=true, KisStrokeJobData::Sequentiality sequentiality=KisStrokeJobData::SEQUENTIAL, KisStrokeJobData::Exclusivity exclusivity=KisStrokeJobData::NORMAL)
KisSimpleStrokeStrategy(const QLatin1String &id, const KUndo2MagicString &name=KUndo2MagicString())
void setClearsRedoOnStart(bool value)
void setRequestsOtherStrokesToEnd(bool value)
const QScopedPointer< Private > m_d
KUndo2MagicString kundo2_i18n(const char *text)

References KisSimpleStrokeStrategy::enableJob(), KisStrokeJobData::EXCLUSIVE, KisSimpleStrokeStrategy::JOB_INIT, m_d, KisStrokeJobData::SEQUENTIAL, KisStrokeStrategy::setClearsRedoOnStart(), and KisStrokeStrategy::setRequestsOtherStrokesToEnd().

◆ ~KisSwitchTimeStrokeStrategy()

KisSwitchTimeStrokeStrategy::~KisSwitchTimeStrokeStrategy ( )
override

Definition at line 48 of file kis_switch_time_stroke_strategy.cpp.

49{
50}

Member Function Documentation

◆ createLodClone()

KisStrokeStrategy * KisSwitchTimeStrokeStrategy::createLodClone ( int levelOfDetail)
overridevirtual

Reimplemented from KisStrokeStrategy.

Definition at line 68 of file kis_switch_time_stroke_strategy.cpp.

69{
70 Q_UNUSED(levelOfDetail);
71
72 // This stroke is explicitly made LEGACY, so that it could create a barrier for
73 // time switch. Theoretically, we can have separate time ids for Lod0 and LodN,
74 // but currently this idea doesn't work for some reason. The consequences of
75 // making this stroke a barrier:
76 //
77 // * LodSync stroke is started after every time switch (not slow, but still...)
78 // * The frame switches only *after* all the pending strokes are finished
79 // * LodSync stroke is started even when the image is not changed (not regeneration needed)!
80
81 return 0;
82}

◆ initStrokeCallback()

void KisSwitchTimeStrokeStrategy::initStrokeCallback ( )
overridevirtual

Reimplemented from KisSimpleStrokeStrategy.

Definition at line 51 of file kis_switch_time_stroke_strategy.cpp.

52{
53 const int frameId = m_d->token->fetchTime();
54
55 if (frameId == m_d->interface->currentTime()) return;
56
57 const int oldTime = m_d->interface->currentTime();
58 m_d->interface->explicitlySetCurrentTime(frameId);
59
60 if (m_d->undoAdapter) {
62 new KisSwitchCurrentTimeCommand(m_d->interface,
63 oldTime,
64 frameId));
65 m_d->undoAdapter->addCommand(cmd);
66 }
67}

References m_d.

◆ token()

KisSwitchTimeStrokeStrategy::SharedTokenSP KisSwitchTimeStrokeStrategy::token ( ) const

Definition at line 84 of file kis_switch_time_stroke_strategy.cpp.

85{
86 return m_d->token;
87}

References m_d.

Member Data Documentation

◆ m_d

const QScopedPointer<Private> KisSwitchTimeStrokeStrategy::m_d
private

Definition at line 57 of file kis_switch_time_stroke_strategy.h.


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