Pencil2D Animation
Download Community News Docs Contribute
  • Overview
  • Articles
  • Code
  •  
  • Class List
  • Class Index
  • Class Hierarchy
  • Class Members
  • File List
Loading...
Searching...
No Matches
Public Slots | Signals | Public Member Functions | Protected Member Functions | Protected Attributes | Static Protected Attributes | Private Attributes | List of all members
StrokeTool Class Referenceabstract
+ Inheritance diagram for StrokeTool:
Inheritance graph
[legend]
+ Collaboration diagram for StrokeTool:
Collaboration graph
[legend]

Public Slots

void onPreferenceChanged (SETTING setting)
 
void onViewUpdated ()
 

Signals

void widthChanged (qreal value)
 
void featherChanged (qreal value)
 
void pressureEnabledChanged (bool enabled)
 
void featherEnabledChanged (bool enabled)
 
void antiAliasingEnabledChanged (bool enabled)
 
void fillContourEnabledChanged (bool enabled)
 
void invisibleStrokeEnabledChanged (bool enabled)
 
void stabilizationLevelChanged (int level)
 
- Signals inherited from BaseTool
bool isActiveChanged (ToolType, bool)
 

Public Member Functions

 StrokeTool (QObject *parent)
 
virtual const StrokeToolProperties & strokeToolProperties () const =0
 
void startStroke (PointerEvent::InputType inputType)
 
void drawStroke ()
 
void endStroke ()
 
bool leavingThisTool () override
 Will clean up active connections.
 
bool enteringThisTool () override
 Setup active connections here that should only emit while tool is active leavingThisTool will handle the cleanup of active connections.
 
void updateCanvasCursor ()
 
void loadSettings () override
 
bool isActive () const override
 Check if the tool is active.
 
bool keyPressEvent (QKeyEvent *event) override
 
void pointerPressEvent (PointerEvent *event) override
 
void pointerMoveEvent (PointerEvent *event) override
 
void pointerReleaseEvent (PointerEvent *event) override
 
bool enterEvent (QEnterEvent *) override
 
bool leaveEvent (QEvent *) override
 
bool handleQuickSizing (PointerEvent *event)
 
void paint (QPainter &painter, const QRect &blitRect) override
 
virtual void setStablizationLevel (int level)
 
virtual void setWidth (qreal width)
 
virtual void setFeather (qreal feather)
 
virtual void setPressureEnabled (bool enabled)
 
virtual void setFeatherEnabled (bool enabled)
 
virtual void setAntiAliasingEnabled (bool enabled)
 
virtual void setFillContourEnabled (bool enabled)
 
virtual void setStrokeInvisibleEnabled (bool enabled)
 
- Public Member Functions inherited from BaseTool
QString typeName ()
 
void initialize (Editor *editor)
 
virtual ToolType type () const =0
 
virtual ToolProperties & toolProperties ()=0
 
virtual void loadSettings ()=0
 
void saveSettings ()
 
void resetSettings ()
 
virtual QCursor cursor ()
 
virtual void pointerPressEvent (PointerEvent *)=0
 
virtual void pointerMoveEvent (PointerEvent *)=0
 
virtual void pointerReleaseEvent (PointerEvent *)=0
 
virtual void pointerDoubleClickEvent (PointerEvent *)
 
virtual bool keyPressEvent (QKeyEvent *)
 
virtual bool keyReleaseEvent (QKeyEvent *)
 
virtual bool enterEvent (QEnterEvent *)
 
virtual bool leaveEvent (QEvent *)
 
virtual void clearToolData ()
 
virtual bool isActive () const
 Check if the tool is active.
 
virtual void paint (QPainter &painter, const QRect &blitRect)
 
virtual bool leavingThisTool ()
 Will clean up active connections.
 
virtual bool enteringThisTool ()
 Setup active connections here that should only emit while tool is active leavingThisTool will handle the cleanup of active connections.
 
bool isPropertyEnabled (int rawType)
 
bool isDrawingTool ()
 BaseTool::isDrawingTool - A drawing tool is anything that applies something to the canvas.
 
- Public Member Functions inherited from QObject
virtual const QMetaObject * metaObject () const const
 
 QObject (QObject *parent)
 
virtual bool event (QEvent *e)
 
virtual bool eventFilter (QObject *watched, QEvent *event)
 
QString objectName () const const
 
void setObjectName (const QString &name)
 
bool isWidgetType () const const
 
bool isWindowType () const const
 
bool signalsBlocked () const const
 
bool blockSignals (bool block)
 
QThread * thread () const const
 
void moveToThread (QThread *targetThread)
 
int startTimer (int time, Qt::TimerType timerType)
 
void killTimer (int id)
 
T findChild (const QString &name, Qt::FindChildOptions options) const const
 
QList< T > findChildren (const QString &name, Qt::FindChildOptions options) const const
 
QList< T > findChildren (const QRegExp &regExp, Qt::FindChildOptions options) const const
 
QList< T > findChildren (const QRegularExpression &re, Qt::FindChildOptions options) const const
 
const QObjectList & children () const const
 
void setParent (QObject *parent)
 
void installEventFilter (QObject *filterObj)
 
void removeEventFilter (QObject *obj)
 
QMetaObject::Connection connect (const QObject *sender, const char *signal, const char *method, Qt::ConnectionType type) const const
 
bool disconnect (const char *signal, const QObject *receiver, const char *method) const const
 
bool disconnect (const QObject *receiver, const char *method) const const
 
void dumpObjectTree ()
 
void dumpObjectInfo ()
 
void dumpObjectTree () const const
 
void dumpObjectInfo () const const
 
bool setProperty (const char *name, const QVariant &value)
 
QVariant property (const char *name) const const
 
QList< QByteArray > dynamicPropertyNames () const const
 
void destroyed (QObject *obj)
 
void objectNameChanged (const QString &objectName)
 
QObject * parent () const const
 
bool inherits (const char *className) const const
 
void deleteLater ()
 
 Q_DISABLE_COPY (Class)
 
 Q_DISABLE_MOVE (Class)
 
 Q_DISABLE_COPY_MOVE (Class)
 
T qobject_cast (QObject *object)
 
T qobject_cast (const QObject *object)
 
T qFindChild (const QObject *obj, const QString &name)
 
QList< T > qFindChildren (const QObject *obj, const QString &name)
 
QList< T > qFindChildren (const QObject *obj, const QRegExp &regExp)
 
 Q_CLASSINFO (Name, Value)
 
 Q_INTERFACES (...)
 
 Q_PROPERTY (...)
 
 Q_ENUMS (...)
 
 Q_FLAGS (...)
 
 Q_ENUM (...)
 
 Q_FLAG (...)
 
 Q_ENUM_NS (...)
 
 Q_FLAG_NS (...)
 
 Q_OBJECT Q_OBJECT
 
 Q_GADGET Q_GADGET
 
 Q_NAMESPACE Q_NAMESPACE
 
 Q_NAMESPACE_EXPORT (EXPORT_MACRO)
 
 Q_SIGNALS Q_SIGNALS
 
 Q_SIGNAL Q_SIGNAL
 
 Q_SLOTS Q_SLOTS
 
 Q_SLOT Q_SLOT
 
 Q_EMIT Q_EMIT
 
 Q_INVOKABLE Q_INVOKABLE
 
 Q_REVISION Q_REVISION
 
 Q_SET_OBJECT_NAME (Object)
 
 QT_NO_NARROWING_CONVERSIONS_IN_CONNECT QT_NO_NARROWING_CONVERSIONS_IN_CONNECT
 

Protected Member Functions

QPointF getCurrentPressPixel () const
 
QPointF getCurrentPressPoint () const
 
QPointF getCurrentPixel () const
 
QPointF getCurrentPoint () const
 
QPointF getLastPixel () const
 
QPointF getLastPoint () const
 
QRectF cursorRect (StrokeToolProperties::Type settingType, const QPointF &point)
 
virtual bool emptyFrameActionEnabled ()
 Whether to enable the "drawing on empty frame" preference.
 
- Protected Member Functions inherited from BaseTool
 BaseTool (QObject *parent)
 
Editor * editor ()
 
- Protected Member Functions inherited from QObject
QObject * sender () const const
 
int senderSignalIndex () const const
 
int receivers (const char *signal) const const
 
bool isSignalConnected (const QMetaMethod &signal) const const
 
virtual void timerEvent (QTimerEvent *event)
 
virtual void childEvent (QChildEvent *event)
 
virtual void customEvent (QEvent *event)
 
virtual void connectNotify (const QMetaMethod &signal)
 
virtual void disconnectNotify (const QMetaMethod &signal)
 

Protected Attributes

QHash< Qt::KeyboardModifiers, int > mQuickSizingProperties
 
bool mFirstDraw = false
 
QList< QPointF > mStrokePoints
 
QList< qreal > mStrokePressures
 
qreal mCurrentWidth = 0.0
 
qreal mCurrentPressure = 0.5
 
PointerEvent::InputType mCurrentInputType = PointerEvent::Unknown
 
bool mCanvasCursorEnabled = false
 
QPointF mLastPixel { 0, 0 }
 
StrokeInterpolator mInterpolator
 
const UndoSaveState * mUndoSaveState = nullptr
 
- Protected Attributes inherited from BaseTool
QHash< int, QSet< Layer::LAYER_TYPE > > mPropertyUsed
 
Editor * mEditor = nullptr
 
ScribbleArea * mScribbleArea = nullptr
 
QList< QMetaObject::Connection > mActiveConnections
 

Static Protected Attributes

static bool mQuickSizingEnabled = false
 
static const qreal FEATHER_MIN = 1.
 
static const qreal FEATHER_MAX = 99.
 
static const qreal WIDTH_MIN = 1.
 
static const qreal WIDTH_MAX = 200.
 

Private Attributes

CanvasCursorPainter mWidthCursorPainter
 
CanvasCursorPainter mFeatherCursorPainter
 
RadialOffsetTool mWidthSizingTool
 
RadialOffsetTool mFeatherSizingTool
 

Additional Inherited Members

- Static Public Member Functions inherited from BaseTool
static QString TypeName (ToolType)
 
- Static Public Member Functions inherited from QObject
QString tr (const char *sourceText, const char *disambiguation, int n)
 
QString trUtf8 (const char *sourceText, const char *disambiguation, int n)
 
QMetaObject::Connection connect (const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
 
QMetaObject::Connection connect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method, Qt::ConnectionType type)
 
QMetaObject::Connection connect (const QObject *sender, PointerToMemberFunction signal, const QObject *receiver, PointerToMemberFunction method, Qt::ConnectionType type)
 
QMetaObject::Connection connect (const QObject *sender, PointerToMemberFunction signal, Functor functor)
 
QMetaObject::Connection connect (const QObject *sender, PointerToMemberFunction signal, const QObject *context, Functor functor, Qt::ConnectionType type)
 
bool disconnect (const QObject *sender, const char *signal, const QObject *receiver, const char *method)
 
bool disconnect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method)
 
bool disconnect (const QMetaObject::Connection &connection)
 
bool disconnect (const QObject *sender, PointerToMemberFunction signal, const QObject *receiver, PointerToMemberFunction method)
 
- Public Attributes inherited from QObject
typedef QObjectList
 
- Properties inherited from QObject
 objectName
 

Detailed Description

Definition at line 34 of file stroketool.h.

Constructor & Destructor Documentation

◆ StrokeTool()

StrokeTool::StrokeTool ( QObject *  parent)
explicit

Definition at line 52 of file stroketool.cpp.

◆ ~StrokeTool()

StrokeTool::~StrokeTool ( )

Definition at line 57 of file stroketool.cpp.

Member Function Documentation

◆ cursorRect()

QRectF StrokeTool::cursorRect ( StrokeToolProperties::Type  settingType,
const QPointF &  point 
)
protected

Definition at line 317 of file stroketool.cpp.

◆ drawStroke()

void StrokeTool::drawStroke ( )

Definition at line 220 of file stroketool.cpp.

◆ emptyFrameActionEnabled()

bool StrokeTool::emptyFrameActionEnabled ( )
protectedvirtual

Whether to enable the "drawing on empty frame" preference.

If true, then the user preference is honored. If false, then the stroke is drawn on the previous key-frame (i.e. the "old" Pencil behaviour). Returns true by default.

Reimplemented in SmudgeTool.

Definition at line 200 of file stroketool.cpp.

◆ endStroke()

void StrokeTool::endStroke ( )

Definition at line 205 of file stroketool.cpp.

◆ enterEvent()

bool StrokeTool::enterEvent ( QEnterEvent *  )
overridevirtual

Reimplemented from BaseTool.

Definition at line 298 of file stroketool.cpp.

◆ enteringThisTool()

bool StrokeTool::enteringThisTool ( )
overridevirtual

Setup active connections here that should only emit while tool is active leavingThisTool will handle the cleanup of active connections.

Reimplemented from BaseTool.

Definition at line 101 of file stroketool.cpp.

◆ getCurrentPixel()

QPointF StrokeTool::getCurrentPixel ( ) const
protected

Definition at line 136 of file stroketool.cpp.

◆ getCurrentPoint()

QPointF StrokeTool::getCurrentPoint ( ) const
protected

Definition at line 141 of file stroketool.cpp.

◆ getCurrentPressPixel()

QPointF StrokeTool::getCurrentPressPixel ( ) const
protected

Definition at line 126 of file stroketool.cpp.

◆ getCurrentPressPoint()

QPointF StrokeTool::getCurrentPressPoint ( ) const
protected

Definition at line 131 of file stroketool.cpp.

◆ getLastPixel()

QPointF StrokeTool::getLastPixel ( ) const
protected

Definition at line 146 of file stroketool.cpp.

◆ getLastPoint()

QPointF StrokeTool::getLastPoint ( ) const
protected

Definition at line 151 of file stroketool.cpp.

◆ handleQuickSizing()

bool StrokeTool::handleQuickSizing ( PointerEvent *  event)

Definition at line 236 of file stroketool.cpp.

◆ isActive()

bool StrokeTool::isActive ( ) const
inlineoverridevirtual

Check if the tool is active.

An active tool is definied as one which is actively modifying the buffer. This is used to check if an full frame cache can be used instead of redrawing with CanvasPainter.

Returns
Returns true if the tool is currently active, else returns false.

Reimplemented from BaseTool.

Definition at line 54 of file stroketool.h.

◆ keyPressEvent()

bool StrokeTool::keyPressEvent ( QKeyEvent *  event)
overridevirtual

Reimplemented from BaseTool.

Definition at line 181 of file stroketool.cpp.

◆ leaveEvent()

bool StrokeTool::leaveEvent ( QEvent *  )
overridevirtual

Reimplemented from BaseTool.

Definition at line 304 of file stroketool.cpp.

◆ leavingThisTool()

bool StrokeTool::leavingThisTool ( )
overridevirtual

Will clean up active connections.

Reimplemented from BaseTool.

Definition at line 107 of file stroketool.cpp.

◆ loadSettings()

void StrokeTool::loadSettings ( )
overridevirtual

Given the way that we update preferences currently, this connection should not be removed when the tool is not active.

Implements BaseTool.

Definition at line 61 of file stroketool.cpp.

◆ onPreferenceChanged

void StrokeTool::onPreferenceChanged ( SETTING  setting)
slot

Definition at line 112 of file stroketool.cpp.

◆ onViewUpdated

void StrokeTool::onViewUpdated ( )
slot

Definition at line 121 of file stroketool.cpp.

◆ paint()

void StrokeTool::paint ( QPainter &  painter,
const QRect &  blitRect 
)
overridevirtual

Reimplemented from BaseTool.

Definition at line 377 of file stroketool.cpp.

◆ pointerMoveEvent()

void StrokeTool::pointerMoveEvent ( PointerEvent *  event)
overridevirtual

Implements BaseTool.

Definition at line 288 of file stroketool.cpp.

◆ pointerPressEvent()

void StrokeTool::pointerPressEvent ( PointerEvent *  event)
overridevirtual

Implements BaseTool.

Definition at line 283 of file stroketool.cpp.

◆ pointerReleaseEvent()

void StrokeTool::pointerReleaseEvent ( PointerEvent *  event)
overridevirtual

Implements BaseTool.

Definition at line 293 of file stroketool.cpp.

◆ setAntiAliasingEnabled()

void StrokeTool::setAntiAliasingEnabled ( bool  enabled)
virtual

Definition at line 427 of file stroketool.cpp.

◆ setFeather()

void StrokeTool::setFeather ( qreal  feather)
virtual

Definition at line 403 of file stroketool.cpp.

◆ setFeatherEnabled()

void StrokeTool::setFeatherEnabled ( bool  enabled)
virtual

Definition at line 397 of file stroketool.cpp.

◆ setFillContourEnabled()

void StrokeTool::setFillContourEnabled ( bool  enabled)
virtual

Definition at line 421 of file stroketool.cpp.

◆ setPressureEnabled()

void StrokeTool::setPressureEnabled ( bool  enabled)
virtual

Definition at line 415 of file stroketool.cpp.

◆ setStablizationLevel()

void StrokeTool::setStablizationLevel ( int  level)
virtual

Definition at line 391 of file stroketool.cpp.

◆ setStrokeInvisibleEnabled()

void StrokeTool::setStrokeInvisibleEnabled ( bool  enabled)
virtual

Definition at line 433 of file stroketool.cpp.

◆ setWidth()

void StrokeTool::setWidth ( qreal  width)
virtual

Definition at line 409 of file stroketool.cpp.

◆ startStroke()

void StrokeTool::startStroke ( PointerEvent::InputType  inputType)

Definition at line 156 of file stroketool.cpp.

◆ updateCanvasCursor()

void StrokeTool::updateCanvasCursor ( )

Definition at line 345 of file stroketool.cpp.

Member Data Documentation

◆ FEATHER_MAX

const qreal StrokeTool::FEATHER_MAX = 99.
staticprotected

Definition at line 128 of file stroketool.h.

◆ FEATHER_MIN

const qreal StrokeTool::FEATHER_MIN = 1.
staticprotected

Definition at line 127 of file stroketool.h.

◆ mCanvasCursorEnabled

bool StrokeTool::mCanvasCursorEnabled = false
protected

Definition at line 120 of file stroketool.h.

◆ mCurrentInputType

PointerEvent::InputType StrokeTool::mCurrentInputType = PointerEvent::Unknown
protected

Definition at line 111 of file stroketool.h.

◆ mCurrentPressure

qreal StrokeTool::mCurrentPressure = 0.5
protected

Definition at line 109 of file stroketool.h.

◆ mCurrentWidth

qreal StrokeTool::mCurrentWidth = 0.0
protected

Definition at line 108 of file stroketool.h.

◆ mFeatherCursorPainter

CanvasCursorPainter StrokeTool::mFeatherCursorPainter
private

Definition at line 134 of file stroketool.h.

◆ mFeatherSizingTool

RadialOffsetTool StrokeTool::mFeatherSizingTool
private

Definition at line 137 of file stroketool.h.

◆ mFirstDraw

bool StrokeTool::mFirstDraw = false
protected

Definition at line 103 of file stroketool.h.

◆ mInterpolator

StrokeInterpolator StrokeTool::mInterpolator
protected

Definition at line 123 of file stroketool.h.

◆ mLastPixel

QPointF StrokeTool::mLastPixel { 0, 0 }
protected

Definition at line 121 of file stroketool.h.

◆ mQuickSizingEnabled

bool StrokeTool::mQuickSizingEnabled = false
staticprotected

Definition at line 100 of file stroketool.h.

◆ mQuickSizingProperties

QHash<Qt::KeyboardModifiers, int> StrokeTool::mQuickSizingProperties
protected

Definition at line 102 of file stroketool.h.

◆ mStrokePoints

QList<QPointF> StrokeTool::mStrokePoints
protected

Definition at line 105 of file stroketool.h.

◆ mStrokePressures

QList<qreal> StrokeTool::mStrokePressures
protected

Definition at line 106 of file stroketool.h.

◆ mUndoSaveState

const UndoSaveState* StrokeTool::mUndoSaveState = nullptr
protected

Definition at line 125 of file stroketool.h.

◆ mWidthCursorPainter

CanvasCursorPainter StrokeTool::mWidthCursorPainter
private

Definition at line 133 of file stroketool.h.

◆ mWidthSizingTool

RadialOffsetTool StrokeTool::mWidthSizingTool
private

Definition at line 136 of file stroketool.h.

◆ WIDTH_MAX

const qreal StrokeTool::WIDTH_MAX = 200.
staticprotected

Definition at line 130 of file stroketool.h.

◆ WIDTH_MIN

const qreal StrokeTool::WIDTH_MIN = 1.
staticprotected

Definition at line 129 of file stroketool.h.


The documentation for this class was generated from the following files:
  • core_lib/src/tool/stroketool.h
  • core_lib/src/tool/stroketool.cpp
Generated on Tue Jan 6 2026 11:38:52 for Pencil2D by doxygen 1.9.6 based on revision f91a96748ec6712509b9b0ff47979db9c34d556f