aboutsummaryrefslogtreecommitdiffhomepage
path: root/modules/sksg/include/SkSGGroup.h
diff options
context:
space:
mode:
Diffstat (limited to 'modules/sksg/include/SkSGGroup.h')
-rw-r--r--modules/sksg/include/SkSGGroup.h47
1 files changed, 47 insertions, 0 deletions
diff --git a/modules/sksg/include/SkSGGroup.h b/modules/sksg/include/SkSGGroup.h
new file mode 100644
index 0000000000..482f10db8c
--- /dev/null
+++ b/modules/sksg/include/SkSGGroup.h
@@ -0,0 +1,47 @@
+/*
+ * Copyright 2017 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkSGGroup_DEFINED
+#define SkSGGroup_DEFINED
+
+#include "SkSGRenderNode.h"
+
+#include "SkTArray.h"
+
+namespace sksg {
+
+/**
+ * Concrete node, grouping together multiple descendants.
+ */
+class Group : public RenderNode {
+public:
+ static sk_sp<Group> Make() {
+ return sk_sp<Group>(new Group());
+ }
+
+ void addChild(sk_sp<RenderNode>);
+ void removeChild(const sk_sp<RenderNode>&);
+
+ size_t size() const { return SkTo<size_t>(fChildren.count()); }
+ bool empty() const { return fChildren.empty(); }
+
+protected:
+ Group();
+ ~Group() override;
+
+ void onRender(SkCanvas*) const override;
+ SkRect onRevalidate(InvalidationController*, const SkMatrix&) override;
+
+private:
+ SkTArray<sk_sp<RenderNode>, true> fChildren;
+
+ typedef RenderNode INHERITED;
+};
+
+} // namespace sksg
+
+#endif // SkSGGroup_DEFINED