Add handling alpha values in RRGGBBAA formatted styles.
BUG= R=robertphillips@google.com Author: jcgregorio@google.com Review URL: https://codereview.chromium.org/136553006 git-svn-id: http://skia.googlecode.com/svn/trunk@13052 2bbb7eff-a529-9590-31e7-b0007b416f81
This commit is contained in:
parent
7a4b9fab28
commit
2055454a4e
@ -158,13 +158,14 @@ void JsContext::SetStyle(Local<String> name, Local<Value> value,
|
|||||||
const PropertyCallbackInfo<void>& info,
|
const PropertyCallbackInfo<void>& info,
|
||||||
SkPaint& style) {
|
SkPaint& style) {
|
||||||
Local<String> s = value->ToString();
|
Local<String> s = value->ToString();
|
||||||
if (s->Length() != 7) {
|
if (s->Length() != 7 && s->Length() != 9) {
|
||||||
info.GetIsolate()->ThrowException(
|
info.GetIsolate()->ThrowException(
|
||||||
v8::String::NewFromUtf8(
|
v8::String::NewFromUtf8(
|
||||||
info.GetIsolate(), "Invalid fill style format."));
|
info.GetIsolate(),
|
||||||
|
"Invalid fill style format length."));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
char buf[8];
|
char buf[10];
|
||||||
s->WriteUtf8(buf, sizeof(buf));
|
s->WriteUtf8(buf, sizeof(buf));
|
||||||
|
|
||||||
if (buf[0] != '#') {
|
if (buf[0] != '#') {
|
||||||
@ -174,8 +175,14 @@ void JsContext::SetStyle(Local<String> name, Local<Value> value,
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Colors can be RRGGBBAA, but SkColor uses ARGB.
|
||||||
long color = strtol(buf+1, NULL, 16);
|
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,
|
void JsContext::GetFillStyle(Local<String> name,
|
||||||
|
Loading…
Reference in New Issue
Block a user