• 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_shader.h"
6 
7 #include "flutter/lib/ui/ui_dart_state.h"
8 
9 using tonic::ToDart;
10 
11 namespace flutter {
12 
ImageShader_constructor(Dart_NativeArguments args)13 static void ImageShader_constructor(Dart_NativeArguments args) {
14   DartCallConstructor(&ImageShader::Create, args);
15 }
16 
17 IMPLEMENT_WRAPPERTYPEINFO(ui, ImageShader);
18 
19 #define FOR_EACH_BINDING(V) V(ImageShader, initWithImage)
20 
FOR_EACH_BINDING(DART_NATIVE_CALLBACK)21 FOR_EACH_BINDING(DART_NATIVE_CALLBACK)
22 
23 void ImageShader::RegisterNatives(tonic::DartLibraryNatives* natives) {
24   natives->Register(
25       {{"ImageShader_constructor", ImageShader_constructor, 1, true},
26        FOR_EACH_BINDING(DART_REGISTER_NATIVE)});
27 }
28 
Create()29 fml::RefPtr<ImageShader> ImageShader::Create() {
30   return fml::MakeRefCounted<ImageShader>();
31 }
32 
initWithImage(CanvasImage * image,SkTileMode tmx,SkTileMode tmy,const tonic::Float64List & matrix4)33 void ImageShader::initWithImage(CanvasImage* image,
34                                 SkTileMode tmx,
35                                 SkTileMode tmy,
36                                 const tonic::Float64List& matrix4) {
37   if (!image) {
38     Dart_ThrowException(
39         ToDart("ImageShader constructor called with non-genuine Image."));
40   }
41   SkMatrix sk_matrix = ToSkMatrix(matrix4);
42   set_shader(UIDartState::CreateGPUObject(
43       image->image()->makeShader(tmx, tmy, &sk_matrix)));
44 }
45 
46 ImageShader::ImageShader() = default;
47 
48 ImageShader::~ImageShader() = default;
49 
50 }  // namespace flutter
51