GDAL
ogr_core.h
Go to the documentation of this file.
00001 /******************************************************************************
00002  * $Id: ogr_core.h 37856 2017-03-28 12:10:47Z rouault $
00003  *
00004  * Project:  OpenGIS Simple Features Reference Implementation
00005  * Purpose:  Define some core portability services for cross-platform OGR code.
00006  * Author:   Frank Warmerdam, warmerdam@pobox.com
00007  *
00008  ******************************************************************************
00009  * Copyright (c) 1999, Frank Warmerdam
00010  * Copyright (c) 2007-2014, Even Rouault <even dot rouault at mines-paris dot org>
00011  *
00012  * Permission is hereby granted, free of charge, to any person obtaining a
00013  * copy of this software and associated documentation files (the "Software"),
00014  * to deal in the Software without restriction, including without limitation
00015  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
00016  * and/or sell copies of the Software, and to permit persons to whom the
00017  * Software is furnished to do so, subject to the following conditions:
00018  *
00019  * The above copyright notice and this permission notice shall be included
00020  * in all copies or substantial portions of the Software.
00021  *
00022  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
00023  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
00024  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
00025  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
00026  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
00027  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
00028  * DEALINGS IN THE SOFTWARE.
00029  ****************************************************************************/
00030 
00031 #ifndef OGR_CORE_H_INCLUDED
00032 #define OGR_CORE_H_INCLUDED
00033 
00034 #include "cpl_port.h"
00035 #include "gdal_version.h"
00036 
00048 #if defined(__cplusplus) && !defined(CPL_SUPRESS_CPLUSPLUS) && !defined(DOXYGEN_SKIP)
00049 
00050 extern "C++"
00051 {
00052 #include <limits>
00053 
00054 class CPL_DLL OGREnvelope
00055 {
00056   public:
00057         OGREnvelope() : MinX(std::numeric_limits<double>::infinity()),
00058                         MaxX(-std::numeric_limits<double>::infinity()),
00059                         MinY(std::numeric_limits<double>::infinity()),
00060                         MaxY(-std::numeric_limits<double>::infinity())
00061         {
00062         }
00063 
00064         OGREnvelope(const OGREnvelope& oOther) :
00065             MinX(oOther.MinX),MaxX(oOther.MaxX), MinY(oOther.MinY), MaxY(oOther.MaxY)
00066         {
00067         }
00068 
00069     double      MinX;
00070     double      MaxX;
00071     double      MinY;
00072     double      MaxY;
00073 
00074 #ifdef HAVE_GCC_DIAGNOSTIC_PUSH
00075 #pragma GCC diagnostic push
00076 #pragma GCC diagnostic ignored "-Wfloat-equal"
00077 #endif
00078     int  IsInit() const { return MinX != std::numeric_limits<double>::infinity(); }
00079 
00080 #ifdef HAVE_GCC_DIAGNOSTIC_PUSH
00081 #pragma GCC diagnostic pop
00082 #endif
00083 
00084     void Merge( OGREnvelope const& sOther ) {
00085         MinX = MIN(MinX,sOther.MinX);
00086         MaxX = MAX(MaxX,sOther.MaxX);
00087         MinY = MIN(MinY,sOther.MinY);
00088         MaxY = MAX(MaxY,sOther.MaxY);
00089     }
00090 
00091     void Merge( double dfX, double dfY ) {
00092         MinX = MIN(MinX,dfX);
00093         MaxX = MAX(MaxX,dfX);
00094         MinY = MIN(MinY,dfY);
00095         MaxY = MAX(MaxY,dfY);
00096     }
00097 
00098     void Intersect( OGREnvelope const& sOther ) {
00099         if(Intersects(sOther))
00100         {
00101             if( IsInit() )
00102             {
00103                 MinX = MAX(MinX,sOther.MinX);
00104                 MaxX = MIN(MaxX,sOther.MaxX);
00105                 MinY = MAX(MinY,sOther.MinY);
00106                 MaxY = MIN(MaxY,sOther.MaxY);
00107             }
00108             else
00109             {
00110                 MinX = sOther.MinX;
00111                 MaxX = sOther.MaxX;
00112                 MinY = sOther.MinY;
00113                 MaxY = sOther.MaxY;
00114             }
00115         }
00116         else
00117         {
00118             *this = OGREnvelope();
00119         }
00120     }
00121 
00122     int Intersects(OGREnvelope const& other) const
00123     {
00124         return MinX <= other.MaxX && MaxX >= other.MinX &&
00125                MinY <= other.MaxY && MaxY >= other.MinY;
00126     }
00127 
00128     int Contains(OGREnvelope const& other) const
00129     {
00130         return MinX <= other.MinX && MinY <= other.MinY &&
00131                MaxX >= other.MaxX && MaxY >= other.MaxY;
00132     }
00133 };
00134 
00135 } // extern "C++"
00136 
00137 #else
00138 typedef struct
00139 {
00140     double      MinX;
00141     double      MaxX;
00142     double      MinY;
00143     double      MaxY;
00144 } OGREnvelope;
00145 #endif
00146 
00151 #if defined(__cplusplus) && !defined(CPL_SUPRESS_CPLUSPLUS) && !defined(DOXYGEN_SKIP)
00152 
00153 extern "C++" {
00154 
00155 class CPL_DLL OGREnvelope3D : public OGREnvelope
00156 {
00157   public:
00158         OGREnvelope3D() : OGREnvelope(),
00159                           MinZ(std::numeric_limits<double>::infinity()),
00160                           MaxZ(-std::numeric_limits<double>::infinity())
00161         {
00162         }
00163 
00164         OGREnvelope3D(const OGREnvelope3D& oOther) :
00165                             OGREnvelope(oOther),
00166                             MinZ(oOther.MinZ), MaxZ(oOther.MaxZ)
00167         {
00168         }
00169 
00170     double      MinZ;
00171     double      MaxZ;
00172 
00173 #ifdef HAVE_GCC_DIAGNOSTIC_PUSH
00174 #pragma GCC diagnostic push
00175 #pragma GCC diagnostic ignored "-Wfloat-equal"
00176 #endif
00177     int  IsInit() const { return MinX != std::numeric_limits<double>::infinity(); }
00178 #ifdef HAVE_GCC_DIAGNOSTIC_PUSH
00179 #pragma GCC diagnostic pop
00180 #endif
00181 
00182     void Merge( OGREnvelope3D const& sOther ) {
00183         MinX = MIN(MinX,sOther.MinX);
00184         MaxX = MAX(MaxX,sOther.MaxX);
00185         MinY = MIN(MinY,sOther.MinY);
00186         MaxY = MAX(MaxY,sOther.MaxY);
00187         MinZ = MIN(MinZ,sOther.MinZ);
00188         MaxZ = MAX(MaxZ,sOther.MaxZ);
00189     }
00190 
00191     void Merge( double dfX, double dfY, double dfZ ) {
00192         MinX = MIN(MinX,dfX);
00193         MaxX = MAX(MaxX,dfX);
00194         MinY = MIN(MinY,dfY);
00195         MaxY = MAX(MaxY,dfY);
00196         MinZ = MIN(MinZ,dfZ);
00197         MaxZ = MAX(MaxZ,dfZ);
00198     }
00199 
00200     void Intersect( OGREnvelope3D const& sOther ) {
00201         if(Intersects(sOther))
00202         {
00203             if( IsInit() )
00204             {
00205                 MinX = MAX(MinX,sOther.MinX);
00206                 MaxX = MIN(MaxX,sOther.MaxX);
00207                 MinY = MAX(MinY,sOther.MinY);
00208                 MaxY = MIN(MaxY,sOther.MaxY);
00209                 MinZ = MAX(MinZ,sOther.MinZ);
00210                 MaxZ = MIN(MaxZ,sOther.MaxZ);
00211             }
00212             else
00213             {
00214                 MinX = sOther.MinX;
00215                 MaxX = sOther.MaxX;
00216                 MinY = sOther.MinY;
00217                 MaxY = sOther.MaxY;
00218                 MinZ = sOther.MinZ;
00219                 MaxZ = sOther.MaxZ;
00220             }
00221         }
00222         else
00223         {
00224             *this = OGREnvelope3D();
00225         }
00226     }
00227 
00228     int Intersects(OGREnvelope3D const& other) const
00229     {
00230         return MinX <= other.MaxX && MaxX >= other.MinX &&
00231                MinY <= other.MaxY && MaxY >= other.MinY &&
00232                MinZ <= other.MaxZ && MaxZ >= other.MinZ;
00233     }
00234 
00235     int Contains(OGREnvelope3D const& other) const
00236     {
00237         return MinX <= other.MinX && MinY <= other.MinY &&
00238                MaxX >= other.MaxX && MaxY >= other.MaxY &&
00239                MinZ <= other.MinZ && MaxZ >= other.MaxZ;
00240     }
00241 };
00242 
00243 } // extern "C++"
00244 
00245 #else
00246 typedef struct
00247 {
00248     double      MinX;
00249     double      MaxX;
00250     double      MinY;
00251     double      MaxY;
00252     double      MinZ;
00253     double      MaxZ;
00254 } OGREnvelope3D;
00255 #endif
00256 
00258 CPL_C_START
00259 
00261 void CPL_DLL *OGRMalloc( size_t ) CPL_WARN_DEPRECATED("Use CPLMalloc instead.");
00262 void CPL_DLL *OGRCalloc( size_t, size_t ) CPL_WARN_DEPRECATED("Use CPLCalloc instead.");
00263 void CPL_DLL *OGRRealloc( void *, size_t ) CPL_WARN_DEPRECATED("Use CPLRealloc instead.");
00264 char CPL_DLL *OGRStrdup( const char * ) CPL_WARN_DEPRECATED("Use CPLStrdup instead.");
00265 void CPL_DLL OGRFree( void * ) CPL_WARN_DEPRECATED("Use CPLFree instead.");
00268 #ifdef STRICT_OGRERR_TYPE
00269 
00270 typedef enum
00271 {
00272     OGRERR_NONE,                       
00273     OGRERR_NOT_ENOUGH_DATA,            
00274     OGRERR_NOT_ENOUGH_MEMORY,          
00275     OGRERR_UNSUPPORTED_GEOMETRY_TYPE,  
00276     OGRERR_UNSUPPORTED_OPERATION,      
00277     OGRERR_CORRUPT_DATA,               
00278     OGRERR_FAILURE,                    
00279     OGRERR_UNSUPPORTED_SRS,            
00280     OGRERR_INVALID_HANDLE,             
00281     OGRERR_NON_EXISTING_FEATURE        
00282 } OGRErr;
00283 #else
00284 
00285 typedef int OGRErr;
00286 
00287 #define OGRERR_NONE                0       
00288 #define OGRERR_NOT_ENOUGH_DATA     1       
00289 #define OGRERR_NOT_ENOUGH_MEMORY   2       
00290 #define OGRERR_UNSUPPORTED_GEOMETRY_TYPE 3 
00291 #define OGRERR_UNSUPPORTED_OPERATION 4     
00292 #define OGRERR_CORRUPT_DATA        5       
00293 #define OGRERR_FAILURE             6       
00294 #define OGRERR_UNSUPPORTED_SRS     7       
00295 #define OGRERR_INVALID_HANDLE      8       
00296 #define OGRERR_NON_EXISTING_FEATURE 9      
00298 #endif
00299 
00301 typedef int     OGRBoolean;
00302 
00303 /* -------------------------------------------------------------------- */
00304 /*      ogr_geometry.h related definitions.                             */
00305 /* -------------------------------------------------------------------- */
00306 
00312 typedef enum
00313 {
00314     wkbUnknown = 0,         
00316     wkbPoint = 1,           
00317     wkbLineString = 2,      
00319     wkbPolygon = 3,         
00322     wkbMultiPoint = 4,      
00323     wkbMultiLineString = 5, 
00324     wkbMultiPolygon = 6,    
00325     wkbGeometryCollection = 7, 
00328     wkbCircularString = 8,  
00330     wkbCompoundCurve = 9,   
00331     wkbCurvePolygon = 10,   
00334     wkbMultiCurve = 11,     
00335     wkbMultiSurface = 12,   
00336     wkbCurve = 13,          
00337     wkbSurface = 14,        
00338     wkbPolyhedralSurface = 15,
00340     wkbTIN = 16,              
00342     wkbTriangle = 17,         
00344     wkbNone = 100,          
00345     wkbLinearRing = 101,    
00347     wkbCircularStringZ = 1008,  
00348     wkbCompoundCurveZ = 1009,   
00349     wkbCurvePolygonZ = 1010,    
00350     wkbMultiCurveZ = 1011,      
00351     wkbMultiSurfaceZ = 1012,    
00352     wkbCurveZ = 1013,           
00353     wkbSurfaceZ = 1014,         
00354     wkbPolyhedralSurfaceZ = 1015,  
00355     wkbTINZ = 1016,                
00356     wkbTriangleZ = 1017,           
00358     wkbPointM = 2001,              
00359     wkbLineStringM = 2002,         
00360     wkbPolygonM = 2003,            
00361     wkbMultiPointM = 2004,         
00362     wkbMultiLineStringM = 2005,    
00363     wkbMultiPolygonM = 2006,       
00364     wkbGeometryCollectionM = 2007, 
00365     wkbCircularStringM = 2008,     
00366     wkbCompoundCurveM = 2009,      
00367     wkbCurvePolygonM = 2010,       
00368     wkbMultiCurveM = 2011,         
00369     wkbMultiSurfaceM = 2012,       
00370     wkbCurveM = 2013,              
00371     wkbSurfaceM = 2014,            
00372     wkbPolyhedralSurfaceM = 2015,  
00373     wkbTINM = 2016,                
00374     wkbTriangleM = 2017,           
00376     wkbPointZM = 3001,              
00377     wkbLineStringZM = 3002,         
00378     wkbPolygonZM = 3003,            
00379     wkbMultiPointZM = 3004,         
00380     wkbMultiLineStringZM = 3005,    
00381     wkbMultiPolygonZM = 3006,       
00382     wkbGeometryCollectionZM = 3007, 
00383     wkbCircularStringZM = 3008,     
00384     wkbCompoundCurveZM = 3009,      
00385     wkbCurvePolygonZM = 3010,       
00386     wkbMultiCurveZM = 3011,         
00387     wkbMultiSurfaceZM = 3012,       
00388     wkbCurveZM = 3013,              
00389     wkbSurfaceZM = 3014,            
00390     wkbPolyhedralSurfaceZM = 3015,  
00391     wkbTINZM = 3016,                
00392     wkbTriangleZM = 3017,           
00394     wkbPoint25D = 0x80000001, 
00395     wkbLineString25D = 0x80000002, 
00396     wkbPolygon25D = 0x80000003, 
00397     wkbMultiPoint25D = 0x80000004, 
00398     wkbMultiLineString25D = 0x80000005, 
00399     wkbMultiPolygon25D = 0x80000006, 
00400     wkbGeometryCollection25D = 0x80000007 
00402 } OGRwkbGeometryType;
00403 
00418 typedef enum
00419 {
00420     wkbVariantOldOgc, 
00421     wkbVariantIso,  
00422     wkbVariantPostGIS1 
00423 } OGRwkbVariant;
00424 
00425 #ifndef GDAL_COMPILATION
00426 
00427 #define wkb25DBit 0x80000000
00428 #endif
00429 
00431 #define wkbFlatten(x)  OGR_GT_Flatten((OGRwkbGeometryType)(x))
00432 
00436 #define wkbHasZ(x)     (OGR_GT_HasZ(x) != 0)
00437 
00441 #define wkbSetZ(x)     OGR_GT_SetZ(x)
00442 
00446 #define wkbHasM(x)     (OGR_GT_HasM(x) != 0)
00447 
00451 #define wkbSetM(x)     OGR_GT_SetM(x)
00452 
00453 #ifndef DOXYGEN_SKIP
00454 #define ogrZMarker 0x21125711
00455 #endif
00456 
00457 const char CPL_DLL * OGRGeometryTypeToName( OGRwkbGeometryType eType );
00458 OGRwkbGeometryType CPL_DLL OGRMergeGeometryTypes( OGRwkbGeometryType eMain,
00459                                                   OGRwkbGeometryType eExtra );
00460 OGRwkbGeometryType CPL_DLL OGRMergeGeometryTypesEx( OGRwkbGeometryType eMain,
00461                                                     OGRwkbGeometryType eExtra,
00462                                                     int bAllowPromotingToCurves );
00463 OGRwkbGeometryType CPL_DLL OGR_GT_Flatten( OGRwkbGeometryType eType );
00464 OGRwkbGeometryType CPL_DLL OGR_GT_SetZ( OGRwkbGeometryType eType );
00465 OGRwkbGeometryType CPL_DLL OGR_GT_SetM( OGRwkbGeometryType eType );
00466 OGRwkbGeometryType CPL_DLL OGR_GT_SetModifier( OGRwkbGeometryType eType, int bSetZ, int bSetM );
00467 int                CPL_DLL OGR_GT_HasZ( OGRwkbGeometryType eType );
00468 int                CPL_DLL OGR_GT_HasM( OGRwkbGeometryType eType );
00469 int                CPL_DLL OGR_GT_IsSubClassOf( OGRwkbGeometryType eType,
00470                                                 OGRwkbGeometryType eSuperType );
00471 int                CPL_DLL OGR_GT_IsCurve( OGRwkbGeometryType );
00472 int                CPL_DLL OGR_GT_IsSurface( OGRwkbGeometryType );
00473 int                CPL_DLL OGR_GT_IsNonLinear( OGRwkbGeometryType );
00474 OGRwkbGeometryType CPL_DLL OGR_GT_GetCollection( OGRwkbGeometryType eType );
00475 OGRwkbGeometryType CPL_DLL OGR_GT_GetCurve( OGRwkbGeometryType eType );
00476 OGRwkbGeometryType CPL_DLL OGR_GT_GetLinear( OGRwkbGeometryType eType );
00477 
00479 typedef enum
00480 {
00481     wkbXDR = 0,         
00482     wkbNDR = 1          
00483 } OGRwkbByteOrder;
00484 
00485 #ifndef DOXYGEN_SKIP
00486 
00487 #ifndef NO_HACK_FOR_IBM_DB2_V72
00488 #  define HACK_FOR_IBM_DB2_V72
00489 #endif
00490 
00491 #ifdef HACK_FOR_IBM_DB2_V72
00492 #  define DB2_V72_FIX_BYTE_ORDER(x) ((((x) & 0x31) == (x)) ? ((x) & 0x1) : (x))
00493 #  define DB2_V72_UNFIX_BYTE_ORDER(x) ((unsigned char) (OGRGeometry::bGenerate_DB2_V72_BYTE_ORDER ? ((x) | 0x30) : (x)))
00494 #else
00495 #  define DB2_V72_FIX_BYTE_ORDER(x) (x)
00496 #  define DB2_V72_UNFIX_BYTE_ORDER(x) (x)
00497 #endif
00498 
00499 #endif /* #ifndef DOXYGEN_SKIP */
00500 
00504 #define ALTER_NAME_FLAG            0x1
00505 
00509 #define ALTER_TYPE_FLAG            0x2
00510 
00514 #define ALTER_WIDTH_PRECISION_FLAG 0x4
00515 
00520 #define ALTER_NULLABLE_FLAG        0x8
00521 
00526 #define ALTER_DEFAULT_FLAG         0x10
00527 
00531 #define ALTER_ALL_FLAG             (ALTER_NAME_FLAG | ALTER_TYPE_FLAG | ALTER_WIDTH_PRECISION_FLAG | ALTER_NULLABLE_FLAG | ALTER_DEFAULT_FLAG)
00532 
00537 #define OGR_F_VAL_NULL           0x00000001
00538 
00543 #define OGR_F_VAL_GEOM_TYPE      0x00000002
00544 
00549 #define OGR_F_VAL_WIDTH          0x00000004
00550 
00558 #define OGR_F_VAL_ALLOW_NULL_WHEN_DEFAULT       0x00000008
00559 
00566 #define OGR_F_VAL_ALLOW_DIFFERENT_GEOM_DIM       0x00000010
00567 
00572 #define OGR_F_VAL_ALL            (0x7FFFFFFF & ~OGR_F_VAL_ALLOW_DIFFERENT_GEOM_DIM)
00573 
00574 /************************************************************************/
00575 /*                  ogr_feature.h related definitions.                  */
00576 /************************************************************************/
00577 
00584 typedef enum
00585 {                   OFTInteger = 0,                 OFTIntegerList = 1,        OFTReal = 2,                        OFTRealList = 3,                  OFTString = 4,                       OFTStringList = 5,                             OFTWideString = 6,                             OFTWideStringList = 7,                        OFTBinary = 8,                                   OFTDate = 9,                                   OFTTime = 10,                          OFTDateTime = 11,                   OFTInteger64 = 12,                 OFTInteger64List = 13,
00600                                                 OFTMaxType = 13
00601 } OGRFieldType;
00602 
00612 typedef enum
00613 {        OFSTNone = 0,
00616                                                         OFSTBoolean = 1,
00618                                                         OFSTInt16 = 2,
00620                                                         OFSTFloat32 = 3,
00621                                                         OFSTMaxSubType = 3
00622 } OGRFieldSubType;
00623 
00628 typedef enum
00629 {
00630     OJUndefined = 0,
00631     OJLeft = 1,
00632     OJRight = 2
00633 } OGRJustification;
00634 
00636 #define OGRNullFID            -1
00637 
00643 #define OGRUnsetMarker        -21121
00644 
00651 #define OGRNullMarker         -21122
00652 
00653 /************************************************************************/
00654 /*                               OGRField                               */
00655 /************************************************************************/
00656 
00661 typedef union {
00663     int         Integer;
00664     GIntBig     Integer64;
00665     double      Real;
00666     char       *String;
00667 
00668     struct {
00669         int     nCount;
00670         int     *paList;
00671     } IntegerList;
00672 
00673     struct {
00674         int     nCount;
00675         GIntBig *paList;
00676     } Integer64List;
00677 
00678     struct {
00679         int     nCount;
00680         double  *paList;
00681     } RealList;
00682 
00683     struct {
00684         int     nCount;
00685         char    **paList;
00686     } StringList;
00687 
00688     struct {
00689         int     nCount;
00690         GByte   *paData;
00691     } Binary;
00692 
00693     struct {
00694         int     nMarker1;
00695         int     nMarker2;
00696         int     nMarker3;
00697     } Set;
00698 
00699     struct {
00700         GInt16  Year;
00701         GByte   Month;
00702         GByte   Day;
00703         GByte   Hour;
00704         GByte   Minute;
00705         GByte   TZFlag; /* 0=unknown, 1=localtime(ambiguous),
00706                            100=GMT, 104=GMT+1, 80=GMT-5, etc */
00707         GByte   Reserved; /* must be set to 0 */
00708         float   Second; /* with millisecond accuracy. at the end of the structure, so as to keep it 12 bytes on 32 bit */
00709     } Date;
00711 } OGRField;
00712 
00714 #define OGR_GET_MS(floatingpoint_sec)   (int)(((floatingpoint_sec) - (int)(floatingpoint_sec)) * 1000 + 0.5)
00715 
00716 int CPL_DLL OGRParseDate( const char *pszInput, OGRField *psOutput,
00717                           int nOptions );
00718 
00719 /* -------------------------------------------------------------------- */
00720 /*      Constants from ogrsf_frmts.h for capabilities.                  */
00721 /* -------------------------------------------------------------------- */
00722 #define OLCRandomRead          "RandomRead"         
00723 #define OLCSequentialWrite     "SequentialWrite"    
00724 #define OLCRandomWrite         "RandomWrite"        
00725 #define OLCFastSpatialFilter   "FastSpatialFilter"  
00726 #define OLCFastFeatureCount    "FastFeatureCount"   
00727 #define OLCFastGetExtent       "FastGetExtent"      
00728 #define OLCCreateField         "CreateField"        
00729 #define OLCDeleteField         "DeleteField"        
00730 #define OLCReorderFields       "ReorderFields"      
00731 #define OLCAlterFieldDefn      "AlterFieldDefn"     
00732 #define OLCTransactions        "Transactions"       
00733 #define OLCDeleteFeature       "DeleteFeature"      
00734 #define OLCFastSetNextByIndex  "FastSetNextByIndex" 
00735 #define OLCStringsAsUTF8       "StringsAsUTF8"      
00736 #define OLCIgnoreFields        "IgnoreFields"       
00737 #define OLCCreateGeomField     "CreateGeomField"    
00738 #define OLCCurveGeometries     "CurveGeometries"    
00739 #define OLCMeasuredGeometries  "MeasuredGeometries" 
00741 #define ODsCCreateLayer        "CreateLayer"        
00742 #define ODsCDeleteLayer        "DeleteLayer"        
00743 #define ODsCCreateGeomFieldAfterCreateLayer   "CreateGeomFieldAfterCreateLayer" 
00744 #define ODsCCurveGeometries    "CurveGeometries"    
00745 #define ODsCTransactions       "Transactions"       
00746 #define ODsCEmulatedTransactions "EmulatedTransactions" 
00747 #define ODsCMeasuredGeometries "MeasuredGeometries"     
00748 #define ODsCRandomLayerRead     "RandomLayerRead"   
00749 #define ODsCRandomLayerWrite    "RandomLayerWrite " 
00751 #define ODrCCreateDataSource   "CreateDataSource"   
00752 #define ODrCDeleteDataSource   "DeleteDataSource"   
00754 /* -------------------------------------------------------------------- */
00755 /*      Layer metadata items.                                           */
00756 /* -------------------------------------------------------------------- */
00761 #define OLMD_FID64             "OLMD_FID64"
00762 
00763 /************************************************************************/
00764 /*                  ogr_featurestyle.h related definitions.             */
00765 /************************************************************************/
00766 
00771 typedef enum ogr_style_tool_class_id
00772 {
00773     OGRSTCNone   = 0, 
00774     OGRSTCPen    = 1, 
00775     OGRSTCBrush  = 2, 
00776     OGRSTCSymbol = 3, 
00777     OGRSTCLabel  = 4, 
00778     OGRSTCVector = 5  
00779 } OGRSTClassId;
00780 
00784 typedef enum ogr_style_tool_units_id
00785 {
00786     OGRSTUGround = 0, 
00787     OGRSTUPixel  = 1, 
00788     OGRSTUPoints = 2, 
00789     OGRSTUMM     = 3, 
00790     OGRSTUCM     = 4, 
00791     OGRSTUInches = 5  
00792 } OGRSTUnitId;
00793 
00797 typedef enum ogr_style_tool_param_pen_id
00798 {
00799     OGRSTPenColor       = 0, 
00800     OGRSTPenWidth       = 1, 
00801     OGRSTPenPattern     = 2, 
00802     OGRSTPenId          = 3, 
00803     OGRSTPenPerOffset   = 4, 
00804     OGRSTPenCap         = 5, 
00805     OGRSTPenJoin        = 6, 
00806     OGRSTPenPriority    = 7, 
00807 #ifndef DOXYGEN_SKIP
00808     OGRSTPenLast        = 8
00809 #endif
00810 } OGRSTPenParam;
00811 
00815 typedef enum ogr_style_tool_param_brush_id
00816 {
00817     OGRSTBrushFColor    = 0, 
00818     OGRSTBrushBColor    = 1, 
00819     OGRSTBrushId        = 2, 
00820     OGRSTBrushAngle     = 3, 
00821     OGRSTBrushSize      = 4, 
00822     OGRSTBrushDx        = 5, 
00823     OGRSTBrushDy        = 6, 
00824     OGRSTBrushPriority  = 7, 
00825 #ifndef DOXYGEN_SKIP
00826     OGRSTBrushLast      = 8
00827 #endif
00828 
00829 } OGRSTBrushParam;
00830 
00834 typedef enum ogr_style_tool_param_symbol_id
00835 {
00836     OGRSTSymbolId       = 0, 
00837     OGRSTSymbolAngle    = 1, 
00838     OGRSTSymbolColor    = 2, 
00839     OGRSTSymbolSize     = 3, 
00840     OGRSTSymbolDx       = 4, 
00841     OGRSTSymbolDy       = 5, 
00842     OGRSTSymbolStep     = 6, 
00843     OGRSTSymbolPerp     = 7, 
00844     OGRSTSymbolOffset   = 8, 
00845     OGRSTSymbolPriority = 9, 
00846     OGRSTSymbolFontName = 10, 
00847     OGRSTSymbolOColor   = 11, 
00848 #ifndef DOXYGEN_SKIP
00849     OGRSTSymbolLast     = 12
00850 #endif
00851 } OGRSTSymbolParam;
00852 
00856 typedef enum ogr_style_tool_param_label_id
00857 {
00858     OGRSTLabelFontName  = 0, 
00859     OGRSTLabelSize      = 1, 
00860     OGRSTLabelTextString = 2, 
00861     OGRSTLabelAngle     = 3, 
00862     OGRSTLabelFColor    = 4, 
00863     OGRSTLabelBColor    = 5, 
00864     OGRSTLabelPlacement = 6, 
00865     OGRSTLabelAnchor    = 7, 
00866     OGRSTLabelDx        = 8, 
00867     OGRSTLabelDy        = 9, 
00868     OGRSTLabelPerp      = 10, 
00869     OGRSTLabelBold      = 11, 
00870     OGRSTLabelItalic    = 12, 
00871     OGRSTLabelUnderline = 13, 
00872     OGRSTLabelPriority  = 14, 
00873     OGRSTLabelStrikeout = 15, 
00874     OGRSTLabelStretch   = 16, 
00875     OGRSTLabelAdjHor    = 17, 
00876     OGRSTLabelAdjVert   = 18, 
00877     OGRSTLabelHColor    = 19, 
00878     OGRSTLabelOColor    = 20, 
00879 #ifndef DOXYGEN_SKIP
00880     OGRSTLabelLast      = 21
00881 #endif
00882 } OGRSTLabelParam;
00883 
00884 /* ------------------------------------------------------------------- */
00885 /*                        Version checking                             */
00886 /* -------------------------------------------------------------------- */
00887 
00888 #ifndef DOXYGEN_SKIP
00889 
00890 /* Note to developers : please keep this section in sync with gdal.h */
00891 
00892 #ifndef GDAL_VERSION_INFO_DEFINED
00893 #define GDAL_VERSION_INFO_DEFINED
00894 const char CPL_DLL * CPL_STDCALL GDALVersionInfo( const char * );
00895 #endif
00896 
00897 #ifndef GDAL_CHECK_VERSION
00898 
00910 int CPL_DLL CPL_STDCALL GDALCheckVersion( int nVersionMajor, int nVersionMinor,
00911                                           const char* pszCallingComponentName);
00912 
00914 #define GDAL_CHECK_VERSION(pszCallingComponentName) \
00915  GDALCheckVersion(GDAL_VERSION_MAJOR, GDAL_VERSION_MINOR, pszCallingComponentName)
00916 
00917 #endif
00918 
00919 #endif /* #ifndef DOXYGEN_SKIP */
00920 
00921 CPL_C_END
00922 
00923 #endif /* ndef OGR_CORE_H_INCLUDED */

Generated for GDAL by doxygen 1.7.6.1.