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

HxExportPix.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 HxExportPix_h
00010 #define HxExportPix_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 HxExportPix
00024 {
00025 public:
00026     typedef HxTagPixOpOut       DirectionCategory;
00027     typedef HxTagTransInVar     TransVarianceCategory;
00028     typedef HxTag1Phase         PhaseCategory;
00029 
00030                         HxExportPix(HxTagList&);
00031 
00032     void                doIt(const ArithT& x)
00033                             { *_data++ = x.x(); }
00034 
00035     static HxString     className();
00036 private:
00037     DataT*              _data;
00038 };
00039 
00040 
00041 template<class ArithT, class DataT>
00042 inline
00043 HxExportPix<ArithT, DataT>::HxExportPix(HxTagList& tags)
00044 {
00045     _data = (DataT*)HxGetTag<void*>(tags, "dataPtr", ((void*)0));
00046 }
00047 
00048 template<class ArithT, class DataT>
00049 inline HxString
00050 HxExportPix<ArithT, DataT>::className()
00051 {
00052     return HxPixOpMakeName<DataT>("exportPix");
00053 }
00054 
00055 template<>
00056 inline void
00057 HxExportPix<HxVec2Int, HxByte>::doIt(const HxVec2Int& x)
00058 {
00059     *_data++ = x.x();
00060     *_data++ = x.y();
00061 }
00062 
00063 template<>
00064 inline void
00065 HxExportPix<HxVec2Int, short>::doIt(const HxVec2Int& x)
00066 {
00067     *_data++ = x.x();
00068     *_data++ = x.y();
00069 }
00070 
00071 template<>
00072 inline void
00073 HxExportPix<HxVec2Int, int>::doIt(const HxVec2Int& x)
00074 {
00075     *_data++ = x.x();
00076     *_data++ = x.y();
00077 }
00078 
00079 template<>
00080 inline void
00081 HxExportPix<HxVec2Double, float>::doIt(const HxVec2Double& x)
00082 {
00083     *_data++ = x.x();
00084     *_data++ = x.y();
00085 }
00086 
00087 template<>
00088 inline void
00089 HxExportPix<HxVec2Double, double>::doIt(const HxVec2Double& x)
00090 {
00091     *_data++ = x.x();
00092     *_data++ = x.y();
00093 }
00094 
00095 template<>
00096 inline void
00097 HxExportPix<HxComplex, float>::doIt(const HxComplex& x)
00098 {
00099     *_data++ = x.x();
00100     *_data++ = x.y();
00101 }
00102 
00103 template<>
00104 inline void
00105 HxExportPix<HxComplex, double>::doIt(const HxComplex& x)
00106 {
00107     *_data++ = x.x();
00108     *_data++ = x.y();
00109 }
00110 
00111 template<>
00112 inline void
00113 HxExportPix<HxVec3Int, HxByte>::doIt(const HxVec3Int& x)
00114 {
00115     *_data++ = x.x();
00116     *_data++ = x.y();
00117     *_data++ = x.z();
00118 }
00119 
00120 template<>
00121 inline void
00122 HxExportPix<HxVec3Int, short>::doIt(const HxVec3Int& x)
00123 {
00124     *_data++ = x.x();
00125     *_data++ = x.y();
00126     *_data++ = x.z();
00127 }
00128 
00129 template<>
00130 inline void
00131 HxExportPix<HxVec3Int, int>::doIt(const HxVec3Int& x)
00132 {
00133     *_data++ = x.x();
00134     *_data++ = x.y();
00135     *_data++ = x.z();
00136 }
00137 
00138 template<>
00139 inline void
00140 HxExportPix<HxVec3Double, float>::doIt(const HxVec3Double& x)
00141 {
00142     *_data++ = x.x();
00143     *_data++ = x.y();
00144     *_data++ = x.z();
00145 }
00146 
00147 template<>
00148 inline void
00149 HxExportPix<HxVec3Double, double>::doIt(const HxVec3Double& x)
00150 {
00151     *_data++ = x.x();
00152     *_data++ = x.y();
00153     *_data++ = x.z();
00154 }
00155 
00156 #endif

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