image_shader.cc 1.5 KB
Newer Older
1 2 3 4
// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

5
#include "flutter/lib/ui/painting/image_shader.h"
6

7
#include "lib/tonic/converter/dart_converter.h"
8 9 10
#include "lib/tonic/dart_args.h"
#include "lib/tonic/dart_binding_macros.h"
#include "lib/tonic/dart_library_natives.h"
A
Adam Barth 已提交
11

12 13
using tonic::ToDart;

14 15
namespace blink {

A
Adam Barth 已提交
16
static void ImageShader_constructor(Dart_NativeArguments args) {
17
  DartCallConstructor(&ImageShader::Create, args);
A
Adam Barth 已提交
18 19
}

20
IMPLEMENT_WRAPPERTYPEINFO(ui, ImageShader);
A
Adam Barth 已提交
21

22
#define FOR_EACH_BINDING(V) V(ImageShader, initWithImage)
23 24 25

FOR_EACH_BINDING(DART_NATIVE_CALLBACK)

26
void ImageShader::RegisterNatives(tonic::DartLibraryNatives* natives) {
27 28 29
  natives->Register(
      {{"ImageShader_constructor", ImageShader_constructor, 1, true},
       FOR_EACH_BINDING(DART_REGISTER_NATIVE)});
A
Adam Barth 已提交
30 31
}

32 33
fxl::RefPtr<ImageShader> ImageShader::Create() {
  return fxl::MakeRefCounted<ImageShader>();
34 35 36 37 38
}

void ImageShader::initWithImage(CanvasImage* image,
                                SkShader::TileMode tmx,
                                SkShader::TileMode tmy,
39
                                const tonic::Float64List& matrix4) {
40
  if (!image)
41 42
    Dart_ThrowException(
        ToDart("ImageShader constructor called with non-genuine Image."));
43
  SkMatrix sk_matrix = ToSkMatrix(matrix4);
44
  set_shader(image->image()->makeShader(tmx, tmy, &sk_matrix));
45 46
}

47
ImageShader::ImageShader() : Shader(nullptr) {}
48

49
ImageShader::~ImageShader() {}
50 51

}  // namespace blink