fbtexture.h

Go to the documentation of this file.
00001 #ifndef __FBTEXTURE_H__
00002 #define __FBTEXTURE_H__
00003 /**************************************************************************
00004  Copyright (c) 1994 - 2009 Autodesk, Inc. and/or its licensors.
00005  All Rights Reserved.
00006  
00007  The coded instructions, statements, computer programs, and/or related 
00008  material (collectively the "Data") in these files contain unpublished 
00009  information proprietary to Autodesk, Inc. and/or its licensors, which is 
00010  protected by Canada and United States of America federal copyright law 
00011  and by international treaties.
00012  
00013  The Data may not be disclosed or distributed to third parties, in whole 
00014  or in part, without the prior written consent of Autodesk, Inc. 
00015  ("Autodesk").
00016  
00017  THE DATA IS PROVIDED "AS IS" AND WITHOUT WARRANTY.
00018  ALL WARRANTIES ARE EXPRESSLY EXCLUDED AND DISCLAIMED. AUTODESK MAKES NO 
00019  WARRANTY OF ANY KIND WITH RESPECT TO THE DATA, EXPRESS, IMPLIED OR 
00020  ARISING BY CUSTOM OR TRADE USAGE, AND DISCLAIMS ANY IMPLIED WARRANTIES 
00021  OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR 
00022  PURPOSE OR USE. WITHOUT LIMITING THE FOREGOING, AUTODESK DOES NOT 
00023  WARRANT THAT THE OPERATION OF THE DATA WILL BE UNINTERRUPTED OR ERROR 
00024  FREE.
00025  
00026  IN NO EVENT SHALL AUTODESK, ITS AFFILIATES, PARENT COMPANIES, LICENSORS 
00027  OR SUPPLIERS ("AUTODESK GROUP") BE LIABLE FOR ANY LOSSES, DAMAGES OR 
00028  EXPENSES OF ANY KIND (INCLUDING WITHOUT LIMITATION PUNITIVE OR MULTIPLE 
00029  DAMAGES OR OTHER SPECIAL, DIRECT, INDIRECT, EXEMPLARY, INCIDENTAL, LOSS 
00030  OF PROFITS, REVENUE OR DATA, COST OF COVER OR CONSEQUENTIAL LOSSES OR 
00031  DAMAGES OF ANY KIND), HOWEVER CAUSED, AND REGARDLESS OF THE THEORY OF 
00032  LIABILITY, WHETHER DERIVED FROM CONTRACT, TORT (INCLUDING, BUT NOT 
00033  LIMITED TO, NEGLIGENCE), OR OTHERWISE, ARISING OUT OF OR RELATING TO THE 
00034  DATA OR ITS USE OR ANY OTHER PERFORMANCE, WHETHER OR NOT AUTODESK HAS 
00035  BEEN ADVISED OF THE POSSIBILITY OF SUCH LOSS OR DAMAGE.
00036  
00037 **************************************************************************/
00038 
00043 #include <kaydaradef.h>
00044 #ifndef FBSDK_DLL 
00045 
00048     #define FBSDK_DLL K_DLLIMPORT
00049 #endif
00050 
00051 #include <fbsdk/fbcomponent.h>
00052 #include <fbsdk/fbcore.h>
00053 #include <fbsdk/fbproperties.h>
00054 #include <fbsdk/fbvideo.h>
00055 
00056 #ifdef FBSDKUseNamespace
00057 namespace FBSDKNamespace {
00058 #endif
00059 
00060 
00062 // FBTexture
00064 __FB_FORWARD( FBTexture );
00065 
00070 enum FBTextureUseType    {
00071     kFBTextureUseAll,                   
00072     kFBTextureUseColor,                 
00073     kFBTextureUseShadowMap,             
00074     kFBTextureUseLightMap,              
00075     kFBTextureUseSphericalReflexionMap, 
00076     kFBTextureUseSphereReflexionMap,    
00077     kFBTextureUseBumpNormalMap          
00078 };
00079 
00083 enum FBTextureMapping    {
00084     kFBTextureNoMapping,            
00085     kFBTextureMappingUV,            
00086     kFBTextureMappingXY,            
00087     kFBTextureMappingYZ,            
00088     kFBTextureMappingXZ,            
00089     kFBTextureMappingSpherical,     
00090     kFBTextureMappingCylindrical,   
00091     kFBTextureMappingEnvironment,   
00092     kFBTextureMappingProjection     
00093 };
00094 
00098 enum FBTextureBlendMode    { 
00099     kFBTextureBlendTranslucent,     
00100     kFBTextureBlendAdditive,        
00101     kFBTextureBlendModulate,        
00102     kFBTextureBlendModulate2,       
00103 };
00104 
00105 FB_DEFINE_ENUM( FBSDK_DLL, TextureUseType    );
00106 FB_DEFINE_ENUM( FBSDK_DLL, TextureMapping    );
00107 FB_DEFINE_ENUM( FBSDK_DLL, TextureBlendMode    );
00108 
00110 // This class is used to encapsulate an underlying media that is used to texture a model.
00111 //
00112 FB_FORWARD(FBRenderOptions);
00113 
00114 class FBSDK_DLL FBTexture : public FBBox {
00115     __FBClassDeclare( FBTexture,FBBox );
00116 public:
00121     FBTexture(const char* pName, HIObject pObject=NULL);
00122     virtual void FBDelete();
00123 
00128     FBTexture* Clone();
00129 
00130     FBPropertyString            Filename;        
00131     FBPropertyInt               Width;           
00132     FBPropertyInt               Height;          
00133     FBPropertyTextureUseType    UseType;         
00134     FBPropertyTextureMapping    Mapping;         
00135     FBPropertyTextureBlendMode  BlendMode;       
00136     FBPropertyAnimatableVector3d    Translation; 
00137     FBPropertyAnimatableVector3d    Rotation;    
00138     FBPropertyAnimatableVector3d    Scaling;     
00139     FBPropertyAnimatableDouble      Alpha;       
00140     FBPropertyBool              SwapUV;          
00141     FBPropertyInt               CroppingX[2];    
00142     FBPropertyInt               CroppingY[2];    
00143     FBPropertyVideo             Video;           
00144     FBPropertyBool              TakeBased;       
00145 
00146     void    OGLInit(FBRenderOptions* pRenderOptions = NULL);
00147     unsigned int GetTextureObject();
00148     double* GetMatrix();
00149 };
00150 
00152 // FBPropertyListTexture
00155 
00156 class FBSDK_DLL FBPropertyListTexture : public FBPropertyListComponent
00157 {
00158 public:
00159     FBPropertyListTexture();
00166     virtual int Add( FBTexture* pItem );
00171     FBTexture* operator[](int pIndex);
00172 
00173 private:
00174     inline virtual int Add    ( FBComponent* pItem ) { return Add((FBTexture*)pItem); }
00175 };
00176 
00178 // FBLayeredTexture
00180 __FB_FORWARD( FBLayeredTexture );
00181 
00183 // This class is used to encapsulate list of textures.
00184 //
00185 class FBSDK_DLL FBLayeredTexture : public FBTexture {
00186     __FBClassDeclare( FBLayeredTexture,FBTexture );
00187 public:
00192     FBLayeredTexture(const char* pName, HIObject pObject=NULL);
00193     virtual void FBDelete();
00194 
00199     FBLayeredTexture* Clone();
00200 
00201     FBPropertyListTexture    Layers;        
00202 };
00203 
00204 #ifdef FBSDKUseNamespace
00205 }
00206 #endif
00207 
00208 #endif /* this must be the last line of this file */