Crystal Space: ivideo/texture.h Source File (Crystal Space Public API Reference)

| ## Public API Reference

- Main Page
- Modules
- Namespaces
- Classes
- Files
- Related Pages

- File List
- File Members

# ivideo/texture.h

Go to the documentation of this file.

    00001 /*
    00002     Copyright (C) 1998, 2000 by Jorrit Tyberghein
    00003                         2004 by Marten Svanfeldt
    00004
    00005     This library is free software; you can redistribute it and/or
    00006     modify it under the terms of the GNU Library General Public
    00007     License as published by the Free Software Foundation; either
    00008     version 2 of the License, or (at your option) any later version.
    00009
    00010     This library is distributed in the hope that it will be useful,
    00011     but WITHOUT ANY WARRANTY; without even the implied warranty of
    00012     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    00013     Library General Public License for more details.
    00014
    00015     You should have received a copy of the GNU Library General Public
    00016     License along with this library; if not, write to the Free
    00017     Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
    00018 */
    00019
    00020 #ifndef __CS_IVIDEO_TEXTURE_H__
    00021 #define __CS_IVIDEO_TEXTURE_H__
    00022
    00031 #include "csutil/scf_interface.h"
    00032 #include "cstypes.h"
    00033 #include "ivideo/graph3d.h"
    00034
    00035 struct iGraphics2D;
    00036 struct iGraphics3D;
    00037
    00038
    00051 struct iTextureHandle : public virtual iBase
    00052 {
    00053   SCF_INTERFACE(iTextureHandle, 3,0,0);
    00055   virtual int GetFlags () const = 0;
    00056
    00058   virtual void SetKeyColor (bool Enable) = 0;
    00059
    00061   virtual void SetKeyColor (uint8 red, uint8 green, uint8 blue) = 0;
    00062
    00064   virtual bool GetKeyColor () const = 0;
    00065
    00067   virtual void GetKeyColor (uint8 &red, uint8 &green, uint8 &blue) const = 0;
    00068
    00078   virtual bool GetRendererDimensions (int &mw, int &mh) = 0;
    00079
    00087   virtual void GetOriginalDimensions (int& mw, int& mh) = 0;
    00088
    00089   // CHANGED TO ADD SUPPORT FOR CUBEMAPS AND 3D TEXTURES
    00090   // done by Phil Aumayr (phil@rarebyte.com)
    00091   enum
    00092   {
    00093     CS_TEX_IMG_1D = 0,
    00094     CS_TEX_IMG_2D,
    00095     CS_TEX_IMG_3D,
    00096     CS_TEX_IMG_CUBEMAP,
    00097     CS_TEX_IMG_RECT
    00098   };
    00102   enum { CS_TEXTURE_CUBE_POS_X = 0, CS_TEXTURE_CUBE_NEG_X,
    00103          CS_TEXTURE_CUBE_POS_Y, CS_TEXTURE_CUBE_NEG_Y,
    00104          CS_TEXTURE_CUBE_POS_Z, CS_TEXTURE_CUBE_NEG_Z };
    00105
    00106
    00116   virtual bool GetRendererDimensions (int &mw, int &mh, int &md) = 0;
    00117
    00125   virtual void GetOriginalDimensions (int& mw, int& mh, int &md) = 0;
    00126
    00131   virtual int GetTextureTarget () const = 0;
    00132
    00134   enum TextureBlitDataFormat
    00135   {
    00137     RGBA8888 = 0,
    00139     BGRA8888
    00140   };
    00141
    00146   virtual void Blit (int x, int y, int width, int height,
    00147     unsigned char const* data, TextureBlitDataFormat format = RGBA8888) = 0;
    00148
    00152   virtual const char* GetImageName () const = 0;
    00153
    00158   virtual void *GetPrivateObject () = 0;
    00159
    00165   virtual bool GetAlphaMap () = 0;
    00166
    00168   virtual csAlphaMode::AlphaType GetAlphaType () const = 0;
    00169
    00174   virtual void Precache () = 0;
    00175
    00186   virtual void SetTextureClass (const char* className) = 0;
    00191   virtual const char* GetTextureClass () = 0;
    00192
    00199   virtual void SetAlphaType (csAlphaMode::AlphaType alphaType) = 0;
    00200 };
    00201
    00204 #endif // __CS_IVIDEO_TEXTURE_H__