JSC::JSValue JSWebGLShortArray::set(JSC::ExecState* exec, JSC::ArgList const& args) { if (args.size() > 2) return throwError(exec, SyntaxError); if (args.size() == 2 && args.at(0).isInt32()) { // void set(in unsigned long index, in long value); unsigned index = args.at(0).toUInt32(exec); impl()->set(index, static_cast<signed short>(args.at(1).toInt32(exec))); return jsUndefined(); } WebGLShortArray* shortArray = toWebGLShortArray(args.at(0)); if (shortArray) { // void set(in WebGLShortArray array, [Optional] in unsigned long offset); unsigned offset = 0; if (args.size() == 2) offset = args.at(1).toInt32(exec); ExceptionCode ec = 0; impl()->set(shortArray, offset, ec); setDOMException(exec, ec); return jsUndefined(); } return setWebGLArrayFromArray(exec, impl(), args); }
JSC::JSValue WebCore::JSNavigator::isApplicationInstalled(JSC::ExecState* exec, JSC::ArgList const& args) { if (args.size() < 2) { setDOMException(exec, SYNTAX_ERR); return jsUndefined(); } if (!args.at(1).inherits(&InternalFunction::info)) { setDOMException(exec, TYPE_MISMATCH_ERR); return jsUndefined(); } String appName = args.at(0).toString(exec); JSObject* object; if (!(object = args.at(1).getObject())) { setDOMException(exec, TYPE_MISMATCH_ERR); return jsUndefined(); } RefPtr<ApplicationInstalledCallback> callback(JSCustomApplicationInstalledCallback::create( object, static_cast<JSDOMGlobalObject*>(exec->dynamicGlobalObject()))); if (!m_impl->isApplicationInstalled(appName, callback.release())) setDOMException(exec, INVALID_STATE_ERR); return jsUndefined(); }
JSValue JSCanvasRenderingContext3D::bufferSubData(JSC::ExecState* exec, JSC::ArgList const& args) { if (args.size() != 3) return throwError(exec, SyntaxError); unsigned target = args.at(0).toInt32(exec); unsigned offset = args.at(1).toInt32(exec); CanvasArray* array = toCanvasArray(args.at(2)); static_cast<CanvasRenderingContext3D*>(impl())->bufferSubData(target, offset, array); return jsUndefined(); }
static JSC::JSValue dataFunctionf(DataFunctionToCall f, JSC::ExecState* exec, const JSC::ArgList& args, CanvasRenderingContext3D* context) { if (args.size() != 2) return throwError(exec, SyntaxError); long location = args.at(0).toInt32(exec); if (exec->hadException()) return jsUndefined(); RefPtr<CanvasFloatArray> canvasArray = toCanvasFloatArray(args.at(1)); if (exec->hadException()) return jsUndefined(); if (canvasArray) { switch(f) { case f_uniform1v: context->uniform1fv(location, canvasArray.get()); break; case f_uniform2v: context->uniform2fv(location, canvasArray.get()); break; case f_uniform3v: context->uniform3fv(location, canvasArray.get()); break; case f_uniform4v: context->uniform4fv(location, canvasArray.get()); break; case f_vertexAttrib1v: context->vertexAttrib1fv(location, canvasArray.get()); break; case f_vertexAttrib2v: context->vertexAttrib2fv(location, canvasArray.get()); break; case f_vertexAttrib3v: context->vertexAttrib3fv(location, canvasArray.get()); break; case f_vertexAttrib4v: context->vertexAttrib4fv(location, canvasArray.get()); break; } return jsUndefined(); } float* array; int size; toArray<float>(exec, args.at(1), array, size); if (!array) return throwError(exec, TypeError); switch(f) { case f_uniform1v: context->uniform1fv(location, array, size); break; case f_uniform2v: context->uniform2fv(location, array, size); break; case f_uniform3v: context->uniform3fv(location, array, size); break; case f_uniform4v: context->uniform4fv(location, array, size); break; case f_vertexAttrib1v: context->vertexAttrib1fv(location, array, size); break; case f_vertexAttrib2v: context->vertexAttrib2fv(location, array, size); break; case f_vertexAttrib3v: context->vertexAttrib3fv(location, array, size); break; case f_vertexAttrib4v: context->vertexAttrib4fv(location, array, size); break; } return jsUndefined(); }
JSValue JSCanvasRenderingContext3D::bufferData(JSC::ExecState* exec, JSC::ArgList const& args) { if (args.size() != 3) return throwError(exec, SyntaxError); unsigned target = args.at(0).toInt32(exec); unsigned usage = args.at(2).toInt32(exec); // If argument 1 is a number, we are initializing this buffer to that size if (!args.at(1).isObject()) { unsigned int count = args.at(1).toInt32(exec); static_cast<CanvasRenderingContext3D*>(impl())->bufferData(target, count, usage); return jsUndefined(); } CanvasArray* array = toCanvasArray(args.at(1)); static_cast<CanvasRenderingContext3D*>(impl())->bufferData(target, array, usage); return jsUndefined(); }
static JSC::JSValue dataFunctionMatrix(DataFunctionMatrixToCall f, JSC::ExecState* exec, const JSC::ArgList& args, CanvasRenderingContext3D* context) { if (args.size() != 3) return throwError(exec, SyntaxError); long location = args.at(0).toInt32(exec); if (exec->hadException()) return jsUndefined(); bool transpose = args.at(1).toBoolean(exec); if (exec->hadException()) return jsUndefined(); RefPtr<CanvasFloatArray> canvasArray = toCanvasFloatArray(args.at(2)); if (exec->hadException()) return jsUndefined(); if (canvasArray) { switch(f) { case f_uniformMatrix2fv: context->uniformMatrix2fv(location, transpose, canvasArray.get()); break; case f_uniformMatrix3fv: context->uniformMatrix3fv(location, transpose, canvasArray.get()); break; case f_uniformMatrix4fv: context->uniformMatrix4fv(location, transpose, canvasArray.get()); break; } return jsUndefined(); } float* array; int size; toArray<float>(exec, args.at(2), array, size); if (!array) return throwError(exec, TypeError); switch(f) { case f_uniformMatrix2fv: context->uniformMatrix2fv(location, transpose, array, size); break; case f_uniformMatrix3fv: context->uniformMatrix3fv(location, transpose, array, size); break; case f_uniformMatrix4fv: context->uniformMatrix4fv(location, transpose, array, size); break; } return jsUndefined(); }