lsst.afw
g3a5ebb7d8a+28b83bf6a5
Toggle main menu visibility
Loading...
Searching...
No Matches
src
image
DecoratedImage.cc
Go to the documentation of this file.
1
/*
2
* LSST Data Management System
3
* Copyright 2008, 2009, 2010 LSST Corporation.
4
*
5
* This product includes software developed by the
6
* LSST Project (http://www.lsst.org/).
7
*
8
* This program is free software: you can redistribute it and/or modify
9
* it under the terms of the GNU General Public License as published by
10
* the Free Software Foundation, either version 3 of the License, or
11
* (at your option) any later version.
12
*
13
* This program is distributed in the hope that it will be useful,
14
* but WITHOUT ANY WARRANTY; without even the implied warranty of
15
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
* GNU General Public License for more details.
17
*
18
* You should have received a copy of the LSST License Statement and
19
* the GNU General Public License along with this program. If not,
20
* see <http://www.lsstcorp.org/LegalNotices/>.
21
*/
22
23
/*
24
* An Image with associated metadata
25
*/
26
#include <cstdint>
27
#include <iostream>
28
#include "
lsst/afw/fits.h
"
29
#include "
lsst/afw/image/Image.h
"
30
31
namespace
lsst
{
32
namespace
afw
{
33
namespace
image
{
34
35
template
<
typename
PixelT>
36
void
DecoratedImage<PixelT>::init() {
37
// safer to initialize a smart pointer as a named variable
38
std::shared_ptr<daf::base::PropertySet> metadata(
new
daf::base::PropertyList);
39
setMetadata(metadata);
40
_gain = 0;
41
}
42
43
template
<
typename
PixelT>
44
DecoratedImage<PixelT>::DecoratedImage
(
lsst::geom::Extent2I
const
& dimensions)
45
: _image(new
Image
<PixelT>(dimensions)) {
46
init();
47
}
48
template
<
typename
PixelT>
49
DecoratedImage<PixelT>::DecoratedImage
(
lsst::geom::Box2I
const
& bbox) : _image(new
Image
<PixelT>(bbox)) {
50
init();
51
}
52
template
<
typename
PixelT>
53
DecoratedImage<PixelT>::DecoratedImage
(
std::shared_ptr
<
Image<PixelT>
> rhs) : _image(rhs) {
54
init();
55
}
56
template
<
typename
PixelT>
57
DecoratedImage<PixelT>::DecoratedImage
(
const
DecoratedImage
& src,
const
bool
deep)
58
: _image(new
Image
<PixelT>(*src._image, deep)), _gain(src._gain) {
59
setMetadata
(src.
getMetadata
());
60
}
61
template
<
typename
PixelT>
62
DecoratedImage<PixelT>
&
DecoratedImage<PixelT>::operator=
(
const
DecoratedImage
& src) {
63
DecoratedImage
tmp(src);
64
swap
(tmp);
// See Meyers, Effective C++, Item 11
65
66
return
*
this
;
67
}
68
69
template
<
typename
PixelT>
70
void
DecoratedImage<PixelT>::swap
(
DecoratedImage
& rhs) {
71
using
std::swap
;
// See Meyers, Effective C++, Item 25
72
73
swap
(_image, rhs._image);
// just swapping the pointers
74
swap
(_gain, rhs._gain);
75
}
76
77
template
<
typename
PixelT>
78
void
swap
(
DecoratedImage<PixelT>
& a,
DecoratedImage<PixelT>
& b) {
79
a.
swap
(b);
80
}
81
82
//
83
// FITS code
84
//
85
template
<
typename
PixelT>
86
DecoratedImage<PixelT>::DecoratedImage
(
const
std::string
& fileName,
const
int
hdu,
87
lsst::geom::Box2I
const
& bbox,
ImageOrigin
const
origin,
88
bool
allowUnsafe) {
89
init();
90
_image =
std::shared_ptr<Image<PixelT>
>(
91
new
Image<PixelT>
(fileName, hdu,
getMetadata
(), bbox, origin, allowUnsafe));
92
}
93
94
template
<
typename
PixelT>
95
void
DecoratedImage<PixelT>::writeFits
(
std::string
const
& fileName,
96
daf::base::PropertySet
const
* metadata,
97
std::string
const
& mode)
const
{
98
writeFits
(fileName,
nullptr
, metadata, mode);
99
}
100
101
template
<
typename
PixelT>
102
void
DecoratedImage<PixelT>::writeFits
(
std::string
const
& fileName,
fits::CompressionOptions
const
* options,
103
daf::base::PropertySet
const
* metadata_i,
104
std::string
const
& mode)
const
{
105
std::shared_ptr<daf::base::PropertySet>
metadata;
106
107
if
(metadata_i) {
108
metadata =
getMetadata
()->deepCopy();
109
metadata->combine(*metadata_i);
110
}
else
{
111
metadata =
getMetadata
();
112
}
113
114
getImage
()->writeFits(fileName, options, mode, metadata.
get
());
115
}
116
117
118
//
119
// Explicit instantiations
120
//
121
template
class
DecoratedImage<std::uint16_t>
;
122
template
class
DecoratedImage<int>
;
123
template
class
DecoratedImage<float>
;
124
template
class
DecoratedImage<double>
;
125
template
class
DecoratedImage<std::uint64_t>
;
126
}
// namespace image
127
}
// namespace afw
128
}
// namespace lsst
std::string
lsst::afw::image::DecoratedImage
A container for an Image and its associated metadata.
Definition
Image.h:406
lsst::afw::image::DecoratedImage::DecoratedImage
DecoratedImage(const lsst::geom::Extent2I &dimensions=lsst::geom::Extent2I())
Create an image of the specified size.
Definition
DecoratedImage.cc:44
lsst::afw::image::DecoratedImage::operator=
DecoratedImage & operator=(const DecoratedImage &image)
Assignment operator.
Definition
DecoratedImage.cc:62
lsst::afw::image::DecoratedImage::swap
void swap(DecoratedImage &rhs)
Definition
DecoratedImage.cc:70
lsst::afw::image::DecoratedImage::setMetadata
void setMetadata(std::shared_ptr< lsst::daf::base::PropertySet > metadata)
Definition
Image.h:462
lsst::afw::image::DecoratedImage::writeFits
void writeFits(std::string const &fileName, daf::base::PropertySet const *metadata=nullptr, std::string const &mode="w") const
Write a FITS file.
Definition
DecoratedImage.cc:95
lsst::afw::image::DecoratedImage::getMetadata
std::shared_ptr< lsst::daf::base::PropertySet > getMetadata() const
Definition
Image.h:461
lsst::afw::image::DecoratedImage::getImage
std::shared_ptr< Image< PixelT > > getImage()
Return a shared_ptr to the DecoratedImage's Image.
Definition
Image.h:507
lsst::afw::image::Image
A class to represent a 2-dimensional array of pixels.
Definition
Image.h:51
lsst::daf::base::PropertySet
lsst::geom::Box2I
fits.h
std::shared_ptr::get
T get(T... args)
Image.h
lsst::afw::image
Definition
imageAlgorithm.dox:1
lsst::afw::image::ImageOrigin
ImageOrigin
Definition
ImageBase.h:94
lsst::afw::image::swap
void swap(Image< PixelT > &a, Image< PixelT > &b)
Definition
Image.cc:443
lsst::afw
Definition
imageAlgorithm.dox:1
lsst::geom::Extent2I
Extent< int, 2 > Extent2I
lsst
std::shared_ptr
lsst::afw::fits::CompressionOptions
Options controlling image compression with FITS.
Definition
fitsCompression.h:100
std::swap
T swap(T... args)
Generated on
for lsst.afw by
1.17.0