casa  $Rev:20696$
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
SliceSegment.qo.h
Go to the documentation of this file.
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 SLICE_SEGMENT_QO_H
00027 #define SLICE_SEGMENT_QO_H
00028 
00029 #include <QtGui/QFrame>
00030 #include <casa/BasicSL/String.h>
00031 #include <display/Slicer/SliceSegment.ui.h>
00032 #include <qwt_double_rect.h>
00033 
00034 class QwtPlot;
00035 class QwtPlotCurve;
00036 
00037 namespace casa {
00038 
00046 class SliceStatistics;
00047 class SegmentTracer;
00048 
00049 class SliceSegment : public QFrame {
00050     Q_OBJECT
00051 
00052 public:
00053     SliceSegment(int regionId, int index, QWidget *parent = 0);
00054     void addCurve( QwtPlot* plot, const QVector<double>& xValues, const QVector<double>& yValues );
00055     void setEndPointsWorld( double worldX1, double worldY1, double worldX2, double worldY2 );
00056     void setEndPointsPixel( int pixelX1, int pixelY1, int pixelX2, int pixelY2 );
00057     void setColor( QColor color );
00058     void setCurveWidth( int width );
00059     void updateEnds( const String& start, const String& end);
00060     QColor getCurveColor() const;
00061     void clearCurve();
00062     void updateStatistics( SliceStatistics* statistics );
00063     QwtPlot* getPlot();
00064     ~SliceSegment();
00065 
00066 signals:
00067         void statisticsSelected( int index );
00068 
00069 private:
00070         QString parseEndInfo( const String& info ) const;
00071         void resetCurveWidth();
00072         void setCurveColor();
00073         SliceSegment( const SliceSegment& other );
00074         SliceSegment operator=( const SliceSegment& other );
00075         std::pair<double,double> worldStart;
00076         std::pair<double,double> worldEnd;
00077         std::pair<int,int> pixelStart;
00078         std::pair<int,int> pixelEnd;
00079         int curveWidth;
00080         int regionId;
00081         int index;
00082 
00083     QColor defaultColor;
00084     QwtPlotCurve* plotCurve;
00085     SegmentTracer* segmentTracer;
00086     Ui::SliceSegmentClass ui;
00087 };
00088 
00089 }
00090 
00091 #endif // SLICESEGMENT_QO_H