Isis 3 Programmer Reference
ProcessImport.h
Go to the documentation of this file.
1 #ifndef ProcessImport_h
2 #define ProcessImport_h
3 
25 #include <string>
26 
27 #include "Buffer.h"
28 #include "CubeAttribute.h"
29 #include "EndianSwapper.h"
30 #include "JP2Decoder.h"
31 #include "PixelType.h"
32 #include "Process.h"
34 #include "SpecialPixel.h"
35 
36 namespace Isis {
170  class ProcessImport : public Isis::Process {
171  public:
172  enum VAXDataType {
173  VAX_REAL,
174  VAX_INT
175  };
176 
177 
178  enum VAXSpecialPixel {
179  VAX_MIN4,
180  VAX_NULL4,
181  VAX_LRS4,
182  VAX_LIS4,
183  VAX_HIS4,
184  VAX_HRS4
185  };
186 
187  ProcessImport();
188  virtual ~ProcessImport();
189 
190  using Isis::Process::StartProcess; // make parent functions visable
191  virtual void StartProcess();
192  virtual void StartProcess(void funct(Isis::Buffer &out));
193  void SetInputFile(const QString &file);
194  QString InputFile();
195 
196  // SetOutputCube() is not virtual in the Process class, so the following
197  // definitions for this method are the only ones that are allowed for
198  // ProcessImport objects and child objects
199 
200  using Isis::Process::SetOutputCube; // make parent functions visable
201  Isis::Cube *SetOutputCube(const QString &parameter);
202  virtual Isis::Cube *SetOutputCube(const QString &fname,
204 
205  void SetPixelType(const Isis::PixelType type);
211  return p_pixelType;
212  }
213 
214 
215  void SetDimensions(const int ns, const int nl, const int nb);
216 
221  int Samples() {
222  return p_ns;
223  }
224 
225 
230  int Lines() {
231  return p_nl;
232  }
233 
234 
239  int Bands() {
240  return p_nb;
241  }
242 
243 
244  void SetByteOrder(const Isis::ByteOrder order);
245 
251  return p_byteOrder;
252  }
253 
254  bool IsVAXSpecial(unsigned int *vax, VAXSpecialPixel pix);
255  double VAXConversion(void *ibuf);
256  void SetSuffixOffset(int samples,int lines, int coreBands, int itemBytes);
257  void SetSuffixPixelType(const Isis::PixelType type);
258  void SetVAXConvert(const bool vax_convert);
259 
260  void SetFileHeaderBytes(const int bytes);
261  void SetFileTrailerBytes(const int bytes);
262  void SetDataHeaderBytes(const int bytes);
263  void SetDataTrailerBytes(const int bytes);
264  void SetDataPrefixBytes(const int bytes);
265  void SetDataSuffixBytes(const int bytes);
266  void SaveFileHeader();
267  void SaveFileTrailer();
268  void SaveDataHeader();
269  void SaveDataTrailer();
270  void SaveDataPrefix();
271  void SaveDataSuffix();
272 
273  int FileHeaderBytes() const;
274  int FileTrailerBytes() const;
275  int DataHeaderBytes() const;
276  int DataTrailerBytes() const;
277  int DataPrefixBytes() const;
278  int DataSuffixBytes() const;
279 
280  char *FileHeader();
281  char *FileTrailer();
282  std::vector<char *> DataHeader();
283  std::vector<char *> DataTrailer();
284  std::vector<std::vector<char *> > DataPrefix();
285  std::vector<std::vector<char *> > DataSuffix();
286 
291  enum Interleave {
293  JP2,
294  BSQ,
297  BIL,
305  };
306 
307 
309  Interleave Organization() const;
310 
311  void SetBase(const double base);
312  void SetMultiplier(const double mult);
313  void SetBase(const std::vector<double> base);
314  void SetMultiplier(const std::vector<double> mult);
315 
316  void SetSpecialValues(const double null, const double lrs,
317  const double lis, const double hrs,
318  const double his);
319  void SetNull(const double null_min, const double null_max);
320  void SetLRS(const double lrs_min, const double lrs_max);
321  void SetLIS(const double lis_min, const double lis_max);
322  void SetHRS(const double hrs_min, const double hrs_max);
323  void SetHIS(const double his_min, const double his_max);
324 
325  double TestPixel(const double pixel);
326 
327  void ProcessBsq(void funct(Isis::Buffer &out) = NULL);
328  void ProcessBil(void funct(Isis::Buffer &out) = NULL);
329  void ProcessBip(void funct(Isis::Buffer &out) = NULL);
330  void ProcessJp2(void funct(Isis::Buffer &out) = NULL);
331 
332  void CheckPixelRange(QString pixelName, double min, double max);
333 
334 #if 0
335  void AddImportLabel(Isis::Pvl &importLab);
336  void AddLabel(Isis::Pvl &label);
337 #endif
338 
339 
340  private:
341  QString p_inFile;
343 
345  int p_ns;
346  int p_nl;
347  int p_nb;
349 
388  char *p_fileHeader;
389  std::vector<char *>p_dataHeader;
390  std::vector<char *>p_dataTrailer;
391  std::vector<std::vector<char *> >p_dataPre;
392  std::vector<std::vector<char *> >p_dataPost;
394 
395  bool p_vax_convert;
396 
404  std::vector<double> p_base;
408  std::vector<double> p_mult;
413  double p_null_min;
417  double p_null_max;
421  double p_hrs_min;
425  double p_hrs_max;
429  double p_his_min;
433  double p_his_max;
437  double p_lrs_min;
441  double p_lrs_max;
445  double p_lis_min;
449  double p_lis_max;
452  };
453 };
454 #endif
Buffer for reading and writing cube data.
Definition: Buffer.h:69
int p_dataHeaderBytes
Number of bytes of non-image data after the file header and before the image data of each data block...
void SaveDataTrailer()
This method marks the data block trailers to be saved.
double TestPixel(const double pixel)
Tests the pixel.
bool p_saveFileTrailer
Flag indicating whether to save the file trailer or not.
virtual ~ProcessImport()
Destroys the Import object.
double p_null_max
The pixel value which is the upper bound of NULL data.
bool p_saveFileHeader
Flag indicating whether to save the file header or not.
std::vector< double > p_mult
An array containing the core multiplier for each band.
void SetFileTrailerBytes(const int bytes)
This method sets the number of bytes in the trailer of a file.
std::vector< std::vector< char * > > p_dataPre
The data prefix.
bool p_saveDataPre
Flag indicating whether to save the data prefix or not.
int p_ns
Number of samples.
int DataSuffixBytes() const
This method returns the number of data duffix bytes.
int p_suffixData
The number of bytes past the file header bytes where the suffix data bands are stored.
int Bands()
Returns the number of bands.
int p_dataPreBytes
Number of bytes of non-image data preceding each data record, such as line prefix data in a band sequ...
bool p_saveDataPost
Flag indicating whether to save the data suffix or not.
void SetDataHeaderBytes(const int bytes)
This method sets the number of bytes in the header of each datablock of a file.
ByteOrder
Tests the current architecture for byte order.
Definition: Endian.h:59
int Samples()
Returns the number of samples.
void ProcessBip(void funct(Isis::Buffer &out)=NULL)
Function to process files stored as Band Interleaved by Pixel.
std::vector< char * > p_dataHeader
The data header.
std::vector< char * > DataHeader()
This method returns a pointer to the data header.
bool p_saveDataHeader
Flag indicating whether to save the data header or not.
void SetDataPrefixBytes(const int bytes)
This method sets the number of bytes at the beginning of each data record of a file.
double p_his_max
The pixel value which is the upper bound of HIS data.
std::vector< std::vector< char * > > p_dataPost
The data suffix.
int DataTrailerBytes() const
This method returns the number of data trailer bytes.
std::vector< double > p_base
An array containing the core base for each band.
void SetDataSuffixBytes(const int bytes)
This method sets the number of bytes at the end of each data record of a file.
double p_lis_min
The pixel value which is the lower bound of LIS data.
bool IsVAXSpecial(unsigned int *vax, VAXSpecialPixel pix)
Determines if the VAX encoded pixel value is special or not.
QString InputFile()
Sets the name of the input file to be read in the import StartProcess method and verifies its existan...
void SetDimensions(const int ns, const int nl, const int nb)
Sets the physical size of the input cube.
PixelType
Enumerations for Isis Pixel Types.
Definition: PixelType.h:43
std::vector< char * > DataTrailer()
This method returns a pointer to the data trailer.
void ProcessBsq(void funct(Isis::Buffer &out)=NULL)
Process the import data as a band sequential file.
Isis::ByteOrder ByteOrder()
Returns the byte order.
std::vector< char * > p_dataTrailer
The data trailer.
virtual void StartProcess(void funct())
In the base class, this method will invoked a user-specified function exactly one time...
Definition: Process.h:228
Jpeg 2000 Format (always band sequential).
char * p_fileHeader
The file header.
int p_nl
Number of lines.
Isis::PixelType PixelType()
Returns the pixel type.
void CheckPixelRange(QString pixelName, double min, double max)
Checks the special pixel range of the given against all other special pixel value ranges...
Interleave Organization() const
Gets the organization of the input cube.
void SaveDataSuffix()
This method marks the data suffix to be saved.
int DataHeaderBytes() const
This method returns the number of data header bytes.
void SetHIS(const double his_min, const double his_max)
Sets the range that will be considered Isis::Null.
double p_his_min
The pixel value which is the lower bound of HIS data.
Manipulate and parse attributes of output cube filenames.
double VAXConversion(void *ibuf)
Conversion routine which translates VAX_REAL to IEEE_REAL.
Isis::PixelType p_pixelType
Pixel type of input data.
std::vector< std::vector< char * > > DataPrefix()
This method returns a pointer to the data prefix.
void ProcessBil(void funct(Isis::Buffer &out)=NULL)
Function to process files stored as Band Interleaved by Line.
double p_null_min
The pixel value which is the lower bound of NULL data.
void SaveDataPrefix()
This method marks the data prefix to be saved.
int p_fileHeaderBytes
The number of bytes of non-image data at the beginning of a file.
virtual void StartProcess()
Process the input file and write it to the output.
Isis::Cube * SetOutputCube(const QString &parameter)
Create the output file.
ProcessImport()
Constructs an Import object.
double p_hrs_max
The pixel value which is the upper bound of HRS data.
void SetDataTrailerBytes(const int bytes)
This method sets the number of bytes in the trailer of each datablock of a file.
void SetSpecialValues(const double null, const double lrs, const double lis, const double hrs, const double his)
Sets a mapping of input pixel values to output special pixel values.
void SetPixelType(const Isis::PixelType type)
Sets the pixel type of the input file.
Container for cube-like labels.
Definition: Pvl.h:135
void SaveDataHeader()
This method marks the data block headers to be saved.
virtual Isis::Cube * SetOutputCube(const QString &parameter)
Allocates a user-specified output cube whose size matches the first input cube.
Definition: Process.cpp:266
int p_dataTrailerBytes
Number of bytes of non-image data after the image data of each data block, such as band trailer data ...
char * p_fileTrailer
The file trailer.
double p_hrs_min
The pixel value which is the lower bound of HRS data.
void SetOrganization(const ProcessImport::Interleave org)
Sets the organization of the input cube.
Interleave
This enum includes how the document should be read: by BSQ, BIL, BIP, JP2, or InterleaveUndefined.
Band Sequential Format (i.e.
void SaveFileTrailer()
This method marks the file trailer to be saved.
Band Interleaved By Pixel Format (i.e.
int FileHeaderBytes() const
This method returns the number of file header bytes.
double p_lrs_min
The pixel value which is the lower bound of LRS data.
void SetLRS(const double lrs_min, const double lrs_max)
Sets the range that will be considered Isis::Null.
QString p_inFile
Input file name.
int DataPrefixBytes() const
This method returns the number of data prefix bytes.
ProcessImport::Interleave p_organization
The format of the input file.
char * FileHeader()
This method returns a pointer to the file header.
int Lines()
Returns the number of lines.
char * FileTrailer()
This method returns a pointer to the file trailer.
Namespace for ISIS/Bullet specific routines.
Definition: Apollo.h:31
Byte swapper.
void SetMultiplier(const double mult)
Sets the core multiplier of the input cube.
int FileTrailerBytes() const
This method returns the number of file trailer bytes.
void ProcessJp2(void funct(Isis::Buffer &out)=NULL)
Function to process files containing compressed JPEG2000 data (which is always BSQ but is processed a...
void SetVAXConvert(const bool vax_convert)
Sets the VAX flag of the input cube.
Isis::ByteOrder p_byteOrder
Byte order of data.
void SetFileHeaderBytes(const int bytes)
This method sets the number of bytes in the header of a file.
int p_fileTrailerBytes
The number of bytes of non-image data at the end of a file.
void SetLIS(const double lis_min, const double lis_max)
Sets the range that will be considered Isis::Null.
void SetBase(const double base)
Sets the core base of the input cube.
Isis::PixelType p_suffixPixelType
The pixel type of the suffix data.
std::vector< std::vector< char * > > DataSuffix()
This method returns a pointer to the data suffix.
void SetNull(const double null_min, const double null_max)
Sets the range that will be considered Isis::Null.
void SetInputFile(const QString &file)
Sets the name of the input file to be read in the import StartProcess method and verifies its existan...
double p_lis_max
The pixel value which is the upper bound of LIS data.
double p_lrs_max
The pixel value which is the upper bound of LRS data.
Base class for all cube processing derivatives.
Definition: Process.h:158
int p_nb
Number of bands.
int p_dataPostBytes
Number of bytes of non-image data following each data record, such as line suffix data in a band sequ...
void SetByteOrder(const Isis::ByteOrder order)
Sets the byte order of the input file.
Band Interleaved By Line Format (i.e.
void SetHRS(const double hrs_min, const double hrs_max)
Sets the range that will be considered Isis::Null.
bool p_saveDataTrailer
Flag indicating whether to save the data trailer or not.
IO Handler for Isis Cubes.
Definition: Cube.h:170
void SaveFileHeader()
This method marks the file header to be saved.