JSValue* jsHTMLCanvasElementPrototypeFunctionToDataURL(ExecState* exec, JSObject*, JSValue* thisValue, const ArgList& args)
{
    if (!thisValue->isObject(&JSHTMLCanvasElement::s_info))
        return throwError(exec, TypeError);
    JSHTMLCanvasElement* castedThisObj = static_cast<JSHTMLCanvasElement*>(thisValue);
    HTMLCanvasElement* imp = static_cast<HTMLCanvasElement*>(castedThisObj->impl());
    ExceptionCode ec = 0;
    const UString& type = valueToStringWithUndefinedOrNullCheck(exec, args[0]);


    KJS::JSValue* result = jsString(exec, imp->toDataURL(type, ec));
    setDOMException(exec, ec);
    return result;
}
v8::Handle<v8::Value> V8HTMLCanvasElement::toDataURLCallback(const v8::Arguments& args)
{
    double quality = 1.0;
    if (args.Length() > 1) {
        if (args[1]->IsNumber())
            quality = args[1]->NumberValue();
        if (!(0.0 <= quality && quality <= 1.0))
            quality = 1.0;
    }
    v8::Handle<v8::Object> holder = args.Holder();
    HTMLCanvasElement* canvas = V8HTMLCanvasElement::toNative(holder);
    String type = toWebCoreString(args[0]);
    ExceptionCode ec = 0;
    String result = canvas->toDataURL(type, &quality, ec);
    V8Proxy::setDOMException(ec);
    return v8StringOrUndefined(result);
}
void V8HTMLCanvasElement::toDataURLMethodCustom(const v8::FunctionCallbackInfo<v8::Value>& info)
{
    v8::Handle<v8::Object> holder = info.Holder();
    HTMLCanvasElement* canvas = V8HTMLCanvasElement::toNative(holder);
    ExceptionState exceptionState(ExceptionState::ExecutionContext, "toDataURL", "HTMLCanvasElement", info.Holder(), info.GetIsolate());

    TOSTRING_VOID(V8StringResource<>, type, info[0]);
    double quality;
    double* qualityPtr = 0;
    if (info.Length() > 1 && info[1]->IsNumber()) {
        quality = info[1]->NumberValue();
        qualityPtr = &quality;
    }

    String result = canvas->toDataURL(type, qualityPtr, exceptionState);
    exceptionState.throwIfNeeded();
    v8SetReturnValueStringOrUndefined(info, result, info.GetIsolate());
}
Пример #4
0
v8::Handle<v8::Value> V8HTMLCanvasElement::toDataURLCallback(const v8::Arguments& args)
{
    v8::Handle<v8::Object> holder = args.Holder();
    HTMLCanvasElement* canvas = V8HTMLCanvasElement::toNative(holder);
    ExceptionCode ec = 0;

    String type = toWebCoreString(args[0]);
    double quality;
    double* qualityPtr = 0;
    if (args.Length() > 1 && args[1]->IsNumber()) {
        quality = args[1]->NumberValue();
        qualityPtr = &quality;
    }

    String result = canvas->toDataURL(type, qualityPtr, ec);
    setDOMException(ec, args.GetIsolate());
    return v8StringOrUndefined(result, args.GetIsolate());
}
Пример #5
0
JSValue JSHTMLCanvasElement::toDataURL(ExecState* exec)
{
    HTMLCanvasElement* canvas = static_cast<HTMLCanvasElement*>(impl());
    ExceptionCode ec = 0;

    const String& type = valueToStringWithUndefinedOrNullCheck(exec, exec->argument(0));
    double quality;
    double* qualityPtr = 0;
    if (exec->argumentCount() > 1) {
        JSValue v = exec->argument(1);
        if (v.isNumber()) {
            quality = v.toNumber(exec);
            qualityPtr = &quality;
        }
    }
    
    JSValue result = jsString(exec, canvas->toDataURL(type, qualityPtr, ec));
    setDOMException(exec, ec);
    return result;
}