ML Reference
MeVis/Foundation/Sources/ML/include/host/mlGetTileJob.h
Go to the documentation of this file.
00001 // **InsertLicense** code
00002 //-------------------------------------------------------------------------
00009 //-------------------------------------------------------------------------
00010 #ifndef __mlGetTileJob_H
00011 #define __mlGetTileJob_H
00012 
00013 // ML-includes
00014 #ifndef __mlInitSystemML_H
00015 #include "mlInitSystemML.h"
00016 #endif
00017 
00018 #include "mlPagedImage.h"
00019 #include "mlTileRequest.h"
00020 #include "mlPageRequestCursor.h"
00021 
00022 ML_START_NAMESPACE
00023 
00024 class PageRequest;
00025 class PageRequestProcessor;
00026 
00028 class MLEXPORT GetTileJobBase
00029 {
00030 public:
00031   GetTileJobBase() { _request = NULL; }
00032 
00033   virtual ~GetTileJobBase();
00034 
00036   virtual MLErrorCode init(PageRequestProcessor& processor) = 0;
00037 
00039   double getProgress() const;
00040 
00042   bool hasFinished() { return _request->hasFinished(); }
00043 
00045   bool hasError() const { return _request->hasError(); }
00046 
00048   MLErrorCode getError() const { return _request->getError(); }
00049 
00051   void setTileRequestFinishedCB(TileRequestFinishedCB* cb, void* data) { _request->setTileRequestFinishedCB(cb, data); }
00052 
00054   void cancel();
00055 
00056 protected:
00058   TileRequest*         _request;
00059 };
00060 
00061 //-------------------------------------------------------------------------------------------
00063 //-------------------------------------------------------------------------------------------
00064 class MLEXPORT GetTileJob : public GetTileJobBase
00065 {
00066 public:
00070   GetTileJob(PagedImage& image, const SubImageBox& box, MLDataType datatype,
00071     const ScaleShiftData& scaleShiftData = ScaleShiftData());
00072 
00074   ~GetTileJob();
00075 
00080   virtual MLErrorCode init(PageRequestProcessor& processor);
00081 
00085   void setAllocationPolicy(TileRequest::AllocationPolicy policy) { _request->setAllocationPolicy(policy); }
00086 
00092   void setRequestAsReadOnlyPage() { _request->setUseTileReadOnly(true); setAllocationPolicy(TileRequest::NoAllocation); }
00093 
00096   void setExternalDataBuffer(void* data) {
00097     _request->setAllocationPolicy(TileRequest::ExternalBuffer);
00098     _request->setExternalDataBuffer(data);
00099   }
00100 
00102   const SubImage& getSubImage() {
00103     return _request->getSubImage();
00104   }
00105 
00106 };
00107 
00108 ML_END_NAMESPACE
00109 
00110 #endif //of __mlGetTileJob_H
00111