MosaicRendererSurfaceViewRenderer.java revision 2faf16a90a6a6d18e40faf45ced217b913b214b6
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 19eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansalimport android.opengl.GLSurfaceView; 2041a2e9735136f372de95652d0828600282c8e967mbansalimport android.util.Log; 21eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal 2236839102e03107e3fb121197036365a58ec2686eAngus Kongimport javax.microedition.khronos.egl.EGLConfig; 2336839102e03107e3fb121197036365a58ec2686eAngus Kongimport javax.microedition.khronos.opengles.GL10; 2436839102e03107e3fb121197036365a58ec2686eAngus Kong 25eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansalpublic class MosaicRendererSurfaceViewRenderer implements GLSurfaceView.Renderer 26eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal{ 2736839102e03107e3fb121197036365a58ec2686eAngus Kong private static final String TAG = "MosaicRendererSurfaceViewRenderer"; 2836839102e03107e3fb121197036365a58ec2686eAngus Kong 2936839102e03107e3fb121197036365a58ec2686eAngus Kong private MosaicSurfaceCreateListener mSurfaceCreateListener; 3036839102e03107e3fb121197036365a58ec2686eAngus Kong 3136839102e03107e3fb121197036365a58ec2686eAngus Kong /** A callback to be called when the surface is created */ 3236839102e03107e3fb121197036365a58ec2686eAngus Kong public interface MosaicSurfaceCreateListener { 332faf16a90a6a6d18e40faf45ced217b913b214b6Angus Kong public void onMosaicSurfaceCreated(final int surface); 3436839102e03107e3fb121197036365a58ec2686eAngus Kong } 3536839102e03107e3fb121197036365a58ec2686eAngus Kong 36eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal @Override 3741a2e9735136f372de95652d0828600282c8e967mbansal public void onDrawFrame(GL10 gl) { 38eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal MosaicRenderer.step(); 39eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal } 40eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal 41eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal @Override 4241a2e9735136f372de95652d0828600282c8e967mbansal public void onSurfaceChanged(GL10 gl, int width, int height) { 43eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal MosaicRenderer.reset(width, height); 4441a2e9735136f372de95652d0828600282c8e967mbansal Log.i(TAG, "Renderer: onSurfaceChanged"); 45eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal } 46eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal 47eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal @Override 4841a2e9735136f372de95652d0828600282c8e967mbansal public void onSurfaceCreated(GL10 gl, EGLConfig config) { 492faf16a90a6a6d18e40faf45ced217b913b214b6Angus Kong Log.i(TAG, "onSurfaceCreated"); 5036839102e03107e3fb121197036365a58ec2686eAngus Kong if (mSurfaceCreateListener != null) { 512faf16a90a6a6d18e40faf45ced217b913b214b6Angus Kong mSurfaceCreateListener.onMosaicSurfaceCreated(MosaicRenderer.init()); 5236839102e03107e3fb121197036365a58ec2686eAngus Kong } 5336839102e03107e3fb121197036365a58ec2686eAngus Kong } 5441a2e9735136f372de95652d0828600282c8e967mbansal 5536839102e03107e3fb121197036365a58ec2686eAngus Kong public void setMosaicSurfaceCreateListener(MosaicSurfaceCreateListener listener) { 5636839102e03107e3fb121197036365a58ec2686eAngus Kong mSurfaceCreateListener = listener; 57eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal } 58eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal 5941a2e9735136f372de95652d0828600282c8e967mbansal public void setReady() { 60eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal MosaicRenderer.ready(); 61eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal } 62eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal 632faf16a90a6a6d18e40faf45ced217b913b214b6Angus Kong public void preprocess(float[] transformMatrix) { 642faf16a90a6a6d18e40faf45ced217b913b214b6Angus Kong MosaicRenderer.preprocess(transformMatrix); 6541a2e9735136f372de95652d0828600282c8e967mbansal } 6641a2e9735136f372de95652d0828600282c8e967mbansal 6741a2e9735136f372de95652d0828600282c8e967mbansal public void transferGPUtoCPU() { 6841a2e9735136f372de95652d0828600282c8e967mbansal MosaicRenderer.transferGPUtoCPU(); 6941a2e9735136f372de95652d0828600282c8e967mbansal } 7041a2e9735136f372de95652d0828600282c8e967mbansal 7141a2e9735136f372de95652d0828600282c8e967mbansal public void setWarping(boolean flag) { 7241a2e9735136f372de95652d0828600282c8e967mbansal MosaicRenderer.setWarping(flag); 7341a2e9735136f372de95652d0828600282c8e967mbansal } 74eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal} 75