00001
00002
00003
00004
00005
00006
00007
00008
00009
00011
00012
00013 #ifndef LTI_BBB_IMAGE_READER_H
00014 #define LTI_BBB_IMAGE_READER_H
00015
00016
00017 #include "lti_rawImageReader.h"
00018
00019
00020 #include <stdio.h>
00021
00022 LT_BEGIN_NAMESPACE(LizardTech)
00023
00024 class LTIBBBHeaderReader;
00025
00033 class LTIBBBImageReader : public LTIRawImageReader
00034 {
00035 LTI_REFERENCE_COUNTED_BOILERPLATE(LTIBBBImageReader);
00036 public:
00045 LT_STATUS initialize(const LTFileSpec& fileSpec, bool useWorldFile = true);
00046
00055 LT_STATUS initialize(const char* file, bool useWorldFile = true);
00056 };
00057
00058 #ifndef DOXYGEN_EXCLUDE
00059
00060 class LTIBBBHeaderReader
00061 {
00062 LT_DISALLOW_COPY_CONSTRUCTOR(LTIBBBHeaderReader);
00063
00064 public:
00065 LTIBBBHeaderReader(const LTFileSpec&);
00066 ~LTIBBBHeaderReader();
00067 LT_STATUS read();
00068
00069 public:
00070 int m_width;
00071 int m_height;
00072 LTIDataType m_dataType;
00073 LTIColorSpace m_colorSpace;
00074 int m_numBands;
00075 LTILayout m_layout;
00076 char* m_byteOrder;
00077 int m_numBits;
00078 LTIEndian m_endian;
00079
00080 double m_window;
00081 double m_level;
00082 double m_drMin;
00083 double m_drMax;
00084 bool m_hasWindow;
00085 bool m_hasLevel;
00086 bool m_hasDRMin;
00087 bool m_hasDRMax;
00088
00089 int m_bandgapbytes;
00090 int m_bandrowbytes;
00091 int m_totalrowbytes;
00092 int m_skipbytes;
00093
00094 bool m_hasUlxmap;
00095 bool m_hasUlymap;
00096 bool m_hasXllcorner;
00097 bool m_hasYllcorner;
00098 bool m_hasXllcenter;
00099 bool m_hasYllcenter;
00100 bool m_hasXdim;
00101 bool m_hasYdim;
00102 bool m_hasCellsize;
00103 double m_ulxmap;
00104 double m_ulymap;
00105 double m_xllcorner;
00106 double m_yllcorner;
00107 double m_xllcenter;
00108 double m_yllcenter;
00109 double m_xdim;
00110 double m_ydim;
00111 double m_cellsize;
00112
00113
00114 bool m_bFromImagine;
00115 char* m_projname;
00116 char* m_sphereName;
00117 char* m_units;
00118 int m_proZone;
00119 double* m_projParams;
00120 double m_sphereMajor;
00121 double m_sphereMinor;
00122 double m_sphereEccentricitySquared;
00123 double m_sphereRadius;
00124
00125 char* m_wkt;
00126 double* m_nodata;
00127 int m_nodataSize;
00128
00129 private:
00130 LT_STATUS init();
00131 LT_STATUS finish();
00132 LT_STATUS readLines();
00133 LT_STATUS readLine(int& offset_last, bool& done);
00134 LT_STATUS nextLine();
00135 LT_STATUS readInt(int&);
00136 LT_STATUS readDouble(double&);
00137 LT_STATUS readString(char*);
00138
00139 const LTFileSpec& m_fileSpec;
00140 FILE* m_fp;
00141 };
00142 #endif
00143
00144 LT_END_NAMESPACE(LizardTech)
00145
00146 #endif // LTI_BBB_IMAGE_READER_H