📄 jscanvasrenderingcontext2dcustom.cpp
字号:
break; case 5: context->drawImage(imgElt, args.at(exec, 1).toFloat(exec), args.at(exec, 2).toFloat(exec), args.at(exec, 3).toFloat(exec), args.at(exec, 4).toFloat(exec), ec); setDOMException(exec, ec); break; case 9: context->drawImage(imgElt, FloatRect(args.at(exec, 1).toFloat(exec), args.at(exec, 2).toFloat(exec), args.at(exec, 3).toFloat(exec), args.at(exec, 4).toFloat(exec)), FloatRect(args.at(exec, 5).toFloat(exec), args.at(exec, 6).toFloat(exec), args.at(exec, 7).toFloat(exec), args.at(exec, 8).toFloat(exec)), ec); setDOMException(exec, ec); break; default: return throwError(exec, SyntaxError); } } else if (o->inherits(&JSHTMLCanvasElement::s_info)) { HTMLCanvasElement* canvas = static_cast<HTMLCanvasElement*>(static_cast<JSHTMLElement*>(o)->impl()); switch (args.size()) { case 3: context->drawImage(canvas, args.at(exec, 1).toFloat(exec), args.at(exec, 2).toFloat(exec)); break; case 5: context->drawImage(canvas, args.at(exec, 1).toFloat(exec), args.at(exec, 2).toFloat(exec), args.at(exec, 3).toFloat(exec), args.at(exec, 4).toFloat(exec), ec); setDOMException(exec, ec); break; case 9: context->drawImage(canvas, FloatRect(args.at(exec, 1).toFloat(exec), args.at(exec, 2).toFloat(exec), args.at(exec, 3).toFloat(exec), args.at(exec, 4).toFloat(exec)), FloatRect(args.at(exec, 5).toFloat(exec), args.at(exec, 6).toFloat(exec), args.at(exec, 7).toFloat(exec), args.at(exec, 8).toFloat(exec)), ec); setDOMException(exec, ec); break; default: return throwError(exec, SyntaxError); } } else { setDOMException(exec, TYPE_MISMATCH_ERR); } return jsUndefined(); }JSValuePtr JSCanvasRenderingContext2D::drawImageFromRect(ExecState* exec, const ArgList& args){ CanvasRenderingContext2D* context = impl(); JSValuePtr value = args.at(exec, 0); if (!value.isObject()) return throwError(exec, TypeError); JSObject* o = asObject(value); if (!o->inherits(&JSHTMLImageElement::s_info)) return throwError(exec, TypeError); context->drawImageFromRect(static_cast<HTMLImageElement*>(static_cast<JSHTMLElement*>(o)->impl()), args.at(exec, 1).toFloat(exec), args.at(exec, 2).toFloat(exec), args.at(exec, 3).toFloat(exec), args.at(exec, 4).toFloat(exec), args.at(exec, 5).toFloat(exec), args.at(exec, 6).toFloat(exec), args.at(exec, 7).toFloat(exec), args.at(exec, 8).toFloat(exec), args.at(exec, 9).toString(exec)); return jsUndefined(); }JSValuePtr JSCanvasRenderingContext2D::setShadow(ExecState* exec, const ArgList& args){ CanvasRenderingContext2D* context = impl(); switch (args.size()) { case 3: context->setShadow(args.at(exec, 0).toFloat(exec), args.at(exec, 1).toFloat(exec), args.at(exec, 2).toFloat(exec)); break; case 4: if (args.at(exec, 3).isString()) context->setShadow(args.at(exec, 0).toFloat(exec), args.at(exec, 1).toFloat(exec), args.at(exec, 2).toFloat(exec), asString(args.at(exec, 3))->value()); else context->setShadow(args.at(exec, 0).toFloat(exec), args.at(exec, 1).toFloat(exec), args.at(exec, 2).toFloat(exec), args.at(exec, 3).toFloat(exec)); break; case 5: if (args.at(exec, 3).isString()) context->setShadow(args.at(exec, 0).toFloat(exec), args.at(exec, 1).toFloat(exec), args.at(exec, 2).toFloat(exec), asString(args.at(exec, 3))->value(), args.at(exec, 4).toFloat(exec)); else context->setShadow(args.at(exec, 0).toFloat(exec), args.at(exec, 1).toFloat(exec), args.at(exec, 2).toFloat(exec), args.at(exec, 3).toFloat(exec), args.at(exec, 4).toFloat(exec)); break; case 7: context->setShadow(args.at(exec, 0).toFloat(exec), args.at(exec, 1).toFloat(exec), args.at(exec, 2).toFloat(exec), args.at(exec, 3).toFloat(exec), args.at(exec, 4).toFloat(exec), args.at(exec, 5).toFloat(exec), args.at(exec, 6).toFloat(exec)); break; case 8: context->setShadow(args.at(exec, 0).toFloat(exec), args.at(exec, 1).toFloat(exec), args.at(exec, 2).toFloat(exec), args.at(exec, 3).toFloat(exec), args.at(exec, 4).toFloat(exec), args.at(exec, 5).toFloat(exec), args.at(exec, 6).toFloat(exec), args.at(exec, 7).toFloat(exec)); break; default: return throwError(exec, SyntaxError); } return jsUndefined(); }JSValuePtr JSCanvasRenderingContext2D::createPattern(ExecState* exec, const ArgList& args){ CanvasRenderingContext2D* context = impl(); JSValuePtr value = args.at(exec, 0); if (!value.isObject()) return throwError(exec, TypeError); JSObject* o = asObject(value); if (o->inherits(&JSHTMLImageElement::s_info)) { ExceptionCode ec; JSValuePtr pattern = toJS(exec, context->createPattern(static_cast<HTMLImageElement*>(static_cast<JSHTMLElement*>(o)->impl()), valueToStringWithNullCheck(exec, args.at(exec, 1)), ec).get()); setDOMException(exec, ec); return pattern; } if (o->inherits(&JSHTMLCanvasElement::s_info)) { ExceptionCode ec; JSValuePtr pattern = toJS(exec, context->createPattern(static_cast<HTMLCanvasElement*>(static_cast<JSHTMLElement*>(o)->impl()), valueToStringWithNullCheck(exec, args.at(exec, 1)), ec).get()); setDOMException(exec, ec); return pattern; } setDOMException(exec, TYPE_MISMATCH_ERR); return jsUndefined();}JSValuePtr JSCanvasRenderingContext2D::putImageData(ExecState* exec, const ArgList& args){ // putImageData has two variants // putImageData(ImageData, x, y) // putImageData(ImageData, x, y, dirtyX, dirtyY, dirtyWidth, dirtyHeight) CanvasRenderingContext2D* context = impl(); ExceptionCode ec = 0; if (args.size() >= 7) context->putImageData(toImageData(args.at(exec, 0)), args.at(exec, 1).toFloat(exec), args.at(exec, 2).toFloat(exec), args.at(exec, 3).toFloat(exec), args.at(exec, 4).toFloat(exec), args.at(exec, 5).toFloat(exec), args.at(exec, 6).toFloat(exec), ec); else context->putImageData(toImageData(args.at(exec, 0)), args.at(exec, 1).toFloat(exec), args.at(exec, 2).toFloat(exec), ec); setDOMException(exec, ec); return jsUndefined();}JSValuePtr JSCanvasRenderingContext2D::fillText(ExecState* exec, const ArgList& args){ CanvasRenderingContext2D* context = impl(); // string arg = text to draw // number arg = x // number arg = y // optional number arg = maxWidth if (args.size() < 3 || args.size() > 4) return throwError(exec, SyntaxError); if (args.size() == 4) context->fillText(args.at(exec, 0).toString(exec), args.at(exec, 1).toFloat(exec), args.at(exec, 2).toFloat(exec), args.at(exec, 3).toFloat(exec)); else context->fillText(args.at(exec, 0).toString(exec), args.at(exec, 1).toFloat(exec), args.at(exec, 2).toFloat(exec)); return jsUndefined();}JSValuePtr JSCanvasRenderingContext2D::strokeText(ExecState* exec, const ArgList& args){ CanvasRenderingContext2D* context = impl(); // string arg = text to draw // number arg = x // number arg = y // optional number arg = maxWidth if (args.size() < 3 || args.size() > 4) return throwError(exec, SyntaxError); if (args.size() == 4) context->strokeText(args.at(exec, 0).toString(exec), args.at(exec, 1).toFloat(exec), args.at(exec, 2).toFloat(exec), args.at(exec, 3).toFloat(exec)); else context->strokeText(args.at(exec, 0).toString(exec), args.at(exec, 1).toFloat(exec), args.at(exec, 2).toFloat(exec)); return jsUndefined();}} // namespace WebCore
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -