Chromium Code Reviews| Index: experimental/SkV8Example/JsContext.cpp |
| diff --git a/experimental/SkV8Example/JsContext.cpp b/experimental/SkV8Example/JsContext.cpp |
| index 5778172f27338c962f56482919fd1d54ba143f29..d6b06ce3905cd2ffd7fafdbb8e9ff5ae0eca2e74 100644 |
| --- a/experimental/SkV8Example/JsContext.cpp |
| +++ b/experimental/SkV8Example/JsContext.cpp |
| @@ -158,13 +158,13 @@ void JsContext::SetStyle(Local<String> name, Local<Value> value, |
| const PropertyCallbackInfo<void>& info, |
| SkPaint& style) { |
| Local<String> s = value->ToString(); |
| - if (s->Length() != 7) { |
| + if (s->Length() != 7 && s->Length() != 9) { |
| info.GetIsolate()->ThrowException( |
| v8::String::NewFromUtf8( |
|
robertphillips
2014/01/13 17:49:56
length?
jcgregorio
2014/01/13 17:52:41
Done.
|
| - info.GetIsolate(), "Invalid fill style format.")); |
| + info.GetIsolate(), "Invalid fill style format lenth.")); |
| return; |
| } |
| - char buf[8]; |
| + char buf[10]; |
| s->WriteUtf8(buf, sizeof(buf)); |
| if (buf[0] != '#') { |
| @@ -174,8 +174,14 @@ void JsContext::SetStyle(Local<String> name, Local<Value> value, |
| return; |
| } |
| + // Colors can be RRGGBBAA, but SkColor uses ARGB. |
| long color = strtol(buf+1, NULL, 16); |
| - style.setColor(SkColorSetA(SkColor(color), SK_AlphaOPAQUE)); |
| + uint32_t alpha = SK_AlphaOPAQUE; |
| + if (s->Length() == 9) { |
| + alpha = color & 0xFF; |
| + color >>= 8; |
| + } |
| + style.setColor(SkColorSetA(SkColor(color), alpha)); |
| } |
| void JsContext::GetFillStyle(Local<String> name, |