static QPointF createParentAnchorPoint(const QmlItemNode &parentQmlItemNode, AnchorLine::Type anchorLineType, const QmlItemNode &childQmlItemNode) { QRectF parentBoundingRect = parentQmlItemNode.instanceSceneTransform().mapRect(parentQmlItemNode.instanceBoundingRect().adjusted(0., 0., 1., 1.)); QRectF childBoundingRect = childQmlItemNode.instanceSceneTransform().mapRect(childQmlItemNode.instanceBoundingRect().adjusted(0., 0., 1., 1.)); QPointF anchorPoint; switch (anchorLineType) { case AnchorLine::Top: anchorPoint = QPointF(childBoundingRect.center().x(), parentBoundingRect.top()); break; case AnchorLine::Bottom: anchorPoint = QPointF(childBoundingRect.center().x(), parentBoundingRect.bottom()); break; case AnchorLine::Left: anchorPoint = QPointF(parentBoundingRect.left(), childBoundingRect.center().y()); break; case AnchorLine::Right: anchorPoint = QPointF(parentBoundingRect.right(), childBoundingRect.center().y()); break; default: break; } return anchorPoint; }
QRectF QmlAnchorBindingProxy::boundingBox(const QmlItemNode &node) { if (node.isValid()) return node.instanceTransformWithContentTransform().mapRect(node.instanceBoundingRect()); return QRect(); }
static QPointF createAnchorPoint(const QmlItemNode &qmlItemNode, AnchorLine::Type anchorLineType) { QRectF boundingRect = qmlItemNode.instanceBoundingRect().adjusted(0., 0., 1., 1.); QPointF anchorPoint; switch (anchorLineType) { case AnchorLine::Top: anchorPoint = QPointF(boundingRect.center().x(), boundingRect.top()); break; case AnchorLine::Bottom: anchorPoint = QPointF(boundingRect.center().x(), boundingRect.bottom()); break; case AnchorLine::Left: anchorPoint = QPointF(boundingRect.left(), boundingRect.center().y()); break; case AnchorLine::Right: anchorPoint = QPointF(boundingRect.right(), boundingRect.center().y()); break; default: break; } return qmlItemNode.instanceSceneTransform().map(anchorPoint); }
QLineF bottomLine(const QmlItemNode &qmlItemNode) { QRectF rectangle = qmlItemNode.instanceSceneTransform().mapRect(qmlItemNode.instanceBoundingRect()).adjusted(1, 0, 0, 0); return QLineF(rectangle.bottomLeft(), rectangle.bottomRight()); }