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 #include <iostream>
00028 #include "vlvoliter_rlencode.h"
00029 #include "vlgenericfactory.h"
00030 #include "rlencode.h"
00031
00032 typedef vlGenericFactory<vlVolDataRLEncode> vlVolDataRLEncodeFactory;
00033 VL_EXPORT_COMPONENT_FACTORY( rlencode, vlVolDataRLEncodeFactory );
00034
00038 vlVolDataRLEncode::vlVolDataRLEncode()
00039 {
00040 infoRef().setVersion(0, 0, 1);
00041 infoRef().setName("RLEncodeLayout");
00042 infoRef().setService("RLEncode", "RLEncoded volume layout");
00043 infoRef().addAuthor("Sarang Lakare");
00044 infoRef().setCopyrightText("2000-2002 Sarang Lakare");
00045 }
00046
00047
00051 vlVolDataRLEncode::~vlVolDataRLEncode()
00052 {
00053 }
00054
00055 vlLayoutType vlVolDataRLEncode::layoutType() const
00056 {
00057 return (LayoutType);
00058 }
00059
00060 vlVolData * vlVolDataRLEncode::getLayout(const vlDataType & datatype, const vlDim & dim,
00061 const vlUnit & units)
00062 {
00063 vlVolData * ret;
00064 callFunctionOnDataType(datatype, ret, getLayoutT, dim, units);
00065 return (ret);
00066 }
00067
00068
00069 template <class DataType>
00070 vlVolData * vlVolDataRLEncode::getLayoutT(DataType & dummy, const vlDim & dim,
00071 const vlUnit & units)
00072 {
00073 vlVolDataLayout<DataType,LayoutType>* layout =
00074 new vlVolDataLayout<DataType,LayoutType>(dim, units);
00075 return (layout);
00076 }
00077
00078
00079 vlVolIterSuperBase * vlVolDataRLEncode::getIter(vlVolume * vol)
00080 {
00081 vlVolIterSuperBase *iter;
00082 callFunctionOnDataType(vol->dataType(), iter, getIterT, vol);
00083 return (iter);
00084 }
00085
00086 vlVolIterSuperBase * vlVolDataRLEncode::getConstIter(const vlVolume * vol)
00087 {
00088 vlVolIterSuperBase *iter;
00089 callFunctionOnDataType(vol->dataType(), iter, getConstIterT, vol);
00090 return (iter);
00091 }
00092
00093 template <class DataType>
00094 vlVolIterSuperBase * vlVolDataRLEncode::getIterT(DataType & dummy, vlVolume *vol)
00095 {
00096 vlVolIterSuperBase *iter = new vlVolIter<DataType, LayoutType>(vol);
00097 return (iter);
00098 }
00099
00100
00101 template <class DataType>
00102 vlVolIterSuperBase * vlVolDataRLEncode::getConstIterT(DataType & dummy, const vlVolume *vol)
00103 {
00104 vlVolIterSuperBase *iter = new vlVolIterConst<DataType, LayoutType>(vol);
00105 return (iter);
00106 }
00107
00108
00109