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