- Main Page
- Related Pages
- Classes
- Files

- File List
- File Members

# gdaljp2metadata.h

    00001 /******************************************************************************
    00002  * $Id: gdaljp2metadata.h 11873 2007-08-11 17:37:43Z mloskot $
    00003  *
    00004  * Project:  GDAL
    00005  * Purpose:  JP2 Box Reader (and GMLJP2 Interpreter)
    00006  * Author:   Frank Warmerdam, warmerdam@pobox.com
    00007  *
    00008  ******************************************************************************
    00009  * Copyright (c) 2005, Frank Warmerdam <warmerdam@pobox.com>
    00010  *
    00011  * Permission is hereby granted, free of charge, to any person obtaining a
    00012  * copy of this software and associated documentation files (the "Software"),
    00013  * to deal in the Software without restriction, including without limitation
    00014  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
    00015  * and/or sell copies of the Software, and to permit persons to whom the
    00016  * Software is furnished to do so, subject to the following conditions:
    00017  *
    00018  * The above copyright notice and this permission notice shall be included
    00019  * in all copies or substantial portions of the Software.
    00020  *
    00021  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
    00022  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    00023  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
    00024  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    00025  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
    00026  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
    00027  * DEALINGS IN THE SOFTWARE.
    00028  ****************************************************************************/
    00029
    00030 #ifndef GDAL_JP2READER_H_INCLUDED
    00031 #define GDAL_JP2READER_H_INCLUDED
    00032
    00033 #include "cpl_conv.h"
    00034 #include "cpl_vsi.h"
    00035 #include "gdal.h"
    00036
    00037 /************************************************************************/
    00038 /*                              GDALJP2Box                              */
    00039 /************************************************************************/
    00040
    00041 class CPL_DLL GDALJP2Box
    00042 {
    00043
    00044     FILE        *fpVSIL;
    00045
    00046     char        szBoxType[5];
    00047
    00048     GIntBig     nBoxOffset;
    00049     GIntBig     nBoxLength;
    00050
    00051     GIntBig     nDataOffset;
    00052
    00053     GByte       abyUUID[16];
    00054
    00055     GByte      *pabyData;
    00056
    00057 public:
    00058                 GDALJP2Box( FILE * = NULL );
    00059                 ~GDALJP2Box();
    00060
    00061     int         SetOffset( GIntBig nNewOffset );
    00062     int         ReadBox();
    00063
    00064     int         ReadFirst();
    00065     int         ReadNext();
    00066
    00067     int         ReadFirstChild( GDALJP2Box *poSuperBox );
    00068     int         ReadNextChild( GDALJP2Box *poSuperBox );
    00069
    00070     GIntBig     GetDataLength();
    00071     const char *GetType() { return szBoxType; }
    00072
    00073     GByte      *ReadBoxData();
    00074
    00075     int         IsSuperBox();
    00076
    00077     int         DumpReadable( FILE * );
    00078
    00079     FILE        *GetFILE() { return fpVSIL; }
    00080
    00081     const GByte *GetUUID() { return abyUUID; }
    00082
    00083     // write support
    00084     void        SetType( const char * );
    00085     void        SetWritableData( int nLength, const GByte *pabyData );
    00086     const GByte*GetWritableData() { return pabyData; }
    00087
    00088     // factory methods.
    00089     static GDALJP2Box *CreateAsocBox( int nCount, GDALJP2Box **papoBoxes );
    00090     static GDALJP2Box *CreateLblBox( const char *pszLabel );
    00091     static GDALJP2Box *CreateLabelledXMLAssoc( const char *pszLabel,
    00092                                                const char *pszXML );
    00093     static GDALJP2Box *CreateUUIDBox( const GByte *pabyUUID,
    00094                                       int nDataSize, GByte *pabyData );
    00095 };
    00096
    00097 /************************************************************************/
    00098 /*                           GDALJP2Metadata                            */
    00099 /************************************************************************/
    00100
    00101 class CPL_DLL GDALJP2Metadata
    00102
    00103 {
    00104 private:
    00105     void    CollectGMLData( GDALJP2Box * );
    00106     int     GMLSRSLookup( const char *pszURN );
    00107
    00108     int    nGeoTIFFSize;
    00109     GByte  *pabyGeoTIFFData;
    00110
    00111     int    nMSIGSize;
    00112     GByte  *pabyMSIGData;
    00113
    00114 public:
    00115     char   **papszGMLMetadata;
    00116
    00117     int     bHaveGeoTransform;
    00118     double  adfGeoTransform[6];
    00119
    00120     char    *pszProjection;
    00121
    00122     int         nGCPCount;
    00123     GDAL_GCP    *pasGCPList;
    00124
    00125 public:
    00126             GDALJP2Metadata();
    00127             ~GDALJP2Metadata();
    00128
    00129     int     ReadBoxes( FILE * fpVSIL );
    00130
    00131     int     ParseJP2GeoTIFF();
    00132     int     ParseMSIG();
    00133     int     ParseGMLCoverageDesc();
    00134
    00135     int     ReadAndParse( const char *pszFilename );
    00136
    00137     // Write oriented.
    00138     void    SetProjection( const char *pszWKT );
    00139     void    SetGeoTransform( double * );
    00140     void    SetGCPs( int, const GDAL_GCP * );
    00141
    00142     GDALJP2Box *CreateJP2GeoTIFF();
    00143     GDALJP2Box *CreateGMLJP2( int nXSize, int nYSize );
    00144 };
    00145
    00146 #endif /* ndef GDAL_JP2READER_H_INCLUDED */

Generated for GDAL by 1.5.7.1.