casa  $Rev:20696$
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
ComponentImager.h
Go to the documentation of this file.
00001 //# ComponentImager.h: this defines ComponentImager, which ...
00002 //# Copyright (C) 1999,2000,2003
00003 //# Associated Universities, Inc. Washington DC, USA.
00004 //#
00005 //# This library is free software; you can redistribute it and/or modify it
00006 //# under the terms of the GNU Library General Public License as published by
00007 //# the Free Software Foundation; either version 2 of the License, or (at your
00008 //# option) any later version.
00009 //#
00010 //# This library is distributed in the hope that it will be useful, but WITHOUT
00011 //# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
00012 //# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Library General Public
00013 //# License for more details.
00014 //#
00015 //# You should have received a copy of the GNU Library General Public License
00016 //# along with this library; if not, write to the Free Software Foundation,
00017 //# Inc., 675 Massachusetts Ave, Cambridge, MA 02139, USA.
00018 //#
00019 //# Correspondence concerning AIPS++ should be addressed as follows:
00020 //#        Internet email: aips2-request@nrao.edu.
00021 //#        Postal address: AIPS++ Project Office
00022 //#                        National Radio Astronomy Observatory
00023 //#                        520 Edgemont Road
00024 //#                        Charlottesville, VA 22903-2475 USA
00025 //#
00026 //#
00027 //# $Id: ComponentImager.h 20299 2008-04-03 05:56:44Z gervandiepen $
00028 //#! ========================================================================
00029 //#!                Attention!  Programmers read this!
00030 //#!
00031 //#! This file is a template to guide you in creating a header file
00032 //#! for your new class.   By following this template, you will create
00033 //#! a permanent reference document for your class, suitable for both
00034 //#! the novice client programmer, the seasoned veteran, and anyone in 
00035 //#! between.  It is essential that you write the documentation portions 
00036 //#! of this file with as much care as you do the source code.
00037 //#!
00038 //#! If you are unfamilar with the AIPS++ header style please refer to
00039 //#! template-class-h.
00040 //#!
00041 //#!                         Replacement Tokens
00042 //#!                         ------------------
00043 //#!
00044 //#! These are character strings enclosed in angle brackets, on a commented
00045 //#! line.  Two are found on the first line of this file:
00046 //#!
00047 //#!   <ClassFileName.h> <ClassName>
00048 //#!
00049 //#! You should remove the angle brackets, and replace the characters within
00050 //#! the brackets with names specific to your class.  Mimic the capitalization
00051 //#! and punctuation of the original.  For example, you would change
00052 //#!
00053 //#!   <ClassFileName.h>  to   LatticeIter.h
00054 //#!   <ClassName>        to   LatticeIterator
00055 //#!
00056 //#! Another replacement token will be found in the "include guard" just
00057 //#! a few lines below.
00058 //#!
00059 //#!  #define <AIPS_CLASSFILENAME_H>  to  #define AIPS_LATTICEITER_H
00060 //#!
00061 
00062 #ifndef IMAGES_COMPONENTIMAGER_H
00063 #define IMAGES_COMPONENTIMAGER_H
00064 
00065 #include <casa/aips.h>
00066 
00067 namespace casa { //# NAMESPACE CASA - BEGIN
00068 
00069 template <class T> class ImageInterface;
00070 class ComponentList;
00071 class Unit;
00072 class LogIO;
00073 
00074 // <summary>
00075 // </summary>
00076 
00077 // <use visibility=local>
00078 
00079 // <reviewed reviewer="" date="yyyy/mm/dd" tests="" demos="">
00080 // </reviewed>
00081 
00082 // <prerequisite>
00083 //   <li> ImageInterface
00084 //   <li> ComponentList
00085 // </prerequisite>
00086 //
00087 // <etymology>
00088 // </etymology>
00089 //
00090 // <synopsis>
00091 // Project the componentlist onto the image.  If any of the coordinate
00092 // transformations for a particular pixel fail (e.g. coordinate system
00093 // is not defined for that pixel) if the image has a writable mask, then those 
00094 // pixels will be masked, otherwise they are just zeroed.  Any pixels
00095 // that are already masked mask=F) will not have their values changed
00096 // (perhaps this behaviour should be changed).
00097 // </synopsis>
00098 //
00099 // <example>
00100 // </example>
00101 //
00102 // <motivation>
00103 // </motivation>
00104 
00105 class ComponentImager
00106 {
00107 public:
00108 
00109 // Project the componentlist onto the image.  If any of the coordinate
00110 // transformations for a particular pixel fail (e.g. coordinate system
00111 // is not defined for that pixel) if the image has a writable mask, then those 
00112 // pixels will be masked, otherwise they are just zeroed.  Any pixels
00113 // that are already masked mask=F) will not have their values changed
00114 // (perhaps this behaviour should be changed).
00115   static void project(ImageInterface<Float>& image, 
00116                       const ComponentList& list);
00117 };
00118 
00119 
00120 } //# NAMESPACE CASA - END
00121 
00122 #endif
00123 
00124