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 #ifndef UTIL_H_
00026 #define UTIL_H_
00027 
00028 #include <QString>
00029 #include <casa/Arrays/Vector.h>
00030 #include <display/Display/DisplayCoordinateSystem.h>
00031 #include <imageanalysis/ImageAnalysis/PixelValueManipulatorData.h>
00032 #include <imageanalysis/ImageAnalysis/ImageCollapserData.h>
00033 
00034 class QWidget;
00035 
00036 namespace casa { 
00037 
00038         template <class T> class ImageInterface;
00039         class ImageRegion;
00040 
00041         class Util {
00042 
00043 
00044         public:
00045                 static const QString ORGANIZATION;
00046                 static const QString APPLICATION;
00047                 static void showUserMessage( QString& msg, QWidget* parent);
00048                 static double degMinSecToRadians( int degrees, int mins, float secs );
00049                 static double hrMinSecToRadians( int hours, int mins, float secs );
00050                 static QString toHTML( const QString& baseStr );
00051                 static int getCenter( const Vector<Double>& values, Double& mean );
00052                 static void getRa(double radians, int& raHour, int& raMin, double& raSec);
00053                 static void getDec(double radians, int& decDeg, int& decMin, double& decSec);
00054                 static void minMax( double& min, double& max, const Vector<Double>& values );
00055                 static QString toDegreeString( int hrs, int mins, double secs );
00056                 static QString toDecString( int hrs, int mins, double secs );
00057                 static void appendSign( double rad, QString& degreeString );
00058                 static QList<QString> getTitleCaseVariations( QString source );
00059                 static QString toTitleCase( QString word );
00060                 static String mainImageName( String path );
00061 
00065                 static QString stripBrackets( QString unitStr );
00066 
00071                 static QString stripFont( QString unitStr );
00072 
00073                 
00074                 
00075                 static int getTabularFrequencyAxisIndex(SHARED_PTR<const ImageInterface<Float> > img);
00076 
00077                 static Record getRegionRecord( String shape, const DisplayCoordinateSystem& cSys,
00078                                         const Vector<Double>& x, const Vector<Double>& y);
00079 
00080                 static std::pair<Vector<Float>,Vector<Float> > getProfile(SHARED_PTR<const casa::ImageInterface<Float> >& imagePtr,
00081                                 const Vector<Double>& x, const Vector<Double>& y, const String& shape,
00082                                 int tabularAxis, ImageCollapserData::AggregateType, String unit,
00083                                 const String& coordinateType,
00084                                 const Quantity *const restFreq=0, const String& frame="");
00093                 static Record getEllipticalRegion3D( const DisplayCoordinateSystem& cSys,
00094                                                 const Vector<Double>& x, const Vector<Double>& y,
00095                                                 int channelMin, int channelMax, int spectralAxisNumber);
00096 
00106                 static Record getPolygonalRegion3D( const DisplayCoordinateSystem& cSys,
00107                                                 const Vector<Double>& x, const Vector<Double>& y,
00108                                                 int channelMin, int channelMax, int spectralAxisNumber);
00109 
00117                 static ImageRegion* getEllipsoid(const DisplayCoordinateSystem& cSys,
00118                                                         const Vector<Double>& x, const Vector<Double>& y);
00126                 static ImageRegion* getPolygon(const DisplayCoordinateSystem& cSys,
00127                                         const Vector<Double>& x, const Vector<Double>& y);
00128 
00133                 static bool arrayEquals( const Vector<Double>& a, const Vector<Double>& b );
00134         private:
00135                 Util();
00136                 virtual ~Util();
00137                 static double toRadians( double degrees );
00138                 static double toDecimalDegrees( int hrs, int mins, float seconds );
00139                 static Record make3DRegion( const DisplayCoordinateSystem& cSys, ImageRegion* shape3D,
00140                                         int channelMin, int channelMax, int spectralAxisNumber );
00141 
00142                 static const double PI;
00143                 static const double TIME_CONV;
00144                 static const double RAD_DEGREE_CONVERSION;
00145 
00146         };
00147 }
00148 #endif