diff options
Diffstat (limited to 'src/com/android/gallery3d/ui/SurfaceTextureScreenNail.java')
-rw-r--r-- | src/com/android/gallery3d/ui/SurfaceTextureScreenNail.java | 142 |
1 files changed, 0 insertions, 142 deletions
diff --git a/src/com/android/gallery3d/ui/SurfaceTextureScreenNail.java b/src/com/android/gallery3d/ui/SurfaceTextureScreenNail.java deleted file mode 100644 index 18121e63b..000000000 --- a/src/com/android/gallery3d/ui/SurfaceTextureScreenNail.java +++ /dev/null @@ -1,142 +0,0 @@ -/* - * Copyright (C) 2012 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.gallery3d.ui; - -import android.annotation.TargetApi; -import android.graphics.RectF; -import android.graphics.SurfaceTexture; - -import com.android.gallery3d.common.ApiHelper; -import com.android.gallery3d.glrenderer.ExtTexture; -import com.android.gallery3d.glrenderer.GLCanvas; - -@TargetApi(ApiHelper.VERSION_CODES.HONEYCOMB) -public abstract class SurfaceTextureScreenNail implements ScreenNail, - SurfaceTexture.OnFrameAvailableListener { - @SuppressWarnings("unused") - private static final String TAG = "SurfaceTextureScreenNail"; - // This constant is not available in API level before 15, but it was just an - // oversight. - private static final int GL_TEXTURE_EXTERNAL_OES = 0x8D65; - - protected ExtTexture mExtTexture; - private SurfaceTexture mSurfaceTexture; - private int mWidth, mHeight; - private float[] mTransform = new float[16]; - private boolean mHasTexture = false; - - public SurfaceTextureScreenNail() { - } - - public void acquireSurfaceTexture(GLCanvas canvas) { - mExtTexture = new ExtTexture(canvas, GL_TEXTURE_EXTERNAL_OES); - mExtTexture.setSize(mWidth, mHeight); - mSurfaceTexture = new SurfaceTexture(mExtTexture.getId()); - setDefaultBufferSize(mSurfaceTexture, mWidth, mHeight); - mSurfaceTexture.setOnFrameAvailableListener(this); - synchronized (this) { - mHasTexture = true; - } - } - - @TargetApi(ApiHelper.VERSION_CODES.ICE_CREAM_SANDWICH_MR1) - private static void setDefaultBufferSize(SurfaceTexture st, int width, int height) { - if (ApiHelper.HAS_SET_DEFALT_BUFFER_SIZE) { - st.setDefaultBufferSize(width, height); - } - } - - @TargetApi(ApiHelper.VERSION_CODES.ICE_CREAM_SANDWICH) - private static void releaseSurfaceTexture(SurfaceTexture st) { - st.setOnFrameAvailableListener(null); - if (ApiHelper.HAS_RELEASE_SURFACE_TEXTURE) { - st.release(); - } - } - - public SurfaceTexture getSurfaceTexture() { - return mSurfaceTexture; - } - - public void releaseSurfaceTexture() { - synchronized (this) { - mHasTexture = false; - } - mExtTexture.recycle(); - mExtTexture = null; - releaseSurfaceTexture(mSurfaceTexture); - mSurfaceTexture = null; - } - - public void setSize(int width, int height) { - mWidth = width; - mHeight = height; - } - - public void resizeTexture() { - if (mExtTexture != null) { - mExtTexture.setSize(mWidth, mHeight); - setDefaultBufferSize(mSurfaceTexture, mWidth, mHeight); - } - } - - @Override - public int getWidth() { - return mWidth; - } - - @Override - public int getHeight() { - return mHeight; - } - - @Override - public void draw(GLCanvas canvas, int x, int y, int width, int height) { - synchronized (this) { - if (!mHasTexture) return; - mSurfaceTexture.updateTexImage(); - mSurfaceTexture.getTransformMatrix(mTransform); - - // Flip vertically. - canvas.save(GLCanvas.SAVE_FLAG_MATRIX); - int cx = x + width / 2; - int cy = y + height / 2; - canvas.translate(cx, cy); - canvas.scale(1, -1, 1); - canvas.translate(-cx, -cy); - updateTransformMatrix(mTransform); - canvas.drawTexture(mExtTexture, mTransform, x, y, width, height); - canvas.restore(); - } - } - - @Override - public void draw(GLCanvas canvas, RectF source, RectF dest) { - throw new UnsupportedOperationException(); - } - - protected void updateTransformMatrix(float[] matrix) {} - - @Override - abstract public void noDraw(); - - @Override - abstract public void recycle(); - - @Override - abstract public void onFrameAvailable(SurfaceTexture surfaceTexture); -} |