Krita Source Code Documentation
Loading...
Searching...
No Matches
KisToolSelectBase< BaseClass > Class Template Reference

#include <kis_tool_select_base.h>

+ Inheritance diagram for KisToolSelectBase< BaseClass >:

Public Types

enum  SampleLayersMode { SampleAllLayers , SampleCurrentLayer , SampleColorLabeledLayers }
 

Public Member Functions

void activate (const QSet< KoShape * > &shapes) override
 
void activateAlternateAction (KisTool::AlternateAction action) override
 
SelectionAction alternateSelectionAction () const
 
bool antiAliasSelection () const
 
void beginAlternateAction (KoPointerEvent *event, KisTool::AlternateAction action) override
 
bool beginMoveSelectionInteraction ()
 
void beginPrimaryAction (KoPointerEvent *event) override
 
bool beginSelectInteraction ()
 
QList< int > colorLabelsSelected () const
 
void continueAlternateAction (KoPointerEvent *event, KisTool::AlternateAction action) override
 
void continuePrimaryAction (KoPointerEvent *event) override
 
QWidget * createOptionWidget () override
 
void deactivate () override
 
void deactivateAlternateAction (KisTool::AlternateAction action) override
 
void endAlternateAction (KoPointerEvent *event, KisTool::AlternateAction action) override
 
bool endMoveSelectionInteraction ()
 
void endPrimaryAction (KoPointerEvent *event) override
 
bool endSelectInteraction ()
 
int featherSelection () const
 
int growSelection () const
 
bool isMovingSelection () const
 
bool isSelecting () const
 
void keyPressEvent (QKeyEvent *event) override
 
void keyReleaseEvent (QKeyEvent *event) override
 
 KisToolSelectBase (KoCanvasBase *canvas, const QCursor cursor, const QString toolName)
 
 KisToolSelectBase (KoCanvasBase *canvas, const QString toolName)
 
 KisToolSelectBase (KoCanvasBase *canvas, QCursor cursor, QString toolName, KoToolBase *delegateTool)
 
KisNodeSP locateSelectionMaskUnderCursor (const QPointF &pos, Qt::KeyboardModifiers modifiers)
 
void mouseMoveEvent (KoPointerEvent *event) override
 
QMenu * popupActionsMenu () override
 
KisPopupWidgetInterfacepopupWidget () override
 
SampleLayersMode sampleLayersMode () const
 
SelectionAction selectionAction () const
 
bool selectionDidMove () const
 
SelectionMode selectionMode () const
 
KisSelectionOptionsselectionOptionWidget ()
 
virtual void setAlternateSelectionAction (SelectionAction action)
 
bool stopGrowingAtDarkestPixel () const
 
void updateActionShortcutToolTips ()
 
void updateCursorDelayed ()
 

Protected Member Functions

virtual bool isPixelOnly () const
 
virtual bool usesColorLabels () const
 

Protected Attributes

SelectionAction m_selectionActionAlternate
 
KisSelectionToolConfigWidgetHelper m_widgetHelper
 

Private Types

enum  Interaction { Interaction_None , Interaction_Select , Interaction_MoveSelection }
 

Private Attributes

Interaction m_currentInteraction {Interaction_None}
 
Qt::KeyboardModifiers m_currentModifiers
 
QPointF m_currentPos
 
bool m_didMove = false
 
QPointF m_dragStartPos
 
KisSignalAutoConnectionsStore m_modeConnections
 
KisStrokeId m_moveStrokeId
 

Detailed Description

template<class BaseClass>
class KisToolSelectBase< BaseClass >

This is a basic template to create selection tools from basic path based drawing tools. The template overrides the ability to execute alternate actions correctly. The default behavior for the modifier keys is as follows:

Shift: add to selection Alt: subtract from selection Shift+Alt: intersect current selection Ctrl+Alt: symmetric difference Ctrl: replace selection

The mapping itself is done in KisSelectionModifierMapper.

Certain tools also use modifier keys to alter their behavior, e.g. forcing square proportions with the rectangle tool. The template enables the following rules for forwarding keys:

1) If the user is not selecting, then changing the modifier combination changes the selection method.

2) If the user is selecting then the modifier keys are forwarded to the specific tool, so that it can do with them whatever it wants. The selection method is not changed in this stage and it will be the same as just before the user started selecting.

3) Once the user finishes selecting, the selection method is updated to reflect the current modifier combination

4) If the user is moving the selection, then changing the modifiers

Definition at line 61 of file kis_tool_select_base.h.

Member Enumeration Documentation

◆ Interaction

template<class BaseClass >
enum KisToolSelectBase::Interaction
private
Enumerator
Interaction_None 
Interaction_Select 
Interaction_MoveSelection 

Definition at line 547 of file kis_tool_select_base.h.

◆ SampleLayersMode

template<class BaseClass >
enum KisToolSelectBase::SampleLayersMode
Enumerator
SampleAllLayers 
SampleCurrentLayer 
SampleColorLabeledLayers 

Definition at line 90 of file kis_tool_select_base.h.

Constructor & Destructor Documentation

◆ KisToolSelectBase() [1/3]

template<class BaseClass >
KisToolSelectBase< BaseClass >::KisToolSelectBase ( KoCanvasBase * canvas,
const QString toolName )
inline

Definition at line 66 of file kis_tool_select_base.h.

67 : BaseClass(canvas)
68 , m_widgetHelper(toolName)
70 {
72 }
@ SELECTION_DEFAULT
KisSelectionToolConfigWidgetHelper m_widgetHelper
SelectionAction m_selectionActionAlternate
static KisSelectionModifierMapper * instance()

References KisSelectionModifierMapper::instance().

◆ KisToolSelectBase() [2/3]

template<class BaseClass >
KisToolSelectBase< BaseClass >::KisToolSelectBase ( KoCanvasBase * canvas,
const QCursor cursor,
const QString toolName )
inline

Definition at line 74 of file kis_tool_select_base.h.

75 : BaseClass(canvas, cursor)
76 , m_widgetHelper(toolName)
78 {
80 }

References KisSelectionModifierMapper::instance().

◆ KisToolSelectBase() [3/3]

template<class BaseClass >
KisToolSelectBase< BaseClass >::KisToolSelectBase ( KoCanvasBase * canvas,
QCursor cursor,
QString toolName,
KoToolBase * delegateTool )
inline

Definition at line 82 of file kis_tool_select_base.h.

83 : BaseClass(canvas, cursor, delegateTool)
84 , m_widgetHelper(toolName)
86 {
88 }

References KisSelectionModifierMapper::instance().

Member Function Documentation

◆ activate()

template<class BaseClass >
void KisToolSelectBase< BaseClass >::activate ( const QSet< KoShape * > & shapes)
inlineoverride

Definition at line 115 of file kis_tool_select_base.h.

116 {
117 BaseClass::activate(shapes);
118
120 this->action("selection_tool_mode_replace"), SIGNAL(triggered()),
121 &m_widgetHelper, SLOT(slotReplaceModeRequested()));
122
124 this->action("selection_tool_mode_add"), SIGNAL(triggered()),
125 &m_widgetHelper, SLOT(slotAddModeRequested()));
126
128 this->action("selection_tool_mode_subtract"), SIGNAL(triggered()),
129 &m_widgetHelper, SLOT(slotSubtractModeRequested()));
130
132 this->action("selection_tool_mode_intersect"), SIGNAL(triggered()),
133 &m_widgetHelper, SLOT(slotIntersectModeRequested()));
134
136
138 if (isPixelOnly()) {
141 true);
142 }
145 }
146 }
void setModeSectionVisible(bool visible)
void setAdjustmentsSectionVisible(bool visible)
void setReferenceSectionVisible(bool visible)
void addUniqueConnection(Sender sender, Signal signal, Receiver receiver, Method method)
virtual bool isPixelOnly() const
virtual bool usesColorLabels() const
KisSignalAutoConnectionsStore m_modeConnections

References KisSignalAutoConnectionsStore::addUniqueConnection(), KisToolSelectBase< BaseClass >::isPixelOnly(), KisToolSelectBase< BaseClass >::m_modeConnections, KisToolSelectBase< BaseClass >::m_widgetHelper, KisSelectionToolConfigWidgetHelper::optionWidget(), KisSelectionOptions::setAdjustmentsSectionVisible(), KisSelectionOptions::setModeSectionVisible(), KisSelectionOptions::setReferenceSectionVisible(), KisToolSelectBase< BaseClass >::updateActionShortcutToolTips(), and KisToolSelectBase< BaseClass >::usesColorLabels().

◆ activateAlternateAction()

template<class BaseClass >
void KisToolSelectBase< BaseClass >::activateAlternateAction ( KisTool::AlternateAction action)
inlineoverride

Definition at line 248 of file kis_tool_select_base.h.

249 {
250 Q_UNUSED(action);
251 BaseClass::activatePrimaryAction();
252 }

◆ alternateSelectionAction()

template<class BaseClass >
SelectionAction KisToolSelectBase< BaseClass >::alternateSelectionAction ( ) const
inline

◆ antiAliasSelection()

template<class BaseClass >
bool KisToolSelectBase< BaseClass >::antiAliasSelection ( ) const
inline

◆ beginAlternateAction()

template<class BaseClass >
void KisToolSelectBase< BaseClass >::beginAlternateAction ( KoPointerEvent * event,
KisTool::AlternateAction action )
inlineoverride

Definition at line 260 of file kis_tool_select_base.h.

262 {
263 Q_UNUSED(action);
264 beginPrimaryAction(event);
265 }
void beginPrimaryAction(KoPointerEvent *event) override

References KisToolSelectBase< BaseClass >::beginPrimaryAction().

◆ beginMoveSelectionInteraction()

template<class BaseClass >
bool KisToolSelectBase< BaseClass >::beginMoveSelectionInteraction ( )
inline

◆ beginPrimaryAction()

template<class BaseClass >
void KisToolSelectBase< BaseClass >::beginPrimaryAction ( KoPointerEvent * event)
inlineoverride

Definition at line 396 of file kis_tool_select_base.h.

397 {
398 if (isSelecting()) {
399 BaseClass::beginPrimaryAction(event);
400 return;
401 }
402 if (isMovingSelection()) {
403 return;
404 }
405
406 const QPointF pos = this->convertToPixelCoord(event->point);
407 KisCanvas2* canvas = dynamic_cast<KisCanvas2*>(this->canvas());
409
410 KisNodeSP selectionMask = locateSelectionMaskUnderCursor(pos, event->modifiers());
411 if (selectionMask) {
412 if (this->beginMoveSelectionInteraction()) {
413 KisStrokeStrategy *strategy = new MoveStrokeStrategy({selectionMask}, this->image().data(), this->image().data());
414 m_moveStrokeId = this->image()->startStroke(strategy);
415 m_dragStartPos = pos;
416 m_didMove = true;
417 return;
418 }
419 }
420
421 m_didMove = false;
422 BaseClass::beginPrimaryAction(event);
423 }
KisNodeSP locateSelectionMaskUnderCursor(const QPointF &pos, Qt::KeyboardModifiers modifiers)
Qt::KeyboardModifiers modifiers() const
QPointF point
The point in document coordinates.
#define KIS_SAFE_ASSERT_RECOVER_RETURN(cond)
Definition kis_assert.h:128

References KisToolSelectBase< BaseClass >::beginMoveSelectionInteraction(), KisSharedPtr< T >::data(), KisToolSelectBase< BaseClass >::isMovingSelection(), KisToolSelectBase< BaseClass >::isSelecting(), KIS_SAFE_ASSERT_RECOVER_RETURN, KisToolSelectBase< BaseClass >::locateSelectionMaskUnderCursor(), KisToolSelectBase< BaseClass >::m_didMove, KisToolSelectBase< BaseClass >::m_dragStartPos, KisToolSelectBase< BaseClass >::m_moveStrokeId, KoPointerEvent::modifiers(), and KoPointerEvent::point.

◆ beginSelectInteraction()

template<class BaseClass >
bool KisToolSelectBase< BaseClass >::beginSelectInteraction ( )
inline

◆ colorLabelsSelected()

template<class BaseClass >
QList< int > KisToolSelectBase< BaseClass >::colorLabelsSelected ( ) const
inline

◆ continueAlternateAction()

template<class BaseClass >
void KisToolSelectBase< BaseClass >::continueAlternateAction ( KoPointerEvent * event,
KisTool::AlternateAction action )
inlineoverride

Definition at line 267 of file kis_tool_select_base.h.

269 {
270 Q_UNUSED(action);
272 }
void continuePrimaryAction(KoPointerEvent *event) override

References KisToolSelectBase< BaseClass >::continuePrimaryAction().

◆ continuePrimaryAction()

template<class BaseClass >
void KisToolSelectBase< BaseClass >::continuePrimaryAction ( KoPointerEvent * event)
inlineoverride

Definition at line 425 of file kis_tool_select_base.h.

426 {
427 if (isMovingSelection()) {
428 const QPointF pos = this->convertToPixelCoord(event->point);
429 const QPoint offset((pos - m_dragStartPos).toPoint());
430
431 this->image()->addJob(m_moveStrokeId, new MoveStrokeStrategy::Data(offset));
432 return;
433 }
434
435 BaseClass::continuePrimaryAction(event);
436 }

References KisToolSelectBase< BaseClass >::isMovingSelection(), KisToolSelectBase< BaseClass >::m_dragStartPos, KisToolSelectBase< BaseClass >::m_moveStrokeId, and KoPointerEvent::point.

◆ createOptionWidget()

template<class BaseClass >
QWidget * KisToolSelectBase< BaseClass >::createOptionWidget ( )
inlineoverride

Definition at line 154 of file kis_tool_select_base.h.

155 {
156 m_widgetHelper.createOptionWidget(this->toolId());
158
159 this->connect(this, SIGNAL(isActiveChanged(bool)), &m_widgetHelper, SLOT(slotToolActivatedChanged(bool)));
160 this->connect(&m_widgetHelper,
161 SIGNAL(selectionActionChanged(SelectionAction)),
162 this,
163 SLOT(resetCursorStyle()));
164
167 m_widgetHelper.optionWidget()->setContentsMargins(0, 10, 0, 10);
168 if (isPixelOnly()) {
171 true);
172 }
175 }
176
178 }
SelectionAction
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))

References connect(), KisSelectionToolConfigWidgetHelper::createOptionWidget(), KisToolSelectBase< BaseClass >::isPixelOnly(), KisToolSelectBase< BaseClass >::m_widgetHelper, KisSelectionToolConfigWidgetHelper::optionWidget(), KisSelectionOptions::setAdjustmentsSectionVisible(), KisSelectionToolConfigWidgetHelper::setConfigGroupForExactTool(), KisSelectionOptions::setModeSectionVisible(), KisSelectionOptions::setReferenceSectionVisible(), KisToolSelectBase< BaseClass >::updateActionShortcutToolTips(), and KisToolSelectBase< BaseClass >::usesColorLabels().

◆ deactivate()

template<class BaseClass >
void KisToolSelectBase< BaseClass >::deactivate ( )
inlineoverride

◆ deactivateAlternateAction()

template<class BaseClass >
void KisToolSelectBase< BaseClass >::deactivateAlternateAction ( KisTool::AlternateAction action)
inlineoverride

Definition at line 254 of file kis_tool_select_base.h.

255 {
256 Q_UNUSED(action);
257 BaseClass::deactivatePrimaryAction();
258 }

◆ endAlternateAction()

template<class BaseClass >
void KisToolSelectBase< BaseClass >::endAlternateAction ( KoPointerEvent * event,
KisTool::AlternateAction action )
inlineoverride

Definition at line 274 of file kis_tool_select_base.h.

276 {
277 Q_UNUSED(action);
278 endPrimaryAction(event);
279 }
void endPrimaryAction(KoPointerEvent *event) override

References KisToolSelectBase< BaseClass >::endPrimaryAction().

◆ endMoveSelectionInteraction()

template<class BaseClass >
bool KisToolSelectBase< BaseClass >::endMoveSelectionInteraction ( )
inline

◆ endPrimaryAction()

template<class BaseClass >
void KisToolSelectBase< BaseClass >::endPrimaryAction ( KoPointerEvent * event)
inlineoverride

Definition at line 438 of file kis_tool_select_base.h.

439 {
440 if (isMovingSelection()) {
441 this->image()->endStroke(m_moveStrokeId);
442 m_moveStrokeId.clear();
444 return;
445 }
446
447 BaseClass::endPrimaryAction(event);
448 }

References KisToolSelectBase< BaseClass >::endMoveSelectionInteraction(), KisToolSelectBase< BaseClass >::isMovingSelection(), and KisToolSelectBase< BaseClass >::m_moveStrokeId.

◆ endSelectInteraction()

template<class BaseClass >
bool KisToolSelectBase< BaseClass >::endSelectInteraction ( )
inline

◆ featherSelection()

template<class BaseClass >
int KisToolSelectBase< BaseClass >::featherSelection ( ) const
inline

◆ growSelection()

template<class BaseClass >
int KisToolSelectBase< BaseClass >::growSelection ( ) const
inline

◆ isMovingSelection()

template<class BaseClass >
bool KisToolSelectBase< BaseClass >::isMovingSelection ( ) const
inline

◆ isPixelOnly()

template<class BaseClass >
virtual bool KisToolSelectBase< BaseClass >::isPixelOnly ( ) const
inlineprotectedvirtual

Reimplemented in KisToolSelectContiguous, and KisToolSelectSimilar.

Definition at line 538 of file kis_tool_select_base.h.

538 {
539 return false;
540 }

◆ isSelecting()

template<class BaseClass >
bool KisToolSelectBase< BaseClass >::isSelecting ( ) const
inline

◆ keyPressEvent()

template<class BaseClass >
void KisToolSelectBase< BaseClass >::keyPressEvent ( QKeyEvent * event)
inlineoverride

Definition at line 308 of file kis_tool_select_base.h.

309 {
311 // Assume all the modifiers were unpressed...
312 m_currentModifiers = Qt::NoModifier;
313 // ...and add those which are right now
314 if (key == Qt::Key_Control || event->modifiers().testFlag(Qt::ControlModifier)) {
315 m_currentModifiers.setFlag(Qt::ControlModifier);
316 }
317 if (key == Qt::Key_Shift || event->modifiers().testFlag(Qt::ShiftModifier)) {
318 m_currentModifiers.setFlag(Qt::ShiftModifier);
319 }
320 if (key == Qt::Key_Alt || event->modifiers().testFlag(Qt::AltModifier)) {
321 m_currentModifiers.setFlag(Qt::AltModifier);
322 }
323
324 // Avoid changing the selection mode and cursor if the user is interacting
325 if (isSelecting()) {
326 BaseClass::keyPressEvent(event);
327 return;
328 }
329 if (isMovingSelection()) {
330 return;
331 }
332
334 this->resetCursorStyle();
335 }
static Qt::Key workaroundShiftAltMetaHell(const QKeyEvent *keyEvent)
virtual void setAlternateSelectionAction(SelectionAction action)
Qt::KeyboardModifiers m_currentModifiers
SelectionAction map(Qt::KeyboardModifiers m)

References KisToolSelectBase< BaseClass >::isMovingSelection(), KisToolSelectBase< BaseClass >::isSelecting(), KisToolSelectBase< BaseClass >::m_currentModifiers, KisSelectionModifierMapper::map(), KisToolSelectBase< BaseClass >::setAlternateSelectionAction(), and KisExtendedModifiersMapper::workaroundShiftAltMetaHell().

◆ keyReleaseEvent()

template<class BaseClass >
void KisToolSelectBase< BaseClass >::keyReleaseEvent ( QKeyEvent * event)
inlineoverride

Definition at line 337 of file kis_tool_select_base.h.

338 {
340 // Assume all the modifiers were pressed...
341 m_currentModifiers = Qt::ControlModifier | Qt::ShiftModifier | Qt::AltModifier;
342 // ...and remove those which aren't right now
343 if (key == Qt::Key_Control || !event->modifiers().testFlag(Qt::ControlModifier)) {
344 m_currentModifiers.setFlag(Qt::ControlModifier, false);
345 }
346 if (key == Qt::Key_Shift || !event->modifiers().testFlag(Qt::ShiftModifier)) {
347 m_currentModifiers.setFlag(Qt::ShiftModifier, false);
348 }
349 if (key == Qt::Key_Alt || !event->modifiers().testFlag(Qt::AltModifier)) {
350 m_currentModifiers.setFlag(Qt::AltModifier, false);
351 }
352
353 // Avoid changing the selection mode and cursor if the user is interacting
354 if (isSelecting()) {
355 BaseClass::keyReleaseEvent(event);
356 return;
357 }
358 if (isMovingSelection()) {
359 return;
360 }
361
363 if (m_currentModifiers == Qt::NoModifier) {
365 if (selectionMask) {
366 this->useCursor(KisCursor::moveSelectionCursor());
367 } else {
368 this->resetCursorStyle();
369 }
370 } else {
371 this->resetCursorStyle();
372 }
373 }
static QCursor moveSelectionCursor()

References KisToolSelectBase< BaseClass >::isMovingSelection(), KisToolSelectBase< BaseClass >::isSelecting(), KisToolSelectBase< BaseClass >::locateSelectionMaskUnderCursor(), KisToolSelectBase< BaseClass >::m_currentModifiers, KisToolSelectBase< BaseClass >::m_currentPos, KisSelectionModifierMapper::map(), KisCursor::moveSelectionCursor(), KisToolSelectBase< BaseClass >::setAlternateSelectionAction(), and KisExtendedModifiersMapper::workaroundShiftAltMetaHell().

◆ locateSelectionMaskUnderCursor()

template<class BaseClass >
KisNodeSP KisToolSelectBase< BaseClass >::locateSelectionMaskUnderCursor ( const QPointF & pos,
Qt::KeyboardModifiers modifiers )
inline

Definition at line 281 of file kis_tool_select_base.h.

281 {
282 if (modifiers != Qt::NoModifier) return 0;
283
284 KisCanvas2* canvas = dynamic_cast<KisCanvas2*>(this->canvas());
286
287 KisSelectionSP selection = canvas->viewManager()->selection();
288 if (selection &&
289 selection->outlineCacheValid()) {
290
291 const qreal handleRadius = qreal(this->handleRadius()) / canvas->coordinatesConverter()->effectiveZoom();
292 QPainterPath samplePath;
293 samplePath.addEllipse(pos, handleRadius, handleRadius);
294
295 const QPainterPath selectionPath = selection->outlineCache();
296
297 if (selectionPath.intersects(samplePath) && !selectionPath.contains(samplePath)) {
298 KisNodeSP parent = selection->parentNode();
299 if (parent && parent->isEditable()) {
300 return parent;
301 }
302 }
303 }
304
305 return 0;
306 }
KisCoordinatesConverter * coordinatesConverter
KisViewManager * viewManager() const
KisSelectionSP selection()
#define KIS_SAFE_ASSERT_RECOVER_RETURN_VALUE(cond, val)
Definition kis_assert.h:129
ChildIterator< value_type, is_const > parent(const ChildIterator< value_type, is_const > &it)
Definition KisForest.h:327
bool outlineCacheValid() const
KisNodeWSP parentNode
QPainterPath outlineCache() const

References KisCanvas2::coordinatesConverter, KisCoordinatesConverter::effectiveZoom(), KIS_SAFE_ASSERT_RECOVER_RETURN_VALUE, KisSelection::outlineCache(), KisSelection::outlineCacheValid(), KisSelection::parentNode, KisViewManager::selection(), and KisCanvas2::viewManager().

◆ mouseMoveEvent()

◆ popupActionsMenu()

template<class BaseClass >
QMenu * KisToolSelectBase< BaseClass >::popupActionsMenu ( )
inlineoverride

Definition at line 455 of file kis_tool_select_base.h.

456 {
457 if (isSelecting()) {
458 return BaseClass::popupActionsMenu();
459 }
460
461 KisCanvas2 * kisCanvas = dynamic_cast<KisCanvas2*>(canvas());
463
465 }
static QMenu * getSelectionContextMenu(KisCanvas2 *canvas)

References KisSelectionToolHelper::getSelectionContextMenu(), KisToolSelectBase< BaseClass >::isSelecting(), and KIS_SAFE_ASSERT_RECOVER_RETURN_VALUE.

◆ popupWidget()

template<class BaseClass >
KisPopupWidgetInterface * KisToolSelectBase< BaseClass >::popupWidget ( )
inlineoverride

Definition at line 467 of file kis_tool_select_base.h.

468 {
469 if (isSelecting()) {
470 return BaseClass::popupWidget();
471 }
472 return nullptr;
473 }

References KisToolSelectBase< BaseClass >::isSelecting().

◆ sampleLayersMode()

template<class BaseClass >
SampleLayersMode KisToolSelectBase< BaseClass >::sampleLayersMode ( ) const
inline

Definition at line 218 of file kis_tool_select_base.h.

References KisSelectionOptions::AllLayers, KisSelectionOptions::ColorLabeledLayers, KisSelectionOptions::CurrentLayer, KIS_SAFE_ASSERT_RECOVER_RETURN_VALUE, KisToolSelectBase< BaseClass >::m_widgetHelper, KisSelectionToolConfigWidgetHelper::referenceLayers(), KisToolSelectBase< BaseClass >::SampleAllLayers, KisToolSelectBase< BaseClass >::SampleColorLabeledLayers, and KisToolSelectBase< BaseClass >::SampleCurrentLayer.

◆ selectionAction()

◆ selectionDidMove()

template<class BaseClass >
bool KisToolSelectBase< BaseClass >::selectionDidMove ( ) const
inline

Definition at line 450 of file kis_tool_select_base.h.

451 {
452 return m_didMove;
453 }

References KisToolSelectBase< BaseClass >::m_didMove.

◆ selectionMode()

template<class BaseClass >
SelectionMode KisToolSelectBase< BaseClass >::selectionMode ( ) const
inline

◆ selectionOptionWidget()

template<class BaseClass >
KisSelectionOptions * KisToolSelectBase< BaseClass >::selectionOptionWidget ( )
inline

◆ setAlternateSelectionAction()

template<class BaseClass >
virtual void KisToolSelectBase< BaseClass >::setAlternateSelectionAction ( SelectionAction action)
inlinevirtual

◆ stopGrowingAtDarkestPixel()

template<class BaseClass >
bool KisToolSelectBase< BaseClass >::stopGrowingAtDarkestPixel ( ) const
inline

◆ updateActionShortcutToolTips()

template<class BaseClass >
void KisToolSelectBase< BaseClass >::updateActionShortcutToolTips ( )
inline

Definition at line 97 of file kis_tool_select_base.h.

97 {
99 if (widget) {
102 this->action("selection_tool_mode_replace")->shortcut());
105 this->action("selection_tool_mode_add")->shortcut());
108 this->action("selection_tool_mode_subtract")->shortcut());
111 this->action("selection_tool_mode_intersect")->shortcut());
112 }
113 }
@ SELECTION_REPLACE
@ SELECTION_INTERSECT
@ SELECTION_SUBTRACT
@ SELECTION_ADD
void updateActionButtonToolTip(SelectionAction action, const QKeySequence &shortcut)

References KisToolSelectBase< BaseClass >::m_widgetHelper, KisSelectionToolConfigWidgetHelper::optionWidget(), SELECTION_ADD, SELECTION_INTERSECT, SELECTION_REPLACE, SELECTION_SUBTRACT, and KisSelectionOptions::updateActionButtonToolTip().

◆ updateCursorDelayed()

template<class BaseClass >
void KisToolSelectBase< BaseClass >::updateCursorDelayed ( )
inline

◆ usesColorLabels()

template<class BaseClass >
virtual bool KisToolSelectBase< BaseClass >::usesColorLabels ( ) const
inlineprotectedvirtual

Reimplemented in KisToolSelectContiguous, and KisToolSelectSimilar.

Definition at line 542 of file kis_tool_select_base.h.

542 {
543 return false;
544 }

Member Data Documentation

◆ m_currentInteraction

template<class BaseClass >
Interaction KisToolSelectBase< BaseClass >::m_currentInteraction {Interaction_None}
private

Definition at line 554 of file kis_tool_select_base.h.

◆ m_currentModifiers

template<class BaseClass >
Qt::KeyboardModifiers KisToolSelectBase< BaseClass >::m_currentModifiers
private

Definition at line 556 of file kis_tool_select_base.h.

◆ m_currentPos

template<class BaseClass >
QPointF KisToolSelectBase< BaseClass >::m_currentPos
private

Definition at line 559 of file kis_tool_select_base.h.

◆ m_didMove

template<class BaseClass >
bool KisToolSelectBase< BaseClass >::m_didMove = false
private

Definition at line 561 of file kis_tool_select_base.h.

◆ m_dragStartPos

template<class BaseClass >
QPointF KisToolSelectBase< BaseClass >::m_dragStartPos
private

Definition at line 558 of file kis_tool_select_base.h.

◆ m_modeConnections

template<class BaseClass >
KisSignalAutoConnectionsStore KisToolSelectBase< BaseClass >::m_modeConnections
private

Definition at line 563 of file kis_tool_select_base.h.

◆ m_moveStrokeId

template<class BaseClass >
KisStrokeId KisToolSelectBase< BaseClass >::m_moveStrokeId
private

Definition at line 560 of file kis_tool_select_base.h.

◆ m_selectionActionAlternate

template<class BaseClass >
SelectionAction KisToolSelectBase< BaseClass >::m_selectionActionAlternate
protected

Definition at line 536 of file kis_tool_select_base.h.

◆ m_widgetHelper

template<class BaseClass >
KisSelectionToolConfigWidgetHelper KisToolSelectBase< BaseClass >::m_widgetHelper
protected

Definition at line 535 of file kis_tool_select_base.h.


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