blob: 128da45699e7e81137107dff74d9e29d767f869b [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 "sky/engine/core/painting/CanvasColor.h"
#include "sky/engine/core/script/dom_dart_state.h"
#include "sky/engine/tonic/dart_builtin.h"
#include "sky/engine/tonic/dart_error.h"
#include "sky/engine/tonic/dart_value.h"
namespace blink {
SkColor DartConverter<CanvasColor>::FromDart(Dart_Handle dart_color) {
Dart_Handle value =
Dart_GetField(dart_color, DOMDartState::Current()->value_handle());
uint64_t color = 0;
Dart_Handle rv = Dart_IntegerToUint64(value, &color);
DCHECK(!LogIfError(rv));
DCHECK(color <= 0xffffffff);
return static_cast<SkColor>(color);
}
SkColor DartConverter<CanvasColor>::FromArgumentsWithNullCheck(
Dart_NativeArguments args,
int index,
Dart_Handle& exception) {
Dart_Handle dart_color = Dart_GetNativeArgument(args, index);
DCHECK(!LogIfError(dart_color));
return FromDart(dart_color);
}
void DartConverter<CanvasColor>::SetReturnValue(Dart_NativeArguments args,
SkColor val) {
Dart_Handle color_class = DOMDartState::Current()->color_class();
Dart_Handle constructor_args[] = { ToDart(val) };
Dart_SetReturnValue(args,
Dart_New(color_class, Dart_Null(), 1, constructor_args));
}
} // namespace blink