Go to the
documentation of this file.
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00013 #ifndef _FBXSDK_FILEIO_PROGRESS_H_
00014 #define _FBXSDK_FILEIO_PROGRESS_H_
00015
00016 #include <fbxsdk/fbxsdk_def.h>
00017
00018 #include <fbxsdk/core/base/fbxstring.h>
00019
00020 #include <fbxsdk/fbxsdk_nsbegin.h>
00021
00022 #define FBXSDK_PROGRESS_UPDATE_THRESHOLD 0.5f
00023
00024 typedef bool (*FbxProgressCallback)(float pPercentage, FbxString pStatus);
00025
00026 class FbxSpinLock;
00027
00031 class FBXSDK_DLL FbxProgress
00032 {
00033 public:
00034 FbxProgress();
00035 ~FbxProgress();
00036
00040 void SetTotal(float pTotal);
00041
00046 void Add(float pDetaWorkload, const FbxString & pStatus);
00047
00049 void Reset();
00050
00054 void Complete(const FbxString & pStatus);
00055
00060 float GetProgress(FbxString & pStatus) const;
00061
00065 void SetProgressCallback(FbxProgressCallback pCallback);
00066
00070 void Cancel(bool pIsCanceled)
00071 {
00072 mCanceled = pIsCanceled;
00073 }
00074
00076 bool IsCanceled() const
00077 {
00078 return mCanceled;
00079 }
00080
00081 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00082
00083 private:
00084 float GetPercentage() const;
00085 FbxSpinLock *mLock;
00086 float mTotal;
00087 float mCurrent;
00088 FbxString mStatus;
00089 float mUpdateThreshold;
00090 float mLastCallbackProgress;
00091 FbxProgressCallback mCallback;
00092 bool mCanceled;
00093
00094 #endif // #ifndef DOXYGEN_SHOULD_SKIP_THIS
00095
00096 };
00097
00098 #include <fbxsdk/fbxsdk_nsend.h>
00099
00100 #endif