1104c45677660586026a7e74ef8c47d396403d50eMichael Jurka/* 2104c45677660586026a7e74ef8c47d396403d50eMichael Jurka * Copyright (C) 2010 The Android Open Source Project 3104c45677660586026a7e74ef8c47d396403d50eMichael Jurka * 4104c45677660586026a7e74ef8c47d396403d50eMichael Jurka * Licensed under the Apache License, Version 2.0 (the "License"); 5104c45677660586026a7e74ef8c47d396403d50eMichael Jurka * you may not use this file except in compliance with the License. 6104c45677660586026a7e74ef8c47d396403d50eMichael Jurka * You may obtain a copy of the License at 7104c45677660586026a7e74ef8c47d396403d50eMichael Jurka * 8104c45677660586026a7e74ef8c47d396403d50eMichael Jurka * http://www.apache.org/licenses/LICENSE-2.0 9104c45677660586026a7e74ef8c47d396403d50eMichael Jurka * 10104c45677660586026a7e74ef8c47d396403d50eMichael Jurka * Unless required by applicable law or agreed to in writing, software 11104c45677660586026a7e74ef8c47d396403d50eMichael Jurka * distributed under the License is distributed on an "AS IS" BASIS, 12104c45677660586026a7e74ef8c47d396403d50eMichael Jurka * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13104c45677660586026a7e74ef8c47d396403d50eMichael Jurka * See the License for the specific language governing permissions and 14104c45677660586026a7e74ef8c47d396403d50eMichael Jurka * limitations under the License. 15104c45677660586026a7e74ef8c47d396403d50eMichael Jurka */ 16104c45677660586026a7e74ef8c47d396403d50eMichael Jurka 17104c45677660586026a7e74ef8c47d396403d50eMichael Jurkapackage com.android.gallery3d.glrenderer; 18104c45677660586026a7e74ef8c47d396403d50eMichael Jurka 19104c45677660586026a7e74ef8c47d396403d50eMichael Jurkaimport android.util.Log; 20104c45677660586026a7e74ef8c47d396403d50eMichael Jurka 21104c45677660586026a7e74ef8c47d396403d50eMichael Jurkaimport javax.microedition.khronos.opengles.GL11; 22104c45677660586026a7e74ef8c47d396403d50eMichael Jurka 23104c45677660586026a7e74ef8c47d396403d50eMichael Jurkapublic class RawTexture extends BasicTexture { 24104c45677660586026a7e74ef8c47d396403d50eMichael Jurka private static final String TAG = "RawTexture"; 25104c45677660586026a7e74ef8c47d396403d50eMichael Jurka 26104c45677660586026a7e74ef8c47d396403d50eMichael Jurka private final boolean mOpaque; 27104c45677660586026a7e74ef8c47d396403d50eMichael Jurka private boolean mIsFlipped; 28104c45677660586026a7e74ef8c47d396403d50eMichael Jurka 29104c45677660586026a7e74ef8c47d396403d50eMichael Jurka public RawTexture(int width, int height, boolean opaque) { 30104c45677660586026a7e74ef8c47d396403d50eMichael Jurka mOpaque = opaque; 31104c45677660586026a7e74ef8c47d396403d50eMichael Jurka setSize(width, height); 32104c45677660586026a7e74ef8c47d396403d50eMichael Jurka } 33104c45677660586026a7e74ef8c47d396403d50eMichael Jurka 34104c45677660586026a7e74ef8c47d396403d50eMichael Jurka @Override 35104c45677660586026a7e74ef8c47d396403d50eMichael Jurka public boolean isOpaque() { 36104c45677660586026a7e74ef8c47d396403d50eMichael Jurka return mOpaque; 37104c45677660586026a7e74ef8c47d396403d50eMichael Jurka } 38104c45677660586026a7e74ef8c47d396403d50eMichael Jurka 39104c45677660586026a7e74ef8c47d396403d50eMichael Jurka @Override 40104c45677660586026a7e74ef8c47d396403d50eMichael Jurka public boolean isFlippedVertically() { 41104c45677660586026a7e74ef8c47d396403d50eMichael Jurka return mIsFlipped; 42104c45677660586026a7e74ef8c47d396403d50eMichael Jurka } 43104c45677660586026a7e74ef8c47d396403d50eMichael Jurka 44104c45677660586026a7e74ef8c47d396403d50eMichael Jurka public void setIsFlippedVertically(boolean isFlipped) { 45104c45677660586026a7e74ef8c47d396403d50eMichael Jurka mIsFlipped = isFlipped; 46104c45677660586026a7e74ef8c47d396403d50eMichael Jurka } 47104c45677660586026a7e74ef8c47d396403d50eMichael Jurka 48104c45677660586026a7e74ef8c47d396403d50eMichael Jurka protected void prepare(GLCanvas canvas) { 49104c45677660586026a7e74ef8c47d396403d50eMichael Jurka GLId glId = canvas.getGLId(); 50104c45677660586026a7e74ef8c47d396403d50eMichael Jurka mId = glId.generateTexture(); 51104c45677660586026a7e74ef8c47d396403d50eMichael Jurka canvas.initializeTextureSize(this, GL11.GL_RGBA, GL11.GL_UNSIGNED_BYTE); 52104c45677660586026a7e74ef8c47d396403d50eMichael Jurka canvas.setTextureParameters(this); 53104c45677660586026a7e74ef8c47d396403d50eMichael Jurka mState = STATE_LOADED; 54104c45677660586026a7e74ef8c47d396403d50eMichael Jurka setAssociatedCanvas(canvas); 55104c45677660586026a7e74ef8c47d396403d50eMichael Jurka } 56104c45677660586026a7e74ef8c47d396403d50eMichael Jurka 57104c45677660586026a7e74ef8c47d396403d50eMichael Jurka @Override 58104c45677660586026a7e74ef8c47d396403d50eMichael Jurka protected boolean onBind(GLCanvas canvas) { 59104c45677660586026a7e74ef8c47d396403d50eMichael Jurka if (isLoaded()) return true; 60104c45677660586026a7e74ef8c47d396403d50eMichael Jurka Log.w(TAG, "lost the content due to context change"); 61104c45677660586026a7e74ef8c47d396403d50eMichael Jurka return false; 62104c45677660586026a7e74ef8c47d396403d50eMichael Jurka } 63104c45677660586026a7e74ef8c47d396403d50eMichael Jurka 64104c45677660586026a7e74ef8c47d396403d50eMichael Jurka @Override 65104c45677660586026a7e74ef8c47d396403d50eMichael Jurka public void yield() { 66104c45677660586026a7e74ef8c47d396403d50eMichael Jurka // we cannot free the texture because we have no backup. 67104c45677660586026a7e74ef8c47d396403d50eMichael Jurka } 68104c45677660586026a7e74ef8c47d396403d50eMichael Jurka 69104c45677660586026a7e74ef8c47d396403d50eMichael Jurka @Override 70104c45677660586026a7e74ef8c47d396403d50eMichael Jurka protected int getTarget() { 71104c45677660586026a7e74ef8c47d396403d50eMichael Jurka return GL11.GL_TEXTURE_2D; 72104c45677660586026a7e74ef8c47d396403d50eMichael Jurka } 73104c45677660586026a7e74ef8c47d396403d50eMichael Jurka} 74