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

#include <kis_tool_brush.h>

+ Inheritance diagram for KisToolBrush:

Public Slots

void activate (const QSet< KoShape * > &shapes) override
 
void deactivate () override
 
void setDelayDistance (qreal value)
 
void setFinishStabilizedCurve (bool value)
 
void setSmoothPressure (bool value)
 
void setStabilizeSensors (bool value)
 
void setUseDelayDistance (bool value)
 
void setUseScalableDistance (bool value)
 
void slotSetMagnetism (int magnetism)
 
void slotSetSmoothingType (int index)
 
void slotSetSmoothnessDistanceKeepAspectRatio (bool value)
 
void slotSetSmoothnessDistanceMax (qreal distance)
 
void slotSetSmoothnessDistanceMin (qreal distance)
 
void slotSetTailAggressiveness (qreal argh_rhhrr)
 
void updateSettingsViews () override
 
- Public Slots inherited from KisToolFreehand
void activate (const QSet< KoShape * > &shapes) override
 
void deactivate () override
 
- Public Slots inherited from KisToolPaint
void activate (const QSet< KoShape * > &shapes) override
 
void deactivate () override
 
- Public Slots inherited from KisTool
void activate (const QSet< KoShape * > &shapes) override
 
void canvasResourceChanged (int key, const QVariant &res) override
 
void deactivate () override
 
virtual void updateSettingsViews ()
 
- Public Slots inherited from KoToolBase
virtual void activate (const QSet< KoShape * > &shapes)
 
virtual void deactivate ()
 
virtual void documentResourceChanged (int key, const QVariant &res)
 
virtual void repaintDecorations ()
 
virtual void requestRedoDuringStroke ()
 
virtual void requestStrokeCancellation ()
 
virtual void requestStrokeEnd ()
 
virtual void requestUndoDuringStroke ()
 
void setStatusText (const QString &statusText)
 
void updateOptionsWidgetIcons ()
 

Signals

void delayDistanceChanged ()
 
void finishStabilizedCurveChanged ()
 
void smoothingTypeChanged ()
 
void smoothnessFactorChanged ()
 
void smoothnessQualityChanged ()
 
void smoothPressureChanged ()
 
void stabilizeSensorsChanged ()
 
void useDelayDistanceChanged ()
 
void useScalableDistanceChanged ()
 
- Signals inherited from KisToolPaint
void sigPaintingFinished ()
 
- Signals inherited from KisTool
void isActiveChanged (bool isActivated)
 
- Signals inherited from KoToolBase
void activateTool (const QString &id)
 
void cursorChanged (const QCursor &cursor)
 
void selectionChanged (bool hasSelection)
 
void statusTextChanged (const QString &statusText)
 
void textModeChanged (bool inTextMode)
 

Public Member Functions

QWidget * createOptionWidget () override
 
qreal delayDistance () const
 
bool finishStabilizedCurve () const
 
 KisToolBrush (KoCanvasBase *canvas)
 
int smoothingType () const
 
qreal smoothnessFactor () const
 
int smoothnessQualityMax () const
 
int smoothnessQualityMin () const
 
bool smoothPressure () const
 
bool stabilizeSensors () const
 
bool useDelayDistance () const
 
bool useScalableDistance () const
 
 ~KisToolBrush () override
 
- Public Member Functions inherited from KisToolFreehand
int flags () const override
 
 KisToolFreehand (KoCanvasBase *canvas, const QCursor &cursor, const KUndo2MagicString &transactionText, bool useSavedSmoothing=true)
 
void mouseMoveEvent (KoPointerEvent *event) override
 
 ~KisToolFreehand () override
 
- Public Member Functions inherited from KisToolPaint
int flags () const override
 
 KisToolPaint (KoCanvasBase *canvas, const QCursor &cursor)
 
void mouseMoveEvent (KoPointerEvent *event) override
 
void mousePressEvent (KoPointerEvent *event) override
 
void mouseReleaseEvent (KoPointerEvent *event) override
 
KisPopupWidgetInterfacepopupWidget () override
 
 ~KisToolPaint () override
 
- Public Member Functions inherited from KisTool
virtual bool alternateActionSupportsHiResEvents (AlternateAction action) const
 
virtual void beginAlternateDoubleClickAction (KoPointerEvent *event, AlternateAction action)
 
virtual void beginPrimaryDoubleClickAction (KoPointerEvent *event)
 
void deleteSelection () override
 
bool isActive () const
 
 KisTool (KoCanvasBase *canvas, const QCursor &cursor)
 
void mouseDoubleClickEvent (KoPointerEvent *event) override
 
void mouseTripleClickEvent (KoPointerEvent *event) override
 
virtual void newActivationWithExternalSource (KisPaintDeviceSP externalSource)
 newActivationWithExternalSource Makes sure that the tool is active and starts a new stroke, which will be able to access the pixels from the specified external source.
 
KisTool::NodePaintAbility nodePaintAbility ()
 
 ~KisTool () override
 
- Public Member Functions inherited from Private
 Private (KisCanvas2 *c)
 
- Public Member Functions inherited from KoToolBase
QAction * action (const QString &name) const
 
KoCanvasBasecanvas () const
 Returns the canvas the tool is working on.
 
virtual void copy () const
 
QCursor cursor () const
 return the last emitted cursor
 
virtual void customMoveEvent (KoPointerEvent *event)
 
virtual void customPressEvent (KoPointerEvent *event)
 
virtual void customReleaseEvent (KoPointerEvent *event)
 
virtual void cut ()
 
virtual QRectF decorationsRect () const
 
int decorationThickness () const
 decorationThickness The minimum thickness for tool decoration lines, this is derived from the screen magnification, thus the HiDPI settings. Note: to use this effectively, also set the pen to isCosmetic(true);
 
virtual void deselect ()
 deselect the tool should clear the selection if it has one.
 
virtual void dragLeaveEvent (QDragLeaveEvent *event)
 
virtual void dragMoveEvent (QDragMoveEvent *event, const QPointF &point)
 
virtual void dropEvent (QDropEvent *event, const QPointF &point)
 
virtual void explicitUserStrokeEndRequest ()
 explicitUserStrokeEndRequest is called by the input manager when the user presses Enter key or any equivalent. This callback comes before requestStrokeEnd(), which comes from a different source.
 
KoToolFactoryBasefactory () const
 
virtual void focusInEvent (QFocusEvent *event)
 
virtual void focusOutEvent (QFocusEvent *event)
 
virtual bool hasSelection ()
 
virtual void inputMethodEvent (QInputMethodEvent *event)
 
virtual QVariant inputMethodQuery (Qt::InputMethodQuery query) const
 
bool isInTextMode () const
 
bool isOpacityPresetMode () const
 
virtual void keyPressEvent (QKeyEvent *event)
 
virtual void keyReleaseEvent (QKeyEvent *event)
 
 KoToolBase (KoCanvasBase *canvas)
 
bool maskSyntheticEvents () const
 
QList< QPointer< QWidget > > optionWidgets ()
 
virtual bool paste ()
 
virtual QMenu * popupActionsMenu ()
 
virtual bool selectAll ()
 selectAll select all data the tool can select.
 
virtual KoToolSelectionselection ()
 
Q_INVOKABLE QString toolId () const
 
 ~KoToolBase () override
 

Protected Slots

void resetCursorStyle () override
 
- Protected Slots inherited from KisToolFreehand
void explicitUpdateOutline ()
 
void resetCursorStyle () override
 
void setAssistant (bool assistant)
 
void setOnlyOneAssistantSnap (bool assistant)
 
void setSnapEraser (bool assistant)
 
void slotDoResizeBrush (qreal newSize)
 
- Protected Slots inherited from KisTool
virtual void resetCursorStyle ()
 

Protected Attributes

KConfigGroup m_configGroup
 
- Protected Attributes inherited from KisToolFreehand
bool m_assistant {false}
 
bool m_eraser_snapping {false}
 
double m_magnetism {1.0}
 
bool m_only_one_assistant {true}
 
- Protected Attributes inherited from KisToolPaint
KisOptimizedBrushOutline m_currentOutline
 
QRectF m_oldColorPreviewUpdateRect
 
QRectF m_oldOutlineRect
 
QPointF m_outlineDocPoint
 
bool m_paintOutline {false}
 
- Protected Attributes inherited from KoToolBase
KoToolBasePrivated_ptr
 

Properties

qreal delayDistance
 
bool finishStabilizedCurve
 
int smoothingType
 
qreal smoothnessFactor
 
int smoothnessQualityMax
 
int smoothnessQualityMin
 
bool smoothPressure
 
bool stabilizeSensors
 
bool useDelayDistance
 
bool useScalableDistance
 
- Properties inherited from KisTool
bool isActive
 

Private Member Functions

void addSmoothingAction (int enumId, const QString &id)
 
void updateSmoothnessDistanceLabel ()
 

Private Attributes

QCheckBox * m_chkAssistant {0}
 
QCheckBox * m_chkDelayDistance {0}
 
QCheckBox * m_chkFinishStabilizedCurve {0}
 
QCheckBox * m_chkOnlyOneAssistant {0}
 
QCheckBox * m_chkSmoothPressure {0}
 
QCheckBox * m_chkSnapEraser {0}
 
QCheckBox * m_chkStabilizeSensors {0}
 
QCheckBox * m_chkUseScalableDistance {0}
 
QComboBox * m_cmbSmoothingType {0}
 
KoAspectButtonm_distanceAspectButton {0}
 
QLabel * m_lblSmoothnessDistanceMax {0}
 
QLabel * m_lblSmoothnessDistanceMin {0}
 
KisSignalMapper m_signalMapper
 
KisDoubleSliderSpinBoxm_sliderDelayDistance {0}
 
KisSliderSpinBoxm_sliderMagnetism {0}
 
KisDoubleSliderSpinBoxm_sliderSmoothnessDistanceMax {0}
 
KisDoubleSliderSpinBoxm_sliderSmoothnessDistanceMin {0}
 
KisDoubleSliderSpinBoxm_sliderTailAggressiveness {0}
 

Additional Inherited Members

- Public Types inherited from KisTool
enum  { FLAG_USES_CUSTOM_PRESET =0x01 , FLAG_USES_CUSTOM_COMPOSITEOP =0x02 , FLAG_USES_CUSTOM_SIZE =0x04 }
 
enum  AlternateAction {
  ChangeSize = AlternateChangeSize , ChangeSizeSnap = AlternateChangeSizeSnap , SampleFgNode = AlternateSampleFgNode , SampleBgNode = AlternateSampleBgNode ,
  SampleFgImage = AlternateSampleFgImage , SampleBgImage = AlternateSampleBgImage , Secondary = AlternateSecondary , Third = AlternateThird ,
  Fourth = AlternateFourth , Fifth = AlternateFifth , NONE = 10000
}
 
enum  NodePaintAbility {
  VECTOR , CLONE , PAINT , UNPAINTABLE ,
  MYPAINTBRUSH_UNPAINTABLE
}
 
enum  ToolAction {
  Primary , AlternateChangeSize , AlternateChangeSizeSnap , AlternateSampleFgNode ,
  AlternateSampleBgNode , AlternateSampleFgImage , AlternateSampleBgImage , AlternateSecondary ,
  AlternateThird , AlternateFourth , AlternateFifth , Alternate_NONE = 10000
}
 
- Static Public Member Functions inherited from KisTool
static AlternateAction actionToAlternateAction (ToolAction action)
 
- Public Attributes inherited from KisTool
KoColor currentBgColor
 
float currentExposure {1.0}
 
KoColor currentFgColor
 
KisFilterConfigurationSP currentGenerator
 
KoAbstractGradientSP currentGradient
 
KoPatternSP currentPattern
 
QCursor cursor
 
bool m_isActive {false}
 
ToolMode m_mode {HOVER_MODE}
 
QWidget * optionWidget {0}
 
- Public Attributes inherited from Private
KisCanvas2canvas
 
int displayedFrame
 
int intendedFrame
 
- Protected Types inherited from KisTool
enum  ToolMode : int {
  HOVER_MODE , PAINT_MODE , SECONDARY_PAINT_MODE , MIRROR_AXIS_SETUP_MODE ,
  GESTURE_MODE , PAN_MODE , OTHER , OTHER_1
}
 
- Protected Member Functions inherited from KisToolFreehand
void activateAlternateAction (AlternateAction action) override
 
void beginAlternateAction (KoPointerEvent *event, AlternateAction action) override
 
void beginPrimaryAction (KoPointerEvent *event) override
 
void continueAlternateAction (KoPointerEvent *event, AlternateAction action) override
 
void continuePrimaryAction (KoPointerEvent *event) override
 
void deactivateAlternateAction (AlternateAction action) override
 
virtual void doStroke (KoPointerEvent *event)
 
void endAlternateAction (KoPointerEvent *event, AlternateAction action) override
 
void endPrimaryAction (KoPointerEvent *event) override
 
virtual void endStroke ()
 
KisOptimizedBrushOutline getOutlinePath (const QPointF &documentPos, const KoPointerEvent *event, KisPaintOpSettings::OutlineMode outlineMode) override
 
virtual void initStroke (KoPointerEvent *event)
 
KisPaintingInformationBuilderpaintingInformationBuilder () const
 
bool primaryActionSupportsHiResEvents () const override
 
void resetHelper (KisToolFreehandHelper *helper)
 
KisSmoothingOptionsSP smoothingOptions () const
 
bool supportsPaintingAssistants () const override
 
bool trySampleByPaintOp (KoPointerEvent *event, AlternateAction action)
 
bool wantsAutoScroll () const override
 
- Protected Member Functions inherited from KisToolPaint
void activateAlternateAction (AlternateAction action) override
 
void activatePrimaryAction () override
 
void addOptionWidgetLayout (QLayout *layout)
 Add the tool-specific layout to the default option widget layout.
 
virtual void addOptionWidgetOption (QWidget *control, QWidget *label=nullptr)
 Add a widget and a label to the current option widget layout.
 
void beginAlternateAction (KoPointerEvent *event, AlternateAction action) override
 
void canvasResourceChanged (int key, const QVariant &v) override
 
void continueAlternateAction (KoPointerEvent *event, AlternateAction action) override
 
QWidget * createOptionWidget () override
 
void deactivateAlternateAction (AlternateAction action) override
 
void deactivatePrimaryAction () override
 
void enableControl (QWidget *control, bool value)
 
void endAlternateAction (KoPointerEvent *event, AlternateAction action) override
 
bool isEraser () const
 
bool isOutlineEnabled () const
 
bool isOutlineVisible () const
 
void paint (QPainter &gc, const KoViewConverter &converter) override
 
virtual QString quickHelp () const
 
virtual void requestUpdateOutline (const QPointF &outlineDocPoint, const KoPointerEvent *event)
 
void setMode (ToolMode mode) override
 
void setOutlineEnabled (bool enabled)
 
void setOutlineVisible (bool visible)
 
void setSupportOutline (bool supportOutline)
 
void showControl (QWidget *control, bool value)
 
- Protected Member Functions inherited from KisTool
bool blockUntilOperationsFinished ()
 
void blockUntilOperationsFinishedForced ()
 
QPointF convertDocumentToWidget (const QPointF &pt)
 
QPoint convertToImagePixelCoordFloored (KoPointerEvent *e)
 
QPointF convertToPixelCoord (const QPointF &pt)
 
QPointF convertToPixelCoord (KoPointerEvent *e)
 
QPointF convertToPixelCoordAndAlignOnWidget (const QPointF &pt)
 
QPointF convertToPixelCoordAndSnap (const QPointF &pt, const QPointF &offset=QPointF())
 
QPointF convertToPixelCoordAndSnap (KoPointerEvent *e, const QPointF &offset=QPointF(), bool useModifiers=true)
 
QRectF convertToPt (const QRectF &rect)
 
qreal convertToPt (qreal value)
 
KoColor currentBgColor ()
 
KoColor currentFgColor ()
 
KisFilterConfigurationSP currentGenerator ()
 
KoAbstractGradientSP currentGradient ()
 
KisImageWSP currentImage ()
 
KisNodeSP currentNode () const
 
KisPaintOpPresetSP currentPaintOpPreset ()
 
KoPatternSP currentPattern ()
 
QCursor cursor () const
 
KisImageWSP image () const
 
virtual bool listeningToModifiers ()
 
virtual void listenToModifiers (bool listen)
 
virtual ToolMode mode () const
 
bool nodeEditable ()
 Checks checks if the current node is editable.
 
bool overrideCursorIfNotEditable ()
 Override the cursor appropriately if current node is not editable.
 
void paintToolOutline (QPainter *painter, const KisOptimizedBrushOutline &path)
 
KisOptimizedBrushOutline pixelToView (const KisOptimizedBrushOutline &path) const
 
QPainterPath pixelToView (const QPainterPath &pixelPath) const
 Convert a pixel path into a view path.
 
QPointF pixelToView (const QPoint &pixelCoord) const
 
QPointF pixelToView (const QPointF &pixelCoord) const
 Convert a floating point pixel coordinate into a view coordinate.
 
QPolygonF pixelToView (const QPolygonF &pixelPolygon) const
 Convert a pixel polygon into a view path.
 
QRectF pixelToView (const QRectF &pixelRect) const
 Convert a pixel rectangle into a view rectangle.
 
KisNodeList selectedNodes () const
 
bool selectionEditable ()
 Checks checks if the selection is editable, only applies to local selection as global selection is always editable.
 
void setCursor (const QCursor &cursor)
 
void updateCanvasPixelRect (const QRectF &pixelRect)
 Update the canvas for the given rectangle in image pixel coordinates.
 
void updateCanvasViewRect (const QRectF &viewRect)
 Update the canvas for the given rectangle in view coordinates.
 
QPointF viewToPixel (const QPointF &viewCoord) const
 
QPointF widgetCenterInWidgetPixels ()
 
- Protected Member Functions inherited from KoToolBase
virtual QList< QPointer< QWidget > > createOptionWidgets ()
 
int grabSensitivity () const
 Convenience function to get the current grab sensitivity.
 
qreal handleDocRadius () const
 
QRectF handleGrabRect (const QPointF &position) const
 
QRectF handlePaintRect (const QPointF &position) const
 
int handleRadius () const
 Convenience function to get the current handle radius.
 
bool isActivated () const
 
 KoToolBase (KoToolBasePrivate &dd)
 
KoPointerEventlastDeliveredPointerEvent () const
 
void setAbstractResource (KoAbstractCanvasResourceInterfaceSP abstractResource)
 
void setConverter (KoDerivedResourceConverterSP converter)
 
void setIsOpacityPresetMode (bool value)
 
void setMaskSyntheticEvents (bool value)
 
void setTextMode (bool value)
 
QHash< int, KoAbstractCanvasResourceInterfaceSPtoolAbstractResources ()
 
QHash< int, KoDerivedResourceConverterSPtoolConverters ()
 
void useCursor (const QCursor &cursor)
 

Detailed Description

Definition at line 36 of file kis_tool_brush.h.

Constructor & Destructor Documentation

◆ KisToolBrush()

KisToolBrush::KisToolBrush ( KoCanvasBase * canvas)

Definition at line 55 of file kis_tool_brush.cc.

57 KisCursor::load("tool_freehand_cursor.xpm", 2, 2),
58 kundo2_i18n("Freehand Brush Stroke"))
59{
60 setObjectName("tool_brush");
62
63 connect(this, SIGNAL(smoothingTypeChanged()), this, SLOT(resetCursorStyle()));
64
66 addSmoothingAction(KisSmoothingOptions::SIMPLE_SMOOTHING, "set_simple_brush_smoothing");
67 addSmoothingAction(KisSmoothingOptions::WEIGHTED_SMOOTHING, "set_weighted_brush_smoothing");
68 addSmoothingAction(KisSmoothingOptions::STABILIZER, "set_stabilizer_brush_smoothing");
69 addSmoothingAction(KisSmoothingOptions::PIXEL_PERFECT, "set_pixel_perfect_smoothing");
70}
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
static QCursor load(const QString &cursorName, int hotspotX=-1, int hotspotY=-1)
void addSmoothingAction(int enumId, const QString &id)
void resetCursorStyle() override
void smoothingTypeChanged()
KisToolFreehand(KoCanvasBase *canvas, const QCursor &cursor, const KUndo2MagicString &transactionText, bool useSavedSmoothing=true)
void setIsOpacityPresetMode(bool value)
KUndo2MagicString kundo2_i18n(const char *text)
KisCanvas2 * canvas

References addSmoothingAction(), connect(), KisSmoothingOptions::NO_SMOOTHING, KisSmoothingOptions::PIXEL_PERFECT, resetCursorStyle(), KoToolBase::setIsOpacityPresetMode(), KisSmoothingOptions::SIMPLE_SMOOTHING, smoothingTypeChanged(), KisSmoothingOptions::STABILIZER, and KisSmoothingOptions::WEIGHTED_SMOOTHING.

◆ ~KisToolBrush()

KisToolBrush::~KisToolBrush ( )
override

Definition at line 72 of file kis_tool_brush.cc.

73{
74}

Member Function Documentation

◆ activate

void KisToolBrush::activate ( const QSet< KoShape * > & shapes)
overrideslot

Definition at line 76 of file kis_tool_brush.cc.

77{
79 connect(&m_signalMapper, SIGNAL(mapped(int)), SLOT(slotSetSmoothingType(int)), Qt::UniqueConnection);
80
81 m_configGroup = KSharedConfig::openConfig()->group(toolId());
82 optionWidgets(); // Ensure m_chkAssistant is initialized.
83 QAction *toggleaction = action("toggle_assistant");
84 connect(toggleaction, SIGNAL(triggered(bool)), m_chkAssistant, SLOT(toggle()), Qt::UniqueConnection);
85}
KisSignalMapper m_signalMapper
KConfigGroup m_configGroup
void slotSetSmoothingType(int index)
QCheckBox * m_chkAssistant
void activate(const QSet< KoShape * > &shapes) override
Q_INVOKABLE QString toolId() const
QAction * action(const QString &name) const
QList< QPointer< QWidget > > optionWidgets()

References KoToolBase::action(), KisToolFreehand::activate(), connect(), m_chkAssistant, m_configGroup, m_signalMapper, KoToolBase::optionWidgets(), slotSetSmoothingType(), and KoToolBase::toolId().

◆ addSmoothingAction()

void KisToolBrush::addSmoothingAction ( int enumId,
const QString & id )
private

KisToolBrush is the base of several tools, but the actions should be unique, so let's be careful with them

Definition at line 44 of file kis_tool_brush.cc.

45{
50 QAction *a = action(id);
51 connect(a, SIGNAL(triggered()), &m_signalMapper, SLOT(map()));
52 m_signalMapper.setMapping(a, enumId);
53}
void setMapping(QObject *sender, int id)

References KoToolBase::action(), connect(), m_signalMapper, and KisSignalMapper::setMapping().

◆ createOptionWidget()

QWidget * KisToolBrush::createOptionWidget ( )
overridevirtual

Reimplement this if your tool actually has an option widget. Sets the option widget to 0 by default.

Reimplemented from KisTool.

Reimplemented in KisToolMultihand.

Definition at line 401 of file kis_tool_brush.cc.

402{
403 QWidget *optionsWidget = KisToolFreehand::createOptionWidget();
404 optionsWidget->setObjectName(toolId() + "option widget");
405
406 // See https://bugs.kde.org/show_bug.cgi?id=316896
407 QWidget *specialSpacer = new QWidget(optionsWidget);
408 specialSpacer->setObjectName("SpecialSpacer");
409 specialSpacer->setFixedSize(0, 0);
410 optionsWidget->layout()->addWidget(specialSpacer);
411
412 // Line smoothing configuration
413 m_cmbSmoothingType = new QComboBox(optionsWidget);
415 << i18nc("@item:inlistbox Brush Smoothing", "None")
416 << i18nc("@item:inlistbox Brush Smoothing", "Basic")
417 << i18nc("@item:inlistbox Brush Smoothing", "Weighted")
418 << i18nc("@item:inlistbox Brush Smoothing", "Stabilizer")
419 << i18nc("@item:inlistbox Brush Smoothing", "Pixel"));
420 connect(m_cmbSmoothingType, SIGNAL(currentIndexChanged(int)), this, SLOT(slotSetSmoothingType(int)));
421 addOptionWidgetOption(m_cmbSmoothingType, new QLabel(i18n("Brush Smoothing:"), optionsWidget));
422
423 // Smoothness Distance
425 m_sliderSmoothnessDistanceMin->setEnabled(true);
426 m_lblSmoothnessDistanceMin = new QLabel(optionsWidget);
427
429 m_sliderSmoothnessDistanceMax->setEnabled(true);
430 m_lblSmoothnessDistanceMax = new QLabel(optionsWidget);
431
433 // make sure that initialization of the value happens **after** we
434 // have configured the slider's range in updateSmoothnessDistanceLabel()
435 connect(m_sliderSmoothnessDistanceMin, SIGNAL(valueChanged(qreal)), SLOT(slotSetSmoothnessDistanceMin(qreal)));
436 m_sliderSmoothnessDistanceMin->setValue(smoothingOptions()->smoothnessDistanceMin());
437
438 connect(m_sliderSmoothnessDistanceMax, SIGNAL(valueChanged(qreal)), SLOT(slotSetSmoothnessDistanceMax(qreal)));
439 m_sliderSmoothnessDistanceMax->setValue(smoothingOptions()->smoothnessDistanceMax());
440
441 // Create KoAspectButton
442 m_distanceAspectButton = new KoAspectButton(optionsWidget);
443 m_distanceAspectButton->setKeepAspectRatio(smoothingOptions()->smoothnessDistanceKeepAspectRatio());
444 m_distanceAspectButton->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
445 m_distanceAspectButton->setMinimumSize(QSize(24, 24));
446 connect(m_distanceAspectButton, SIGNAL(keepAspectRatioChanged(bool)), SLOT(slotSetSmoothnessDistanceKeepAspectRatio(bool)));
447
448 // Add distanceLabels
449 QWidget* distanceLabelWidget = new QWidget(optionsWidget);
450 QVBoxLayout* distanceLabelLayout = new QVBoxLayout(distanceLabelWidget);
451 distanceLabelLayout->setContentsMargins(0,0,0,0);
452 distanceLabelLayout->setSpacing(5);
453 distanceLabelLayout->addWidget(m_lblSmoothnessDistanceMin);
454 distanceLabelLayout->addWidget(m_lblSmoothnessDistanceMax);
455
456 // Add distanceSliders
457 QWidget* distanceSliderWidget = new QWidget(optionsWidget);
458 QGridLayout* distanceSliderLayout = new QGridLayout(distanceSliderWidget);
459 distanceSliderLayout->setContentsMargins(0,0,0,0);
460 distanceSliderLayout->setHorizontalSpacing(0);
461 distanceSliderLayout->setVerticalSpacing(5);
462 distanceSliderLayout->addWidget(m_sliderSmoothnessDistanceMin, 0, 0, 1, 1);
463 distanceSliderLayout->addWidget(m_sliderSmoothnessDistanceMax, 1, 0, 1, 1);
464 distanceSliderLayout->addWidget(m_distanceAspectButton, 0, 1, 2, 1);
465
466 addOptionWidgetOption(distanceSliderWidget, distanceLabelWidget);
467
468 KisAspectRatioLocker *distanceAspectLocker = new KisAspectRatioLocker(this);
470
471 // Finish stabilizer curve
472 m_chkFinishStabilizedCurve = new QCheckBox(optionsWidget);
473 connect(m_chkFinishStabilizedCurve, SIGNAL(toggled(bool)), this, SLOT(setFinishStabilizedCurve(bool)));
475 m_chkFinishStabilizedCurve->setMinimumHeight(m_cmbSmoothingType->sizeHint().height()-3);
476
477 // Delay Distance for Stabilizer
478 QWidget* delayWidget = new QWidget(optionsWidget);
479 QHBoxLayout* delayLayout = new QHBoxLayout(delayWidget);
480 delayLayout->setContentsMargins(0,0,0,0);
481 delayLayout->setSpacing(1);
482 QLabel* delayLabel = new QLabel(i18n("Delay:"), optionsWidget);
483 delayLabel->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
484 delayLayout->addWidget(delayLabel);
485 m_chkDelayDistance = new QCheckBox(optionsWidget);
486 m_chkDelayDistance->setLayoutDirection(Qt::RightToLeft);
487 delayWidget->setToolTip(i18n("Delay the brush stroke to make the line smoother"));
488 connect(m_chkDelayDistance, SIGNAL(toggled(bool)), this, SLOT(setUseDelayDistance(bool)));
489 delayLayout->addWidget(m_chkDelayDistance);
491 m_sliderDelayDistance->setToolTip(i18n("Radius where the brush is blocked"));
493 m_sliderDelayDistance->setExponentRatio(3.0); // help pick smaller values
494 m_sliderDelayDistance->setSuffix(i18n(" px"));
495 connect(m_sliderDelayDistance, SIGNAL(valueChanged(qreal)), SLOT(setDelayDistance(qreal)));
496
498 addOptionWidgetOption(m_chkFinishStabilizedCurve, new QLabel(i18n("Finish line:"), optionsWidget));
499
502 // if the state is not flipped, then the previous line doesn't generate any signals
504
505 // Stabilize sensors
506 m_chkStabilizeSensors = new QCheckBox(optionsWidget);
507 connect(m_chkStabilizeSensors, SIGNAL(toggled(bool)), this, SLOT(setStabilizeSensors(bool)));
509 m_chkStabilizeSensors->setMinimumHeight(m_cmbSmoothingType->sizeHint().height()-3);
510 addOptionWidgetOption(m_chkStabilizeSensors, new QLabel(i18n("Stabilize Sensors:"), optionsWidget));
511
514 m_sliderTailAggressiveness->setSingleStep(0.01);
515 m_sliderTailAggressiveness->setEnabled(true);
516 connect(m_sliderTailAggressiveness, SIGNAL(valueChanged(qreal)), SLOT(slotSetTailAggressiveness(qreal)));
517 m_sliderTailAggressiveness->setValue(smoothingOptions()->tailAggressiveness());
518 addOptionWidgetOption(m_sliderTailAggressiveness, new QLabel(i18n("Stroke Ending:"), optionsWidget));
519
520 m_chkSmoothPressure = new QCheckBox(optionsWidget);
521 m_chkSmoothPressure->setMinimumHeight(m_cmbSmoothingType->sizeHint().height()-3);
523 connect(m_chkSmoothPressure, SIGNAL(toggled(bool)), this, SLOT(setSmoothPressure(bool)));
524 addOptionWidgetOption(m_chkSmoothPressure, new QLabel(QString("%1:").arg(i18n("Smooth Pressure")), optionsWidget));
525
526 m_chkUseScalableDistance = new QCheckBox(optionsWidget);
528 m_chkUseScalableDistance->setMinimumHeight(m_cmbSmoothingType->sizeHint().height()-3);
529 m_chkUseScalableDistance->setToolTip(i18nc("@info:tooltip",
530 "Scalable distance takes zoom level "
531 "into account and makes the distance "
532 "be visually constant whatever zoom "
533 "level is chosen"));
534 connect(m_chkUseScalableDistance, SIGNAL(toggled(bool)), this, SLOT(setUseScalableDistance(bool)));
535 addOptionWidgetOption(m_chkUseScalableDistance, new QLabel(QString("%1:").arg(i18n("Scalable Distance")), optionsWidget));
536
537 // add a line spacer so we know that the next set of options are for different settings
538 QFrame* line = new QFrame(optionsWidget);
539 line->setObjectName(QString::fromUtf8("line"));
540 line->setFrameStyle(QFrame::HLine | QFrame::Sunken);
542
543 // Drawing assistant configuration
544 QWidget* assistantWidget = new QWidget(optionsWidget);
545 QGridLayout* assistantLayout = new QGridLayout(assistantWidget);
546 assistantLayout->setContentsMargins(10,0,0,0);
547 assistantLayout->setSpacing(5);
548
549 m_chkAssistant = new QCheckBox(optionsWidget);
550 m_chkAssistant->setText(i18n("Snap to Assistants"));
551
552 assistantWidget->setToolTip(i18n("You need to add Assistants before this tool will work."));
553 connect(m_chkAssistant, SIGNAL(toggled(bool)), this, SLOT(setAssistant(bool)));
554 addOptionWidgetOption(assistantWidget, m_chkAssistant);
555
556 m_sliderMagnetism = new KisSliderSpinBox(optionsWidget);
557 m_sliderMagnetism->setToolTip(i18n("Assistant Magnetism"));
559
561 connect(m_sliderMagnetism, SIGNAL(valueChanged(int)), SLOT(slotSetMagnetism(int)));
562
563 QLabel* magnetismLabel = new QLabel(i18n("Magnetism:"), optionsWidget);
565
566 QLabel* snapSingleLabel = new QLabel(i18n("Snap to Single Line"), optionsWidget);
567
568 m_chkOnlyOneAssistant = new QCheckBox(optionsWidget);
569 m_chkOnlyOneAssistant->setToolTip(i18nc("@info:tooltip","Make it only snap to a single assistant line, prevents snapping mess while using the infinite assistants."));
570 m_chkOnlyOneAssistant->setCheckState(Qt::Checked); // turn on by default.
571 connect(m_chkOnlyOneAssistant, SIGNAL(toggled(bool)), this, SLOT(setOnlyOneAssistantSnap(bool)));
573
574 QLabel* snapEraserLabel = new QLabel(i18n("Snap Eraser"), optionsWidget);
575
576 m_chkSnapEraser = new QCheckBox(optionsWidget);
577 m_chkSnapEraser->setToolTip(i18nc("@info:tooltip","Enable snapping when using erasers"));
578 m_chkSnapEraser->setCheckState(Qt::Unchecked); // turn off by default.
579 connect(m_chkSnapEraser, SIGNAL(toggled(bool)), this, SLOT(setSnapEraser(bool)));
580 addOptionWidgetOption(m_chkSnapEraser, snapEraserLabel);
581
582 // set the assistant snapping options to hidden by default and toggle their visibility based off snapping checkbox
583 m_sliderMagnetism->setVisible(false);
584 m_chkOnlyOneAssistant->setVisible(false);
585 m_chkSnapEraser->setVisible(false);
586 magnetismLabel->setVisible(false);
587 snapSingleLabel->setVisible(false);
588 snapEraserLabel->setVisible(false);
589
590 connect(m_chkAssistant, SIGNAL(toggled(bool)), m_sliderMagnetism, SLOT(setVisible(bool)));
591 connect(m_chkAssistant, SIGNAL(toggled(bool)), m_chkOnlyOneAssistant, SLOT(setVisible(bool)));
592 connect(m_chkAssistant, SIGNAL(toggled(bool)), m_chkSnapEraser, SLOT(setVisible(bool)));
593 connect(m_chkAssistant, SIGNAL(toggled(bool)), magnetismLabel, SLOT(setVisible(bool)));
594 connect(m_chkAssistant, SIGNAL(toggled(bool)), snapSingleLabel, SLOT(setVisible(bool)));
595 connect(m_chkAssistant, SIGNAL(toggled(bool)), snapEraserLabel, SLOT(setVisible(bool)));
596
597 KisConfig cfg(true);
598
599 slotSetSmoothingType(cfg.lineSmoothingType());
600
601 return optionsWidget;
602}
QList< QString > QStringList
void connectSpinBoxes(SpinBoxType *spinOne, SpinBoxType *spinTwo, KoAspectButton *aspectButton)
This class is a spinbox in which you can click and drag to set the value. A slider like bar is displa...
void setValue(qreal newValue)
void setRange(qreal newMinimum, qreal newMaximum, int newNumberOfDecimals=0, bool computeNewFastSliderStep=true)
Set the minimum and the maximum values of the range.
void setExponentRatio(qreal newExponentRatio)
This class is a spinbox in which you can click and drag to set the value. A slider like bar is displa...
void setValue(int newValue)
void setRange(int newMinimum, int newMaximum, bool computeNewFastSliderStep=true)
Set the minimum and the maximum values of the range, computing a new "fast slider step" based on the ...
void slotSetSmoothnessDistanceKeepAspectRatio(bool value)
QCheckBox * m_chkSnapEraser
bool finishStabilizedCurve
void setUseDelayDistance(bool value)
KisDoubleSliderSpinBox * m_sliderTailAggressiveness
void setDelayDistance(qreal value)
QCheckBox * m_chkDelayDistance
QCheckBox * m_chkOnlyOneAssistant
QComboBox * m_cmbSmoothingType
void updateSmoothnessDistanceLabel()
void setStabilizeSensors(bool value)
void slotSetMagnetism(int magnetism)
KisDoubleSliderSpinBox * m_sliderSmoothnessDistanceMin
QLabel * m_lblSmoothnessDistanceMin
QCheckBox * m_chkSmoothPressure
void setSmoothPressure(bool value)
void setFinishStabilizedCurve(bool value)
bool useScalableDistance
void slotSetTailAggressiveness(qreal argh_rhhrr)
QCheckBox * m_chkUseScalableDistance
KoAspectButton * m_distanceAspectButton
QCheckBox * m_chkFinishStabilizedCurve
KisSliderSpinBox * m_sliderMagnetism
void slotSetSmoothnessDistanceMax(qreal distance)
QCheckBox * m_chkStabilizeSensors
void setUseScalableDistance(bool value)
KisDoubleSliderSpinBox * m_sliderSmoothnessDistanceMax
void slotSetSmoothnessDistanceMin(qreal distance)
QLabel * m_lblSmoothnessDistanceMax
KisDoubleSliderSpinBox * m_sliderDelayDistance
void setSnapEraser(bool assistant)
void setOnlyOneAssistantSnap(bool assistant)
void setAssistant(bool assistant)
KisSmoothingOptionsSP smoothingOptions() const
virtual void addOptionWidgetOption(QWidget *control, QWidget *label=nullptr)
Add a widget and a label to the current option widget layout.
void setKeepAspectRatio(bool keep)
virtual QWidget * createOptionWidget()
#define MAXIMUM_MAGNETISM

References KisToolPaint::addOptionWidgetOption(), connect(), KisAspectRatioLocker::connectSpinBoxes(), KoToolBase::createOptionWidget(), delayDistance, finishStabilizedCurve, KisConfig::lineSmoothingType(), m_chkAssistant, m_chkDelayDistance, m_chkFinishStabilizedCurve, m_chkOnlyOneAssistant, m_chkSmoothPressure, m_chkSnapEraser, m_chkStabilizeSensors, m_chkUseScalableDistance, m_cmbSmoothingType, m_distanceAspectButton, m_lblSmoothnessDistanceMax, m_lblSmoothnessDistanceMin, KisToolFreehand::m_magnetism, m_sliderDelayDistance, m_sliderMagnetism, m_sliderSmoothnessDistanceMax, m_sliderSmoothnessDistanceMin, m_sliderTailAggressiveness, MAXIMUM_MAGNETISM, KisToolFreehand::setAssistant(), setDelayDistance(), KisDoubleSliderSpinBox::setExponentRatio(), setFinishStabilizedCurve(), KoAspectButton::setKeepAspectRatio(), KisToolFreehand::setOnlyOneAssistantSnap(), KisSliderSpinBox::setRange(), KisDoubleSliderSpinBox::setRange(), setSmoothPressure(), KisToolFreehand::setSnapEraser(), setStabilizeSensors(), setUseDelayDistance(), setUseScalableDistance(), KisSliderSpinBox::setValue(), KisDoubleSliderSpinBox::setValue(), slotSetMagnetism(), slotSetSmoothingType(), slotSetSmoothnessDistanceKeepAspectRatio(), slotSetSmoothnessDistanceMax(), slotSetSmoothnessDistanceMin(), slotSetTailAggressiveness(), KisToolFreehand::smoothingOptions(), smoothPressure, stabilizeSensors, KoToolBase::toolId(), updateSmoothnessDistanceLabel(), useDelayDistance, and useScalableDistance.

◆ deactivate

void KisToolBrush::deactivate ( )
overrideslot

Definition at line 87 of file kis_tool_brush.cc.

88{
89 disconnect(&m_signalMapper, 0, this, 0);
90 QAction *toggleaction = action("toggle_assistant");
91 disconnect(toggleaction, 0, m_chkAssistant, 0);
92
94}
void deactivate() override

References KoToolBase::action(), KisToolFreehand::deactivate(), m_chkAssistant, and m_signalMapper.

◆ delayDistance()

qreal KisToolBrush::delayDistance ( ) const

Definition at line 331 of file kis_tool_brush.cc.

332{
333 return smoothingOptions()->delayDistance();
334}

References KisToolFreehand::smoothingOptions().

◆ delayDistanceChanged

void KisToolBrush::delayDistanceChanged ( )
signal

◆ finishStabilizedCurve()

bool KisToolBrush::finishStabilizedCurve ( ) const

Definition at line 358 of file kis_tool_brush.cc.

359{
360 return smoothingOptions()->finishStabilizedCurve();
361}

References KisToolFreehand::smoothingOptions().

◆ finishStabilizedCurveChanged

void KisToolBrush::finishStabilizedCurveChanged ( )
signal

◆ resetCursorStyle

void KisToolBrush::resetCursorStyle ( )
overrideprotectedslot

Definition at line 305 of file kis_tool_brush.cc.

306{
307 KisConfig cfg(true);
308 CursorStyle cursorStyle = cfg.newCursorStyle();
309
310 // When the stabilizer is in use, we avoid using the brush outline cursor,
311 // because it would hide the real position of the cursor to the user,
312 // yielding unexpected results.
315 cursorStyle == CURSOR_STYLE_NO_CURSOR) {
316
318 } else {
320 }
321
323}
static QCursor roundCursor()
Definition kis_cursor.cc:39
void resetCursorStyle() override
void useCursor(const QCursor &cursor)
CursorStyle
Definition kis_global.h:62
@ CURSOR_STYLE_NO_CURSOR
Definition kis_global.h:63
bool overrideCursorIfNotEditable()
Override the cursor appropriately if current node is not editable.
Definition kis_tool.cc:618

References CURSOR_STYLE_NO_CURSOR, KisConfig::newCursorStyle(), KisTool::overrideCursorIfNotEditable(), KisToolFreehand::resetCursorStyle(), KisCursor::roundCursor(), KisToolFreehand::smoothingOptions(), smoothingType, KisSmoothingOptions::STABILIZER, KoToolBase::useCursor(), and useDelayDistance.

◆ setDelayDistance

void KisToolBrush::setDelayDistance ( qreal value)
slot

Definition at line 345 of file kis_tool_brush.cc.

346{
347 smoothingOptions()->setDelayDistance(value);
348 Q_EMIT delayDistanceChanged();
349}
float value(const T *src, size_t ch)
void delayDistanceChanged()

References delayDistanceChanged(), KisToolFreehand::smoothingOptions(), and value().

◆ setFinishStabilizedCurve

void KisToolBrush::setFinishStabilizedCurve ( bool value)
slot

Definition at line 351 of file kis_tool_brush.cc.

352{
353 smoothingOptions()->setFinishStabilizedCurve(value);
354
356}
void finishStabilizedCurveChanged()

References finishStabilizedCurveChanged(), KisToolFreehand::smoothingOptions(), and value().

◆ setSmoothPressure

void KisToolBrush::setSmoothPressure ( bool value)
slot

Definition at line 282 of file kis_tool_brush.cc.

283{
284 smoothingOptions()->setSmoothPressure(value);
285}

References KisToolFreehand::smoothingOptions(), and value().

◆ setStabilizeSensors

void KisToolBrush::setStabilizeSensors ( bool value)
slot

Definition at line 363 of file kis_tool_brush.cc.

364{
365 smoothingOptions()->setStabilizeSensors(value);
367}
void stabilizeSensorsChanged()

References KisToolFreehand::smoothingOptions(), stabilizeSensorsChanged(), and value().

◆ setUseDelayDistance

void KisToolBrush::setUseDelayDistance ( bool value)
slot

◆ setUseScalableDistance

void KisToolBrush::setUseScalableDistance ( bool value)
slot

Definition at line 298 of file kis_tool_brush.cc.

299{
300 smoothingOptions()->setUseScalableDistance(value);
301
303}
void useScalableDistanceChanged()

References KisToolFreehand::smoothingOptions(), useScalableDistanceChanged(), and value().

◆ slotSetMagnetism

void KisToolBrush::slotSetMagnetism ( int magnetism)
slot

Definition at line 287 of file kis_tool_brush.cc.

288{
289 m_magnetism = expf(magnetism / (double)MAXIMUM_MAGNETISM) / expf(1.0);
290}

References KisToolFreehand::m_magnetism, and MAXIMUM_MAGNETISM.

◆ slotSetSmoothingType

void KisToolBrush::slotSetSmoothingType ( int index)
slot

The slot can also be called from smoothing-type-switching action that would mean the combo box will not be synchronized

Definition at line 121 of file kis_tool_brush.cc.

122{
127 if (m_cmbSmoothingType->currentIndex() != index) {
128 m_cmbSmoothingType->setCurrentIndex(index);
129 }
130
131 switch (index) {
134 m_lblSmoothnessDistanceMin->setVisible(false);
135 m_sliderSmoothnessDistanceMin->setVisible(false);
136 m_lblSmoothnessDistanceMax->setVisible(false);
137 m_sliderSmoothnessDistanceMax->setVisible(false);
138 m_distanceAspectButton->setVisible(false);
145 break;
148 m_lblSmoothnessDistanceMin->setVisible(false);
149 m_sliderSmoothnessDistanceMin->setVisible(false);
150 m_lblSmoothnessDistanceMax->setVisible(false);
151 m_sliderSmoothnessDistanceMax->setVisible(false);
152 m_distanceAspectButton->setVisible(false);
159 break;
162 m_lblSmoothnessDistanceMin->setVisible(true);
163 m_sliderSmoothnessDistanceMin->setVisible(true);
164 m_lblSmoothnessDistanceMax->setVisible(true);
165 m_sliderSmoothnessDistanceMax->setVisible(true);
166 m_distanceAspectButton->setVisible(true);
173 break;
176 m_lblSmoothnessDistanceMin->setVisible(true);
177 m_sliderSmoothnessDistanceMin->setVisible(true);
178 m_lblSmoothnessDistanceMax->setVisible(true);
179 m_sliderSmoothnessDistanceMax->setVisible(true);
180 m_distanceAspectButton->setVisible(true);
186
187 // scalable distance option is disabled due to bug 421314
189 break;
191 default:
193 m_lblSmoothnessDistanceMin->setVisible(false);
194 m_sliderSmoothnessDistanceMin->setVisible(false);
195 m_lblSmoothnessDistanceMax->setVisible(false);
196 m_sliderSmoothnessDistanceMax->setVisible(false);
197 m_distanceAspectButton->setVisible(false);
204 }
206
207 Q_EMIT smoothingTypeChanged();
208}
void showControl(QWidget *control, bool value)

References m_chkFinishStabilizedCurve, m_chkSmoothPressure, m_chkStabilizeSensors, m_chkUseScalableDistance, m_cmbSmoothingType, m_distanceAspectButton, m_lblSmoothnessDistanceMax, m_lblSmoothnessDistanceMin, m_sliderDelayDistance, m_sliderSmoothnessDistanceMax, m_sliderSmoothnessDistanceMin, m_sliderTailAggressiveness, KisSmoothingOptions::NO_SMOOTHING, KisSmoothingOptions::PIXEL_PERFECT, KisToolPaint::showControl(), KisSmoothingOptions::SIMPLE_SMOOTHING, KisToolFreehand::smoothingOptions(), smoothingTypeChanged(), KisSmoothingOptions::STABILIZER, updateSmoothnessDistanceLabel(), and KisSmoothingOptions::WEIGHTED_SMOOTHING.

◆ slotSetSmoothnessDistanceKeepAspectRatio

void KisToolBrush::slotSetSmoothnessDistanceKeepAspectRatio ( bool value)
slot

Definition at line 270 of file kis_tool_brush.cc.

271{
272 smoothingOptions()->setSmoothnessDistanceKeepAspectRatio(value);
273}

References KisToolFreehand::smoothingOptions(), and value().

◆ slotSetSmoothnessDistanceMax

void KisToolBrush::slotSetSmoothnessDistanceMax ( qreal distance)
slot

Definition at line 264 of file kis_tool_brush.cc.

265{
266 smoothingOptions()->setSmoothnessDistanceMax(distance);
268}
qreal distance(const QPointF &p1, const QPointF &p2)
void smoothnessQualityChanged()

References distance(), KisToolFreehand::smoothingOptions(), and smoothnessQualityChanged().

◆ slotSetSmoothnessDistanceMin

void KisToolBrush::slotSetSmoothnessDistanceMin ( qreal distance)
slot

Definition at line 258 of file kis_tool_brush.cc.

259{
260 smoothingOptions()->setSmoothnessDistanceMin(distance);
262}

References distance(), KisToolFreehand::smoothingOptions(), and smoothnessQualityChanged().

◆ slotSetTailAggressiveness

void KisToolBrush::slotSetTailAggressiveness ( qreal argh_rhhrr)
slot

Definition at line 275 of file kis_tool_brush.cc.

276{
277 smoothingOptions()->setTailAggressiveness(argh_rhhrr);
279}
void smoothnessFactorChanged()

References KisToolFreehand::smoothingOptions(), and smoothnessFactorChanged().

◆ smoothingType()

int KisToolBrush::smoothingType ( ) const

Definition at line 96 of file kis_tool_brush.cc.

97{
98 return smoothingOptions()->smoothingType();
99}

References KisToolFreehand::smoothingOptions().

◆ smoothingTypeChanged

void KisToolBrush::smoothingTypeChanged ( )
signal

◆ smoothnessFactor()

qreal KisToolBrush::smoothnessFactor ( ) const

Definition at line 116 of file kis_tool_brush.cc.

117{
118 return smoothingOptions()->tailAggressiveness();
119}

References KisToolFreehand::smoothingOptions().

◆ smoothnessFactorChanged

void KisToolBrush::smoothnessFactorChanged ( )
signal

◆ smoothnessQualityChanged

void KisToolBrush::smoothnessQualityChanged ( )
signal

◆ smoothnessQualityMax()

int KisToolBrush::smoothnessQualityMax ( ) const

Definition at line 111 of file kis_tool_brush.cc.

112{
113 return smoothingOptions()->smoothnessDistanceMax();
114}

References KisToolFreehand::smoothingOptions().

◆ smoothnessQualityMin()

int KisToolBrush::smoothnessQualityMin ( ) const

Definition at line 106 of file kis_tool_brush.cc.

107{
108 return smoothingOptions()->smoothnessDistanceMin();
109}

References KisToolFreehand::smoothingOptions().

◆ smoothPressure()

bool KisToolBrush::smoothPressure ( ) const

Definition at line 101 of file kis_tool_brush.cc.

102{
103 return smoothingOptions()->smoothPressure();
104}

References KisToolFreehand::smoothingOptions().

◆ smoothPressureChanged

void KisToolBrush::smoothPressureChanged ( )
signal

◆ stabilizeSensors()

bool KisToolBrush::stabilizeSensors ( ) const

Definition at line 369 of file kis_tool_brush.cc.

370{
371 return smoothingOptions()->stabilizeSensors();
372}

References KisToolFreehand::smoothingOptions().

◆ stabilizeSensorsChanged

void KisToolBrush::stabilizeSensorsChanged ( )
signal

◆ updateSettingsViews

void KisToolBrush::updateSettingsViews ( )
overrideslot

Definition at line 374 of file kis_tool_brush.cc.

References delayDistance, delayDistanceChanged(), finishStabilizedCurveChanged(), m_chkDelayDistance, m_chkSmoothPressure, m_chkStabilizeSensors, m_chkUseScalableDistance, m_cmbSmoothingType, m_sliderDelayDistance, m_sliderSmoothnessDistanceMax, m_sliderSmoothnessDistanceMin, m_sliderTailAggressiveness, KisDoubleSliderSpinBox::setValue(), KisToolFreehand::smoothingOptions(), smoothingType, smoothingTypeChanged(), smoothnessFactorChanged(), smoothnessQualityChanged(), smoothPressure, smoothPressureChanged(), stabilizeSensors, stabilizeSensorsChanged(), KisTool::updateSettingsViews(), useDelayDistance, useDelayDistanceChanged(), useScalableDistance, and useScalableDistanceChanged().

◆ updateSmoothnessDistanceLabel()

void KisToolBrush::updateSmoothnessDistanceLabel ( )
private

Definition at line 210 of file kis_tool_brush.cc.

211{
212 const qreal oldValueMin = m_sliderSmoothnessDistanceMin->value();
213 const qreal oldValueMax = m_sliderSmoothnessDistanceMax->value();
214
216 m_lblSmoothnessDistanceMin->setText(i18n("Sample Count at Max Speed:"));
218 m_sliderSmoothnessDistanceMin->setSingleStep(1);
219 m_sliderSmoothnessDistanceMin->setExponentRatio(3.0); // help pick smaller values
220
221 if (!qFuzzyCompare(m_sliderSmoothnessDistanceMin->value(), oldValueMin)) {
222 // the slider will emit the change signal automatically
223 m_sliderSmoothnessDistanceMin->setValue(qRound(oldValueMin));
224 }
225
226 m_lblSmoothnessDistanceMax->setText(i18n("Sample Count at Min Speed:"));
228 m_sliderSmoothnessDistanceMax->setSingleStep(1);
229 m_sliderSmoothnessDistanceMax->setExponentRatio(3.0); // help pick smaller values
230
231 if (!qFuzzyCompare(m_sliderSmoothnessDistanceMax->value(), oldValueMax)) {
232 // the slider will emit the change signal automatically
233 m_sliderSmoothnessDistanceMax->setValue(qRound(oldValueMax));
234 }
235 } else {
236 m_lblSmoothnessDistanceMin->setText(i18n("Distance at Max Speed:"));
238 m_sliderSmoothnessDistanceMin->setSingleStep(1);
239 m_sliderSmoothnessDistanceMin->setExponentRatio(3.0); // help pick smaller values
240
241 if (!qFuzzyCompare(m_sliderSmoothnessDistanceMin->value(), oldValueMin)) {
242 // the slider will emit the change signal automatically
244 }
245
246 m_lblSmoothnessDistanceMax->setText(i18n("Distance at Min Speed:"));
248 m_sliderSmoothnessDistanceMax->setSingleStep(1);
249 m_sliderSmoothnessDistanceMax->setExponentRatio(3.0); // help pick smaller values
250
251 if (!qFuzzyCompare(m_sliderSmoothnessDistanceMax->value(), oldValueMax)) {
252 // the slider will emit the change signal automatically
254 }
255 }
256}
static bool qFuzzyCompare(half p1, half p2)
#define MAXIMUM_SMOOTHNESS_DISTANCE

References m_lblSmoothnessDistanceMax, m_lblSmoothnessDistanceMin, m_sliderSmoothnessDistanceMax, m_sliderSmoothnessDistanceMin, MAXIMUM_SMOOTHNESS_DISTANCE, qFuzzyCompare(), KisDoubleSliderSpinBox::setExponentRatio(), KisDoubleSliderSpinBox::setRange(), KisDoubleSliderSpinBox::setValue(), smoothingType, and KisSmoothingOptions::STABILIZER.

◆ useDelayDistance()

bool KisToolBrush::useDelayDistance ( ) const

Definition at line 326 of file kis_tool_brush.cc.

327{
328 return smoothingOptions()->useDelayDistance();
329}

References KisToolFreehand::smoothingOptions().

◆ useDelayDistanceChanged

void KisToolBrush::useDelayDistanceChanged ( )
signal

◆ useScalableDistance()

bool KisToolBrush::useScalableDistance ( ) const

Definition at line 292 of file kis_tool_brush.cc.

293{
294 return smoothingOptions()->useScalableDistance();
295}

References KisToolFreehand::smoothingOptions().

◆ useScalableDistanceChanged

void KisToolBrush::useScalableDistanceChanged ( )
signal

Member Data Documentation

◆ m_chkAssistant

QCheckBox* KisToolBrush::m_chkAssistant {0}
private

Definition at line 117 of file kis_tool_brush.h.

117{0};

◆ m_chkDelayDistance

QCheckBox* KisToolBrush::m_chkDelayDistance {0}
private

Definition at line 131 of file kis_tool_brush.h.

131{0};

◆ m_chkFinishStabilizedCurve

QCheckBox* KisToolBrush::m_chkFinishStabilizedCurve {0}
private

Definition at line 134 of file kis_tool_brush.h.

134{0};

◆ m_chkOnlyOneAssistant

QCheckBox* KisToolBrush::m_chkOnlyOneAssistant {0}
private

Definition at line 119 of file kis_tool_brush.h.

119{0};

◆ m_chkSmoothPressure

QCheckBox* KisToolBrush::m_chkSmoothPressure {0}
private

Definition at line 127 of file kis_tool_brush.h.

127{0};

◆ m_chkSnapEraser

QCheckBox* KisToolBrush::m_chkSnapEraser {0}
private

Definition at line 120 of file kis_tool_brush.h.

120{0};

◆ m_chkStabilizeSensors

QCheckBox* KisToolBrush::m_chkStabilizeSensors {0}
private

Definition at line 130 of file kis_tool_brush.h.

130{0};

◆ m_chkUseScalableDistance

QCheckBox* KisToolBrush::m_chkUseScalableDistance {0}
private

Definition at line 128 of file kis_tool_brush.h.

128{0};

◆ m_cmbSmoothingType

QComboBox* KisToolBrush::m_cmbSmoothingType {0}
private

Definition at line 115 of file kis_tool_brush.h.

115{0};

◆ m_configGroup

KConfigGroup KisToolBrush::m_configGroup
protected

Definition at line 73 of file kis_tool_brush.h.

◆ m_distanceAspectButton

KoAspectButton* KisToolBrush::m_distanceAspectButton {0}
private

Definition at line 123 of file kis_tool_brush.h.

123{0};

◆ m_lblSmoothnessDistanceMax

QLabel* KisToolBrush::m_lblSmoothnessDistanceMax {0}
private

Definition at line 125 of file kis_tool_brush.h.

125{0};

◆ m_lblSmoothnessDistanceMin

QLabel* KisToolBrush::m_lblSmoothnessDistanceMin {0}
private

Definition at line 124 of file kis_tool_brush.h.

124{0};

◆ m_signalMapper

KisSignalMapper KisToolBrush::m_signalMapper
private

Definition at line 135 of file kis_tool_brush.h.

◆ m_sliderDelayDistance

KisDoubleSliderSpinBox* KisToolBrush::m_sliderDelayDistance {0}
private

Definition at line 132 of file kis_tool_brush.h.

132{0};

◆ m_sliderMagnetism

KisSliderSpinBox* KisToolBrush::m_sliderMagnetism {0}
private

Definition at line 118 of file kis_tool_brush.h.

118{0};

◆ m_sliderSmoothnessDistanceMax

KisDoubleSliderSpinBox* KisToolBrush::m_sliderSmoothnessDistanceMax {0}
private

Definition at line 122 of file kis_tool_brush.h.

122{0};

◆ m_sliderSmoothnessDistanceMin

KisDoubleSliderSpinBox* KisToolBrush::m_sliderSmoothnessDistanceMin {0}
private

Definition at line 121 of file kis_tool_brush.h.

121{0};

◆ m_sliderTailAggressiveness

KisDoubleSliderSpinBox* KisToolBrush::m_sliderTailAggressiveness {0}
private

Definition at line 126 of file kis_tool_brush.h.

126{0};

Property Documentation

◆ delayDistance

qreal KisToolBrush::delayDistance
readwrite

Definition at line 47 of file kis_tool_brush.h.

◆ finishStabilizedCurve

bool KisToolBrush::finishStabilizedCurve
readwrite

Definition at line 49 of file kis_tool_brush.h.

◆ smoothingType

int KisToolBrush::smoothingType
readwrite

Definition at line 43 of file kis_tool_brush.h.

◆ smoothnessFactor

qreal KisToolBrush::smoothnessFactor
readwrite

Definition at line 41 of file kis_tool_brush.h.

◆ smoothnessQualityMax

int KisToolBrush::smoothnessQualityMax
readwrite

Definition at line 40 of file kis_tool_brush.h.

◆ smoothnessQualityMin

int KisToolBrush::smoothnessQualityMin
readwrite

Definition at line 39 of file kis_tool_brush.h.

◆ smoothPressure

bool KisToolBrush::smoothPressure
readwrite

Definition at line 42 of file kis_tool_brush.h.

◆ stabilizeSensors

bool KisToolBrush::stabilizeSensors
readwrite

Definition at line 50 of file kis_tool_brush.h.

◆ useDelayDistance

bool KisToolBrush::useDelayDistance
readwrite

Definition at line 46 of file kis_tool_brush.h.

◆ useScalableDistance

bool KisToolBrush::useScalableDistance
readwrite

Definition at line 44 of file kis_tool_brush.h.


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