WebGLGetInfo.cpp revision 2fc2651226baac27029e38c9d6ef883fa32084db
1643ca7872b450ea4efacab6188849e5aac2ba161Steve Block/* 2643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * Copyright (C) 2009 Apple Inc. All Rights Reserved. 3643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * Copyright (C) 2009 Google Inc. All Rights Reserved. 4643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * 5643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * Redistribution and use in source and binary forms, with or without 6643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * modification, are permitted provided that the following conditions 7643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * are met: 8643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * 1. Redistributions of source code must retain the above copyright 9643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * notice, this list of conditions and the following disclaimer. 10643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * 2. Redistributions in binary form must reproduce the above copyright 11643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * notice, this list of conditions and the following disclaimer in the 12643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * documentation and/or other materials provided with the distribution. 13643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * 14643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY 15643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 17643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR 18643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 19643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 20643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 21643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 22643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 24643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25643ca7872b450ea4efacab6188849e5aac2ba161Steve Block */ 26643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 27643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "config.h" 28643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 292fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#if ENABLE(WEBGL) 30643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 31643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "WebGLGetInfo.h" 32dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch 33545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch#include "Float32Array.h" 346c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen#include "Int32Array.h" 35dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch#include "Uint8Array.h" 36dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch#include "WebGLBuffer.h" 37dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch#include "WebGLFramebuffer.h" 38643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "WebGLProgram.h" 39643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "WebGLRenderbuffer.h" 40643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "WebGLTexture.h" 41643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 42643ca7872b450ea4efacab6188849e5aac2ba161Steve Blocknamespace WebCore { 43643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 44643ca7872b450ea4efacab6188849e5aac2ba161Steve BlockWebGLGetInfo::WebGLGetInfo(bool value) 45643ca7872b450ea4efacab6188849e5aac2ba161Steve Block : m_type(kTypeBool) 46643ca7872b450ea4efacab6188849e5aac2ba161Steve Block , m_bool(value) 47643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 48643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 49643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 50ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve BlockWebGLGetInfo::WebGLGetInfo(const bool* value, int size) 51ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block : m_type(kTypeBoolArray) 52ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block{ 53ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block if (!value || size <=0) 54ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block return; 55ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block m_boolArray.resize(size); 56ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block for (int ii = 0; ii < size; ++ii) 57ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block m_boolArray[ii] = value[ii]; 58ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block} 59ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block 60643ca7872b450ea4efacab6188849e5aac2ba161Steve BlockWebGLGetInfo::WebGLGetInfo(float value) 61643ca7872b450ea4efacab6188849e5aac2ba161Steve Block : m_type(kTypeFloat) 62643ca7872b450ea4efacab6188849e5aac2ba161Steve Block , m_float(value) 63643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 64643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 65643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 662fc2651226baac27029e38c9d6ef883fa32084dbSteve BlockWebGLGetInfo::WebGLGetInfo(int value) 672fc2651226baac27029e38c9d6ef883fa32084dbSteve Block : m_type(kTypeInt) 682fc2651226baac27029e38c9d6ef883fa32084dbSteve Block , m_int(value) 69643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 70643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 71643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 72643ca7872b450ea4efacab6188849e5aac2ba161Steve BlockWebGLGetInfo::WebGLGetInfo() 73643ca7872b450ea4efacab6188849e5aac2ba161Steve Block : m_type(kTypeNull) 74643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 75643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 76643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 77643ca7872b450ea4efacab6188849e5aac2ba161Steve BlockWebGLGetInfo::WebGLGetInfo(const String& value) 78643ca7872b450ea4efacab6188849e5aac2ba161Steve Block : m_type(kTypeString) 79643ca7872b450ea4efacab6188849e5aac2ba161Steve Block , m_string(value) 80643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 81643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 82643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 832fc2651226baac27029e38c9d6ef883fa32084dbSteve BlockWebGLGetInfo::WebGLGetInfo(unsigned int value) 842fc2651226baac27029e38c9d6ef883fa32084dbSteve Block : m_type(kTypeUnsignedInt) 852fc2651226baac27029e38c9d6ef883fa32084dbSteve Block , m_unsignedInt(value) 86643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 87643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 88643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 89643ca7872b450ea4efacab6188849e5aac2ba161Steve BlockWebGLGetInfo::WebGLGetInfo(PassRefPtr<WebGLBuffer> value) 90643ca7872b450ea4efacab6188849e5aac2ba161Steve Block : m_type(kTypeWebGLBuffer) 91643ca7872b450ea4efacab6188849e5aac2ba161Steve Block , m_webglBuffer(value) 92643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 93643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 94643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 95545e470e52f0ac6a3a072bf559c796b42c6066b6Ben MurdochWebGLGetInfo::WebGLGetInfo(PassRefPtr<Float32Array> value) 96643ca7872b450ea4efacab6188849e5aac2ba161Steve Block : m_type(kTypeWebGLFloatArray) 97643ca7872b450ea4efacab6188849e5aac2ba161Steve Block , m_webglFloatArray(value) 98643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 99643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 100643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 101643ca7872b450ea4efacab6188849e5aac2ba161Steve BlockWebGLGetInfo::WebGLGetInfo(PassRefPtr<WebGLFramebuffer> value) 102643ca7872b450ea4efacab6188849e5aac2ba161Steve Block : m_type(kTypeWebGLFramebuffer) 103643ca7872b450ea4efacab6188849e5aac2ba161Steve Block , m_webglFramebuffer(value) 104643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 105643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 106643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 1076c2af9490927c3c5959b5cb07461b646f8b32f6cKristian MonsenWebGLGetInfo::WebGLGetInfo(PassRefPtr<Int32Array> value) 108643ca7872b450ea4efacab6188849e5aac2ba161Steve Block : m_type(kTypeWebGLIntArray) 109643ca7872b450ea4efacab6188849e5aac2ba161Steve Block , m_webglIntArray(value) 110643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 111643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 112643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 113643ca7872b450ea4efacab6188849e5aac2ba161Steve BlockWebGLGetInfo::WebGLGetInfo(PassRefPtr<WebGLProgram> value) 114643ca7872b450ea4efacab6188849e5aac2ba161Steve Block : m_type(kTypeWebGLProgram) 115643ca7872b450ea4efacab6188849e5aac2ba161Steve Block , m_webglProgram(value) 116643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 117643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 118643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 119643ca7872b450ea4efacab6188849e5aac2ba161Steve BlockWebGLGetInfo::WebGLGetInfo(PassRefPtr<WebGLRenderbuffer> value) 120643ca7872b450ea4efacab6188849e5aac2ba161Steve Block : m_type(kTypeWebGLRenderbuffer) 121643ca7872b450ea4efacab6188849e5aac2ba161Steve Block , m_webglRenderbuffer(value) 122643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 123643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 124643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 125643ca7872b450ea4efacab6188849e5aac2ba161Steve BlockWebGLGetInfo::WebGLGetInfo(PassRefPtr<WebGLTexture> value) 126643ca7872b450ea4efacab6188849e5aac2ba161Steve Block : m_type(kTypeWebGLTexture) 127643ca7872b450ea4efacab6188849e5aac2ba161Steve Block , m_webglTexture(value) 128643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 129643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 130643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 1316c2af9490927c3c5959b5cb07461b646f8b32f6cKristian MonsenWebGLGetInfo::WebGLGetInfo(PassRefPtr<Uint8Array> value) 132643ca7872b450ea4efacab6188849e5aac2ba161Steve Block : m_type(kTypeWebGLUnsignedByteArray) 133643ca7872b450ea4efacab6188849e5aac2ba161Steve Block , m_webglUnsignedByteArray(value) 134643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 135643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 136643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 137643ca7872b450ea4efacab6188849e5aac2ba161Steve BlockWebGLGetInfo::~WebGLGetInfo() 138643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 139643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 140643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 141643ca7872b450ea4efacab6188849e5aac2ba161Steve BlockWebGLGetInfo::Type WebGLGetInfo::getType() const 142643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 143643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return m_type; 144643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 145643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 146643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockbool WebGLGetInfo::getBool() const 147643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 148643ca7872b450ea4efacab6188849e5aac2ba161Steve Block ASSERT(getType() == kTypeBool); 149643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return m_bool; 150643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 151643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 152ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Blockconst Vector<bool>& WebGLGetInfo::getBoolArray() const 153ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block{ 154ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block ASSERT(getType() == kTypeBoolArray); 155ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block return m_boolArray; 156ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block} 157ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block 158643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockfloat WebGLGetInfo::getFloat() const 159643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 160643ca7872b450ea4efacab6188849e5aac2ba161Steve Block ASSERT(getType() == kTypeFloat); 161643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return m_float; 162643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 163643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 1642fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockint WebGLGetInfo::getInt() const 165643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 1662fc2651226baac27029e38c9d6ef883fa32084dbSteve Block ASSERT(getType() == kTypeInt); 1672fc2651226baac27029e38c9d6ef883fa32084dbSteve Block return m_int; 168643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 169643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 170643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockconst String& WebGLGetInfo::getString() const 171643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 172643ca7872b450ea4efacab6188849e5aac2ba161Steve Block ASSERT(getType() == kTypeString); 173643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return m_string; 174643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 175643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 1762fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockunsigned int WebGLGetInfo::getUnsignedInt() const 177643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 1782fc2651226baac27029e38c9d6ef883fa32084dbSteve Block ASSERT(getType() == kTypeUnsignedInt); 1792fc2651226baac27029e38c9d6ef883fa32084dbSteve Block return m_unsignedInt; 180643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 181643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 182643ca7872b450ea4efacab6188849e5aac2ba161Steve BlockPassRefPtr<WebGLBuffer> WebGLGetInfo::getWebGLBuffer() const 183643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 184643ca7872b450ea4efacab6188849e5aac2ba161Steve Block ASSERT(getType() == kTypeWebGLBuffer); 185643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return m_webglBuffer; 186643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 187643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 188545e470e52f0ac6a3a072bf559c796b42c6066b6Ben MurdochPassRefPtr<Float32Array> WebGLGetInfo::getWebGLFloatArray() const 189643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 190643ca7872b450ea4efacab6188849e5aac2ba161Steve Block ASSERT(getType() == kTypeWebGLFloatArray); 191643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return m_webglFloatArray; 192643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 193643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 194643ca7872b450ea4efacab6188849e5aac2ba161Steve BlockPassRefPtr<WebGLFramebuffer> WebGLGetInfo::getWebGLFramebuffer() const 195643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 196643ca7872b450ea4efacab6188849e5aac2ba161Steve Block ASSERT(getType() == kTypeWebGLFramebuffer); 197643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return m_webglFramebuffer; 198643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 199643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 2006c2af9490927c3c5959b5cb07461b646f8b32f6cKristian MonsenPassRefPtr<Int32Array> WebGLGetInfo::getWebGLIntArray() const 201643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 202643ca7872b450ea4efacab6188849e5aac2ba161Steve Block ASSERT(getType() == kTypeWebGLIntArray); 203643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return m_webglIntArray; 204643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 205643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 206643ca7872b450ea4efacab6188849e5aac2ba161Steve BlockPassRefPtr<WebGLProgram> WebGLGetInfo::getWebGLProgram() const 207643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 208643ca7872b450ea4efacab6188849e5aac2ba161Steve Block ASSERT(getType() == kTypeWebGLProgram); 209643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return m_webglProgram; 210643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 211643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 212643ca7872b450ea4efacab6188849e5aac2ba161Steve BlockPassRefPtr<WebGLRenderbuffer> WebGLGetInfo::getWebGLRenderbuffer() const 213643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 214643ca7872b450ea4efacab6188849e5aac2ba161Steve Block ASSERT(getType() == kTypeWebGLRenderbuffer); 215643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return m_webglRenderbuffer; 216643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 217643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 218643ca7872b450ea4efacab6188849e5aac2ba161Steve BlockPassRefPtr<WebGLTexture> WebGLGetInfo::getWebGLTexture() const 219643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 220643ca7872b450ea4efacab6188849e5aac2ba161Steve Block ASSERT(getType() == kTypeWebGLTexture); 221643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return m_webglTexture; 222643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 223643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 2246c2af9490927c3c5959b5cb07461b646f8b32f6cKristian MonsenPassRefPtr<Uint8Array> WebGLGetInfo::getWebGLUnsignedByteArray() const 225643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 226643ca7872b450ea4efacab6188849e5aac2ba161Steve Block ASSERT(getType() == kTypeWebGLUnsignedByteArray); 227643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return m_webglUnsignedByteArray; 228643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 229643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 230643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} // namespace WebCore 231643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 2322fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#endif // ENABLE(WEBGL) 233