1 /* 2 * Copyright (C) 2009 Apple Inc. All Rights Reserved. 3 * Copyright (C) 2009 Google Inc. All Rights Reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright 9 * notice, this list of conditions and the following disclaimer. 10 * 2. Redistributions in binary form must reproduce the above copyright 11 * notice, this list of conditions and the following disclaimer in the 12 * documentation and/or other materials provided with the distribution. 13 * 14 * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY 15 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 17 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR 18 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 19 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 20 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 21 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 22 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 24 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 */ 26 27 #include "config.h" 28 29 #if ENABLE(WEBGL) 30 31 #include "WebGLGetInfo.h" 32 33 #include "Float32Array.h" 34 #include "Int32Array.h" 35 #include "Uint8Array.h" 36 #include "WebGLBuffer.h" 37 #include "WebGLFramebuffer.h" 38 #include "WebGLProgram.h" 39 #include "WebGLRenderbuffer.h" 40 #include "WebGLTexture.h" 41 #include "WebGLVertexArrayObjectOES.h" 42 43 namespace WebCore { 44 45 WebGLGetInfo::WebGLGetInfo(bool value) 46 : m_type(kTypeBool) 47 , m_bool(value) 48 { 49 } 50 51 WebGLGetInfo::WebGLGetInfo(const bool* value, int size) 52 : m_type(kTypeBoolArray) 53 { 54 if (!value || size <=0) 55 return; 56 m_boolArray.resize(size); 57 for (int ii = 0; ii < size; ++ii) 58 m_boolArray[ii] = value[ii]; 59 } 60 61 WebGLGetInfo::WebGLGetInfo(float value) 62 : m_type(kTypeFloat) 63 , m_float(value) 64 { 65 } 66 67 WebGLGetInfo::WebGLGetInfo(int value) 68 : m_type(kTypeInt) 69 , m_int(value) 70 { 71 } 72 73 WebGLGetInfo::WebGLGetInfo() 74 : m_type(kTypeNull) 75 { 76 } 77 78 WebGLGetInfo::WebGLGetInfo(const String& value) 79 : m_type(kTypeString) 80 , m_string(value) 81 { 82 } 83 84 WebGLGetInfo::WebGLGetInfo(unsigned int value) 85 : m_type(kTypeUnsignedInt) 86 , m_unsignedInt(value) 87 { 88 } 89 90 WebGLGetInfo::WebGLGetInfo(PassRefPtr<WebGLBuffer> value) 91 : m_type(kTypeWebGLBuffer) 92 , m_webglBuffer(value) 93 { 94 } 95 96 WebGLGetInfo::WebGLGetInfo(PassRefPtr<Float32Array> value) 97 : m_type(kTypeWebGLFloatArray) 98 , m_webglFloatArray(value) 99 { 100 } 101 102 WebGLGetInfo::WebGLGetInfo(PassRefPtr<WebGLFramebuffer> value) 103 : m_type(kTypeWebGLFramebuffer) 104 , m_webglFramebuffer(value) 105 { 106 } 107 108 WebGLGetInfo::WebGLGetInfo(PassRefPtr<Int32Array> value) 109 : m_type(kTypeWebGLIntArray) 110 , m_webglIntArray(value) 111 { 112 } 113 114 WebGLGetInfo::WebGLGetInfo(PassRefPtr<WebGLProgram> value) 115 : m_type(kTypeWebGLProgram) 116 , m_webglProgram(value) 117 { 118 } 119 120 WebGLGetInfo::WebGLGetInfo(PassRefPtr<WebGLRenderbuffer> value) 121 : m_type(kTypeWebGLRenderbuffer) 122 , m_webglRenderbuffer(value) 123 { 124 } 125 126 WebGLGetInfo::WebGLGetInfo(PassRefPtr<WebGLTexture> value) 127 : m_type(kTypeWebGLTexture) 128 , m_webglTexture(value) 129 { 130 } 131 132 WebGLGetInfo::WebGLGetInfo(PassRefPtr<Uint8Array> value) 133 : m_type(kTypeWebGLUnsignedByteArray) 134 , m_webglUnsignedByteArray(value) 135 { 136 } 137 138 WebGLGetInfo::WebGLGetInfo(PassRefPtr<WebGLVertexArrayObjectOES> value) 139 : m_type(kTypeWebGLVertexArrayObjectOES) 140 , m_webglVertexArrayObject(value) 141 { 142 } 143 144 WebGLGetInfo::~WebGLGetInfo() 145 { 146 } 147 148 WebGLGetInfo::Type WebGLGetInfo::getType() const 149 { 150 return m_type; 151 } 152 153 bool WebGLGetInfo::getBool() const 154 { 155 ASSERT(getType() == kTypeBool); 156 return m_bool; 157 } 158 159 const Vector<bool>& WebGLGetInfo::getBoolArray() const 160 { 161 ASSERT(getType() == kTypeBoolArray); 162 return m_boolArray; 163 } 164 165 float WebGLGetInfo::getFloat() const 166 { 167 ASSERT(getType() == kTypeFloat); 168 return m_float; 169 } 170 171 int WebGLGetInfo::getInt() const 172 { 173 ASSERT(getType() == kTypeInt); 174 return m_int; 175 } 176 177 const String& WebGLGetInfo::getString() const 178 { 179 ASSERT(getType() == kTypeString); 180 return m_string; 181 } 182 183 unsigned int WebGLGetInfo::getUnsignedInt() const 184 { 185 ASSERT(getType() == kTypeUnsignedInt); 186 return m_unsignedInt; 187 } 188 189 PassRefPtr<WebGLBuffer> WebGLGetInfo::getWebGLBuffer() const 190 { 191 ASSERT(getType() == kTypeWebGLBuffer); 192 return m_webglBuffer; 193 } 194 195 PassRefPtr<Float32Array> WebGLGetInfo::getWebGLFloatArray() const 196 { 197 ASSERT(getType() == kTypeWebGLFloatArray); 198 return m_webglFloatArray; 199 } 200 201 PassRefPtr<WebGLFramebuffer> WebGLGetInfo::getWebGLFramebuffer() const 202 { 203 ASSERT(getType() == kTypeWebGLFramebuffer); 204 return m_webglFramebuffer; 205 } 206 207 PassRefPtr<Int32Array> WebGLGetInfo::getWebGLIntArray() const 208 { 209 ASSERT(getType() == kTypeWebGLIntArray); 210 return m_webglIntArray; 211 } 212 213 PassRefPtr<WebGLProgram> WebGLGetInfo::getWebGLProgram() const 214 { 215 ASSERT(getType() == kTypeWebGLProgram); 216 return m_webglProgram; 217 } 218 219 PassRefPtr<WebGLRenderbuffer> WebGLGetInfo::getWebGLRenderbuffer() const 220 { 221 ASSERT(getType() == kTypeWebGLRenderbuffer); 222 return m_webglRenderbuffer; 223 } 224 225 PassRefPtr<WebGLTexture> WebGLGetInfo::getWebGLTexture() const 226 { 227 ASSERT(getType() == kTypeWebGLTexture); 228 return m_webglTexture; 229 } 230 231 PassRefPtr<Uint8Array> WebGLGetInfo::getWebGLUnsignedByteArray() const 232 { 233 ASSERT(getType() == kTypeWebGLUnsignedByteArray); 234 return m_webglUnsignedByteArray; 235 } 236 237 PassRefPtr<WebGLVertexArrayObjectOES> WebGLGetInfo::getWebGLVertexArrayObjectOES() const 238 { 239 ASSERT(getType() == kTypeWebGLVertexArrayObjectOES); 240 return m_webglVertexArrayObject; 241 } 242 243 } // namespace WebCore 244 245 #endif // ENABLE(WEBGL) 246