28 const QPointF &clicked,
bool start)
31 , m_dragStart(clicked)
32 , m_initialPosition(shape->absolutePosition(
KoFlake::TopLeft))
33 , m_finalPos(m_initialPosition)
34 , m_anchorOffset(m_shape->absoluteTransformation().map(QPointF()))
35 , m_startHandle(start)
40 if (std::optional<InlineSizeInfo> info = InlineSizeInfo::fromShape(shape)) {
44 QPointF handleLocation =
m_startHandle? info->startLine().p1(): info->endLine().p1();
45 QTransform invTransform = (info->editorTransform * info->shapeTransform).inverted();
47 m_snapDelta = invTransform.inverted().map(QPointF(invTransform.map(handleLocation).x(), initPos.y())) -
m_dragStart;
58 QTransform invTransform{};
60 if (std::optional<InlineSizeInfo> info = InlineSizeInfo::fromShape(
m_shape)) {
61 invTransform = (info->editorTransform * info->shapeTransform).inverted();
65 double newInlineSize = 0.0;
67 QPointF snapDelta = invTransform.inverted().map(QPointF(invTransform.map(mouseLocation +
m_snapDelta).x(), initPos.y())) - mouseLocation;
68 QPointF snappedLocation =
tool()->
canvas()->
snapGuide()->
snap(mouseLocation + snapDelta, modifiers) - snapDelta;
69 const double mouseDelta = invTransform.map(QLineF(
m_dragStart, snappedLocation)).dx();
75 QPointF diff = (invTransform.inverted().map(QPointF(mouseDelta, 0)) - anchorPos) - anchorDiff;
79 case VisualAnchor::LeftOrTop:
86 case VisualAnchor::Mid:
87 if (modifiers.testFlag(Qt::ControlModifier)) {
94 newPosition -= anchorDiff;
98 newPosition += ((invTransform.inverted().map(QPointF(0.5 * mouseDelta, 0)) - anchorPos)) - anchorDiff;
101 diff = ((invTransform.inverted().map(QPointF(0.5 * mouseDelta, 0)) - anchorPos)) - anchorDiff;
105 case VisualAnchor::RightOrBottom:
118 const bool flip = newInlineSize < -1.0;
119 if (newInlineSize >= -1.0 && newInlineSize < 1.0) {
122 newInlineSize = qRound(newInlineSize * 100.0) / 100.0;
128 newInlineSize = fabs(newInlineSize);
QVariant propertyOrDefault(PropertyId id) const
QPointF initialTextPosition
KoSvgTextProperties textProperties() const
TextAnchor
Where the text is anchored for SVG 1.1 text and 'inline-size'.
@ AnchorEnd
Anchor right for LTR, left for RTL.
@ AnchorStart
Anchor left for LTR, right for RTL.