Texture.h revision 8164c2d338781c3a3c4a443941070dca5d88f2a7
1ce0537b80087a6225273040a987414b1dd081aa0Romain Guy/* 2ce0537b80087a6225273040a987414b1dd081aa0Romain Guy * Copyright (C) 2010 The Android Open Source Project 3ce0537b80087a6225273040a987414b1dd081aa0Romain Guy * 4ce0537b80087a6225273040a987414b1dd081aa0Romain Guy * Licensed under the Apache License, Version 2.0 (the "License"); 5ce0537b80087a6225273040a987414b1dd081aa0Romain Guy * you may not use this file except in compliance with the License. 6ce0537b80087a6225273040a987414b1dd081aa0Romain Guy * You may obtain a copy of the License at 7ce0537b80087a6225273040a987414b1dd081aa0Romain Guy * 8ce0537b80087a6225273040a987414b1dd081aa0Romain Guy * http://www.apache.org/licenses/LICENSE-2.0 9ce0537b80087a6225273040a987414b1dd081aa0Romain Guy * 10ce0537b80087a6225273040a987414b1dd081aa0Romain Guy * Unless required by applicable law or agreed to in writing, software 11ce0537b80087a6225273040a987414b1dd081aa0Romain Guy * distributed under the License is distributed on an "AS IS" BASIS, 12ce0537b80087a6225273040a987414b1dd081aa0Romain Guy * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13ce0537b80087a6225273040a987414b1dd081aa0Romain Guy * See the License for the specific language governing permissions and 14ce0537b80087a6225273040a987414b1dd081aa0Romain Guy * limitations under the License. 15ce0537b80087a6225273040a987414b1dd081aa0Romain Guy */ 16ce0537b80087a6225273040a987414b1dd081aa0Romain Guy 17ce0537b80087a6225273040a987414b1dd081aa0Romain Guy#ifndef ANDROID_UI_TEXTURE_H 18ce0537b80087a6225273040a987414b1dd081aa0Romain Guy#define ANDROID_UI_TEXTURE_H 19ce0537b80087a6225273040a987414b1dd081aa0Romain Guy 20ce0537b80087a6225273040a987414b1dd081aa0Romain Guy#include <GLES2/gl2.h> 21ce0537b80087a6225273040a987414b1dd081aa0Romain Guy 22ce0537b80087a6225273040a987414b1dd081aa0Romain Guynamespace android { 23ce0537b80087a6225273040a987414b1dd081aa0Romain Guynamespace uirenderer { 24ce0537b80087a6225273040a987414b1dd081aa0Romain Guy 25ce0537b80087a6225273040a987414b1dd081aa0Romain Guy/** 26ce0537b80087a6225273040a987414b1dd081aa0Romain Guy * Represents an OpenGL texture. 27ce0537b80087a6225273040a987414b1dd081aa0Romain Guy */ 28ce0537b80087a6225273040a987414b1dd081aa0Romain Guystruct Texture { 2922158e139a3d6c6a9787ca0de224e9368f643284Romain Guy Texture() { 3022158e139a3d6c6a9787ca0de224e9368f643284Romain Guy cleanup = false; 319aaa8269a3e7291aab84d01c3fc9c744d8f2d2f4Romain Guy bitmapSize = 0; 328164c2d338781c3a3c4a443941070dca5d88f2a7Romain Guy wrapS = GL_CLAMP_TO_EDGE; 338164c2d338781c3a3c4a443941070dca5d88f2a7Romain Guy wrapT = GL_CLAMP_TO_EDGE; 3422158e139a3d6c6a9787ca0de224e9368f643284Romain Guy } 3522158e139a3d6c6a9787ca0de224e9368f643284Romain Guy 36ce0537b80087a6225273040a987414b1dd081aa0Romain Guy /** 37ce0537b80087a6225273040a987414b1dd081aa0Romain Guy * Name of the texture. 38ce0537b80087a6225273040a987414b1dd081aa0Romain Guy */ 39ce0537b80087a6225273040a987414b1dd081aa0Romain Guy GLuint id; 40ce0537b80087a6225273040a987414b1dd081aa0Romain Guy /** 41fe8809471a40cac8acc984adfa51c39e13e83947Romain Guy * Generation of the backing bitmap, 42fe8809471a40cac8acc984adfa51c39e13e83947Romain Guy */ 43fe8809471a40cac8acc984adfa51c39e13e83947Romain Guy uint32_t generation; 44fe8809471a40cac8acc984adfa51c39e13e83947Romain Guy /** 45ce0537b80087a6225273040a987414b1dd081aa0Romain Guy * Indicates whether the texture requires blending. 46ce0537b80087a6225273040a987414b1dd081aa0Romain Guy */ 47ce0537b80087a6225273040a987414b1dd081aa0Romain Guy bool blend; 48ce0537b80087a6225273040a987414b1dd081aa0Romain Guy /** 49ce0537b80087a6225273040a987414b1dd081aa0Romain Guy * Width of the backing bitmap. 50ce0537b80087a6225273040a987414b1dd081aa0Romain Guy */ 517d139ba2c331f11e9b485753cc727a0ff202f2a4Romain Guy uint32_t width; 52ce0537b80087a6225273040a987414b1dd081aa0Romain Guy /** 53ce0537b80087a6225273040a987414b1dd081aa0Romain Guy * Height of the backing bitmap. 54ce0537b80087a6225273040a987414b1dd081aa0Romain Guy */ 557d139ba2c331f11e9b485753cc727a0ff202f2a4Romain Guy uint32_t height; 5622158e139a3d6c6a9787ca0de224e9368f643284Romain Guy /** 5722158e139a3d6c6a9787ca0de224e9368f643284Romain Guy * Indicates whether this texture should be cleaned up after use. 5822158e139a3d6c6a9787ca0de224e9368f643284Romain Guy */ 5922158e139a3d6c6a9787ca0de224e9368f643284Romain Guy bool cleanup; 609aaa8269a3e7291aab84d01c3fc9c744d8f2d2f4Romain Guy /** 619aaa8269a3e7291aab84d01c3fc9c744d8f2d2f4Romain Guy * Optional, size of the original bitmap. 629aaa8269a3e7291aab84d01c3fc9c744d8f2d2f4Romain Guy */ 639aaa8269a3e7291aab84d01c3fc9c744d8f2d2f4Romain Guy uint32_t bitmapSize; 648164c2d338781c3a3c4a443941070dca5d88f2a7Romain Guy 658164c2d338781c3a3c4a443941070dca5d88f2a7Romain Guy /** 668164c2d338781c3a3c4a443941070dca5d88f2a7Romain Guy * Last wrap modes set on this texture. Defaults to GL_CLAMP_TO_EDGE. 678164c2d338781c3a3c4a443941070dca5d88f2a7Romain Guy */ 688164c2d338781c3a3c4a443941070dca5d88f2a7Romain Guy GLenum wrapS; 698164c2d338781c3a3c4a443941070dca5d88f2a7Romain Guy GLenum wrapT; 70ce0537b80087a6225273040a987414b1dd081aa0Romain Guy}; // struct Texture 71ce0537b80087a6225273040a987414b1dd081aa0Romain Guy 7222158e139a3d6c6a9787ca0de224e9368f643284Romain Guyclass AutoTexture { 7322158e139a3d6c6a9787ca0de224e9368f643284Romain Guypublic: 7422158e139a3d6c6a9787ca0de224e9368f643284Romain Guy AutoTexture(const Texture* texture): mTexture(texture) { } 7522158e139a3d6c6a9787ca0de224e9368f643284Romain Guy ~AutoTexture() { 7622158e139a3d6c6a9787ca0de224e9368f643284Romain Guy if (mTexture && mTexture->cleanup) { 7722158e139a3d6c6a9787ca0de224e9368f643284Romain Guy glDeleteTextures(1, &mTexture->id); 7822158e139a3d6c6a9787ca0de224e9368f643284Romain Guy delete mTexture; 7922158e139a3d6c6a9787ca0de224e9368f643284Romain Guy } 8022158e139a3d6c6a9787ca0de224e9368f643284Romain Guy } 8122158e139a3d6c6a9787ca0de224e9368f643284Romain Guy 8222158e139a3d6c6a9787ca0de224e9368f643284Romain Guyprivate: 8322158e139a3d6c6a9787ca0de224e9368f643284Romain Guy const Texture* mTexture; 8422158e139a3d6c6a9787ca0de224e9368f643284Romain Guy}; // class AutoTexture 8522158e139a3d6c6a9787ca0de224e9368f643284Romain Guy 86ce0537b80087a6225273040a987414b1dd081aa0Romain Guy}; // namespace uirenderer 87ce0537b80087a6225273040a987414b1dd081aa0Romain Guy}; // namespace android 88ce0537b80087a6225273040a987414b1dd081aa0Romain Guy 89ce0537b80087a6225273040a987414b1dd081aa0Romain Guy#endif // ANDROID_UI_TEXTURE_H 90