127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/*
227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich**
327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich** Copyright 2009, The Android Open Source Project
427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich**
524ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes** Licensed under the Apache License, Version 2.0 (the "License");
624ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes** you may not use this file except in compliance with the License.
724ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes** You may obtain a copy of the License at
827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich**
924ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes**     http://www.apache.org/licenses/LICENSE-2.0
1027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich**
1124ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes** Unless required by applicable law or agreed to in writing, software
1224ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes** distributed under the License is distributed on an "AS IS" BASIS,
1324ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1424ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes** See the License for the specific language governing permissions and
1527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich** limitations under the License.
1627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich*/
1727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
1827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich// This source file is automatically generated
1927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
20bfe6333c3cf529600f41f14e3b8c5846e632c9a2Andreas Gampe#pragma GCC diagnostic ignored "-Wunused-variable"
21bfe6333c3cf529600f41f14e3b8c5846e632c9a2Andreas Gampe#pragma GCC diagnostic ignored "-Wunused-but-set-variable"
22bfe6333c3cf529600f41f14e3b8c5846e632c9a2Andreas Gampe#pragma GCC diagnostic ignored "-Wunused-function"
23bfe6333c3cf529600f41f14e3b8c5846e632c9a2Andreas Gampe
242ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian#include <GLES/gl.h>
252ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian#include <GLES/glext.h>
262ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian
279626f8203a8c222b8960a49cdc66d540fdb688b0Jesse Hall#include <jni.h>
289626f8203a8c222b8960a49cdc66d540fdb688b0Jesse Hall#include <JNIHelp.h>
2927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#include <android_runtime/AndroidRuntime.h>
3027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#include <utils/misc.h>
3127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#include <assert.h>
322ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian
332ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianstatic int initialized = 0;
342ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian
352ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianstatic jclass nioAccessClass;
362ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianstatic jclass bufferClass;
372ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianstatic jmethodID getBasePointerID;
382ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianstatic jmethodID getBaseArrayID;
392ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianstatic jmethodID getBaseArrayOffsetID;
402ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianstatic jfieldID positionID;
412ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianstatic jfieldID limitID;
422ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianstatic jfieldID elementSizeShiftID;
432ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian
4427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
458331f72078051cdf5a26230ee819f7ef7f9fcc24Mathias Agopian/* special calls implemented in Android's GLES wrapper used to more
468331f72078051cdf5a26230ee819f7ef7f9fcc24Mathias Agopian * efficiently bound-check passed arrays */
478331f72078051cdf5a26230ee819f7ef7f9fcc24Mathias Agopianextern "C" {
482ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian#ifdef GL_VERSION_ES_CM_1_1
498331f72078051cdf5a26230ee819f7ef7f9fcc24Mathias AgopianGL_API void GL_APIENTRY glColorPointerBounds(GLint size, GLenum type, GLsizei stride,
508331f72078051cdf5a26230ee819f7ef7f9fcc24Mathias Agopian        const GLvoid *ptr, GLsizei count);
518331f72078051cdf5a26230ee819f7ef7f9fcc24Mathias AgopianGL_API void GL_APIENTRY glNormalPointerBounds(GLenum type, GLsizei stride,
528331f72078051cdf5a26230ee819f7ef7f9fcc24Mathias Agopian        const GLvoid *pointer, GLsizei count);
538331f72078051cdf5a26230ee819f7ef7f9fcc24Mathias AgopianGL_API void GL_APIENTRY glTexCoordPointerBounds(GLint size, GLenum type,
548331f72078051cdf5a26230ee819f7ef7f9fcc24Mathias Agopian        GLsizei stride, const GLvoid *pointer, GLsizei count);
558331f72078051cdf5a26230ee819f7ef7f9fcc24Mathias AgopianGL_API void GL_APIENTRY glVertexPointerBounds(GLint size, GLenum type,
568331f72078051cdf5a26230ee819f7ef7f9fcc24Mathias Agopian        GLsizei stride, const GLvoid *pointer, GLsizei count);
572ad0477f16c64dc3126741933f11e27353521bb4Mathias AgopianGL_API void GL_APIENTRY glPointSizePointerOESBounds(GLenum type,
582ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        GLsizei stride, const GLvoid *pointer, GLsizei count);
592ad0477f16c64dc3126741933f11e27353521bb4Mathias AgopianGL_API void GL_APIENTRY glMatrixIndexPointerOESBounds(GLint size, GLenum type,
602ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        GLsizei stride, const GLvoid *pointer, GLsizei count);
612ad0477f16c64dc3126741933f11e27353521bb4Mathias AgopianGL_API void GL_APIENTRY glWeightPointerOESBounds(GLint size, GLenum type,
622ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        GLsizei stride, const GLvoid *pointer, GLsizei count);
632ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian#endif
642ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian#ifdef GL_ES_VERSION_2_0
652ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianstatic void glVertexAttribPointerBounds(GLuint indx, GLint size, GLenum type,
662ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        GLboolean normalized, GLsizei stride, const GLvoid *pointer, GLsizei count) {
672ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    glVertexAttribPointer(indx, size, type, normalized, stride, pointer);
682ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian}
692ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian#endif
70cee5198e7199fcbb131ff0d30165fb1d5c0107cfAndy McFadden#ifdef GL_ES_VERSION_3_0
71cee5198e7199fcbb131ff0d30165fb1d5c0107cfAndy McFaddenstatic void glVertexAttribIPointerBounds(GLuint indx, GLint size, GLenum type,
72cee5198e7199fcbb131ff0d30165fb1d5c0107cfAndy McFadden        GLsizei stride, const GLvoid *pointer, GLsizei count) {
73cee5198e7199fcbb131ff0d30165fb1d5c0107cfAndy McFadden    glVertexAttribIPointer(indx, size, type, stride, pointer);
74cee5198e7199fcbb131ff0d30165fb1d5c0107cfAndy McFadden}
75cee5198e7199fcbb131ff0d30165fb1d5c0107cfAndy McFadden#endif
768331f72078051cdf5a26230ee819f7ef7f9fcc24Mathias Agopian}
7727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
7827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* Cache method IDs each time the class is loaded. */
7927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
8027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
8124ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott HughesnativeClassInit(JNIEnv *_env, jclass glImplClass)
8227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{
8327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jclass nioAccessClassLocal = _env->FindClass("java/nio/NIOAccess");
8427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    nioAccessClass = (jclass) _env->NewGlobalRef(nioAccessClassLocal);
8527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
8627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jclass bufferClassLocal = _env->FindClass("java/nio/Buffer");
8727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    bufferClass = (jclass) _env->NewGlobalRef(bufferClassLocal);
8827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
8927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    getBasePointerID = _env->GetStaticMethodID(nioAccessClass,
9027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            "getBasePointer", "(Ljava/nio/Buffer;)J");
9127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    getBaseArrayID = _env->GetStaticMethodID(nioAccessClass,
9227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            "getBaseArray", "(Ljava/nio/Buffer;)Ljava/lang/Object;");
9327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    getBaseArrayOffsetID = _env->GetStaticMethodID(nioAccessClass,
9427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            "getBaseArrayOffset", "(Ljava/nio/Buffer;)I");
9527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
9627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    positionID = _env->GetFieldID(bufferClass, "position", "I");
9727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    limitID = _env->GetFieldID(bufferClass, "limit", "I");
9827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    elementSizeShiftID =
9927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->GetFieldID(bufferClass, "_elementSizeShift", "I");
10027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
10127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
10227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void *
10317045a16575ece34cfadb63da4791f115625df78Thomas TafertshofergetPointer(JNIEnv *_env, jobject buffer, jarray *array, jint *remaining, jint *offset)
10427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{
10527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint position;
10627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint limit;
10727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint elementSizeShift;
10827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jlong pointer;
10927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
11027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    position = _env->GetIntField(buffer, positionID);
11127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    limit = _env->GetIntField(buffer, limitID);
11227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    elementSizeShift = _env->GetIntField(buffer, elementSizeShiftID);
11327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    *remaining = (limit - position) << elementSizeShift;
11427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    pointer = _env->CallStaticLongMethod(nioAccessClass,
11527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            getBasePointerID, buffer);
11627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (pointer != 0L) {
11727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        *array = NULL;
11801c26ea89d4bbea3cf550e9328742302dd9a2b25Ashok Bhat        return reinterpret_cast<void*>(pointer);
11927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
12024ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes
12127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    *array = (jarray) _env->CallStaticObjectMethod(nioAccessClass,
12227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            getBaseArrayID, buffer);
12317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    *offset = _env->CallStaticIntMethod(nioAccessClass,
12427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            getBaseArrayOffsetID, buffer);
12524ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes
12617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    return NULL;
12727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
12827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
1295b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchiclass ByteArrayGetter {
1305b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchipublic:
1315b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi    static void* Get(JNIEnv* _env, jbyteArray array, jboolean* is_copy) {
1325b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi        return _env->GetByteArrayElements(array, is_copy);
1335b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi    }
1345b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi};
1355b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchiclass BooleanArrayGetter {
1365b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchipublic:
1375b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi    static void* Get(JNIEnv* _env, jbooleanArray array, jboolean* is_copy) {
1385b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi        return _env->GetBooleanArrayElements(array, is_copy);
1395b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi    }
1405b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi};
1415b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchiclass CharArrayGetter {
1425b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchipublic:
1435b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi    static void* Get(JNIEnv* _env, jcharArray array, jboolean* is_copy) {
1445b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi        return _env->GetCharArrayElements(array, is_copy);
1455b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi    }
1465b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi};
1475b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchiclass ShortArrayGetter {
1485b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchipublic:
1495b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi    static void* Get(JNIEnv* _env, jshortArray array, jboolean* is_copy) {
1505b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi        return _env->GetShortArrayElements(array, is_copy);
1515b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi    }
1525b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi};
1535b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchiclass IntArrayGetter {
1545b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchipublic:
1555b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi    static void* Get(JNIEnv* _env, jintArray array, jboolean* is_copy) {
1565b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi        return _env->GetIntArrayElements(array, is_copy);
1575b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi    }
1585b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi};
1595b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchiclass LongArrayGetter {
1605b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchipublic:
1615b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi    static void* Get(JNIEnv* _env, jlongArray array, jboolean* is_copy) {
1625b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi        return _env->GetLongArrayElements(array, is_copy);
1635b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi    }
1645b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi};
1655b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchiclass FloatArrayGetter {
1665b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchipublic:
1675b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi    static void* Get(JNIEnv* _env, jfloatArray array, jboolean* is_copy) {
1685b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi        return _env->GetFloatArrayElements(array, is_copy);
1695b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi    }
1705b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi};
1715b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchiclass DoubleArrayGetter {
1725b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchipublic:
1735b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi    static void* Get(JNIEnv* _env, jdoubleArray array, jboolean* is_copy) {
1745b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi        return _env->GetDoubleArrayElements(array, is_copy);
1755b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi    }
1765b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi};
1775b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi
1785b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchitemplate<typename JTYPEARRAY, typename ARRAYGETTER>
1795b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchistatic void*
1805b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi YamauchigetArrayPointer(JNIEnv *_env, JTYPEARRAY array, jboolean* is_copy) {
1815b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi    return ARRAYGETTER::Get(_env, array, is_copy);
1825b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi}
1835b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi
1845b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchiclass ByteArrayReleaser {
1855b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchipublic:
1865b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi    static void Release(JNIEnv* _env, jbyteArray array, jbyte* data, jboolean commit) {
1875b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi        _env->ReleaseByteArrayElements(array, data, commit ? 0 : JNI_ABORT);
1885b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi    }
1895b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi};
1905b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchiclass BooleanArrayReleaser {
1915b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchipublic:
1925b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi    static void Release(JNIEnv* _env, jbooleanArray array, jboolean* data, jboolean commit) {
1935b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi        _env->ReleaseBooleanArrayElements(array, data, commit ? 0 : JNI_ABORT);
1945b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi    }
1955b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi};
1965b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchiclass CharArrayReleaser {
1975b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchipublic:
1985b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi    static void Release(JNIEnv* _env, jcharArray array, jchar* data, jboolean commit) {
1995b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi        _env->ReleaseCharArrayElements(array, data, commit ? 0 : JNI_ABORT);
2005b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi    }
2015b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi};
2025b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchiclass ShortArrayReleaser {
2035b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchipublic:
2045b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi    static void Release(JNIEnv* _env, jshortArray array, jshort* data, jboolean commit) {
2055b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi        _env->ReleaseShortArrayElements(array, data, commit ? 0 : JNI_ABORT);
2065b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi    }
2075b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi};
2085b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchiclass IntArrayReleaser {
2095b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchipublic:
2105b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi    static void Release(JNIEnv* _env, jintArray array, jint* data, jboolean commit) {
2115b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi        _env->ReleaseIntArrayElements(array, data, commit ? 0 : JNI_ABORT);
2125b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi    }
2135b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi};
2145b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchiclass LongArrayReleaser {
2155b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchipublic:
2165b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi    static void Release(JNIEnv* _env, jlongArray array, jlong* data, jboolean commit) {
2175b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi        _env->ReleaseLongArrayElements(array, data, commit ? 0 : JNI_ABORT);
2185b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi    }
2195b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi};
2205b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchiclass FloatArrayReleaser {
2215b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchipublic:
2225b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi    static void Release(JNIEnv* _env, jfloatArray array, jfloat* data, jboolean commit) {
2235b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi        _env->ReleaseFloatArrayElements(array, data, commit ? 0 : JNI_ABORT);
2245b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi    }
2255b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi};
2265b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchiclass DoubleArrayReleaser {
2275b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchipublic:
2285b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi    static void Release(JNIEnv* _env, jdoubleArray array, jdouble* data, jboolean commit) {
2295b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi        _env->ReleaseDoubleArrayElements(array, data, commit ? 0 : JNI_ABORT);
2305b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi    }
2315b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi};
2325b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi
2335b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchitemplate<typename JTYPEARRAY, typename NTYPEARRAY, typename ARRAYRELEASER>
2345b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchistatic void
2355b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi YamauchireleaseArrayPointer(JNIEnv *_env, JTYPEARRAY array, NTYPEARRAY data, jboolean commit) {
2365b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi    ARRAYRELEASER::Release(_env, array, data, commit);
2375b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi}
2385b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi
23927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
24027f8002e591b5c579f75b2580183b5d1c4219cd4Jack PalevichreleasePointer(JNIEnv *_env, jarray array, void *data, jboolean commit)
24127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{
24227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    _env->ReleasePrimitiveArrayCritical(array, data,
2432ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian                       commit ? 0 : JNI_ABORT);
24427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
24527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
24616e7972f0d986eebf846ea8feb50f4435a9c6970Jack Palevichstatic void *
24716e7972f0d986eebf846ea8feb50f4435a9c6970Jack PalevichgetDirectBufferPointer(JNIEnv *_env, jobject buffer) {
24816e7972f0d986eebf846ea8feb50f4435a9c6970Jack Palevich    char* buf = (char*) _env->GetDirectBufferAddress(buffer);
24916e7972f0d986eebf846ea8feb50f4435a9c6970Jack Palevich    if (buf) {
25016e7972f0d986eebf846ea8feb50f4435a9c6970Jack Palevich        jint position = _env->GetIntField(buffer, positionID);
25116e7972f0d986eebf846ea8feb50f4435a9c6970Jack Palevich        jint elementSizeShift = _env->GetIntField(buffer, elementSizeShiftID);
25216e7972f0d986eebf846ea8feb50f4435a9c6970Jack Palevich        buf += position << elementSizeShift;
25316e7972f0d986eebf846ea8feb50f4435a9c6970Jack Palevich    } else {
25424ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes        jniThrowException(_env, "java/lang/IllegalArgumentException",
25524ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes                          "Must use a native order direct Buffer");
25616e7972f0d986eebf846ea8feb50f4435a9c6970Jack Palevich    }
25716e7972f0d986eebf846ea8feb50f4435a9c6970Jack Palevich    return (void*) buf;
25816e7972f0d986eebf846ea8feb50f4435a9c6970Jack Palevich}
25916e7972f0d986eebf846ea8feb50f4435a9c6970Jack Palevich
2602ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian// --------------------------------------------------------------------------
2612ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian
2622ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian/*
2632ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian * returns the number of values glGet returns for a given pname.
2642ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian *
2652ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian * The code below is written such that pnames requiring only one values
2662ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian * are the default (and are not explicitely tested for). This makes the
2672ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian * checking code much shorter/readable/efficient.
2682ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian *
2692ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian * This means that unknown pnames (e.g.: extensions) will default to 1. If
2702ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian * that unknown pname needs more than 1 value, then the validation check
2712ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian * is incomplete and the app may crash if it passed the wrong number params.
2722ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian */
2732ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianstatic int getNeededCount(GLint pname) {
2742ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    int needed = 1;
2752ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian#ifdef GL_ES_VERSION_2_0
2762ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    // GLES 2.x pnames
2772ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    switch (pname) {
2782ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        case GL_ALIASED_LINE_WIDTH_RANGE:
2792ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        case GL_ALIASED_POINT_SIZE_RANGE:
2802ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            needed = 2;
2812ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            break;
2822ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian
2832ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        case GL_BLEND_COLOR:
2842ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        case GL_COLOR_CLEAR_VALUE:
2852ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        case GL_COLOR_WRITEMASK:
2862ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        case GL_SCISSOR_BOX:
2872ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        case GL_VIEWPORT:
2882ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            needed = 4;
2892ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            break;
2902ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian
2912ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        case GL_COMPRESSED_TEXTURE_FORMATS:
2922ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            glGetIntegerv(GL_NUM_COMPRESSED_TEXTURE_FORMATS, &needed);
2932ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            break;
2942ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian
2952ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        case GL_SHADER_BINARY_FORMATS:
2962ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            glGetIntegerv(GL_NUM_SHADER_BINARY_FORMATS, &needed);
2972ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            break;
2982ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
2992ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian#endif
3002ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian
3012ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian#ifdef GL_VERSION_ES_CM_1_1
3022ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    // GLES 1.x pnames
3032ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    switch (pname) {
3042ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        case GL_ALIASED_LINE_WIDTH_RANGE:
3052ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        case GL_ALIASED_POINT_SIZE_RANGE:
3062ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        case GL_DEPTH_RANGE:
3072ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        case GL_SMOOTH_LINE_WIDTH_RANGE:
3082ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        case GL_SMOOTH_POINT_SIZE_RANGE:
3092ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            needed = 2;
3102ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            break;
3112ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian
3122ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        case GL_CURRENT_NORMAL:
3132ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        case GL_POINT_DISTANCE_ATTENUATION:
3142ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            needed = 3;
3152ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            break;
3162ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian
3172ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        case GL_COLOR_CLEAR_VALUE:
3182ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        case GL_COLOR_WRITEMASK:
3192ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        case GL_CURRENT_COLOR:
3202ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        case GL_CURRENT_TEXTURE_COORDS:
3212ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        case GL_FOG_COLOR:
3222ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        case GL_LIGHT_MODEL_AMBIENT:
3232ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        case GL_SCISSOR_BOX:
3242ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        case GL_VIEWPORT:
3252ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            needed = 4;
3262ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            break;
3272ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian
3282ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        case GL_MODELVIEW_MATRIX:
3292ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        case GL_PROJECTION_MATRIX:
3302ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        case GL_TEXTURE_MATRIX:
3312ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            needed = 16;
3322ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            break;
3332ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian
3342ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        case GL_COMPRESSED_TEXTURE_FORMATS:
3352ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            glGetIntegerv(GL_NUM_COMPRESSED_TEXTURE_FORMATS, &needed);
3362ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            break;
3372ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
3382ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian#endif
3392ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    return needed;
3402ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian}
3412ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian
3425b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchitemplate <typename JTYPEARRAY, typename ARRAYGETTER, typename NTYPEARRAY,
3435b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi          typename ARRAYRELEASER, typename CTYPE, void GET(GLenum, CTYPE*)>
3442ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianstatic void
3452ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianget
3462ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian  (JNIEnv *_env, jobject _this, jint pname, JTYPEARRAY params_ref, jint offset) {
3472ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    jint _exception = 0;
3482ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType;
3492ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage;
3502ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    CTYPE *params_base = (CTYPE *) 0;
3512ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    jint _remaining;
3522ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    CTYPE *params = (CTYPE *) 0;
3532ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    int _needed = 0;
3542ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian
3552ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (!params_ref) {
3562ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exception = 1;
3572ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionType = "java/lang/IllegalArgumentException";
3582ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionMessage = "params == null";
3592ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        goto exit;
3602ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
3612ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (offset < 0) {
3622ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exception = 1;
3632ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionType = "java/lang/IllegalArgumentException";
3642ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionMessage = "offset < 0";
3652ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        goto exit;
3662ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
3672ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    _remaining = _env->GetArrayLength(params_ref) - offset;
3682ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    _needed = getNeededCount(pname);
3692ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    // if we didn't find this pname, we just assume the user passed
3702ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    // an array of the right size -- this might happen with extensions
3712ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    // or if we forget an enum here.
3722ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_remaining < _needed) {
3732ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exception = 1;
3742ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionType = "java/lang/IllegalArgumentException";
3752ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionMessage = "length - offset < needed";
3762ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        goto exit;
3772ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
3785b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi    params_base = (CTYPE *) getArrayPointer<JTYPEARRAY, ARRAYGETTER>(
3795b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi        _env, params_ref, (jboolean *)0);
3802ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    params = params_base + offset;
3812ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian
3822ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    GET(
3832ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        (GLenum)pname,
3842ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        (CTYPE *)params
3852ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    );
3862ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian
3872ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianexit:
3882ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (params_base) {
3895b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi        releaseArrayPointer<JTYPEARRAY, NTYPEARRAY, ARRAYRELEASER>(
3905b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi            _env, params_ref, params_base, !_exception);
3912ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
3922ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_exception) {
3932ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        jniThrowException(_env, _exceptionType, _exceptionMessage);
3942ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
3952ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian}
3962ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian
3972ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian
3985b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchitemplate <typename CTYPE, typename JTYPEARRAY, typename ARRAYGETTER, typename NTYPEARRAY,
3995b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi          typename ARRAYRELEASER, void GET(GLenum, CTYPE*)>
4002ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianstatic void
4012ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopiangetarray
4022ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian  (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) {
4032ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    jint _exception = 0;
4042ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType;
4052ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage;
4065b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi    JTYPEARRAY _array = (JTYPEARRAY) 0;
4072ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    jint _bufferOffset = (jint) 0;
4082ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    jint _remaining;
4092ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    CTYPE *params = (CTYPE *) 0;
4102ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    int _needed = 0;
4112ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian
4125b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi    params = (CTYPE *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
413cee5198e7199fcbb131ff0d30165fb1d5c0107cfAndy McFadden    _remaining /= sizeof(CTYPE);    // convert from bytes to item count
4142ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    _needed = getNeededCount(pname);
4152ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    // if we didn't find this pname, we just assume the user passed
4162ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    // an array of the right size -- this might happen with extensions
4172ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    // or if we forget an enum here.
4182ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_needed>0 && _remaining < _needed) {
4192ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exception = 1;
4202ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionType = "java/lang/IllegalArgumentException";
4212ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        _exceptionMessage = "remaining() < needed";
4222ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        goto exit;
4232ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
4242ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (params == NULL) {
4255b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi        char * _paramsBase = (char *) getArrayPointer<JTYPEARRAY, ARRAYGETTER>(
4265b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi            _env, _array, (jboolean *) 0);
4272ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        params = (CTYPE *) (_paramsBase + _bufferOffset);
4282ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
4292ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    GET(
4302ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        (GLenum)pname,
4312ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        (CTYPE *)params
4322ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    );
4332ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian
4342ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianexit:
4352ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_array) {
4365b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi        releaseArrayPointer<JTYPEARRAY, NTYPEARRAY, ARRAYRELEASER>(
4375b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi            _env, _array, (NTYPEARRAY)params, _exception ? JNI_FALSE : JNI_TRUE);
4382ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
4392ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    if (_exception) {
4402ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian        jniThrowException(_env, _exceptionType, _exceptionMessage);
4412ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    }
442be509c9c7de5929d014dfe6d45e71cc8454ede0fJack Palevich}
443be509c9c7de5929d014dfe6d45e71cc8454ede0fJack Palevich
44427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich// --------------------------------------------------------------------------
44527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glActiveTexture ( GLenum texture ) */
44627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
44727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glActiveTexture__I
44827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint texture) {
44927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glActiveTexture(
45027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)texture
45127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
45227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
45327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
45427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glAlphaFunc ( GLenum func, GLclampf ref ) */
45527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
45627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glAlphaFunc__IF
45727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint func, jfloat ref) {
45827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glAlphaFunc(
45927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)func,
46027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLclampf)ref
46127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
46227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
46327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
46427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glAlphaFuncx ( GLenum func, GLclampx ref ) */
46527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
46627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glAlphaFuncx__II
46727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint func, jint ref) {
46827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glAlphaFuncx(
46927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)func,
47027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLclampx)ref
47127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
47227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
47327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
47427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glBindTexture ( GLenum target, GLuint texture ) */
47527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
47627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glBindTexture__II
47727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint texture) {
47827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glBindTexture(
47927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)target,
48027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLuint)texture
48127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
48227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
48327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
48427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glBlendFunc ( GLenum sfactor, GLenum dfactor ) */
48527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
48627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glBlendFunc__II
48727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint sfactor, jint dfactor) {
48827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glBlendFunc(
48927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)sfactor,
49027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)dfactor
49127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
49227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
49327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
49427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glClear ( GLbitfield mask ) */
49527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
49627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glClear__I
49727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint mask) {
49827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glClear(
49927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLbitfield)mask
50027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
50127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
50227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
50327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glClearColor ( GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha ) */
50427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
50527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glClearColor__FFFF
50627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jfloat red, jfloat green, jfloat blue, jfloat alpha) {
50727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glClearColor(
50827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLclampf)red,
50927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLclampf)green,
51027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLclampf)blue,
51127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLclampf)alpha
51227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
51327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
51427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
51527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glClearColorx ( GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha ) */
51627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
51727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glClearColorx__IIII
51827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint red, jint green, jint blue, jint alpha) {
51927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glClearColorx(
52027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLclampx)red,
52127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLclampx)green,
52227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLclampx)blue,
52327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLclampx)alpha
52427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
52527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
52627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
52727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glClearDepthf ( GLclampf depth ) */
52827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
52927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glClearDepthf__F
53027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jfloat depth) {
53127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glClearDepthf(
53227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLclampf)depth
53327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
53427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
53527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
53627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glClearDepthx ( GLclampx depth ) */
53727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
53827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glClearDepthx__I
53927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint depth) {
54027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glClearDepthx(
54127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLclampx)depth
54227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
54327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
54427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
54527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glClearStencil ( GLint s ) */
54627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
54727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glClearStencil__I
54827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint s) {
54927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glClearStencil(
55027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLint)s
55127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
55227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
55327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
55427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glClientActiveTexture ( GLenum texture ) */
55527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
55627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glClientActiveTexture__I
55727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint texture) {
55827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glClientActiveTexture(
55927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)texture
56027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
56127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
56227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
56327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glColor4f ( GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha ) */
56427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
56527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glColor4f__FFFF
56627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jfloat red, jfloat green, jfloat blue, jfloat alpha) {
56727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glColor4f(
56827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfloat)red,
56927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfloat)green,
57027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfloat)blue,
57127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfloat)alpha
57227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
57327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
57427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
57527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glColor4x ( GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha ) */
57627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
57727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glColor4x__IIII
57827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint red, jint green, jint blue, jint alpha) {
57927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glColor4x(
58027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfixed)red,
58127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfixed)green,
58227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfixed)blue,
58327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfixed)alpha
58427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
58527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
58627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
58727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glColorMask ( GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha ) */
58827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
58927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glColorMask__ZZZZ
59027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jboolean red, jboolean green, jboolean blue, jboolean alpha) {
59127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glColorMask(
59227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLboolean)red,
59327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLboolean)green,
59427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLboolean)blue,
59527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLboolean)alpha
59627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
59727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
59827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
59927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glColorPointer ( GLint size, GLenum type, GLsizei stride, const GLvoid *pointer ) */
60027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
60127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glColorPointerBounds__IIILjava_nio_Buffer_2I
60227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint size, jint type, jint stride, jobject pointer_buf, jint remaining) {
60327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jarray _array = (jarray) 0;
60417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
60527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
60627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLvoid *pointer = (GLvoid *) 0;
60727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
608e20ea783a12f1031482c3aa01938efe39dcbf0a2Jack Palevich    if (pointer_buf) {
60916e7972f0d986eebf846ea8feb50f4435a9c6970Jack Palevich        pointer = (GLvoid *) getDirectBufferPointer(_env, pointer_buf);
610e20ea783a12f1031482c3aa01938efe39dcbf0a2Jack Palevich        if ( ! pointer ) {
611e20ea783a12f1031482c3aa01938efe39dcbf0a2Jack Palevich            return;
612e20ea783a12f1031482c3aa01938efe39dcbf0a2Jack Palevich        }
613e20ea783a12f1031482c3aa01938efe39dcbf0a2Jack Palevich    }
61427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glColorPointerBounds(
61527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLint)size,
61627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)type,
61727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLsizei)stride,
61827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLvoid *)pointer,
61927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLsizei)remaining
62027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
62127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
62227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
62327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glCompressedTexImage2D ( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data ) */
62427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
62527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glCompressedTexImage2D__IIIIIIILjava_nio_Buffer_2
62627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint level, jint internalformat, jint width, jint height, jint border, jint imageSize, jobject data_buf) {
62727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jarray _array = (jarray) 0;
62817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
62927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
63027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLvoid *data = (GLvoid *) 0;
63127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
6325b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi    data = (GLvoid *)getPointer(_env, data_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
63317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (data == NULL) {
63417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _dataBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
63517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        data = (GLvoid *) (_dataBase + _bufferOffset);
63617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
63727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glCompressedTexImage2D(
63827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)target,
63927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLint)level,
64027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)internalformat,
64127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLsizei)width,
64227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLsizei)height,
64327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLint)border,
64427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLsizei)imageSize,
64527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLvoid *)data
64627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
64727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_array) {
64827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        releasePointer(_env, _array, data, JNI_FALSE);
64927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
65027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
65127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
65227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glCompressedTexSubImage2D ( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data ) */
65327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
65427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glCompressedTexSubImage2D__IIIIIIIILjava_nio_Buffer_2
65527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint level, jint xoffset, jint yoffset, jint width, jint height, jint format, jint imageSize, jobject data_buf) {
65627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jarray _array = (jarray) 0;
65717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
65827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
65927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLvoid *data = (GLvoid *) 0;
66027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
6615b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi    data = (GLvoid *)getPointer(_env, data_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
66217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (data == NULL) {
66317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _dataBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
66417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        data = (GLvoid *) (_dataBase + _bufferOffset);
66517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
66627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glCompressedTexSubImage2D(
66727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)target,
66827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLint)level,
66927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLint)xoffset,
67027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLint)yoffset,
67127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLsizei)width,
67227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLsizei)height,
67327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)format,
67427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLsizei)imageSize,
67527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLvoid *)data
67627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
67727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_array) {
67827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        releasePointer(_env, _array, data, JNI_FALSE);
67927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
68027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
68127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
68227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glCopyTexImage2D ( GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border ) */
68327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
68427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glCopyTexImage2D__IIIIIIII
68527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint level, jint internalformat, jint x, jint y, jint width, jint height, jint border) {
68627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glCopyTexImage2D(
68727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)target,
68827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLint)level,
68927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)internalformat,
69027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLint)x,
69127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLint)y,
69227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLsizei)width,
69327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLsizei)height,
69427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLint)border
69527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
69627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
69727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
69827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glCopyTexSubImage2D ( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height ) */
69927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
70027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glCopyTexSubImage2D__IIIIIIII
70127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint level, jint xoffset, jint yoffset, jint x, jint y, jint width, jint height) {
70227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glCopyTexSubImage2D(
70327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)target,
70427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLint)level,
70527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLint)xoffset,
70627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLint)yoffset,
70727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLint)x,
70827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLint)y,
70927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLsizei)width,
71027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLsizei)height
71127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
71227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
71327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
71427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glCullFace ( GLenum mode ) */
71527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
71627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glCullFace__I
71727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint mode) {
71827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glCullFace(
71927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)mode
72027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
72127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
72227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
72327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glDeleteTextures ( GLsizei n, const GLuint *textures ) */
72427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
72527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glDeleteTextures__I_3II
72627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint n, jintArray textures_ref, jint offset) {
7272545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
7282ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
7292ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
73027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLuint *textures_base = (GLuint *) 0;
73127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
73227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLuint *textures = (GLuint *) 0;
73327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
73427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (!textures_ref) {
7352545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
7362545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
7372545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "textures == null";
73827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
73927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
74027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (offset < 0) {
7412545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
7422545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
7432545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
74427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
74527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
74627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    _remaining = _env->GetArrayLength(textures_ref) - offset;
74727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < n) {
7482545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
7492545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
7502545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "length - offset < n < needed";
75127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
75227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
75327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    textures_base = (GLuint *)
7545b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi        _env->GetIntArrayElements(textures_ref, (jboolean *)0);
75527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    textures = textures_base + offset;
75627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
75727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glDeleteTextures(
75827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLsizei)n,
75927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLuint *)textures
76027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
76127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
76227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
76327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (textures_base) {
7645b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi        _env->ReleaseIntArrayElements(textures_ref, (jint*)textures_base,
76527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            JNI_ABORT);
76627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
7672545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
7682545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
7692545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
77027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
77127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
77227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glDeleteTextures ( GLsizei n, const GLuint *textures ) */
77327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
77427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glDeleteTextures__ILjava_nio_IntBuffer_2
77527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint n, jobject textures_buf) {
7762545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
7772ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
7782ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
7795b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi    jintArray _array = (jintArray) 0;
78017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
78127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
78227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLuint *textures = (GLuint *) 0;
78327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
7845b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi    textures = (GLuint *)getPointer(_env, textures_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
78527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < n) {
7862545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
7872545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
7882545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "remaining() < n < needed";
78927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
79027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
79117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (textures == NULL) {
7925b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi        char * _texturesBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0);
79317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        textures = (GLuint *) (_texturesBase + _bufferOffset);
79417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
79527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glDeleteTextures(
79627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLsizei)n,
79727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLuint *)textures
79827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
79927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
80027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
80127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_array) {
8025b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi        _env->ReleaseIntArrayElements(_array, (jint*)textures, JNI_ABORT);
80327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
8042545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
8052545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
8062545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
80727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
80827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
80927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glDepthFunc ( GLenum func ) */
81027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
81127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glDepthFunc__I
81227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint func) {
81327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glDepthFunc(
81427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)func
81527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
81627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
81727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
81827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glDepthMask ( GLboolean flag ) */
81927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
82027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glDepthMask__Z
82127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jboolean flag) {
82227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glDepthMask(
82327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLboolean)flag
82427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
82527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
82627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
82727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glDepthRangef ( GLclampf zNear, GLclampf zFar ) */
82827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
82927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glDepthRangef__FF
83027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jfloat zNear, jfloat zFar) {
83127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glDepthRangef(
83227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLclampf)zNear,
83327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLclampf)zFar
83427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
83527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
83627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
83727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glDepthRangex ( GLclampx zNear, GLclampx zFar ) */
83827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
83927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glDepthRangex__II
84027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint zNear, jint zFar) {
84127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glDepthRangex(
84227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLclampx)zNear,
84327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLclampx)zFar
84427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
84527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
84627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
84727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glDisable ( GLenum cap ) */
84827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
84927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glDisable__I
85027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint cap) {
85127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glDisable(
85227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)cap
85327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
85427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
85527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
85627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glDisableClientState ( GLenum array ) */
85727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
85827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glDisableClientState__I
85927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint array) {
86027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glDisableClientState(
86127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)array
86227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
86327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
86427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
86527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glDrawArrays ( GLenum mode, GLint first, GLsizei count ) */
86627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
86727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glDrawArrays__III
86827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint mode, jint first, jint count) {
86927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glDrawArrays(
87027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)mode,
87127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLint)first,
87227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLsizei)count
87327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
87427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
87527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
87627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glDrawElements ( GLenum mode, GLsizei count, GLenum type, const GLvoid *indices ) */
87727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
87827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glDrawElements__IIILjava_nio_Buffer_2
87927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint mode, jint count, jint type, jobject indices_buf) {
8802545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
8812ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
8822ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
88327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jarray _array = (jarray) 0;
88417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
88527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
88627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLvoid *indices = (GLvoid *) 0;
88727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
8885b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi    indices = (GLvoid *)getPointer(_env, indices_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
88927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < count) {
8902545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
8912545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/ArrayIndexOutOfBoundsException";
8922545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "remaining() < count < needed";
89327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
89427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
89517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (indices == NULL) {
89617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _indicesBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
89717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        indices = (GLvoid *) (_indicesBase + _bufferOffset);
89817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
89927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glDrawElements(
90027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)mode,
90127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLsizei)count,
90227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)type,
90327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLvoid *)indices
90427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
90527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
90627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
90727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_array) {
90827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        releasePointer(_env, _array, indices, JNI_FALSE);
90927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
9102545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
9112545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
9122545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
91327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
91427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
91527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glEnable ( GLenum cap ) */
91627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
91727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glEnable__I
91827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint cap) {
91927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glEnable(
92027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)cap
92127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
92227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
92327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
92427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glEnableClientState ( GLenum array ) */
92527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
92627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glEnableClientState__I
92727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint array) {
92827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glEnableClientState(
92927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)array
93027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
93127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
93227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
93327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glFinish ( void ) */
93427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
93527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glFinish__
93627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this) {
93727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glFinish();
93827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
93927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
94027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glFlush ( void ) */
94127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
94227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glFlush__
94327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this) {
94427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glFlush();
94527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
94627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
94727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glFogf ( GLenum pname, GLfloat param ) */
94827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
94927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glFogf__IF
95027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint pname, jfloat param) {
95127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glFogf(
95227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
95327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfloat)param
95427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
95527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
95627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
95727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glFogfv ( GLenum pname, const GLfloat *params ) */
95827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
95927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glFogfv__I_3FI
96027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint pname, jfloatArray params_ref, jint offset) {
9612545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
9622ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
9632ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
96427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfloat *params_base = (GLfloat *) 0;
96527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
96627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfloat *params = (GLfloat *) 0;
96727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
96827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (!params_ref) {
9692545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
9702545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
9712545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "params == null";
97227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
97327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
97427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (offset < 0) {
9752545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
9762545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
9772545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
97827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
97927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
98027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    _remaining = _env->GetArrayLength(params_ref) - offset;
98127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    int _needed;
98227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    switch (pname) {
98327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_FOG_COLOR)
98427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_FOG_COLOR:
98527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_FOG_COLOR)
98627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _needed = 4;
98727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
98827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        default:
9892ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            _needed = 1;
99027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
99127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
99227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < _needed) {
9932545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
9942545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
9952545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "length - offset < needed";
99627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
99727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
99827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    params_base = (GLfloat *)
9995b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi        _env->GetFloatArrayElements(params_ref, (jboolean *)0);
100027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    params = params_base + offset;
100127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
100227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glFogfv(
100327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
100427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfloat *)params
100527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
100627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
100727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
100827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (params_base) {
10095b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi        _env->ReleaseFloatArrayElements(params_ref, (jfloat*)params_base,
101027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            JNI_ABORT);
101127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
10122545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
10132545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
10142545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
101527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
101627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
101727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glFogfv ( GLenum pname, const GLfloat *params ) */
101827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
101927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glFogfv__ILjava_nio_FloatBuffer_2
102027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) {
10212545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
10222ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
10232ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
10245b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi    jfloatArray _array = (jfloatArray) 0;
102517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
102627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
102727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfloat *params = (GLfloat *) 0;
102827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
10295b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi    params = (GLfloat *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
103027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    int _needed;
103127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    switch (pname) {
103227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_FOG_COLOR)
103327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_FOG_COLOR:
103427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_FOG_COLOR)
103527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _needed = 4;
103627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
103727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        default:
10382ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            _needed = 1;
103927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
104027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
104127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < _needed) {
10422545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
10432545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
10442545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "remaining() < needed";
104527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
104627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
104717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (params == NULL) {
10485b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi        char * _paramsBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0);
104917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        params = (GLfloat *) (_paramsBase + _bufferOffset);
105017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
105127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glFogfv(
105227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
105327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfloat *)params
105427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
105527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
105627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
105727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_array) {
10585b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi        _env->ReleaseFloatArrayElements(_array, (jfloat*)params, JNI_ABORT);
105927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
10602545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
10612545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
10622545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
106327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
106427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
106527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glFogx ( GLenum pname, GLfixed param ) */
106627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
106727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glFogx__II
106827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint pname, jint param) {
106927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glFogx(
107027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
107127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfixed)param
107227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
107327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
107427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
107527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glFogxv ( GLenum pname, const GLfixed *params ) */
107627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
107727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glFogxv__I_3II
107827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint pname, jintArray params_ref, jint offset) {
10792545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
10802ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
10812ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
108227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfixed *params_base = (GLfixed *) 0;
108327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
108427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfixed *params = (GLfixed *) 0;
108527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
108627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (!params_ref) {
10872545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
10882545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
10892545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "params == null";
109027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
109127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
109227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (offset < 0) {
10932545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
10942545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
10952545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
109627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
109727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
109827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    _remaining = _env->GetArrayLength(params_ref) - offset;
109927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    int _needed;
110027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    switch (pname) {
110127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_FOG_COLOR)
110227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_FOG_COLOR:
110327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_FOG_COLOR)
110427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _needed = 4;
110527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
110627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        default:
11072ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            _needed = 1;
110827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
110927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
111027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < _needed) {
11112545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
11122545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
11132545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "length - offset < needed";
111427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
111527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
111627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    params_base = (GLfixed *)
11175b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi        _env->GetIntArrayElements(params_ref, (jboolean *)0);
111827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    params = params_base + offset;
111927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
112027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glFogxv(
112127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
112227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfixed *)params
112327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
112427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
112527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
112627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (params_base) {
11275b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi        _env->ReleaseIntArrayElements(params_ref, (jint*)params_base,
112827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            JNI_ABORT);
112927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
11302545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
11312545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
11322545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
113327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
113427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
113527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glFogxv ( GLenum pname, const GLfixed *params ) */
113627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
113727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glFogxv__ILjava_nio_IntBuffer_2
113827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) {
11392545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
11402ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
11412ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
11425b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi    jintArray _array = (jintArray) 0;
114317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
114427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
114527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfixed *params = (GLfixed *) 0;
114627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
11475b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi    params = (GLfixed *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
114827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    int _needed;
114927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    switch (pname) {
115027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_FOG_COLOR)
115127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_FOG_COLOR:
115227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_FOG_COLOR)
115327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _needed = 4;
115427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
115527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        default:
11562ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            _needed = 1;
115727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
115827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
115927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < _needed) {
11602545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
11612545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
11622545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "remaining() < needed";
116327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
116427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
116517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (params == NULL) {
11665b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi        char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0);
116717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        params = (GLfixed *) (_paramsBase + _bufferOffset);
116817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
116927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glFogxv(
117027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
117127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfixed *)params
117227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
117327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
117427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
117527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_array) {
11765b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi        _env->ReleaseIntArrayElements(_array, (jint*)params, JNI_ABORT);
117727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
11782545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
11792545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
11802545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
118127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
118227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
118327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glFrontFace ( GLenum mode ) */
118427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
118527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glFrontFace__I
118627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint mode) {
118727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glFrontFace(
118827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)mode
118927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
119027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
119127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
119227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glFrustumf ( GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar ) */
119327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
119427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glFrustumf__FFFFFF
119527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jfloat left, jfloat right, jfloat bottom, jfloat top, jfloat zNear, jfloat zFar) {
119627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glFrustumf(
119727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfloat)left,
119827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfloat)right,
119927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfloat)bottom,
120027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfloat)top,
120127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfloat)zNear,
120227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfloat)zFar
120327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
120427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
120527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
120627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glFrustumx ( GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar ) */
120727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
120827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glFrustumx__IIIIII
120927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint left, jint right, jint bottom, jint top, jint zNear, jint zFar) {
121027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glFrustumx(
121127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfixed)left,
121227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfixed)right,
121327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfixed)bottom,
121427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfixed)top,
121527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfixed)zNear,
121627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfixed)zFar
121727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
121827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
121927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
122027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGenTextures ( GLsizei n, GLuint *textures ) */
122127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
122227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGenTextures__I_3II
122327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint n, jintArray textures_ref, jint offset) {
122427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _exception = 0;
12252ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
12262ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
122727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLuint *textures_base = (GLuint *) 0;
122827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
122927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLuint *textures = (GLuint *) 0;
123027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
123127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (!textures_ref) {
123227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
12332545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
12342545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "textures == null";
123527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
123627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
123727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (offset < 0) {
123827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
12392545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
12402545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
124127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
124227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
124327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    _remaining = _env->GetArrayLength(textures_ref) - offset;
124427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < n) {
124527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
12462545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
12472545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "length - offset < n < needed";
124827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
124927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
125027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    textures_base = (GLuint *)
12515b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi        _env->GetIntArrayElements(textures_ref, (jboolean *)0);
125227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    textures = textures_base + offset;
125327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
125427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glGenTextures(
125527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLsizei)n,
125627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLuint *)textures
125727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
125827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
125927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
126027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (textures_base) {
12615b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi        _env->ReleaseIntArrayElements(textures_ref, (jint*)textures_base,
126227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _exception ? JNI_ABORT: 0);
126327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
12642545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
12652545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
12662545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
126727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
126827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
126927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGenTextures ( GLsizei n, GLuint *textures ) */
127027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
127127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGenTextures__ILjava_nio_IntBuffer_2
127227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint n, jobject textures_buf) {
127327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _exception = 0;
12742ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
12752ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
12765b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi    jintArray _array = (jintArray) 0;
127717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
127827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
127927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLuint *textures = (GLuint *) 0;
128027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
12815b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi    textures = (GLuint *)getPointer(_env, textures_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
128227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < n) {
128327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
12842545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
12852545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "remaining() < n < needed";
128627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
128727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
128817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (textures == NULL) {
12895b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi        char * _texturesBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0);
129017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        textures = (GLuint *) (_texturesBase + _bufferOffset);
129117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
129227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glGenTextures(
129327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLsizei)n,
129427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLuint *)textures
129527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
129627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
129727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
129827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_array) {
12995b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi        _env->ReleaseIntArrayElements(_array, (jint*)textures, _exception ? JNI_ABORT : 0);
130027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
13012545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
13022545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
13032545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
130427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
130527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
130627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* GLenum glGetError ( void ) */
130727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic jint
130827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetError__
130927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this) {
131027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLenum _returnValue;
131127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    _returnValue = glGetError();
1312cee5198e7199fcbb131ff0d30165fb1d5c0107cfAndy McFadden    return (jint)_returnValue;
131327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
131427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
131527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetIntegerv ( GLenum pname, GLint *params ) */
131627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
131727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetIntegerv__I_3II
131827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint pname, jintArray params_ref, jint offset) {
13195b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi    get<jintArray, IntArrayGetter, jint*, IntArrayReleaser, GLint, glGetIntegerv>(
13205b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi        _env, _this, pname, params_ref, offset);
132127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
132227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
132327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetIntegerv ( GLenum pname, GLint *params ) */
132427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
132527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetIntegerv__ILjava_nio_IntBuffer_2
132627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) {
13275b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi    getarray<GLint, jintArray, IntArrayGetter, jint*, IntArrayReleaser, glGetIntegerv>(
13285b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi        _env, _this, pname, params_buf);
132927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
133027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* const GLubyte * glGetString ( GLenum name ) */
133124ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughesstatic jstring android_glGetString(JNIEnv* _env, jobject, jint name) {
133224ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes    const char* chars = (const char*) glGetString((GLenum) name);
133324ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes    return _env->NewStringUTF(chars);
133427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
133527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glHint ( GLenum target, GLenum mode ) */
133627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
133727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glHint__II
133827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint mode) {
133927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glHint(
134027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)target,
134127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)mode
134227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
134327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
134427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
134527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glLightModelf ( GLenum pname, GLfloat param ) */
134627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
134727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glLightModelf__IF
134827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint pname, jfloat param) {
134927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glLightModelf(
135027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
135127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfloat)param
135227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
135327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
135427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
135527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glLightModelfv ( GLenum pname, const GLfloat *params ) */
135627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
135727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glLightModelfv__I_3FI
135827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint pname, jfloatArray params_ref, jint offset) {
13592545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
13602ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
13612ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
136227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfloat *params_base = (GLfloat *) 0;
136327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
136427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfloat *params = (GLfloat *) 0;
136527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
136627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (!params_ref) {
13672545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
13682545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
13692545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "params == null";
137027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
137127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
137227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (offset < 0) {
13732545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
13742545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
13752545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
137627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
137727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
137827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    _remaining = _env->GetArrayLength(params_ref) - offset;
137927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    int _needed;
138027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    switch (pname) {
138127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_LIGHT_MODEL_AMBIENT)
138227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_LIGHT_MODEL_AMBIENT:
138327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_LIGHT_MODEL_AMBIENT)
138427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _needed = 4;
138527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
138627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        default:
13872ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            _needed = 1;
138827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
138927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
139027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < _needed) {
13912545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
13922545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
13932545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "length - offset < needed";
139427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
139527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
139627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    params_base = (GLfloat *)
13975b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi        _env->GetFloatArrayElements(params_ref, (jboolean *)0);
139827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    params = params_base + offset;
139927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
140027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glLightModelfv(
140127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
140227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfloat *)params
140327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
140427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
140527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
140627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (params_base) {
14075b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi        _env->ReleaseFloatArrayElements(params_ref, (jfloat*)params_base,
140827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            JNI_ABORT);
140927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
14102545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
14112545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
14122545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
141327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
141427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
141527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glLightModelfv ( GLenum pname, const GLfloat *params ) */
141627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
141727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glLightModelfv__ILjava_nio_FloatBuffer_2
141827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) {
14192545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
14202ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
14212ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
14225b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi    jfloatArray _array = (jfloatArray) 0;
142317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
142427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
142527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfloat *params = (GLfloat *) 0;
142627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
14275b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi    params = (GLfloat *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
142827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    int _needed;
142927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    switch (pname) {
143027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_LIGHT_MODEL_AMBIENT)
143127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_LIGHT_MODEL_AMBIENT:
143227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_LIGHT_MODEL_AMBIENT)
143327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _needed = 4;
143427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
143527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        default:
14362ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            _needed = 1;
143727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
143827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
143927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < _needed) {
14402545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
14412545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
14422545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "remaining() < needed";
144327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
144427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
144517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (params == NULL) {
14465b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi        char * _paramsBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0);
144717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        params = (GLfloat *) (_paramsBase + _bufferOffset);
144817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
144927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glLightModelfv(
145027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
145127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfloat *)params
145227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
145327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
145427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
145527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_array) {
14565b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi        _env->ReleaseFloatArrayElements(_array, (jfloat*)params, JNI_ABORT);
145727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
14582545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
14592545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
14602545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
146127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
146227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
146327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glLightModelx ( GLenum pname, GLfixed param ) */
146427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
146527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glLightModelx__II
146627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint pname, jint param) {
146727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glLightModelx(
146827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
146927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfixed)param
147027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
147127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
147227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
147327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glLightModelxv ( GLenum pname, const GLfixed *params ) */
147427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
147527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glLightModelxv__I_3II
147627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint pname, jintArray params_ref, jint offset) {
14772545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
14782ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
14792ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
148027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfixed *params_base = (GLfixed *) 0;
148127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
148227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfixed *params = (GLfixed *) 0;
148327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
148427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (!params_ref) {
14852545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
14862545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
14872545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "params == null";
148827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
148927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
149027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (offset < 0) {
14912545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
14922545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
14932545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
149427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
149527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
149627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    _remaining = _env->GetArrayLength(params_ref) - offset;
149727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    int _needed;
149827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    switch (pname) {
149927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_LIGHT_MODEL_AMBIENT)
150027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_LIGHT_MODEL_AMBIENT:
150127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_LIGHT_MODEL_AMBIENT)
150227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _needed = 4;
150327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
150427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        default:
15052ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            _needed = 1;
150627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
150727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
150827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < _needed) {
15092545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
15102545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
15112545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "length - offset < needed";
151227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
151327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
151427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    params_base = (GLfixed *)
15155b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi        _env->GetIntArrayElements(params_ref, (jboolean *)0);
151627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    params = params_base + offset;
151727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
151827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glLightModelxv(
151927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
152027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfixed *)params
152127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
152227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
152327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
152427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (params_base) {
15255b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi        _env->ReleaseIntArrayElements(params_ref, (jint*)params_base,
152627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            JNI_ABORT);
152727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
15282545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
15292545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
15302545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
153127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
153227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
153327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glLightModelxv ( GLenum pname, const GLfixed *params ) */
153427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
153527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glLightModelxv__ILjava_nio_IntBuffer_2
153627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) {
15372545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
15382ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
15392ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
15405b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi    jintArray _array = (jintArray) 0;
154117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
154227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
154327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfixed *params = (GLfixed *) 0;
154427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
15455b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi    params = (GLfixed *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
154627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    int _needed;
154727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    switch (pname) {
154827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_LIGHT_MODEL_AMBIENT)
154927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_LIGHT_MODEL_AMBIENT:
155027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_LIGHT_MODEL_AMBIENT)
155127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _needed = 4;
155227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
155327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        default:
15542ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            _needed = 1;
155527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
155627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
155727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < _needed) {
15582545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
15592545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
15602545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "remaining() < needed";
156127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
156227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
156317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (params == NULL) {
15645b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi        char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0);
156517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        params = (GLfixed *) (_paramsBase + _bufferOffset);
156617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
156727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glLightModelxv(
156827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
156927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfixed *)params
157027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
157127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
157227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
157327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_array) {
15745b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi        _env->ReleaseIntArrayElements(_array, (jint*)params, JNI_ABORT);
157527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
15762545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
15772545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
15782545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
157927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
158027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
158127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glLightf ( GLenum light, GLenum pname, GLfloat param ) */
158227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
158327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glLightf__IIF
158427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint light, jint pname, jfloat param) {
158527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glLightf(
158627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)light,
158727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
158827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfloat)param
158927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
159027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
159127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
159227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glLightfv ( GLenum light, GLenum pname, const GLfloat *params ) */
159327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
159427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glLightfv__II_3FI
159527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint light, jint pname, jfloatArray params_ref, jint offset) {
15962545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
15972ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
15982ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
159927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfloat *params_base = (GLfloat *) 0;
160027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
160127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfloat *params = (GLfloat *) 0;
160227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
160327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (!params_ref) {
16042545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
16052545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
16062545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "params == null";
160727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
160827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
160927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (offset < 0) {
16102545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
16112545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
16122545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
161327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
161427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
161527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    _remaining = _env->GetArrayLength(params_ref) - offset;
161627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    int _needed;
161727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    switch (pname) {
161827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_SPOT_DIRECTION)
161927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_SPOT_DIRECTION:
162027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_SPOT_DIRECTION)
162127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _needed = 3;
162227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
162327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_AMBIENT)
162427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_AMBIENT:
162527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_AMBIENT)
162627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_DIFFUSE)
162727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_DIFFUSE:
162827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_DIFFUSE)
162927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_SPECULAR)
163027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_SPECULAR:
163127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_SPECULAR)
163227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_EMISSION)
163327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_EMISSION:
163427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_EMISSION)
163527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _needed = 4;
163627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
163727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        default:
16382ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            _needed = 1;
163927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
164027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
164127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < _needed) {
16422545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
16432545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
16442545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "length - offset < needed";
164527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
164627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
164727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    params_base = (GLfloat *)
16485b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi        _env->GetFloatArrayElements(params_ref, (jboolean *)0);
164927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    params = params_base + offset;
165027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
165127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glLightfv(
165227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)light,
165327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
165427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfloat *)params
165527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
165627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
165727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
165827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (params_base) {
16595b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi        _env->ReleaseFloatArrayElements(params_ref, (jfloat*)params_base,
166027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            JNI_ABORT);
166127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
16622545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
16632545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
16642545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
166527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
166627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
166727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glLightfv ( GLenum light, GLenum pname, const GLfloat *params ) */
166827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
166927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glLightfv__IILjava_nio_FloatBuffer_2
167027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint light, jint pname, jobject params_buf) {
16712545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
16722ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
16732ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
16745b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi    jfloatArray _array = (jfloatArray) 0;
167517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
167627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
167727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfloat *params = (GLfloat *) 0;
167827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
16795b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi    params = (GLfloat *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
168027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    int _needed;
168127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    switch (pname) {
168227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_SPOT_DIRECTION)
168327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_SPOT_DIRECTION:
168427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_SPOT_DIRECTION)
168527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _needed = 3;
168627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
168727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_AMBIENT)
168827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_AMBIENT:
168927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_AMBIENT)
169027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_DIFFUSE)
169127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_DIFFUSE:
169227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_DIFFUSE)
169327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_SPECULAR)
169427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_SPECULAR:
169527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_SPECULAR)
169627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_EMISSION)
169727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_EMISSION:
169827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_EMISSION)
169927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _needed = 4;
170027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
170127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        default:
17022ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            _needed = 1;
170327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
170427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
170527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < _needed) {
17062545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
17072545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
17082545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "remaining() < needed";
170927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
171027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
171117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (params == NULL) {
17125b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi        char * _paramsBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0);
171317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        params = (GLfloat *) (_paramsBase + _bufferOffset);
171417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
171527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glLightfv(
171627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)light,
171727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
171827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfloat *)params
171927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
172027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
172127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
172227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_array) {
17235b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi        _env->ReleaseFloatArrayElements(_array, (jfloat*)params, JNI_ABORT);
172427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
17252545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
17262545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
17272545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
172827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
172927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
173027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glLightx ( GLenum light, GLenum pname, GLfixed param ) */
173127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
173227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glLightx__III
173327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint light, jint pname, jint param) {
173427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glLightx(
173527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)light,
173627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
173727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfixed)param
173827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
173927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
174027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
174127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glLightxv ( GLenum light, GLenum pname, const GLfixed *params ) */
174227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
174327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glLightxv__II_3II
174427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint light, jint pname, jintArray params_ref, jint offset) {
17452545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
17462ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
17472ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
174827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfixed *params_base = (GLfixed *) 0;
174927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
175027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfixed *params = (GLfixed *) 0;
175127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
175227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (!params_ref) {
17532545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
17542545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
17552545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "params == null";
175627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
175727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
175827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (offset < 0) {
17592545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
17602545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
17612545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
176227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
176327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
176427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    _remaining = _env->GetArrayLength(params_ref) - offset;
176527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    int _needed;
176627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    switch (pname) {
176727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_SPOT_DIRECTION)
176827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_SPOT_DIRECTION:
176927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_SPOT_DIRECTION)
177027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _needed = 3;
177127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
177227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_AMBIENT)
177327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_AMBIENT:
177427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_AMBIENT)
177527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_DIFFUSE)
177627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_DIFFUSE:
177727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_DIFFUSE)
177827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_SPECULAR)
177927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_SPECULAR:
178027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_SPECULAR)
178127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_EMISSION)
178227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_EMISSION:
178327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_EMISSION)
178427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _needed = 4;
178527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
178627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        default:
17872ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            _needed = 1;
178827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
178927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
179027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < _needed) {
17912545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
17922545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
17932545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "length - offset < needed";
179427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
179527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
179627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    params_base = (GLfixed *)
17975b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi        _env->GetIntArrayElements(params_ref, (jboolean *)0);
179827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    params = params_base + offset;
179927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
180027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glLightxv(
180127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)light,
180227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
180327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfixed *)params
180427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
180527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
180627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
180727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (params_base) {
18085b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi        _env->ReleaseIntArrayElements(params_ref, (jint*)params_base,
180927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            JNI_ABORT);
181027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
18112545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
18122545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
18132545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
181427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
181527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
181627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glLightxv ( GLenum light, GLenum pname, const GLfixed *params ) */
181727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
181827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glLightxv__IILjava_nio_IntBuffer_2
181927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint light, jint pname, jobject params_buf) {
18202545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
18212ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
18222ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
18235b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi    jintArray _array = (jintArray) 0;
182417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
182527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
182627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfixed *params = (GLfixed *) 0;
182727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
18285b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi    params = (GLfixed *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
182927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    int _needed;
183027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    switch (pname) {
183127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_SPOT_DIRECTION)
183227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_SPOT_DIRECTION:
183327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_SPOT_DIRECTION)
183427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _needed = 3;
183527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
183627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_AMBIENT)
183727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_AMBIENT:
183827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_AMBIENT)
183927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_DIFFUSE)
184027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_DIFFUSE:
184127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_DIFFUSE)
184227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_SPECULAR)
184327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_SPECULAR:
184427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_SPECULAR)
184527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_EMISSION)
184627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_EMISSION:
184727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_EMISSION)
184827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _needed = 4;
184927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
185027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        default:
18512ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            _needed = 1;
185227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
185327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
185427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < _needed) {
18552545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
18562545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
18572545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "remaining() < needed";
185827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
185927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
186017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (params == NULL) {
18615b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi        char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0);
186217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        params = (GLfixed *) (_paramsBase + _bufferOffset);
186317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
186427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glLightxv(
186527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)light,
186627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
186727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfixed *)params
186827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
186927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
187027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
187127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_array) {
18725b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi        _env->ReleaseIntArrayElements(_array, (jint*)params, JNI_ABORT);
187327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
18742545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
18752545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
18762545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
187727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
187827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
187927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glLineWidth ( GLfloat width ) */
188027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
188127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glLineWidth__F
188227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jfloat width) {
188327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glLineWidth(
188427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfloat)width
188527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
188627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
188727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
188827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glLineWidthx ( GLfixed width ) */
188927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
189027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glLineWidthx__I
189127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint width) {
189227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glLineWidthx(
189327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfixed)width
189427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
189527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
189627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
189727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glLoadIdentity ( void ) */
189827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
189927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glLoadIdentity__
190027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this) {
190127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glLoadIdentity();
190227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
190327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
190427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glLoadMatrixf ( const GLfloat *m ) */
190527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
190627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glLoadMatrixf___3FI
190727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jfloatArray m_ref, jint offset) {
19082545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
19092ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
19102ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
191127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfloat *m_base = (GLfloat *) 0;
191227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
191327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfloat *m = (GLfloat *) 0;
191427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
191527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (!m_ref) {
19162545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
19172545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
19182545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "m == null";
191927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
192027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
192127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (offset < 0) {
19222545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
19232545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
19242545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
192527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
192627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
192727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    _remaining = _env->GetArrayLength(m_ref) - offset;
192827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    m_base = (GLfloat *)
19295b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi        _env->GetFloatArrayElements(m_ref, (jboolean *)0);
193027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    m = m_base + offset;
193127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
193227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glLoadMatrixf(
193327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfloat *)m
193427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
193527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
193627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
193727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (m_base) {
19385b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi        _env->ReleaseFloatArrayElements(m_ref, (jfloat*)m_base,
193927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            JNI_ABORT);
194027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
19412545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
19422545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
19432545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
194427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
194527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
194627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glLoadMatrixf ( const GLfloat *m ) */
194727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
194827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glLoadMatrixf__Ljava_nio_FloatBuffer_2
194927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jobject m_buf) {
19505b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi    jfloatArray _array = (jfloatArray) 0;
195117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
195227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
195327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfloat *m = (GLfloat *) 0;
195427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
19555b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi    m = (GLfloat *)getPointer(_env, m_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
195617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (m == NULL) {
19575b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi        char * _mBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0);
195817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        m = (GLfloat *) (_mBase + _bufferOffset);
195917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
196027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glLoadMatrixf(
196127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfloat *)m
196227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
196327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_array) {
19645b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi        _env->ReleaseFloatArrayElements(_array, (jfloat*)m, JNI_ABORT);
196527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
196627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
196727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
196827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glLoadMatrixx ( const GLfixed *m ) */
196927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
197027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glLoadMatrixx___3II
197127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jintArray m_ref, jint offset) {
19722545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
19732ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
19742ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
197527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfixed *m_base = (GLfixed *) 0;
197627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
197727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfixed *m = (GLfixed *) 0;
197827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
197927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (!m_ref) {
19802545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
19812545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
19822545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "m == null";
198327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
198427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
198527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (offset < 0) {
19862545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
19872545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
19882545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
198927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
199027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
199127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    _remaining = _env->GetArrayLength(m_ref) - offset;
199227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    m_base = (GLfixed *)
19935b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi        _env->GetIntArrayElements(m_ref, (jboolean *)0);
199427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    m = m_base + offset;
199527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
199627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glLoadMatrixx(
199727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfixed *)m
199827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
199927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
200027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
200127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (m_base) {
20025b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi        _env->ReleaseIntArrayElements(m_ref, (jint*)m_base,
200327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            JNI_ABORT);
200427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
20052545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
20062545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
20072545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
200827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
200927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
201027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glLoadMatrixx ( const GLfixed *m ) */
201127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
201227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glLoadMatrixx__Ljava_nio_IntBuffer_2
201327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jobject m_buf) {
20145b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi    jintArray _array = (jintArray) 0;
201517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
201627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
201727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfixed *m = (GLfixed *) 0;
201827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
20195b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi    m = (GLfixed *)getPointer(_env, m_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
202017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (m == NULL) {
20215b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi        char * _mBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0);
202217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        m = (GLfixed *) (_mBase + _bufferOffset);
202317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
202427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glLoadMatrixx(
202527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfixed *)m
202627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
202727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_array) {
20285b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi        _env->ReleaseIntArrayElements(_array, (jint*)m, JNI_ABORT);
202927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
203027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
203127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
203227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glLogicOp ( GLenum opcode ) */
203327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
203427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glLogicOp__I
203527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint opcode) {
203627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glLogicOp(
203727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)opcode
203827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
203927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
204027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
204127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glMaterialf ( GLenum face, GLenum pname, GLfloat param ) */
204227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
204327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glMaterialf__IIF
204427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint face, jint pname, jfloat param) {
204527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glMaterialf(
204627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)face,
204727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
204827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfloat)param
204927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
205027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
205127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
205227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glMaterialfv ( GLenum face, GLenum pname, const GLfloat *params ) */
205327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
205427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glMaterialfv__II_3FI
205527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint face, jint pname, jfloatArray params_ref, jint offset) {
20562545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
20572ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
20582ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
205927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfloat *params_base = (GLfloat *) 0;
206027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
206127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfloat *params = (GLfloat *) 0;
206227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
206327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (!params_ref) {
20642545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
20652545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
20662545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "params == null";
206727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
206827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
206927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (offset < 0) {
20702545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
20712545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
20722545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
207327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
207427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
207527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    _remaining = _env->GetArrayLength(params_ref) - offset;
207627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    int _needed;
207727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    switch (pname) {
207827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_AMBIENT)
207927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_AMBIENT:
208027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_AMBIENT)
208127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_DIFFUSE)
208227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_DIFFUSE:
208327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_DIFFUSE)
208427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_SPECULAR)
208527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_SPECULAR:
208627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_SPECULAR)
208727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_EMISSION)
208827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_EMISSION:
208927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_EMISSION)
209027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_AMBIENT_AND_DIFFUSE)
209127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_AMBIENT_AND_DIFFUSE:
209227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_AMBIENT_AND_DIFFUSE)
209327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _needed = 4;
209427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
209527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        default:
20962ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            _needed = 1;
209727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
209827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
209927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < _needed) {
21002545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
21012545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
21022545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "length - offset < needed";
210327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
210427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
210527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    params_base = (GLfloat *)
21065b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi        _env->GetFloatArrayElements(params_ref, (jboolean *)0);
210727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    params = params_base + offset;
210827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
210927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glMaterialfv(
211027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)face,
211127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
211227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfloat *)params
211327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
211427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
211527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
211627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (params_base) {
21175b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi        _env->ReleaseFloatArrayElements(params_ref, (jfloat*)params_base,
211827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            JNI_ABORT);
211927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
21202545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
21212545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
21222545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
212327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
212427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
212527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glMaterialfv ( GLenum face, GLenum pname, const GLfloat *params ) */
212627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
212727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glMaterialfv__IILjava_nio_FloatBuffer_2
212827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint face, jint pname, jobject params_buf) {
21292545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
21302ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
21312ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
21325b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi    jfloatArray _array = (jfloatArray) 0;
213317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
213427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
213527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfloat *params = (GLfloat *) 0;
213627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
21375b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi    params = (GLfloat *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
213827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    int _needed;
213927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    switch (pname) {
214027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_AMBIENT)
214127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_AMBIENT:
214227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_AMBIENT)
214327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_DIFFUSE)
214427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_DIFFUSE:
214527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_DIFFUSE)
214627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_SPECULAR)
214727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_SPECULAR:
214827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_SPECULAR)
214927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_EMISSION)
215027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_EMISSION:
215127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_EMISSION)
215227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_AMBIENT_AND_DIFFUSE)
215327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_AMBIENT_AND_DIFFUSE:
215427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_AMBIENT_AND_DIFFUSE)
215527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _needed = 4;
215627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
215727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        default:
21582ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            _needed = 1;
215927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
216027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
216127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < _needed) {
21622545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
21632545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
21642545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "remaining() < needed";
216527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
216627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
216717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (params == NULL) {
21685b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi        char * _paramsBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0);
216917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        params = (GLfloat *) (_paramsBase + _bufferOffset);
217017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
217127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glMaterialfv(
217227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)face,
217327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
217427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfloat *)params
217527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
217627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
217727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
217827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_array) {
21795b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi        _env->ReleaseFloatArrayElements(_array, (jfloat*)params, JNI_ABORT);
218027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
21812545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
21822545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
21832545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
218427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
218527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
218627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glMaterialx ( GLenum face, GLenum pname, GLfixed param ) */
218727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
218827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glMaterialx__III
218927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint face, jint pname, jint param) {
219027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glMaterialx(
219127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)face,
219227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
219327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfixed)param
219427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
219527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
219627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
219727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glMaterialxv ( GLenum face, GLenum pname, const GLfixed *params ) */
219827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
219927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glMaterialxv__II_3II
220027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint face, jint pname, jintArray params_ref, jint offset) {
22012545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
22022ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
22032ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
220427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfixed *params_base = (GLfixed *) 0;
220527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
220627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfixed *params = (GLfixed *) 0;
220727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
220827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (!params_ref) {
22092545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
22102545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
22112545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "params == null";
221227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
221327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
221427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (offset < 0) {
22152545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
22162545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
22172545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
221827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
221927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
222027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    _remaining = _env->GetArrayLength(params_ref) - offset;
222127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    int _needed;
222227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    switch (pname) {
222327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_AMBIENT)
222427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_AMBIENT:
222527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_AMBIENT)
222627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_DIFFUSE)
222727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_DIFFUSE:
222827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_DIFFUSE)
222927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_SPECULAR)
223027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_SPECULAR:
223127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_SPECULAR)
223227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_EMISSION)
223327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_EMISSION:
223427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_EMISSION)
223527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_AMBIENT_AND_DIFFUSE)
223627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_AMBIENT_AND_DIFFUSE:
223727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_AMBIENT_AND_DIFFUSE)
223827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _needed = 4;
223927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
224027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        default:
22412ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            _needed = 1;
224227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
224327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
224427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < _needed) {
22452545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
22462545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
22472545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "length - offset < needed";
224827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
224927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
225027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    params_base = (GLfixed *)
22515b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi        _env->GetIntArrayElements(params_ref, (jboolean *)0);
225227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    params = params_base + offset;
225327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
225427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glMaterialxv(
225527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)face,
225627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
225727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfixed *)params
225827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
225927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
226027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
226127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (params_base) {
22625b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi        _env->ReleaseIntArrayElements(params_ref, (jint*)params_base,
226327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            JNI_ABORT);
226427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
22652545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
22662545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
22672545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
226827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
226927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
227027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glMaterialxv ( GLenum face, GLenum pname, const GLfixed *params ) */
227127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
227227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glMaterialxv__IILjava_nio_IntBuffer_2
227327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint face, jint pname, jobject params_buf) {
22742545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
22752ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
22762ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
22775b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi    jintArray _array = (jintArray) 0;
227817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
227927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
228027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfixed *params = (GLfixed *) 0;
228127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
22825b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi    params = (GLfixed *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
228327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    int _needed;
228427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    switch (pname) {
228527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_AMBIENT)
228627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_AMBIENT:
228727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_AMBIENT)
228827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_DIFFUSE)
228927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_DIFFUSE:
229027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_DIFFUSE)
229127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_SPECULAR)
229227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_SPECULAR:
229327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_SPECULAR)
229427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_EMISSION)
229527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_EMISSION:
229627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_EMISSION)
229727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_AMBIENT_AND_DIFFUSE)
229827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_AMBIENT_AND_DIFFUSE:
229927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_AMBIENT_AND_DIFFUSE)
230027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _needed = 4;
230127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
230227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        default:
23032ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            _needed = 1;
230427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
230527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
230627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < _needed) {
23072545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
23082545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
23092545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "remaining() < needed";
231027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
231127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
231217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (params == NULL) {
23135b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi        char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0);
231417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        params = (GLfixed *) (_paramsBase + _bufferOffset);
231517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
231627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glMaterialxv(
231727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)face,
231827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
231927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfixed *)params
232027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
232127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
232227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
232327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_array) {
23245b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi        _env->ReleaseIntArrayElements(_array, (jint*)params, JNI_ABORT);
232527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
23262545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
23272545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
23282545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
232927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
233027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
233127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glMatrixMode ( GLenum mode ) */
233227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
233327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glMatrixMode__I
233427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint mode) {
233527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glMatrixMode(
233627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)mode
233727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
233827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
233927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
234027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glMultMatrixf ( const GLfloat *m ) */
234127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
234227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glMultMatrixf___3FI
234327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jfloatArray m_ref, jint offset) {
23442545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
23452ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
23462ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
234727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfloat *m_base = (GLfloat *) 0;
234827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
234927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfloat *m = (GLfloat *) 0;
235027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
235127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (!m_ref) {
23522545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
23532545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
23542545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "m == null";
235527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
235627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
235727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (offset < 0) {
23582545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
23592545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
23602545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
236127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
236227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
236327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    _remaining = _env->GetArrayLength(m_ref) - offset;
236427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    m_base = (GLfloat *)
23655b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi        _env->GetFloatArrayElements(m_ref, (jboolean *)0);
236627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    m = m_base + offset;
236727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
236827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glMultMatrixf(
236927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfloat *)m
237027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
237127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
237227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
237327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (m_base) {
23745b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi        _env->ReleaseFloatArrayElements(m_ref, (jfloat*)m_base,
237527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            JNI_ABORT);
237627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
23772545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
23782545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
23792545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
238027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
238127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
238227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glMultMatrixf ( const GLfloat *m ) */
238327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
238427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glMultMatrixf__Ljava_nio_FloatBuffer_2
238527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jobject m_buf) {
23865b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi    jfloatArray _array = (jfloatArray) 0;
238717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
238827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
238927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfloat *m = (GLfloat *) 0;
239027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
23915b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi    m = (GLfloat *)getPointer(_env, m_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
239217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (m == NULL) {
23935b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi        char * _mBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0);
239417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        m = (GLfloat *) (_mBase + _bufferOffset);
239517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
239627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glMultMatrixf(
239727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfloat *)m
239827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
239927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_array) {
24005b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi        _env->ReleaseFloatArrayElements(_array, (jfloat*)m, JNI_ABORT);
240127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
240227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
240327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
240427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glMultMatrixx ( const GLfixed *m ) */
240527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
240627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glMultMatrixx___3II
240727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jintArray m_ref, jint offset) {
24082545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
24092ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
24102ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
241127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfixed *m_base = (GLfixed *) 0;
241227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
241327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfixed *m = (GLfixed *) 0;
241427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
241527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (!m_ref) {
24162545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
24172545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
24182545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "m == null";
241927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
242027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
242127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (offset < 0) {
24222545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
24232545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
24242545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
242527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
242627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
242727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    _remaining = _env->GetArrayLength(m_ref) - offset;
242827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    m_base = (GLfixed *)
24295b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi        _env->GetIntArrayElements(m_ref, (jboolean *)0);
243027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    m = m_base + offset;
243127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
243227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glMultMatrixx(
243327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfixed *)m
243427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
243527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
243627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
243727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (m_base) {
24385b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi        _env->ReleaseIntArrayElements(m_ref, (jint*)m_base,
243927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            JNI_ABORT);
244027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
24412545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
24422545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
24432545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
244427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
244527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
244627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glMultMatrixx ( const GLfixed *m ) */
244727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
244827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glMultMatrixx__Ljava_nio_IntBuffer_2
244927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jobject m_buf) {
24505b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi    jintArray _array = (jintArray) 0;
245117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
245227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
245327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfixed *m = (GLfixed *) 0;
245427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
24555b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi    m = (GLfixed *)getPointer(_env, m_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
245617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (m == NULL) {
24575b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi        char * _mBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0);
245817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        m = (GLfixed *) (_mBase + _bufferOffset);
245917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
246027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glMultMatrixx(
246127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfixed *)m
246227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
246327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_array) {
24645b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi        _env->ReleaseIntArrayElements(_array, (jint*)m, JNI_ABORT);
246527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
246627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
246727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
246827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glMultiTexCoord4f ( GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q ) */
246927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
247027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glMultiTexCoord4f__IFFFF
247127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jfloat s, jfloat t, jfloat r, jfloat q) {
247227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glMultiTexCoord4f(
247327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)target,
247427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfloat)s,
247527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfloat)t,
247627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfloat)r,
247727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfloat)q
247827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
247927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
248027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
248127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glMultiTexCoord4x ( GLenum target, GLfixed s, GLfixed t, GLfixed r, GLfixed q ) */
248227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
248327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glMultiTexCoord4x__IIIII
248427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint s, jint t, jint r, jint q) {
248527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glMultiTexCoord4x(
248627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)target,
248727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfixed)s,
248827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfixed)t,
248927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfixed)r,
249027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfixed)q
249127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
249227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
249327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
249427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glNormal3f ( GLfloat nx, GLfloat ny, GLfloat nz ) */
249527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
249627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glNormal3f__FFF
249727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jfloat nx, jfloat ny, jfloat nz) {
249827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glNormal3f(
249927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfloat)nx,
250027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfloat)ny,
250127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfloat)nz
250227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
250327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
250427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
250527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glNormal3x ( GLfixed nx, GLfixed ny, GLfixed nz ) */
250627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
250727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glNormal3x__III
250827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint nx, jint ny, jint nz) {
250927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glNormal3x(
251027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfixed)nx,
251127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfixed)ny,
251227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfixed)nz
251327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
251427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
251527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
251627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glNormalPointer ( GLenum type, GLsizei stride, const GLvoid *pointer ) */
251727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
251827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glNormalPointerBounds__IILjava_nio_Buffer_2I
251927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint type, jint stride, jobject pointer_buf, jint remaining) {
252027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jarray _array = (jarray) 0;
252117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
252227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
252327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLvoid *pointer = (GLvoid *) 0;
252427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
2525e20ea783a12f1031482c3aa01938efe39dcbf0a2Jack Palevich    if (pointer_buf) {
252616e7972f0d986eebf846ea8feb50f4435a9c6970Jack Palevich        pointer = (GLvoid *) getDirectBufferPointer(_env, pointer_buf);
2527e20ea783a12f1031482c3aa01938efe39dcbf0a2Jack Palevich        if ( ! pointer ) {
2528e20ea783a12f1031482c3aa01938efe39dcbf0a2Jack Palevich            return;
2529e20ea783a12f1031482c3aa01938efe39dcbf0a2Jack Palevich        }
2530e20ea783a12f1031482c3aa01938efe39dcbf0a2Jack Palevich    }
253127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glNormalPointerBounds(
253227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)type,
253327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLsizei)stride,
253427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLvoid *)pointer,
253527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLsizei)remaining
253627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
253727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
253827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
253927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glOrthof ( GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar ) */
254027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
254127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glOrthof__FFFFFF
254227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jfloat left, jfloat right, jfloat bottom, jfloat top, jfloat zNear, jfloat zFar) {
254327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glOrthof(
254427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfloat)left,
254527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfloat)right,
254627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfloat)bottom,
254727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfloat)top,
254827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfloat)zNear,
254927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfloat)zFar
255027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
255127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
255227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
255327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glOrthox ( GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar ) */
255427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
255527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glOrthox__IIIIII
255627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint left, jint right, jint bottom, jint top, jint zNear, jint zFar) {
255727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glOrthox(
255827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfixed)left,
255927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfixed)right,
256027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfixed)bottom,
256127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfixed)top,
256227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfixed)zNear,
256327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfixed)zFar
256427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
256527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
256627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
256727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glPixelStorei ( GLenum pname, GLint param ) */
256827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
256927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glPixelStorei__II
257027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint pname, jint param) {
257127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glPixelStorei(
257227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
257327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLint)param
257427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
257527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
257627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
257727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glPointSize ( GLfloat size ) */
257827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
257927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glPointSize__F
258027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jfloat size) {
258127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glPointSize(
258227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfloat)size
258327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
258427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
258527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
258627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glPointSizex ( GLfixed size ) */
258727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
258827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glPointSizex__I
258927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint size) {
259027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glPointSizex(
259127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfixed)size
259227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
259327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
259427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
259527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glPolygonOffset ( GLfloat factor, GLfloat units ) */
259627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
259727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glPolygonOffset__FF
259827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jfloat factor, jfloat units) {
259927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glPolygonOffset(
260027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfloat)factor,
260127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfloat)units
260227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
260327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
260427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
260527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glPolygonOffsetx ( GLfixed factor, GLfixed units ) */
260627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
260727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glPolygonOffsetx__II
260827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint factor, jint units) {
260927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glPolygonOffsetx(
261027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfixed)factor,
261127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfixed)units
261227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
261327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
261427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
261527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glPopMatrix ( void ) */
261627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
261727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glPopMatrix__
261827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this) {
261927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glPopMatrix();
262027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
262127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
262227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glPushMatrix ( void ) */
262327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
262427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glPushMatrix__
262527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this) {
262627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glPushMatrix();
262727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
262827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
262927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glReadPixels ( GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels ) */
263027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
263127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glReadPixels__IIIIIILjava_nio_Buffer_2
263227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint x, jint y, jint width, jint height, jint format, jint type, jobject pixels_buf) {
263327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jarray _array = (jarray) 0;
263417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
263527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
263627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLvoid *pixels = (GLvoid *) 0;
263727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
26385b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi    pixels = (GLvoid *)getPointer(_env, pixels_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
263917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (pixels == NULL) {
264017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _pixelsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
264117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        pixels = (GLvoid *) (_pixelsBase + _bufferOffset);
264217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
264327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glReadPixels(
264427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLint)x,
264527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLint)y,
264627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLsizei)width,
264727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLsizei)height,
264827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)format,
264927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)type,
265027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLvoid *)pixels
265127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
265227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_array) {
26532545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        releasePointer(_env, _array, pixels, JNI_TRUE);
265427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
265527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
265627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
265727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glRotatef ( GLfloat angle, GLfloat x, GLfloat y, GLfloat z ) */
265827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
265927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glRotatef__FFFF
266027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jfloat angle, jfloat x, jfloat y, jfloat z) {
266127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glRotatef(
266227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfloat)angle,
266327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfloat)x,
266427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfloat)y,
266527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfloat)z
266627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
266727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
266827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
266927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glRotatex ( GLfixed angle, GLfixed x, GLfixed y, GLfixed z ) */
267027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
267127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glRotatex__IIII
267227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint angle, jint x, jint y, jint z) {
267327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glRotatex(
267427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfixed)angle,
267527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfixed)x,
267627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfixed)y,
267727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfixed)z
267827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
267927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
268027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
268127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glSampleCoverage ( GLclampf value, GLboolean invert ) */
268227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
268327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glSampleCoverage__FZ
268427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jfloat value, jboolean invert) {
268527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glSampleCoverage(
268627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLclampf)value,
268727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLboolean)invert
268827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
268927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
269027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
269127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glSampleCoveragex ( GLclampx value, GLboolean invert ) */
269227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
269327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glSampleCoveragex__IZ
269427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint value, jboolean invert) {
269527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glSampleCoveragex(
269627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLclampx)value,
269727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLboolean)invert
269827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
269927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
270027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
270127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glScalef ( GLfloat x, GLfloat y, GLfloat z ) */
270227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
270327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glScalef__FFF
270427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jfloat x, jfloat y, jfloat z) {
270527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glScalef(
270627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfloat)x,
270727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfloat)y,
270827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfloat)z
270927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
271027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
271127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
271227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glScalex ( GLfixed x, GLfixed y, GLfixed z ) */
271327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
271427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glScalex__III
271527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint x, jint y, jint z) {
271627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glScalex(
271727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfixed)x,
271827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfixed)y,
271927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfixed)z
272027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
272127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
272227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
272327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glScissor ( GLint x, GLint y, GLsizei width, GLsizei height ) */
272427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
272527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glScissor__IIII
272627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint x, jint y, jint width, jint height) {
272727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glScissor(
272827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLint)x,
272927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLint)y,
273027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLsizei)width,
273127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLsizei)height
273227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
273327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
273427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
273527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glShadeModel ( GLenum mode ) */
273627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
273727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glShadeModel__I
273827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint mode) {
273927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glShadeModel(
274027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)mode
274127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
274227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
274327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
274427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glStencilFunc ( GLenum func, GLint ref, GLuint mask ) */
274527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
274627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glStencilFunc__III
274727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint func, jint ref, jint mask) {
274827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glStencilFunc(
274927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)func,
275027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLint)ref,
275127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLuint)mask
275227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
275327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
275427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
275527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glStencilMask ( GLuint mask ) */
275627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
275727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glStencilMask__I
275827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint mask) {
275927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glStencilMask(
276027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLuint)mask
276127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
276227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
276327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
276427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glStencilOp ( GLenum fail, GLenum zfail, GLenum zpass ) */
276527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
276627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glStencilOp__III
276727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint fail, jint zfail, jint zpass) {
276827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glStencilOp(
276927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)fail,
277027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)zfail,
277127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)zpass
277227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
277327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
277427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
277527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glTexCoordPointer ( GLint size, GLenum type, GLsizei stride, const GLvoid *pointer ) */
277627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
277727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glTexCoordPointerBounds__IIILjava_nio_Buffer_2I
277827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint size, jint type, jint stride, jobject pointer_buf, jint remaining) {
277927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jarray _array = (jarray) 0;
278017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
278127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
278227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLvoid *pointer = (GLvoid *) 0;
278327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
2784e20ea783a12f1031482c3aa01938efe39dcbf0a2Jack Palevich    if (pointer_buf) {
278516e7972f0d986eebf846ea8feb50f4435a9c6970Jack Palevich        pointer = (GLvoid *) getDirectBufferPointer(_env, pointer_buf);
2786e20ea783a12f1031482c3aa01938efe39dcbf0a2Jack Palevich        if ( ! pointer ) {
2787e20ea783a12f1031482c3aa01938efe39dcbf0a2Jack Palevich            return;
2788e20ea783a12f1031482c3aa01938efe39dcbf0a2Jack Palevich        }
2789e20ea783a12f1031482c3aa01938efe39dcbf0a2Jack Palevich    }
279027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glTexCoordPointerBounds(
279127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLint)size,
279227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)type,
279327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLsizei)stride,
279427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLvoid *)pointer,
279527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLsizei)remaining
279627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
279727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
279827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
279927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glTexEnvf ( GLenum target, GLenum pname, GLfloat param ) */
280027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
280127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glTexEnvf__IIF
280227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint pname, jfloat param) {
280327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glTexEnvf(
280427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)target,
280527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
280627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfloat)param
280727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
280827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
280927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
281027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glTexEnvfv ( GLenum target, GLenum pname, const GLfloat *params ) */
281127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
281227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glTexEnvfv__II_3FI
281327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint pname, jfloatArray params_ref, jint offset) {
28142545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
28152ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
28162ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
281727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfloat *params_base = (GLfloat *) 0;
281827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
281927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfloat *params = (GLfloat *) 0;
282027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
282127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (!params_ref) {
28222545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
28232545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
28242545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "params == null";
282527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
282627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
282727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (offset < 0) {
28282545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
28292545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
28302545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
283127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
283227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
283327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    _remaining = _env->GetArrayLength(params_ref) - offset;
283427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    int _needed;
283527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    switch (pname) {
283627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_TEXTURE_ENV_COLOR)
283727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_TEXTURE_ENV_COLOR:
283827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_TEXTURE_ENV_COLOR)
283927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _needed = 4;
284027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
284127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        default:
28422ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            _needed = 1;
284327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
284427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
284527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < _needed) {
28462545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
28472545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
28482545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "length - offset < needed";
284927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
285027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
285127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    params_base = (GLfloat *)
28525b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi        _env->GetFloatArrayElements(params_ref, (jboolean *)0);
285327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    params = params_base + offset;
285427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
285527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glTexEnvfv(
285627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)target,
285727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
285827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfloat *)params
285927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
286027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
286127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
286227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (params_base) {
28635b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi        _env->ReleaseFloatArrayElements(params_ref, (jfloat*)params_base,
286427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            JNI_ABORT);
286527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
28662545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
28672545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
28682545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
286927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
287027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
287127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glTexEnvfv ( GLenum target, GLenum pname, const GLfloat *params ) */
287227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
287327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glTexEnvfv__IILjava_nio_FloatBuffer_2
287427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) {
28752545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
28762ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
28772ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
28785b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi    jfloatArray _array = (jfloatArray) 0;
287917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
288027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
288127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfloat *params = (GLfloat *) 0;
288227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
28835b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi    params = (GLfloat *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
288427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    int _needed;
288527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    switch (pname) {
288627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_TEXTURE_ENV_COLOR)
288727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_TEXTURE_ENV_COLOR:
288827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_TEXTURE_ENV_COLOR)
288927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _needed = 4;
289027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
289127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        default:
28922ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            _needed = 1;
289327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
289427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
289527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < _needed) {
28962545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
28972545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
28982545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "remaining() < needed";
289927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
290027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
290117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (params == NULL) {
29025b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi        char * _paramsBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0);
290317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        params = (GLfloat *) (_paramsBase + _bufferOffset);
290417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
290527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glTexEnvfv(
290627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)target,
290727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
290827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfloat *)params
290927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
291027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
291127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
291227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_array) {
29135b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi        _env->ReleaseFloatArrayElements(_array, (jfloat*)params, JNI_ABORT);
291427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
29152545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
29162545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
29172545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
291827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
291927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
292027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glTexEnvx ( GLenum target, GLenum pname, GLfixed param ) */
292127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
292227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glTexEnvx__III
292327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint pname, jint param) {
292427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glTexEnvx(
292527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)target,
292627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
292727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfixed)param
292827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
292927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
293027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
293127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glTexEnvxv ( GLenum target, GLenum pname, const GLfixed *params ) */
293227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
293327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glTexEnvxv__II_3II
293427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint pname, jintArray params_ref, jint offset) {
29352545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
29362ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
29372ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
293827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfixed *params_base = (GLfixed *) 0;
293927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
294027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfixed *params = (GLfixed *) 0;
294127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
294227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (!params_ref) {
29432545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
29442545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
29452545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "params == null";
294627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
294727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
294827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (offset < 0) {
29492545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
29502545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
29512545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
295227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
295327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
295427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    _remaining = _env->GetArrayLength(params_ref) - offset;
295527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    int _needed;
295627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    switch (pname) {
295727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_TEXTURE_ENV_COLOR)
295827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_TEXTURE_ENV_COLOR:
295927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_TEXTURE_ENV_COLOR)
296027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _needed = 4;
296127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
296227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        default:
29632ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            _needed = 1;
296427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
296527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
296627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < _needed) {
29672545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
29682545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
29692545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "length - offset < needed";
297027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
297127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
297227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    params_base = (GLfixed *)
29735b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi        _env->GetIntArrayElements(params_ref, (jboolean *)0);
297427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    params = params_base + offset;
297527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
297627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glTexEnvxv(
297727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)target,
297827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
297927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfixed *)params
298027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
298127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
298227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
298327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (params_base) {
29845b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi        _env->ReleaseIntArrayElements(params_ref, (jint*)params_base,
298527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            JNI_ABORT);
298627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
29872545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
29882545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
29892545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
299027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
299127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
299227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glTexEnvxv ( GLenum target, GLenum pname, const GLfixed *params ) */
299327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
299427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glTexEnvxv__IILjava_nio_IntBuffer_2
299527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) {
29962545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
29972ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionType = NULL;
29982ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian    const char * _exceptionMessage = NULL;
29995b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi    jintArray _array = (jintArray) 0;
300017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
300127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
300227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfixed *params = (GLfixed *) 0;
300327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
30045b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi    params = (GLfixed *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
300527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    int _needed;
300627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    switch (pname) {
300727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_TEXTURE_ENV_COLOR)
300827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_TEXTURE_ENV_COLOR:
300927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_TEXTURE_ENV_COLOR)
301027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _needed = 4;
301127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
301227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        default:
30132ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian            _needed = 1;
301427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
301527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
301627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < _needed) {
30172545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
30182545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
30192545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "remaining() < needed";
302027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
302127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
302217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (params == NULL) {
30235b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi        char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0);
302417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        params = (GLfixed *) (_paramsBase + _bufferOffset);
302517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
302627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glTexEnvxv(
302727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)target,
302827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
302927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfixed *)params
303027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
303127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
303227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
303327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_array) {
30345b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi        _env->ReleaseIntArrayElements(_array, (jint*)params, JNI_ABORT);
303527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
30362545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
30372545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
30382545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
303927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
304027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
304127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glTexImage2D ( GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels ) */
304227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
304327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glTexImage2D__IIIIIIIILjava_nio_Buffer_2
304427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint level, jint internalformat, jint width, jint height, jint border, jint format, jint type, jobject pixels_buf) {
304527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jarray _array = (jarray) 0;
304617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
304727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
304827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLvoid *pixels = (GLvoid *) 0;
304927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
305027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (pixels_buf) {
30515b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi        pixels = (GLvoid *)getPointer(_env, pixels_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
305217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
305337c9b49ab5eb5a676370fd7081db0967c38e97a6Thomas Tafertshofer    if (pixels_buf && pixels == NULL) {
305417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _pixelsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
305517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        pixels = (GLvoid *) (_pixelsBase + _bufferOffset);
305627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
305727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glTexImage2D(
305827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)target,
305927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLint)level,
306027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLint)internalformat,
306127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLsizei)width,
306227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLsizei)height,
306327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLint)border,
306427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)format,
306527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)type,
306627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLvoid *)pixels
306727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
306827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_array) {
306927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        releasePointer(_env, _array, pixels, JNI_FALSE);
307027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
307127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
307227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
307327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glTexParameterf ( GLenum target, GLenum pname, GLfloat param ) */
307427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
307527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glTexParameterf__IIF
307627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint pname, jfloat param) {
307727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glTexParameterf(
307827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)target,
307927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
308027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfloat)param
308127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
308227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
308327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
308427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glTexParameterx ( GLenum target, GLenum pname, GLfixed param ) */
308527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
308627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glTexParameterx__III
308727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint pname, jint param) {
308827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glTexParameterx(
308927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)target,
309027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
309127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfixed)param
309227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
309327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
309427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
309527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glTexSubImage2D ( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels ) */
309627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
309727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glTexSubImage2D__IIIIIIIILjava_nio_Buffer_2
309827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint level, jint xoffset, jint yoffset, jint width, jint height, jint format, jint type, jobject pixels_buf) {
309927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jarray _array = (jarray) 0;
310017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
310127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
310227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLvoid *pixels = (GLvoid *) 0;
310327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
310427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (pixels_buf) {
31055b406cb7b548443b589f0acb235c8a7465ffb82bHiroshi Yamauchi        pixels = (GLvoid *)getPointer(_env, pixels_buf, (jarray*)&_array, &_remaining, &_bufferOffset);
310617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
310737c9b49ab5eb5a676370fd7081db0967c38e97a6Thomas Tafertshofer    if (pixels_buf && pixels == NULL) {
310817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _pixelsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
310917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        pixels = (GLvoid *) (_pixelsBase + _bufferOffset);
311027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
311127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glTexSubImage2D(
311227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)target,
311327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLint)level,
311427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLint)xoffset,
311527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLint)yoffset,
311627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLsizei)width,
311727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLsizei)height,
311827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)format,
311927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)type,
312027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLvoid *)pixels
312127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
312227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_array) {
312327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        releasePointer(_env, _array, pixels, JNI_FALSE);
312427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
312527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
312627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
312727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glTranslatef ( GLfloat x, GLfloat y, GLfloat z ) */
312827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
312927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glTranslatef__FFF
313027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jfloat x, jfloat y, jfloat z) {
313127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glTranslatef(
313227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfloat)x,
313327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfloat)y,
313427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfloat)z
313527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
313627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
313727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
313827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glTranslatex ( GLfixed x, GLfixed y, GLfixed z ) */
313927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
314027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glTranslatex__III
314127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint x, jint y, jint z) {
314227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glTranslatex(
314327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfixed)x,
314427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfixed)y,
314527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfixed)z
314627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
314727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
314827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
314927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glVertexPointer ( GLint size, GLenum type, GLsizei stride, const GLvoid *pointer ) */
315027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
315127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glVertexPointerBounds__IIILjava_nio_Buffer_2I
315227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint size, jint type, jint stride, jobject pointer_buf, jint remaining) {
315327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jarray _array = (jarray) 0;
315417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
315527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
315627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLvoid *pointer = (GLvoid *) 0;
315727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
3158e20ea783a12f1031482c3aa01938efe39dcbf0a2Jack Palevich    if (pointer_buf) {
315916e7972f0d986eebf846ea8feb50f4435a9c6970Jack Palevich        pointer = (GLvoid *) getDirectBufferPointer(_env, pointer_buf);
3160e20ea783a12f1031482c3aa01938efe39dcbf0a2Jack Palevich        if ( ! pointer ) {
3161e20ea783a12f1031482c3aa01938efe39dcbf0a2Jack Palevich            return;
3162e20ea783a12f1031482c3aa01938efe39dcbf0a2Jack Palevich        }
3163e20ea783a12f1031482c3aa01938efe39dcbf0a2Jack Palevich    }
316427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glVertexPointerBounds(
316527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLint)size,
316627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)type,
316727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLsizei)stride,
316827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLvoid *)pointer,
316927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLsizei)remaining
317027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
317127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
317227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
317327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glViewport ( GLint x, GLint y, GLsizei width, GLsizei height ) */
317427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
317527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glViewport__IIII
317627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint x, jint y, jint width, jint height) {
317727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glViewport(
317827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLint)x,
317927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLint)y,
318027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLsizei)width,
318127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLsizei)height
318227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
318327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
318427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
318527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic const char *classPathName = "android/opengl/GLES10";
318627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
318727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic JNINativeMethod methods[] = {
318827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"_nativeClassInit", "()V", (void*)nativeClassInit },
318927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glActiveTexture", "(I)V", (void *) android_glActiveTexture__I },
319027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glAlphaFunc", "(IF)V", (void *) android_glAlphaFunc__IF },
319127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glAlphaFuncx", "(II)V", (void *) android_glAlphaFuncx__II },
319227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glBindTexture", "(II)V", (void *) android_glBindTexture__II },
319327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glBlendFunc", "(II)V", (void *) android_glBlendFunc__II },
319427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glClear", "(I)V", (void *) android_glClear__I },
319527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glClearColor", "(FFFF)V", (void *) android_glClearColor__FFFF },
319627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glClearColorx", "(IIII)V", (void *) android_glClearColorx__IIII },
319727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glClearDepthf", "(F)V", (void *) android_glClearDepthf__F },
319827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glClearDepthx", "(I)V", (void *) android_glClearDepthx__I },
319927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glClearStencil", "(I)V", (void *) android_glClearStencil__I },
320027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glClientActiveTexture", "(I)V", (void *) android_glClientActiveTexture__I },
320127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glColor4f", "(FFFF)V", (void *) android_glColor4f__FFFF },
320227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glColor4x", "(IIII)V", (void *) android_glColor4x__IIII },
320327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glColorMask", "(ZZZZ)V", (void *) android_glColorMask__ZZZZ },
320427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glColorPointerBounds", "(IIILjava/nio/Buffer;I)V", (void *) android_glColorPointerBounds__IIILjava_nio_Buffer_2I },
320527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glCompressedTexImage2D", "(IIIIIIILjava/nio/Buffer;)V", (void *) android_glCompressedTexImage2D__IIIIIIILjava_nio_Buffer_2 },
320627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glCompressedTexSubImage2D", "(IIIIIIIILjava/nio/Buffer;)V", (void *) android_glCompressedTexSubImage2D__IIIIIIIILjava_nio_Buffer_2 },
320727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glCopyTexImage2D", "(IIIIIIII)V", (void *) android_glCopyTexImage2D__IIIIIIII },
320827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glCopyTexSubImage2D", "(IIIIIIII)V", (void *) android_glCopyTexSubImage2D__IIIIIIII },
320927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glCullFace", "(I)V", (void *) android_glCullFace__I },
321027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glDeleteTextures", "(I[II)V", (void *) android_glDeleteTextures__I_3II },
321127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glDeleteTextures", "(ILjava/nio/IntBuffer;)V", (void *) android_glDeleteTextures__ILjava_nio_IntBuffer_2 },
321227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glDepthFunc", "(I)V", (void *) android_glDepthFunc__I },
321327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glDepthMask", "(Z)V", (void *) android_glDepthMask__Z },
321427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glDepthRangef", "(FF)V", (void *) android_glDepthRangef__FF },
321527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glDepthRangex", "(II)V", (void *) android_glDepthRangex__II },
321627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glDisable", "(I)V", (void *) android_glDisable__I },
321727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glDisableClientState", "(I)V", (void *) android_glDisableClientState__I },
321827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glDrawArrays", "(III)V", (void *) android_glDrawArrays__III },
321927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glDrawElements", "(IIILjava/nio/Buffer;)V", (void *) android_glDrawElements__IIILjava_nio_Buffer_2 },
322027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glEnable", "(I)V", (void *) android_glEnable__I },
322127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glEnableClientState", "(I)V", (void *) android_glEnableClientState__I },
322227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glFinish", "()V", (void *) android_glFinish__ },
322327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glFlush", "()V", (void *) android_glFlush__ },
322427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glFogf", "(IF)V", (void *) android_glFogf__IF },
322527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glFogfv", "(I[FI)V", (void *) android_glFogfv__I_3FI },
322627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glFogfv", "(ILjava/nio/FloatBuffer;)V", (void *) android_glFogfv__ILjava_nio_FloatBuffer_2 },
322727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glFogx", "(II)V", (void *) android_glFogx__II },
322827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glFogxv", "(I[II)V", (void *) android_glFogxv__I_3II },
322927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glFogxv", "(ILjava/nio/IntBuffer;)V", (void *) android_glFogxv__ILjava_nio_IntBuffer_2 },
323027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glFrontFace", "(I)V", (void *) android_glFrontFace__I },
323127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glFrustumf", "(FFFFFF)V", (void *) android_glFrustumf__FFFFFF },
323227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glFrustumx", "(IIIIII)V", (void *) android_glFrustumx__IIIIII },
323327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGenTextures", "(I[II)V", (void *) android_glGenTextures__I_3II },
323427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGenTextures", "(ILjava/nio/IntBuffer;)V", (void *) android_glGenTextures__ILjava_nio_IntBuffer_2 },
323527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetError", "()I", (void *) android_glGetError__ },
323627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetIntegerv", "(I[II)V", (void *) android_glGetIntegerv__I_3II },
323727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetIntegerv", "(ILjava/nio/IntBuffer;)V", (void *) android_glGetIntegerv__ILjava_nio_IntBuffer_2 },
3238a379585e6e3ff41db6d71a5cd0a0403931bc525dJack Palevich{"glGetString", "(I)Ljava/lang/String;", (void *) android_glGetString },
323927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glHint", "(II)V", (void *) android_glHint__II },
324027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glLightModelf", "(IF)V", (void *) android_glLightModelf__IF },
324127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glLightModelfv", "(I[FI)V", (void *) android_glLightModelfv__I_3FI },
324227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glLightModelfv", "(ILjava/nio/FloatBuffer;)V", (void *) android_glLightModelfv__ILjava_nio_FloatBuffer_2 },
324327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glLightModelx", "(II)V", (void *) android_glLightModelx__II },
324427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glLightModelxv", "(I[II)V", (void *) android_glLightModelxv__I_3II },
324527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glLightModelxv", "(ILjava/nio/IntBuffer;)V", (void *) android_glLightModelxv__ILjava_nio_IntBuffer_2 },
324627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glLightf", "(IIF)V", (void *) android_glLightf__IIF },
324727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glLightfv", "(II[FI)V", (void *) android_glLightfv__II_3FI },
324827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glLightfv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glLightfv__IILjava_nio_FloatBuffer_2 },
324927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glLightx", "(III)V", (void *) android_glLightx__III },
325027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glLightxv", "(II[II)V", (void *) android_glLightxv__II_3II },
325127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glLightxv", "(IILjava/nio/IntBuffer;)V", (void *) android_glLightxv__IILjava_nio_IntBuffer_2 },
325227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glLineWidth", "(F)V", (void *) android_glLineWidth__F },
325327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glLineWidthx", "(I)V", (void *) android_glLineWidthx__I },
325427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glLoadIdentity", "()V", (void *) android_glLoadIdentity__ },
325527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glLoadMatrixf", "([FI)V", (void *) android_glLoadMatrixf___3FI },
325627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glLoadMatrixf", "(Ljava/nio/FloatBuffer;)V", (void *) android_glLoadMatrixf__Ljava_nio_FloatBuffer_2 },
325727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glLoadMatrixx", "([II)V", (void *) android_glLoadMatrixx___3II },
325827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glLoadMatrixx", "(Ljava/nio/IntBuffer;)V", (void *) android_glLoadMatrixx__Ljava_nio_IntBuffer_2 },
325927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glLogicOp", "(I)V", (void *) android_glLogicOp__I },
326027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glMaterialf", "(IIF)V", (void *) android_glMaterialf__IIF },
326127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glMaterialfv", "(II[FI)V", (void *) android_glMaterialfv__II_3FI },
326227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glMaterialfv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glMaterialfv__IILjava_nio_FloatBuffer_2 },
326327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glMaterialx", "(III)V", (void *) android_glMaterialx__III },
326427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glMaterialxv", "(II[II)V", (void *) android_glMaterialxv__II_3II },
326527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glMaterialxv", "(IILjava/nio/IntBuffer;)V", (void *) android_glMaterialxv__IILjava_nio_IntBuffer_2 },
326627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glMatrixMode", "(I)V", (void *) android_glMatrixMode__I },
326727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glMultMatrixf", "([FI)V", (void *) android_glMultMatrixf___3FI },
326827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glMultMatrixf", "(Ljava/nio/FloatBuffer;)V", (void *) android_glMultMatrixf__Ljava_nio_FloatBuffer_2 },
326927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glMultMatrixx", "([II)V", (void *) android_glMultMatrixx___3II },
327027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glMultMatrixx", "(Ljava/nio/IntBuffer;)V", (void *) android_glMultMatrixx__Ljava_nio_IntBuffer_2 },
327127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glMultiTexCoord4f", "(IFFFF)V", (void *) android_glMultiTexCoord4f__IFFFF },
327227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glMultiTexCoord4x", "(IIIII)V", (void *) android_glMultiTexCoord4x__IIIII },
327327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glNormal3f", "(FFF)V", (void *) android_glNormal3f__FFF },
327427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glNormal3x", "(III)V", (void *) android_glNormal3x__III },
327527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glNormalPointerBounds", "(IILjava/nio/Buffer;I)V", (void *) android_glNormalPointerBounds__IILjava_nio_Buffer_2I },
327627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glOrthof", "(FFFFFF)V", (void *) android_glOrthof__FFFFFF },
327727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glOrthox", "(IIIIII)V", (void *) android_glOrthox__IIIIII },
327827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glPixelStorei", "(II)V", (void *) android_glPixelStorei__II },
327927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glPointSize", "(F)V", (void *) android_glPointSize__F },
328027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glPointSizex", "(I)V", (void *) android_glPointSizex__I },
328127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glPolygonOffset", "(FF)V", (void *) android_glPolygonOffset__FF },
328227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glPolygonOffsetx", "(II)V", (void *) android_glPolygonOffsetx__II },
328327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glPopMatrix", "()V", (void *) android_glPopMatrix__ },
328427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glPushMatrix", "()V", (void *) android_glPushMatrix__ },
328527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glReadPixels", "(IIIIIILjava/nio/Buffer;)V", (void *) android_glReadPixels__IIIIIILjava_nio_Buffer_2 },
328627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glRotatef", "(FFFF)V", (void *) android_glRotatef__FFFF },
328727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glRotatex", "(IIII)V", (void *) android_glRotatex__IIII },
328827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glSampleCoverage", "(FZ)V", (void *) android_glSampleCoverage__FZ },
328927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glSampleCoveragex", "(IZ)V", (void *) android_glSampleCoveragex__IZ },
329027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glScalef", "(FFF)V", (void *) android_glScalef__FFF },
329127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glScalex", "(III)V", (void *) android_glScalex__III },
329227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glScissor", "(IIII)V", (void *) android_glScissor__IIII },
329327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glShadeModel", "(I)V", (void *) android_glShadeModel__I },
329427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glStencilFunc", "(III)V", (void *) android_glStencilFunc__III },
329527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glStencilMask", "(I)V", (void *) android_glStencilMask__I },
329627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glStencilOp", "(III)V", (void *) android_glStencilOp__III },
329727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glTexCoordPointerBounds", "(IIILjava/nio/Buffer;I)V", (void *) android_glTexCoordPointerBounds__IIILjava_nio_Buffer_2I },
329827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glTexEnvf", "(IIF)V", (void *) android_glTexEnvf__IIF },
329927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glTexEnvfv", "(II[FI)V", (void *) android_glTexEnvfv__II_3FI },
330027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glTexEnvfv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glTexEnvfv__IILjava_nio_FloatBuffer_2 },
330127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glTexEnvx", "(III)V", (void *) android_glTexEnvx__III },
330227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glTexEnvxv", "(II[II)V", (void *) android_glTexEnvxv__II_3II },
330327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glTexEnvxv", "(IILjava/nio/IntBuffer;)V", (void *) android_glTexEnvxv__IILjava_nio_IntBuffer_2 },
330427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glTexImage2D", "(IIIIIIIILjava/nio/Buffer;)V", (void *) android_glTexImage2D__IIIIIIIILjava_nio_Buffer_2 },
330527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glTexParameterf", "(IIF)V", (void *) android_glTexParameterf__IIF },
330627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glTexParameterx", "(III)V", (void *) android_glTexParameterx__III },
330727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glTexSubImage2D", "(IIIIIIIILjava/nio/Buffer;)V", (void *) android_glTexSubImage2D__IIIIIIIILjava_nio_Buffer_2 },
330827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glTranslatef", "(FFF)V", (void *) android_glTranslatef__FFF },
330927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glTranslatex", "(III)V", (void *) android_glTranslatex__III },
331027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glVertexPointerBounds", "(IIILjava/nio/Buffer;I)V", (void *) android_glVertexPointerBounds__IIILjava_nio_Buffer_2I },
331127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glViewport", "(IIII)V", (void *) android_glViewport__IIII },
331227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich};
331327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
331427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichint register_android_opengl_jni_GLES10(JNIEnv *_env)
331527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{
331627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    int err;
331727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    err = android::AndroidRuntime::registerNativeMethods(_env, classPathName, methods, NELEM(methods));
331827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    return err;
331927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
3320