Krita Source Code Documentation
Loading...
Searching...
No Matches
DefaultTool::MoveMeshGradientHandleInteractionFactory Class Reference
+ Inheritance diagram for DefaultTool::MoveMeshGradientHandleInteractionFactory:

Public Member Functions

KoInteractionStrategycreateStrategy (KoPointerEvent *ev) override
 
bool hoverEvent (KoPointerEvent *ev) override
 
 MoveMeshGradientHandleInteractionFactory (KoFlake::FillVariant fillVariant, int priority, const QString &id, DefaultTool *_q)
 
bool paintOnHover (QPainter &painter, const KoViewConverter &converter) override
 
bool tryUseCustomCursor () override
 
- Public Member Functions inherited from KoInteractionStrategyFactory
QString id () const
 
 KoInteractionStrategyFactory (int priority, const QString &id)
 
int priority () const
 
virtual ~KoInteractionStrategyFactory ()
 

Private Member Functions

KoShapeMeshGradientHandles::Handle handleAt (const QPointF &pos) const
 
KoShapeonlyEditableShape () const
 

Private Attributes

KoShapeMeshGradientHandles::Handle m_currentHandle
 
KoFlake::FillVariant m_fillVariant
 
DefaultToolq
 

Additional Inherited Members

- Static Public Member Functions inherited from KoInteractionStrategyFactory
static bool compareLess (KoInteractionStrategyFactorySP f1, KoInteractionStrategyFactorySP f2)
 

Detailed Description

Definition at line 281 of file DefaultTool.cpp.

Constructor & Destructor Documentation

◆ MoveMeshGradientHandleInteractionFactory()

DefaultTool::MoveMeshGradientHandleInteractionFactory::MoveMeshGradientHandleInteractionFactory ( KoFlake::FillVariant fillVariant,
int priority,
const QString & id,
DefaultTool * _q )
inline

Definition at line 284 of file DefaultTool.cpp.

Member Function Documentation

◆ createStrategy()

KoInteractionStrategy * DefaultTool::MoveMeshGradientHandleInteractionFactory::createStrategy ( KoPointerEvent * ev)
inlineoverridevirtual

Implements KoInteractionStrategyFactory.

Definition at line 294 of file DefaultTool.cpp.

295 {
299
300
302 KoShape *shape = onlyEditableShape();
304
306 }
307
308 return nullptr;
309 }
KoShapeMeshGradientHandles::Handle handleAt(const QPointF &pos) const
KoShapeMeshGradientHandles::Handle m_currentHandle
KoShapeMeshGradientHandles::Handle m_selectedMeshHandle
void meshgradientHandleSelected(KoShapeMeshGradientHandles::Handle)
QPointF point
The point in document coordinates.
#define KIS_SAFE_ASSERT_RECOVER_RETURN_VALUE(cond, val)
Definition kis_assert.h:129

References handleAt(), KIS_SAFE_ASSERT_RECOVER_RETURN_VALUE, m_currentHandle, m_fillVariant, DefaultTool::m_selectedMeshHandle, DefaultTool::meshgradientHandleSelected(), KoShapeMeshGradientHandles::Handle::None, onlyEditableShape(), KoPointerEvent::point, q, and KoShapeMeshGradientHandles::Handle::type.

◆ handleAt()

KoShapeMeshGradientHandles::Handle DefaultTool::MoveMeshGradientHandleInteractionFactory::handleAt ( const QPointF & pos) const
inlineprivate

Definition at line 363 of file DefaultTool.cpp.

364 {
365 // FIXME: copy of KoShapeGradientHandles. use a template?
367
368 KoShape *shape = onlyEditableShape();
369 if (shape) {
370 KoFlake::SelectionHandle globalHandle = q->handleAt(pos);
371 const qreal distanceThresholdSq =
372 globalHandle == KoFlake::NoHandle ?
374
375 const KoViewConverter *converter = q->canvas()->viewConverter();
376 const QPointF viewPoint = converter->documentToView(pos);
377 qreal minDistanceSq = std::numeric_limits<qreal>::max();
378
380
381 for (const auto& handle: sh.handles()) {
382 const QPointF handlePoint = converter->documentToView(handle.pos);
383 const qreal distanceSq = kisSquareDistance(viewPoint, handlePoint);
384
385 if (distanceSq < distanceThresholdSq && distanceSq < minDistanceSq) {
386 result = handle;
387 minDistanceSq = distanceSq;
388 }
389 }
390 }
391
392 return result;
393 }
#define HANDLE_DISTANCE_SQ
KoFlake::SelectionHandle handleAt(const QPointF &point, bool *innerHandleMeaning=0)
virtual const KoViewConverter * viewConverter() const =0
KoCanvasBase * canvas() const
Returns the canvas the tool is working on.
virtual QPointF documentToView(const QPointF &documentPoint) const
qreal kisSquareDistance(const QPointF &pt1, const QPointF &pt2)
Definition kis_global.h:194
SelectionHandle
Enum determining which handle is meant, used in KoInteractionTool.
Definition KoFlake.h:55
@ NoHandle
Value to indicate no handle.
Definition KoFlake.h:64

References KoToolBase::canvas(), KoViewConverter::documentToView(), HANDLE_DISTANCE_SQ, DefaultTool::handleAt(), KoShapeMeshGradientHandles::handles(), kisSquareDistance(), m_fillVariant, KoFlake::NoHandle, onlyEditableShape(), q, and KoCanvasBase::viewConverter().

◆ hoverEvent()

bool DefaultTool::MoveMeshGradientHandleInteractionFactory::hoverEvent ( KoPointerEvent * ev)
inlineoverridevirtual

Implements KoInteractionStrategyFactory.

Definition at line 311 of file DefaultTool.cpp.

312 {
313 // for custom cursor
315
316 // refresh
319 }
320
321 m_currentHandle = handle;
323
324 // highlight the decoration which is being hovered
327 }
328 return false;
329 }
KoShapeMeshGradientHandles::Handle m_hoveredMeshHandle
virtual void repaintDecorations()

References handleAt(), m_currentHandle, DefaultTool::m_hoveredMeshHandle, KoShapeMeshGradientHandles::Handle::None, KoPointerEvent::point, q, KoToolBase::repaintDecorations(), and KoShapeMeshGradientHandles::Handle::type.

◆ onlyEditableShape()

KoShape * DefaultTool::MoveMeshGradientHandleInteractionFactory::onlyEditableShape ( ) const
inlineprivate

Definition at line 350 of file DefaultTool.cpp.

350 {
351 // FIXME: copy of KoShapeGradientHandles
353 QList<KoShape*> shapes = selection->selectedEditableShapes();
354
355 KoShape *shape = 0;
356 if (shapes.size() == 1) {
357 shape = shapes.first();
358 }
359
360 return shape;
361 }
virtual KoSelection * koSelection() const
KoToolSelection * selection() override
reimplemented

References DefaultTool::koSelection(), q, and DefaultTool::selection().

◆ paintOnHover()

bool DefaultTool::MoveMeshGradientHandleInteractionFactory::paintOnHover ( QPainter & painter,
const KoViewConverter & converter )
inlineoverridevirtual

Implements KoInteractionStrategyFactory.

Definition at line 331 of file DefaultTool.cpp.

332 {
333 Q_UNUSED(painter);
334 Q_UNUSED(converter);
335 return false;
336 }

◆ tryUseCustomCursor()

bool DefaultTool::MoveMeshGradientHandleInteractionFactory::tryUseCustomCursor ( )
inlineoverridevirtual

Implements KoInteractionStrategyFactory.

Definition at line 338 of file DefaultTool.cpp.

339 {
341 q->useCursor(Qt::OpenHandCursor);
342 return true;
343 }
344
345 return false;
346 }
void useCursor(const QCursor &cursor)

References m_currentHandle, KoShapeMeshGradientHandles::Handle::None, q, KoShapeMeshGradientHandles::Handle::type, and KoToolBase::useCursor().

Member Data Documentation

◆ m_currentHandle

KoShapeMeshGradientHandles::Handle DefaultTool::MoveMeshGradientHandleInteractionFactory::m_currentHandle
private

Definition at line 397 of file DefaultTool.cpp.

◆ m_fillVariant

KoFlake::FillVariant DefaultTool::MoveMeshGradientHandleInteractionFactory::m_fillVariant
private

Definition at line 396 of file DefaultTool.cpp.

◆ q

DefaultTool* DefaultTool::MoveMeshGradientHandleInteractionFactory::q
private

Definition at line 398 of file DefaultTool.cpp.


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