Home | History | Annotate | Download | only in canvas
      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