14ad1c1729d0ba95b5e96081759a96072e611df1fOwen Linpackage com.android.camera.ui; 24ad1c1729d0ba95b5e96081759a96072e611df1fOwen Lin 34ad1c1729d0ba95b5e96081759a96072e611df1fOwen Linimport javax.microedition.khronos.opengles.GL11; 44ad1c1729d0ba95b5e96081759a96072e611df1fOwen Lin 54ad1c1729d0ba95b5e96081759a96072e611df1fOwen Linabstract class BasicTexture implements Texture { 64ad1c1729d0ba95b5e96081759a96072e611df1fOwen Lin 74ad1c1729d0ba95b5e96081759a96072e611df1fOwen Lin protected static final int UNSPECIFIED = -1; 84ad1c1729d0ba95b5e96081759a96072e611df1fOwen Lin 94ad1c1729d0ba95b5e96081759a96072e611df1fOwen Lin public static final int STATE_UNLOADED = 0; 104ad1c1729d0ba95b5e96081759a96072e611df1fOwen Lin public static final int STATE_LOADED = 1; 114ad1c1729d0ba95b5e96081759a96072e611df1fOwen Lin public static final int STATE_ERROR = -1; 124ad1c1729d0ba95b5e96081759a96072e611df1fOwen Lin 134ad1c1729d0ba95b5e96081759a96072e611df1fOwen Lin protected GL11 mGL; 144ad1c1729d0ba95b5e96081759a96072e611df1fOwen Lin 154ad1c1729d0ba95b5e96081759a96072e611df1fOwen Lin protected int mId; 164ad1c1729d0ba95b5e96081759a96072e611df1fOwen Lin protected int mState; 174ad1c1729d0ba95b5e96081759a96072e611df1fOwen Lin 184ad1c1729d0ba95b5e96081759a96072e611df1fOwen Lin protected int mWidth = UNSPECIFIED; 194ad1c1729d0ba95b5e96081759a96072e611df1fOwen Lin protected int mHeight = UNSPECIFIED; 204ad1c1729d0ba95b5e96081759a96072e611df1fOwen Lin 214ad1c1729d0ba95b5e96081759a96072e611df1fOwen Lin protected int mTextureWidth; 224ad1c1729d0ba95b5e96081759a96072e611df1fOwen Lin protected int mTextureHeight; 234ad1c1729d0ba95b5e96081759a96072e611df1fOwen Lin 244ad1c1729d0ba95b5e96081759a96072e611df1fOwen Lin protected BasicTexture(GL11 gl, int id, int state) { 254ad1c1729d0ba95b5e96081759a96072e611df1fOwen Lin mGL = gl; 264ad1c1729d0ba95b5e96081759a96072e611df1fOwen Lin mId = id; 274ad1c1729d0ba95b5e96081759a96072e611df1fOwen Lin mState = state; 284ad1c1729d0ba95b5e96081759a96072e611df1fOwen Lin } 294ad1c1729d0ba95b5e96081759a96072e611df1fOwen Lin 304ad1c1729d0ba95b5e96081759a96072e611df1fOwen Lin protected BasicTexture() { 314ad1c1729d0ba95b5e96081759a96072e611df1fOwen Lin this(null, 0, STATE_UNLOADED); 324ad1c1729d0ba95b5e96081759a96072e611df1fOwen Lin } 334ad1c1729d0ba95b5e96081759a96072e611df1fOwen Lin 344ad1c1729d0ba95b5e96081759a96072e611df1fOwen Lin protected void setSize(int width, int height) { 354ad1c1729d0ba95b5e96081759a96072e611df1fOwen Lin mWidth = width; 364ad1c1729d0ba95b5e96081759a96072e611df1fOwen Lin mHeight = height; 374ad1c1729d0ba95b5e96081759a96072e611df1fOwen Lin } 384ad1c1729d0ba95b5e96081759a96072e611df1fOwen Lin 394ad1c1729d0ba95b5e96081759a96072e611df1fOwen Lin /** 404ad1c1729d0ba95b5e96081759a96072e611df1fOwen Lin * Sets the size of the texture. Due to the limit of OpenGL, the texture 414ad1c1729d0ba95b5e96081759a96072e611df1fOwen Lin * size must be of power of 2, the size of the content may not be the size 424ad1c1729d0ba95b5e96081759a96072e611df1fOwen Lin * of the texture. 434ad1c1729d0ba95b5e96081759a96072e611df1fOwen Lin */ 444ad1c1729d0ba95b5e96081759a96072e611df1fOwen Lin protected void setTextureSize(int width, int height) { 454ad1c1729d0ba95b5e96081759a96072e611df1fOwen Lin mTextureWidth = width; 464ad1c1729d0ba95b5e96081759a96072e611df1fOwen Lin mTextureHeight = height; 474ad1c1729d0ba95b5e96081759a96072e611df1fOwen Lin } 484ad1c1729d0ba95b5e96081759a96072e611df1fOwen Lin 494ad1c1729d0ba95b5e96081759a96072e611df1fOwen Lin public int getId() { 504ad1c1729d0ba95b5e96081759a96072e611df1fOwen Lin return mId; 514ad1c1729d0ba95b5e96081759a96072e611df1fOwen Lin } 524ad1c1729d0ba95b5e96081759a96072e611df1fOwen Lin 534ad1c1729d0ba95b5e96081759a96072e611df1fOwen Lin public int getWidth() { 544ad1c1729d0ba95b5e96081759a96072e611df1fOwen Lin return mWidth; 554ad1c1729d0ba95b5e96081759a96072e611df1fOwen Lin } 564ad1c1729d0ba95b5e96081759a96072e611df1fOwen Lin 574ad1c1729d0ba95b5e96081759a96072e611df1fOwen Lin public int getHeight() { 584ad1c1729d0ba95b5e96081759a96072e611df1fOwen Lin return mHeight; 594ad1c1729d0ba95b5e96081759a96072e611df1fOwen Lin } 604ad1c1729d0ba95b5e96081759a96072e611df1fOwen Lin 614ad1c1729d0ba95b5e96081759a96072e611df1fOwen Lin public void deleteFromGL() { 624ad1c1729d0ba95b5e96081759a96072e611df1fOwen Lin if (mState == STATE_LOADED) { 634ad1c1729d0ba95b5e96081759a96072e611df1fOwen Lin mGL.glDeleteTextures(1, new int[]{mId}, 0); 644ad1c1729d0ba95b5e96081759a96072e611df1fOwen Lin } 654ad1c1729d0ba95b5e96081759a96072e611df1fOwen Lin mState = STATE_UNLOADED; 664ad1c1729d0ba95b5e96081759a96072e611df1fOwen Lin } 674ad1c1729d0ba95b5e96081759a96072e611df1fOwen Lin 684ad1c1729d0ba95b5e96081759a96072e611df1fOwen Lin public void draw(GLRootView root, int x, int y) { 694ad1c1729d0ba95b5e96081759a96072e611df1fOwen Lin root.drawTexture(this, x, y, mWidth, mHeight); 704ad1c1729d0ba95b5e96081759a96072e611df1fOwen Lin } 714ad1c1729d0ba95b5e96081759a96072e611df1fOwen Lin 724ad1c1729d0ba95b5e96081759a96072e611df1fOwen Lin public void draw(GLRootView root, int x, int y, int w, int h) { 734ad1c1729d0ba95b5e96081759a96072e611df1fOwen Lin root.drawTexture(this, x, y, w, h); 744ad1c1729d0ba95b5e96081759a96072e611df1fOwen Lin } 754ad1c1729d0ba95b5e96081759a96072e611df1fOwen Lin 764ad1c1729d0ba95b5e96081759a96072e611df1fOwen Lin abstract protected boolean bind(GLRootView root, GL11 gl); 774ad1c1729d0ba95b5e96081759a96072e611df1fOwen Lin} 78