topical media & game development

talk show tell print

lib-of-vs-libs-openFrameworks-graphics-ofTexture.h / h



  ifndef _IMAGE_TEXTURE_H_
  define _IMAGE_TEXTURE_H_
  
  include <ofConstants.h>
  include <ofGraphics.h>
  
  typedef struct{
  
          bool bAllocated;
          int glType;
          int glTypeInternal;
          int textureTarget;
          float tex_t;
          float tex_u;
          float tex_w;
          float tex_h;
          float width;
          float height;
          bool bFlipTexture;
  
          //we do this because openGL expects an array
          //but we don't want people to work with textureName[1]
          //so we make textureID point to the same location
          union{
                  struct{
                          unsigned int textureID;        //use me
                  };                
                  unsigned int textureName[1];  //don't use me
          };
                  
  }ofTextureData;
  
  //enable / disable the slight offset we add to ofTexture's texture coords to compensate for bad edge artifiacts
  //enabled by default
  void ofEnableTextureEdgeHack();
  void ofDisableTectureEdgeHack();
  
  class ofTexture : public ofBaseDraws{
  
          public :
  
          ofTexture();
          virtual ~ofTexture();
  
          // -----------------------------------------------------------------------
          // we allow pass by copy and assignment operator
          // it does a straight copy but you are getting the textureID of mom's texture
          // so this means that your texture and mom's texture are the same thing
          // so in other words be careful! calling clear on your texture will trash mom's
          // texture and vice versa.
          ofTexture(const ofTexture& mom);
          ofTexture& operator=(const ofTexture& mom);
          // -----------------------------------------------------------------------
  
          void allocate(int w, int h, int internalGlDataType); //uses the currently set OF texture type - default ARB texture
          void allocate(int w, int h, int internalGlDataType, bool bUseARBExtention); //lets you overide the default OF texture type
          void clear();
          void loadData(unsigned char * data, int w, int h, int glDataType);
          void loadScreenData(int x, int y, int w, int h);
  
          //the anchor is the point the image is drawn around.
          //this can be useful if you want to rotate an image around a particular point.
          void setAnchorPercent(float xPct, float yPct); //set the anchor as a percentage of the image width/height ( 0.0-1.0 range )
          void setAnchorPoint(int x, int y); //set the anchor point in pixels
          void resetAnchor(); //resets the anchor to (0, 0)
  
          void draw(float x, float y, float w, float h);
          void draw(float x, float y);
  
          //for the advanced user who wants to draw textures in their own way
          void bind();
          void unbind();
  
          bool bAllocated();
  
          ofTextureData getTextureData();
  
          float getHeight();
          float getWidth();
  
          ofTextureData texData;
  protected:
          ofPoint anchor;
          bool bAnchorIsPct;
  
  };
  
  endif
  


(C) Æliens 04/09/2009

You may not copy or print any of this material without explicit permission of the author or the publisher. In case of other copyright issues, contact the author.