casa
$Rev:20696$
|
00001 //# Copyright (C) 1994,1995,1996,1997,1998,1999,2000 00002 //# Associated Universities, Inc. Washington DC, USA. 00003 //# 00004 //# This library is free software; you can redistribute it and/or modify it 00005 //# under the terms of the GNU Library General Public License as published by 00006 //# the Free Software Foundation; either version 2 of the License, or (at your 00007 //# option) any later version. 00008 //# 00009 //# This library is distributed in the hope that it will be useful, but WITHOUT 00010 //# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 00011 //# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public 00012 //# License for more details. 00013 //# 00014 //# You should have received a copy of the GNU Library General Public License 00015 //# along with this library; if not, write to the Free Software Foundation, 00016 //# Inc., 675 Massachusetts Ave, Cambridge, MA 02139, USA. 00017 //# 00018 //# Correspondence concerning AIPS++ should be addressed as follows: 00019 //# Internet email: aips2-request@nrao.edu. 00020 //# Postal address: AIPS++ Project Office 00021 //# National Radio Astronomy Observatory 00022 //# 520 Edgemont Road 00023 //# Charlottesville, VA 22903-2475 USA 00024 //# 00025 00026 #ifndef SLICER_WORKER_H_ 00027 #define SLICER_WORKER_H_ 00028 00029 #include <casa/Arrays/Vector.h> 00030 #include <QVector> 00031 #include <QTextStream> 00032 00033 namespace casa { 00034 00035 class ImageAnalysis; 00036 class Record; 00037 class SliceStatistics; 00038 00044 class SliceWorker { 00045 00046 public: 00047 SliceWorker( int id ); 00048 void setImageAnalysis( ImageAnalysis* analysis ); 00049 void setVertices( const QList<int>& xValues, const QList<int>& yValues, 00050 const QList<double>& xValuesWorld, const QList<double>& yValuesWorld); 00051 void setAxes( const Vector<Int>& axes ); 00052 void setCoords( const Vector<Int>& coords ); 00053 void setSampleCount( int count ); 00054 00055 void setMethod( const String& method ); 00056 00057 void toAscii( QTextStream& stream, SliceStatistics* statistics ) const; 00058 void compute(); 00059 int getSegmentCount() const; 00060 QVector<double> getPixels(int index) const; 00061 QVector<double> getData( int index, SliceStatistics* statistics ) const; 00062 virtual ~SliceWorker(); 00063 00064 private: 00065 SliceWorker( const SliceWorker& other ); 00066 SliceWorker& operator=( const SliceWorker other ); 00067 00068 double getDistance( double x, double y ) const; 00069 QVector<double> interpolate( double start, double end, 00070 const QVector<double>& values ) const; 00071 void clearResults(); 00072 00073 QVector<double> getValues( int index, const QVector<double>& pixels, SliceStatistics* statistic ) const; 00074 void computeSlice( const Vector<double>& xValues, 00075 const Vector<double>& yValues ); 00076 ImageAnalysis* imageAnalysis; 00077 QList<Record*> sliceResults; 00078 Vector<Double> verticesX; 00079 Vector<Double> verticesY; 00080 Vector<Double> verticesXWorld; 00081 Vector<Double> verticesYWorld; 00082 00083 Vector<Int> axes; 00084 Vector<Int> coords; 00085 00086 int sampleCount; 00087 int id; 00088 String method; 00089 }; 00090 00091 } /* namespace casa */ 00092 #endif /* SLICER_H_ */