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

#include <kis_tool_multihand_helper.h>

+ Inheritance diagram for KisToolMultihandHelper:

Classes

struct  Private
 

Public Member Functions

 KisToolMultihandHelper (KisPaintingInformationBuilder *infoBuilder, KoCanvasResourceProvider *resourceManager, const KUndo2MagicString &transactionText)
 
void setupTransformations (const QVector< QTransform > &transformations)
 
 ~KisToolMultihandHelper () override
 
- Public Member Functions inherited from KisToolFreehandHelper
void cursorMoved (const QPointF &cursorPos)
 
void endPaint ()
 
void initPaint (KoPointerEvent *event, const QPointF &pixelCoords, KisImageWSP image, KisNodeSP currentNode, KisStrokesFacade *strokesFacade, KisNodeSP overrideNode=0, KisDefaultBoundsBaseSP bounds=0)
 
bool isRunning () const
 
 KisToolFreehandHelper (KisPaintingInformationBuilder *infoBuilder, KoCanvasResourceProvider *resourceManager, const KUndo2MagicString &transactionText=KUndo2MagicString(), KisSmoothingOptions *smoothingOptions=0)
 
void paintEvent (KoPointerEvent *event)
 
KisOptimizedBrushOutline paintOpOutline (const QPointF &savedCursorPos, const KoPointerEvent *event, const KisPaintOpSettingsSP globalSettings, KisPaintOpSettings::OutlineMode mode) const
 
void setSmoothness (KisSmoothingOptionsSP smoothingOptions)
 
KisSmoothingOptionsSP smoothingOptions () const
 
 ~KisToolFreehandHelper () override
 

Protected Member Functions

void createPainters (QVector< KisFreehandStrokeInfo * > &strokeInfos, const KisDistanceInformation &startDist) override
 
virtual void paintAt (const KisPaintInformation &pi)
 
void paintAt (const KisPaintInformation &pi) override
 
void paintAt (int strokeInfoId, const KisPaintInformation &pi)
 
virtual void paintBezierCurve (const KisPaintInformation &pi1, const QPointF &control1, const QPointF &control2, const KisPaintInformation &pi2)
 
void paintBezierCurve (const KisPaintInformation &pi1, const QPointF &control1, const QPointF &control2, const KisPaintInformation &pi2) override
 
void paintBezierCurve (int strokeInfoId, const KisPaintInformation &pi1, const QPointF &control1, const QPointF &control2, const KisPaintInformation &pi2)
 
virtual void paintLine (const KisPaintInformation &pi1, const KisPaintInformation &pi2)
 
void paintLine (const KisPaintInformation &pi1, const KisPaintInformation &pi2) override
 
void paintLine (int strokeInfoId, const KisPaintInformation &pi1, const KisPaintInformation &pi2)
 
- Protected Member Functions inherited from KisToolFreehandHelper
void cancelPaint ()
 
int elapsedStrokeTime () const
 
void initPaintImpl (qreal startAngle, const KisPaintInformation &pi, KoCanvasResourceProvider *resourceManager, KisImageWSP image, KisNodeSP node, KisStrokesFacade *strokesFacade, KisNodeSP overrideNode=0, KisDefaultBoundsBaseSP bounds=0)
 
void paintAt (int strokeInfoId, const KisPaintInformation &pi)
 
void paintBezierCurve (int strokeInfoId, const KisPaintInformation &pi1, const QPointF &control1, const QPointF &control2, const KisPaintInformation &pi2)
 
void paintLine (int strokeInfoId, const KisPaintInformation &pi1, const KisPaintInformation &pi2)
 
KoCanvasResourceProviderresourceManager () const
 

Private Attributes

Private *const d
 

Additional Inherited Members

- Signals inherited from KisToolFreehandHelper
void requestExplicitUpdateOutline ()
 

Detailed Description

Definition at line 13 of file kis_tool_multihand_helper.h.

Constructor & Destructor Documentation

◆ KisToolMultihandHelper()

KisToolMultihandHelper::KisToolMultihandHelper ( KisPaintingInformationBuilder * infoBuilder,
KoCanvasResourceProvider * resourceManager,
const KUndo2MagicString & transactionText )

Definition at line 20 of file kis_tool_multihand_helper.cpp.

23 : KisToolFreehandHelper(infoBuilder, resourceManager, transactionText)
24 , d(new Private)
25{
26}
KisToolFreehandHelper(KisPaintingInformationBuilder *infoBuilder, KoCanvasResourceProvider *resourceManager, const KUndo2MagicString &transactionText=KUndo2MagicString(), KisSmoothingOptions *smoothingOptions=0)
KoCanvasResourceProvider * resourceManager() const

◆ ~KisToolMultihandHelper()

KisToolMultihandHelper::~KisToolMultihandHelper ( )
override

Definition at line 28 of file kis_tool_multihand_helper.cpp.

29{
30 delete d;
31}

References d.

Member Function Documentation

◆ createPainters()

void KisToolMultihandHelper::createPainters ( QVector< KisFreehandStrokeInfo * > & strokeInfos,
const KisDistanceInformation & startDist )
overrideprotectedvirtual

Reimplemented from KisToolFreehandHelper.

Definition at line 38 of file kis_tool_multihand_helper.cpp.

40{
41 for (int i = 0; i < d->transformations.size(); i++) {
42 const QTransform &transform = d->transformations[i];
43 KisDistanceInitInfo __startDistInfo(transform.map(startDist.lastPosition()),
44 startDist.lastDrawingAngle(),
45 startDist.getSpacingInterval(),
46 startDist.getTimingUpdateInterval(),
47 0);
48
49 KisDistanceInformation __startDist = __startDistInfo.makeDistInfo();
50 strokeInfos << new KisFreehandStrokeInfo(__startDist);
51 }
52}

References d, KisDistanceInformation::getSpacingInterval(), KisDistanceInformation::getTimingUpdateInterval(), KisDistanceInformation::lastDrawingAngle(), KisDistanceInformation::lastPosition, KisDistanceInitInfo::makeDistInfo(), and KisToolMultihandHelper::Private::transformations.

◆ paintAt() [1/3]

void KisToolFreehandHelper::paintAt ( const KisPaintInformation & pi)
protectedvirtual

Reimplemented from KisToolFreehandHelper.

Definition at line 120 of file kis_tool_freehand_helper.cpp.

1071{
1072 paintAt(0, pi);
1073}
void paintAt(const KisPaintInformation &pi) override

◆ paintAt() [2/3]

void KisToolMultihandHelper::paintAt ( const KisPaintInformation & pi)
overrideprotectedvirtual

Reimplemented from KisToolFreehandHelper.

Definition at line 73 of file kis_tool_multihand_helper.cpp.

74{
75 for (int i = 0; i < d->transformations.size(); i++) {
76 const QTransform &transform = d->transformations[i];
77 KisPaintInformation __pi = pi;
78 __pi.setPos(transform.map(__pi.pos()));
79 adjustPointInformationRotation(__pi, transform);
80 paintAt(i, __pi);
81 }
82}
void setPos(const QPointF &p)
const QPointF & pos() const
void adjustPointInformationRotation(KisPaintInformation &pi, const QTransform &t)

References adjustPointInformationRotation(), d, paintAt(), KisPaintInformation::pos(), KisPaintInformation::setPos(), and KisToolMultihandHelper::Private::transformations.

◆ paintAt() [3/3]

void KisToolFreehandHelper::paintAt ( int strokeInfoId,
const KisPaintInformation & pi )
protected

Definition at line 106 of file kis_tool_freehand_helper.cpp.

1009{
1010 m_d->hasPaintAtLeastOnce = true;
1011 m_d->strokesFacade->addJob(m_d->strokeId,
1012 new FreehandStrokeStrategy::Data(strokeInfoId, pi));
1013
1014}

◆ paintBezierCurve() [1/3]

void KisToolFreehandHelper::paintBezierCurve ( const KisPaintInformation & pi1,
const QPointF & control1,
const QPointF & control2,
const KisPaintInformation & pi2 )
protectedvirtual

Reimplemented from KisToolFreehandHelper.

Definition at line 125 of file kis_tool_freehand_helper.cpp.

1085{
1086 paintBezierCurve(0, pi1, control1, control2, pi2);
1087}
void paintBezierCurve(const KisPaintInformation &pi1, const QPointF &control1, const QPointF &control2, const KisPaintInformation &pi2) override

◆ paintBezierCurve() [2/3]

void KisToolMultihandHelper::paintBezierCurve ( const KisPaintInformation & pi1,
const QPointF & control1,
const QPointF & control2,
const KisPaintInformation & pi2 )
overrideprotectedvirtual

Reimplemented from KisToolFreehandHelper.

Definition at line 102 of file kis_tool_multihand_helper.cpp.

106{
107 for (int i = 0; i < d->transformations.size(); i++) {
108 const QTransform &transform = d->transformations[i];
109
110 KisPaintInformation __pi1 = pi1;
111 KisPaintInformation __pi2 = pi2;
112 __pi1.setPos(transform.map(__pi1.pos()));
113 __pi2.setPos(transform.map(__pi2.pos()));
114
115 adjustPointInformationRotation(__pi1, transform);
116 adjustPointInformationRotation(__pi2, transform);
117
118 QPointF __control1 = transform.map(control1);
119 QPointF __control2 = transform.map(control2);
120
121 paintBezierCurve(i, __pi1, __control1, __control2, __pi2);
122 }
123}

References adjustPointInformationRotation(), d, paintBezierCurve(), KisPaintInformation::pos(), KisPaintInformation::setPos(), and KisToolMultihandHelper::Private::transformations.

◆ paintBezierCurve() [3/3]

void KisToolFreehandHelper::paintBezierCurve ( int strokeInfoId,
const KisPaintInformation & pi1,
const QPointF & control1,
const QPointF & control2,
const KisPaintInformation & pi2 )
protected

Definition at line 112 of file kis_tool_freehand_helper.cpp.

1031{
1032
1033#ifdef DEBUG_BEZIER_CURVES
1036
1037 tpi1 = pi1;
1038 tpi2 = pi2;
1039
1040 tpi1.setPressure(0.3);
1041 tpi2.setPressure(0.3);
1042
1043 paintLine(tpi1, tpi2);
1044
1045 tpi1.setPressure(0.6);
1046 tpi2.setPressure(0.3);
1047
1048 tpi1.setPos(pi1.pos());
1049 tpi2.setPos(control1);
1050 paintLine(tpi1, tpi2);
1051
1052 tpi1.setPos(pi2.pos());
1053 tpi2.setPos(control2);
1054 paintLine(tpi1, tpi2);
1055#endif
1056
1057 m_d->hasPaintAtLeastOnce = true;
1058 m_d->strokesFacade->addJob(m_d->strokeId,
1059 new FreehandStrokeStrategy::Data(strokeInfoId,
1060 pi1, control1, control2, pi2));
1061
1062}
void setPressure(qreal p)
Set the pressure.
void paintLine(const KisPaintInformation &pi1, const KisPaintInformation &pi2) override

◆ paintLine() [1/3]

void KisToolFreehandHelper::paintLine ( const KisPaintInformation & pi1,
const KisPaintInformation & pi2 )
protectedvirtual

Reimplemented from KisToolFreehandHelper.

Definition at line 122 of file kis_tool_freehand_helper.cpp.

1077{
1078 paintLine(0, pi1, pi2);
1079}

◆ paintLine() [2/3]

void KisToolMultihandHelper::paintLine ( const KisPaintInformation & pi1,
const KisPaintInformation & pi2 )
overrideprotectedvirtual

Reimplemented from KisToolFreehandHelper.

Definition at line 84 of file kis_tool_multihand_helper.cpp.

86{
87 for (int i = 0; i < d->transformations.size(); i++) {
88 const QTransform &transform = d->transformations[i];
89
90 KisPaintInformation __pi1 = pi1;
91 KisPaintInformation __pi2 = pi2;
92 __pi1.setPos(transform.map(__pi1.pos()));
93 __pi2.setPos(transform.map(__pi2.pos()));
94
95 adjustPointInformationRotation(__pi1, transform);
96 adjustPointInformationRotation(__pi2, transform);
97
98 paintLine(i, __pi1, __pi2);
99 }
100}

References adjustPointInformationRotation(), d, paintLine(), KisPaintInformation::pos(), KisPaintInformation::setPos(), and KisToolMultihandHelper::Private::transformations.

◆ paintLine() [3/3]

void KisToolFreehandHelper::paintLine ( int strokeInfoId,
const KisPaintInformation & pi1,
const KisPaintInformation & pi2 )
protected

Definition at line 108 of file kis_tool_freehand_helper.cpp.

1019{
1020 m_d->hasPaintAtLeastOnce = true;
1021 m_d->strokesFacade->addJob(m_d->strokeId,
1022 new FreehandStrokeStrategy::Data(strokeInfoId, pi1, pi2));
1023
1024}

◆ setupTransformations()

void KisToolMultihandHelper::setupTransformations ( const QVector< QTransform > & transformations)

Definition at line 33 of file kis_tool_multihand_helper.cpp.

34{
35 d->transformations = transformations;
36}

References d, and KisToolMultihandHelper::Private::transformations.

Member Data Documentation

◆ d

Private* const KisToolMultihandHelper::d
private

Definition at line 45 of file kis_tool_multihand_helper.h.


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