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