00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #ifndef _vlVolVoxelOps_Linear_h
00028 #define _vlVolVoxelOps_Linear_h
00029
00030 #include "vlenums.h"
00031 #include "vlvoxeloperator.h"
00032 #include "vlvoxelopplugin.h"
00033 #include "vlvolvoxelops.h"
00034 #include "vlkernel.h"
00035 #include "vltrader.h"
00036
00037
00038 template <typename DataType>
00039 class vlVolVoxelOps<DataType, vlLayout::Linear>
00040 : public vlVolVoxelOpsBase<DataType, vlLayout::Linear>
00041 {
00042 public:
00043 vlVoxelOperator<DataType, vlLayout::Linear> * getNativeVoxelOp(const vlVoxelOpType type);
00044
00045 vlVoxelOperator<DataType, vlLayout::Linear> * getNativeVoxelOp(const std::string & name);
00046
00047 vlVoxelOperator<DataType, vlLayout::VirtualCall> * getVirtualVoxelOp(const vlVoxelOpType type);
00048
00049 vlVoxelOperator<DataType, vlLayout::VirtualCall> * getVirtualVoxelOp(const std::string & name);
00050 };
00051
00052
00053 template <typename DataType>
00054 vlVoxelOperator<DataType, vlLayout::Linear> *
00055 vlVolVoxelOps<DataType, vlLayout::Linear>::getNativeVoxelOp(const vlVoxelOpType type)
00056 {
00057 vlVoxelOperator<DataType, vlLayout::Linear> *voxelop(0L);
00058
00059 switch(type) {
00060
00061 default:
00062 vlVoxelOpPlugin *proc = (vlVoxelOpPlugin *) vlKernel::trader()->getPlugin("VoxelOperator", vlVoxelOp::name(type));
00063
00064 if(proc) {
00065 DataType variable;
00066 vlDataType datatype;
00067 getVariableDataType(variable, datatype);
00068 voxelop = dynamic_cast< vlVoxelOperator<DataType, vlLayout::Linear> *>(proc->getNativeVoxelOp(datatype , vlLayout::Linear));
00069 if(voxelop)
00070 return voxelop;
00071 }
00072 }
00073
00074 return (0L);
00075 }
00076
00077 template <typename DataType>
00078 vlVoxelOperator<DataType, vlLayout::Linear> *
00079 vlVolVoxelOps<DataType, vlLayout::Linear>::getNativeVoxelOp(const std::string & name)
00080 {
00081 vlVoxelOperator<DataType, vlLayout::Linear> *voxelop(0L);
00082
00083
00084
00085
00086 vlVoxelOpPlugin *proc = (vlVoxelOpPlugin *) vlKernel::trader()->getPlugin("VoxelOperator", name);
00087
00088 if(proc) {
00089 DataType variable;
00090 vlDataType datatype;
00091 getVariableDataType(variable, datatype);
00092 voxelop = dynamic_cast< vlVoxelOperator<DataType, vlLayout::Linear> *>(proc->getNativeVoxelOp(datatype, vlLayout::Linear));
00093 if(voxelop)
00094 return voxelop;
00095 }
00096
00097
00098 return (0L);
00099 }
00100
00101 template <typename DataType>
00102 vlVoxelOperator<DataType, vlLayout::VirtualCall> *
00103 vlVolVoxelOps<DataType, vlLayout::Linear>::getVirtualVoxelOp(const vlVoxelOpType type)
00104 {
00105 vlVoxelOperator<DataType, vlLayout::VirtualCall> *voxelop(0L);
00106
00107 switch(type) {
00108
00109 default:
00110 vlVoxelOpPlugin *proc = (vlVoxelOpPlugin *) vlKernel::trader()->getPlugin("VoxelOperator", vlVoxelOp::name(type));
00111
00112 if(proc) {
00113 DataType variable;
00114 vlDataType datatype;
00115 getVariableDataType(variable, datatype);
00116 voxelop = dynamic_cast< vlVoxelOperator<DataType, vlLayout::VirtualCall> *>(proc->getVirtualVoxelOp(datatype));
00117 if(voxelop)
00118 return voxelop;
00119 }
00120 }
00121
00122 return (0L);
00123 }
00124
00125 template <typename DataType>
00126 vlVoxelOperator<DataType, vlLayout::VirtualCall> *
00127 vlVolVoxelOps<DataType, vlLayout::Linear>::getVirtualVoxelOp(const std::string & name)
00128 {
00129 vlVoxelOperator<DataType, vlLayout::VirtualCall> *voxelop(0L);
00130
00131
00132
00133
00134 vlVoxelOpPlugin *proc = (vlVoxelOpPlugin *) vlKernel::trader()->getPlugin("VoxelOperator", name);
00135
00136 if(proc) {
00137 DataType variable;
00138 vlDataType datatype;
00139 getVariableDataType(variable, datatype);
00140 voxelop = dynamic_cast< vlVoxelOperator<DataType, vlLayout::VirtualCall> *>(proc->getVirtualVoxelOp(datatype));
00141 if(voxelop)
00142 return voxelop;
00143 }
00144
00145
00146 return (0L);
00147 }
00148
00149
00150 #endif // _vlVolVoxelOps_Linear_h
00151
00152