flutter_flutter/sky/engine/core/painting/LayerDrawLooperBuilder.cpp
Jason Simmons 10ce8a1928 Move the JNI bridge out of dart:ui and into a separate dart:jni library
This also extends DartClassLibrary to support multiple DartClassProviders
for different libraries
2016-01-08 11:04:22 -08:00

56 lines
1.7 KiB
C++

// 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 "sky/engine/core/painting/LayerDrawLooperBuilder.h"
#include "sky/engine/core/painting/DrawLooper.h"
#include "sky/engine/core/painting/DrawLooperLayerInfo.h"
#include "sky/engine/core/painting/Paint.h"
#include "sky/engine/tonic/dart_args.h"
#include "sky/engine/tonic/dart_binding_macros.h"
#include "sky/engine/tonic/dart_converter.h"
#include "sky/engine/tonic/dart_library_natives.h"
#include "third_party/skia/include/core/SkColorFilter.h"
namespace blink {
static void LayerDrawLooperBuilder_constructor(Dart_NativeArguments args) {
DartCallConstructor(&LayerDrawLooperBuilder::create, args);
}
IMPLEMENT_WRAPPERTYPEINFO(ui, LayerDrawLooperBuilder);
#define FOR_EACH_BINDING(V) \
V(LayerDrawLooperBuilder, build) \
V(LayerDrawLooperBuilder, addLayerOnTop)
FOR_EACH_BINDING(DART_NATIVE_CALLBACK)
void LayerDrawLooperBuilder::RegisterNatives(DartLibraryNatives* natives) {
natives->Register({
{ "LayerDrawLooperBuilder_constructor", LayerDrawLooperBuilder_constructor, 1, true },
FOR_EACH_BINDING(DART_REGISTER_NATIVE)
});
}
LayerDrawLooperBuilder::LayerDrawLooperBuilder() {
}
LayerDrawLooperBuilder::~LayerDrawLooperBuilder() {
}
PassRefPtr<DrawLooper> LayerDrawLooperBuilder::build() {
return DrawLooper::create(adoptRef(draw_looper_builder_.detachLooper()));
}
void LayerDrawLooperBuilder::addLayerOnTop(
DrawLooperLayerInfo* layer_info, const Paint& paint) {
SkPaint* sk_paint =
draw_looper_builder_.addLayerOnTop(layer_info->layer_info());
if (!paint.is_null)
*sk_paint = paint.sk_paint;
}
} // namespace blink