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
2024ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes#include "jni.h"
2124ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes#include "JNIHelp.h"
2227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#include <android_runtime/AndroidRuntime.h>
2327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#include <utils/misc.h>
2427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
2527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#include <assert.h>
2627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#include <GLES/gl.h>
27be509c9c7de5929d014dfe6d45e71cc8454ede0fJack Palevich#include <GLES/glext.h>
2827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
29be6eac828f5af8b608c3fa6749330f1dcd6b6206Jack Palevich/* special calls implemented in Android's GLES wrapper used to more
30be6eac828f5af8b608c3fa6749330f1dcd6b6206Jack Palevich * efficiently bound-check passed arrays */
31be6eac828f5af8b608c3fa6749330f1dcd6b6206Jack Palevichextern "C" {
32be6eac828f5af8b608c3fa6749330f1dcd6b6206Jack PalevichGL_API void GL_APIENTRY glPointSizePointerOESBounds(GLenum type, GLsizei stride,
33be6eac828f5af8b608c3fa6749330f1dcd6b6206Jack Palevich        const GLvoid *ptr, GLsizei count);
34be6eac828f5af8b608c3fa6749330f1dcd6b6206Jack Palevich}
35be6eac828f5af8b608c3fa6749330f1dcd6b6206Jack Palevich
3627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic int initialized = 0;
3727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
3827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic jclass nioAccessClass;
3927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic jclass bufferClass;
4027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic jmethodID getBasePointerID;
4127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic jmethodID getBaseArrayID;
4227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic jmethodID getBaseArrayOffsetID;
4327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic jfieldID positionID;
4427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic jfieldID limitID;
4527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic jfieldID elementSizeShiftID;
4627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
4727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* Cache method IDs each time the class is loaded. */
4827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
4927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
5024ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott HughesnativeClassInit(JNIEnv *_env, jclass glImplClass)
5127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{
5227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jclass nioAccessClassLocal = _env->FindClass("java/nio/NIOAccess");
5327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    nioAccessClass = (jclass) _env->NewGlobalRef(nioAccessClassLocal);
5427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
5527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jclass bufferClassLocal = _env->FindClass("java/nio/Buffer");
5627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    bufferClass = (jclass) _env->NewGlobalRef(bufferClassLocal);
5727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
5827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    getBasePointerID = _env->GetStaticMethodID(nioAccessClass,
5927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            "getBasePointer", "(Ljava/nio/Buffer;)J");
6027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    getBaseArrayID = _env->GetStaticMethodID(nioAccessClass,
6127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            "getBaseArray", "(Ljava/nio/Buffer;)Ljava/lang/Object;");
6227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    getBaseArrayOffsetID = _env->GetStaticMethodID(nioAccessClass,
6327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            "getBaseArrayOffset", "(Ljava/nio/Buffer;)I");
6427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
6527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    positionID = _env->GetFieldID(bufferClass, "position", "I");
6627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    limitID = _env->GetFieldID(bufferClass, "limit", "I");
6727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    elementSizeShiftID =
6827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->GetFieldID(bufferClass, "_elementSizeShift", "I");
6927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
7027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
7127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
7227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void *
7317045a16575ece34cfadb63da4791f115625df78Thomas TafertshofergetPointer(JNIEnv *_env, jobject buffer, jarray *array, jint *remaining, jint *offset)
7427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{
7527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint position;
7627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint limit;
7727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint elementSizeShift;
7827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jlong pointer;
7927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
8027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    position = _env->GetIntField(buffer, positionID);
8127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    limit = _env->GetIntField(buffer, limitID);
8227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    elementSizeShift = _env->GetIntField(buffer, elementSizeShiftID);
8327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    *remaining = (limit - position) << elementSizeShift;
8427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    pointer = _env->CallStaticLongMethod(nioAccessClass,
8527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            getBasePointerID, buffer);
8627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (pointer != 0L) {
8727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        *array = NULL;
8827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        return (void *) (jint) pointer;
8927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
9024ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes
9127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    *array = (jarray) _env->CallStaticObjectMethod(nioAccessClass,
9227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            getBaseArrayID, buffer);
9317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    *offset = _env->CallStaticIntMethod(nioAccessClass,
9427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            getBaseArrayOffsetID, buffer);
9524ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes
9617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    return NULL;
9727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
9827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
9927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
10027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
10127f8002e591b5c579f75b2580183b5d1c4219cd4Jack PalevichreleasePointer(JNIEnv *_env, jarray array, void *data, jboolean commit)
10227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{
10327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    _env->ReleasePrimitiveArrayCritical(array, data,
10427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich					   commit ? 0 : JNI_ABORT);
10527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
10627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
107be6eac828f5af8b608c3fa6749330f1dcd6b6206Jack Palevichstatic void *
108be6eac828f5af8b608c3fa6749330f1dcd6b6206Jack PalevichgetDirectBufferPointer(JNIEnv *_env, jobject buffer) {
109be6eac828f5af8b608c3fa6749330f1dcd6b6206Jack Palevich    char* buf = (char*) _env->GetDirectBufferAddress(buffer);
110be6eac828f5af8b608c3fa6749330f1dcd6b6206Jack Palevich    if (buf) {
111be6eac828f5af8b608c3fa6749330f1dcd6b6206Jack Palevich        jint position = _env->GetIntField(buffer, positionID);
112be6eac828f5af8b608c3fa6749330f1dcd6b6206Jack Palevich        jint elementSizeShift = _env->GetIntField(buffer, elementSizeShiftID);
113be6eac828f5af8b608c3fa6749330f1dcd6b6206Jack Palevich        buf += position << elementSizeShift;
114be6eac828f5af8b608c3fa6749330f1dcd6b6206Jack Palevich    } else {
11524ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes        jniThrowException(_env, "java/lang/IllegalArgumentException",
11624ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes                          "Must use a native order direct Buffer");
117be6eac828f5af8b608c3fa6749330f1dcd6b6206Jack Palevich    }
118be6eac828f5af8b608c3fa6749330f1dcd6b6206Jack Palevich    return (void*) buf;
119be6eac828f5af8b608c3fa6749330f1dcd6b6206Jack Palevich}
120be6eac828f5af8b608c3fa6749330f1dcd6b6206Jack Palevich
12127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich// --------------------------------------------------------------------------
12227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glBindBuffer ( GLenum target, GLuint buffer ) */
12327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
12427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glBindBuffer__II
12527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint buffer) {
12627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glBindBuffer(
12727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)target,
12827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLuint)buffer
12927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
13027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
13127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
13227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glBufferData ( GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage ) */
13327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
13427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glBufferData__IILjava_nio_Buffer_2I
13527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint size, jobject data_buf, jint usage) {
1362545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
1372545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
1382545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
13927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jarray _array = (jarray) 0;
14017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
14127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
14227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLvoid *data = (GLvoid *) 0;
14327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
14427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (data_buf) {
14517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        data = (GLvoid *)getPointer(_env, data_buf, &_array, &_remaining, &_bufferOffset);
146c620a52b69a5f29563e06497e30877809f5d67a5Jack Palevich        if (_remaining < size) {
1472545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer            _exception = 1;
1482545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer            _exceptionType = "java/lang/IllegalArgumentException";
1492545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer            _exceptionMessage = "remaining() < size < needed";
150c620a52b69a5f29563e06497e30877809f5d67a5Jack Palevich            goto exit;
151c620a52b69a5f29563e06497e30877809f5d67a5Jack Palevich        }
15227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
15337c9b49ab5eb5a676370fd7081db0967c38e97a6Thomas Tafertshofer    if (data_buf && data == NULL) {
15417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _dataBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
15517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        data = (GLvoid *) (_dataBase + _bufferOffset);
15617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
15727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glBufferData(
15827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)target,
15927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLsizeiptr)size,
16027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLvoid *)data,
16127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)usage
16227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
163c620a52b69a5f29563e06497e30877809f5d67a5Jack Palevich
164c620a52b69a5f29563e06497e30877809f5d67a5Jack Palevichexit:
16527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_array) {
16627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        releasePointer(_env, _array, data, JNI_FALSE);
16727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
1682545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
1692545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
1702545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
17127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
17227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
17327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glBufferSubData ( GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data ) */
17427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
17527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glBufferSubData__IIILjava_nio_Buffer_2
17627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint offset, jint size, jobject data_buf) {
1772545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
1782545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
1792545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
18027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jarray _array = (jarray) 0;
18117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
18227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
18327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLvoid *data = (GLvoid *) 0;
18427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
18517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    data = (GLvoid *)getPointer(_env, data_buf, &_array, &_remaining, &_bufferOffset);
186c620a52b69a5f29563e06497e30877809f5d67a5Jack Palevich    if (_remaining < size) {
1872545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
1882545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
1892545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "remaining() < size < needed";
190c620a52b69a5f29563e06497e30877809f5d67a5Jack Palevich        goto exit;
191c620a52b69a5f29563e06497e30877809f5d67a5Jack Palevich    }
19217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (data == NULL) {
19317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _dataBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
19417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        data = (GLvoid *) (_dataBase + _bufferOffset);
19517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
19627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glBufferSubData(
19727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)target,
19827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLintptr)offset,
19927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLsizeiptr)size,
20027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLvoid *)data
20127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
202c620a52b69a5f29563e06497e30877809f5d67a5Jack Palevich
203c620a52b69a5f29563e06497e30877809f5d67a5Jack Palevichexit:
20427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_array) {
20527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        releasePointer(_env, _array, data, JNI_FALSE);
20627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
2072545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
2082545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
2092545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
21027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
21127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
21227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glClipPlanef ( GLenum plane, const GLfloat *equation ) */
21327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
21427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glClipPlanef__I_3FI
21527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint plane, jfloatArray equation_ref, jint offset) {
2162545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
2172545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
2182545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
21927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfloat *equation_base = (GLfloat *) 0;
22027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
22127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfloat *equation = (GLfloat *) 0;
22227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
22327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (!equation_ref) {
2242545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
2252545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
2262545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "equation == null";
22727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
22827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
22927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (offset < 0) {
2302545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
2312545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
2322545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
23327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
23427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
23527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    _remaining = _env->GetArrayLength(equation_ref) - offset;
23627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    equation_base = (GLfloat *)
23727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->GetPrimitiveArrayCritical(equation_ref, (jboolean *)0);
23827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    equation = equation_base + offset;
23927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
24027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glClipPlanef(
24127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)plane,
24227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfloat *)equation
24327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
24427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
24527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
24627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (equation_base) {
24727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->ReleasePrimitiveArrayCritical(equation_ref, equation_base,
24827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            JNI_ABORT);
24927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
2502545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
2512545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
2522545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
25327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
25427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
25527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glClipPlanef ( GLenum plane, const GLfloat *equation ) */
25627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
25727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glClipPlanef__ILjava_nio_FloatBuffer_2
25827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint plane, jobject equation_buf) {
2592545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
2602545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
2612545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
26227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jarray _array = (jarray) 0;
26317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
26427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
26527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfloat *equation = (GLfloat *) 0;
26627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
26717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    equation = (GLfloat *)getPointer(_env, equation_buf, &_array, &_remaining, &_bufferOffset);
26817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (equation == NULL) {
26917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _equationBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
27017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        equation = (GLfloat *) (_equationBase + _bufferOffset);
27117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
27227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glClipPlanef(
27327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)plane,
27427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfloat *)equation
27527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
27627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_array) {
27727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        releasePointer(_env, _array, equation, JNI_FALSE);
27827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
2792545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
2802545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
2812545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
28227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
28327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
28427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glClipPlanex ( GLenum plane, const GLfixed *equation ) */
28527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
28627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glClipPlanex__I_3II
28727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint plane, jintArray equation_ref, jint offset) {
2882545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
2892545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
2902545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
29127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfixed *equation_base = (GLfixed *) 0;
29227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
29327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfixed *equation = (GLfixed *) 0;
29427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
29527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (!equation_ref) {
2962545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
2972545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
2982545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "equation == null";
29927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
30027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
30127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (offset < 0) {
3022545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
3032545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
3042545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
30527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
30627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
30727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    _remaining = _env->GetArrayLength(equation_ref) - offset;
30827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    equation_base = (GLfixed *)
30927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->GetPrimitiveArrayCritical(equation_ref, (jboolean *)0);
31027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    equation = equation_base + offset;
31127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
31227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glClipPlanex(
31327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)plane,
31427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfixed *)equation
31527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
31627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
31727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
31827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (equation_base) {
31927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->ReleasePrimitiveArrayCritical(equation_ref, equation_base,
32027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            JNI_ABORT);
32127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
3222545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
3232545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
3242545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
32527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
32627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
32727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glClipPlanex ( GLenum plane, const GLfixed *equation ) */
32827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
32927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glClipPlanex__ILjava_nio_IntBuffer_2
33027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint plane, jobject equation_buf) {
3312545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
3322545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
3332545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
33427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jarray _array = (jarray) 0;
33517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
33627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
33727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfixed *equation = (GLfixed *) 0;
33827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
33917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    equation = (GLfixed *)getPointer(_env, equation_buf, &_array, &_remaining, &_bufferOffset);
34017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (equation == NULL) {
34117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _equationBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
34217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        equation = (GLfixed *) (_equationBase + _bufferOffset);
34317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
34427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glClipPlanex(
34527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)plane,
34627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfixed *)equation
34727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
34827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_array) {
34927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        releasePointer(_env, _array, equation, JNI_FALSE);
35027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
3512545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
3522545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
3532545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
35427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
35527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
35627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glColor4ub ( GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha ) */
35727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
35827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glColor4ub__BBBB
35927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jbyte red, jbyte green, jbyte blue, jbyte alpha) {
36027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glColor4ub(
36127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLubyte)red,
36227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLubyte)green,
36327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLubyte)blue,
36427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLubyte)alpha
36527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
36627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
36727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
36827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glColorPointer ( GLint size, GLenum type, GLsizei stride, GLint offset ) */
36927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
37027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glColorPointer__IIII
37127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint size, jint type, jint stride, jint offset) {
37227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glColorPointer(
37327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLint)size,
37427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)type,
37527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLsizei)stride,
37627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (const GLvoid *)offset
37727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
37827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
37927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
38027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glDeleteBuffers ( GLsizei n, const GLuint *buffers ) */
38127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
38227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glDeleteBuffers__I_3II
38327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint n, jintArray buffers_ref, jint offset) {
3842545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
3852545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
3862545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
38727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLuint *buffers_base = (GLuint *) 0;
38827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
38927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLuint *buffers = (GLuint *) 0;
39027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
39127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (!buffers_ref) {
3922545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
3932545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
3942545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "buffers == null";
39527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
39627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
39727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (offset < 0) {
3982545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
3992545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
4002545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
40127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
40227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
40327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    _remaining = _env->GetArrayLength(buffers_ref) - offset;
40427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < n) {
4052545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
4062545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
4072545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "length - offset < n < needed";
40827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
40927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
41027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    buffers_base = (GLuint *)
41127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->GetPrimitiveArrayCritical(buffers_ref, (jboolean *)0);
41227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    buffers = buffers_base + offset;
41327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
41427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glDeleteBuffers(
41527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLsizei)n,
41627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLuint *)buffers
41727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
41827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
41927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
42027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (buffers_base) {
42127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->ReleasePrimitiveArrayCritical(buffers_ref, buffers_base,
42227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            JNI_ABORT);
42327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
4242545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
4252545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
4262545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
42727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
42827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
42927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glDeleteBuffers ( GLsizei n, const GLuint *buffers ) */
43027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
43127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glDeleteBuffers__ILjava_nio_IntBuffer_2
43227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint n, jobject buffers_buf) {
4332545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
4342545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
4352545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
43627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jarray _array = (jarray) 0;
43717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
43827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
43927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLuint *buffers = (GLuint *) 0;
44027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
44117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    buffers = (GLuint *)getPointer(_env, buffers_buf, &_array, &_remaining, &_bufferOffset);
44227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < n) {
4432545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
4442545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
4452545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "remaining() < n < needed";
44627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
44727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
44817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (buffers == NULL) {
44917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _buffersBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
45017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        buffers = (GLuint *) (_buffersBase + _bufferOffset);
45117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
45227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glDeleteBuffers(
45327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLsizei)n,
45427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLuint *)buffers
45527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
45627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
45727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
45827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_array) {
45927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        releasePointer(_env, _array, buffers, JNI_FALSE);
46027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
4612545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
4622545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
4632545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
46427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
46527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
46627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glDrawElements ( GLenum mode, GLsizei count, GLenum type, GLint offset ) */
46727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
46827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glDrawElements__IIII
46927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint mode, jint count, jint type, jint offset) {
4702545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
4712545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
4722545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
47327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glDrawElements(
47427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)mode,
47527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLsizei)count,
47627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)type,
47727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (const GLvoid *)offset
47827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
4792545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
4802545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
4812545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
48227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
48327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
48427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGenBuffers ( GLsizei n, GLuint *buffers ) */
48527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
48627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGenBuffers__I_3II
48727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint n, jintArray buffers_ref, jint offset) {
48827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _exception = 0;
4892545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
4902545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
49127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLuint *buffers_base = (GLuint *) 0;
49227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
49327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLuint *buffers = (GLuint *) 0;
49427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
49527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (!buffers_ref) {
49627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
4972545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
4982545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "buffers == null";
49927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
50027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
50127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (offset < 0) {
50227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
5032545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
5042545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
50527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
50627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
50727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    _remaining = _env->GetArrayLength(buffers_ref) - offset;
50827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < n) {
50927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
5102545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
5112545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "length - offset < n < needed";
51227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
51327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
51427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    buffers_base = (GLuint *)
51527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->GetPrimitiveArrayCritical(buffers_ref, (jboolean *)0);
51627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    buffers = buffers_base + offset;
51727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
51827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glGenBuffers(
51927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLsizei)n,
52027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLuint *)buffers
52127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
52227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
52327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
52427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (buffers_base) {
52527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->ReleasePrimitiveArrayCritical(buffers_ref, buffers_base,
52627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _exception ? JNI_ABORT: 0);
52727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
5282545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
5292545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
5302545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
53127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
53227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
53327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGenBuffers ( GLsizei n, GLuint *buffers ) */
53427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
53527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGenBuffers__ILjava_nio_IntBuffer_2
53627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint n, jobject buffers_buf) {
53727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _exception = 0;
5382545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
5392545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
54027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jarray _array = (jarray) 0;
54117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
54227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
54327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLuint *buffers = (GLuint *) 0;
54427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
54517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    buffers = (GLuint *)getPointer(_env, buffers_buf, &_array, &_remaining, &_bufferOffset);
54627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < n) {
54727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
5482545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
5492545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "remaining() < n < needed";
55027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
55127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
55217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (buffers == NULL) {
55317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _buffersBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
55417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        buffers = (GLuint *) (_buffersBase + _bufferOffset);
55517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
55627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glGenBuffers(
55727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLsizei)n,
55827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLuint *)buffers
55927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
56027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
56127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
56227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_array) {
56327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        releasePointer(_env, _array, buffers, _exception ? JNI_FALSE : JNI_TRUE);
56427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
5652545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
5662545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
5672545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
56827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
56927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
57027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetBooleanv ( GLenum pname, GLboolean *params ) */
57127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
57227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetBooleanv__I_3ZI
57327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint pname, jbooleanArray params_ref, jint offset) {
57427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _exception = 0;
5752545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
5762545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
57727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLboolean *params_base = (GLboolean *) 0;
57827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
57927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLboolean *params = (GLboolean *) 0;
58027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
58127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (!params_ref) {
58227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
5832545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
5842545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "params == null";
58527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
58627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
58727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (offset < 0) {
58827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
5892545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
5902545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
59127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
59227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
59327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    _remaining = _env->GetArrayLength(params_ref) - offset;
59427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    params_base = (GLboolean *)
59527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
59627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    params = params_base + offset;
59727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
59827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glGetBooleanv(
59927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
60027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLboolean *)params
60127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
60227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
60327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
60427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (params_base) {
60527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
60627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _exception ? JNI_ABORT: 0);
60727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
6082545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
6092545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
6102545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
61127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
61227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
61327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetBooleanv ( GLenum pname, GLboolean *params ) */
61427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
61527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetBooleanv__ILjava_nio_IntBuffer_2
61627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) {
61727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jarray _array = (jarray) 0;
61817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
61927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
62027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLboolean *params = (GLboolean *) 0;
62127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
62217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    params = (GLboolean *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
62317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (params == NULL) {
62417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
62517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        params = (GLboolean *) (_paramsBase + _bufferOffset);
62617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
62727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glGetBooleanv(
62827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
62927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLboolean *)params
63027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
63127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_array) {
6322545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        releasePointer(_env, _array, params, JNI_TRUE);
63327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
63427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
63527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
63627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetBufferParameteriv ( GLenum target, GLenum pname, GLint *params ) */
63727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
63827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetBufferParameteriv__II_3II
63927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint pname, jintArray params_ref, jint offset) {
64073108675c944ab4ee89631dced23566b12341b66Jack Palevich    jint _exception = 0;
6412545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
6422545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
64373108675c944ab4ee89631dced23566b12341b66Jack Palevich    GLint *params_base = (GLint *) 0;
64473108675c944ab4ee89631dced23566b12341b66Jack Palevich    jint _remaining;
64573108675c944ab4ee89631dced23566b12341b66Jack Palevich    GLint *params = (GLint *) 0;
64673108675c944ab4ee89631dced23566b12341b66Jack Palevich
64773108675c944ab4ee89631dced23566b12341b66Jack Palevich    if (!params_ref) {
64873108675c944ab4ee89631dced23566b12341b66Jack Palevich        _exception = 1;
6492545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
6502545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "params == null";
65173108675c944ab4ee89631dced23566b12341b66Jack Palevich        goto exit;
65273108675c944ab4ee89631dced23566b12341b66Jack Palevich    }
65373108675c944ab4ee89631dced23566b12341b66Jack Palevich    if (offset < 0) {
65473108675c944ab4ee89631dced23566b12341b66Jack Palevich        _exception = 1;
6552545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
6562545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
65773108675c944ab4ee89631dced23566b12341b66Jack Palevich        goto exit;
65873108675c944ab4ee89631dced23566b12341b66Jack Palevich    }
65973108675c944ab4ee89631dced23566b12341b66Jack Palevich    _remaining = _env->GetArrayLength(params_ref) - offset;
66073108675c944ab4ee89631dced23566b12341b66Jack Palevich    if (_remaining < 1) {
66173108675c944ab4ee89631dced23566b12341b66Jack Palevich        _exception = 1;
6622545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
6632545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "length - offset < 1 < needed";
66473108675c944ab4ee89631dced23566b12341b66Jack Palevich        goto exit;
66573108675c944ab4ee89631dced23566b12341b66Jack Palevich    }
66673108675c944ab4ee89631dced23566b12341b66Jack Palevich    params_base = (GLint *)
66773108675c944ab4ee89631dced23566b12341b66Jack Palevich        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
66873108675c944ab4ee89631dced23566b12341b66Jack Palevich    params = params_base + offset;
66973108675c944ab4ee89631dced23566b12341b66Jack Palevich
67073108675c944ab4ee89631dced23566b12341b66Jack Palevich    glGetBufferParameteriv(
67173108675c944ab4ee89631dced23566b12341b66Jack Palevich        (GLenum)target,
67273108675c944ab4ee89631dced23566b12341b66Jack Palevich        (GLenum)pname,
67373108675c944ab4ee89631dced23566b12341b66Jack Palevich        (GLint *)params
67473108675c944ab4ee89631dced23566b12341b66Jack Palevich    );
67573108675c944ab4ee89631dced23566b12341b66Jack Palevich
67673108675c944ab4ee89631dced23566b12341b66Jack Palevichexit:
67773108675c944ab4ee89631dced23566b12341b66Jack Palevich    if (params_base) {
67873108675c944ab4ee89631dced23566b12341b66Jack Palevich        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
67973108675c944ab4ee89631dced23566b12341b66Jack Palevich            _exception ? JNI_ABORT: 0);
68073108675c944ab4ee89631dced23566b12341b66Jack Palevich    }
6812545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
6822545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
6832545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
68427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
68527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
68627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetBufferParameteriv ( GLenum target, GLenum pname, GLint *params ) */
68727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
68827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetBufferParameteriv__IILjava_nio_IntBuffer_2
68927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) {
69073108675c944ab4ee89631dced23566b12341b66Jack Palevich    jint _exception = 0;
6912545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
6922545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
69373108675c944ab4ee89631dced23566b12341b66Jack Palevich    jarray _array = (jarray) 0;
69417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
69573108675c944ab4ee89631dced23566b12341b66Jack Palevich    jint _remaining;
69673108675c944ab4ee89631dced23566b12341b66Jack Palevich    GLint *params = (GLint *) 0;
69773108675c944ab4ee89631dced23566b12341b66Jack Palevich
69817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
69973108675c944ab4ee89631dced23566b12341b66Jack Palevich    if (_remaining < 1) {
70073108675c944ab4ee89631dced23566b12341b66Jack Palevich        _exception = 1;
7012545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
7022545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "remaining() < 1 < needed";
70373108675c944ab4ee89631dced23566b12341b66Jack Palevich        goto exit;
70473108675c944ab4ee89631dced23566b12341b66Jack Palevich    }
70517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (params == NULL) {
70617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
70717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        params = (GLint *) (_paramsBase + _bufferOffset);
70817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
70973108675c944ab4ee89631dced23566b12341b66Jack Palevich    glGetBufferParameteriv(
71073108675c944ab4ee89631dced23566b12341b66Jack Palevich        (GLenum)target,
71173108675c944ab4ee89631dced23566b12341b66Jack Palevich        (GLenum)pname,
71273108675c944ab4ee89631dced23566b12341b66Jack Palevich        (GLint *)params
71373108675c944ab4ee89631dced23566b12341b66Jack Palevich    );
71473108675c944ab4ee89631dced23566b12341b66Jack Palevich
71573108675c944ab4ee89631dced23566b12341b66Jack Palevichexit:
71673108675c944ab4ee89631dced23566b12341b66Jack Palevich    if (_array) {
71773108675c944ab4ee89631dced23566b12341b66Jack Palevich        releasePointer(_env, _array, params, _exception ? JNI_FALSE : JNI_TRUE);
71873108675c944ab4ee89631dced23566b12341b66Jack Palevich    }
7192545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
7202545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
7212545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
72227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
72327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
72427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetClipPlanef ( GLenum pname, GLfloat *eqn ) */
72527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
72627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetClipPlanef__I_3FI
72727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint pname, jfloatArray eqn_ref, jint offset) {
72827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _exception = 0;
7292545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
7302545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
73127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfloat *eqn_base = (GLfloat *) 0;
73227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
73327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfloat *eqn = (GLfloat *) 0;
73427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
73527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (!eqn_ref) {
73627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
7372545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
7382545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "eqn == null";
73927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
74027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
74127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (offset < 0) {
74227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
7432545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
7442545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
74527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
74627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
74727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    _remaining = _env->GetArrayLength(eqn_ref) - offset;
74827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    eqn_base = (GLfloat *)
74927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->GetPrimitiveArrayCritical(eqn_ref, (jboolean *)0);
75027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    eqn = eqn_base + offset;
75127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
75227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glGetClipPlanef(
75327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
75427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfloat *)eqn
75527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
75627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
75727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
75827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (eqn_base) {
75927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->ReleasePrimitiveArrayCritical(eqn_ref, eqn_base,
76027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _exception ? JNI_ABORT: 0);
76127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
7622545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
7632545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
7642545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
76527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
76627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
76727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetClipPlanef ( GLenum pname, GLfloat *eqn ) */
76827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
76927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetClipPlanef__ILjava_nio_FloatBuffer_2
77027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint pname, jobject eqn_buf) {
77127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jarray _array = (jarray) 0;
77217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
77327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
77427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfloat *eqn = (GLfloat *) 0;
77527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
77617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    eqn = (GLfloat *)getPointer(_env, eqn_buf, &_array, &_remaining, &_bufferOffset);
77717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (eqn == NULL) {
77817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _eqnBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
77917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        eqn = (GLfloat *) (_eqnBase + _bufferOffset);
78017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
78127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glGetClipPlanef(
78227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
78327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfloat *)eqn
78427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
78527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_array) {
7862545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        releasePointer(_env, _array, eqn, JNI_TRUE);
78727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
78827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
78927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
79027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetClipPlanex ( GLenum pname, GLfixed *eqn ) */
79127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
79227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetClipPlanex__I_3II
79327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint pname, jintArray eqn_ref, jint offset) {
79427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _exception = 0;
7952545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
7962545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
79727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfixed *eqn_base = (GLfixed *) 0;
79827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
79927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfixed *eqn = (GLfixed *) 0;
80027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
80127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (!eqn_ref) {
80227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
8032545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
8042545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "eqn == null";
80527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
80627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
80727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (offset < 0) {
80827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
8092545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
8102545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
81127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
81227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
81327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    _remaining = _env->GetArrayLength(eqn_ref) - offset;
81427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    eqn_base = (GLfixed *)
81527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->GetPrimitiveArrayCritical(eqn_ref, (jboolean *)0);
81627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    eqn = eqn_base + offset;
81727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
81827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glGetClipPlanex(
81927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
82027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfixed *)eqn
82127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
82227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
82327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
82427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (eqn_base) {
82527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->ReleasePrimitiveArrayCritical(eqn_ref, eqn_base,
82627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _exception ? JNI_ABORT: 0);
82727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
8282545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
8292545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
8302545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
83127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
83227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
83327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetClipPlanex ( GLenum pname, GLfixed *eqn ) */
83427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
83527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetClipPlanex__ILjava_nio_IntBuffer_2
83627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint pname, jobject eqn_buf) {
83727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jarray _array = (jarray) 0;
83817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
83927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
84027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfixed *eqn = (GLfixed *) 0;
84127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
84217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    eqn = (GLfixed *)getPointer(_env, eqn_buf, &_array, &_remaining, &_bufferOffset);
84317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (eqn == NULL) {
84417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _eqnBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
84517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        eqn = (GLfixed *) (_eqnBase + _bufferOffset);
84617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
84727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glGetClipPlanex(
84827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
84927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfixed *)eqn
85027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
85127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_array) {
8522545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        releasePointer(_env, _array, eqn, JNI_TRUE);
85327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
85427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
85527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
85627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetFixedv ( GLenum pname, GLfixed *params ) */
85727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
85827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetFixedv__I_3II
85927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint pname, jintArray params_ref, jint offset) {
86027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _exception = 0;
8612545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
8622545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
86327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfixed *params_base = (GLfixed *) 0;
86427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
86527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfixed *params = (GLfixed *) 0;
86627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
86727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (!params_ref) {
86827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
8692545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
8702545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "params == null";
87127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
87227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
87327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (offset < 0) {
87427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
8752545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
8762545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
87727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
87827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
87927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    _remaining = _env->GetArrayLength(params_ref) - offset;
88027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    params_base = (GLfixed *)
88127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
88227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    params = params_base + offset;
88327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
88427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glGetFixedv(
88527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
88627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfixed *)params
88727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
88827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
88927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
89027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (params_base) {
89127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
89227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _exception ? JNI_ABORT: 0);
89327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
8942545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
8952545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
8962545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
89727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
89827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
89927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetFixedv ( GLenum pname, GLfixed *params ) */
90027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
90127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetFixedv__ILjava_nio_IntBuffer_2
90227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) {
90327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jarray _array = (jarray) 0;
90417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
90527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
90627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfixed *params = (GLfixed *) 0;
90727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
90817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
90917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (params == NULL) {
91017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
91117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        params = (GLfixed *) (_paramsBase + _bufferOffset);
91217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
91327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glGetFixedv(
91427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
91527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfixed *)params
91627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
91727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_array) {
9182545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        releasePointer(_env, _array, params, JNI_TRUE);
91927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
92027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
92127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
92227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetFloatv ( GLenum pname, GLfloat *params ) */
92327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
92427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetFloatv__I_3FI
92527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint pname, jfloatArray params_ref, jint offset) {
92627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _exception = 0;
9272545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
9282545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
92927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfloat *params_base = (GLfloat *) 0;
93027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
93127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfloat *params = (GLfloat *) 0;
93227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
93327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (!params_ref) {
93427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
9352545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
9362545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "params == null";
93727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
93827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
93927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (offset < 0) {
94027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
9412545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
9422545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
94327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
94427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
94527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    _remaining = _env->GetArrayLength(params_ref) - offset;
94627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    params_base = (GLfloat *)
94727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
94827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    params = params_base + offset;
94927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
95027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glGetFloatv(
95127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
95227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfloat *)params
95327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
95427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
95527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
95627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (params_base) {
95727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
95827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _exception ? JNI_ABORT: 0);
95927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
9602545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
9612545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
9622545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
96327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
96427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
96527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetFloatv ( GLenum pname, GLfloat *params ) */
96627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
96727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetFloatv__ILjava_nio_FloatBuffer_2
96827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) {
96927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jarray _array = (jarray) 0;
97017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
97127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
97227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfloat *params = (GLfloat *) 0;
97327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
97417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
97517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (params == NULL) {
97617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
97717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        params = (GLfloat *) (_paramsBase + _bufferOffset);
97817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
97927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glGetFloatv(
98027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
98127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfloat *)params
98227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
98327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_array) {
9842545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        releasePointer(_env, _array, params, JNI_TRUE);
98527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
98627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
98727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
98827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetLightfv ( GLenum light, GLenum pname, GLfloat *params ) */
98927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
99027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetLightfv__II_3FI
99127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint light, jint pname, jfloatArray params_ref, jint offset) {
99227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _exception = 0;
9932545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
9942545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
99527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfloat *params_base = (GLfloat *) 0;
99627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
99727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfloat *params = (GLfloat *) 0;
99827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
99927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (!params_ref) {
100027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
10012545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
10022545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "params == null";
100327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
100427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
100527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (offset < 0) {
100627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
10072545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
10082545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
100927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
101027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
101127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    _remaining = _env->GetArrayLength(params_ref) - offset;
101227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    int _needed;
101327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    switch (pname) {
101427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_SPOT_EXPONENT)
101527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_SPOT_EXPONENT:
101627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_SPOT_EXPONENT)
101727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_SPOT_CUTOFF)
101827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_SPOT_CUTOFF:
101927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_SPOT_CUTOFF)
102027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_CONSTANT_ATTENUATION)
102127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_CONSTANT_ATTENUATION:
102227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_CONSTANT_ATTENUATION)
102327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_LINEAR_ATTENUATION)
102427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_LINEAR_ATTENUATION:
102527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_LINEAR_ATTENUATION)
102627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_QUADRATIC_ATTENUATION)
102727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_QUADRATIC_ATTENUATION:
102827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_QUADRATIC_ATTENUATION)
102927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _needed = 1;
103027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
103127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_SPOT_DIRECTION)
103227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_SPOT_DIRECTION:
103327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_SPOT_DIRECTION)
103427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _needed = 3;
103527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
103627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_AMBIENT)
103727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_AMBIENT:
103827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_AMBIENT)
103927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_DIFFUSE)
104027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_DIFFUSE:
104127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_DIFFUSE)
104227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_SPECULAR)
104327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_SPECULAR:
104427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_SPECULAR)
104527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_EMISSION)
104627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_EMISSION:
104727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_EMISSION)
104827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _needed = 4;
104927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
105027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        default:
105127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _needed = 0;
105227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
105327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
105427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < _needed) {
105527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
10562545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
10572545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "length - offset < needed";
105827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
105927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
106027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    params_base = (GLfloat *)
106127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
106227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    params = params_base + offset;
106327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
106427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glGetLightfv(
106527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)light,
106627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
106727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfloat *)params
106827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
106927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
107027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
107127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (params_base) {
107227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
107327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _exception ? JNI_ABORT: 0);
107427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
10752545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
10762545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
10772545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
107827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
107927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
108027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetLightfv ( GLenum light, GLenum pname, GLfloat *params ) */
108127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
108227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetLightfv__IILjava_nio_FloatBuffer_2
108327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint light, jint pname, jobject params_buf) {
108427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _exception = 0;
10852545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
10862545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
108727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jarray _array = (jarray) 0;
108817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
108927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
109027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfloat *params = (GLfloat *) 0;
109127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
109217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
109327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    int _needed;
109427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    switch (pname) {
109527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_SPOT_EXPONENT)
109627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_SPOT_EXPONENT:
109727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_SPOT_EXPONENT)
109827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_SPOT_CUTOFF)
109927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_SPOT_CUTOFF:
110027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_SPOT_CUTOFF)
110127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_CONSTANT_ATTENUATION)
110227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_CONSTANT_ATTENUATION:
110327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_CONSTANT_ATTENUATION)
110427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_LINEAR_ATTENUATION)
110527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_LINEAR_ATTENUATION:
110627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_LINEAR_ATTENUATION)
110727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_QUADRATIC_ATTENUATION)
110827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_QUADRATIC_ATTENUATION:
110927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_QUADRATIC_ATTENUATION)
111027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _needed = 1;
111127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
111227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_SPOT_DIRECTION)
111327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_SPOT_DIRECTION:
111427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_SPOT_DIRECTION)
111527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _needed = 3;
111627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
111727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_AMBIENT)
111827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_AMBIENT:
111927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_AMBIENT)
112027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_DIFFUSE)
112127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_DIFFUSE:
112227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_DIFFUSE)
112327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_SPECULAR)
112427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_SPECULAR:
112527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_SPECULAR)
112627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_EMISSION)
112727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_EMISSION:
112827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_EMISSION)
112927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _needed = 4;
113027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
113127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        default:
113227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _needed = 0;
113327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
113427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
113527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < _needed) {
113627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
11372545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
11382545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "remaining() < needed";
113927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
114027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
114117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (params == NULL) {
114217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
114317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        params = (GLfloat *) (_paramsBase + _bufferOffset);
114417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
114527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glGetLightfv(
114627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)light,
114727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
114827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfloat *)params
114927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
115027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
115127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
115227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_array) {
115327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        releasePointer(_env, _array, params, _exception ? JNI_FALSE : JNI_TRUE);
115427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
11552545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
11562545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
11572545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
115827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
115927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
116027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetLightxv ( GLenum light, GLenum pname, GLfixed *params ) */
116127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
116227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetLightxv__II_3II
116327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint light, jint pname, jintArray params_ref, jint offset) {
116427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _exception = 0;
11652545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
11662545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
116727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfixed *params_base = (GLfixed *) 0;
116827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
116927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfixed *params = (GLfixed *) 0;
117027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
117127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (!params_ref) {
117227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
11732545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
11742545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "params == null";
117527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
117627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
117727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (offset < 0) {
117827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
11792545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
11802545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
118127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
118227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
118327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    _remaining = _env->GetArrayLength(params_ref) - offset;
118427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    int _needed;
118527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    switch (pname) {
118627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_SPOT_EXPONENT)
118727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_SPOT_EXPONENT:
118827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_SPOT_EXPONENT)
118927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_SPOT_CUTOFF)
119027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_SPOT_CUTOFF:
119127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_SPOT_CUTOFF)
119227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_CONSTANT_ATTENUATION)
119327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_CONSTANT_ATTENUATION:
119427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_CONSTANT_ATTENUATION)
119527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_LINEAR_ATTENUATION)
119627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_LINEAR_ATTENUATION:
119727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_LINEAR_ATTENUATION)
119827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_QUADRATIC_ATTENUATION)
119927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_QUADRATIC_ATTENUATION:
120027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_QUADRATIC_ATTENUATION)
120127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _needed = 1;
120227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
120327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_SPOT_DIRECTION)
120427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_SPOT_DIRECTION:
120527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_SPOT_DIRECTION)
120627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _needed = 3;
120727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
120827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_AMBIENT)
120927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_AMBIENT:
121027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_AMBIENT)
121127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_DIFFUSE)
121227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_DIFFUSE:
121327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_DIFFUSE)
121427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_SPECULAR)
121527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_SPECULAR:
121627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_SPECULAR)
121727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_EMISSION)
121827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_EMISSION:
121927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_EMISSION)
122027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _needed = 4;
122127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
122227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        default:
122327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _needed = 0;
122427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
122527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
122627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < _needed) {
122727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
12282545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
12292545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "length - offset < needed";
123027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
123127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
123227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    params_base = (GLfixed *)
123327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
123427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    params = params_base + offset;
123527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
123627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glGetLightxv(
123727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)light,
123827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
123927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfixed *)params
124027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
124127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
124227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
124327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (params_base) {
124427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
124527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _exception ? JNI_ABORT: 0);
124627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
12472545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
12482545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
12492545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
125027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
125127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
125227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetLightxv ( GLenum light, GLenum pname, GLfixed *params ) */
125327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
125427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetLightxv__IILjava_nio_IntBuffer_2
125527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint light, jint pname, jobject params_buf) {
125627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _exception = 0;
12572545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
12582545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
125927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jarray _array = (jarray) 0;
126017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
126127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
126227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfixed *params = (GLfixed *) 0;
126327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
126417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
126527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    int _needed;
126627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    switch (pname) {
126727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_SPOT_EXPONENT)
126827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_SPOT_EXPONENT:
126927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_SPOT_EXPONENT)
127027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_SPOT_CUTOFF)
127127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_SPOT_CUTOFF:
127227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_SPOT_CUTOFF)
127327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_CONSTANT_ATTENUATION)
127427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_CONSTANT_ATTENUATION:
127527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_CONSTANT_ATTENUATION)
127627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_LINEAR_ATTENUATION)
127727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_LINEAR_ATTENUATION:
127827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_LINEAR_ATTENUATION)
127927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_QUADRATIC_ATTENUATION)
128027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_QUADRATIC_ATTENUATION:
128127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_QUADRATIC_ATTENUATION)
128227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _needed = 1;
128327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
128427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_SPOT_DIRECTION)
128527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_SPOT_DIRECTION:
128627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_SPOT_DIRECTION)
128727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _needed = 3;
128827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
128927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_AMBIENT)
129027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_AMBIENT:
129127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_AMBIENT)
129227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_DIFFUSE)
129327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_DIFFUSE:
129427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_DIFFUSE)
129527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_SPECULAR)
129627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_SPECULAR:
129727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_SPECULAR)
129827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_EMISSION)
129927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_EMISSION:
130027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_EMISSION)
130127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _needed = 4;
130227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
130327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        default:
130427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _needed = 0;
130527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
130627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
130727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < _needed) {
130827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
13092545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
13102545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "remaining() < needed";
131127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
131227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
131317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (params == NULL) {
131417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
131517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        params = (GLfixed *) (_paramsBase + _bufferOffset);
131617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
131727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glGetLightxv(
131827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)light,
131927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
132027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfixed *)params
132127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
132227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
132327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
132427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_array) {
132527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        releasePointer(_env, _array, params, _exception ? JNI_FALSE : JNI_TRUE);
132627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
13272545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
13282545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
13292545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
133027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
133127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
133227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetMaterialfv ( GLenum face, GLenum pname, GLfloat *params ) */
133327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
133427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetMaterialfv__II_3FI
133527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint face, jint pname, jfloatArray params_ref, jint offset) {
133627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _exception = 0;
13372545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
13382545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
133927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfloat *params_base = (GLfloat *) 0;
134027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
134127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfloat *params = (GLfloat *) 0;
134227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
134327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (!params_ref) {
134427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
13452545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
13462545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "params == null";
134727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
134827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
134927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (offset < 0) {
135027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
13512545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
13522545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
135327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
135427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
135527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    _remaining = _env->GetArrayLength(params_ref) - offset;
135627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    int _needed;
135727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    switch (pname) {
135827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_SHININESS)
135927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_SHININESS:
136027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_SHININESS)
136127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _needed = 1;
136227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
136327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_AMBIENT)
136427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_AMBIENT:
136527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_AMBIENT)
136627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_DIFFUSE)
136727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_DIFFUSE:
136827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_DIFFUSE)
136927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_SPECULAR)
137027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_SPECULAR:
137127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_SPECULAR)
137227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_EMISSION)
137327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_EMISSION:
137427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_EMISSION)
137527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_AMBIENT_AND_DIFFUSE)
137627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_AMBIENT_AND_DIFFUSE:
137727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_AMBIENT_AND_DIFFUSE)
137827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _needed = 4;
137927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
138027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        default:
138127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _needed = 0;
138227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
138327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
138427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < _needed) {
138527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
13862545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
13872545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "length - offset < needed";
138827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
138927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
139027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    params_base = (GLfloat *)
139127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
139227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    params = params_base + offset;
139327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
139427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glGetMaterialfv(
139527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)face,
139627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
139727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfloat *)params
139827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
139927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
140027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
140127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (params_base) {
140227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
140327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _exception ? JNI_ABORT: 0);
140427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
14052545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
14062545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
14072545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
140827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
140927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
141027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetMaterialfv ( GLenum face, GLenum pname, GLfloat *params ) */
141127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
141227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetMaterialfv__IILjava_nio_FloatBuffer_2
141327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint face, jint pname, jobject params_buf) {
141427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _exception = 0;
14152545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
14162545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
141727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jarray _array = (jarray) 0;
141817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
141927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
142027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfloat *params = (GLfloat *) 0;
142127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
142217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
142327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    int _needed;
142427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    switch (pname) {
142527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_SHININESS)
142627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_SHININESS:
142727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_SHININESS)
142827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _needed = 1;
142927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
143027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_AMBIENT)
143127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_AMBIENT:
143227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_AMBIENT)
143327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_DIFFUSE)
143427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_DIFFUSE:
143527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_DIFFUSE)
143627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_SPECULAR)
143727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_SPECULAR:
143827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_SPECULAR)
143927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_EMISSION)
144027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_EMISSION:
144127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_EMISSION)
144227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_AMBIENT_AND_DIFFUSE)
144327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_AMBIENT_AND_DIFFUSE:
144427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_AMBIENT_AND_DIFFUSE)
144527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _needed = 4;
144627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
144727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        default:
144827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _needed = 0;
144927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
145027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
145127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < _needed) {
145227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
14532545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
14542545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "remaining() < needed";
145527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
145627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
145717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (params == NULL) {
145817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
145917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        params = (GLfloat *) (_paramsBase + _bufferOffset);
146017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
146127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glGetMaterialfv(
146227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)face,
146327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
146427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfloat *)params
146527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
146627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
146727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
146827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_array) {
146927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        releasePointer(_env, _array, params, _exception ? JNI_FALSE : JNI_TRUE);
147027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
14712545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
14722545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
14732545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
147427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
147527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
147627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetMaterialxv ( GLenum face, GLenum pname, GLfixed *params ) */
147727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
147827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetMaterialxv__II_3II
147927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint face, jint pname, jintArray params_ref, jint offset) {
148027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _exception = 0;
14812545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
14822545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
148327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfixed *params_base = (GLfixed *) 0;
148427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
148527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfixed *params = (GLfixed *) 0;
148627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
148727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (!params_ref) {
148827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
14892545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
14902545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "params == null";
149127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
149227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
149327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (offset < 0) {
149427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
14952545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
14962545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
149727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
149827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
149927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    _remaining = _env->GetArrayLength(params_ref) - offset;
150027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    int _needed;
150127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    switch (pname) {
150227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_SHININESS)
150327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_SHININESS:
150427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_SHININESS)
150527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _needed = 1;
150627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
150727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_AMBIENT)
150827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_AMBIENT:
150927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_AMBIENT)
151027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_DIFFUSE)
151127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_DIFFUSE:
151227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_DIFFUSE)
151327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_SPECULAR)
151427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_SPECULAR:
151527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_SPECULAR)
151627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_EMISSION)
151727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_EMISSION:
151827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_EMISSION)
151927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_AMBIENT_AND_DIFFUSE)
152027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_AMBIENT_AND_DIFFUSE:
152127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_AMBIENT_AND_DIFFUSE)
152227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _needed = 4;
152327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
152427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        default:
152527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _needed = 0;
152627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
152727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
152827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < _needed) {
152927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
15302545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
15312545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "length - offset < needed";
153227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
153327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
153427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    params_base = (GLfixed *)
153527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
153627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    params = params_base + offset;
153727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
153827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glGetMaterialxv(
153927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)face,
154027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
154127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfixed *)params
154227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
154327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
154427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
154527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (params_base) {
154627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
154727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _exception ? JNI_ABORT: 0);
154827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
15492545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
15502545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
15512545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
155227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
155327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
155427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetMaterialxv ( GLenum face, GLenum pname, GLfixed *params ) */
155527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
155627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetMaterialxv__IILjava_nio_IntBuffer_2
155727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint face, jint pname, jobject params_buf) {
155827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _exception = 0;
15592545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
15602545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
156127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jarray _array = (jarray) 0;
156217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
156327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
156427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfixed *params = (GLfixed *) 0;
156527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
156617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
156727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    int _needed;
156827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    switch (pname) {
156927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_SHININESS)
157027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_SHININESS:
157127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_SHININESS)
157227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _needed = 1;
157327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
157427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_AMBIENT)
157527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_AMBIENT:
157627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_AMBIENT)
157727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_DIFFUSE)
157827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_DIFFUSE:
157927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_DIFFUSE)
158027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_SPECULAR)
158127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_SPECULAR:
158227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_SPECULAR)
158327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_EMISSION)
158427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_EMISSION:
158527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_EMISSION)
158627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_AMBIENT_AND_DIFFUSE)
158727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_AMBIENT_AND_DIFFUSE:
158827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_AMBIENT_AND_DIFFUSE)
158927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _needed = 4;
159027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
159127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        default:
159227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _needed = 0;
159327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
159427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
159527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < _needed) {
159627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
15972545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
15982545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "remaining() < needed";
159927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
160027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
160117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (params == NULL) {
160217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
160317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        params = (GLfixed *) (_paramsBase + _bufferOffset);
160417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
160527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glGetMaterialxv(
160627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)face,
160727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
160827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfixed *)params
160927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
161027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
161127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
161227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_array) {
161327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        releasePointer(_env, _array, params, _exception ? JNI_FALSE : JNI_TRUE);
161427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
16152545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
16162545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
16172545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
161827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
161927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
162027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetTexEnvfv ( GLenum env, GLenum pname, GLfloat *params ) */
162127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
162227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetTexEnvfv__II_3FI
162327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint env, jint pname, jfloatArray params_ref, jint offset) {
162427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _exception = 0;
16252545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
16262545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
162727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfloat *params_base = (GLfloat *) 0;
162827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
162927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfloat *params = (GLfloat *) 0;
163027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
163127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (!params_ref) {
163227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
16332545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
16342545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "params == null";
163527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
163627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
163727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (offset < 0) {
163827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
16392545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
16402545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
164127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
164227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
164327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    _remaining = _env->GetArrayLength(params_ref) - offset;
164427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    int _needed;
164527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    switch (pname) {
164627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_TEXTURE_ENV_MODE)
164727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_TEXTURE_ENV_MODE:
164827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_TEXTURE_ENV_MODE)
164927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_COMBINE_RGB)
165027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_COMBINE_RGB:
165127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_COMBINE_RGB)
165227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_COMBINE_ALPHA)
165327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_COMBINE_ALPHA:
165427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_COMBINE_ALPHA)
165527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _needed = 1;
165627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
165727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_TEXTURE_ENV_COLOR)
165827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_TEXTURE_ENV_COLOR:
165927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_TEXTURE_ENV_COLOR)
166027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _needed = 4;
166127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
166227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        default:
166327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _needed = 0;
166427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
166527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
166627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < _needed) {
166727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
16682545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
16692545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "length - offset < needed";
167027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
167127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
167227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    params_base = (GLfloat *)
167327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
167427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    params = params_base + offset;
167527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
167627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glGetTexEnvfv(
167727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)env,
167827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
167927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfloat *)params
168027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
168127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
168227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
168327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (params_base) {
168427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
168527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _exception ? JNI_ABORT: 0);
168627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
16872545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
16882545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
16892545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
169027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
169127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
169227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetTexEnvfv ( GLenum env, GLenum pname, GLfloat *params ) */
169327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
169427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetTexEnvfv__IILjava_nio_FloatBuffer_2
169527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint env, jint pname, jobject params_buf) {
169627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _exception = 0;
16972545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
16982545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
169927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jarray _array = (jarray) 0;
170017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
170127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
170227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfloat *params = (GLfloat *) 0;
170327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
170417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
170527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    int _needed;
170627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    switch (pname) {
170727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_TEXTURE_ENV_MODE)
170827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_TEXTURE_ENV_MODE:
170927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_TEXTURE_ENV_MODE)
171027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_COMBINE_RGB)
171127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_COMBINE_RGB:
171227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_COMBINE_RGB)
171327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_COMBINE_ALPHA)
171427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_COMBINE_ALPHA:
171527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_COMBINE_ALPHA)
171627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _needed = 1;
171727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
171827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_TEXTURE_ENV_COLOR)
171927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_TEXTURE_ENV_COLOR:
172027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_TEXTURE_ENV_COLOR)
172127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _needed = 4;
172227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
172327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        default:
172427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _needed = 0;
172527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
172627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
172727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < _needed) {
172827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
17292545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
17302545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "remaining() < needed";
173127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
173227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
173317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (params == NULL) {
173417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
173517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        params = (GLfloat *) (_paramsBase + _bufferOffset);
173617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
173727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glGetTexEnvfv(
173827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)env,
173927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
174027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfloat *)params
174127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
174227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
174327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
174427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_array) {
174527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        releasePointer(_env, _array, params, _exception ? JNI_FALSE : JNI_TRUE);
174627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
17472545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
17482545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
17492545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
175027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
175127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
175227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetTexEnviv ( GLenum env, GLenum pname, GLint *params ) */
175327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
175427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetTexEnviv__II_3II
175527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint env, jint pname, jintArray params_ref, jint offset) {
175627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _exception = 0;
17572545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
17582545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
175927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLint *params_base = (GLint *) 0;
176027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
176127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLint *params = (GLint *) 0;
176227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
176327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (!params_ref) {
176427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
17652545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
17662545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "params == null";
176727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
176827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
176927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (offset < 0) {
177027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
17712545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
17722545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
177327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
177427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
177527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    _remaining = _env->GetArrayLength(params_ref) - offset;
177627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    int _needed;
177727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    switch (pname) {
177827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_TEXTURE_ENV_MODE)
177927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_TEXTURE_ENV_MODE:
178027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_TEXTURE_ENV_MODE)
178127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_COMBINE_RGB)
178227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_COMBINE_RGB:
178327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_COMBINE_RGB)
178427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_COMBINE_ALPHA)
178527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_COMBINE_ALPHA:
178627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_COMBINE_ALPHA)
178727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _needed = 1;
178827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
178927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_TEXTURE_ENV_COLOR)
179027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_TEXTURE_ENV_COLOR:
179127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_TEXTURE_ENV_COLOR)
179227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _needed = 4;
179327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
179427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        default:
179527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _needed = 0;
179627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
179727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
179827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < _needed) {
179927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
18002545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
18012545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "length - offset < needed";
180227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
180327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
180427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    params_base = (GLint *)
180527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
180627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    params = params_base + offset;
180727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
180827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glGetTexEnviv(
180927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)env,
181027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
181127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLint *)params
181227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
181327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
181427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
181527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (params_base) {
181627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
181727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _exception ? JNI_ABORT: 0);
181827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
18192545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
18202545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
18212545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
182227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
182327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
182427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetTexEnviv ( GLenum env, GLenum pname, GLint *params ) */
182527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
182627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetTexEnviv__IILjava_nio_IntBuffer_2
182727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint env, jint pname, jobject params_buf) {
182827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _exception = 0;
18292545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
18302545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
183127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jarray _array = (jarray) 0;
183217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
183327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
183427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLint *params = (GLint *) 0;
183527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
183617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
183727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    int _needed;
183827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    switch (pname) {
183927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_TEXTURE_ENV_MODE)
184027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_TEXTURE_ENV_MODE:
184127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_TEXTURE_ENV_MODE)
184227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_COMBINE_RGB)
184327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_COMBINE_RGB:
184427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_COMBINE_RGB)
184527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_COMBINE_ALPHA)
184627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_COMBINE_ALPHA:
184727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_COMBINE_ALPHA)
184827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _needed = 1;
184927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
185027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_TEXTURE_ENV_COLOR)
185127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_TEXTURE_ENV_COLOR:
185227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_TEXTURE_ENV_COLOR)
185327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _needed = 4;
185427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
185527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        default:
185627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _needed = 0;
185727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
185827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
185927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < _needed) {
186027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
18612545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
18622545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "remaining() < needed";
186327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
186427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
186517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (params == NULL) {
186617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
186717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        params = (GLint *) (_paramsBase + _bufferOffset);
186817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
186927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glGetTexEnviv(
187027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)env,
187127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
187227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLint *)params
187327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
187427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
187527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
187627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_array) {
187727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        releasePointer(_env, _array, params, _exception ? JNI_FALSE : JNI_TRUE);
187827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
18792545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
18802545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
18812545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
188227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
188327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
188427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetTexEnvxv ( GLenum env, GLenum pname, GLfixed *params ) */
188527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
188627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetTexEnvxv__II_3II
188727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint env, jint pname, jintArray params_ref, jint offset) {
188827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _exception = 0;
18892545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
18902545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
189127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfixed *params_base = (GLfixed *) 0;
189227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
189327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfixed *params = (GLfixed *) 0;
189427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
189527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (!params_ref) {
189627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
18972545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
18982545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "params == null";
189927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
190027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
190127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (offset < 0) {
190227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
19032545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
19042545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
190527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
190627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
190727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    _remaining = _env->GetArrayLength(params_ref) - offset;
190827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    int _needed;
190927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    switch (pname) {
191027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_TEXTURE_ENV_MODE)
191127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_TEXTURE_ENV_MODE:
191227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_TEXTURE_ENV_MODE)
191327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_COMBINE_RGB)
191427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_COMBINE_RGB:
191527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_COMBINE_RGB)
191627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_COMBINE_ALPHA)
191727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_COMBINE_ALPHA:
191827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_COMBINE_ALPHA)
191927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _needed = 1;
192027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
192127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_TEXTURE_ENV_COLOR)
192227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_TEXTURE_ENV_COLOR:
192327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_TEXTURE_ENV_COLOR)
192427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _needed = 4;
192527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
192627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        default:
192727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _needed = 0;
192827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
192927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
193027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < _needed) {
193127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
19322545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
19332545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "length - offset < needed";
193427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
193527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
193627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    params_base = (GLfixed *)
193727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
193827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    params = params_base + offset;
193927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
194027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glGetTexEnvxv(
194127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)env,
194227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
194327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfixed *)params
194427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
194527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
194627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
194727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (params_base) {
194827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
194927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _exception ? JNI_ABORT: 0);
195027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
19512545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
19522545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
19532545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
195427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
195527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
195627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetTexEnvxv ( GLenum env, GLenum pname, GLfixed *params ) */
195727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
195827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetTexEnvxv__IILjava_nio_IntBuffer_2
195927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint env, jint pname, jobject params_buf) {
196027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _exception = 0;
19612545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
19622545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
196327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jarray _array = (jarray) 0;
196417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
196527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
196627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfixed *params = (GLfixed *) 0;
196727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
196817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
196927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    int _needed;
197027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    switch (pname) {
197127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_TEXTURE_ENV_MODE)
197227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_TEXTURE_ENV_MODE:
197327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_TEXTURE_ENV_MODE)
197427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_COMBINE_RGB)
197527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_COMBINE_RGB:
197627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_COMBINE_RGB)
197727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_COMBINE_ALPHA)
197827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_COMBINE_ALPHA:
197927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_COMBINE_ALPHA)
198027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _needed = 1;
198127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
198227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_TEXTURE_ENV_COLOR)
198327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_TEXTURE_ENV_COLOR:
198427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_TEXTURE_ENV_COLOR)
198527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _needed = 4;
198627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
198727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        default:
198827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _needed = 0;
198927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
199027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
199127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < _needed) {
199227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
19932545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
19942545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "remaining() < needed";
199527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
199627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
199717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (params == NULL) {
199817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
199917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        params = (GLfixed *) (_paramsBase + _bufferOffset);
200017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
200127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glGetTexEnvxv(
200227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)env,
200327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
200427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfixed *)params
200527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
200627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
200727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
200827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_array) {
200927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        releasePointer(_env, _array, params, _exception ? JNI_FALSE : JNI_TRUE);
201027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
20112545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
20122545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
20132545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
201427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
201527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
201627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetTexParameterfv ( GLenum target, GLenum pname, GLfloat *params ) */
201727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
201827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetTexParameterfv__II_3FI
201927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint pname, jfloatArray params_ref, jint offset) {
202027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _exception = 0;
20212545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
20222545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
202327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfloat *params_base = (GLfloat *) 0;
202427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
202527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfloat *params = (GLfloat *) 0;
202627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
202727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (!params_ref) {
202827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
20292545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
20302545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "params == null";
203127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
203227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
203327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (offset < 0) {
203427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
20352545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
20362545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
203727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
203827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
203927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    _remaining = _env->GetArrayLength(params_ref) - offset;
204027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < 1) {
204127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
20422545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
20432545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "length - offset < 1 < needed";
204427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
204527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
204627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    params_base = (GLfloat *)
204727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
204827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    params = params_base + offset;
204927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
205027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glGetTexParameterfv(
205127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)target,
205227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
205327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfloat *)params
205427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
205527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
205627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
205727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (params_base) {
205827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
205927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _exception ? JNI_ABORT: 0);
206027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
20612545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
20622545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
20632545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
206427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
206527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
206627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetTexParameterfv ( GLenum target, GLenum pname, GLfloat *params ) */
206727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
206827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetTexParameterfv__IILjava_nio_FloatBuffer_2
206927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) {
207027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _exception = 0;
20712545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
20722545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
207327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jarray _array = (jarray) 0;
207417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
207527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
207627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfloat *params = (GLfloat *) 0;
207727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
207817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
207927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < 1) {
208027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
20812545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
20822545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "remaining() < 1 < needed";
208327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
208427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
208517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (params == NULL) {
208617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
208717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        params = (GLfloat *) (_paramsBase + _bufferOffset);
208817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
208927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glGetTexParameterfv(
209027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)target,
209127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
209227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfloat *)params
209327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
209427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
209527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
209627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_array) {
209727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        releasePointer(_env, _array, params, _exception ? JNI_FALSE : JNI_TRUE);
209827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
20992545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
21002545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
21012545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
210227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
210327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
210427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetTexParameteriv ( GLenum target, GLenum pname, GLint *params ) */
210527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
210627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetTexParameteriv__II_3II
210727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint pname, jintArray params_ref, jint offset) {
210827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _exception = 0;
21092545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
21102545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
211127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLint *params_base = (GLint *) 0;
211227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
211327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLint *params = (GLint *) 0;
211427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
211527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (!params_ref) {
211627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
21172545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
21182545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "params == null";
211927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
212027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
212127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (offset < 0) {
212227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
21232545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
21242545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
212527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
212627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
212727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    _remaining = _env->GetArrayLength(params_ref) - offset;
212827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < 1) {
212927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
21302545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
21312545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "length - offset < 1 < needed";
213227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
213327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
213427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    params_base = (GLint *)
213527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
213627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    params = params_base + offset;
213727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
213827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glGetTexParameteriv(
213927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)target,
214027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
214127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLint *)params
214227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
214327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
214427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
214527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (params_base) {
214627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
214727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _exception ? JNI_ABORT: 0);
214827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
21492545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
21502545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
21512545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
215227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
215327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
215427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetTexParameteriv ( GLenum target, GLenum pname, GLint *params ) */
215527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
215627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetTexParameteriv__IILjava_nio_IntBuffer_2
215727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) {
215827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _exception = 0;
21592545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
21602545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
216127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jarray _array = (jarray) 0;
216217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
216327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
216427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLint *params = (GLint *) 0;
216527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
216617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
216727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < 1) {
216827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
21692545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
21702545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "remaining() < 1 < needed";
217127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
217227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
217317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (params == NULL) {
217417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
217517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        params = (GLint *) (_paramsBase + _bufferOffset);
217617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
217727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glGetTexParameteriv(
217827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)target,
217927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
218027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLint *)params
218127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
218227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
218327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
218427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_array) {
218527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        releasePointer(_env, _array, params, _exception ? JNI_FALSE : JNI_TRUE);
218627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
21872545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
21882545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
21892545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
219027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
219127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
219227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetTexParameterxv ( GLenum target, GLenum pname, GLfixed *params ) */
219327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
219427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetTexParameterxv__II_3II
219527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint pname, jintArray params_ref, jint offset) {
219627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _exception = 0;
21972545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
21982545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
219927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfixed *params_base = (GLfixed *) 0;
220027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
220127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfixed *params = (GLfixed *) 0;
220227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
220327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (!params_ref) {
220427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
22052545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
22062545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "params == null";
220727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
220827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
220927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (offset < 0) {
221027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
22112545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
22122545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
221327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
221427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
221527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    _remaining = _env->GetArrayLength(params_ref) - offset;
221627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < 1) {
221727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
22182545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
22192545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "length - offset < 1 < needed";
222027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
222127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
222227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    params_base = (GLfixed *)
222327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
222427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    params = params_base + offset;
222527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
222627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glGetTexParameterxv(
222727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)target,
222827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
222927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfixed *)params
223027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
223127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
223227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
223327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (params_base) {
223427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
223527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _exception ? JNI_ABORT: 0);
223627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
22372545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
22382545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
22392545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
224027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
224127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
224227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetTexParameterxv ( GLenum target, GLenum pname, GLfixed *params ) */
224327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
224427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetTexParameterxv__IILjava_nio_IntBuffer_2
224527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) {
224627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _exception = 0;
22472545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
22482545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
224927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jarray _array = (jarray) 0;
225017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
225127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
225227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfixed *params = (GLfixed *) 0;
225327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
225417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
225527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < 1) {
225627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _exception = 1;
22572545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
22582545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "remaining() < 1 < needed";
225927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
226027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
226117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (params == NULL) {
226217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
226317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        params = (GLfixed *) (_paramsBase + _bufferOffset);
226417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
226527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glGetTexParameterxv(
226627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)target,
226727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
226827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfixed *)params
226927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
227027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
227127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
227227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_array) {
227327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        releasePointer(_env, _array, params, _exception ? JNI_FALSE : JNI_TRUE);
227427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
22752545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
22762545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
22772545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
227827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
227927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
228027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* GLboolean glIsBuffer ( GLuint buffer ) */
228127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic jboolean
228227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glIsBuffer__I
228327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint buffer) {
228427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLboolean _returnValue;
228527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    _returnValue = glIsBuffer(
228627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLuint)buffer
228727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
228827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    return _returnValue;
228927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
229027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
229127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* GLboolean glIsEnabled ( GLenum cap ) */
229227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic jboolean
229327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glIsEnabled__I
229427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint cap) {
229527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLboolean _returnValue;
229627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    _returnValue = glIsEnabled(
229727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)cap
229827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
229927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    return _returnValue;
230027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
230127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
230227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* GLboolean glIsTexture ( GLuint texture ) */
230327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic jboolean
230427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glIsTexture__I
230527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint texture) {
230627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLboolean _returnValue;
230727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    _returnValue = glIsTexture(
230827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLuint)texture
230927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
231027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    return _returnValue;
231127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
231227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
231327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glNormalPointer ( GLenum type, GLsizei stride, GLint offset ) */
231427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
231527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glNormalPointer__III
231627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint type, jint stride, jint offset) {
231727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glNormalPointer(
231827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)type,
231927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLsizei)stride,
232027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (const GLvoid *)offset
232127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
232227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
232327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
232427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glPointParameterf ( GLenum pname, GLfloat param ) */
232527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
232627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glPointParameterf__IF
232727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint pname, jfloat param) {
232827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glPointParameterf(
232927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
233027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfloat)param
233127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
233227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
233327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
233427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glPointParameterfv ( GLenum pname, const GLfloat *params ) */
233527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
233627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glPointParameterfv__I_3FI
233727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint pname, jfloatArray params_ref, jint offset) {
23382545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
23392545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
23402545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
234127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfloat *params_base = (GLfloat *) 0;
234227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
234327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfloat *params = (GLfloat *) 0;
234427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
234527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (!params_ref) {
23462545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
23472545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
23482545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "params == null";
234927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
235027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
235127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (offset < 0) {
23522545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
23532545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
23542545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
235527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
235627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
235727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    _remaining = _env->GetArrayLength(params_ref) - offset;
235827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < 1) {
23592545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
23602545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
23612545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "length - offset < 1 < needed";
236227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
236327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
236427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    params_base = (GLfloat *)
236527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
236627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    params = params_base + offset;
236727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
236827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glPointParameterfv(
236927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
237027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfloat *)params
237127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
237227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
237327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
237427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (params_base) {
237527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
237627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            JNI_ABORT);
237727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
23782545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
23792545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
23802545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
238127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
238227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
238327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glPointParameterfv ( GLenum pname, const GLfloat *params ) */
238427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
238527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glPointParameterfv__ILjava_nio_FloatBuffer_2
238627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) {
23872545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
23882545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
23892545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
239027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jarray _array = (jarray) 0;
239117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
239227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
239327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfloat *params = (GLfloat *) 0;
239427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
239517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
239627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < 1) {
23972545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
23982545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
23992545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "remaining() < 1 < needed";
240027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
240127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
240217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (params == NULL) {
240317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
240417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        params = (GLfloat *) (_paramsBase + _bufferOffset);
240517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
240627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glPointParameterfv(
240727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
240827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfloat *)params
240927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
241027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
241127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
241227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_array) {
241327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        releasePointer(_env, _array, params, JNI_FALSE);
241427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
24152545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
24162545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
24172545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
241827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
241927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
242027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glPointParameterx ( GLenum pname, GLfixed param ) */
242127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
242227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glPointParameterx__II
242327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint pname, jint param) {
242427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glPointParameterx(
242527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
242627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfixed)param
242727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
242827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
242927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
243027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glPointParameterxv ( GLenum pname, const GLfixed *params ) */
243127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
243227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glPointParameterxv__I_3II
243327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint pname, jintArray params_ref, jint offset) {
24342545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
24352545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
24362545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
243727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfixed *params_base = (GLfixed *) 0;
243827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
243927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfixed *params = (GLfixed *) 0;
244027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
244127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (!params_ref) {
24422545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
24432545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
24442545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "params == null";
244527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
244627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
244727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (offset < 0) {
24482545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
24492545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
24502545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
245127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
245227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
245327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    _remaining = _env->GetArrayLength(params_ref) - offset;
245427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < 1) {
24552545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
24562545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
24572545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "length - offset < 1 < needed";
245827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
245927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
246027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    params_base = (GLfixed *)
246127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
246227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    params = params_base + offset;
246327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
246427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glPointParameterxv(
246527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
246627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfixed *)params
246727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
246827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
246927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
247027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (params_base) {
247127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
247227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            JNI_ABORT);
247327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
24742545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
24752545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
24762545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
247727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
247827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
247927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glPointParameterxv ( GLenum pname, const GLfixed *params ) */
248027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
248127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glPointParameterxv__ILjava_nio_IntBuffer_2
248227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) {
24832545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
24842545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
24852545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
248627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jarray _array = (jarray) 0;
248717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
248827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
248927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfixed *params = (GLfixed *) 0;
249027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
249117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
249227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < 1) {
24932545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
24942545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
24952545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "remaining() < 1 < needed";
249627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
249727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
249817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (params == NULL) {
249917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
250017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        params = (GLfixed *) (_paramsBase + _bufferOffset);
250117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
250227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glPointParameterxv(
250327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
250427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfixed *)params
250527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
250627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
250727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
250827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_array) {
250927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        releasePointer(_env, _array, params, JNI_FALSE);
251027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
25112545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
25122545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
25132545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
251427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
251527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
251627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glPointSizePointerOES ( GLenum type, GLsizei stride, const GLvoid *pointer ) */
251727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
2518be6eac828f5af8b608c3fa6749330f1dcd6b6206Jack Palevichandroid_glPointSizePointerOESBounds__IILjava_nio_Buffer_2I
2519be6eac828f5af8b608c3fa6749330f1dcd6b6206Jack 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
2525be6eac828f5af8b608c3fa6749330f1dcd6b6206Jack Palevich    if (pointer_buf) {
2526be6eac828f5af8b608c3fa6749330f1dcd6b6206Jack Palevich        pointer = (GLvoid *) getDirectBufferPointer(_env, pointer_buf);
2527be6eac828f5af8b608c3fa6749330f1dcd6b6206Jack Palevich        if ( ! pointer ) {
2528be6eac828f5af8b608c3fa6749330f1dcd6b6206Jack Palevich            return;
2529be6eac828f5af8b608c3fa6749330f1dcd6b6206Jack Palevich        }
2530be6eac828f5af8b608c3fa6749330f1dcd6b6206Jack Palevich    }
2531be6eac828f5af8b608c3fa6749330f1dcd6b6206Jack Palevich    glPointSizePointerOESBounds(
253227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)type,
253327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLsizei)stride,
2534be6eac828f5af8b608c3fa6749330f1dcd6b6206Jack Palevich        (GLvoid *)pointer,
2535be6eac828f5af8b608c3fa6749330f1dcd6b6206Jack Palevich        (GLsizei)remaining
253627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
253727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
253827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
253927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glTexCoordPointer ( GLint size, GLenum type, GLsizei stride, GLint offset ) */
254027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
254127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glTexCoordPointer__IIII
254227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint size, jint type, jint stride, jint offset) {
254327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glTexCoordPointer(
254427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLint)size,
254527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)type,
254627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLsizei)stride,
254727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (const GLvoid *)offset
254827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
254927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
255027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
255127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glTexEnvi ( GLenum target, GLenum pname, GLint param ) */
255227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
255327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glTexEnvi__III
255427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint pname, jint param) {
255527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glTexEnvi(
255627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)target,
255727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
255827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLint)param
255927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
256027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
256127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
256227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glTexEnviv ( GLenum target, GLenum pname, const GLint *params ) */
256327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
256427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glTexEnviv__II_3II
256527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint pname, jintArray params_ref, jint offset) {
25662545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
25672545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
25682545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
256927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLint *params_base = (GLint *) 0;
257027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
257127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLint *params = (GLint *) 0;
257227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
257327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (!params_ref) {
25742545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
25752545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
25762545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "params == null";
257727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
257827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
257927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (offset < 0) {
25802545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
25812545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
25822545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
258327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
258427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
258527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    _remaining = _env->GetArrayLength(params_ref) - offset;
258627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    int _needed;
258727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    switch (pname) {
258827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_TEXTURE_ENV_MODE)
258927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_TEXTURE_ENV_MODE:
259027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_TEXTURE_ENV_MODE)
259127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_COMBINE_RGB)
259227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_COMBINE_RGB:
259327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_COMBINE_RGB)
259427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_COMBINE_ALPHA)
259527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_COMBINE_ALPHA:
259627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_COMBINE_ALPHA)
259727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _needed = 1;
259827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
259927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_TEXTURE_ENV_COLOR)
260027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_TEXTURE_ENV_COLOR:
260127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_TEXTURE_ENV_COLOR)
260227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _needed = 4;
260327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
260427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        default:
260527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _needed = 0;
260627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
260727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
260827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < _needed) {
26092545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
26102545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
26112545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "length - offset < needed";
261227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
261327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
261427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    params_base = (GLint *)
261527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
261627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    params = params_base + offset;
261727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
261827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glTexEnviv(
261927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)target,
262027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
262127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLint *)params
262227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
262327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
262427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
262527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (params_base) {
262627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
262727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            JNI_ABORT);
262827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
26292545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
26302545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
26312545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
263227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
263327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
263427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glTexEnviv ( GLenum target, GLenum pname, const GLint *params ) */
263527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
263627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glTexEnviv__IILjava_nio_IntBuffer_2
263727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) {
26382545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
26392545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
26402545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
264127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jarray _array = (jarray) 0;
264217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
264327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
264427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLint *params = (GLint *) 0;
264527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
264617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
264727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    int _needed;
264827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    switch (pname) {
264927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_TEXTURE_ENV_MODE)
265027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_TEXTURE_ENV_MODE:
265127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_TEXTURE_ENV_MODE)
265227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_COMBINE_RGB)
265327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_COMBINE_RGB:
265427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_COMBINE_RGB)
265527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_COMBINE_ALPHA)
265627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_COMBINE_ALPHA:
265727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_COMBINE_ALPHA)
265827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _needed = 1;
265927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
266027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_TEXTURE_ENV_COLOR)
266127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        case GL_TEXTURE_ENV_COLOR:
266227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_TEXTURE_ENV_COLOR)
266327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _needed = 4;
266427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
266527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        default:
266627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            _needed = 0;
266727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            break;
266827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
266927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < _needed) {
26702545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
26712545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
26722545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "remaining() < needed";
267327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
267427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
267517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (params == NULL) {
267617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
267717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        params = (GLint *) (_paramsBase + _bufferOffset);
267817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
267927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glTexEnviv(
268027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)target,
268127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
268227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLint *)params
268327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
268427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
268527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
268627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_array) {
268727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        releasePointer(_env, _array, params, JNI_FALSE);
268827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
26892545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
26902545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
26912545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
269227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
269327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
269427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glTexParameterfv ( GLenum target, GLenum pname, const GLfloat *params ) */
269527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
269627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glTexParameterfv__II_3FI
269727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint pname, jfloatArray params_ref, jint offset) {
26982545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
26992545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
27002545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
270127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfloat *params_base = (GLfloat *) 0;
270227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
270327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfloat *params = (GLfloat *) 0;
270427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
270527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (!params_ref) {
27062545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
27072545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
27082545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "params == null";
270927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
271027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
271127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (offset < 0) {
27122545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
27132545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
27142545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
271527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
271627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
271727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    _remaining = _env->GetArrayLength(params_ref) - offset;
271827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < 1) {
27192545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
27202545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
27212545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "length - offset < 1 < needed";
272227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
272327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
272427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    params_base = (GLfloat *)
272527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
272627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    params = params_base + offset;
272727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
272827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glTexParameterfv(
272927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)target,
273027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
273127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfloat *)params
273227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
273327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
273427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
273527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (params_base) {
273627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
273727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            JNI_ABORT);
273827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
27392545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
27402545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
27412545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
274227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
274327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
274427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glTexParameterfv ( GLenum target, GLenum pname, const GLfloat *params ) */
274527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
274627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glTexParameterfv__IILjava_nio_FloatBuffer_2
274727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) {
27482545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
27492545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
27502545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
275127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jarray _array = (jarray) 0;
275217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
275327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
275427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfloat *params = (GLfloat *) 0;
275527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
275617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
275727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < 1) {
27582545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
27592545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
27602545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "remaining() < 1 < needed";
276127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
276227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
276317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (params == NULL) {
276417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
276517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        params = (GLfloat *) (_paramsBase + _bufferOffset);
276617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
276727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glTexParameterfv(
276827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)target,
276927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
277027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfloat *)params
277127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
277227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
277327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
277427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_array) {
277527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        releasePointer(_env, _array, params, JNI_FALSE);
277627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
27772545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
27782545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
27792545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
278027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
278127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
278227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glTexParameteri ( GLenum target, GLenum pname, GLint param ) */
278327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
278427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glTexParameteri__III
278527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint pname, jint param) {
278627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glTexParameteri(
278727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)target,
278827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
278927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLint)param
279027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
279127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
279227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
279327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glTexParameteriv ( GLenum target, GLenum pname, const GLint *params ) */
279427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
279527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glTexParameteriv__II_3II
279627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint pname, jintArray params_ref, jint offset) {
27972545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
27982545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
27992545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
280027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLint *params_base = (GLint *) 0;
280127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
280227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLint *params = (GLint *) 0;
280327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
280427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (!params_ref) {
28052545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
28062545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
28072545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "params == null";
280827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
280927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
281027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (offset < 0) {
28112545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
28122545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
28132545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
281427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
281527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
281627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    _remaining = _env->GetArrayLength(params_ref) - offset;
281727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < 1) {
28182545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
28192545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
28202545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "length - offset < 1 < needed";
282127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
282227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
282327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    params_base = (GLint *)
282427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
282527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    params = params_base + offset;
282627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
282727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glTexParameteriv(
282827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)target,
282927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
283027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLint *)params
283127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
283227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
283327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
283427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (params_base) {
283527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
283627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            JNI_ABORT);
283727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
28382545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
28392545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
28402545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
284127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
284227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
284327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glTexParameteriv ( GLenum target, GLenum pname, const GLint *params ) */
284427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
284527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glTexParameteriv__IILjava_nio_IntBuffer_2
284627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) {
28472545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
28482545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
28492545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
285027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jarray _array = (jarray) 0;
285117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
285227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
285327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLint *params = (GLint *) 0;
285427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
285517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
285627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < 1) {
28572545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
28582545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
28592545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "remaining() < 1 < needed";
286027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
286127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
286217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (params == NULL) {
286317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
286417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        params = (GLint *) (_paramsBase + _bufferOffset);
286517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
286627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glTexParameteriv(
286727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)target,
286827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
286927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLint *)params
287027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
287127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
287227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
287327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_array) {
287427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        releasePointer(_env, _array, params, JNI_FALSE);
287527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
28762545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
28772545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
28782545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
287927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
288027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
288127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glTexParameterxv ( GLenum target, GLenum pname, const GLfixed *params ) */
288227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
288327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glTexParameterxv__II_3II
288427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint pname, jintArray params_ref, jint offset) {
28852545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
28862545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
28872545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
288827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfixed *params_base = (GLfixed *) 0;
288927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
289027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfixed *params = (GLfixed *) 0;
289127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
289227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (!params_ref) {
28932545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
28942545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
28952545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "params == null";
289627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
289727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
289827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (offset < 0) {
28992545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
29002545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
29012545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
290227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
290327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
290427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    _remaining = _env->GetArrayLength(params_ref) - offset;
290527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < 1) {
29062545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
29072545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
29082545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "length - offset < 1 < needed";
290927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
291027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
291127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    params_base = (GLfixed *)
291227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
291327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    params = params_base + offset;
291427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
291527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glTexParameterxv(
291627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)target,
291727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
291827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfixed *)params
291927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
292027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
292127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
292227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (params_base) {
292327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
292427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich            JNI_ABORT);
292527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
29262545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
29272545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
29282545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
292927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
293027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
293127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glTexParameterxv ( GLenum target, GLenum pname, const GLfixed *params ) */
293227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
293327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glTexParameterxv__IILjava_nio_IntBuffer_2
293427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) {
29352545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
29362545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
29372545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
293827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jarray _array = (jarray) 0;
293917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
294027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    jint _remaining;
294127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    GLfixed *params = (GLfixed *) 0;
294227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
294317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
294427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_remaining < 1) {
29452545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
29462545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
29472545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "remaining() < 1 < needed";
294827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        goto exit;
294927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
295017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (params == NULL) {
295117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
295217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        params = (GLfixed *) (_paramsBase + _bufferOffset);
295317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
295427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glTexParameterxv(
295527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)target,
295627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)pname,
295727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLfixed *)params
295827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
295927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
296027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit:
296127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    if (_array) {
296227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        releasePointer(_env, _array, params, JNI_FALSE);
296327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    }
29642545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
29652545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
29662545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
296727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
296827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
296927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glVertexPointer ( GLint size, GLenum type, GLsizei stride, GLint offset ) */
297027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void
297127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glVertexPointer__IIII
297227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich  (JNIEnv *_env, jobject _this, jint size, jint type, jint stride, jint offset) {
297327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    glVertexPointer(
297427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLint)size,
297527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLenum)type,
297627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (GLsizei)stride,
297727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich        (const GLvoid *)offset
297827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    );
297927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
298027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
298127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic const char *classPathName = "android/opengl/GLES11";
298227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
298327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic JNINativeMethod methods[] = {
298427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"_nativeClassInit", "()V", (void*)nativeClassInit },
298527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glBindBuffer", "(II)V", (void *) android_glBindBuffer__II },
298627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glBufferData", "(IILjava/nio/Buffer;I)V", (void *) android_glBufferData__IILjava_nio_Buffer_2I },
298727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glBufferSubData", "(IIILjava/nio/Buffer;)V", (void *) android_glBufferSubData__IIILjava_nio_Buffer_2 },
298827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glClipPlanef", "(I[FI)V", (void *) android_glClipPlanef__I_3FI },
298927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glClipPlanef", "(ILjava/nio/FloatBuffer;)V", (void *) android_glClipPlanef__ILjava_nio_FloatBuffer_2 },
299027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glClipPlanex", "(I[II)V", (void *) android_glClipPlanex__I_3II },
299127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glClipPlanex", "(ILjava/nio/IntBuffer;)V", (void *) android_glClipPlanex__ILjava_nio_IntBuffer_2 },
299227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glColor4ub", "(BBBB)V", (void *) android_glColor4ub__BBBB },
299327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glColorPointer", "(IIII)V", (void *) android_glColorPointer__IIII },
299427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glDeleteBuffers", "(I[II)V", (void *) android_glDeleteBuffers__I_3II },
299527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glDeleteBuffers", "(ILjava/nio/IntBuffer;)V", (void *) android_glDeleteBuffers__ILjava_nio_IntBuffer_2 },
299627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glDrawElements", "(IIII)V", (void *) android_glDrawElements__IIII },
299727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGenBuffers", "(I[II)V", (void *) android_glGenBuffers__I_3II },
299827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGenBuffers", "(ILjava/nio/IntBuffer;)V", (void *) android_glGenBuffers__ILjava_nio_IntBuffer_2 },
299927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetBooleanv", "(I[ZI)V", (void *) android_glGetBooleanv__I_3ZI },
300027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetBooleanv", "(ILjava/nio/IntBuffer;)V", (void *) android_glGetBooleanv__ILjava_nio_IntBuffer_2 },
300127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetBufferParameteriv", "(II[II)V", (void *) android_glGetBufferParameteriv__II_3II },
300227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetBufferParameteriv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetBufferParameteriv__IILjava_nio_IntBuffer_2 },
300327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetClipPlanef", "(I[FI)V", (void *) android_glGetClipPlanef__I_3FI },
300427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetClipPlanef", "(ILjava/nio/FloatBuffer;)V", (void *) android_glGetClipPlanef__ILjava_nio_FloatBuffer_2 },
300527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetClipPlanex", "(I[II)V", (void *) android_glGetClipPlanex__I_3II },
300627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetClipPlanex", "(ILjava/nio/IntBuffer;)V", (void *) android_glGetClipPlanex__ILjava_nio_IntBuffer_2 },
300727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetFixedv", "(I[II)V", (void *) android_glGetFixedv__I_3II },
300827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetFixedv", "(ILjava/nio/IntBuffer;)V", (void *) android_glGetFixedv__ILjava_nio_IntBuffer_2 },
300927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetFloatv", "(I[FI)V", (void *) android_glGetFloatv__I_3FI },
301027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetFloatv", "(ILjava/nio/FloatBuffer;)V", (void *) android_glGetFloatv__ILjava_nio_FloatBuffer_2 },
301127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetLightfv", "(II[FI)V", (void *) android_glGetLightfv__II_3FI },
301227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetLightfv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glGetLightfv__IILjava_nio_FloatBuffer_2 },
301327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetLightxv", "(II[II)V", (void *) android_glGetLightxv__II_3II },
301427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetLightxv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetLightxv__IILjava_nio_IntBuffer_2 },
301527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetMaterialfv", "(II[FI)V", (void *) android_glGetMaterialfv__II_3FI },
301627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetMaterialfv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glGetMaterialfv__IILjava_nio_FloatBuffer_2 },
301727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetMaterialxv", "(II[II)V", (void *) android_glGetMaterialxv__II_3II },
301827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetMaterialxv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetMaterialxv__IILjava_nio_IntBuffer_2 },
301927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetTexEnvfv", "(II[FI)V", (void *) android_glGetTexEnvfv__II_3FI },
302027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetTexEnvfv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glGetTexEnvfv__IILjava_nio_FloatBuffer_2 },
302127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetTexEnviv", "(II[II)V", (void *) android_glGetTexEnviv__II_3II },
302227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetTexEnviv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetTexEnviv__IILjava_nio_IntBuffer_2 },
302327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetTexEnvxv", "(II[II)V", (void *) android_glGetTexEnvxv__II_3II },
302427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetTexEnvxv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetTexEnvxv__IILjava_nio_IntBuffer_2 },
302527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetTexParameterfv", "(II[FI)V", (void *) android_glGetTexParameterfv__II_3FI },
302627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetTexParameterfv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glGetTexParameterfv__IILjava_nio_FloatBuffer_2 },
302727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetTexParameteriv", "(II[II)V", (void *) android_glGetTexParameteriv__II_3II },
302827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetTexParameteriv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetTexParameteriv__IILjava_nio_IntBuffer_2 },
302927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetTexParameterxv", "(II[II)V", (void *) android_glGetTexParameterxv__II_3II },
303027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetTexParameterxv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetTexParameterxv__IILjava_nio_IntBuffer_2 },
303127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glIsBuffer", "(I)Z", (void *) android_glIsBuffer__I },
303227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glIsEnabled", "(I)Z", (void *) android_glIsEnabled__I },
303327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glIsTexture", "(I)Z", (void *) android_glIsTexture__I },
303427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glNormalPointer", "(III)V", (void *) android_glNormalPointer__III },
303527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glPointParameterf", "(IF)V", (void *) android_glPointParameterf__IF },
303627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glPointParameterfv", "(I[FI)V", (void *) android_glPointParameterfv__I_3FI },
303727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glPointParameterfv", "(ILjava/nio/FloatBuffer;)V", (void *) android_glPointParameterfv__ILjava_nio_FloatBuffer_2 },
303827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glPointParameterx", "(II)V", (void *) android_glPointParameterx__II },
303927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glPointParameterxv", "(I[II)V", (void *) android_glPointParameterxv__I_3II },
304027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glPointParameterxv", "(ILjava/nio/IntBuffer;)V", (void *) android_glPointParameterxv__ILjava_nio_IntBuffer_2 },
3041be6eac828f5af8b608c3fa6749330f1dcd6b6206Jack Palevich{"glPointSizePointerOESBounds", "(IILjava/nio/Buffer;I)V", (void *) android_glPointSizePointerOESBounds__IILjava_nio_Buffer_2I },
304227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glTexCoordPointer", "(IIII)V", (void *) android_glTexCoordPointer__IIII },
304327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glTexEnvi", "(III)V", (void *) android_glTexEnvi__III },
304427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glTexEnviv", "(II[II)V", (void *) android_glTexEnviv__II_3II },
304527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glTexEnviv", "(IILjava/nio/IntBuffer;)V", (void *) android_glTexEnviv__IILjava_nio_IntBuffer_2 },
304627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glTexParameterfv", "(II[FI)V", (void *) android_glTexParameterfv__II_3FI },
304727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glTexParameterfv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glTexParameterfv__IILjava_nio_FloatBuffer_2 },
304827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glTexParameteri", "(III)V", (void *) android_glTexParameteri__III },
304927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glTexParameteriv", "(II[II)V", (void *) android_glTexParameteriv__II_3II },
305027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glTexParameteriv", "(IILjava/nio/IntBuffer;)V", (void *) android_glTexParameteriv__IILjava_nio_IntBuffer_2 },
305127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glTexParameterxv", "(II[II)V", (void *) android_glTexParameterxv__II_3II },
305227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glTexParameterxv", "(IILjava/nio/IntBuffer;)V", (void *) android_glTexParameterxv__IILjava_nio_IntBuffer_2 },
305327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glVertexPointer", "(IIII)V", (void *) android_glVertexPointer__IIII },
305427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich};
305527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich
305627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichint register_android_opengl_jni_GLES11(JNIEnv *_env)
305727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{
305827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    int err;
305927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    err = android::AndroidRuntime::registerNativeMethods(_env, classPathName, methods, NELEM(methods));
306027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich    return err;
306127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}
3062