Horus Doc || C++ Reference || Class Overview   Pixels   Images   Detector   Geometry   Registry || Doxygen's quick Index  

HxImportPix.h

00001 /*
00002  *  Copyright (c) 2000, University of Amsterdam, The Netherlands.
00003  *  All rights reserved.
00004  *
00005  *  Author(s):
00006  *  Edo Poll (poll@wins.uva.nl)
00007  */
00008 
00009 #ifndef HxImportPix_h
00010 #define HxImportPix_h
00011 
00012 #include "HxCategories.h"
00013 #include "HxTagList.h"
00014 #include "HxByte.h"
00015 #include "HxVec2Int.h"
00016 #include "HxVec2Double.h"
00017 #include "HxVec3Int.h"
00018 #include "HxVec3Double.h"
00019 #include "HxComplex.h"
00020 
00021 
00022 template<class ArithT, class DataT>
00023 class HxImportPix
00024 {
00025 public:
00026     typedef HxTagPixOpIn        DirectionCategory;
00027     typedef HxTagTransInVar     TransVarianceCategory;
00028     typedef HxTag1Phase         PhaseCategory;
00029 
00030                         HxImportPix(HxTagList&);
00031 
00032     ArithT              doIt()
00033                             { return *_data++; }
00034 
00035     static HxString     className();
00036 private:
00037     DataT*              _data;
00038 };
00039 
00040 
00041 template<class ArithT, class DataT>
00042 inline
00043 HxImportPix<ArithT, DataT>::HxImportPix(HxTagList& tags)
00044 {
00045     _data = (DataT*)HxGetTag<void*>(tags, "dataPtr", ((void*)0));
00046 }
00047 
00048 template<class ArithT, class DataT>
00049 inline HxString
00050 HxImportPix<ArithT, DataT>::className()
00051 {
00052     return HxPixOpMakeName<DataT>("importPix");
00053 }
00054 
00055 template<>
00056 inline HxVec2Int
00057 HxImportPix<HxVec2Int, HxByte>::doIt()
00058 {
00059     int x = *_data++;
00060     int y = *_data++;
00061     return HxVec2Int(x, y);
00062 }
00063 
00064 template<>
00065 inline HxVec2Int
00066 HxImportPix<HxVec2Int, short>::doIt()
00067 {
00068     int x = *_data++;
00069     int y = *_data++;
00070     return HxVec2Int(x, y);
00071 }
00072 
00073 template<>
00074 inline HxVec2Int
00075 HxImportPix<HxVec2Int, int>::doIt()
00076 {
00077     int x = *_data++;
00078     int y = *_data++;
00079     return HxVec2Int(x, y);
00080 }
00081 
00082 template<>
00083 inline HxVec2Double
00084 HxImportPix<HxVec2Double, float>::doIt()
00085 {
00086     double x = *_data++;
00087     double y = *_data++;
00088     return HxVec2Double(x, y);
00089 }
00090 
00091 template<>
00092 inline HxVec2Double
00093 HxImportPix<HxVec2Double, double>::doIt()
00094 {
00095     double x = *_data++;
00096     double y = *_data++;
00097     return HxVec2Double(x, y);
00098 }
00099 
00100 template<>
00101 inline HxComplex
00102 HxImportPix<HxComplex, float>::doIt()
00103 {
00104     double x = *_data++;
00105     double y = *_data++;
00106     return HxComplex(x, y);
00107 }
00108 
00109 template<>
00110 inline HxComplex
00111 HxImportPix<HxComplex, double>::doIt()
00112 {
00113     double x = *_data++;
00114     double y = *_data++;
00115     return HxComplex(x, y);
00116 }
00117 
00118 template<>
00119 inline HxVec3Int
00120 HxImportPix<HxVec3Int, HxByte>::doIt()
00121 {
00122     int x = *_data++;
00123     int y = *_data++;
00124     int z = *_data++;
00125     return HxVec3Int(x, y, z);
00126 }
00127 
00128 template<>
00129 inline HxVec3Int
00130 HxImportPix<HxVec3Int, short>::doIt()
00131 {
00132     int x = *_data++;
00133     int y = *_data++;
00134     int z = *_data++;
00135     return HxVec3Int(x, y, z);
00136 }
00137 
00138 template<>
00139 inline HxVec3Int
00140 HxImportPix<HxVec3Int, int>::doIt()
00141 {
00142     int x = *_data++;
00143     int y = *_data++;
00144     int z = *_data++;
00145     return HxVec3Int(x, y, z);
00146 }
00147 
00148 template<>
00149 inline HxVec3Double
00150 HxImportPix<HxVec3Double, float>::doIt()
00151 {
00152     double x = *_data++;
00153     double y = *_data++;
00154     double z = *_data++;
00155     return HxVec3Double(x, y, z);
00156 }
00157 
00158 template<>
00159 inline HxVec3Double
00160 HxImportPix<HxVec3Double, double>::doIt()
00161 {
00162     double x = *_data++;
00163     double y = *_data++;
00164     double z = *_data++;
00165     return HxVec3Double(x, y, z);
00166 }
00167 
00168 #endif

Generated on Tue Feb 3 14:18:38 2004 for C++Reference by doxygen1.2.12 written by Dimitri van Heesch, © 1997-2001