casa  5.7.0-16
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
RegionBox.h
Go to the documentation of this file.
1 //# Copyright (C) 2005
2 //# Associated Universities, Inc. Washington DC, USA.
3 //#
4 //# This library is free software; you can redistribute it and/or modify it
5 //# under the terms of the GNU Library General Public License as published by
6 //# the Free Software Foundation; either version 2 of the License, or (at your
7 //# option) any later version.
8 //#
9 //# This library is distributed in the hope that it will be useful, but WITHOUT
10 //# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 //# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
12 //# License for more details.
13 //#
14 //# You should have received a copy of the GNU Library General Public License
15 //# along with this library; if not, write to the Free Software Foundation,
16 //# Inc., 675 Massachusetts Ave, Cambridge, MA 02139, USA.
17 //#
18 //# Correspondence concerning AIPS++ should be addressed as follows:
19 //# Internet email: aips2-request@nrao.edu.
20 //# Postal address: AIPS++ Project Office
21 //# National Radio Astronomy Observatory
22 //# 520 Edgemont Road
23 //# Charlottesville, VA 22903-2475 USA
24 //#
25 
26 #ifndef REGIONBOX_H_
27 #define REGIONBOX_H_
28 
29 #include <QList>
30 #include <QString>
31 #include <casa/Arrays/Vector.h>
32 
33 namespace casa {
34 
35  class RegionBox {
36  public:
37  RegionBox(const QList<int> &pixel_x, const QList<int> &pixel_y);
38  QString toString(const casacore::Vector<int>& imageBLC, const casacore::Vector<int>& imageTRC) const;
39  QString toStringLabelled(const casacore::Vector<int>& imageBLC, const casacore::Vector<int>& imageTRC) const;
40 
41  void update( const QList<int> & pixelX, const QList<int> & pixelY );
42  bool isInBox( double valueX, double valueY ) const;
43  virtual ~RegionBox();
44  private:
45  void clear();
46  //Code was crashing when the region box bounds were bigger than the
47  //image bounds. The actualBLC/TRC methods choose smaller region boxes
48  //in such cases.
49  QVector<int> getActualBLC( const casacore::Vector<int>& imageBLC, const casacore::Vector<int>& imageTRC, bool* valid) const;
50  QVector<int> getActualTRC( const casacore::Vector<int>& imageBLC, const casacore::Vector<int>& imageTRC, bool* valid ) const;
51  bool isInImage( const QVector<int>& coords, const casacore::Vector<int>& imageBLC,
52  const casacore::Vector<int>& imageTRC ) const;
53  void initBox( const QList<int> & pixelX, const QList<int>& pixelY );
54  QList<int> regionBoxBLC;
55  QList<int> regionBoxTRC;
56  };
57 
58 } /* namespace casa */
59 #endif /* REGIONBOX_H_ */
QString toString(const casacore::Vector< int > &imageBLC, const casacore::Vector< int > &imageTRC) const
QVector< int > getActualTRC(const casacore::Vector< int > &imageBLC, const casacore::Vector< int > &imageTRC, bool *valid) const
QList< int > regionBoxTRC
Definition: RegionBox.h:55
QVector< int > getActualBLC(const casacore::Vector< int > &imageBLC, const casacore::Vector< int > &imageTRC, bool *valid) const
Code was crashing when the region box bounds were bigger than the image bounds.
virtual ~RegionBox()
void initBox(const QList< int > &pixelX, const QList< int > &pixelY)
void update(const QList< int > &pixelX, const QList< int > &pixelY)
QString toStringLabelled(const casacore::Vector< int > &imageBLC, const casacore::Vector< int > &imageTRC) const
QList< int > regionBoxBLC
Definition: RegionBox.h:54
bool isInBox(double valueX, double valueY) const
RegionBox(const QList< int > &pixel_x, const QList< int > &pixel_y)
bool isInImage(const QVector< int > &coords, const casacore::Vector< int > &imageBLC, const casacore::Vector< int > &imageTRC) const