ML Reference
mlGetTileJob.h
Go to the documentation of this file.
1 /*************************************************************************************
2 **
3 ** Copyright 2009, MeVis Medical Solutions AG
4 **
5 ** The user may use this file in accordance with the license agreement provided with
6 ** the Software or, alternatively, in accordance with the terms contained in a
7 ** written agreement between the user and MeVis Medical Solutions AG.
8 **
9 ** For further information use the contact form at https://www.mevislab.de/contact
10 **
11 **************************************************************************************/
12 
13 #ifndef ML_GET_TILE_JOB_H
14 #define ML_GET_TILE_JOB_H
15 
17 
18 // ML-includes
19 #include "mlInitSystemML.h"
20 
21 #include "mlPagedImage.h"
22 #include "mlTileRequest.h"
23 #include "mlPageRequestCursor.h"
24 
25 ML_START_NAMESPACE
26 
27 class PageRequest;
28 class PageRequestProcessor;
29 
32 {
33 public:
35 
36  virtual ~GetTileJobBase();
37 
39  virtual MLErrorCode init(PageRequestProcessor& processor) = 0;
40 
42  double getProgress() const;
43 
46  bool hasFinished() { return _request->hasFinished(); }
47 
49  bool hasError() const { return _request->hasError(); }
50 
52  MLErrorCode getError() const { return _request->getError(); }
53 
55  void setTileRequestFinishedCB(TileRequestFinishedCB* cb, void* data) { _request->setTileRequestFinishedCB(cb, data); }
56 
58  void cancel();
59 
63 
65  virtual void delegateProgressUpdate(double /*progress*/) {};
66 
68  void setProgressCB(MLRequestProgressCB* progressCallback, void* progressCallbackUserData);
69 
70 protected:
75  double _lastProgress;
76 };
77 
78 //-------------------------------------------------------------------------------------------
80 //-------------------------------------------------------------------------------------------
82 {
83 public:
87  GetTileJob(PagedImage& image, const SubImageBox& box, MLDataType datatype,
88  const ScaleShiftData& scaleShiftData = ScaleShiftData());
89 
91  ~GetTileJob() override;
92 
97  MLErrorCode init(PageRequestProcessor& processor) override;
98 
102  void setAllocationPolicy(TileRequest::AllocationPolicy policy) { _request->setAllocationPolicy(policy); }
103 
109  void setRequestAsReadOnlyPage() { _request->setUseTileReadOnly(true); setAllocationPolicy(TileRequest::NoAllocation); }
110 
113  void setExternalDataBuffer(void* data) {
114  _request->setAllocationPolicy(TileRequest::ExternalBuffer);
115  _request->setExternalDataBuffer(data);
116  }
117 
120  return _request->getSubImage();
121  }
122 
123 };
124 
125 ML_END_NAMESPACE
126 
127 #endif //of __mlGetTileJob_H
128 
Base class for TileRequest based jobs.
Definition: mlGetTileJob.h:32
void updateProgress()
Called by host to allow custom progress updates.
TileRequest * _request
The root TileRequest that is used internally.
Definition: mlGetTileJob.h:72
bool hasFinished()
Returns whether the request has finished.
Definition: mlGetTileJob.h:46
void setTileRequestFinishedCB(TileRequestFinishedCB *cb, void *data)
Sets the tile request finished callback that is called when the tile is ready.
Definition: mlGetTileJob.h:55
void * _progressCBUserData
Definition: mlGetTileJob.h:74
MLRequestProgressCB * _progressCB
Definition: mlGetTileJob.h:73
virtual MLErrorCode init(PageRequestProcessor &processor)=0
Initializes the tile request and adds it to the processor if no error occurs.
virtual void delegateProgressUpdate(double)
Emits the progress when it changes, to be reimplemented in derived classes.
Definition: mlGetTileJob.h:65
bool hasError() const
Returns whether the request has an error and the data is thus unusable/invalid.
Definition: mlGetTileJob.h:49
virtual ~GetTileJobBase()
MLErrorCode getError() const
Returns the error that happened. It returns ML_RESULT_OK if everything is ok.
Definition: mlGetTileJob.h:52
void setProgressCB(MLRequestProgressCB *progressCallback, void *progressCallbackUserData)
Sets the progress callback. It will be called when updateProgress() is called.
double getProgress() const
Returns the current progress of the tile request ([0..1] range).
void cancel()
Cancels the GetTileJob. This only sets the flag, the real cancellation needs to be done on the PageRe...
Public interface for requesting a tile from a an ML PagedImage using the PageRequestProcessor.
Definition: mlGetTileJob.h:82
MLErrorCode init(PageRequestProcessor &processor) override
Initializes the tile request and adds it to the processor if no error occurs.
const SubImage & getSubImage()
Returns access to the stored subimage including the data, which is allocated using the AllocationPoli...
Definition: mlGetTileJob.h:119
GetTileJob(PagedImage &image, const SubImageBox &box, MLDataType datatype, const ScaleShiftData &scaleShiftData=ScaleShiftData())
Creates a GetTileJob for the given PagedImage image with the requested box, datatype,...
void setAllocationPolicy(TileRequest::AllocationPolicy policy)
Sets which allocation policy should be used.
Definition: mlGetTileJob.h:102
void setRequestAsReadOnlyPage()
Sets that the tile is used read-only so that an ML page can be passed directly as tile data.
Definition: mlGetTileJob.h:109
void setExternalDataBuffer(void *data)
This allows to set the data buffer from an external buffer.
Definition: mlGetTileJob.h:113
~GetTileJob() override
Destructor.
Abstract base class for page request processors.
The class PagedImage, representing a fragmented image that manages properties and data of an image lo...
Definition: mlPagedImage.h:66
This class manages/represents a rectangular 6D image region that is organized linearly in memory.
Definition: mlSubImage.h:75
A TileRequest either represents the input subimage that is needed by a PageRequest or if it is a root...
Definition: mlTileRequest.h:50
AllocationPolicy
Defines how the TileRequest will allocate its memory.
Definition: mlTileRequest.h:86
MLint32 MLDataType
MLDataType.
Definition: mlTypeDefs.h:596
MLint32 MLErrorCode
Type of an ML Error code.
Definition: mlTypeDefs.h:716
#define MLEXPORT
To export symbols from a DLL/shared object, we need to mark them with the MLEXPORT symbol.
void MLRequestProgressCB(void *usrData, double progress)
Definition: mlTypeDefs.h:1202
void TileRequestFinishedCB(void *data, TileRequest *request)
Callback for a finished TileRequest.
Definition: mlTileRequest.h:34
TScaleShiftData< MLdouble > ScaleShiftData
Double version of TScaleShiftData for maximum reasonable precision.