MosaicRenderer.java revision eeb94d4de94bfd4e01f3a716803f77a530f5b92c
1eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal/*
2eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal * Copyright (C) 2011 The Android Open Source Project
3eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal *
4eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal * Licensed under the Apache License, Version 2.0 (the "License");
5eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal * you may not use this file except in compliance with the License.
6eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal * You may obtain a copy of the License at
7eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal *
8eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal *      http://www.apache.org/licenses/LICENSE-2.0
9eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal *
10eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal * Unless required by applicable law or agreed to in writing, software
11eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal * distributed under the License is distributed on an "AS IS" BASIS,
12eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal * See the License for the specific language governing permissions and
14eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal * limitations under the License.
15eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal */
16eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal
17eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansalpackage com.android.camera.panorama;
18eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal
19eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal/**
20eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal * The Java interface to JNI calls regarding mosaic preview rendering.
21eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal *
22eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal */
23eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansalpublic class MosaicRenderer
24eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal{
25eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal     static
26eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal     {
27eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal         System.loadLibrary("jni_mosaic");
28eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal     }
29eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal
30eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal     /**
31eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal      * Function to be called in onSurfaceCreated() to initialize
32eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal      * the GL context, load and link the shaders and create the
33eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal      * program.
34eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal      */
35eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal     public static native void init();
36eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal
37eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal     /**
38eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal      * Pass the drawing surface's width and height to initialize the
39eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal      * renderer viewports and FBO dimensions.
40eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal      *
41eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal      * @param width width of the drawing surface in pixels.
42eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal      * @param height height of the drawing surface in pixels.
43eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal      */
44eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal     public static native void reset(int width, int height);
45eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal
46eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal     /**
47eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal      * Function to be called in onDrawFrame() to update the screen with
48eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal      * the new frame data.
49eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal      */
50eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal     public static native void step();
51eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal
52eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal     /**
53eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal      * Call this function when a new low-res frame has been processed by
54eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal      * the mosaicing library. This will tell the renderer library to
55eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal      * update its texture and warping transformation. Any calls to step()
56eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal      * after this call will use the new image frame and transformation data.
57eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal      */
58eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal     public static native void ready();
59eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal
60eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal     /**
61eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal      * This function allows toggling between showing the input image data
62eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal      * (without applying any warp) and the warped image data. This is more
63eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal      * for debugging purposes to see if the image data is being updated
64eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal      * correctly or not.
65eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal      */
66eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal     public static native void togglewarping();
67eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal}
68