1// Copyright 2013 The Flutter Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef FLUTTER_FLOW_LAYERS_CLIP_RECT_LAYER_H_
6#define FLUTTER_FLOW_LAYERS_CLIP_RECT_LAYER_H_
7
8#include "flutter/flow/layers/container_layer.h"
9
10namespace flutter {
11
12class ClipRectLayer : public ContainerLayer {
13 public:
14 ClipRectLayer(const SkRect& clip_rect, Clip clip_behavior);
15
16 void Preroll(PrerollContext* context, const SkMatrix& matrix) override;
17 void Paint(PaintContext& context) const override;
18
19 bool UsesSaveLayer() const {
20 return clip_behavior_ == Clip::antiAliasWithSaveLayer;
21 }
22
23#if defined(LEGACY_FUCHSIA_EMBEDDER)
24 void UpdateScene(SceneUpdateContext& context) override;
25#endif
26
27 private:
28 SkRect clip_rect_;
29 Clip clip_behavior_;
30 bool children_inside_clip_ = false;
31
32 FML_DISALLOW_COPY_AND_ASSIGN(ClipRectLayer);
33};
34
35} // namespace flutter
36
37#endif // FLUTTER_FLOW_LAYERS_CLIP_RECT_LAYER_H_
38