Open Inventor Release 2024.1.1
 
Loading...
Searching...
No Matches
SoLDMDataAccess.h
1/*=======================================================================
2 *** THE CONTENT OF THIS WORK IS PROPRIETARY TO FEI S.A.S, (FEI S.A.S.), ***
3 *** AND IS DISTRIBUTED UNDER A LICENSE AGREEMENT. ***
4 *** ***
5 *** REPRODUCTION, DISCLOSURE, OR USE, IN WHOLE OR IN PART, OTHER THAN AS ***
6 *** SPECIFIED IN THE LICENSE ARE NOT TO BE UNDERTAKEN EXCEPT WITH PRIOR ***
7 *** WRITTEN AUTHORIZATION OF FEI S.A.S. ***
8 *** ***
9 *** RESTRICTED RIGHTS LEGEND ***
10 *** USE, DUPLICATION, OR DISCLOSURE BY THE GOVERNMENT OF THE CONTENT OF THIS ***
11 *** WORK OR RELATED DOCUMENTATION IS SUBJECT TO RESTRICTIONS AS SET FORTH IN ***
12 *** SUBPARAGRAPH (C)(1) OF THE COMMERCIAL COMPUTER SOFTWARE RESTRICTED RIGHT ***
13 *** CLAUSE AT FAR 52.227-19 OR SUBPARAGRAPH (C)(1)(II) OF THE RIGHTS IN ***
14 *** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 52.227-7013. ***
15 *** ***
16 *** COPYRIGHT (C) 1996-2024 BY FEI S.A.S, ***
17 *** BORDEAUX, FRANCE ***
18 *** ALL RIGHTS RESERVED ***
19**=======================================================================*/
20/*=======================================================================
21** Author : VSG (MMM YYYY)
22**=======================================================================*/
23#ifndef LDM_DATA_ACCESS_H
24#define LDM_DATA_ACCESS_H
25
26#include <Inventor/SbLinear.h>
27#include <Inventor/SbBox.h>
28#include <LDM/SoLDMTileID.h>
29
30#include <Inventor/STL/vector>
31#include <Inventor/STL/map>
32
33#include <Inventor/devices/SoBufferObject.h>
34#include <Inventor/devices/SoCpuBufferObject.h>
35
36#include <LDM/nodes/SoLDMResourceParameters.h>
37
38#ifdef _MSC_VER
39#pragma warning( push )
40#pragma warning(disable:4251)
41#endif
42
43class SoDataSet;
44class SoLDMMediator;
45class SoPerfCounter;
48class SbThread;
49class SbThreadBarrier;
50class SoLDMAlgorithms;
51
52
248
249public:
250
257
262
267
271 inline SoDataSet* getDataSet();
272
305
322
345
367
378 {
384 int64_t bufferSize;
389 };
401 {
402 public:
403
405 DataInfoPolyLine(int numPoint);
407
411
416
418 int64_t bufferSize;
419
422
426
430
437
438 private:
439 private:
440
442 void free();
443 void commonConstructor();
444 void allocate(int numPoint);
445 };
446
484
512
525 DataInfoBox getData(int resolution, const SbBox3i32& subVolume0, SoBufferObject* bufferObj = NULL);
526
539 DataInfoPlane getData(int resolution, const SbBox3i32& subVolume0, const SbPlane& plane,
540 SoBufferObject* bufferObj = NULL);
541
554 DataInfoLine getData(int resolution, const SbBox3i32& subVolume0, const SbLine& line , SoBufferObject* bufferObj = NULL) ;
555
570 DataInfoTrace getData( int resolution, const SbBox3i32& subVolume, const SbVec2i32 coord,
571 SoBufferObject* bufferObj = NULL);
572
585 void getData(DataInfoPolyLine& infoPolyline, int resolution, const SbBox3i32& subVolume, int numPoints,
586 const SbVec3i32* polyline, SoBufferObject* bufferObj = NULL);
587
642 DataInfo getData(int resolution, const SbVec3i32& dataPosition);
643
650
659 SbBool isTileUniform(int resolution, const SbVec3i32& dataPosition, double& uniformValue);
660
662 // asynchronous data access
664
686 int requestData(int resolution, const SbBox3i32& box, SoBufferObject* bufferObj);
687
691 void getRequestedData(int requestId, DataInfoBox& infoBox);
692
712 int requestData(int resolution, const SbBox3i32& subVolume, const SbPlane& plane, SoBufferObject* bufferObj);
713
717 void getRequestedData(int requestId, DataInfoPlane& infoPlane);
718
738 int requestData(int resolution, const SbBox3i32& subVolume0, const SbLine& line , SoBufferObject* bufferObj);
739
743 void getRequestedData(int requestId, DataInfoLine& infoLine);
744
765 int requestData(int resolution, const SbBox3i32& subVolume, int numPoints, const SbVec3i32* polyline, SoBufferObject* bufferObj);
766
770 void getRequestedData(int requestId, DataInfoPolyLine& infoPolyline);
771
794 int requestData(int resolution, const SbBox3i32& subVolume0, const SbVec2i32& coord, SoBufferObject* bufferObj);
795
799 void getRequestedData(int requestId, DataInfoTrace& infoTrace);
800
807 virtual void endRequest(int requestId);
808
822 SbVec3f voxelToXYZ(const SbVec3i32 &dataPosition);
823
839 SbBox3f voxelToXYZ( const SbBox3i32& boxIJK );
840
854 SbVec3i32 XYZToVoxel(const SbVec3f &dataPosition);
855
871 SbBox3i32 XYZToVoxel( const SbBox3f& boxXYZ );
872
878 bool setGetDataMode (const GetDataMode getDataMode);
879
884
885
886#if 1 SoDEPRECATED
892 DataInfoBox getData(int resolution, const SbBox3i32& subVolume, void* buffer);
893SoDEPRECATED
898 DataInfoPlane getData(int resolution, const SbBox3i32& subVolume, const SbPlane& plane,
899 void* buffer);
900SoDEPRECATED
905 DataInfoLine getData(int resolution, const SbBox3i32& subVolume, const SbLine& line , void* buffer);
906SoDEPRECATED
911 DataInfoTrace getData(int resolution, const SbBox3i32& subVolume, const SbVec2i32 coord,
912 void* buffer );
913SoDEPRECATED
918 void getData(DataInfoPolyLine& infoPolyline, int resolution, const SbBox3i32& subVolume, int numPoints,
919 const SbVec3i32* polyline, void* buffer);
920SoDEPRECATED
925 int requestData(int resolution, const SbBox3i32& subVolume, void* buffer);
926SoDEPRECATED
931 int requestData(int resolution, const SbBox3i32& subVolume, const SbPlane& plane, void* buffer);
932SoDEPRECATED
937 int requestData(int resolution, const SbBox3i32& subVolume, const SbLine& line, void* buffer);
938SoDEPRECATED
943 int requestData(int resolution, const SbBox3i32& subVolume, int numPoints, const SbVec3i32* polyline, void* buffer);
944SoDEPRECATED
949 int requestData(int resolution, const SbBox3i32& subVolume, const SbVec2i32& coord, void* buffer);
950
951#endif
953private:
954
955 void initPerfCounters();
956 void resetPerfCounters();
957 bool intersectWith(const SbBox3i32 &, const SbBox3i32 &, SbBox3i32 &);
958 int intersectWith(const SbBox3i32 &, const SbPlane &, int, SbVec3i32 [], SbVec3i32 []) const;
959 bool intersectWith(const SbBox3i32 &, const SbLine &, SbVec3i32 []) const;
960 int getZaxis(const SbVec3f &) const;
961 void copyData(unsigned short dataSetId, SoLDMTileID tile, SoBufferObject* tileBufferObj, int tileIndex);
962 void copyData(unsigned short dataSetId, SoLDMTileID tile, SoBufferObject* tileBufferObj, int tileIndex, int requestId, bool canRelease=true);
963 void requestNotCompleted(int requestId);
964 std::vector<SoLDMTileID> getRequestedTiles(int requestId);
965 SoDataSet* getRequestingDataSet(int requestId);
966 bool isTileToPrefecth(const SoLDMTileID &tileId);
967 void removeTileFromPrefetch(const SoLDMTileID &tileId);
968 SbThreadBarrier* getDataAccessBarrier();
969 SbThreadBarrier* getReaderThreadBarrier();
970
971 //info needed when copyData is called
972 enum CopyWhat{
973 COPY_BOX,
974 COPY_PLANE,
975 COPY_LINE,
976 COPY_SINGLE,
977 COPY_TRACE
978 };
979
980 CopyWhat getTypeOfCopy () { return m_copyInfo.copyWhat;};
981
982private:
983 int clipSegment(const SbVec3i32 &, const SbVec3i32 &, SbVec3i32 *, int, const SbVec3i32 &, const SbVec3i32 &) const;
984
985 //check if box is flat and readjust
986 void checkBox(int& _max, int& _min, int volBox);
987 SbBox3i32 getBox(SbVec3i32 p1, SbVec3i32 p2, SbBox3i32 volBox);
988
989 // TODO: this class should not be defined in a public header
990 // and should be cleanup
991 struct CopyInfo {
992 public:
993 CopyInfo()
994 { reset(); }
995
996 // reset all members to a well define default value
997 void reset()
998 {
999 destBufferObj = NULL;
1000 userCpuObj = NULL;
1001 vmin = SbVec3i32(0,0,0);
1002 vmax = SbVec3i32(0,0,0);
1003 tileDim = -1;
1004 dataSize = -1;
1005 subVolume.makeEmpty();
1006 resolution = -1;
1007 copyWhat = COPY_SINGLE;
1008 qmin = SbVec2i32(0,0);
1009 qmax = SbVec2i32(0,0);
1010 normal = SbVec3f(0,0,0);
1011 distance = -1;
1012 Zaxis = -1;
1013 voxelsToCopy = NULL;
1014
1015 // asynchronous access
1016 tiles.clear();
1017 tilesFromDisk.clear();
1018 tilesToPrefetch.clear();
1019 tilesInfos.clear();
1020 tilesIndex.clear();
1021 ldmDataAccess = NULL;
1022 dataSet = NULL;
1023 loadPolicy = SoLDMResourceParameters::NEVER;
1024 requestSize = -1;
1025 requestId = -1;
1026 shouldCallback = false;
1027 dataInfoPolyline = NULL;
1028 dataInfoLine = NULL;
1029 dataInfoPlane = NULL;
1030 dataInfoBox = NULL;
1031 dataInfoTrace = NULL;
1032 }
1033
1034 public:
1035 SoRef<SoBufferObject> destBufferObj;
1036 SoRef<SoCpuBufferObject> userCpuObj;
1037 SbVec3i32 vmin;
1038 SbVec3i32 vmax;
1039 int tileDim;
1040 int dataSize;
1041 SbBox3i32 subVolume;
1042 int resolution;
1043 CopyWhat copyWhat;
1044 SbVec2i32 qmin;
1045 SbVec2i32 qmax;
1046 SbVec3f normal;
1047 float distance;
1048 SbPlane plane;
1049 int Zaxis;
1050 SbVec2i32 bufDim;
1051 std::vector< std::vector<SbVec2i32> >* voxelsToCopy;
1052 // asynchronous access
1053 std::vector<SoLDMTileID> tiles;
1054 std::vector<SoLDMTileID> tilesFromDisk;
1055 std::vector<SoLDMTileID> tilesToPrefetch;
1056 std::map<int64_t, SbVec3i32> tilesInfos;
1057 std::map<int64_t, int> tilesIndex;
1058 SoLDMDataAccess* ldmDataAccess;
1059 SoDataSet* dataSet;
1061 int64_t requestSize;
1062 int requestId;
1063 bool shouldCallback;
1064 DataInfoPolyLine* dataInfoPolyline;
1065 DataInfoLine* dataInfoLine;
1066 DataInfoPlane* dataInfoPlane;
1067 DataInfoBox* dataInfoBox;
1068 DataInfoTrace* dataInfoTrace;
1069 } m_copyInfo;
1070
1071
1072private:
1073 enum threadType
1074 { NONE = 0,
1075 PLANE,
1076 BOX,
1077 TRACES,
1078 LINE,
1079 POLYLINE
1080 };
1081
1085 SoLDMDataAccess& operator=(const SoLDMDataAccess& ldmDa);
1087
1088 SoDataSet *m_dataSet;
1089 SoLDMMediator *m_mediator;
1090
1091 std::map<int, CopyInfo> m_requests;
1092
1093 //bool getRequestInfo(int resolution, const SbBox3i32& subVolume0, void *buffer, DataInfoBox& info, CopyInfo& copyInfo);
1094 bool getRequestInfo(int resolution, const SbBox3i32& subVolume0, SoBufferObject *bufferObj, DataInfoBox& info, CopyInfo& copyInfo);
1095
1096 bool getRequestInfo(int resolution, const SbBox3i32& subVolume0, const SbPlane& plane, SoBufferObject *bufferObj,
1097 SoLDMDataAccess::DataInfoPlane& info, SoLDMDataAccess::CopyInfo& copyInfo);
1098
1099 bool getRequestInfo(int resolution, const SbBox3i32& subVolume0, const SbLine& line, SoBufferObject *bufferObj,
1100 SoLDMDataAccess::DataInfoLine& info, SoLDMDataAccess::CopyInfo& copyInfo);
1101
1102 bool getRequestInfo(int resolution, const SbBox3i32& subVolume0, const SbVec2i32 coord, SoBufferObject *bufferObj,
1103 SoLDMDataAccess::DataInfoTrace& info, SoLDMDataAccess::CopyInfo& copyInfo);
1104
1105 //void copyData(unsigned short dataSetId, SoLDMTileID tile, void* bufferTile, int tileIndex, CopyInfo& copyInfo);
1106 void copyData(unsigned short , SoLDMTileID tile, SoBufferObject* tileBufferObj, int tileIndex, SoLDMDataAccess::CopyInfo& copyInfo);
1107
1108 static void *readTraceFromDiskThreadRoutine(void* userData);
1109 static void *readSliceFromDiskThreadRoutine(void* userData);
1110 static void *readTilesFromDiskThreadRoutine(void* userData);
1111 void readSliceInTile(SoLDMDataAccess* dataAccess, int fileID, SbBox3i32& tilePos, int& sliceNumber, SoBufferObject* destBuffer );
1112 void buildPlane(SoLDMDataAccess* dataAccess, int firstAxis, int secondAxis, int sliceNumber);
1113 bool createThreadReadDisk(SoLDMDataAccess::threadType threadType);
1114 void updateTilesLists(SoLDMDataAccess::CopyInfo& copyInfo);
1115 void checkGetDataMode (const SoLDMDataAccess::CopyWhat copyWhat);
1116
1117 enum RequestState {
1118 NOT_FOUND,
1119 OK
1120 };
1121
1122 RequestState queryRequestState(int requestId);
1123
1124 int m_nextRequestId;
1125 int getNextRequestId();
1126
1127 SoPerfCounterManager* m_perf;
1128
1129 // Perf counter used for data copy timing
1130 SoPerfCounter* m_time_copy_data_trace;
1131 SoPerfCounter* m_time_copy_data_vol;
1132 SoPerfCounter* m_time_copy_data_plane;
1133
1134 // Perf counter used for tile select timing
1135 SoPerfCounter* m_time_tile_select_trace;
1136 SoPerfCounter* m_time_tile_select_vol;
1137 SoPerfCounter* m_time_tile_select_plane;
1138
1139 SoLDMAlgorithms* m_algorithms;
1140
1141 GetDataMode m_getDataMode;
1142
1143 SbThreadBarrier *m_readerBarrier;
1144 SbThreadBarrier *m_diskReadThreadBarrier;
1145 SbThread *m_diskReadThread;
1146 bool m_threadMustStop;
1147 threadType m_threadType;
1148
1149 static void checkBuffer(SoBufferObject* buffer);
1150
1151private:
1152 CopyInfo& getCopyInfo();
1153 bool threadMustStop();
1154
1155};// END SoLDMDataAccess definition
1156
1157
1158inline SoDataSet*
1160{
1161 return m_dataSet;
1162}
1163
1164inline void
1166{
1167 SoDebugError::post("SoLDMDataAccess::endRequest", "An asynchronous access has been made using first class SoLDMDataAccess. Please implement your own, overloading endRequest method.");
1168}
1169
1172{
1173 return m_getDataMode;
1174}
1175
1176inline SoLDMDataAccess::CopyInfo&
1177SoLDMDataAccess::getCopyInfo()
1178{
1179 return m_copyInfo;
1180}
1181
1182inline bool
1183SoLDMDataAccess::threadMustStop()
1184{
1185 return m_threadMustStop;
1186}
1187
1188inline SbThreadBarrier*
1189SoLDMDataAccess::getDataAccessBarrier()
1190{
1191 return m_readerBarrier;
1192}
1193
1194inline SbThreadBarrier*
1195SoLDMDataAccess::getReaderThreadBarrier()
1196{
1197 return m_diskReadThreadBarrier;
1198}
1199
1200/***************************************************************************/
1201inline SoLDMDataAccess&
1202SoLDMDataAccess::operator=(const SoLDMDataAccess& )
1203{
1204 assert(0);
1205 return *this;
1206}
1207
1208#ifdef _MSC_VER
1209#pragma warning( pop )
1210#endif
1211
1212#endif /* LDM_DATA_ACCESS_H */
1213
1214
3D box class.
Definition SbBox.h:649
<a href="IconLegend.html"><img src="extTGS.gif" alt="VSG extension" border="0"></a> 3D box class.
Definition SbBox.h:96
Directed line in 3D.
Definition SbLine.h:57
Oriented plane in 3D.
Definition SbPlane.h:64
<a href="IconLegend.html"><img src="extTGS.gif" alt="VSG extension" border="0"></a> Portable "barrie...
<a href="IconLegend.html"><img src="extTGS.gif" alt="VSG extension" border="0"></a> Portable thread ...
Definition SbThread.h:65
2D vector class.
Definition SbVec.h:517
3D vector class.
Definition SbVec.h:932
3D vector class.
Definition SbVec.h:1517
<a href="IconLegend.html"><img src="extTGS.gif" alt="VSG extension" border="0"></a> Abstract base cl...
<a href="IconLegend.html"><img src="extTGS.gif" alt="VSG extension" border="0"></a> CPU buffer objec...
<a href="IconLegend.html"><img src="extLDM.gif" alt="Large Data Management" border="0"></a> Data set...
Definition SoDataSet.h:139
static void post(const char *methodName, const char *formatString ...)
Posts an error.
Information about data returned for an arbitrary polyline.
SbVec3i32 ** segmentCoord
Segment coordinates in the data.
ErrorValue errorFlag
Error indicator.
int * segmentBufferDim
Dimension of buffer for each segment.
DataInfoPolyLine(int numPoint)
Constructor of a dataInfoPolyline.
int64_t bufferSize
Size of the requested data in bytes.
int * segmentBufferSize
Size of buffer for each segment (size = dimension*datatype).
void operator=(const DataInfoPolyLine &A)
int numSegment
Number of segments in the polyline.
DataInfoPolyLine(const DataInfoPolyLine &A)
Copy constructor.
<a href="IconLegend.html"><img src="extLDM.gif" alt="Large Data Management" border="0"></a> Volume d...
SoDEPRECATED int requestData(int resolution, const SbBox3i32 &subVolume, void *buffer)
SbBool isTileUniform(int resolution, const SbVec3i32 &dataPosition, double &uniformValue)
Returns TRUE if the tile containing the data located at position dataPosition (IJK voxel coordinates)...
SoDEPRECATED int requestData(int resolution, const SbBox3i32 &subVolume, const SbVec2i32 &coord, void *buffer)
void getRequestedData(int requestId, DataInfoBox &infoBox)
Returns the data associated with requestID into infoBox.
SoLDMDataAccess()
Constructor.
DataInfoLine getData(int resolution, const SbBox3i32 &subVolume0, const SbLine &line, SoBufferObject *bufferObj=NULL)
Given a subvolume in voxel coordinates and a line, copies the data intersecting the line and the subv...
SoDEPRECATED int requestData(int resolution, const SbBox3i32 &subVolume, const SbLine &line, void *buffer)
SoDEPRECATED void getData(DataInfoPolyLine &infoPolyline, int resolution, const SbBox3i32 &subVolume, int numPoints, const SbVec3i32 *polyline, void *buffer)
int requestData(int resolution, const SbBox3i32 &subVolume0, const SbLine &line, SoBufferObject *bufferObj)
Given a subvolume in voxel coordinates and a line, asynchronously copies the data intersecting the li...
DataInfo getData(int resolution, const SbVec3i32 &dataPosition)
Returns a pointer to the block of data (LDM tile) which contains the voxel at dataPosition.
void getRequestedData(int requestId, DataInfoPolyLine &infoPolyline)
Returns the data associated with requestID into infoPolyline.
virtual ~SoLDMDataAccess()
Destructor.
SoDEPRECATED DataInfoPlane getData(int resolution, const SbBox3i32 &subVolume, const SbPlane &plane, void *buffer)
SoDEPRECATED int requestData(int resolution, const SbBox3i32 &subVolume, const SbPlane &plane, void *buffer)
int requestData(int resolution, const SbBox3i32 &subVolume, const SbPlane &plane, SoBufferObject *bufferObj)
Given a subvolume in voxel coordinates and a plane, asynchronously copies the data intersecting the p...
SbBox3i32 XYZToVoxel(const SbBox3f &boxXYZ)
Converts the specified box in geometric coordinates (X,Y,Z) to voxel coordinates (I,...
void setDataSet(SoDataSet *v)
Set dataset to fetch data from.
int requestData(int resolution, const SbBox3i32 &box, SoBufferObject *bufferObj)
Given a subvolume in voxel coordinates, asynchronously copies the associated data into an application...
SoDEPRECATED DataInfoTrace getData(int resolution, const SbBox3i32 &subVolume, const SbVec2i32 coord, void *buffer)
SoDEPRECATED DataInfoLine getData(int resolution, const SbBox3i32 &subVolume, const SbLine &line, void *buffer)
SbBox3f voxelToXYZ(const SbBox3i32 &boxIJK)
Converts the specified box in voxel coordinates (I,J,K) to geometric coordinates (X,...
void getRequestedData(int requestId, DataInfoTrace &infoTrace)
Returns the data associated with requestID into infoTrace .
SoDEPRECATED DataInfoBox getData(int resolution, const SbBox3i32 &subVolume, void *buffer)
SbVec3f voxelToXYZ(const SbVec3i32 &dataPosition)
Converts a voxel coordinate (I,J,K) to a geometry coordinate (X,Y,Z).
bool setGetDataMode(const GetDataMode getDataMode)
Set the GetDataMode.
int requestData(int resolution, const SbBox3i32 &subVolume0, const SbVec2i32 &coord, SoBufferObject *bufferObj)
Data values in a single seismic trace (a row of voxels along the volume X axis) are asynchronously co...
SoDEPRECATED int requestData(int resolution, const SbBox3i32 &subVolume, int numPoints, const SbVec3i32 *polyline, void *buffer)
virtual void endRequest(int requestId)
This method is called each time a data request is finished, meaning that the data requested asynchron...
DataInfoPlane getData(int resolution, const SbBox3i32 &subVolume0, const SbPlane &plane, SoBufferObject *bufferObj=NULL)
Given a subvolume in voxel coordinates and a plane, copies the data intersecting the plane and the su...
int requestData(int resolution, const SbBox3i32 &subVolume, int numPoints, const SbVec3i32 *polyline, SoBufferObject *bufferObj)
Given a subvolume in voxel coordinates and a stack of line, asynchronously copies the data intersecti...
SbVec3i32 XYZToVoxel(const SbVec3f &dataPosition)
Converts a geometry coordinate (X,Y,Z) to a voxel coordinate (I,J,K).
void releaseData(SoLDMTileID tileID)
Tells VolumeViz that this block of data (returned by getData above) is no longer in use by the applic...
GetDataMode getGetDataMode()
Returns the GetDataMode (see setGetDataMode).
DataInfoTrace getData(int resolution, const SbBox3i32 &subVolume, const SbVec2i32 coord, SoBufferObject *bufferObj=NULL)
Data values in a single seismic trace (a row of voxels along the volume X axis) are copied into an ap...
SoDataSet * getDataSet()
Returns the associated dataset.
DataInfoBox getData(int resolution, const SbBox3i32 &subVolume0, SoBufferObject *bufferObj=NULL)
Given a subvolume in voxel coordinates, copies the associated data into an application buffer.
void getData(DataInfoPolyLine &infoPolyline, int resolution, const SbBox3i32 &subVolume, int numPoints, const SbVec3i32 *polyline, SoBufferObject *bufferObj=NULL)
Given a subvolume in voxel coordinates and a polyline (set of connected line segments),...
void getRequestedData(int requestId, DataInfoLine &infoLine)
Returns the data associated with requestID into infoLine.
void getRequestedData(int requestId, DataInfoPlane &infoPlane)
Returns the data associated with requestID into infoPlane.
ErrorValue
Error Code values.
@ INCORRECT_SUBVOLUME
The specified subvolume does not intersect the data volume.
@ INCORRECT_BUFFER
Application buffer to copy data into is invalid.
@ INCORRECT_COORDINATE
The trace at the specified coordinate does not intersect the specified subvolume.
@ CORRECT
Request was successfully completed.
@ INCORRECT_POLYLINE
The specified polyline does not intersect the specified subvolume.
@ INCORRECT_RESOLUTION
The specified resolution is lower than the lowest resolution level of the data.
@ INCORRECT_LINE
The specified line does not intersect the specified subvolume.
@ MEMORY_FULL
No more memory is available.
@ REQUEST_NOT_COMPLETED
Requesting data from an unfinished asynchronous request.
@ INCORRECT_PLANE
The specified plane does not intersect the specified subvolume.
@ INCORRECT_POSITION
The specified position is outside the specified subvolume.
@ REQUEST_NOT_FOUND
Request is unknown.
GetDataMode
Specifies the way data is requested from the volume reader when the necessary tiles are not already p...
@ DIRECT_AND_PREFETCH
Same as Direct, but also schedule the relevant tiles to be loaded for faster future access.
@ CACHE
Request data by tile (default)
@ DIRECT
Request data directly.
<a href="IconLegend.html"><img src="extLDM.gif" alt="Large Data Management" border="0"></a> Tile ID
Definition SoLDMTileID.h:63
Abstract base class for Performance Counter.
Performance Counter Manager.
Smart pointer for any class inheriting SoRefCounter.
Definition SoRef.h:90
int SbBool
Boolean type.
Definition SbBase.h:87
Information about data returned for an arbitrary box (subvolume).
int64_t bufferSize
Size of the requested data in bytes.
ErrorValue errorFlag
Error indicator.
SbVec3i32 bufferDimension
Dimensions of the 3D data (in voxels).
Information about returned data when directly accessing the data rather than copying the data.
ErrorValue errorFlag
Error indicator.
SbBox3i32 tilePosition
Position of the data tile in voxel coordinates (min = lower left back corner, max = upper right front...
SoLDMTileID tileID
LDM tile ID of the tile that contains the data at tilePosition.
SbVec3i32 tileDimension
Dimensions of the data tile in voxels.
void * tileData
Pointer to the data tile, valid until the releaseData() method of SoLDMDataAccess is called or the a...
int64_t bufferSize
Size of the data tile in bytes.
Information about data returned for an arbitrary line.
int64_t bufferSize
Size of the requested data in bytes.
int bufferDimension
Dimension of the 1D array of data (in voxels).
ErrorValue errorFlag
Error indicator.
SbVec3i32 lineCoord[2]
First and last point of the segment of data in voxel coordinates.
Information about data returned for an arbitrary plane.
SbVec3i32 quadCoord[4]
Quad corresponding to the returned data in voxel coordinates.
ErrorValue errorFlag
Error indicator.
int numPolygonPoints
Number of points of the polygon intersecting subvolume.
int64_t bufferSize
Size of the requested data in bytes.
SbVec3i32 polygonCoord[6]
Polygon intersecting subvolume in voxel coordinates.
int uAxis
Axis corresponding to the first dimension of the returned array.
int vAxis
Axis corresponding to the second dimension of the returned array.
SbVec2i32 bufferDimension
Dimension of the 2D data matrix (in voxels).
Information about data returned for an arbitrary trace (column of voxels).
int bufferDimension
Dimension of the 1D array of data (the number of values returned).
int64_t bufferSize
Size of the requested data in bytes.
ErrorValue errorFlag
Error indicator.