MeVisLabToolboxReference
|
00001 // **InsertLicense** code 00002 //---------------------------------------------------------------------------------- 00009 //---------------------------------------------------------------------------------- 00010 00011 00012 #ifndef __mlBackgroundTaskMessages_H 00013 #define __mlBackgroundTaskMessages_H 00014 00015 00016 // Local includes 00017 #include "MLBackgroundTasksSystem.h" 00018 #include "mlBackgroundTaskMessage.h" 00019 #include "mlImagingBackgroundTask.h" 00020 #include "mlBackgroundTaskMethodCallMessage.h" 00021 00022 ML_START_NAMESPACE 00023 00024 class GetTileJobBase; 00025 class ProcessAllPagesHandler; 00026 00027 class MLBACKGROUNDTASKS_EXPORT BackgroundTaskFinishedMessage : public BackgroundTaskMessage { 00028 public: 00029 BackgroundTaskFinishedMessage(BackgroundTask* task):BackgroundTaskMessage() { setSender(task); } 00030 00031 virtual void execute(); 00032 00033 }; 00034 00035 //-------------------------------------------------------------------------------------- 00036 class MLBACKGROUNDTASKS_EXPORT BackgroundTaskMLGetTileBaseMessage : public BackgroundTaskMessage { 00037 public: 00038 BackgroundTaskMLGetTileBaseMessage(BackgroundRequestId tileId, Module* module) 00039 : BackgroundTaskMessage(), _request(NULL), _module(module), _tileId(tileId), _resultWasSent(false) { 00040 } 00041 00042 ~BackgroundTaskMLGetTileBaseMessage(); 00043 00044 virtual void executeSynchronous(); 00045 00046 virtual bool finishedProcessing(); 00047 00048 virtual void taskWillBeDestroyed(); 00049 00050 static void tileRequestFinishedCB(void* data, TileRequest* request); 00051 00052 virtual void sendFinishedRequest() = 0; 00053 00054 virtual void sendFailedRequest() = 0; 00055 00056 virtual void sendProgress() = 0; 00057 00058 protected: 00059 GetTileJobBase* _request; 00060 Module* _module; 00061 BackgroundRequestId _tileId; 00062 bool _resultWasSent; 00063 }; 00064 00065 //-------------------------------------------------------------------------------------- 00066 00067 class MLBACKGROUNDTASKS_EXPORT BackgroundTaskMLGetTileMessage : public BackgroundTaskMLGetTileBaseMessage { 00068 public: 00069 BackgroundTaskMLGetTileMessage(BackgroundRequestId tileId, Module* module, 00070 int inputImageIndex, MLDataType type, const SubImageBox& box, const ScaleShiftData& shift = ScaleShiftData(), 00071 int getTileFlags = 0, ManagedSubImage* externalBuffer = NULL); 00072 00073 ~BackgroundTaskMLGetTileMessage(); 00074 00075 virtual void execute(); 00076 00077 virtual void sendFinishedRequest(); 00078 00079 virtual void sendFailedRequest(); 00080 00081 virtual void sendProgress(); 00082 00083 private: 00084 ManagedSubImage* _externalBuffer; 00085 int _inputImageIndex; 00086 MLDataType _type; 00087 SubImageBox _box; 00088 ScaleShiftData _shift; 00089 int _getTileFlags; 00090 }; 00091 00092 //-------------------------------------------------------------------------------------- 00093 00094 class MLBACKGROUNDTASKS_EXPORT BackgroundTaskMLProcessAllPagesMessage : public BackgroundTaskMLGetTileBaseMessage { 00095 public: 00096 BackgroundTaskMLProcessAllPagesMessage(BackgroundRequestId tileId, Module* module, ProcessAllPagesHandler* handler, const SubImageBox& box); 00097 00098 ~BackgroundTaskMLProcessAllPagesMessage(); 00099 00100 virtual void execute(); 00101 00102 virtual void sendFinishedRequest(); 00103 00104 virtual void sendFailedRequest(); 00105 00106 virtual void sendProgress(); 00107 00108 private: 00109 ProcessAllPagesHandler* _handler; 00110 SubImageBox _box; 00111 bool _ownsHandler; 00112 }; 00113 00114 //-------------------------------------------------------------------------------------- 00115 00116 class MLBACKGROUNDTASKS_EXPORT BackgroundTaskMLGetTileResultMessage : public BackgroundTaskMessage { 00117 public: 00118 BackgroundTaskMLGetTileResultMessage(ImagingBackgroundTask* task, BackgroundRequestId tileId, ManagedSubImage* img):BackgroundTaskMessage() { 00119 _task = task; 00120 _image = img; 00121 _tileId = tileId; 00122 } 00123 ~BackgroundTaskMLGetTileResultMessage(); 00124 00125 virtual void execute(); 00126 00127 private: 00128 BackgroundRequestId _tileId; 00129 ManagedSubImage* _image; 00130 ImagingBackgroundTask* _task; 00131 }; 00132 00133 00134 //-------------------------------------------------------------------------------------- 00135 00136 class MLBACKGROUNDTASKS_EXPORT BackgroundTaskMLProcessAllPagesResultMessage : public BackgroundTaskMessage { 00137 public: 00138 BackgroundTaskMLProcessAllPagesResultMessage(ImagingBackgroundTask* task, BackgroundRequestId requestId, ProcessAllPagesHandler* handler):BackgroundTaskMessage() { 00139 _task = task; 00140 _handler = handler; 00141 _requestId = requestId; 00142 } 00143 ~BackgroundTaskMLProcessAllPagesResultMessage(); 00144 00145 virtual void execute(); 00146 00147 private: 00148 BackgroundRequestId _requestId; 00149 ProcessAllPagesHandler* _handler; 00150 ImagingBackgroundTask* _task; 00151 }; 00152 00153 ML_END_NAMESPACE 00154 00155 #endif 00156 00157