summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>2024-03-22 08:33:43 +0100
committerEskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>2024-04-18 12:41:18 +0200
commitbc2f4bc6176c94177c429359e0c3f11bdd603834 (patch)
tree4470c7b70f87c92882c8a0a1b8c395f82255cd45
parenta12db19318fd8b5e5f5ec017578d80d8e9f398e2 (diff)
Enablers for supporting mask element in QML generator
Visitor callbacks as well as exposing some properties. Task-number: QTBUG-121537 Change-Id: Ie11db84bf6c0475967f2b26a90155666dd383777 Reviewed-by: Hatem ElKharashy <hatem.elkharashy@qt.io>
-rw-r--r--src/svg/qsvgstructure_p.h11
-rw-r--r--src/svg/qsvgvisitor.cpp9
-rw-r--r--src/svg/qsvgvisitor_p.h2
3 files changed, 21 insertions, 1 deletions
diff --git a/src/svg/qsvgstructure_p.h b/src/svg/qsvgstructure_p.h
index fc08f8d..9a3c2a0 100644
--- a/src/svg/qsvgstructure_p.h
+++ b/src/svg/qsvgstructure_p.h
@@ -194,6 +194,17 @@ public:
Type type() const override;
QImage createMask(QPainter *p, QSvgExtraStates &states, QSvgNode *targetNode, QRectF *globalRect) const;
QImage createMask(QPainter *p, QSvgExtraStates &states, const QRectF &localRect, QRectF *globalRect) const;
+
+ QSvgRectF rect() const
+ {
+ return m_rect;
+ }
+
+ QtSvg::UnitTypes contentUnits() const
+ {
+ return m_contentUnits;
+ }
+
private:
QSvgRectF m_rect;
QtSvg::UnitTypes m_contentUnits;
diff --git a/src/svg/qsvgvisitor.cpp b/src/svg/qsvgvisitor.cpp
index b0935aa..018ace0 100644
--- a/src/svg/qsvgvisitor.cpp
+++ b/src/svg/qsvgvisitor.cpp
@@ -24,6 +24,10 @@ void QSvgVisitor::traverse(const QSvgStructureNode *node)
if (!visitGroupNodeStart(static_cast<const QSvgG *>(node)))
return;
break;
+ case QSvgNode::Mask:
+ if (!visitMaskNodeStart(static_cast<const QSvgMask *>(node)))
+ return;
+ break;
default:
Q_UNREACHABLE();
break;
@@ -45,6 +49,9 @@ void QSvgVisitor::traverse(const QSvgStructureNode *node)
case QSvgNode::Group:
visitGroupNodeEnd(static_cast<const QSvgG *>(node));
break;
+ case QSvgNode::Mask:
+ visitMaskNodeEnd(static_cast<const QSvgMask *>(node));
+ break;
default:
Q_UNREACHABLE();
break;
@@ -58,6 +65,7 @@ void QSvgVisitor::traverse(const QSvgNode *node)
case QSvgNode::Doc:
case QSvgNode::Defs:
case QSvgNode::Group:
+ case QSvgNode::Mask:
traverse(static_cast<const QSvgStructureNode *>(node));
break;
case QSvgNode::Animation:
@@ -100,7 +108,6 @@ void QSvgVisitor::traverse(const QSvgNode *node)
break;
// Enum values that don't have any QSvgNode classes yet:
- case QSvgNode::Mask:
case QSvgNode::Symbol:
case QSvgNode::Marker:
case QSvgNode::Pattern:
diff --git a/src/svg/qsvgvisitor_p.h b/src/svg/qsvgvisitor_p.h
index 92222e6..e1d0663 100644
--- a/src/svg/qsvgvisitor_p.h
+++ b/src/svg/qsvgvisitor_p.h
@@ -54,6 +54,8 @@ protected:
virtual void visitDefsNodeEnd(const QSvgDefs *node) { visitStructureNodeEnd(node); };
virtual bool visitSwitchNodeStart(const QSvgSwitch *node) { return visitStructureNodeStart(node); }
virtual void visitSwitchNodeEnd(const QSvgSwitch *node) { visitStructureNodeEnd(node); };
+ virtual bool visitMaskNodeStart(const QSvgMask *node) { return visitStructureNodeStart(node); }
+ virtual void visitMaskNodeEnd(const QSvgMask *node) { visitStructureNodeEnd(node); }
};
QT_END_NAMESPACE