00001
00004 #ifndef _FBXSDK_IMAGE_CONVERTER_H_
00005 #define _FBXSDK_IMAGE_CONVERTER_H_
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042 #include <kaydaradef.h>
00043 #ifndef KFBX_DLL
00044 #define KFBX_DLL K_DLLIMPORT
00045 #endif
00046
00047 #include <kaydara.h>
00048
00049 #include <klib/kstring.h>
00050
00051 #ifndef MB_FBXSDK
00052 #include <kbaselib_nsuse.h>
00053 #endif
00054 #include <kbaselib_forward.h>
00055 #include <kfbxplugins/kfbxobject.h>
00056
00057 #include <fbxfilesdk_nsbegin.h>
00058
00059 class KFbxSdkManager;
00060
00061 const int ColorSpaceRGB = 0;
00062 const int ColorSpaceYUV = 1;
00063 const int FileToBuffer = 0;
00064 const int BufferToFile = 1;
00065
00069 class KFBX_DLL ImageConverterBuffer
00070 {
00071 private:
00072 int mWidth;
00073 int mHeight;
00074 int mColorSpace;
00075 int mPixelSize;
00076 kByte *mData;
00077
00078 bool mOriginalFormat;
00079 KString mOriginalFileName;
00080
00081 bool mValid;
00082 bool mUseDataBuffer;
00083
00084
00085 public:
00090
00092 ImageConverterBuffer();
00094 ~ImageConverterBuffer();
00096
00100 bool IsValid() { return mValid; }
00101
00105 bool UseDataBuffer() { return mUseDataBuffer; }
00106
00110 int GetWidth() { return mWidth; }
00111
00115 int GetHeight() { return mHeight; }
00116
00120 int GetColorSpace() { return mColorSpace; }
00121
00125 char GetPixelSize() { return (char) mPixelSize; }
00126
00130 kByte* GetData() { return mData; }
00131
00135 bool GetOriginalFormat() { return mOriginalFormat; }
00136
00143 KString GetOriginalFileName() { return mOriginalFileName; }
00144
00154 void Init(int pWidth, int pHeight, bool pUseDataBuffer, int pColorSpace = ColorSpaceRGB, char pPixelSize = 4);
00155
00159 void SetOriginalFormat(bool pState);
00160
00164 void SetOriginalFileName(KString pFilename);
00165 };
00166
00167
00168
00169 typedef int (*ImageConverterFunction)(int pDirection, KString& pFileName, ImageConverterBuffer& pBuffer);
00170
00171
00173 class KFBX_DLL KFbxImageConverter : public KFbxObject
00174 {
00175 KFBXOBJECT_DECLARE(KFbxImageConverter,KFbxObject);
00176
00177 public:
00178
00186 void RegisterConverterFunction(KString pFileExt, ImageConverterFunction pFct);
00187
00191 void UnregisterConverterFunction(ImageConverterFunction pFct);
00192
00199 bool Convert(int pDirection, KString& pFileName, ImageConverterBuffer& pBuffer);
00200
00202
00203
00204
00205
00206
00207
00209 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00210
00211 protected:
00212
00213 virtual KFbxObject* Clone( KFbxObject* pContainer, KFbxObject::ECloneType pCloneType ) const;
00214 KFbxImageConverter(KFbxSdkManager& pManager,char const *pName);
00215 ~KFbxImageConverter();
00216
00217 KFbxImageConverter& operator=( const KFbxImageConverter& pOther );
00218
00219 KCharPtrSet* mConverterFunctions;
00220 KFbxSdkManager* mManager;
00221
00222 #endif // #ifndef DOXYGEN_SHOULD_SKIP_THIS
00223
00224 };
00225
00226
00227 KFBX_DLL bool IsCompressedTif(KString pFile);
00228 KFBX_DLL bool ReadFromTif(KString pFile, ImageConverterBuffer& pBuffer, bool deleteFile);
00229 KFBX_DLL bool WriteToTif(KString pFile, bool pCompressed, ImageConverterBuffer& pBuffer);
00230
00231 #include <fbxfilesdk_nsend.h>
00232
00233 #endif // #ifndef _FBXSDK_IMAGE_CONVERTER_H_
00234
00235