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 * 7327f8002e591b5c579f75b2580183b5d1c4219cd4Jack PalevichgetPointer(JNIEnv *_env, jobject buffer, jarray *array, jint *remaining) 7427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{ 7527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint position; 7627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint limit; 7727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint elementSizeShift; 7827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jlong pointer; 7927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint offset; 8027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich void *data; 8127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 8227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich position = _env->GetIntField(buffer, positionID); 8327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich limit = _env->GetIntField(buffer, limitID); 8427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich elementSizeShift = _env->GetIntField(buffer, elementSizeShiftID); 8527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich *remaining = (limit - position) << elementSizeShift; 8627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich pointer = _env->CallStaticLongMethod(nioAccessClass, 8727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich getBasePointerID, buffer); 8827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (pointer != 0L) { 8927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich *array = NULL; 9027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich return (void *) (jint) pointer; 9127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 9224ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes 9327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich *array = (jarray) _env->CallStaticObjectMethod(nioAccessClass, 9427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich getBaseArrayID, buffer); 9527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich offset = _env->CallStaticIntMethod(nioAccessClass, 9627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich getBaseArrayOffsetID, buffer); 9727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich data = _env->GetPrimitiveArrayCritical(*array, (jboolean *) 0); 9824ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes 9927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich return (void *) ((char *) data + offset); 10027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 10127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 10227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 10327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 10427f8002e591b5c579f75b2580183b5d1c4219cd4Jack PalevichreleasePointer(JNIEnv *_env, jarray array, void *data, jboolean commit) 10527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{ 10627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _env->ReleasePrimitiveArrayCritical(array, data, 10727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich commit ? 0 : JNI_ABORT); 10827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 10927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 110be6eac828f5af8b608c3fa6749330f1dcd6b6206Jack Palevichstatic void * 111be6eac828f5af8b608c3fa6749330f1dcd6b6206Jack PalevichgetDirectBufferPointer(JNIEnv *_env, jobject buffer) { 112be6eac828f5af8b608c3fa6749330f1dcd6b6206Jack Palevich char* buf = (char*) _env->GetDirectBufferAddress(buffer); 113be6eac828f5af8b608c3fa6749330f1dcd6b6206Jack Palevich if (buf) { 114be6eac828f5af8b608c3fa6749330f1dcd6b6206Jack Palevich jint position = _env->GetIntField(buffer, positionID); 115be6eac828f5af8b608c3fa6749330f1dcd6b6206Jack Palevich jint elementSizeShift = _env->GetIntField(buffer, elementSizeShiftID); 116be6eac828f5af8b608c3fa6749330f1dcd6b6206Jack Palevich buf += position << elementSizeShift; 117be6eac828f5af8b608c3fa6749330f1dcd6b6206Jack Palevich } else { 11824ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", 11924ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes "Must use a native order direct Buffer"); 120be6eac828f5af8b608c3fa6749330f1dcd6b6206Jack Palevich } 121be6eac828f5af8b608c3fa6749330f1dcd6b6206Jack Palevich return (void*) buf; 122be6eac828f5af8b608c3fa6749330f1dcd6b6206Jack Palevich} 123be6eac828f5af8b608c3fa6749330f1dcd6b6206Jack Palevich 12427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich// -------------------------------------------------------------------------- 12527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glBindBuffer ( GLenum target, GLuint buffer ) */ 12627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 12727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glBindBuffer__II 12827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint target, jint buffer) { 12927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glBindBuffer( 13027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)target, 13127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLuint)buffer 13227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 13327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 13427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 13527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glBufferData ( GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage ) */ 13627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 13727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glBufferData__IILjava_nio_Buffer_2I 13827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint target, jint size, jobject data_buf, jint usage) { 13927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jarray _array = (jarray) 0; 14027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _remaining; 14127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLvoid *data = (GLvoid *) 0; 14227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 14327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (data_buf) { 14427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich data = (GLvoid *)getPointer(_env, data_buf, &_array, &_remaining); 145c620a52b69a5f29563e06497e30877809f5d67a5Jack Palevich if (_remaining < size) { 14624ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "remaining() < size"); 147c620a52b69a5f29563e06497e30877809f5d67a5Jack Palevich goto exit; 148c620a52b69a5f29563e06497e30877809f5d67a5Jack Palevich } 14927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 15027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glBufferData( 15127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)target, 15227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLsizeiptr)size, 15327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLvoid *)data, 15427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)usage 15527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 156c620a52b69a5f29563e06497e30877809f5d67a5Jack Palevich 157c620a52b69a5f29563e06497e30877809f5d67a5Jack Palevichexit: 15827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_array) { 15927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich releasePointer(_env, _array, data, JNI_FALSE); 16027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 16127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 16227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 16327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glBufferSubData ( GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data ) */ 16427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 16527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glBufferSubData__IIILjava_nio_Buffer_2 16627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint target, jint offset, jint size, jobject data_buf) { 16727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jarray _array = (jarray) 0; 16827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _remaining; 16927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLvoid *data = (GLvoid *) 0; 17027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 17127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich data = (GLvoid *)getPointer(_env, data_buf, &_array, &_remaining); 172c620a52b69a5f29563e06497e30877809f5d67a5Jack Palevich if (_remaining < size) { 17324ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "remaining() < size"); 174c620a52b69a5f29563e06497e30877809f5d67a5Jack Palevich goto exit; 175c620a52b69a5f29563e06497e30877809f5d67a5Jack Palevich } 17627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glBufferSubData( 17727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)target, 17827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLintptr)offset, 17927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLsizeiptr)size, 18027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLvoid *)data 18127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 182c620a52b69a5f29563e06497e30877809f5d67a5Jack Palevich 183c620a52b69a5f29563e06497e30877809f5d67a5Jack Palevichexit: 18427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_array) { 18527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich releasePointer(_env, _array, data, JNI_FALSE); 18627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 18727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 18827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 18927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glClipPlanef ( GLenum plane, const GLfloat *equation ) */ 19027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 19127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glClipPlanef__I_3FI 19227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint plane, jfloatArray equation_ref, jint offset) { 19327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfloat *equation_base = (GLfloat *) 0; 19427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _remaining; 19527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfloat *equation = (GLfloat *) 0; 19627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 19727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (!equation_ref) { 19824ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "equation == null"); 19927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 20027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 20127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (offset < 0) { 20224ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "offset < 0"); 20327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 20427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 20527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _remaining = _env->GetArrayLength(equation_ref) - offset; 20627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich equation_base = (GLfloat *) 20727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _env->GetPrimitiveArrayCritical(equation_ref, (jboolean *)0); 20827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich equation = equation_base + offset; 20927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 21027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glClipPlanef( 21127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)plane, 21227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfloat *)equation 21327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 21427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 21527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit: 21627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (equation_base) { 21727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _env->ReleasePrimitiveArrayCritical(equation_ref, equation_base, 21827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich JNI_ABORT); 21927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 22027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 22127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 22227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glClipPlanef ( GLenum plane, const GLfloat *equation ) */ 22327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 22427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glClipPlanef__ILjava_nio_FloatBuffer_2 22527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint plane, jobject equation_buf) { 22627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jarray _array = (jarray) 0; 22727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _remaining; 22827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfloat *equation = (GLfloat *) 0; 22927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 23027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich equation = (GLfloat *)getPointer(_env, equation_buf, &_array, &_remaining); 23127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glClipPlanef( 23227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)plane, 23327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfloat *)equation 23427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 23527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_array) { 23627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich releasePointer(_env, _array, equation, JNI_FALSE); 23727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 23827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 23927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 24027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glClipPlanex ( GLenum plane, const GLfixed *equation ) */ 24127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 24227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glClipPlanex__I_3II 24327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint plane, jintArray equation_ref, jint offset) { 24427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfixed *equation_base = (GLfixed *) 0; 24527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _remaining; 24627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfixed *equation = (GLfixed *) 0; 24727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 24827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (!equation_ref) { 24924ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "equation == null"); 25027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 25127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 25227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (offset < 0) { 25324ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "offset < 0"); 25427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 25527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 25627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _remaining = _env->GetArrayLength(equation_ref) - offset; 25727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich equation_base = (GLfixed *) 25827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _env->GetPrimitiveArrayCritical(equation_ref, (jboolean *)0); 25927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich equation = equation_base + offset; 26027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 26127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glClipPlanex( 26227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)plane, 26327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfixed *)equation 26427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 26527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 26627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit: 26727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (equation_base) { 26827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _env->ReleasePrimitiveArrayCritical(equation_ref, equation_base, 26927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich JNI_ABORT); 27027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 27127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 27227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 27327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glClipPlanex ( GLenum plane, const GLfixed *equation ) */ 27427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 27527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glClipPlanex__ILjava_nio_IntBuffer_2 27627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint plane, jobject equation_buf) { 27727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jarray _array = (jarray) 0; 27827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _remaining; 27927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfixed *equation = (GLfixed *) 0; 28027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 28127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich equation = (GLfixed *)getPointer(_env, equation_buf, &_array, &_remaining); 28227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glClipPlanex( 28327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)plane, 28427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfixed *)equation 28527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 28627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_array) { 28727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich releasePointer(_env, _array, equation, JNI_FALSE); 28827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 28927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 29027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 29127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glColor4ub ( GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha ) */ 29227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 29327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glColor4ub__BBBB 29427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jbyte red, jbyte green, jbyte blue, jbyte alpha) { 29527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glColor4ub( 29627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLubyte)red, 29727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLubyte)green, 29827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLubyte)blue, 29927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLubyte)alpha 30027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 30127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 30227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 30327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glColorPointer ( GLint size, GLenum type, GLsizei stride, GLint offset ) */ 30427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 30527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glColorPointer__IIII 30627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint size, jint type, jint stride, jint offset) { 30727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glColorPointer( 30827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLint)size, 30927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)type, 31027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLsizei)stride, 31127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (const GLvoid *)offset 31227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 31327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 31427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 31527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glDeleteBuffers ( GLsizei n, const GLuint *buffers ) */ 31627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 31727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glDeleteBuffers__I_3II 31827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint n, jintArray buffers_ref, jint offset) { 31927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLuint *buffers_base = (GLuint *) 0; 32027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _remaining; 32127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLuint *buffers = (GLuint *) 0; 32227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 32327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (!buffers_ref) { 32424ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "buffers == null"); 32527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 32627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 32727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (offset < 0) { 32824ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "offset < 0"); 32927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 33027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 33127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _remaining = _env->GetArrayLength(buffers_ref) - offset; 33227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_remaining < n) { 33324ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "length - offset < n"); 33427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 33527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 33627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich buffers_base = (GLuint *) 33727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _env->GetPrimitiveArrayCritical(buffers_ref, (jboolean *)0); 33827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich buffers = buffers_base + offset; 33927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 34027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glDeleteBuffers( 34127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLsizei)n, 34227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLuint *)buffers 34327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 34427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 34527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit: 34627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (buffers_base) { 34727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _env->ReleasePrimitiveArrayCritical(buffers_ref, buffers_base, 34827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich JNI_ABORT); 34927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 35027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 35127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 35227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glDeleteBuffers ( GLsizei n, const GLuint *buffers ) */ 35327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 35427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glDeleteBuffers__ILjava_nio_IntBuffer_2 35527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint n, jobject buffers_buf) { 35627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jarray _array = (jarray) 0; 35727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _remaining; 35827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLuint *buffers = (GLuint *) 0; 35927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 36027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich buffers = (GLuint *)getPointer(_env, buffers_buf, &_array, &_remaining); 36127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_remaining < n) { 36224ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "remaining() < n"); 36327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 36427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 36527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glDeleteBuffers( 36627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLsizei)n, 36727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLuint *)buffers 36827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 36927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 37027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit: 37127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_array) { 37227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich releasePointer(_env, _array, buffers, JNI_FALSE); 37327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 37427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 37527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 37627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glDrawElements ( GLenum mode, GLsizei count, GLenum type, GLint offset ) */ 37727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 37827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glDrawElements__IIII 37927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint mode, jint count, jint type, jint offset) { 38027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glDrawElements( 38127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)mode, 38227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLsizei)count, 38327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)type, 38427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (const GLvoid *)offset 38527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 38627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 38727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 38827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGenBuffers ( GLsizei n, GLuint *buffers ) */ 38927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 39027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGenBuffers__I_3II 39127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint n, jintArray buffers_ref, jint offset) { 39227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _exception = 0; 39327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLuint *buffers_base = (GLuint *) 0; 39427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _remaining; 39527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLuint *buffers = (GLuint *) 0; 39627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 39727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (!buffers_ref) { 39827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _exception = 1; 39924ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "buffers == null"); 40027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 40127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 40227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (offset < 0) { 40327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _exception = 1; 40424ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "offset < 0"); 40527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 40627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 40727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _remaining = _env->GetArrayLength(buffers_ref) - offset; 40827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_remaining < n) { 40927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _exception = 1; 41024ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "length - offset < n"); 41127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 41227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 41327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich buffers_base = (GLuint *) 41427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _env->GetPrimitiveArrayCritical(buffers_ref, (jboolean *)0); 41527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich buffers = buffers_base + offset; 41627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 41727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glGenBuffers( 41827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLsizei)n, 41927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLuint *)buffers 42027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 42127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 42227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit: 42327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (buffers_base) { 42427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _env->ReleasePrimitiveArrayCritical(buffers_ref, buffers_base, 42527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _exception ? JNI_ABORT: 0); 42627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 42727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 42827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 42927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGenBuffers ( GLsizei n, GLuint *buffers ) */ 43027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 43127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGenBuffers__ILjava_nio_IntBuffer_2 43227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint n, jobject buffers_buf) { 43327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _exception = 0; 43427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jarray _array = (jarray) 0; 43527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _remaining; 43627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLuint *buffers = (GLuint *) 0; 43727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 43827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich buffers = (GLuint *)getPointer(_env, buffers_buf, &_array, &_remaining); 43927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_remaining < n) { 44027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _exception = 1; 44124ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "remaining() < n"); 44227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 44327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 44427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glGenBuffers( 44527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLsizei)n, 44627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLuint *)buffers 44727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 44827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 44927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit: 45027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_array) { 45127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich releasePointer(_env, _array, buffers, _exception ? JNI_FALSE : JNI_TRUE); 45227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 45327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 45427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 45527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetBooleanv ( GLenum pname, GLboolean *params ) */ 45627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 45727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetBooleanv__I_3ZI 45827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint pname, jbooleanArray params_ref, jint offset) { 45927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _exception = 0; 46027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLboolean *params_base = (GLboolean *) 0; 46127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _remaining; 46227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLboolean *params = (GLboolean *) 0; 46327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 46427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (!params_ref) { 46527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _exception = 1; 46624ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "params == null"); 46727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 46827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 46927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (offset < 0) { 47027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _exception = 1; 47124ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "offset < 0"); 47227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 47327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 47427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _remaining = _env->GetArrayLength(params_ref) - offset; 47527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich params_base = (GLboolean *) 47627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0); 47727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich params = params_base + offset; 47827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 47927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glGetBooleanv( 48027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)pname, 48127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLboolean *)params 48227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 48327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 48427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit: 48527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (params_base) { 48627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _env->ReleasePrimitiveArrayCritical(params_ref, params_base, 48727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _exception ? JNI_ABORT: 0); 48827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 48927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 49027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 49127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetBooleanv ( GLenum pname, GLboolean *params ) */ 49227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 49327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetBooleanv__ILjava_nio_IntBuffer_2 49427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) { 49527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _exception = 0; 49627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jarray _array = (jarray) 0; 49727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _remaining; 49827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLboolean *params = (GLboolean *) 0; 49927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 50027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich params = (GLboolean *)getPointer(_env, params_buf, &_array, &_remaining); 50127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glGetBooleanv( 50227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)pname, 50327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLboolean *)params 50427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 50527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_array) { 50627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich releasePointer(_env, _array, params, _exception ? JNI_FALSE : JNI_TRUE); 50727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 50827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 50927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 51027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetBufferParameteriv ( GLenum target, GLenum pname, GLint *params ) */ 51127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 51227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetBufferParameteriv__II_3II 51327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint target, jint pname, jintArray params_ref, jint offset) { 51473108675c944ab4ee89631dced23566b12341b66Jack Palevich jint _exception = 0; 51573108675c944ab4ee89631dced23566b12341b66Jack Palevich GLint *params_base = (GLint *) 0; 51673108675c944ab4ee89631dced23566b12341b66Jack Palevich jint _remaining; 51773108675c944ab4ee89631dced23566b12341b66Jack Palevich GLint *params = (GLint *) 0; 51873108675c944ab4ee89631dced23566b12341b66Jack Palevich 51973108675c944ab4ee89631dced23566b12341b66Jack Palevich if (!params_ref) { 52073108675c944ab4ee89631dced23566b12341b66Jack Palevich _exception = 1; 52124ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "params == null"); 52273108675c944ab4ee89631dced23566b12341b66Jack Palevich goto exit; 52373108675c944ab4ee89631dced23566b12341b66Jack Palevich } 52473108675c944ab4ee89631dced23566b12341b66Jack Palevich if (offset < 0) { 52573108675c944ab4ee89631dced23566b12341b66Jack Palevich _exception = 1; 52624ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "offset < 0"); 52773108675c944ab4ee89631dced23566b12341b66Jack Palevich goto exit; 52873108675c944ab4ee89631dced23566b12341b66Jack Palevich } 52973108675c944ab4ee89631dced23566b12341b66Jack Palevich _remaining = _env->GetArrayLength(params_ref) - offset; 53073108675c944ab4ee89631dced23566b12341b66Jack Palevich if (_remaining < 1) { 53173108675c944ab4ee89631dced23566b12341b66Jack Palevich _exception = 1; 53224ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "length - offset < 1"); 53373108675c944ab4ee89631dced23566b12341b66Jack Palevich goto exit; 53473108675c944ab4ee89631dced23566b12341b66Jack Palevich } 53573108675c944ab4ee89631dced23566b12341b66Jack Palevich params_base = (GLint *) 53673108675c944ab4ee89631dced23566b12341b66Jack Palevich _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0); 53773108675c944ab4ee89631dced23566b12341b66Jack Palevich params = params_base + offset; 53873108675c944ab4ee89631dced23566b12341b66Jack Palevich 53973108675c944ab4ee89631dced23566b12341b66Jack Palevich glGetBufferParameteriv( 54073108675c944ab4ee89631dced23566b12341b66Jack Palevich (GLenum)target, 54173108675c944ab4ee89631dced23566b12341b66Jack Palevich (GLenum)pname, 54273108675c944ab4ee89631dced23566b12341b66Jack Palevich (GLint *)params 54373108675c944ab4ee89631dced23566b12341b66Jack Palevich ); 54473108675c944ab4ee89631dced23566b12341b66Jack Palevich 54573108675c944ab4ee89631dced23566b12341b66Jack Palevichexit: 54673108675c944ab4ee89631dced23566b12341b66Jack Palevich if (params_base) { 54773108675c944ab4ee89631dced23566b12341b66Jack Palevich _env->ReleasePrimitiveArrayCritical(params_ref, params_base, 54873108675c944ab4ee89631dced23566b12341b66Jack Palevich _exception ? JNI_ABORT: 0); 54973108675c944ab4ee89631dced23566b12341b66Jack Palevich } 55027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 55127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 55227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetBufferParameteriv ( GLenum target, GLenum pname, GLint *params ) */ 55327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 55427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetBufferParameteriv__IILjava_nio_IntBuffer_2 55527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) { 55673108675c944ab4ee89631dced23566b12341b66Jack Palevich jint _exception = 0; 55773108675c944ab4ee89631dced23566b12341b66Jack Palevich jarray _array = (jarray) 0; 55873108675c944ab4ee89631dced23566b12341b66Jack Palevich jint _remaining; 55973108675c944ab4ee89631dced23566b12341b66Jack Palevich GLint *params = (GLint *) 0; 56073108675c944ab4ee89631dced23566b12341b66Jack Palevich 56173108675c944ab4ee89631dced23566b12341b66Jack Palevich params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining); 56273108675c944ab4ee89631dced23566b12341b66Jack Palevich if (_remaining < 1) { 56373108675c944ab4ee89631dced23566b12341b66Jack Palevich _exception = 1; 56424ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "remaining() < 1"); 56573108675c944ab4ee89631dced23566b12341b66Jack Palevich goto exit; 56673108675c944ab4ee89631dced23566b12341b66Jack Palevich } 56773108675c944ab4ee89631dced23566b12341b66Jack Palevich glGetBufferParameteriv( 56873108675c944ab4ee89631dced23566b12341b66Jack Palevich (GLenum)target, 56973108675c944ab4ee89631dced23566b12341b66Jack Palevich (GLenum)pname, 57073108675c944ab4ee89631dced23566b12341b66Jack Palevich (GLint *)params 57173108675c944ab4ee89631dced23566b12341b66Jack Palevich ); 57273108675c944ab4ee89631dced23566b12341b66Jack Palevich 57373108675c944ab4ee89631dced23566b12341b66Jack Palevichexit: 57473108675c944ab4ee89631dced23566b12341b66Jack Palevich if (_array) { 57573108675c944ab4ee89631dced23566b12341b66Jack Palevich releasePointer(_env, _array, params, _exception ? JNI_FALSE : JNI_TRUE); 57673108675c944ab4ee89631dced23566b12341b66Jack Palevich } 57727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 57827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 57927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetClipPlanef ( GLenum pname, GLfloat *eqn ) */ 58027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 58127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetClipPlanef__I_3FI 58227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint pname, jfloatArray eqn_ref, jint offset) { 58327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _exception = 0; 58427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfloat *eqn_base = (GLfloat *) 0; 58527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _remaining; 58627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfloat *eqn = (GLfloat *) 0; 58727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 58827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (!eqn_ref) { 58927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _exception = 1; 59024ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "eqn == null"); 59127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 59227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 59327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (offset < 0) { 59427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _exception = 1; 59524ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "offset < 0"); 59627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 59727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 59827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _remaining = _env->GetArrayLength(eqn_ref) - offset; 59927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich eqn_base = (GLfloat *) 60027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _env->GetPrimitiveArrayCritical(eqn_ref, (jboolean *)0); 60127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich eqn = eqn_base + offset; 60227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 60327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glGetClipPlanef( 60427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)pname, 60527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfloat *)eqn 60627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 60727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 60827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit: 60927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (eqn_base) { 61027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _env->ReleasePrimitiveArrayCritical(eqn_ref, eqn_base, 61127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _exception ? JNI_ABORT: 0); 61227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 61327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 61427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 61527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetClipPlanef ( GLenum pname, GLfloat *eqn ) */ 61627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 61727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetClipPlanef__ILjava_nio_FloatBuffer_2 61827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint pname, jobject eqn_buf) { 61927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _exception = 0; 62027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jarray _array = (jarray) 0; 62127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _remaining; 62227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfloat *eqn = (GLfloat *) 0; 62327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 62427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich eqn = (GLfloat *)getPointer(_env, eqn_buf, &_array, &_remaining); 62527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glGetClipPlanef( 62627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)pname, 62727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfloat *)eqn 62827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 62927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_array) { 63027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich releasePointer(_env, _array, eqn, _exception ? JNI_FALSE : JNI_TRUE); 63127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 63227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 63327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 63427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetClipPlanex ( GLenum pname, GLfixed *eqn ) */ 63527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 63627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetClipPlanex__I_3II 63727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint pname, jintArray eqn_ref, jint offset) { 63827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _exception = 0; 63927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfixed *eqn_base = (GLfixed *) 0; 64027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _remaining; 64127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfixed *eqn = (GLfixed *) 0; 64227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 64327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (!eqn_ref) { 64427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _exception = 1; 64524ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "eqn == null"); 64627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 64727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 64827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (offset < 0) { 64927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _exception = 1; 65024ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "offset < 0"); 65127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 65227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 65327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _remaining = _env->GetArrayLength(eqn_ref) - offset; 65427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich eqn_base = (GLfixed *) 65527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _env->GetPrimitiveArrayCritical(eqn_ref, (jboolean *)0); 65627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich eqn = eqn_base + offset; 65727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 65827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glGetClipPlanex( 65927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)pname, 66027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfixed *)eqn 66127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 66227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 66327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit: 66427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (eqn_base) { 66527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _env->ReleasePrimitiveArrayCritical(eqn_ref, eqn_base, 66627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _exception ? JNI_ABORT: 0); 66727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 66827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 66927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 67027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetClipPlanex ( GLenum pname, GLfixed *eqn ) */ 67127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 67227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetClipPlanex__ILjava_nio_IntBuffer_2 67327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint pname, jobject eqn_buf) { 67427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _exception = 0; 67527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jarray _array = (jarray) 0; 67627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _remaining; 67727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfixed *eqn = (GLfixed *) 0; 67827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 67927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich eqn = (GLfixed *)getPointer(_env, eqn_buf, &_array, &_remaining); 68027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glGetClipPlanex( 68127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)pname, 68227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfixed *)eqn 68327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 68427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_array) { 68527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich releasePointer(_env, _array, eqn, _exception ? JNI_FALSE : JNI_TRUE); 68627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 68727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 68827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 68927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetFixedv ( GLenum pname, GLfixed *params ) */ 69027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 69127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetFixedv__I_3II 69227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint pname, jintArray params_ref, jint offset) { 69327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _exception = 0; 69427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfixed *params_base = (GLfixed *) 0; 69527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _remaining; 69627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfixed *params = (GLfixed *) 0; 69727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 69827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (!params_ref) { 69927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _exception = 1; 70024ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "params == null"); 70127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 70227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 70327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (offset < 0) { 70427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _exception = 1; 70524ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "offset < 0"); 70627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 70727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 70827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _remaining = _env->GetArrayLength(params_ref) - offset; 70927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich params_base = (GLfixed *) 71027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0); 71127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich params = params_base + offset; 71227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 71327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glGetFixedv( 71427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)pname, 71527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfixed *)params 71627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 71727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 71827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit: 71927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (params_base) { 72027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _env->ReleasePrimitiveArrayCritical(params_ref, params_base, 72127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _exception ? JNI_ABORT: 0); 72227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 72327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 72427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 72527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetFixedv ( GLenum pname, GLfixed *params ) */ 72627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 72727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetFixedv__ILjava_nio_IntBuffer_2 72827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) { 72927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _exception = 0; 73027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jarray _array = (jarray) 0; 73127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _remaining; 73227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfixed *params = (GLfixed *) 0; 73327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 73427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining); 73527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glGetFixedv( 73627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)pname, 73727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfixed *)params 73827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 73927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_array) { 74027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich releasePointer(_env, _array, params, _exception ? JNI_FALSE : JNI_TRUE); 74127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 74227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 74327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 74427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetFloatv ( GLenum pname, GLfloat *params ) */ 74527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 74627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetFloatv__I_3FI 74727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint pname, jfloatArray params_ref, jint offset) { 74827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _exception = 0; 74927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfloat *params_base = (GLfloat *) 0; 75027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _remaining; 75127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfloat *params = (GLfloat *) 0; 75227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 75327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (!params_ref) { 75427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _exception = 1; 75524ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "params == null"); 75627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 75727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 75827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (offset < 0) { 75927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _exception = 1; 76024ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "offset < 0"); 76127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 76227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 76327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _remaining = _env->GetArrayLength(params_ref) - offset; 76427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich params_base = (GLfloat *) 76527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0); 76627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich params = params_base + offset; 76727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 76827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glGetFloatv( 76927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)pname, 77027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfloat *)params 77127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 77227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 77327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit: 77427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (params_base) { 77527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _env->ReleasePrimitiveArrayCritical(params_ref, params_base, 77627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _exception ? JNI_ABORT: 0); 77727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 77827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 77927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 78027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetFloatv ( GLenum pname, GLfloat *params ) */ 78127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 78227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetFloatv__ILjava_nio_FloatBuffer_2 78327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) { 78427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _exception = 0; 78527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jarray _array = (jarray) 0; 78627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _remaining; 78727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfloat *params = (GLfloat *) 0; 78827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 78927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining); 79027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glGetFloatv( 79127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)pname, 79227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfloat *)params 79327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 79427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_array) { 79527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich releasePointer(_env, _array, params, _exception ? JNI_FALSE : JNI_TRUE); 79627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 79727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 79827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 79927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetLightfv ( GLenum light, GLenum pname, GLfloat *params ) */ 80027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 80127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetLightfv__II_3FI 80227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint light, jint pname, jfloatArray params_ref, jint offset) { 80327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _exception = 0; 80427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfloat *params_base = (GLfloat *) 0; 80527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _remaining; 80627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfloat *params = (GLfloat *) 0; 80727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 80827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (!params_ref) { 80927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _exception = 1; 81024ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "params == null"); 81127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 81227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 81327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (offset < 0) { 81427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _exception = 1; 81524ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "offset < 0"); 81627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 81727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 81827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _remaining = _env->GetArrayLength(params_ref) - offset; 81927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich int _needed; 82027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich switch (pname) { 82127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_SPOT_EXPONENT) 82227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_SPOT_EXPONENT: 82327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_SPOT_EXPONENT) 82427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_SPOT_CUTOFF) 82527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_SPOT_CUTOFF: 82627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_SPOT_CUTOFF) 82727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_CONSTANT_ATTENUATION) 82827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_CONSTANT_ATTENUATION: 82927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_CONSTANT_ATTENUATION) 83027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_LINEAR_ATTENUATION) 83127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_LINEAR_ATTENUATION: 83227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_LINEAR_ATTENUATION) 83327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_QUADRATIC_ATTENUATION) 83427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_QUADRATIC_ATTENUATION: 83527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_QUADRATIC_ATTENUATION) 83627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _needed = 1; 83727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich break; 83827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_SPOT_DIRECTION) 83927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_SPOT_DIRECTION: 84027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_SPOT_DIRECTION) 84127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _needed = 3; 84227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich break; 84327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_AMBIENT) 84427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_AMBIENT: 84527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_AMBIENT) 84627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_DIFFUSE) 84727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_DIFFUSE: 84827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_DIFFUSE) 84927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_SPECULAR) 85027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_SPECULAR: 85127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_SPECULAR) 85227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_EMISSION) 85327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_EMISSION: 85427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_EMISSION) 85527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _needed = 4; 85627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich break; 85727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich default: 85827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _needed = 0; 85927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich break; 86027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 86127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_remaining < _needed) { 86227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _exception = 1; 86324ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "length - offset < needed"); 86427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 86527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 86627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich params_base = (GLfloat *) 86727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0); 86827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich params = params_base + offset; 86927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 87027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glGetLightfv( 87127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)light, 87227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)pname, 87327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfloat *)params 87427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 87527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 87627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit: 87727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (params_base) { 87827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _env->ReleasePrimitiveArrayCritical(params_ref, params_base, 87927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _exception ? JNI_ABORT: 0); 88027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 88127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 88227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 88327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetLightfv ( GLenum light, GLenum pname, GLfloat *params ) */ 88427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 88527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetLightfv__IILjava_nio_FloatBuffer_2 88627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint light, jint pname, jobject params_buf) { 88727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _exception = 0; 88827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jarray _array = (jarray) 0; 88927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _remaining; 89027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfloat *params = (GLfloat *) 0; 89127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 89227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining); 89327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich int _needed; 89427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich switch (pname) { 89527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_SPOT_EXPONENT) 89627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_SPOT_EXPONENT: 89727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_SPOT_EXPONENT) 89827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_SPOT_CUTOFF) 89927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_SPOT_CUTOFF: 90027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_SPOT_CUTOFF) 90127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_CONSTANT_ATTENUATION) 90227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_CONSTANT_ATTENUATION: 90327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_CONSTANT_ATTENUATION) 90427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_LINEAR_ATTENUATION) 90527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_LINEAR_ATTENUATION: 90627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_LINEAR_ATTENUATION) 90727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_QUADRATIC_ATTENUATION) 90827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_QUADRATIC_ATTENUATION: 90927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_QUADRATIC_ATTENUATION) 91027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _needed = 1; 91127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich break; 91227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_SPOT_DIRECTION) 91327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_SPOT_DIRECTION: 91427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_SPOT_DIRECTION) 91527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _needed = 3; 91627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich break; 91727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_AMBIENT) 91827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_AMBIENT: 91927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_AMBIENT) 92027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_DIFFUSE) 92127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_DIFFUSE: 92227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_DIFFUSE) 92327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_SPECULAR) 92427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_SPECULAR: 92527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_SPECULAR) 92627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_EMISSION) 92727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_EMISSION: 92827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_EMISSION) 92927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _needed = 4; 93027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich break; 93127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich default: 93227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _needed = 0; 93327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich break; 93427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 93527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_remaining < _needed) { 93627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _exception = 1; 93724ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "remaining() < needed"); 93827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 93927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 94027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glGetLightfv( 94127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)light, 94227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)pname, 94327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfloat *)params 94427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 94527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 94627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit: 94727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_array) { 94827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich releasePointer(_env, _array, params, _exception ? JNI_FALSE : JNI_TRUE); 94927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 95027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 95127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 95227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetLightxv ( GLenum light, GLenum pname, GLfixed *params ) */ 95327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 95427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetLightxv__II_3II 95527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint light, jint pname, jintArray params_ref, jint offset) { 95627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _exception = 0; 95727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfixed *params_base = (GLfixed *) 0; 95827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _remaining; 95927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfixed *params = (GLfixed *) 0; 96027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 96127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (!params_ref) { 96227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _exception = 1; 96324ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "params == null"); 96427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 96527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 96627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (offset < 0) { 96727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _exception = 1; 96824ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "offset < 0"); 96927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 97027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 97127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _remaining = _env->GetArrayLength(params_ref) - offset; 97227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich int _needed; 97327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich switch (pname) { 97427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_SPOT_EXPONENT) 97527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_SPOT_EXPONENT: 97627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_SPOT_EXPONENT) 97727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_SPOT_CUTOFF) 97827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_SPOT_CUTOFF: 97927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_SPOT_CUTOFF) 98027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_CONSTANT_ATTENUATION) 98127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_CONSTANT_ATTENUATION: 98227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_CONSTANT_ATTENUATION) 98327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_LINEAR_ATTENUATION) 98427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_LINEAR_ATTENUATION: 98527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_LINEAR_ATTENUATION) 98627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_QUADRATIC_ATTENUATION) 98727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_QUADRATIC_ATTENUATION: 98827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_QUADRATIC_ATTENUATION) 98927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _needed = 1; 99027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich break; 99127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_SPOT_DIRECTION) 99227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_SPOT_DIRECTION: 99327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_SPOT_DIRECTION) 99427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _needed = 3; 99527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich break; 99627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_AMBIENT) 99727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_AMBIENT: 99827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_AMBIENT) 99927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_DIFFUSE) 100027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_DIFFUSE: 100127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_DIFFUSE) 100227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_SPECULAR) 100327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_SPECULAR: 100427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_SPECULAR) 100527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_EMISSION) 100627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_EMISSION: 100727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_EMISSION) 100827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _needed = 4; 100927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich break; 101027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich default: 101127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _needed = 0; 101227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich break; 101327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 101427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_remaining < _needed) { 101527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _exception = 1; 101624ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "length - offset < needed"); 101727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 101827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 101927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich params_base = (GLfixed *) 102027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0); 102127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich params = params_base + offset; 102227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 102327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glGetLightxv( 102427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)light, 102527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)pname, 102627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfixed *)params 102727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 102827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 102927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit: 103027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (params_base) { 103127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _env->ReleasePrimitiveArrayCritical(params_ref, params_base, 103227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _exception ? JNI_ABORT: 0); 103327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 103427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 103527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 103627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetLightxv ( GLenum light, GLenum pname, GLfixed *params ) */ 103727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 103827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetLightxv__IILjava_nio_IntBuffer_2 103927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint light, jint pname, jobject params_buf) { 104027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _exception = 0; 104127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jarray _array = (jarray) 0; 104227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _remaining; 104327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfixed *params = (GLfixed *) 0; 104427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 104527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining); 104627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich int _needed; 104727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich switch (pname) { 104827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_SPOT_EXPONENT) 104927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_SPOT_EXPONENT: 105027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_SPOT_EXPONENT) 105127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_SPOT_CUTOFF) 105227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_SPOT_CUTOFF: 105327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_SPOT_CUTOFF) 105427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_CONSTANT_ATTENUATION) 105527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_CONSTANT_ATTENUATION: 105627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_CONSTANT_ATTENUATION) 105727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_LINEAR_ATTENUATION) 105827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_LINEAR_ATTENUATION: 105927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_LINEAR_ATTENUATION) 106027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_QUADRATIC_ATTENUATION) 106127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_QUADRATIC_ATTENUATION: 106227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_QUADRATIC_ATTENUATION) 106327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _needed = 1; 106427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich break; 106527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_SPOT_DIRECTION) 106627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_SPOT_DIRECTION: 106727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_SPOT_DIRECTION) 106827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _needed = 3; 106927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich break; 107027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_AMBIENT) 107127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_AMBIENT: 107227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_AMBIENT) 107327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_DIFFUSE) 107427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_DIFFUSE: 107527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_DIFFUSE) 107627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_SPECULAR) 107727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_SPECULAR: 107827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_SPECULAR) 107927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_EMISSION) 108027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_EMISSION: 108127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_EMISSION) 108227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _needed = 4; 108327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich break; 108427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich default: 108527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _needed = 0; 108627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich break; 108727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 108827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_remaining < _needed) { 108927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _exception = 1; 109024ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "remaining() < needed"); 109127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 109227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 109327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glGetLightxv( 109427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)light, 109527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)pname, 109627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfixed *)params 109727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 109827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 109927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit: 110027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_array) { 110127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich releasePointer(_env, _array, params, _exception ? JNI_FALSE : JNI_TRUE); 110227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 110327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 110427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 110527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetMaterialfv ( GLenum face, GLenum pname, GLfloat *params ) */ 110627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 110727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetMaterialfv__II_3FI 110827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint face, jint pname, jfloatArray params_ref, jint offset) { 110927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _exception = 0; 111027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfloat *params_base = (GLfloat *) 0; 111127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _remaining; 111227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfloat *params = (GLfloat *) 0; 111327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 111427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (!params_ref) { 111527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _exception = 1; 111624ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "params == null"); 111727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 111827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 111927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (offset < 0) { 112027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _exception = 1; 112124ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "offset < 0"); 112227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 112327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 112427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _remaining = _env->GetArrayLength(params_ref) - offset; 112527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich int _needed; 112627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich switch (pname) { 112727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_SHININESS) 112827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_SHININESS: 112927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_SHININESS) 113027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _needed = 1; 113127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich break; 113227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_AMBIENT) 113327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_AMBIENT: 113427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_AMBIENT) 113527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_DIFFUSE) 113627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_DIFFUSE: 113727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_DIFFUSE) 113827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_SPECULAR) 113927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_SPECULAR: 114027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_SPECULAR) 114127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_EMISSION) 114227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_EMISSION: 114327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_EMISSION) 114427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_AMBIENT_AND_DIFFUSE) 114527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_AMBIENT_AND_DIFFUSE: 114627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_AMBIENT_AND_DIFFUSE) 114727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _needed = 4; 114827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich break; 114927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich default: 115027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _needed = 0; 115127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich break; 115227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 115327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_remaining < _needed) { 115427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _exception = 1; 115524ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "length - offset < needed"); 115627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 115727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 115827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich params_base = (GLfloat *) 115927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0); 116027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich params = params_base + offset; 116127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 116227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glGetMaterialfv( 116327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)face, 116427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)pname, 116527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfloat *)params 116627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 116727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 116827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit: 116927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (params_base) { 117027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _env->ReleasePrimitiveArrayCritical(params_ref, params_base, 117127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _exception ? JNI_ABORT: 0); 117227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 117327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 117427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 117527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetMaterialfv ( GLenum face, GLenum pname, GLfloat *params ) */ 117627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 117727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetMaterialfv__IILjava_nio_FloatBuffer_2 117827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint face, jint pname, jobject params_buf) { 117927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _exception = 0; 118027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jarray _array = (jarray) 0; 118127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _remaining; 118227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfloat *params = (GLfloat *) 0; 118327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 118427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining); 118527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich int _needed; 118627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich switch (pname) { 118727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_SHININESS) 118827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_SHININESS: 118927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_SHININESS) 119027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _needed = 1; 119127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich break; 119227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_AMBIENT) 119327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_AMBIENT: 119427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_AMBIENT) 119527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_DIFFUSE) 119627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_DIFFUSE: 119727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_DIFFUSE) 119827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_SPECULAR) 119927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_SPECULAR: 120027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_SPECULAR) 120127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_EMISSION) 120227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_EMISSION: 120327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_EMISSION) 120427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_AMBIENT_AND_DIFFUSE) 120527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_AMBIENT_AND_DIFFUSE: 120627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_AMBIENT_AND_DIFFUSE) 120727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _needed = 4; 120827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich break; 120927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich default: 121027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _needed = 0; 121127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich break; 121227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 121327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_remaining < _needed) { 121427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _exception = 1; 121524ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "remaining() < needed"); 121627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 121727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 121827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glGetMaterialfv( 121927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)face, 122027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)pname, 122127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfloat *)params 122227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 122327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 122427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit: 122527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_array) { 122627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich releasePointer(_env, _array, params, _exception ? JNI_FALSE : JNI_TRUE); 122727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 122827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 122927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 123027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetMaterialxv ( GLenum face, GLenum pname, GLfixed *params ) */ 123127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 123227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetMaterialxv__II_3II 123327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint face, jint pname, jintArray params_ref, jint offset) { 123427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _exception = 0; 123527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfixed *params_base = (GLfixed *) 0; 123627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _remaining; 123727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfixed *params = (GLfixed *) 0; 123827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 123927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (!params_ref) { 124027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _exception = 1; 124124ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "params == null"); 124227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 124327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 124427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (offset < 0) { 124527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _exception = 1; 124624ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "offset < 0"); 124727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 124827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 124927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _remaining = _env->GetArrayLength(params_ref) - offset; 125027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich int _needed; 125127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich switch (pname) { 125227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_SHININESS) 125327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_SHININESS: 125427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_SHININESS) 125527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _needed = 1; 125627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich break; 125727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_AMBIENT) 125827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_AMBIENT: 125927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_AMBIENT) 126027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_DIFFUSE) 126127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_DIFFUSE: 126227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_DIFFUSE) 126327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_SPECULAR) 126427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_SPECULAR: 126527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_SPECULAR) 126627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_EMISSION) 126727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_EMISSION: 126827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_EMISSION) 126927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_AMBIENT_AND_DIFFUSE) 127027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_AMBIENT_AND_DIFFUSE: 127127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_AMBIENT_AND_DIFFUSE) 127227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _needed = 4; 127327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich break; 127427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich default: 127527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _needed = 0; 127627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich break; 127727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 127827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_remaining < _needed) { 127927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _exception = 1; 128024ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "length - offset < needed"); 128127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 128227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 128327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich params_base = (GLfixed *) 128427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0); 128527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich params = params_base + offset; 128627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 128727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glGetMaterialxv( 128827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)face, 128927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)pname, 129027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfixed *)params 129127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 129227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 129327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit: 129427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (params_base) { 129527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _env->ReleasePrimitiveArrayCritical(params_ref, params_base, 129627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _exception ? JNI_ABORT: 0); 129727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 129827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 129927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 130027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetMaterialxv ( GLenum face, GLenum pname, GLfixed *params ) */ 130127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 130227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetMaterialxv__IILjava_nio_IntBuffer_2 130327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint face, jint pname, jobject params_buf) { 130427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _exception = 0; 130527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jarray _array = (jarray) 0; 130627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _remaining; 130727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfixed *params = (GLfixed *) 0; 130827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 130927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining); 131027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich int _needed; 131127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich switch (pname) { 131227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_SHININESS) 131327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_SHININESS: 131427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_SHININESS) 131527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _needed = 1; 131627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich break; 131727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_AMBIENT) 131827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_AMBIENT: 131927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_AMBIENT) 132027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_DIFFUSE) 132127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_DIFFUSE: 132227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_DIFFUSE) 132327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_SPECULAR) 132427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_SPECULAR: 132527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_SPECULAR) 132627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_EMISSION) 132727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_EMISSION: 132827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_EMISSION) 132927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_AMBIENT_AND_DIFFUSE) 133027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_AMBIENT_AND_DIFFUSE: 133127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_AMBIENT_AND_DIFFUSE) 133227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _needed = 4; 133327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich break; 133427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich default: 133527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _needed = 0; 133627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich break; 133727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 133827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_remaining < _needed) { 133927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _exception = 1; 134024ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "remaining() < needed"); 134127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 134227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 134327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glGetMaterialxv( 134427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)face, 134527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)pname, 134627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfixed *)params 134727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 134827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 134927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit: 135027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_array) { 135127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich releasePointer(_env, _array, params, _exception ? JNI_FALSE : JNI_TRUE); 135227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 135327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 135427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 135527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetTexEnvfv ( GLenum env, GLenum pname, GLfloat *params ) */ 135627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 135727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetTexEnvfv__II_3FI 135827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint env, jint pname, jfloatArray params_ref, jint offset) { 135927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _exception = 0; 136027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfloat *params_base = (GLfloat *) 0; 136127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _remaining; 136227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfloat *params = (GLfloat *) 0; 136327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 136427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (!params_ref) { 136527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _exception = 1; 136624ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "params == null"); 136727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 136827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 136927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (offset < 0) { 137027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _exception = 1; 137124ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "offset < 0"); 137227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 137327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 137427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _remaining = _env->GetArrayLength(params_ref) - offset; 137527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich int _needed; 137627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich switch (pname) { 137727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_TEXTURE_ENV_MODE) 137827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_TEXTURE_ENV_MODE: 137927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_TEXTURE_ENV_MODE) 138027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_COMBINE_RGB) 138127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_COMBINE_RGB: 138227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_COMBINE_RGB) 138327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_COMBINE_ALPHA) 138427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_COMBINE_ALPHA: 138527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_COMBINE_ALPHA) 138627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _needed = 1; 138727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich break; 138827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_TEXTURE_ENV_COLOR) 138927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_TEXTURE_ENV_COLOR: 139027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_TEXTURE_ENV_COLOR) 139127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _needed = 4; 139227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich break; 139327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich default: 139427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _needed = 0; 139527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich break; 139627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 139727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_remaining < _needed) { 139827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _exception = 1; 139924ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "length - offset < needed"); 140027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 140127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 140227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich params_base = (GLfloat *) 140327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0); 140427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich params = params_base + offset; 140527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 140627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glGetTexEnvfv( 140727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)env, 140827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)pname, 140927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfloat *)params 141027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 141127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 141227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit: 141327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (params_base) { 141427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _env->ReleasePrimitiveArrayCritical(params_ref, params_base, 141527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _exception ? JNI_ABORT: 0); 141627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 141727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 141827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 141927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetTexEnvfv ( GLenum env, GLenum pname, GLfloat *params ) */ 142027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 142127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetTexEnvfv__IILjava_nio_FloatBuffer_2 142227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint env, jint pname, jobject params_buf) { 142327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _exception = 0; 142427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jarray _array = (jarray) 0; 142527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _remaining; 142627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfloat *params = (GLfloat *) 0; 142727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 142827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining); 142927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich int _needed; 143027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich switch (pname) { 143127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_TEXTURE_ENV_MODE) 143227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_TEXTURE_ENV_MODE: 143327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_TEXTURE_ENV_MODE) 143427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_COMBINE_RGB) 143527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_COMBINE_RGB: 143627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_COMBINE_RGB) 143727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_COMBINE_ALPHA) 143827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_COMBINE_ALPHA: 143927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_COMBINE_ALPHA) 144027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _needed = 1; 144127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich break; 144227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_TEXTURE_ENV_COLOR) 144327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_TEXTURE_ENV_COLOR: 144427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_TEXTURE_ENV_COLOR) 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; 145324ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "remaining() < needed"); 145427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 145527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 145627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glGetTexEnvfv( 145727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)env, 145827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)pname, 145927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfloat *)params 146027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 146127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 146227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit: 146327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_array) { 146427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich releasePointer(_env, _array, params, _exception ? JNI_FALSE : JNI_TRUE); 146527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 146627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 146727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 146827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetTexEnviv ( GLenum env, GLenum pname, GLint *params ) */ 146927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 147027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetTexEnviv__II_3II 147127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint env, jint pname, jintArray params_ref, jint offset) { 147227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _exception = 0; 147327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLint *params_base = (GLint *) 0; 147427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _remaining; 147527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLint *params = (GLint *) 0; 147627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 147727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (!params_ref) { 147827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _exception = 1; 147924ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "params == null"); 148027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 148127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 148227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (offset < 0) { 148327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _exception = 1; 148424ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "offset < 0"); 148527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 148627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 148727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _remaining = _env->GetArrayLength(params_ref) - offset; 148827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich int _needed; 148927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich switch (pname) { 149027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_TEXTURE_ENV_MODE) 149127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_TEXTURE_ENV_MODE: 149227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_TEXTURE_ENV_MODE) 149327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_COMBINE_RGB) 149427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_COMBINE_RGB: 149527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_COMBINE_RGB) 149627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_COMBINE_ALPHA) 149727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_COMBINE_ALPHA: 149827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_COMBINE_ALPHA) 149927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _needed = 1; 150027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich break; 150127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_TEXTURE_ENV_COLOR) 150227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_TEXTURE_ENV_COLOR: 150327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_TEXTURE_ENV_COLOR) 150427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _needed = 4; 150527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich break; 150627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich default: 150727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _needed = 0; 150827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich break; 150927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 151027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_remaining < _needed) { 151127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _exception = 1; 151224ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "length - offset < needed"); 151327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 151427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 151527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich params_base = (GLint *) 151627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0); 151727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich params = params_base + offset; 151827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 151927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glGetTexEnviv( 152027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)env, 152127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)pname, 152227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLint *)params 152327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 152427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 152527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit: 152627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (params_base) { 152727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _env->ReleasePrimitiveArrayCritical(params_ref, params_base, 152827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _exception ? JNI_ABORT: 0); 152927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 153027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 153127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 153227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetTexEnviv ( GLenum env, GLenum pname, GLint *params ) */ 153327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 153427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetTexEnviv__IILjava_nio_IntBuffer_2 153527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint env, jint pname, jobject params_buf) { 153627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _exception = 0; 153727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jarray _array = (jarray) 0; 153827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _remaining; 153927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLint *params = (GLint *) 0; 154027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 154127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining); 154227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich int _needed; 154327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich switch (pname) { 154427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_TEXTURE_ENV_MODE) 154527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_TEXTURE_ENV_MODE: 154627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_TEXTURE_ENV_MODE) 154727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_COMBINE_RGB) 154827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_COMBINE_RGB: 154927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_COMBINE_RGB) 155027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_COMBINE_ALPHA) 155127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_COMBINE_ALPHA: 155227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_COMBINE_ALPHA) 155327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _needed = 1; 155427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich break; 155527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_TEXTURE_ENV_COLOR) 155627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_TEXTURE_ENV_COLOR: 155727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_TEXTURE_ENV_COLOR) 155827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _needed = 4; 155927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich break; 156027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich default: 156127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _needed = 0; 156227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich break; 156327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 156427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_remaining < _needed) { 156527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _exception = 1; 156624ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "remaining() < needed"); 156727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 156827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 156927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glGetTexEnviv( 157027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)env, 157127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)pname, 157227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLint *)params 157327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 157427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 157527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit: 157627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_array) { 157727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich releasePointer(_env, _array, params, _exception ? JNI_FALSE : JNI_TRUE); 157827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 157927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 158027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 158127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetTexEnvxv ( GLenum env, GLenum pname, GLfixed *params ) */ 158227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 158327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetTexEnvxv__II_3II 158427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint env, jint pname, jintArray params_ref, jint offset) { 158527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _exception = 0; 158627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfixed *params_base = (GLfixed *) 0; 158727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _remaining; 158827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfixed *params = (GLfixed *) 0; 158927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 159027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (!params_ref) { 159127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _exception = 1; 159224ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "params == null"); 159327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 159427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 159527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (offset < 0) { 159627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _exception = 1; 159724ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "offset < 0"); 159827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 159927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 160027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _remaining = _env->GetArrayLength(params_ref) - offset; 160127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich int _needed; 160227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich switch (pname) { 160327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_TEXTURE_ENV_MODE) 160427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_TEXTURE_ENV_MODE: 160527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_TEXTURE_ENV_MODE) 160627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_COMBINE_RGB) 160727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_COMBINE_RGB: 160827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_COMBINE_RGB) 160927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_COMBINE_ALPHA) 161027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_COMBINE_ALPHA: 161127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_COMBINE_ALPHA) 161227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _needed = 1; 161327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich break; 161427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_TEXTURE_ENV_COLOR) 161527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_TEXTURE_ENV_COLOR: 161627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_TEXTURE_ENV_COLOR) 161727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _needed = 4; 161827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich break; 161927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich default: 162027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _needed = 0; 162127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich break; 162227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 162327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_remaining < _needed) { 162427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _exception = 1; 162524ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "length - offset < needed"); 162627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 162727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 162827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich params_base = (GLfixed *) 162927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0); 163027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich params = params_base + offset; 163127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 163227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glGetTexEnvxv( 163327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)env, 163427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)pname, 163527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfixed *)params 163627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 163727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 163827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit: 163927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (params_base) { 164027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _env->ReleasePrimitiveArrayCritical(params_ref, params_base, 164127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _exception ? JNI_ABORT: 0); 164227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 164327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 164427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 164527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetTexEnvxv ( GLenum env, GLenum pname, GLfixed *params ) */ 164627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 164727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetTexEnvxv__IILjava_nio_IntBuffer_2 164827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint env, jint pname, jobject params_buf) { 164927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _exception = 0; 165027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jarray _array = (jarray) 0; 165127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _remaining; 165227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfixed *params = (GLfixed *) 0; 165327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 165427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining); 165527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich int _needed; 165627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich switch (pname) { 165727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_TEXTURE_ENV_MODE) 165827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_TEXTURE_ENV_MODE: 165927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_TEXTURE_ENV_MODE) 166027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_COMBINE_RGB) 166127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_COMBINE_RGB: 166227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_COMBINE_RGB) 166327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_COMBINE_ALPHA) 166427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_COMBINE_ALPHA: 166527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_COMBINE_ALPHA) 166627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _needed = 1; 166727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich break; 166827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_TEXTURE_ENV_COLOR) 166927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_TEXTURE_ENV_COLOR: 167027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_TEXTURE_ENV_COLOR) 167127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _needed = 4; 167227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich break; 167327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich default: 167427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _needed = 0; 167527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich break; 167627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 167727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_remaining < _needed) { 167827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _exception = 1; 167924ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "remaining() < needed"); 168027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 168127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 168227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glGetTexEnvxv( 168327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)env, 168427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)pname, 168527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfixed *)params 168627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 168727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 168827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit: 168927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_array) { 169027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich releasePointer(_env, _array, params, _exception ? JNI_FALSE : JNI_TRUE); 169127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 169227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 169327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 169427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetTexParameterfv ( GLenum target, GLenum pname, GLfloat *params ) */ 169527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 169627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetTexParameterfv__II_3FI 169727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint target, jint pname, jfloatArray params_ref, jint offset) { 169827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _exception = 0; 169927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfloat *params_base = (GLfloat *) 0; 170027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _remaining; 170127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfloat *params = (GLfloat *) 0; 170227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 170327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (!params_ref) { 170427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _exception = 1; 170524ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "params == null"); 170627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 170727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 170827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (offset < 0) { 170927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _exception = 1; 171024ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "offset < 0"); 171127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 171227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 171327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _remaining = _env->GetArrayLength(params_ref) - offset; 171427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_remaining < 1) { 171527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _exception = 1; 171624ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "length - offset < 1"); 171727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 171827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 171927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich params_base = (GLfloat *) 172027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0); 172127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich params = params_base + offset; 172227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 172327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glGetTexParameterfv( 172427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)target, 172527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)pname, 172627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfloat *)params 172727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 172827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 172927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit: 173027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (params_base) { 173127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _env->ReleasePrimitiveArrayCritical(params_ref, params_base, 173227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _exception ? JNI_ABORT: 0); 173327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 173427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 173527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 173627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetTexParameterfv ( GLenum target, GLenum pname, GLfloat *params ) */ 173727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 173827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetTexParameterfv__IILjava_nio_FloatBuffer_2 173927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) { 174027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _exception = 0; 174127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jarray _array = (jarray) 0; 174227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _remaining; 174327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfloat *params = (GLfloat *) 0; 174427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 174527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining); 174627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_remaining < 1) { 174727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _exception = 1; 174824ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "remaining() < 1"); 174927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 175027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 175127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glGetTexParameterfv( 175227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)target, 175327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)pname, 175427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfloat *)params 175527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 175627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 175727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit: 175827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_array) { 175927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich releasePointer(_env, _array, params, _exception ? JNI_FALSE : JNI_TRUE); 176027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 176127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 176227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 176327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetTexParameteriv ( GLenum target, GLenum pname, GLint *params ) */ 176427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 176527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetTexParameteriv__II_3II 176627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint target, jint pname, jintArray params_ref, jint offset) { 176727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _exception = 0; 176827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLint *params_base = (GLint *) 0; 176927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _remaining; 177027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLint *params = (GLint *) 0; 177127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 177227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (!params_ref) { 177327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _exception = 1; 177424ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "params == null"); 177527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 177627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 177727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (offset < 0) { 177827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _exception = 1; 177924ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "offset < 0"); 178027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 178127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 178227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _remaining = _env->GetArrayLength(params_ref) - offset; 178327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_remaining < 1) { 178427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _exception = 1; 178524ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "length - offset < 1"); 178627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 178727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 178827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich params_base = (GLint *) 178927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0); 179027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich params = params_base + offset; 179127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 179227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glGetTexParameteriv( 179327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)target, 179427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)pname, 179527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLint *)params 179627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 179727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 179827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit: 179927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (params_base) { 180027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _env->ReleasePrimitiveArrayCritical(params_ref, params_base, 180127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _exception ? JNI_ABORT: 0); 180227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 180327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 180427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 180527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetTexParameteriv ( GLenum target, GLenum pname, GLint *params ) */ 180627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 180727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetTexParameteriv__IILjava_nio_IntBuffer_2 180827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) { 180927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _exception = 0; 181027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jarray _array = (jarray) 0; 181127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _remaining; 181227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLint *params = (GLint *) 0; 181327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 181427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining); 181527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_remaining < 1) { 181627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _exception = 1; 181724ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "remaining() < 1"); 181827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 181927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 182027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glGetTexParameteriv( 182127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)target, 182227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)pname, 182327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLint *)params 182427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 182527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 182627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit: 182727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_array) { 182827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich releasePointer(_env, _array, params, _exception ? JNI_FALSE : JNI_TRUE); 182927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 183027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 183127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 183227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetTexParameterxv ( GLenum target, GLenum pname, GLfixed *params ) */ 183327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 183427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetTexParameterxv__II_3II 183527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint target, jint pname, jintArray params_ref, jint offset) { 183627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _exception = 0; 183727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfixed *params_base = (GLfixed *) 0; 183827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _remaining; 183927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfixed *params = (GLfixed *) 0; 184027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 184127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (!params_ref) { 184227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _exception = 1; 184324ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "params == null"); 184427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 184527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 184627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (offset < 0) { 184727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _exception = 1; 184824ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "offset < 0"); 184927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 185027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 185127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _remaining = _env->GetArrayLength(params_ref) - offset; 185227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_remaining < 1) { 185327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _exception = 1; 185424ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "length - offset < 1"); 185527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 185627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 185727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich params_base = (GLfixed *) 185827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0); 185927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich params = params_base + offset; 186027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 186127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glGetTexParameterxv( 186227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)target, 186327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)pname, 186427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfixed *)params 186527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 186627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 186727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit: 186827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (params_base) { 186927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _env->ReleasePrimitiveArrayCritical(params_ref, params_base, 187027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _exception ? JNI_ABORT: 0); 187127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 187227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 187327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 187427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glGetTexParameterxv ( GLenum target, GLenum pname, GLfixed *params ) */ 187527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 187627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glGetTexParameterxv__IILjava_nio_IntBuffer_2 187727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) { 187827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _exception = 0; 187927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jarray _array = (jarray) 0; 188027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _remaining; 188127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfixed *params = (GLfixed *) 0; 188227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 188327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining); 188427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_remaining < 1) { 188527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _exception = 1; 188624ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "remaining() < 1"); 188727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 188827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 188927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glGetTexParameterxv( 189027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)target, 189127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)pname, 189227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfixed *)params 189327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 189427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 189527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit: 189627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_array) { 189727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich releasePointer(_env, _array, params, _exception ? JNI_FALSE : JNI_TRUE); 189827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 189927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 190027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 190127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* GLboolean glIsBuffer ( GLuint buffer ) */ 190227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic jboolean 190327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glIsBuffer__I 190427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint buffer) { 190527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLboolean _returnValue; 190627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _returnValue = glIsBuffer( 190727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLuint)buffer 190827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 190927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich return _returnValue; 191027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 191127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 191227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* GLboolean glIsEnabled ( GLenum cap ) */ 191327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic jboolean 191427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glIsEnabled__I 191527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint cap) { 191627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLboolean _returnValue; 191727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _returnValue = glIsEnabled( 191827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)cap 191927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 192027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich return _returnValue; 192127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 192227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 192327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* GLboolean glIsTexture ( GLuint texture ) */ 192427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic jboolean 192527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glIsTexture__I 192627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint texture) { 192727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLboolean _returnValue; 192827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _returnValue = glIsTexture( 192927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLuint)texture 193027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 193127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich return _returnValue; 193227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 193327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 193427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glNormalPointer ( GLenum type, GLsizei stride, GLint offset ) */ 193527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 193627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glNormalPointer__III 193727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint type, jint stride, jint offset) { 193827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glNormalPointer( 193927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)type, 194027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLsizei)stride, 194127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (const GLvoid *)offset 194227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 194327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 194427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 194527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glPointParameterf ( GLenum pname, GLfloat param ) */ 194627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 194727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glPointParameterf__IF 194827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint pname, jfloat param) { 194927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glPointParameterf( 195027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)pname, 195127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfloat)param 195227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 195327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 195427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 195527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glPointParameterfv ( GLenum pname, const GLfloat *params ) */ 195627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 195727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glPointParameterfv__I_3FI 195827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint pname, jfloatArray params_ref, jint offset) { 195927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfloat *params_base = (GLfloat *) 0; 196027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _remaining; 196127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfloat *params = (GLfloat *) 0; 196227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 196327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (!params_ref) { 196424ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "params == null"); 196527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 196627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 196727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (offset < 0) { 196824ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "offset < 0"); 196927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 197027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 197127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _remaining = _env->GetArrayLength(params_ref) - offset; 197227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_remaining < 1) { 197324ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "length - offset < 1"); 197427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 197527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 197627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich params_base = (GLfloat *) 197727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0); 197827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich params = params_base + offset; 197927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 198027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glPointParameterfv( 198127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)pname, 198227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfloat *)params 198327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 198427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 198527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit: 198627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (params_base) { 198727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _env->ReleasePrimitiveArrayCritical(params_ref, params_base, 198827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich JNI_ABORT); 198927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 199027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 199127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 199227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glPointParameterfv ( GLenum pname, const GLfloat *params ) */ 199327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 199427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glPointParameterfv__ILjava_nio_FloatBuffer_2 199527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) { 199627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jarray _array = (jarray) 0; 199727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _remaining; 199827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfloat *params = (GLfloat *) 0; 199927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 200027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining); 200127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_remaining < 1) { 200224ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "remaining() < 1"); 200327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 200427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 200527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glPointParameterfv( 200627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)pname, 200727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfloat *)params 200827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 200927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 201027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit: 201127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_array) { 201227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich releasePointer(_env, _array, params, JNI_FALSE); 201327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 201427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 201527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 201627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glPointParameterx ( GLenum pname, GLfixed param ) */ 201727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 201827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glPointParameterx__II 201927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint pname, jint param) { 202027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glPointParameterx( 202127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)pname, 202227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfixed)param 202327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 202427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 202527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 202627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glPointParameterxv ( GLenum pname, const GLfixed *params ) */ 202727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 202827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glPointParameterxv__I_3II 202927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint pname, jintArray params_ref, jint offset) { 203027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfixed *params_base = (GLfixed *) 0; 203127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _remaining; 203227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfixed *params = (GLfixed *) 0; 203327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 203427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (!params_ref) { 203524ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "params == null"); 203627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 203727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 203827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (offset < 0) { 203924ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "offset < 0"); 204027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 204127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 204227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _remaining = _env->GetArrayLength(params_ref) - offset; 204327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_remaining < 1) { 204424ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "length - offset < 1"); 204527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 204627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 204727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich params_base = (GLfixed *) 204827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0); 204927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich params = params_base + offset; 205027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 205127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glPointParameterxv( 205227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)pname, 205327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfixed *)params 205427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 205527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 205627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit: 205727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (params_base) { 205827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _env->ReleasePrimitiveArrayCritical(params_ref, params_base, 205927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich JNI_ABORT); 206027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 206127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 206227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 206327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glPointParameterxv ( GLenum pname, const GLfixed *params ) */ 206427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 206527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glPointParameterxv__ILjava_nio_IntBuffer_2 206627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) { 206727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jarray _array = (jarray) 0; 206827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _remaining; 206927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfixed *params = (GLfixed *) 0; 207027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 207127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining); 207227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_remaining < 1) { 207324ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "remaining() < 1"); 207427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 207527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 207627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glPointParameterxv( 207727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)pname, 207827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfixed *)params 207927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 208027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 208127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit: 208227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_array) { 208327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich releasePointer(_env, _array, params, JNI_FALSE); 208427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 208527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 208627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 208727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glPointSizePointerOES ( GLenum type, GLsizei stride, const GLvoid *pointer ) */ 208827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 2089be6eac828f5af8b608c3fa6749330f1dcd6b6206Jack Palevichandroid_glPointSizePointerOESBounds__IILjava_nio_Buffer_2I 2090be6eac828f5af8b608c3fa6749330f1dcd6b6206Jack Palevich (JNIEnv *_env, jobject _this, jint type, jint stride, jobject pointer_buf, jint remaining) { 209127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jarray _array = (jarray) 0; 209227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _remaining; 209327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLvoid *pointer = (GLvoid *) 0; 209427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 2095be6eac828f5af8b608c3fa6749330f1dcd6b6206Jack Palevich if (pointer_buf) { 2096be6eac828f5af8b608c3fa6749330f1dcd6b6206Jack Palevich pointer = (GLvoid *) getDirectBufferPointer(_env, pointer_buf); 2097be6eac828f5af8b608c3fa6749330f1dcd6b6206Jack Palevich if ( ! pointer ) { 2098be6eac828f5af8b608c3fa6749330f1dcd6b6206Jack Palevich return; 2099be6eac828f5af8b608c3fa6749330f1dcd6b6206Jack Palevich } 2100be6eac828f5af8b608c3fa6749330f1dcd6b6206Jack Palevich } 2101be6eac828f5af8b608c3fa6749330f1dcd6b6206Jack Palevich glPointSizePointerOESBounds( 210227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)type, 210327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLsizei)stride, 2104be6eac828f5af8b608c3fa6749330f1dcd6b6206Jack Palevich (GLvoid *)pointer, 2105be6eac828f5af8b608c3fa6749330f1dcd6b6206Jack Palevich (GLsizei)remaining 210627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 210727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 210827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 210927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glTexCoordPointer ( GLint size, GLenum type, GLsizei stride, GLint offset ) */ 211027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 211127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glTexCoordPointer__IIII 211227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint size, jint type, jint stride, jint offset) { 211327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glTexCoordPointer( 211427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLint)size, 211527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)type, 211627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLsizei)stride, 211727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (const GLvoid *)offset 211827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 211927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 212027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 212127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glTexEnvi ( GLenum target, GLenum pname, GLint param ) */ 212227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 212327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glTexEnvi__III 212427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint target, jint pname, jint param) { 212527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glTexEnvi( 212627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)target, 212727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)pname, 212827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLint)param 212927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 213027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 213127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 213227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glTexEnviv ( GLenum target, GLenum pname, const GLint *params ) */ 213327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 213427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glTexEnviv__II_3II 213527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint target, jint pname, jintArray params_ref, jint offset) { 213627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLint *params_base = (GLint *) 0; 213727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _remaining; 213827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLint *params = (GLint *) 0; 213927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 214027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (!params_ref) { 214124ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "params == null"); 214227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 214327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 214427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (offset < 0) { 214524ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "offset < 0"); 214627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 214727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 214827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _remaining = _env->GetArrayLength(params_ref) - offset; 214927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich int _needed; 215027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich switch (pname) { 215127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_TEXTURE_ENV_MODE) 215227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_TEXTURE_ENV_MODE: 215327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_TEXTURE_ENV_MODE) 215427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_COMBINE_RGB) 215527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_COMBINE_RGB: 215627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_COMBINE_RGB) 215727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_COMBINE_ALPHA) 215827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_COMBINE_ALPHA: 215927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_COMBINE_ALPHA) 216027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _needed = 1; 216127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich break; 216227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_TEXTURE_ENV_COLOR) 216327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_TEXTURE_ENV_COLOR: 216427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_TEXTURE_ENV_COLOR) 216527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _needed = 4; 216627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich break; 216727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich default: 216827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _needed = 0; 216927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich break; 217027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 217127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_remaining < _needed) { 217224ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "length - offset < needed"); 217327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 217427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 217527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich params_base = (GLint *) 217627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0); 217727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich params = params_base + offset; 217827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 217927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glTexEnviv( 218027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)target, 218127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)pname, 218227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLint *)params 218327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 218427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 218527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit: 218627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (params_base) { 218727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _env->ReleasePrimitiveArrayCritical(params_ref, params_base, 218827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich JNI_ABORT); 218927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 219027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 219127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 219227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glTexEnviv ( GLenum target, GLenum pname, const GLint *params ) */ 219327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 219427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glTexEnviv__IILjava_nio_IntBuffer_2 219527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) { 219627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jarray _array = (jarray) 0; 219727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _remaining; 219827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLint *params = (GLint *) 0; 219927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 220027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining); 220127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich int _needed; 220227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich switch (pname) { 220327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_TEXTURE_ENV_MODE) 220427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_TEXTURE_ENV_MODE: 220527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_TEXTURE_ENV_MODE) 220627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_COMBINE_RGB) 220727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_COMBINE_RGB: 220827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_COMBINE_RGB) 220927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_COMBINE_ALPHA) 221027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_COMBINE_ALPHA: 221127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_COMBINE_ALPHA) 221227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _needed = 1; 221327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich break; 221427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#if defined(GL_TEXTURE_ENV_COLOR) 221527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich case GL_TEXTURE_ENV_COLOR: 221627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich#endif // defined(GL_TEXTURE_ENV_COLOR) 221727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _needed = 4; 221827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich break; 221927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich default: 222027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _needed = 0; 222127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich break; 222227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 222327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_remaining < _needed) { 222424ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "remaining() < needed"); 222527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 222627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 222727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glTexEnviv( 222827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)target, 222927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)pname, 223027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLint *)params 223127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 223227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 223327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit: 223427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_array) { 223527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich releasePointer(_env, _array, params, JNI_FALSE); 223627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 223727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 223827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 223927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glTexParameterfv ( GLenum target, GLenum pname, const GLfloat *params ) */ 224027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 224127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glTexParameterfv__II_3FI 224227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint target, jint pname, jfloatArray params_ref, jint offset) { 224327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfloat *params_base = (GLfloat *) 0; 224427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _remaining; 224527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfloat *params = (GLfloat *) 0; 224627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 224727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (!params_ref) { 224824ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "params == null"); 224927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 225027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 225127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (offset < 0) { 225224ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "offset < 0"); 225327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 225427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 225527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _remaining = _env->GetArrayLength(params_ref) - offset; 225627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_remaining < 1) { 225724ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "length - offset < 1"); 225827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 225927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 226027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich params_base = (GLfloat *) 226127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0); 226227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich params = params_base + offset; 226327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 226427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glTexParameterfv( 226527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)target, 226627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)pname, 226727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfloat *)params 226827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 226927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 227027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit: 227127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (params_base) { 227227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _env->ReleasePrimitiveArrayCritical(params_ref, params_base, 227327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich JNI_ABORT); 227427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 227527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 227627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 227727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glTexParameterfv ( GLenum target, GLenum pname, const GLfloat *params ) */ 227827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 227927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glTexParameterfv__IILjava_nio_FloatBuffer_2 228027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) { 228127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jarray _array = (jarray) 0; 228227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _remaining; 228327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfloat *params = (GLfloat *) 0; 228427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 228527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining); 228627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_remaining < 1) { 228724ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "remaining() < 1"); 228827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 228927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 229027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glTexParameterfv( 229127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)target, 229227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)pname, 229327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfloat *)params 229427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 229527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 229627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit: 229727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_array) { 229827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich releasePointer(_env, _array, params, JNI_FALSE); 229927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 230027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 230127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 230227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glTexParameteri ( GLenum target, GLenum pname, GLint param ) */ 230327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 230427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glTexParameteri__III 230527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint target, jint pname, jint param) { 230627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glTexParameteri( 230727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)target, 230827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)pname, 230927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLint)param 231027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 231127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 231227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 231327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glTexParameteriv ( GLenum target, GLenum pname, const GLint *params ) */ 231427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 231527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glTexParameteriv__II_3II 231627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint target, jint pname, jintArray params_ref, jint offset) { 231727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLint *params_base = (GLint *) 0; 231827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _remaining; 231927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLint *params = (GLint *) 0; 232027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 232127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (!params_ref) { 232224ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "params == null"); 232327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 232427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 232527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (offset < 0) { 232624ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "offset < 0"); 232727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 232827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 232927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _remaining = _env->GetArrayLength(params_ref) - offset; 233027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_remaining < 1) { 233124ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "length - offset < 1"); 233227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 233327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 233427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich params_base = (GLint *) 233527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0); 233627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich params = params_base + offset; 233727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 233827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glTexParameteriv( 233927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)target, 234027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)pname, 234127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLint *)params 234227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 234327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 234427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit: 234527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (params_base) { 234627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _env->ReleasePrimitiveArrayCritical(params_ref, params_base, 234727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich JNI_ABORT); 234827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 234927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 235027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 235127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glTexParameteriv ( GLenum target, GLenum pname, const GLint *params ) */ 235227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 235327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glTexParameteriv__IILjava_nio_IntBuffer_2 235427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) { 235527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jarray _array = (jarray) 0; 235627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _remaining; 235727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLint *params = (GLint *) 0; 235827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 235927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining); 236027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_remaining < 1) { 236124ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "remaining() < 1"); 236227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 236327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 236427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glTexParameteriv( 236527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)target, 236627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)pname, 236727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLint *)params 236827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 236927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 237027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit: 237127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_array) { 237227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich releasePointer(_env, _array, params, JNI_FALSE); 237327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 237427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 237527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 237627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glTexParameterxv ( GLenum target, GLenum pname, const GLfixed *params ) */ 237727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 237827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glTexParameterxv__II_3II 237927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint target, jint pname, jintArray params_ref, jint offset) { 238027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfixed *params_base = (GLfixed *) 0; 238127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _remaining; 238227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfixed *params = (GLfixed *) 0; 238327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 238427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (!params_ref) { 238524ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "params == null"); 238627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 238727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 238827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (offset < 0) { 238924ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "offset < 0"); 239027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 239127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 239227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _remaining = _env->GetArrayLength(params_ref) - offset; 239327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_remaining < 1) { 239424ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "length - offset < 1"); 239527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 239627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 239727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich params_base = (GLfixed *) 239827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0); 239927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich params = params_base + offset; 240027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 240127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glTexParameterxv( 240227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)target, 240327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)pname, 240427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfixed *)params 240527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 240627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 240727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit: 240827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (params_base) { 240927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich _env->ReleasePrimitiveArrayCritical(params_ref, params_base, 241027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich JNI_ABORT); 241127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 241227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 241327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 241427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glTexParameterxv ( GLenum target, GLenum pname, const GLfixed *params ) */ 241527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 241627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glTexParameterxv__IILjava_nio_IntBuffer_2 241727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) { 241827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jarray _array = (jarray) 0; 241927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich jint _remaining; 242027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich GLfixed *params = (GLfixed *) 0; 242127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 242227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich params = (GLfixed *)getPointer(_env, params_buf, &_array, &_remaining); 242327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_remaining < 1) { 242424ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "remaining() < 1"); 242527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich goto exit; 242627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 242727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glTexParameterxv( 242827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)target, 242927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)pname, 243027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLfixed *)params 243127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 243227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 243327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichexit: 243427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich if (_array) { 243527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich releasePointer(_env, _array, params, JNI_FALSE); 243627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich } 243727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 243827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 243927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich/* void glVertexPointer ( GLint size, GLenum type, GLsizei stride, GLint offset ) */ 244027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic void 244127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichandroid_glVertexPointer__IIII 244227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (JNIEnv *_env, jobject _this, jint size, jint type, jint stride, jint offset) { 244327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich glVertexPointer( 244427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLint)size, 244527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLenum)type, 244627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (GLsizei)stride, 244727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich (const GLvoid *)offset 244827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich ); 244927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 245027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 245127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic const char *classPathName = "android/opengl/GLES11"; 245227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 245327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichstatic JNINativeMethod methods[] = { 245427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"_nativeClassInit", "()V", (void*)nativeClassInit }, 245527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glBindBuffer", "(II)V", (void *) android_glBindBuffer__II }, 245627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glBufferData", "(IILjava/nio/Buffer;I)V", (void *) android_glBufferData__IILjava_nio_Buffer_2I }, 245727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glBufferSubData", "(IIILjava/nio/Buffer;)V", (void *) android_glBufferSubData__IIILjava_nio_Buffer_2 }, 245827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glClipPlanef", "(I[FI)V", (void *) android_glClipPlanef__I_3FI }, 245927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glClipPlanef", "(ILjava/nio/FloatBuffer;)V", (void *) android_glClipPlanef__ILjava_nio_FloatBuffer_2 }, 246027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glClipPlanex", "(I[II)V", (void *) android_glClipPlanex__I_3II }, 246127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glClipPlanex", "(ILjava/nio/IntBuffer;)V", (void *) android_glClipPlanex__ILjava_nio_IntBuffer_2 }, 246227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glColor4ub", "(BBBB)V", (void *) android_glColor4ub__BBBB }, 246327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glColorPointer", "(IIII)V", (void *) android_glColorPointer__IIII }, 246427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glDeleteBuffers", "(I[II)V", (void *) android_glDeleteBuffers__I_3II }, 246527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glDeleteBuffers", "(ILjava/nio/IntBuffer;)V", (void *) android_glDeleteBuffers__ILjava_nio_IntBuffer_2 }, 246627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glDrawElements", "(IIII)V", (void *) android_glDrawElements__IIII }, 246727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGenBuffers", "(I[II)V", (void *) android_glGenBuffers__I_3II }, 246827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGenBuffers", "(ILjava/nio/IntBuffer;)V", (void *) android_glGenBuffers__ILjava_nio_IntBuffer_2 }, 246927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetBooleanv", "(I[ZI)V", (void *) android_glGetBooleanv__I_3ZI }, 247027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetBooleanv", "(ILjava/nio/IntBuffer;)V", (void *) android_glGetBooleanv__ILjava_nio_IntBuffer_2 }, 247127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetBufferParameteriv", "(II[II)V", (void *) android_glGetBufferParameteriv__II_3II }, 247227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetBufferParameteriv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetBufferParameteriv__IILjava_nio_IntBuffer_2 }, 247327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetClipPlanef", "(I[FI)V", (void *) android_glGetClipPlanef__I_3FI }, 247427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetClipPlanef", "(ILjava/nio/FloatBuffer;)V", (void *) android_glGetClipPlanef__ILjava_nio_FloatBuffer_2 }, 247527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetClipPlanex", "(I[II)V", (void *) android_glGetClipPlanex__I_3II }, 247627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetClipPlanex", "(ILjava/nio/IntBuffer;)V", (void *) android_glGetClipPlanex__ILjava_nio_IntBuffer_2 }, 247727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetFixedv", "(I[II)V", (void *) android_glGetFixedv__I_3II }, 247827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetFixedv", "(ILjava/nio/IntBuffer;)V", (void *) android_glGetFixedv__ILjava_nio_IntBuffer_2 }, 247927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetFloatv", "(I[FI)V", (void *) android_glGetFloatv__I_3FI }, 248027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetFloatv", "(ILjava/nio/FloatBuffer;)V", (void *) android_glGetFloatv__ILjava_nio_FloatBuffer_2 }, 248127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetLightfv", "(II[FI)V", (void *) android_glGetLightfv__II_3FI }, 248227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetLightfv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glGetLightfv__IILjava_nio_FloatBuffer_2 }, 248327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetLightxv", "(II[II)V", (void *) android_glGetLightxv__II_3II }, 248427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetLightxv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetLightxv__IILjava_nio_IntBuffer_2 }, 248527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetMaterialfv", "(II[FI)V", (void *) android_glGetMaterialfv__II_3FI }, 248627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetMaterialfv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glGetMaterialfv__IILjava_nio_FloatBuffer_2 }, 248727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetMaterialxv", "(II[II)V", (void *) android_glGetMaterialxv__II_3II }, 248827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetMaterialxv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetMaterialxv__IILjava_nio_IntBuffer_2 }, 248927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetTexEnvfv", "(II[FI)V", (void *) android_glGetTexEnvfv__II_3FI }, 249027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetTexEnvfv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glGetTexEnvfv__IILjava_nio_FloatBuffer_2 }, 249127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetTexEnviv", "(II[II)V", (void *) android_glGetTexEnviv__II_3II }, 249227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetTexEnviv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetTexEnviv__IILjava_nio_IntBuffer_2 }, 249327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetTexEnvxv", "(II[II)V", (void *) android_glGetTexEnvxv__II_3II }, 249427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetTexEnvxv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetTexEnvxv__IILjava_nio_IntBuffer_2 }, 249527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetTexParameterfv", "(II[FI)V", (void *) android_glGetTexParameterfv__II_3FI }, 249627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetTexParameterfv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glGetTexParameterfv__IILjava_nio_FloatBuffer_2 }, 249727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetTexParameteriv", "(II[II)V", (void *) android_glGetTexParameteriv__II_3II }, 249827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetTexParameteriv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetTexParameteriv__IILjava_nio_IntBuffer_2 }, 249927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetTexParameterxv", "(II[II)V", (void *) android_glGetTexParameterxv__II_3II }, 250027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glGetTexParameterxv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetTexParameterxv__IILjava_nio_IntBuffer_2 }, 250127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glIsBuffer", "(I)Z", (void *) android_glIsBuffer__I }, 250227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glIsEnabled", "(I)Z", (void *) android_glIsEnabled__I }, 250327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glIsTexture", "(I)Z", (void *) android_glIsTexture__I }, 250427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glNormalPointer", "(III)V", (void *) android_glNormalPointer__III }, 250527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glPointParameterf", "(IF)V", (void *) android_glPointParameterf__IF }, 250627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glPointParameterfv", "(I[FI)V", (void *) android_glPointParameterfv__I_3FI }, 250727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glPointParameterfv", "(ILjava/nio/FloatBuffer;)V", (void *) android_glPointParameterfv__ILjava_nio_FloatBuffer_2 }, 250827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glPointParameterx", "(II)V", (void *) android_glPointParameterx__II }, 250927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glPointParameterxv", "(I[II)V", (void *) android_glPointParameterxv__I_3II }, 251027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glPointParameterxv", "(ILjava/nio/IntBuffer;)V", (void *) android_glPointParameterxv__ILjava_nio_IntBuffer_2 }, 2511be6eac828f5af8b608c3fa6749330f1dcd6b6206Jack Palevich{"glPointSizePointerOESBounds", "(IILjava/nio/Buffer;I)V", (void *) android_glPointSizePointerOESBounds__IILjava_nio_Buffer_2I }, 251227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glTexCoordPointer", "(IIII)V", (void *) android_glTexCoordPointer__IIII }, 251327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glTexEnvi", "(III)V", (void *) android_glTexEnvi__III }, 251427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glTexEnviv", "(II[II)V", (void *) android_glTexEnviv__II_3II }, 251527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glTexEnviv", "(IILjava/nio/IntBuffer;)V", (void *) android_glTexEnviv__IILjava_nio_IntBuffer_2 }, 251627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glTexParameterfv", "(II[FI)V", (void *) android_glTexParameterfv__II_3FI }, 251727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glTexParameterfv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glTexParameterfv__IILjava_nio_FloatBuffer_2 }, 251827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glTexParameteri", "(III)V", (void *) android_glTexParameteri__III }, 251927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glTexParameteriv", "(II[II)V", (void *) android_glTexParameteriv__II_3II }, 252027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glTexParameteriv", "(IILjava/nio/IntBuffer;)V", (void *) android_glTexParameteriv__IILjava_nio_IntBuffer_2 }, 252127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glTexParameterxv", "(II[II)V", (void *) android_glTexParameterxv__II_3II }, 252227f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glTexParameterxv", "(IILjava/nio/IntBuffer;)V", (void *) android_glTexParameterxv__IILjava_nio_IntBuffer_2 }, 252327f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{"glVertexPointer", "(IIII)V", (void *) android_glVertexPointer__IIII }, 252427f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich}; 252527f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich 252627f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevichint register_android_opengl_jni_GLES11(JNIEnv *_env) 252727f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich{ 252827f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich int err; 252927f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich err = android::AndroidRuntime::registerNativeMethods(_env, classPathName, methods, NELEM(methods)); 253027f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich return err; 253127f8002e591b5c579f75b2580183b5d1c4219cd4Jack Palevich} 2532