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_hasXdim;
00097 bool m_hasYdim;
00098 double m_ulxmap;
00099 double m_ulymap;
00100 double m_xdim;
00101 double m_ydim;
00102
00103
00104 bool m_bFromImagine;
00105 char* m_projname;
00106 char* m_sphereName;
00107 char* m_units;
00108 int m_proZone;
00109 double* m_projParams;
00110 double m_sphereMajor;
00111 double m_sphereMinor;
00112 double m_sphereEccentricitySquared;
00113 double m_sphereRadius;
00114
00115 char* m_wkt;
00116 double* m_nodata;
00117
00118 private:
00119 LT_STATUS init();
00120 LT_STATUS finish();
00121 LT_STATUS readLines();
00122 LT_STATUS readLine(int& offset_last, bool& done);
00123 LT_STATUS nextLine();
00124 LT_STATUS readInt(int&);
00125 LT_STATUS readDouble(double&);
00126 LT_STATUS readString(char*);
00127
00128 const LTFileSpec& m_fileSpec;
00129 FILE* m_fp;
00130 };
00131 #endif
00132
00133 LT_END_NAMESPACE(LizardTech)
00134
00135 #endif // LTI_BBB_IMAGE_READER_H