/* * Copyright (C) 2011 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.camera.panorama; import android.opengl.GLSurfaceView; import android.util.Log; import javax.microedition.khronos.egl.EGLConfig; import javax.microedition.khronos.opengles.GL10; public class MosaicRendererSurfaceViewRenderer implements GLSurfaceView.Renderer { private static final String TAG = "MosaicRendererSurfaceViewRenderer"; private boolean mIsLandscapeOrientation; private MosaicSurfaceCreateListener mSurfaceCreateListener; public MosaicRendererSurfaceViewRenderer(boolean isLandscapeOrientation) { mIsLandscapeOrientation = isLandscapeOrientation; } /** A callback to be called when the surface is created */ public interface MosaicSurfaceCreateListener { public void onMosaicSurfaceCreated(final int surface); public void onMosaicSurfaceChanged(); } @Override public void onDrawFrame(GL10 gl) { MosaicRenderer.step(); } @Override public void onSurfaceChanged(GL10 gl, int width, int height) { MosaicRenderer.reset(width, height, mIsLandscapeOrientation); Log.i(TAG, "Renderer: onSurfaceChanged"); if (mSurfaceCreateListener != null) { mSurfaceCreateListener.onMosaicSurfaceChanged(); } } @Override public void onSurfaceCreated(GL10 gl, EGLConfig config) { Log.i(TAG, "onSurfaceCreated"); if (mSurfaceCreateListener != null) { mSurfaceCreateListener.onMosaicSurfaceCreated(MosaicRenderer.init()); } } public void setMosaicSurfaceCreateListener(MosaicSurfaceCreateListener listener) { mSurfaceCreateListener = listener; } public void setReady() { MosaicRenderer.ready(); } public void preprocess(float[] transformMatrix) { MosaicRenderer.preprocess(transformMatrix); } public void transferGPUtoCPU() { MosaicRenderer.transferGPUtoCPU(); } public void setWarping(boolean flag) { MosaicRenderer.setWarping(flag); } }