PageRenderTime 17ms CodeModel.GetById 9ms app.highlight 6ms RepoModel.GetById 1ms app.codeStats 0ms

/platform/external/webkit/WebCore/bindings/js/JSWebGLFloatArrayCustom.cpp

https://github.com/aharish/totoro-gb-opensource-update2
C++ | 78 lines | 38 code | 14 blank | 26 comment | 7 complexity | 00ba015dc32b484f7180fc224ad433a4 MD5 | raw file
 1/*
 2 * Copyright (C) 2009 Apple Inc. All rights reserved.
 3 *
 4 * Redistribution and use in source and binary forms, with or without
 5 * modification, are permitted provided that the following conditions
 6 * are met:
 7 * 1. Redistributions of source code must retain the above copyright
 8 *    notice, this list of conditions and the following disclaimer.
 9 * 2. Redistributions in binary form must reproduce the above copyright
10 *    notice, this list of conditions and the following disclaimer in the
11 *    documentation and/or other materials provided with the distribution.
12 *
13 * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
17 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
24 */
25
26#include "config.h"
27
28#if ENABLE(3D_CANVAS)
29
30#include "JSWebGLArrayHelper.h"
31#include "JSWebGLFloatArray.h"
32
33#include "WebGLFloatArray.h"
34
35using namespace JSC;
36
37namespace WebCore {
38
39void JSWebGLFloatArray::indexSetter(JSC::ExecState* exec, unsigned index, JSC::JSValue value)
40{
41    impl()->set(index, static_cast<float>(value.toNumber(exec)));
42}
43
44JSC::JSValue toJS(JSC::ExecState* exec, JSDOMGlobalObject* globalObject, WebGLFloatArray* object)
45{
46    return getDOMObjectWrapper<JSWebGLFloatArray>(exec, globalObject, object);
47}
48
49JSC::JSValue JSWebGLFloatArray::set(JSC::ExecState* exec, JSC::ArgList const& args)
50{
51    if (args.size() > 2)
52        return throwError(exec, SyntaxError);
53
54    if (args.size() == 2 && args.at(0).isInt32()) {
55        // void set(in unsigned long index, in float value);
56        unsigned index = args.at(0).toUInt32(exec);
57        impl()->set(index, static_cast<float>(args.at(1).toNumber(exec)));
58        return jsUndefined();
59    }
60
61    WebGLFloatArray* array = toWebGLFloatArray(args.at(0));
62    if (array) {
63        // void set(in WebGLFloatArray array, [Optional] in unsigned long offset);
64        unsigned offset = 0;
65        if (args.size() == 2)
66            offset = args.at(1).toInt32(exec);
67        ExceptionCode ec = 0;
68        impl()->set(array, offset, ec);
69        setDOMException(exec, ec);
70        return jsUndefined();
71    }
72
73    return setWebGLArrayFromArray(exec, impl(), args);
74}
75
76} // namespace WebCore
77
78#endif // ENABLE(3D_CANVAS)