• 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/lib/ui/painting/image_filter.h"
6 
7 #include "flutter/lib/ui/painting/matrix.h"
8 #include "third_party/skia/include/effects/SkBlurImageFilter.h"
9 #include "third_party/skia/include/effects/SkImageSource.h"
10 #include "third_party/skia/include/effects/SkPictureImageFilter.h"
11 
12 namespace flutter {
13 
14 IMPLEMENT_WRAPPERTYPEINFO(ui, ImageFilter);
15 
16 #define FOR_EACH_BINDING(V)   \
17   V(ImageFilter, initImage)   \
18   V(ImageFilter, initPicture) \
19   V(ImageFilter, initBlur)    \
20   V(ImageFilter, initMatrix)
21 
FOR_EACH_BINDING(DART_NATIVE_CALLBACK)22 FOR_EACH_BINDING(DART_NATIVE_CALLBACK)
23 
24 void ImageFilter::RegisterNatives(tonic::DartLibraryNatives* natives) {
25 }
26 
Create()27 fml::RefPtr<ImageFilter> ImageFilter::Create() {
28   return fml::MakeRefCounted<ImageFilter>();
29 }
30 
ImageFilter()31 ImageFilter::ImageFilter() {}
32 
~ImageFilter()33 ImageFilter::~ImageFilter() {}
34 
initImage(CanvasImage * image)35 void ImageFilter::initImage(CanvasImage* image) {
36   filter_ = SkImageSource::Make(image->image());
37 }
38 
initPicture(Picture * picture)39 void ImageFilter::initPicture(Picture* picture) {
40   filter_ = SkPictureImageFilter::Make(picture->picture());
41 }
42 
initBlur(double sigma_x,double sigma_y)43 void ImageFilter::initBlur(double sigma_x, double sigma_y) {
44   filter_ = SkBlurImageFilter::Make(sigma_x, sigma_y, nullptr, nullptr,
45                                     SkBlurImageFilter::kClamp_TileMode);
46 }
47 
initMatrix(const std::vector<double> & matrix4,int filterQuality)48 void ImageFilter::initMatrix(const std::vector<double>& matrix4,
49                              int filterQuality) {
50   filter_ = SkImageFilter::MakeMatrixFilter(
51       ToSkMatrix(matrix4), static_cast<SkFilterQuality>(filterQuality),
52       nullptr);
53 }
54 
55 }  // namespace flutter
56