00001 #ifndef __OP_Context__ 00002 #define __OP_Context__ 00003 00004 #include "OP_API.h" 00005 #include <SYS/SYS_Types.h> 00006 #include "OP_DataTypes.h" // For OP_DATA_TYPE 00007 #include "OP_Version.h" // For OP_VERSION 00008 00009 #include <stdio.h> 00010 00011 #define OP_TIME_TOL (0.00001) 00012 00013 class OP_CookTask; 00014 00015 class OP_API OP_ContextData 00016 { 00017 public: 00018 OP_ContextData() {} 00019 virtual ~OP_ContextData() {} 00020 }; 00021 00022 class OP_API OP_Context 00023 { 00024 public: 00025 OP_Context(); 00026 explicit OP_Context(double t); 00027 OP_Context(double t, int thread); 00028 OP_Context(const OP_Context &from); 00029 00030 double getTime() const { return myTime; } 00031 void setTime(double t) { myTime = t; } 00032 00033 int xres() const { return myXres; } 00034 int yres() const { return myYres; } 00035 void setXres(int xres) { myXres = xres; } 00036 void setYres(int yres) { myYres = yres; } 00037 void setRes(int x, int y) { myXres = x; myYres = y; } 00038 00039 long getFrame() const; 00040 double getFloatFrame() const; 00041 void setFrame(long frame); 00042 void setFrame(double frame); 00043 00044 // The "thread" member is the sequential thread returned by UTgetSTID() 00045 // (UT_Thread.h) for the current thread. 00046 void setThread(int thr) { myThread = thr; } 00047 int getThread() const { return myThread; } 00048 00049 // A cook task will be available when the node is asked to be cooked in 00050 // parallel. 00051 void setCookTask(OP_CookTask *cook_task) 00052 { myCookTask = cook_task; } 00053 OP_CookTask *cookTask() 00054 { return myCookTask; } 00055 const OP_CookTask *cookTask() const 00056 { return myCookTask; } 00057 00058 OP_ContextData *getData() const { return myData; } 00059 void setData(OP_ContextData *data) { myData = data; } 00060 00061 OP_VERSION getVersion() const { return myVersion; } 00062 void setVersion(OP_VERSION version) { myVersion = version; } 00063 00064 bool isCookOverride() const 00065 { return myFlags.myCookOverride; } 00066 void setCookOverride(bool override) 00067 { myFlags.myCookOverride = override; } 00068 bool isTimeDep() const 00069 { return myFlags.myTimeDep; } 00070 void setTimeDep(bool timedep) 00071 { myFlags.myTimeDep = timedep; } 00072 00073 void copyPointer(const OP_Context &from); 00074 00075 int operator==( const OP_Context &to ) const; 00076 OP_Context &operator= ( const OP_Context &to ); 00077 00078 void print(FILE *); 00079 00080 00081 // Match criteria. 00082 // These fields define the parameters 00083 // for getCookedData(), or 00084 // needToCook() or cook(). 00085 double myTime; // 0 based time 00086 int myXres; // Pixel resolution 00087 int myYres; // Pixel resolution 00088 00089 00090 private: 00091 00092 void initDefaults(double t, int thread); 00093 00094 // These fields are used to define the 00095 // kind of COOK or GET that is to take 00096 // place 00097 OP_VERSION myVersion; // When fetching data, this is the 00098 // version number of the fetched data. 00099 OP_ContextData *myData; // User-specific cook data 00100 00101 int myThread; // UTgetSTID() when this context was 00102 // created. 00103 00104 OP_CookTask *myCookTask; // Current cook task 00105 00106 // Flags (default value is in square brackets) 00107 struct Flags 00108 { 00109 uint64 myCookOverride:1, // [false] Cook only if it is quick 00110 myTimeDep:1; // [true] Am I time dependent? 00111 } myFlags; 00112 }; 00113 00114 #endif
1.5.9