提交 3aa1e23d 编写于 作者: M Matt Perry

Sky: Convert TransferMode to an enum.

It looked and smelled like an enum, so lets just make it one. This also gives us a nice toString() method.

R=abarth@chromium.org, eseidel@chromium.org, ianh@google.com

Review URL: https://codereview.chromium.org/1144233004
上级 b18eecb5
......@@ -12,6 +12,11 @@
namespace blink {
// If this fails, it's because SkXfermode has changed. We need to change
// TransferMode.dart to ensure the TransferMode enum is in sync with the C++
// values.
COMPILE_ASSERT(SkXfermode::kLastMode == 28, Need_to_update_TransferMode_dart);
// Convert dart_mode => SkXfermode::Mode.
SkXfermode::Mode DartConverter<TransferMode>::FromArgumentsWithNullCheck(
Dart_NativeArguments args,
......@@ -23,7 +28,7 @@ SkXfermode::Mode DartConverter<TransferMode>::FromArgumentsWithNullCheck(
DCHECK(!LogIfError(dart_mode));
Dart_Handle value =
Dart_GetField(dart_mode, DOMDartState::Current()->value_handle());
Dart_GetField(dart_mode, DOMDartState::Current()->index_handle());
uint64_t mode = 0;
Dart_Handle rv = Dart_IntegerToUint64(value, &mode);
......
......@@ -4,48 +4,40 @@
part of dart.sky;
/// Color transfer mode.
class TransferMode {
final int _value;
/// List of predefined color transfer modes. This list comes from Skia's
/// SkXfermode.h and the values (order) should be kept in sync.
enum TransferMode {
clearMode,
srcMode,
dstMode,
srcOverMode,
dstOverMode,
srcInMode,
dstInMode,
srcOutMode,
dstOutMode,
srcATopMode,
dstATopMode,
xorMode,
plusMode,
modulateMode,
const TransferMode(this._value);
// Following blend modes are defined in the CSS Compositing standard.
screenMode, /// The last coeff mode.
/// List of predefined modes. This list comes from Skia's SkXfermode.h and
/// the values should be kept in sync.
static const TransferMode clearMode = const TransferMode(0);
static const TransferMode srcMode = const TransferMode(1);
static const TransferMode dstMode = const TransferMode(2);
static const TransferMode srcOverMode = const TransferMode(3);
static const TransferMode dstOverMode = const TransferMode(4);
static const TransferMode srcInMode = const TransferMode(5);
static const TransferMode dstInMode = const TransferMode(6);
static const TransferMode srcOutMode = const TransferMode(7);
static const TransferMode dstOutMode = const TransferMode(8);
static const TransferMode srcATopMode = const TransferMode(9);
static const TransferMode dstATopMode = const TransferMode(10);
static const TransferMode xorMode = const TransferMode(11);
static const TransferMode plusMode = const TransferMode(12);
static const TransferMode modulateMode = const TransferMode(13);
overlayMode,
darkenMode,
lightenMode,
colorDodgeMode,
colorBurnMode,
hardLightMode,
softLightMode,
differenceMode,
exclusionMode,
multiplyMode, /// The last separable mode.
// Following blend modes are defined in the CSS Compositing standard:
// https://dvcs.w3.org/hg/FXTF/rawfile/tip/compositing/index.html#blending
static const TransferMode screenMode = const TransferMode(14);
static const TransferMode lastCoeffMode = screenMode = const TransferMode(15);
static const TransferMode overlayMode = const TransferMode(16);
static const TransferMode darkenMode = const TransferMode(17);
static const TransferMode lightenMode = const TransferMode(18);
static const TransferMode colorDodgeMode = const TransferMode(19);
static const TransferMode colorBurnMode = const TransferMode(20);
static const TransferMode hardLightMode = const TransferMode(21);
static const TransferMode softLightMode = const TransferMode(22);
static const TransferMode differenceMode = const TransferMode(23);
static const TransferMode exclusionMode = const TransferMode(24);
static const TransferMode multiplyMode = const TransferMode(25);
static const TransferMode lastSeparableMode = multiplyMode = const TransferMode(26);
static const TransferMode hueMode = const TransferMode(27);
static const TransferMode saturationMode = const TransferMode(28);
static const TransferMode colorMode = const TransferMode(29);
static const TransferMode luminosityMode = const TransferMode(30);
hueMode,
saturationMode,
colorMode,
luminosityMode,
}
......@@ -22,6 +22,7 @@ void DOMDartState::DidSetIsolate() {
Scope dart_scope(this);
x_handle_.Set(this, Dart_NewStringFromCString("x"));
y_handle_.Set(this, Dart_NewStringFromCString("y"));
index_handle_.Set(this, Dart_NewStringFromCString("index"));
value_handle_.Set(this, Dart_NewStringFromCString("_value"));
Dart_Handle sky_library = DartBuiltin::LookupLibrary("dart:sky");
......
......@@ -34,6 +34,7 @@ class DOMDartState : public DartState {
// Cached handles to strings used in Dart/C++ conversions.
Dart_Handle x_handle() { return x_handle_.value(); }
Dart_Handle y_handle() { return y_handle_.value(); }
Dart_Handle index_handle() { return index_handle_.value(); }
Dart_Handle value_handle() { return value_handle_.value(); }
Dart_Handle color_class() { return color_class_.value(); }
......@@ -43,6 +44,7 @@ class DOMDartState : public DartState {
DartPersistentValue x_handle_;
DartPersistentValue y_handle_;
DartPersistentValue index_handle_;
DartPersistentValue value_handle_;
DartPersistentValue color_class_;
};
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册