Isis Developer Reference
Image.h
Go to the documentation of this file.
1
2#ifndef Image_H
3#define Image_H
26#include <QObject>
27
28#include <QString>
29
30#include "Angle.h"
31#include "Distance.h"
32#include "FileName.h"
33#include "XmlStackedHandler.h"
34
35#include <SpiceUsr.h>
36#include <SpiceZfc.h>
37#include <SpiceZmc.h>
38
39class QUuid;
40class QMutex;
41class QXmlStreamWriter;
42
43namespace geos {
44 namespace geom {
45 class MultiPolygon;
46 }
47}
48
49namespace Isis {
50 class Cube;
51 class FileName;
52 class ImageDisplayProperties;
53 class Project;
54 class PvlObject;
55 class XmlStackedHandlerReader;
56
107 class Image : public QObject {
108 Q_OBJECT
109 public:
110 explicit Image(QString imageFileName, QObject *parent = 0);
111 explicit Image(Cube *imageCube, QObject *parent = 0);
112 explicit Image(Cube *imageCube, geos::geom::MultiPolygon *footprint, QString id,
113 QObject *parent = 0);
114 Image(FileName imageFolder, XmlStackedHandlerReader *xmlReader, QObject *parent = 0);
115 ~Image();
116
117 void fromPvl(const PvlObject &pvl);
118 PvlObject toPvl() const;
119
120 bool isFootprintable() const;
121 Cube *cube();
122 void closeCube();
125 QString fileName() const;
126 QString observationNumber();
127 QString serialNumber();
128 geos::geom::MultiPolygon *footprint();
129 const geos::geom::MultiPolygon *footprint() const;
130 void setId(QString id);
131
132 bool initFootprint(QMutex *cameraMutex);
133
134 double aspectRatio() const;
135 QString id() const;
136 double resolution() const;
137 Angle emissionAngle() const;
138 Angle incidenceAngle() const;
139 double lineResolution() const;
140 Distance localRadius() const;
141 Angle northAzimuth() const;
142 Angle phaseAngle() const;
143 double sampleResolution() const;
144
145 void copyToNewProjectRoot(const Project *project, FileName newProjectRoot);
146 void deleteFromDisk();
147 void save(QXmlStreamWriter &stream, const Project *project, FileName newProjectRoot) const;
148
149 public slots:
150 void updateFileName(Project *);
151
152 private:
153 geos::geom::MultiPolygon *createFootprint(QMutex *cameraMutex);
154 void initCamStats();
155 void initQuickFootprint();
156
157
158 private:
172 class XmlHandler : public XmlStackedHandler {
173 public:
174 XmlHandler(Image *image, FileName imageFolder);
175
176 virtual bool startElement(const QString &namespaceURI, const QString &localName,
177 const QString &qName, const QXmlAttributes &atts);
178 virtual bool characters(const QString &ch);
179 virtual bool endElement(const QString &namespaceURI, const QString &localName,
180 const QString &qName);
181
182 private:
183 Q_DISABLE_COPY(XmlHandler);
184
185 Image *m_image;
186 FileName m_imageFolder;
187 QString m_characters;
188
189 };
190
191 private:
192 Image(const Image &other);
193 Image &operator=(const Image &rhs);
194
195 SpiceInt *m_bodyCode;
199 // QString *m_name; //!< Name of the target
200
201
206 Cube *m_cube;
207
211 ImageDisplayProperties *m_displayProperties;
212
216 QString m_fileName;
217
221 QString m_instrumentId;
222
226 QString m_observationNumber;
227
231 QString m_serialNumber;
232
236 QString m_spacecraftName;
237
241 geos::geom::MultiPolygon *m_footprint;
245 QUuid *m_id;
246
247 double m_aspectRatio;
248 double m_resolution;
249 Angle m_emissionAngle;
250 Angle m_incidenceAngle;
251 double m_lineResolution;
252 double m_sampleResolution;
253 Distance m_localRadius;
254 Angle m_northAzimuth;
255 Angle m_phaseAngle;
256
257 };
258 // TODO: add QDataStream >> and << ???
259}
260
262
263#endif
Q_DECLARE_METATYPE(Isis::Image *)
Defines an angle and provides unit conversions.
Definition Angle.h:45
IO Handler for Isis Cubes.
Definition Cube.h:168
Distance measurement, usually in meters.
Definition Distance.h:34
File name manipulation and expansion.
Definition FileName.h:100
This is the GUI communication mechanism for cubes.
Definition ImageDisplayProperties.h:85
This represents a cube in a project-based GUI interface.
Definition Image.h:107
Cube * cube()
Get the Cube pointer associated with this display property.
Definition Image.cpp:287
Angle incidenceAngle() const
Get the incidence angle of this image, as calculated and attached by camstats.
Definition Image.cpp:475
void copyToNewProjectRoot(const Project *project, FileName newProjectRoot)
Copy the cub/ecub files associated with this image into the new project.
Definition Image.cpp:534
void setId(QString id)
Override the automatically generated ID with the given ID.
Definition Image.cpp:383
Angle phaseAngle() const
Get the phase angle of this image, as calculated and attached by camstats.
Definition Image.cpp:515
void closeCube()
Cleans up the Cube pointer.
Definition Image.cpp:307
Distance localRadius() const
Get the local radius of this image, as calculated and attached by camstats.
Definition Image.cpp:495
geos::geom::MultiPolygon * footprint()
Get the footprint of this image (if available).
Definition Image.cpp:374
QString serialNumber()
Returns the serial number of the Cube.
Definition Image.cpp:361
~Image()
Clean up this image.
Definition Image.cpp:161
Angle emissionAngle() const
Get the emission angle of this image, as calculated and attached by camstats.
Definition Image.cpp:465
void updateFileName(Project *)
Change the on-disk file name for this cube to be where the image ought to be in the given project.
Definition Image.cpp:691
double lineResolution() const
Get the line resolution of this image, as calculated and attached by camstats.
Definition Image.cpp:485
bool isFootprintable() const
Test to see if it's possible to create a footprint from this image.
Definition Image.cpp:253
void save(QXmlStreamWriter &stream, const Project *project, FileName newProjectRoot) const
Write the Image properties out to an XML file.
Definition Image.cpp:626
double aspectRatio() const
Get the aspect ratio of this image, as calculated and attached by camstats.
Definition Image.cpp:436
PvlObject toPvl() const
Convert this Image to PVL.
Definition Image.cpp:226
Image(QString imageFileName, QObject *parent=0)
Create an image from a cube file on disk.
Definition Image.cpp:42
ImageDisplayProperties * displayProperties()
Get the display (GUI) properties (information) associated with this image.
Definition Image.cpp:320
Angle northAzimuth() const
Get the north azimuth of this image, as calculated and attached by camstats.
Definition Image.cpp:505
QString observationNumber()
Returns the observation number of the Cube.
Definition Image.cpp:349
QString fileName() const
Get the file name of the cube that this image represents.
Definition Image.cpp:340
QString id() const
Get a unique, identifying string associated with this image.
Definition Image.cpp:445
double resolution() const
Get the resolution of this image, as calculated and attached by camstats.
Definition Image.cpp:455
void fromPvl(const PvlObject &pvl)
Read the image settings from a Pvl.
Definition Image.cpp:194
bool initFootprint(QMutex *cameraMutex)
Calculate a footprint for this image.
Definition Image.cpp:409
void deleteFromDisk()
Delete the image data from disk.
Definition Image.cpp:586
double sampleResolution() const
Get the sample resolution of this image, as calculated and attached by camstats.
Definition Image.cpp:525
The main project for ipce.
Definition Project.h:289
Contains Pvl Groups and Pvl Objects.
Definition PvlObject.h:61
XML Handler that parses XMLs in a stack-oriented way.
Definition XmlStackedHandler.h:118
Manage a stack of content handlers for reading XML files.
Definition XmlStackedHandlerReader.h:30
This is free and unencumbered software released into the public domain.
Definition Apollo.h:16
Definition Image.h:43