RawTexture.java revision 6eb33768a15e2b4cc647bc55474568cf710876db
18ac2e8630f33f4d5f65731dc56efa9bfb3570cd7Owen Lin/*
28ac2e8630f33f4d5f65731dc56efa9bfb3570cd7Owen Lin * Copyright (C) 2010 The Android Open Source Project
38ac2e8630f33f4d5f65731dc56efa9bfb3570cd7Owen Lin *
48ac2e8630f33f4d5f65731dc56efa9bfb3570cd7Owen Lin * Licensed under the Apache License, Version 2.0 (the "License");
58ac2e8630f33f4d5f65731dc56efa9bfb3570cd7Owen Lin * you may not use this file except in compliance with the License.
68ac2e8630f33f4d5f65731dc56efa9bfb3570cd7Owen Lin * You may obtain a copy of the License at
78ac2e8630f33f4d5f65731dc56efa9bfb3570cd7Owen Lin *
88ac2e8630f33f4d5f65731dc56efa9bfb3570cd7Owen Lin *      http://www.apache.org/licenses/LICENSE-2.0
98ac2e8630f33f4d5f65731dc56efa9bfb3570cd7Owen Lin *
108ac2e8630f33f4d5f65731dc56efa9bfb3570cd7Owen Lin * Unless required by applicable law or agreed to in writing, software
118ac2e8630f33f4d5f65731dc56efa9bfb3570cd7Owen Lin * distributed under the License is distributed on an "AS IS" BASIS,
128ac2e8630f33f4d5f65731dc56efa9bfb3570cd7Owen Lin * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
138ac2e8630f33f4d5f65731dc56efa9bfb3570cd7Owen Lin * See the License for the specific language governing permissions and
148ac2e8630f33f4d5f65731dc56efa9bfb3570cd7Owen Lin * limitations under the License.
158ac2e8630f33f4d5f65731dc56efa9bfb3570cd7Owen Lin */
168ac2e8630f33f4d5f65731dc56efa9bfb3570cd7Owen Lin
178ac2e8630f33f4d5f65731dc56efa9bfb3570cd7Owen Linpackage com.android.gallery3d.ui;
188ac2e8630f33f4d5f65731dc56efa9bfb3570cd7Owen Lin
196eb33768a15e2b4cc647bc55474568cf710876dbGeorge Mountimport android.opengl.GLES20;
206eb33768a15e2b4cc647bc55474568cf710876dbGeorge Mount
218ac2e8630f33f4d5f65731dc56efa9bfb3570cd7Owen Linimport javax.microedition.khronos.opengles.GL11;
228ac2e8630f33f4d5f65731dc56efa9bfb3570cd7Owen Lin
238ac2e8630f33f4d5f65731dc56efa9bfb3570cd7Owen Linpublic class RawTexture extends BasicTexture {
248ac2e8630f33f4d5f65731dc56efa9bfb3570cd7Owen Lin    private static final String TAG = "RawTexture";
258ac2e8630f33f4d5f65731dc56efa9bfb3570cd7Owen Lin
268ac2e8630f33f4d5f65731dc56efa9bfb3570cd7Owen Lin    private final boolean mOpaque;
278ac2e8630f33f4d5f65731dc56efa9bfb3570cd7Owen Lin
288ac2e8630f33f4d5f65731dc56efa9bfb3570cd7Owen Lin    public RawTexture(int width, int height, boolean opaque) {
298ac2e8630f33f4d5f65731dc56efa9bfb3570cd7Owen Lin        mOpaque = opaque;
308ac2e8630f33f4d5f65731dc56efa9bfb3570cd7Owen Lin        setSize(width, height);
318ac2e8630f33f4d5f65731dc56efa9bfb3570cd7Owen Lin    }
328ac2e8630f33f4d5f65731dc56efa9bfb3570cd7Owen Lin
338ac2e8630f33f4d5f65731dc56efa9bfb3570cd7Owen Lin    @Override
348ac2e8630f33f4d5f65731dc56efa9bfb3570cd7Owen Lin    public boolean isOpaque() {
358ac2e8630f33f4d5f65731dc56efa9bfb3570cd7Owen Lin        return mOpaque;
368ac2e8630f33f4d5f65731dc56efa9bfb3570cd7Owen Lin    }
378ac2e8630f33f4d5f65731dc56efa9bfb3570cd7Owen Lin
388ac2e8630f33f4d5f65731dc56efa9bfb3570cd7Owen Lin    protected void prepare(GLCanvas canvas) {
396eb33768a15e2b4cc647bc55474568cf710876dbGeorge Mount        GLId glId = GLCanvas.getGLId();
406eb33768a15e2b4cc647bc55474568cf710876dbGeorge Mount        mId = glId.generateTexture();
417da54d7e41e04ea5122009b40de19be0724e1ca4George Mount        canvas.initializeTextureSize(this, GL11.GL_RGBA, GL11.GL_UNSIGNED_BYTE);
426eb33768a15e2b4cc647bc55474568cf710876dbGeorge Mount        canvas.setTextureParameters(this);
4337c605949219b8bf54c165c34d6405f5f2989f50Owen Lin        mState = STATE_LOADED;
448ac2e8630f33f4d5f65731dc56efa9bfb3570cd7Owen Lin        setAssociatedCanvas(canvas);
458ac2e8630f33f4d5f65731dc56efa9bfb3570cd7Owen Lin    }
468ac2e8630f33f4d5f65731dc56efa9bfb3570cd7Owen Lin
478ac2e8630f33f4d5f65731dc56efa9bfb3570cd7Owen Lin    @Override
488ac2e8630f33f4d5f65731dc56efa9bfb3570cd7Owen Lin    protected boolean onBind(GLCanvas canvas) {
4937c605949219b8bf54c165c34d6405f5f2989f50Owen Lin        if (isLoaded()) return true;
508ac2e8630f33f4d5f65731dc56efa9bfb3570cd7Owen Lin        Log.w(TAG, "lost the content due to context change");
518ac2e8630f33f4d5f65731dc56efa9bfb3570cd7Owen Lin        return false;
528ac2e8630f33f4d5f65731dc56efa9bfb3570cd7Owen Lin    }
538ac2e8630f33f4d5f65731dc56efa9bfb3570cd7Owen Lin
548ac2e8630f33f4d5f65731dc56efa9bfb3570cd7Owen Lin    @Override
558ac2e8630f33f4d5f65731dc56efa9bfb3570cd7Owen Lin     public void yield() {
568ac2e8630f33f4d5f65731dc56efa9bfb3570cd7Owen Lin         // we cannot free the texture because we have no backup.
578ac2e8630f33f4d5f65731dc56efa9bfb3570cd7Owen Lin     }
588ac2e8630f33f4d5f65731dc56efa9bfb3570cd7Owen Lin
598ac2e8630f33f4d5f65731dc56efa9bfb3570cd7Owen Lin    @Override
608ac2e8630f33f4d5f65731dc56efa9bfb3570cd7Owen Lin    protected int getTarget() {
618ac2e8630f33f4d5f65731dc56efa9bfb3570cd7Owen Lin        return GL11.GL_TEXTURE_2D;
628ac2e8630f33f4d5f65731dc56efa9bfb3570cd7Owen Lin    }
638ac2e8630f33f4d5f65731dc56efa9bfb3570cd7Owen Lin}
64