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#include "core/html/canvas/WebGLGetInfo.h" 29 30#include "core/html/canvas/WebGLBuffer.h" 31#include "core/html/canvas/WebGLFramebuffer.h" 32#include "core/html/canvas/WebGLProgram.h" 33#include "core/html/canvas/WebGLRenderbuffer.h" 34#include "core/html/canvas/WebGLTexture.h" 35#include "core/html/canvas/WebGLVertexArrayObjectOES.h" 36#include "wtf/Float32Array.h" 37#include "wtf/Int32Array.h" 38#include "wtf/Uint32Array.h" 39#include "wtf/Uint8Array.h" 40 41namespace WebCore { 42 43WebGLGetInfo::WebGLGetInfo(bool value) 44 : m_type(kTypeBool) 45 , m_bool(value) 46 , m_float(0) 47 , m_int(0) 48 , m_unsignedInt(0) 49{ 50} 51 52WebGLGetInfo::WebGLGetInfo(const bool* value, int size) 53 : m_type(kTypeBoolArray) 54 , m_bool(false) 55 , m_float(0) 56 , m_int(0) 57 , m_unsignedInt(0) 58{ 59 if (!value || size <=0) 60 return; 61 m_boolArray.resize(size); 62 for (int ii = 0; ii < size; ++ii) 63 m_boolArray[ii] = value[ii]; 64} 65 66WebGLGetInfo::WebGLGetInfo(float value) 67 : m_type(kTypeFloat) 68 , m_bool(false) 69 , m_float(value) 70 , m_int(0) 71 , m_unsignedInt(0) 72{ 73} 74 75WebGLGetInfo::WebGLGetInfo(int value) 76 : m_type(kTypeInt) 77 , m_bool(false) 78 , m_float(0) 79 , m_int(value) 80 , m_unsignedInt(0) 81{ 82} 83 84WebGLGetInfo::WebGLGetInfo() 85 : m_type(kTypeNull) 86 , m_bool(false) 87 , m_float(0) 88 , m_int(0) 89 , m_unsignedInt(0) 90{ 91} 92 93WebGLGetInfo::WebGLGetInfo(const String& value) 94 : m_type(kTypeString) 95 , m_bool(false) 96 , m_float(0) 97 , m_int(0) 98 , m_string(value) 99 , m_unsignedInt(0) 100{ 101} 102 103WebGLGetInfo::WebGLGetInfo(unsigned int value) 104 : m_type(kTypeUnsignedInt) 105 , m_bool(false) 106 , m_float(0) 107 , m_int(0) 108 , m_unsignedInt(value) 109{ 110} 111 112WebGLGetInfo::WebGLGetInfo(PassRefPtr<WebGLBuffer> value) 113 : m_type(kTypeWebGLBuffer) 114 , m_bool(false) 115 , m_float(0) 116 , m_int(0) 117 , m_unsignedInt(0) 118 , m_webglBuffer(value) 119{ 120} 121 122WebGLGetInfo::WebGLGetInfo(PassRefPtr<Float32Array> value) 123 : m_type(kTypeWebGLFloatArray) 124 , m_bool(false) 125 , m_float(0) 126 , m_int(0) 127 , m_unsignedInt(0) 128 , m_webglFloatArray(value) 129{ 130} 131 132WebGLGetInfo::WebGLGetInfo(PassRefPtr<WebGLFramebuffer> value) 133 : m_type(kTypeWebGLFramebuffer) 134 , m_bool(false) 135 , m_float(0) 136 , m_int(0) 137 , m_unsignedInt(0) 138 , m_webglFramebuffer(value) 139{ 140} 141 142WebGLGetInfo::WebGLGetInfo(PassRefPtr<Int32Array> value) 143 : m_type(kTypeWebGLIntArray) 144 , m_bool(false) 145 , m_float(0) 146 , m_int(0) 147 , m_unsignedInt(0) 148 , m_webglIntArray(value) 149{ 150} 151 152WebGLGetInfo::WebGLGetInfo(PassRefPtr<WebGLProgram> value) 153 : m_type(kTypeWebGLProgram) 154 , m_bool(false) 155 , m_float(0) 156 , m_int(0) 157 , m_unsignedInt(0) 158 , m_webglProgram(value) 159{ 160} 161 162WebGLGetInfo::WebGLGetInfo(PassRefPtr<WebGLRenderbuffer> value) 163 : m_type(kTypeWebGLRenderbuffer) 164 , m_bool(false) 165 , m_float(0) 166 , m_int(0) 167 , m_unsignedInt(0) 168 , m_webglRenderbuffer(value) 169{ 170} 171 172WebGLGetInfo::WebGLGetInfo(PassRefPtr<WebGLTexture> value) 173 : m_type(kTypeWebGLTexture) 174 , m_bool(false) 175 , m_float(0) 176 , m_int(0) 177 , m_unsignedInt(0) 178 , m_webglTexture(value) 179{ 180} 181 182WebGLGetInfo::WebGLGetInfo(PassRefPtr<Uint8Array> value) 183 : m_type(kTypeWebGLUnsignedByteArray) 184 , m_bool(false) 185 , m_float(0) 186 , m_int(0) 187 , m_unsignedInt(0) 188 , m_webglUnsignedByteArray(value) 189{ 190} 191 192WebGLGetInfo::WebGLGetInfo(PassRefPtr<Uint32Array> value) 193 : m_type(kTypeWebGLUnsignedIntArray) 194 , m_bool(false) 195 , m_float(0) 196 , m_int(0) 197 , m_unsignedInt(0) 198 , m_webglUnsignedIntArray(value) 199{ 200} 201 202WebGLGetInfo::WebGLGetInfo(PassRefPtr<WebGLVertexArrayObjectOES> value) 203 : m_type(kTypeWebGLVertexArrayObjectOES) 204 , m_bool(false) 205 , m_float(0) 206 , m_int(0) 207 , m_unsignedInt(0) 208 , m_webglVertexArrayObject(value) 209{ 210} 211 212WebGLGetInfo::~WebGLGetInfo() 213{ 214} 215 216WebGLGetInfo::Type WebGLGetInfo::getType() const 217{ 218 return m_type; 219} 220 221bool WebGLGetInfo::getBool() const 222{ 223 ASSERT(getType() == kTypeBool); 224 return m_bool; 225} 226 227const Vector<bool>& WebGLGetInfo::getBoolArray() const 228{ 229 ASSERT(getType() == kTypeBoolArray); 230 return m_boolArray; 231} 232 233float WebGLGetInfo::getFloat() const 234{ 235 ASSERT(getType() == kTypeFloat); 236 return m_float; 237} 238 239int WebGLGetInfo::getInt() const 240{ 241 ASSERT(getType() == kTypeInt); 242 return m_int; 243} 244 245const String& WebGLGetInfo::getString() const 246{ 247 ASSERT(getType() == kTypeString); 248 return m_string; 249} 250 251unsigned int WebGLGetInfo::getUnsignedInt() const 252{ 253 ASSERT(getType() == kTypeUnsignedInt); 254 return m_unsignedInt; 255} 256 257PassRefPtr<WebGLBuffer> WebGLGetInfo::getWebGLBuffer() const 258{ 259 ASSERT(getType() == kTypeWebGLBuffer); 260 return m_webglBuffer; 261} 262 263PassRefPtr<Float32Array> WebGLGetInfo::getWebGLFloatArray() const 264{ 265 ASSERT(getType() == kTypeWebGLFloatArray); 266 return m_webglFloatArray; 267} 268 269PassRefPtr<WebGLFramebuffer> WebGLGetInfo::getWebGLFramebuffer() const 270{ 271 ASSERT(getType() == kTypeWebGLFramebuffer); 272 return m_webglFramebuffer; 273} 274 275PassRefPtr<Int32Array> WebGLGetInfo::getWebGLIntArray() const 276{ 277 ASSERT(getType() == kTypeWebGLIntArray); 278 return m_webglIntArray; 279} 280 281PassRefPtr<WebGLProgram> WebGLGetInfo::getWebGLProgram() const 282{ 283 ASSERT(getType() == kTypeWebGLProgram); 284 return m_webglProgram; 285} 286 287PassRefPtr<WebGLRenderbuffer> WebGLGetInfo::getWebGLRenderbuffer() const 288{ 289 ASSERT(getType() == kTypeWebGLRenderbuffer); 290 return m_webglRenderbuffer; 291} 292 293PassRefPtr<WebGLTexture> WebGLGetInfo::getWebGLTexture() const 294{ 295 ASSERT(getType() == kTypeWebGLTexture); 296 return m_webglTexture; 297} 298 299PassRefPtr<Uint8Array> WebGLGetInfo::getWebGLUnsignedByteArray() const 300{ 301 ASSERT(getType() == kTypeWebGLUnsignedByteArray); 302 return m_webglUnsignedByteArray; 303} 304 305PassRefPtr<Uint32Array> WebGLGetInfo::getWebGLUnsignedIntArray() const 306{ 307 ASSERT(getType() == kTypeWebGLUnsignedIntArray); 308 return m_webglUnsignedIntArray; 309} 310 311PassRefPtr<WebGLVertexArrayObjectOES> WebGLGetInfo::getWebGLVertexArrayObjectOES() const 312{ 313 ASSERT(getType() == kTypeWebGLVertexArrayObjectOES); 314 return m_webglVertexArrayObject; 315} 316 317} // namespace WebCore 318