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 #ifndef WebGLGetInfo_h 28 #define WebGLGetInfo_h 29 30 #include "Float32Array.h" 31 #include "Int32Array.h" 32 #include "PlatformString.h" 33 #include "Uint8Array.h" 34 #include "WebGLBuffer.h" 35 #include "WebGLFramebuffer.h" 36 #include "WebGLProgram.h" 37 #include "WebGLRenderbuffer.h" 38 #include "WebGLTexture.h" 39 #include "WebGLVertexArrayObjectOES.h" 40 41 #include <wtf/PassRefPtr.h> 42 #include <wtf/RefPtr.h> 43 44 namespace WebCore { 45 46 // A tagged union representing the result of get queries like 47 // getParameter (encompassing getBooleanv, getIntegerv, getFloatv) and 48 // similar variants. For reference counted types, increments and 49 // decrements the reference count of the target object. 50 51 class WebGLGetInfo { 52 public: 53 enum Type { 54 kTypeBool, 55 kTypeBoolArray, 56 kTypeFloat, 57 kTypeInt, 58 kTypeNull, 59 kTypeString, 60 kTypeUnsignedInt, 61 kTypeWebGLBuffer, 62 kTypeWebGLFloatArray, 63 kTypeWebGLFramebuffer, 64 kTypeWebGLIntArray, 65 kTypeWebGLObjectArray, 66 kTypeWebGLProgram, 67 kTypeWebGLRenderbuffer, 68 kTypeWebGLTexture, 69 kTypeWebGLUnsignedByteArray, 70 kTypeWebGLVertexArrayObjectOES, 71 }; 72 73 WebGLGetInfo(bool value); 74 WebGLGetInfo(const bool* value, int size); 75 WebGLGetInfo(float value); 76 WebGLGetInfo(int value); 77 // Represents the null value and type. 78 WebGLGetInfo(); 79 WebGLGetInfo(const String& value); 80 WebGLGetInfo(unsigned int value); 81 WebGLGetInfo(PassRefPtr<WebGLBuffer> value); 82 WebGLGetInfo(PassRefPtr<Float32Array> value); 83 WebGLGetInfo(PassRefPtr<WebGLFramebuffer> value); 84 WebGLGetInfo(PassRefPtr<Int32Array> value); 85 // FIXME: implement WebGLObjectArray 86 // WebGLGetInfo(PassRefPtr<WebGLObjectArray> value); 87 WebGLGetInfo(PassRefPtr<WebGLProgram> value); 88 WebGLGetInfo(PassRefPtr<WebGLRenderbuffer> value); 89 WebGLGetInfo(PassRefPtr<WebGLTexture> value); 90 WebGLGetInfo(PassRefPtr<Uint8Array> value); 91 WebGLGetInfo(PassRefPtr<WebGLVertexArrayObjectOES> value); 92 93 virtual ~WebGLGetInfo(); 94 95 Type getType() const; 96 97 bool getBool() const; 98 const Vector<bool>& getBoolArray() const; 99 float getFloat() const; 100 int getInt() const; 101 const String& getString() const; 102 unsigned int getUnsignedInt() const; 103 PassRefPtr<WebGLBuffer> getWebGLBuffer() const; 104 PassRefPtr<Float32Array> getWebGLFloatArray() const; 105 PassRefPtr<WebGLFramebuffer> getWebGLFramebuffer() const; 106 PassRefPtr<Int32Array> getWebGLIntArray() const; 107 // FIXME: implement WebGLObjectArray 108 // PassRefPtr<WebGLObjectArray> getWebGLObjectArray() const; 109 PassRefPtr<WebGLProgram> getWebGLProgram() const; 110 PassRefPtr<WebGLRenderbuffer> getWebGLRenderbuffer() const; 111 PassRefPtr<WebGLTexture> getWebGLTexture() const; 112 PassRefPtr<Uint8Array> getWebGLUnsignedByteArray() const; 113 PassRefPtr<WebGLVertexArrayObjectOES> getWebGLVertexArrayObjectOES() const; 114 115 private: 116 Type m_type; 117 bool m_bool; 118 Vector<bool> m_boolArray; 119 float m_float; 120 int m_int; 121 String m_string; 122 unsigned int m_unsignedInt; 123 RefPtr<WebGLBuffer> m_webglBuffer; 124 RefPtr<Float32Array> m_webglFloatArray; 125 RefPtr<WebGLFramebuffer> m_webglFramebuffer; 126 RefPtr<Int32Array> m_webglIntArray; 127 // FIXME: implement WebGLObjectArray 128 // RefPtr<WebGLObjectArray> m_webglObjectArray; 129 RefPtr<WebGLProgram> m_webglProgram; 130 RefPtr<WebGLRenderbuffer> m_webglRenderbuffer; 131 RefPtr<WebGLTexture> m_webglTexture; 132 RefPtr<Uint8Array> m_webglUnsignedByteArray; 133 RefPtr<WebGLVertexArrayObjectOES> m_webglVertexArrayObject; 134 }; 135 136 } // namespace WebCore 137 138 #endif // WebGLGetInfo_h 139