/* * 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