MrSID Decode SDK for Raster Reference Manual  9.5.4.4709
lti_bbbImageReader.h
Go to the documentation of this file.
00001 /* $Id$ */
00002 /* //////////////////////////////////////////////////////////////////////////
00003 //                                                                         //
00004 // This code is Copyright (c) 2004 LizardTech, Inc, 1008 Western Avenue,   //
00005 // Suite 200, Seattle, WA 98104.  Unauthorized use or distribution         //
00006 // prohibited.  Access to and use of this code is permitted only under     //
00007 // license from LizardTech, Inc.  Portions of the code are protected by    //
00008 // US and foreign patents and other filings. All Rights Reserved.          //
00009 //                                                                         //
00011 /* PUBLIC */
00012 
00013 #ifndef LTI_BBB_IMAGE_READER_H
00014 #define LTI_BBB_IMAGE_READER_H
00015 
00016 // lt_lib_mrsid_core
00017 #include "lti_rawImageReader.h"
00018 
00019 // system
00020 #include <stdio.h>  // for FILE*
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    // Imagine header data
00114    bool        m_bFromImagine; //indicates whether to display Imagine Metadata
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