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