|  | /* | 
|  | * Copyright (C) 2011 The Android Open Source Project | 
|  | * | 
|  | * Licensed under the Apache License, Version 2.0 (the "License"); | 
|  | * you may not use this file except in compliance with the License. | 
|  | * You may obtain a copy of the License at | 
|  | * | 
|  | * http://www.apache.org/licenses/LICENSE-2.0 | 
|  | * | 
|  | * Unless required by applicable law or agreed to in writing, software | 
|  | * distributed under the License is distributed on an "AS IS" BASIS, | 
|  | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 
|  | * See the License for the specific language governing permissions and | 
|  | * limitations under the License. | 
|  | */ | 
|  | #ifndef __GL_UTILS_H__ | 
|  | #define __GL_UTILS_H__ | 
|  |  | 
|  | #include <stdio.h> | 
|  | #include <stdlib.h> | 
|  |  | 
|  | #ifdef GL_API | 
|  | #undef GL_API | 
|  | #endif | 
|  | #define GL_API | 
|  |  | 
|  | #ifdef GL_APIENTRY | 
|  | #undef GL_APIENTRY | 
|  | #endif | 
|  |  | 
|  | #ifdef GL_APIENTRYP | 
|  | #undef GL_APIENTRYP | 
|  | #endif | 
|  | #define GL_APIENTRYP | 
|  |  | 
|  | #ifndef ANDROID | 
|  | #define GL_APIENTRY | 
|  | #endif | 
|  |  | 
|  | #include <GLES/gl.h> | 
|  | #include <GLES/glext.h> | 
|  | #include <GLES2/gl2.h> | 
|  | #include <GLES2/gl2ext.h> | 
|  |  | 
|  | #ifdef __cplusplus | 
|  | extern "C" { | 
|  | #endif | 
|  |  | 
|  | size_t glSizeof(GLenum type); | 
|  | size_t glUtilsParamSize(GLenum param); | 
|  | void   glUtilsPackPointerData(unsigned char *dst, unsigned char *str, | 
|  | int size, GLenum type, unsigned int stride, | 
|  | unsigned int datalen); | 
|  | int glUtilsPixelBitSize(GLenum format, GLenum type); | 
|  | void   glUtilsPackStrings(char *ptr, char **strings, GLint *length, GLsizei count); | 
|  | int glUtilsCalcShaderSourceLen(char **strings, GLint *length, GLsizei count); | 
|  | #ifdef __cplusplus | 
|  | }; | 
|  | #endif | 
|  |  | 
|  | namespace GLUtils { | 
|  |  | 
|  | template <class T> void minmax(T *indices, int count, int *min, int *max) { | 
|  | *min = -1; | 
|  | *max = -1; | 
|  | T *ptr = indices; | 
|  | for (int i = 0; i < count; i++) { | 
|  | if (*min == -1 || *ptr < *min) *min = *ptr; | 
|  | if (*max == -1 || *ptr > *max) *max = *ptr; | 
|  | ptr++; | 
|  | } | 
|  | } | 
|  |  | 
|  | template <class T> void shiftIndices(T *indices, int count,  int offset) { | 
|  | T *ptr = indices; | 
|  | for (int i = 0; i < count; i++) { | 
|  | *ptr += offset; | 
|  | ptr++; | 
|  | } | 
|  | } | 
|  |  | 
|  |  | 
|  | template <class T> void shiftIndices(T *src, T *dst, int count, int offset) | 
|  | { | 
|  | for (int i = 0; i < count; i++) { | 
|  | *dst = *src + offset; | 
|  | dst++; | 
|  | src++; | 
|  | } | 
|  | } | 
|  | }; // namespace GLUtils | 
|  | #endif |