1 /*
2  * Copyright (C) 2012 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 #include <jni.h>
18 #include <android/log.h>
19 
20 #include <GLES2/gl2.h>
21 #include <GLES2/gl2ext.h>
22 
23 #include <stdio.h>
24 #include <stdlib.h>
25 #include <math.h>
26 
27 #include "attach_shader_one.h"
28 #include "attach_shader_two.h"
29 #include "attach_shader_three.h"
30 #include "attach_shader_four.h"
31 #include "attach_shader_five.h"
32 #include "attach_shader_six.h"
33 #include "attach_shader_seven.h"
34 #include "attach_shader_eight.h"
35 #include "attach_shader_nine.h"
36 #include "attach_shader_ten.h"
37 #include "attach_shader_eleven.h"
38 #include "color_one.h"
39 
40 #define  LOG_TAG    "gl2_jni_libone"
41 #define  LOGI(...)  __android_log_print(ANDROID_LOG_INFO,LOG_TAG,__VA_ARGS__)
42 #define  LOGE(...)  __android_log_print(ANDROID_LOG_ERROR,LOG_TAG,__VA_ARGS__)
43 
44 static GLint errorAttachShader = -1;
45 static GLint shaderCount = -1;
46 
47 
Java_android_opengl_cts_GL2JniLibOne_init(JNIEnv *,jclass pClass,jint pCategory,jint pSubCategory,jint width,jint height)48 extern "C" JNIEXPORT void JNICALL Java_android_opengl_cts_GL2JniLibOne_init
49   (JNIEnv *, jclass pClass, jint pCategory, jint pSubCategory, jint width, jint height)  {
50     LOGI("Category :  %d\n", pCategory);
51 
52     if(pCategory == 1) {
53         if(pSubCategory == 1) {
54             Data data = attachShaderOne();
55             LOGI("Attach Shader Error :  %d\n", data.mShaderError);
56             LOGI("Shader Count :  %d\n", data.mShaderCount);
57             errorAttachShader = data.mShaderError;
58             shaderCount = data.mShaderCount;
59         }else if(pSubCategory == 2) {
60             Data data = attachShaderTwo();
61             LOGI("Attach Shader Error :  %d\n", data.mShaderError);
62             errorAttachShader = data.mShaderError;
63         }else if(pSubCategory == 3) {
64             Data data = attachShaderThree();
65             LOGI("Attach Shader Error :  %d\n", data.mShaderError);
66             errorAttachShader = data.mShaderError;
67         }else if(pSubCategory == 4) {
68             Data data = attachShaderFour();
69             LOGI("Attach Shader Error :  %d\n", data.mShaderError);
70             LOGI("Shader Count :  %d\n", data.mShaderCount);
71             errorAttachShader = data.mShaderError;
72             shaderCount = data.mShaderCount;
73         }else if(pSubCategory == 5) {
74             Data data = attachShaderFive();
75             LOGI("Attach Shader Error :  %d\n", data.mShaderError);
76             errorAttachShader = data.mShaderError;
77         }else if(pSubCategory == 6) {
78             Data data = attachShaderSix();
79             LOGI("Attach Shader Error :  %d\n", data.mShaderError);
80             errorAttachShader = data.mShaderError;
81         }else if(pSubCategory == 7) {
82             Data data = attachShaderSeven();
83             LOGI("Attach Shader Error :  %d\n", data.mShaderError);
84             errorAttachShader = data.mShaderError;
85         }else if(pSubCategory == 8) {
86             Data data = attachShaderEight();
87             LOGI("Attach Shader Error :  %d\n", data.mShaderError);
88             errorAttachShader = data.mShaderError;
89         }else if(pSubCategory == 9) {
90             Data data = attachShaderNine();
91             LOGI("Attach Shader Error :  %d\n", data.mShaderError);
92             errorAttachShader = data.mShaderError;
93         }else if(pSubCategory == 10) {
94             Data data = attachShaderTen();
95             LOGI("Attach Shader Error :  %d\n", data.mShaderError);
96             LOGI("Shader Count :  %d\n", data.mShaderCount);
97             errorAttachShader = data.mShaderError;
98             shaderCount = data.mShaderCount;
99         }else if(pSubCategory == 11) {
100             Data data = attachShaderEleven();
101             LOGI("Attach Shader Error :  %d\n", data.mShaderError);
102             LOGI("Shader Count :  %d\n", data.mShaderCount);
103             errorAttachShader = data.mShaderError;
104             shaderCount = data.mShaderCount;
105         }
106     }else if(pCategory == 3){//Color Test
107         if(pSubCategory == 1){
108             initColorOne( width,height);
109         }
110     }
111 }
112 
Java_android_opengl_cts_GL2JniLibOne_step(JNIEnv * env,jclass obj)113 extern "C" JNIEXPORT void JNICALL Java_android_opengl_cts_GL2JniLibOne_step(JNIEnv * env, jclass obj)
114 {
115     //implement later
116 }
117 
Java_android_opengl_cts_GL2JniLibOne_getAttachShaderError(JNIEnv * env,jclass obj)118 extern "C" JNIEXPORT jint JNICALL Java_android_opengl_cts_GL2JniLibOne_getAttachShaderError(JNIEnv * env, jclass obj){
119     return errorAttachShader;
120 }
121 
Java_android_opengl_cts_GL2JniLibOne_getLoadShaderError(JNIEnv * env,jclass obj)122 extern "C" JNIEXPORT jint JNICALL Java_android_opengl_cts_GL2JniLibOne_getLoadShaderError(JNIEnv * env, jclass obj){
123      return -1;
124 }
125 
Java_android_opengl_cts_GL2JniLibOne_getProgramError(JNIEnv * env,jclass obj)126 extern "C" JNIEXPORT jint JNICALL Java_android_opengl_cts_GL2JniLibOne_getProgramError(JNIEnv * env, jclass obj){
127      return -2;
128 }
129 
Java_android_opengl_cts_GL2JniLibOne_getAttachedShaderCount(JNIEnv * env,jclass obj)130 extern "C" JNIEXPORT jint JNICALL Java_android_opengl_cts_GL2JniLibOne_getAttachedShaderCount(JNIEnv * env, jclass obj){
131     return shaderCount;
132 }
133 
Java_android_opengl_cts_GL2JniLibOne_draw(JNIEnv * env,jclass obj,jint pCategory,jint pSubCategory,jfloatArray color)134 extern "C" JNIEXPORT jfloatArray JNICALL Java_android_opengl_cts_GL2JniLibOne_draw(JNIEnv * env,
135         jclass obj, jint pCategory, jint pSubCategory, jfloatArray color)
136 {
137     LOGI("Inside draw %d %d", pCategory, pSubCategory);
138     jfloatArray result = nullptr;
139     if(pCategory == 3){
140         if(pSubCategory == 1){
141             result = env->NewFloatArray(4);
142 
143             jfloat *lColor =  env->GetFloatArrayElements(color,0);
144 
145             float * actualColor = drawColorOne(lColor);
146             for(unsigned i = 0; i < sizeof(actualColor); i++) {
147                 LOGI("actualColor[%u] ; %f", i, actualColor[i]);
148             }
149             env->SetFloatArrayRegion(result, 0, 4, actualColor);
150         }
151     }
152     return result;
153 }
154