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(ImageInterface<T> *image, const uInt xAxis,
00078 const uInt yAxis, const uInt mAxis,
00079 const IPosition fixedPos);
00080 LatticePADisplayData(ImageInterface<T> *image, const uInt xAxis,
00081 const uInt yAxis);
00082
00083
00084
00085 virtual ~LatticePADisplayData();
00086
00087
00088
00089 virtual String showValue(const Vector<Double> &world);
00090
00091
00092 virtual const IPosition dataShape();
00093 virtual const uInt dataDim();
00094 virtual const T dataValue(IPosition pos);
00095 virtual const Unit dataUnit();
00096
00097 virtual void setupElements() = 0;
00098 virtual void getMinAndMax();
00099
00100
00101 virtual const Bool maskValue(const IPosition &pos);
00102
00103
00104 virtual void setDefaultOptions();
00105
00106
00107
00108 virtual Bool setOptions(Record &rec, Record &recOut);
00109
00110
00111
00112
00113 virtual Record getOptions();
00114
00115
00116
00117
00118 virtual String className() { return String("LatticePADisplayData"); }
00119
00120 virtual WCResampleHandler *resampleHandler() { return itsResampleHandler; }
00121
00122
00123
00124 virtual Display::ComplexToRealMethod complexMode()
00125 { return itsComplexToRealMethod; }
00126 virtual void setComplexMode(Display::ComplexToRealMethod method)
00127 { itsComplexToRealMethod = method; }
00128
00129 virtual MaskedLattice<T> *maskedLattice()
00130 { return itsMaskedLatticePtr; }
00131
00132
00133
00134
00135 virtual Bool insertArray(Record& toGoInto, Vector<Float> toInsert, const String fieldname);
00136 virtual Bool insertFloat(Record& toGoInto, Float toInsert, const String fieldname);
00137
00138
00139 virtual Record getHist();
00140
00141
00142 virtual String getBrightnessUnits();
00143
00144
00145
00146
00147
00148
00149
00150
00151
00152
00153
00154
00155 static Bool useStriding(const IPosition& shape, IPosition& stride,
00156 uInt maxPixels=1000000u, uInt minPerAxis=20u);
00157
00158
00159 protected:
00160
00161
00162 virtual void SetUpBeamData_();
00163
00164
00165
00166
00167
00168 virtual void drawBeamEllipse_(WorldCanvas* wc);
00169
00170
00171
00172 private:
00173
00174
00175 ImageInterface<T>* itsBaseImagePtr;
00176
00177
00178 Array<T>* itsBaseArrayPtr;
00179
00180
00181 Record imageHistogram;
00182
00183
00184 Bool calcHist;
00185
00186
00187
00188 MaskedLattice<T>* itsMaskedLatticePtr;
00189
00190
00191 Bool itsDeleteMLPointer;
00192
00193
00194 LatticeStatistics<Float>* itsLatticeStatisticsPtr;
00195
00196
00197 ImageRegion* itsRegionPtr;
00198
00199
00200 WCLELMask* itsMaskPtr;
00201
00202
00203 Unit itsDataUnit;
00204
00205
00206 Display::ComplexToRealMethod itsComplexToRealMethod;
00207
00208
00209 String itsResample;
00210 String itsComplexMode;
00211
00212
00213
00214 Bool hasBeam_;
00215
00216 Double majoraxis_;
00217 Double minoraxis_;
00218 String majorunit_;
00219 String minorunit_;
00220 Double posangle_;
00221 String paunit_;
00222
00223 DParameterChoice* beamOnOff_;
00224 DParameterChoice* beamStyle_;
00225 DParameterChoice* beamColor_;
00226 DParameterRange<Int>* beamLineWidth_;
00227 DParameterRange<Float>* beamXCenter_;
00228 DParameterRange<Float>* beamYCenter_;
00229
00230
00231
00232
00233
00234 WCResampleHandler *itsResampleHandler;
00235
00236
00237 void updateLatticeStatistics();
00238
00239
00240 Bool updateHistogram(Record &rec, MaskedLattice<Complex> &pImage);
00241 Bool updateHistogram(Record &rec, ImageInterface<Float> &pImage);
00242 Bool updateHistogram(Record &rec, const Array<Complex>*);
00243 Bool updateHistogram(Record &rec, const Array<Float>*);
00244
00245 WCLELMask* makeMask (const RecordInterface& mask);
00246 ImageRegion* makeRegion (const RecordInterface& region);
00247 Bool isMaskDifferent (WCLELMask*& pMask);
00248 Bool isRegionDifferent (ImageRegion*& pRegion);
00249
00250
00251 Bool transferPreferences (CoordinateSystem& cSysInOut,
00252 const CoordinateSystem& cSysIn) const;
00253 };
00254
00255
00256 }
00257
00258 #ifndef AIPS_NO_TEMPLATE_SRC
00259 #include <display/DisplayDatas/LatticePADD.tcc>
00260
00261 #endif //# AIPS_NO_TEMPLATE_SRC
00262 #endif