void V8CanvasRenderingContext2D::fillStyleAttrSetterCustom(v8::Local<v8::String> name, v8::Local<v8::Value> value, const v8::AccessorInfo& info) { CanvasRenderingContext2D* impl = V8CanvasRenderingContext2D::toNative(info.Holder()); if (value->IsString()) impl->setFillColor(toWebCoreString(value)); else impl->setFillStyle(toCanvasStyle(value, info.GetIsolate())); }
void JSCanvasRenderingContext2D::setFillStyle(ExecState* exec, JSValue value) { CanvasRenderingContext2D* context = static_cast<CanvasRenderingContext2D*>(impl()); if (value.isString()) { context->setFillColor(asString(value)->value(exec)); return; } context->setFillStyle(toHTMLCanvasStyle(exec, value)); }
void V8CanvasRenderingContext2D::fillStyleAttributeSetterCustom(v8::Local<v8::Value> value, const v8::PropertyCallbackInfo<void>& info) { CanvasRenderingContext2D* impl = V8CanvasRenderingContext2D::toNative(info.Holder()); if (RefPtr<CanvasStyle> canvasStyle = toCanvasStyle(value, info.GetIsolate())) { impl->setFillStyle(canvasStyle); } else { TOSTRING_VOID(V8StringResource<>, colorString, value); impl->setFillColor(colorString); } }
v8::Handle<v8::Value> V8CanvasRenderingContext2D::setFillColorCallback(const v8::Arguments& args) { INC_STATS("DOM.CanvasRenderingContext2D.setFillColor()"); CanvasRenderingContext2D* context = V8CanvasRenderingContext2D::toNative(args.Holder()); switch (args.Length()) { case 1: if (args[0]->IsString()) context->setFillColor(toWebCoreString(args[0])); else context->setFillColor(toFloat(args[0])); break; case 2: if (args[0]->IsString()) context->setFillColor(toWebCoreString(args[0]), toFloat(args[1])); else context->setFillColor(toFloat(args[0]), toFloat(args[1])); break; case 4: context->setFillColor(toFloat(args[0]), toFloat(args[1]), toFloat(args[2]), toFloat(args[3])); break; case 5: context->setFillColor(toFloat(args[0]), toFloat(args[1]), toFloat(args[2]), toFloat(args[3]), toFloat(args[4])); break; default: V8Proxy::throwError(V8Proxy::SyntaxError, "setFillColor: Invalid number of arguments"); break; } return v8::Undefined(); }
JSValue* JSCanvasRenderingContext2D::setFillColor(ExecState* exec, const ArgList& args) { CanvasRenderingContext2D* context = impl(); // string arg = named color // number arg = gray color // string arg, number arg = named color, alpha // number arg, number arg = gray color, alpha // 4 args = r, g, b, a // 5 args = c, m, y, k, a switch (args.size()) { case 1: if (args[0]->isString()) context->setFillColor(static_cast<JSString*>(args[0])->value()); else context->setFillColor(args[0]->toFloat(exec)); break; case 2: if (args[0]->isString()) context->setFillColor(static_cast<JSString*>(args[0])->value(), args[1]->toFloat(exec)); else context->setFillColor(args[0]->toFloat(exec), args[1]->toFloat(exec)); break; case 4: context->setFillColor(args[0]->toFloat(exec), args[1]->toFloat(exec), args[2]->toFloat(exec), args[3]->toFloat(exec)); break; case 5: context->setFillColor(args[0]->toFloat(exec), args[1]->toFloat(exec), args[2]->toFloat(exec), args[3]->toFloat(exec), args[4]->toFloat(exec)); break; default: return throwError(exec, SyntaxError); } return jsUndefined(); }