LatticePADD.h
Go to the documentation of this file.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 
00028 #ifndef TRIALDISPLAY_LATTICEPADD_H
00029 #define TRIALDISPLAY_LATTICEPADD_H
00030 
00031 #include <casa/aips.h>
00032 #include <casa/Quanta/Unit.h>
00033 #include <images/Images/ImageInterface.h>
00034 #include <display/DisplayDatas/PrincipalAxesDD.h>
00035 #include <casa/Containers/Record.h>
00036 #include <display/Display/DParameterChoice.h>
00037 #include <display/Display/DParameterRange.h>
00038 
00039 namespace casa { 
00040 
00041         class IPosition;
00042         class WCResampleHandler;
00043         class ImageRegion;
00044         class WCLELMask;
00045         class WorldCanvas;
00046         template <class T> class Array;
00047         template <class T> class Lattice;
00048         template <class T> class MaskedLattice;
00049         template <class T> class LatticeStatistics;
00050 
00051 
00052 
00053 
00054 
00055 
00056 
00057 
00058 
00059 
00060         template <class T> class LatticePADisplayData : public PrincipalAxesDD {
00061 
00062         public:
00063                 
00064                 
00065 
00066                 
00067                 
00068                 LatticePADisplayData(Array<T> *array, const uInt xAxis,
00069                                      const uInt yAxis, const uInt mAxis,
00070                                      const IPosition fixedPos);
00071                 LatticePADisplayData(Array<T> *array, const uInt xAxis,
00072                                      const uInt yAxis);
00073                 
00074 
00075                 
00076                 
00077                 LatticePADisplayData( SHARED_PTR<ImageInterface<T> > image, const uInt xAxis, const uInt yAxis, const uInt mAxis, const IPosition fixedPos, viewer::StatusSink *sink=0 );
00078                 LatticePADisplayData(SHARED_PTR<ImageInterface<T> > image, const uInt xAxis,
00079                                      const uInt yAxis);
00080                 
00081 
00082                 
00083                 virtual ~LatticePADisplayData();
00084 
00085                 
00086                 
00087                 virtual String showValue(const Vector<Double> &world);
00088 
00089                 
00090                 virtual const IPosition dataShape() const;
00091                 virtual uInt dataDim() const;
00092                 virtual  T dataValue(IPosition pos);
00093                 virtual const Unit dataUnit() const;
00094 
00095                 
00096                 String dataType() const {
00097                         return "image";
00098                 }
00099                 
00100                 virtual ImageAnalysis *imageanalysis( ) const;
00101                 SHARED_PTR<ImageInterface<Float> > imageinterface( );
00102 
00103 
00104                 
00105                 virtual void setupElements() = 0;
00106                 virtual void getMinAndMax();
00107 
00108                 
00109                 virtual Bool maskValue(const IPosition &pos);
00110 
00111                 
00112                 virtual void setDefaultOptions();
00113 
00114                 
00115                 
00116                 virtual Bool setOptions(Record &rec, Record &recOut);
00117 
00118 
00119 
00120                 
00121                 virtual Record getOptions( bool scrub=false ) const;
00122 
00123                 
00124                 
00125                 
00126                 virtual String className() const {
00127                         return String("LatticePADisplayData");
00128                 }
00129                 String description( ) const {
00130                         return itsBaseImagePtr ? itsBaseImagePtr->name( ) : "none available";
00131                 }
00132 
00133                 virtual WCResampleHandler *resampleHandler() {
00134                         return itsResampleHandler;
00135                 }
00136 
00137 
00138 
00139                 virtual Display::ComplexToRealMethod complexMode() {
00140                         return itsComplexToRealMethod;
00141                 }
00142                 virtual void setComplexMode(Display::ComplexToRealMethod method) {
00143                         itsComplexToRealMethod = method;
00144                 }
00145 
00146                 virtual SHARED_PTR<MaskedLattice<T> > maskedLattice() {
00147                         return itsMaskedLatticePtr;
00148                 }
00149 
00150 
00151                 
00152                 
00153                 virtual Bool insertArray(Record& toGoInto, Vector<Float> toInsert, const String fieldname);
00154                 virtual Bool insertFloat(Record& toGoInto, Float toInsert, const String fieldname);
00155 
00156                 
00157                 virtual Record getHist() const;
00158 
00159                 
00160                 virtual String getBrightnessUnits() const;
00161 
00162                 
00163                 
00164                 
00165                 
00166                 
00167                 
00168                 
00169                 
00170                 
00171                 
00172                 
00173                 static Bool useStriding(const IPosition& shape, IPosition& stride,
00174                                         uInt maxPixels=1000000u, uInt minPerAxis=20u);
00175 
00176 
00177         protected:
00178 
00179                 
00180                 virtual void SetUpBeamData_();
00181 
00182 
00183                 
00184                 
00185                 
00186                 virtual void drawBeamEllipse_(WorldCanvas* wc);
00187 
00188 
00189 
00190         private:
00191 
00192                 
00193                 SHARED_PTR<ImageInterface<T> > itsBaseImagePtr;
00194 
00195                 
00196                 Array<T>* itsBaseArrayPtr;
00197 
00198                 
00199                 Record imageHistogram;
00200 
00201                 
00202                 Bool calcHist;
00203 
00204                 
00205                 
00206                 SHARED_PTR<MaskedLattice<T> > itsMaskedLatticePtr;
00207 
00208                 
00209                 Bool itsDeleteMLPointer;
00210 
00211                 
00212                 LatticeStatistics<Float>* itsLatticeStatisticsPtr;
00213 
00214                 
00215                 ImageRegion* itsRegionPtr;
00216 
00217                 
00218                 WCLELMask* itsMaskPtr;
00219 
00220                 
00221                 Unit itsDataUnit;
00222 
00223                 
00224                 Display::ComplexToRealMethod itsComplexToRealMethod;
00225 
00226                 
00227                 String itsResample;
00228                 String itsComplexMode;
00229 
00230                 
00231                 
00232 
00233                 std::vector<std::vector<double> > beams_;
00234                 String majorunit_;      
00235                 String minorunit_;      
00236                 String paunit_; 
00237 
00238                 DParameterChoice* beamOnOff_;           
00239                 DParameterChoice* beamStyle_;           
00240                 DParameterChoice* beamColor_;
00241                 DParameterRange<Int>* beamLineWidth_;
00242                 DParameterRange<Float>* beamXCenter_;           
00243                 DParameterRange<Float>* beamYCenter_;           
00244                 
00245 
00246 
00247 
00248                 
00249                 WCResampleHandler *itsResampleHandler;
00250 
00251                 
00252                 void updateLatticeStatistics();
00253 
00254                 
00255                 Bool updateHistogram(Record &rec, MaskedLattice<Complex> &pImage);
00256                 Bool updateHistogram(Record &rec, ImageInterface<Float> &pImage);
00257                 Bool updateHistogram(Record &rec, const Array<Complex>*);
00258                 Bool updateHistogram(Record &rec, const Array<Float>*);
00259 
00260                 WCLELMask* makeMask (const RecordInterface& mask);
00261                 ImageRegion* makeRegion (const RecordInterface& region);
00262                 Bool isMaskDifferent (WCLELMask*& pMask);
00263                 Bool isRegionDifferent (ImageRegion*& pRegion);
00264 
00265                 
00266                 Bool transferPreferences (DisplayCoordinateSystem& cSysInOut,
00267                                           const DisplayCoordinateSystem& cSysIn) const;
00268 
00269                 
00270                 void delTmpImage();
00271         };
00272 
00273 
00274 } 
00275 
00276 #ifndef AIPS_NO_TEMPLATE_SRC
00277 #include <display/DisplayDatas/LatticePADD.tcc>
00278 
00279 #endif //# AIPS_NO_TEMPLATE_SRC
00280 #endif