blob: d850cd9f1feed6bc43fe1ffc0bec575e8212466c [file] [log] [blame]
// 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.
#include "flutter/lib/ui/painting/image_shader.h"
#include "lib/tonic/dart_args.h"
#include "lib/tonic/dart_binding_macros.h"
#include "lib/tonic/converter/dart_converter.h"
#include "lib/tonic/dart_library_natives.h"
namespace blink {
static void ImageShader_constructor(Dart_NativeArguments args) {
DartCallConstructor(&ImageShader::Create, args);
}
IMPLEMENT_WRAPPERTYPEINFO(ui, ImageShader);
#define FOR_EACH_BINDING(V) V(ImageShader, initWithImage)
FOR_EACH_BINDING(DART_NATIVE_CALLBACK)
void ImageShader::RegisterNatives(tonic::DartLibraryNatives* natives) {
natives->Register(
{{"ImageShader_constructor", ImageShader_constructor, 1, true},
FOR_EACH_BINDING(DART_REGISTER_NATIVE)});
}
ftl::RefPtr<ImageShader> ImageShader::Create() {
return ftl::MakeRefCounted<ImageShader>();
}
void ImageShader::initWithImage(CanvasImage* image,
SkShader::TileMode tmx,
SkShader::TileMode tmy,
const tonic::Float64List& matrix4) {
FTL_DCHECK(image != NULL);
SkMatrix sk_matrix = ToSkMatrix(matrix4);
SkBitmap bitmap;
image->image()->asLegacyBitmap(&bitmap, SkImage::kRO_LegacyBitmapMode);
set_shader(SkShader::MakeBitmapShader(bitmap, tmx, tmy, &sk_matrix));
}
ImageShader::ImageShader() : Shader(nullptr) {}
ImageShader::~ImageShader() {}
} // namespace blink