// Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef FLUTTER_FLOW_LAYERS_CONTAINER_LAYER_H_ #define FLUTTER_FLOW_LAYERS_CONTAINER_LAYER_H_ #include #include "flutter/flow/layers/layer.h" namespace flutter { class ContainerLayer : public Layer { public: ContainerLayer(); void Diff(DiffContext* context, const Layer* old_layer) override; void PreservePaintRegion(DiffContext* context) override; virtual void Add(std::shared_ptr layer); void Preroll(PrerollContext* context) override; void Paint(PaintContext& context) const override; const std::vector>& layers() const { return layers_; } virtual void DiffChildren(DiffContext* context, const ContainerLayer* old_layer); void PaintChildren(PaintContext& context) const override; const ContainerLayer* as_container_layer() const override { return this; } const SkRect& child_paint_bounds() const { return child_paint_bounds_; } void set_child_paint_bounds(const SkRect& bounds) { child_paint_bounds_ = bounds; } int children_renderable_state_flags() const { return children_renderable_state_flags_; } void set_children_renderable_state_flags(int flags) { children_renderable_state_flags_ = flags; } protected: void PrerollChildren(PrerollContext* context, SkRect* child_paint_bounds); private: std::vector> layers_; SkRect child_paint_bounds_; int children_renderable_state_flags_ = 0; FML_DISALLOW_COPY_AND_ASSIGN(ContainerLayer); }; } // namespace flutter #endif // FLUTTER_FLOW_LAYERS_CONTAINER_LAYER_H_