• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 #include "flutter/flow/layers/shader_mask_layer.h"
6 
7 namespace flutter {
8 
ShaderMaskLayer(sk_sp<SkShader> shader,const SkRect & mask_rect,SkBlendMode blend_mode)9 ShaderMaskLayer::ShaderMaskLayer(sk_sp<SkShader> shader,
10                                  const SkRect& mask_rect,
11                                  SkBlendMode blend_mode)
12     : shader_(shader), mask_rect_(mask_rect), blend_mode_(blend_mode) {}
13 
14 ShaderMaskLayer::~ShaderMaskLayer() = default;
15 
Paint(PaintContext & context) const16 void ShaderMaskLayer::Paint(PaintContext& context) const {
17   TRACE_EVENT0("flutter", "ShaderMaskLayer::Paint");
18   FML_DCHECK(needs_painting());
19 
20   Layer::AutoSaveLayer save =
21       Layer::AutoSaveLayer::Create(context, paint_bounds(), nullptr);
22   PaintChildren(context);
23 
24   SkPaint paint;
25   paint.setBlendMode(blend_mode_);
26   paint.setShader(shader_);
27   context.leaf_nodes_canvas->translate(mask_rect_.left(), mask_rect_.top());
28   context.leaf_nodes_canvas->drawRect(
29       SkRect::MakeWH(mask_rect_.width(), mask_rect_.height()), paint);
30 }
31 
32 }  // namespace flutter
33