casacore
ImageOpener.h
Go to the documentation of this file.
1//# ImageOpener.h: A class with static functions to open an image of any type
2//# Copyright (C) 2005
3//# Associated Universities, Inc. Washington DC, USA.
4//#
5//# This library is free software; you can redistribute it and/or modify it
6//# under the terms of the GNU Library General Public License as published by
7//# the Free Software Foundation; either version 2 of the License, or (at your
8//# option) any later version.
9//#
10//# This library is distributed in the hope that it will be useful, but WITHOUT
11//# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
12//# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
13//# License for more details.
14//#
15//# You should have received a copy of the GNU Library General Public License
16//# along with this library; if not, write to the Free Software Foundation,
17//# Inc., 675 Massachusetts Ave, Cambridge, MA 02139, USA.
18//#
19//# Correspondence concerning AIPS++ should be addressed as follows:
20//# Internet email: aips2-request@nrao.edu.
21//# Postal address: AIPS++ Project Office
22//# National Radio Astronomy Observatory
23//# 520 Edgemont Road
24//# Charlottesville, VA 22903-2475 USA
25//#
26//#
27//# $Id$
28
29#ifndef IMAGES_IMAGEOPENER_H
30#define IMAGES_IMAGEOPENER_H
31
32
33#include <casacore/casa/aips.h>
34#include <casacore/images/Images/MaskSpecifier.h>
35#include <casacore/casa/Containers/Block.h>
36#include <map>
37
38namespace casacore { //# NAMESPACE CASACORE - BEGIN
39
40//# Forward Declarations
41class LatticeBase;
42class LatticeExprNode;
43class JsonKVMap;
44
45// <summary>
46// Definition of image types and handlers
47// </summary>
48//
49// <use visibility=local>
50//
51// <reviewed reviewer="" date="yyyy/mm/dd" tests="" demos="">
52// </reviewed>
53//
54// <synopsis>
55// The class contains defines the possible image types.
56// It contains a registry containing functions to construct an image
57// based on its type. In this way any image can be used in the image package
58// without the need that the code must reside in the images package.
59// </synopsis>
60//
61// <motivation>
62// FITS and MIRIAD needed to be moved out of the images package.
63// </motivation>
64
65
67{
68public:
69// Define the possible image types.
71 // Casacore (former AIPS++)
73 // FITS
75 // Miriad
77 // Gipsy
79 // Classic AIPS
81 // Newstar
83 // HDF5
85 // ImageConcat
87 // ImageExpr
89 // ComponentListImage, CASA
91 // Unknown
93 };
94
95 // Return the type of an image with the given name. Will throw an
96 // exception if file does not exist.
97 static ImageTypes imageType (const String& fileName);
98
99 // Define the signature of a function opening an image.
100 // Each basic image class (like FITSImage) must have a static open function
101 // with this signature.
102 // They can be registered using registerOpenImageFunction.
103 // In this way a function like openImage can create any image object
104 // without the need that all image classes are in the images package.
105 // The LogIO object can be used for possible error reporting or logging.
106 typedef LatticeBase* OpenImageFunction (const String& fileName,
107 const MaskSpecifier&);
108
109 // Register an openImageFunction.
111
112 // Open an image in the file/table with the given name.
113 // The specified mask will be applied (default is default mask).
114 // A null pointer is returned for an unknown image type.
115 // Non-Casacore image types must have been registered to be known.
116 // Note that class ImageProxy has a function to open an image from a file
117 // or from an image expression.
118 static LatticeBase* openImage (const String& fileName,
119 const MaskSpecifier& = MaskSpecifier());
120
121 // Open a Casacore paged image of any data type.
122 static LatticeBase* openPagedImage (const String& fileName,
123 const MaskSpecifier& = MaskSpecifier());
124
125 // Open an HDF5 paged image of any data type.
126 static LatticeBase* openHDF5Image (const String& fileName,
127 const MaskSpecifier& = MaskSpecifier());
128
129 // Open a persistent image concatenation of any type.
130 static LatticeBase* openImageConcat (const String& fileName);
131
132 // Open a persistent image expression of any type.
133 // It reads the file written by ImageExpr::save.
134 static LatticeBase* openImageExpr (const String& fileName);
135
136 // Parse an image expression and return the ImageExpr<T> object for it.
137 // The block of nodes represents optional $i arguments in the expression.
138 // The JsonKVMap gives the keys found in a persistent image.expr file.
139 static LatticeBase* openExpr (const String& expr,
140 const Block<LatticeExprNode>& nodes,
141 const String& fileName = String());
142 static LatticeBase* openExpr (const String& expr,
143 const Block<LatticeExprNode>& nodes,
144 const String& fileName,
145 const JsonKVMap&);
146
147private:
148 // Mapping of the image type to an openImage function.
149 static std::map<ImageTypes,OpenImageFunction*> theirOpenFuncMap;
150};
151
152
153} //# NAMESPACE CASACORE - END
154
155#endif
simple 1-D array
Definition: Block.h:200
static LatticeBase * openExpr(const String &expr, const Block< LatticeExprNode > &nodes, const String &fileName, const JsonKVMap &)
static LatticeBase * openHDF5Image(const String &fileName, const MaskSpecifier &=MaskSpecifier())
Open an HDF5 paged image of any data type.
static LatticeBase * openExpr(const String &expr, const Block< LatticeExprNode > &nodes, const String &fileName=String())
Parse an image expression and return the ImageExpr<T> object for it.
static LatticeBase * openImageExpr(const String &fileName)
Open a persistent image expression of any type.
static LatticeBase * openImage(const String &fileName, const MaskSpecifier &=MaskSpecifier())
Open an image in the file/table with the given name.
static std::map< ImageTypes, OpenImageFunction * > theirOpenFuncMap
Mapping of the image type to an openImage function.
Definition: ImageOpener.h:149
static LatticeBase * openImageConcat(const String &fileName)
Open a persistent image concatenation of any type.
static ImageTypes imageType(const String &fileName)
Return the type of an image with the given name.
LatticeBase * OpenImageFunction(const String &fileName, const MaskSpecifier &)
Define the signature of a function opening an image.
Definition: ImageOpener.h:106
static LatticeBase * openPagedImage(const String &fileName, const MaskSpecifier &=MaskSpecifier())
Open a Casacore paged image of any data type.
ImageTypes
Define the possible image types.
Definition: ImageOpener.h:70
@ AIPSPP
Casacore (former AIPS++)
Definition: ImageOpener.h:72
@ IMAGECONCAT
ImageConcat.
Definition: ImageOpener.h:86
@ CAIPS
Classic AIPS.
Definition: ImageOpener.h:80
@ IMAGEEXPR
ImageExpr.
Definition: ImageOpener.h:88
@ COMPLISTIMAGE
ComponentListImage, CASA.
Definition: ImageOpener.h:90
static void registerOpenImageFunction(ImageTypes, OpenImageFunction *)
Register an openImageFunction.
String: the storage and methods of handling collections of characters.
Definition: String.h:225
this file contains all the compiler specific defines
Definition: mainpage.dox:28