android_view_GLES20Canvas.cpp revision e4d011201cea40d46cb2b2eef401db8fddc5c9c6
1e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy/* 2e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy * Copyright (C) 2010 The Android Open Source Project 3e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy * 4e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy * Licensed under the Apache License, Version 2.0 (the "License"); 5e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy * you may not use this file except in compliance with the License. 6e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy * You may obtain a copy of the License at 7e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy * 8e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy * http://www.apache.org/licenses/LICENSE-2.0 9e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy * 10e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy * Unless required by applicable law or agreed to in writing, software 11e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy * distributed under the License is distributed on an "AS IS" BASIS, 12e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy * See the License for the specific language governing permissions and 14e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy * limitations under the License. 15e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy */ 16e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 17e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy#include "jni.h" 18e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy#include <nativehelper/JNIHelp.h> 19e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy#include <android_runtime/AndroidRuntime.h> 20e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 21e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy#include <UIOpenGLRenderer.h> 22e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 23e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy#define UI ((UIOpenGLRenderer*) renderer) 24e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 25e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guynamespace android { 26e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 27e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy// ---------------------------------------------------------------------------- 28e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy// Constructors 29e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy// ---------------------------------------------------------------------------- 30e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 31e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guystatic UIOpenGLRenderer* android_view_GLES20Renderer_createRenderer(JNIEnv* env, jobject canvas) { 32e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy return new UIOpenGLRenderer; 33e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy} 34e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 35e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guystatic void android_view_GLES20Renderer_destroyRenderer(JNIEnv* env, jobject canvas, jint renderer) { 36e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy delete UI; 37e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy} 38e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 39e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy// ---------------------------------------------------------------------------- 40e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy// Setup 41e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy// ---------------------------------------------------------------------------- 42e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 43e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guystatic void android_view_GLES20Renderer_setViewport(JNIEnv* env, jobject canvas, jint renderer, 44e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy jint width, jint height) { 45e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 46e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy UI->setViewport(width, height); 47e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy} 48e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 49e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guystatic void android_view_GLES20Renderer_prepare(JNIEnv* env, jobject canvas, jint renderer) { 50e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 51e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy UI->prepare(); 52e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy} 53e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 54e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy// ---------------------------------------------------------------------------- 55e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy// JNI Glue 56e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy// ---------------------------------------------------------------------------- 57e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 58e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guyconst char* const kClassPathName = "android/view/GLES20Canvas"; 59e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 60e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guystatic JNINativeMethod gMethods[] = { 61e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy { "nCreateRenderer", "()I", (void*) android_view_GLES20Renderer_createRenderer }, 62e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy { "nDestroyRenderer", "(I)V", (void*) android_view_GLES20Renderer_destroyRenderer }, 63e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy { "nSetViewport", "(III)V", (void*) android_view_GLES20Renderer_setViewport }, 64e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy { "nPrepare", "(I)V", (void*) android_view_GLES20Renderer_prepare }, 65e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy}; 66e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 67e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guyint register_android_view_GLES20Canvas(JNIEnv* env) { 68e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy return AndroidRuntime::registerNativeMethods(env, kClassPathName, gMethods, NELEM(gMethods)); 69e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy} 70e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 71e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy}; 72