|
GDAL
|
00001 /****************************************************************************** 00002 * $Id: ogr_featurestyle.h 36501 2016-11-25 14:09:24Z rouault $ 00003 * 00004 * Project: OpenGIS Simple Features Reference Implementation 00005 * Purpose: Define of Feature Representation 00006 * Author: Stephane Villeneuve, stephane.v@videtron.ca 00007 * 00008 ****************************************************************************** 00009 * Copyright (c) 1999, Frank Warmerdam 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 OGR_FEATURESTYLE_INCLUDE 00031 #define OGR_FEATURESTYLE_INCLUDE 00032 00033 #include "cpl_conv.h" 00034 #include "cpl_string.h" 00035 #include "ogr_core.h" 00036 00037 class OGRFeature; 00038 00045 /* 00046 * All OGRStyleTool param lists are defined in ogr_core.h. 00047 */ 00048 00050 typedef enum ogr_style_type 00051 { 00052 OGRSTypeString, 00053 OGRSTypeDouble, 00054 OGRSTypeInteger, 00055 OGRSTypeBoolean 00056 } OGRSType; 00057 00059 typedef struct ogr_style_param 00060 { 00061 int eParam; 00062 const char *pszToken; 00063 GBool bGeoref; 00064 OGRSType eType; 00065 } OGRStyleParamId; 00066 00067 typedef struct ogr_style_value 00068 { 00069 char *pszValue; 00070 double dfValue; 00071 int nValue; // Used for both integer and boolean types 00072 GBool bValid; 00073 OGRSTUnitId eUnit; 00074 } OGRStyleValue; 00076 00077 // Every time a pszStyleString given in parameter is NULL, 00078 // the StyleString defined in the Mgr will be use. 00079 00083 class CPL_DLL OGRStyleTable 00084 { 00085 private: 00086 char **m_papszStyleTable; 00087 00088 CPLString osLastRequestedStyleName; 00089 int iNextStyle; 00090 00091 public: 00092 OGRStyleTable(); 00093 ~OGRStyleTable(); 00094 GBool AddStyle(const char *pszName,const char *pszStyleString); 00095 GBool RemoveStyle(const char *pszName); 00096 GBool ModifyStyle(const char *pszName, const char *pszStyleString); 00097 00098 GBool SaveStyleTable(const char *pszFilename); 00099 GBool LoadStyleTable(const char *pszFilename); 00100 const char *Find(const char *pszStyleString); 00101 GBool IsExist(const char *pszName); 00102 const char *GetStyleName(const char *pszName); 00103 void Print(FILE *fpOut); 00104 void Clear(); 00105 OGRStyleTable *Clone(); 00106 void ResetStyleStringReading(); 00107 const char *GetNextStyle(); 00108 const char *GetLastStyleName(); 00109 }; 00110 00111 class OGRStyleTool; 00112 00116 class CPL_DLL OGRStyleMgr 00117 { 00118 private: 00119 OGRStyleTable *m_poDataSetStyleTable; 00120 char *m_pszStyleString; 00121 00122 public: 00123 explicit OGRStyleMgr(OGRStyleTable *poDataSetStyleTable = NULL); 00124 ~OGRStyleMgr(); 00125 00126 GBool SetFeatureStyleString(OGRFeature *,const char *pszStyleString=NULL, 00127 GBool bNoMatching = FALSE); 00128 /* It will set in the given feature the pszStyleString with 00129 the style or will set the style name found in 00130 dataset StyleTable (if bNoMatching == FALSE). */ 00131 00132 const char *InitFromFeature(OGRFeature *); 00133 GBool InitStyleString(const char *pszStyleString = NULL); 00134 00135 const char *GetStyleName(const char *pszStyleString= NULL); 00136 const char *GetStyleByName(const char *pszStyleName); 00137 00138 GBool AddStyle(const char *pszStyleName, const char *pszStyleString=NULL); 00139 00140 const char *GetStyleString(OGRFeature * = NULL); 00141 00142 GBool AddPart(OGRStyleTool *); 00143 GBool AddPart(const char *); 00144 00145 int GetPartCount(const char *pszStyleString = NULL); 00146 OGRStyleTool *GetPart(int hPartId, const char *pszStyleString = NULL); 00147 00148 /* It could have a reference counting process us for the OGRStyleTable, if 00149 needed. */ 00151 OGRStyleTable *GetDataSetStyleTable(){return m_poDataSetStyleTable;} 00152 00153 OGRStyleTool *CreateStyleToolFromStyleString(const char *pszStyleString); 00155 }; 00156 00160 class CPL_DLL OGRStyleTool 00161 { 00162 private: 00163 GBool m_bModified; 00164 GBool m_bParsed; 00165 double m_dfScale; 00166 OGRSTUnitId m_eUnit; 00167 OGRSTClassId m_eClassId; 00168 char *m_pszStyleString; 00169 00170 virtual GBool Parse() = 0; 00171 00172 protected: 00173 #ifndef DOXYGEN_SKIP 00174 GBool Parse(const OGRStyleParamId* pasStyle, 00175 OGRStyleValue* pasValue, 00176 int nCount); 00177 #endif 00178 00179 public: 00180 00181 OGRStyleTool() : 00182 m_bModified(FALSE), 00183 m_bParsed(FALSE), 00184 m_dfScale(0.0), 00185 m_eUnit(OGRSTUGround), 00186 m_eClassId(OGRSTCNone), 00187 m_pszStyleString(NULL) 00188 {} 00189 explicit OGRStyleTool(OGRSTClassId eClassId); 00190 virtual ~OGRStyleTool(); 00191 00192 static GBool GetRGBFromString(const char *pszColor, int &nRed, int &nGreen, 00193 int &nBlue, int &nTransparence); 00194 static int GetSpecificId(const char *pszId, const char *pszWanted); 00195 00196 #ifndef DOXYGEN_SKIP 00197 GBool IsStyleModified() {return m_bModified;} 00198 void StyleModified() {m_bModified = TRUE;} 00199 00200 GBool IsStyleParsed() {return m_bParsed;} 00201 void StyleParsed() {m_bParsed = TRUE;} 00202 #endif 00203 00204 OGRSTClassId GetType(); 00205 00206 #ifndef DOXYGEN_SKIP 00207 void SetInternalInputUnitFromParam(char *pszString); 00208 #endif 00209 00210 void SetUnit(OGRSTUnitId,double dfScale = 1.0); //the dfScale will be 00211 //used if we are working with Ground Unit ( ground = paper * scale); 00212 00213 OGRSTUnitId GetUnit(){return m_eUnit;} 00214 00215 // There are two way to set the parameters in the Style, with generic 00216 // methods (using a defined enumeration) or with the reel method specific 00217 // for Each style tools. 00218 00219 virtual const char *GetStyleString() = 0; 00220 void SetStyleString(const char *pszStyleString); 00221 const char *GetStyleString(const OGRStyleParamId *pasStyleParam , 00222 OGRStyleValue *pasStyleValue, int nSize); 00223 00224 const char *GetParamStr(const OGRStyleParamId &sStyleParam , 00225 OGRStyleValue &sStyleValue, 00226 GBool &bValueIsNull); 00227 00228 int GetParamNum(const OGRStyleParamId &sStyleParam , 00229 OGRStyleValue &sStyleValue, 00230 GBool &bValueIsNull); 00231 00232 double GetParamDbl(const OGRStyleParamId &sStyleParam , 00233 OGRStyleValue &sStyleValue, 00234 GBool &bValueIsNull); 00235 00236 void SetParamStr(const OGRStyleParamId &sStyleParam , 00237 OGRStyleValue &sStyleValue, 00238 const char *pszParamString); 00239 00240 void SetParamNum(const OGRStyleParamId &sStyleParam , 00241 OGRStyleValue &sStyleValue, 00242 int nParam); 00243 00244 void SetParamDbl(const OGRStyleParamId &sStyleParam , 00245 OGRStyleValue &sStyleValue, 00246 double dfParam); 00247 #ifndef DOXYGEN_SKIP 00248 double ComputeWithUnit(double, OGRSTUnitId); 00249 int ComputeWithUnit(int , OGRSTUnitId); 00250 #endif 00251 }; 00252 00254 00258 class CPL_DLL OGRStylePen : public OGRStyleTool 00259 { 00260 private: 00261 00262 OGRStyleValue *m_pasStyleValue; 00263 00264 GBool Parse() CPL_OVERRIDE; 00265 00266 public: 00267 00268 OGRStylePen(); 00269 virtual ~OGRStylePen(); 00270 00271 /**********************************************************************/ 00272 /* Explicit fct for all parameters defined in the Drawing tools Pen */ 00273 /**********************************************************************/ 00274 00275 const char *Color(GBool &bDefault){return GetParamStr(OGRSTPenColor,bDefault);} 00276 void SetColor(const char *pszColor){SetParamStr(OGRSTPenColor,pszColor);} 00277 double Width(GBool &bDefault){return GetParamDbl(OGRSTPenWidth,bDefault);} 00278 void SetWidth(double dfWidth){SetParamDbl(OGRSTPenWidth,dfWidth);} 00279 const char *Pattern(GBool &bDefault){return (const char *)GetParamStr(OGRSTPenPattern,bDefault);} 00280 void SetPattern(const char *pszPattern){SetParamStr(OGRSTPenPattern,pszPattern);} 00281 const char *Id(GBool &bDefault){return GetParamStr(OGRSTPenId,bDefault);} 00282 void SetId(const char *pszId){SetParamStr(OGRSTPenId,pszId);} 00283 double PerpendicularOffset(GBool &bDefault){return GetParamDbl(OGRSTPenPerOffset,bDefault);} 00284 void SetPerpendicularOffset(double dfPerp){SetParamDbl(OGRSTPenPerOffset,dfPerp);} 00285 const char *Cap(GBool &bDefault){return GetParamStr(OGRSTPenCap,bDefault);} 00286 void SetCap(const char *pszCap){SetParamStr(OGRSTPenCap,pszCap);} 00287 const char *Join(GBool &bDefault){return GetParamStr(OGRSTPenJoin,bDefault);} 00288 void SetJoin(const char *pszJoin){SetParamStr(OGRSTPenJoin,pszJoin);} 00289 int Priority(GBool &bDefault){return GetParamNum(OGRSTPenPriority,bDefault);} 00290 void SetPriority(int nPriority){SetParamNum(OGRSTPenPriority,nPriority);} 00291 00292 /*****************************************************************/ 00293 00294 const char *GetParamStr(OGRSTPenParam eParam, GBool &bValueIsNull); 00295 int GetParamNum(OGRSTPenParam eParam,GBool &bValueIsNull); 00296 double GetParamDbl(OGRSTPenParam eParam,GBool &bValueIsNull); 00297 void SetParamStr(OGRSTPenParam eParam, const char *pszParamString); 00298 void SetParamNum(OGRSTPenParam eParam, int nParam); 00299 void SetParamDbl(OGRSTPenParam eParam, double dfParam); 00300 const char *GetStyleString() CPL_OVERRIDE; 00301 }; 00302 00306 class CPL_DLL OGRStyleBrush : public OGRStyleTool 00307 { 00308 private: 00309 00310 OGRStyleValue *m_pasStyleValue; 00311 00312 GBool Parse() CPL_OVERRIDE; 00313 00314 public: 00315 00316 OGRStyleBrush(); 00317 virtual ~OGRStyleBrush(); 00318 00319 /* Explicit fct for all parameters defined in the Drawing tools Brush */ 00320 00321 const char *ForeColor(GBool &bDefault){return GetParamStr(OGRSTBrushFColor,bDefault);} 00322 void SetForeColor(const char *pszColor){SetParamStr(OGRSTBrushFColor,pszColor);} 00323 const char *BackColor(GBool &bDefault){return GetParamStr(OGRSTBrushBColor,bDefault);} 00324 void SetBackColor(const char *pszColor){SetParamStr(OGRSTBrushBColor,pszColor);} 00325 const char *Id(GBool &bDefault){ return GetParamStr(OGRSTBrushId,bDefault);} 00326 void SetId(const char *pszId){SetParamStr(OGRSTBrushId,pszId);} 00327 double Angle(GBool &bDefault){return GetParamDbl(OGRSTBrushAngle,bDefault);} 00328 void SetAngle(double dfAngle){SetParamDbl(OGRSTBrushAngle,dfAngle );} 00329 double Size(GBool &bDefault){return GetParamDbl(OGRSTBrushSize,bDefault);} 00330 void SetSize(double dfSize){SetParamDbl(OGRSTBrushSize,dfSize );} 00331 double SpacingX(GBool &bDefault){return GetParamDbl(OGRSTBrushDx,bDefault);} 00332 void SetSpacingX(double dfX){SetParamDbl(OGRSTBrushDx,dfX );} 00333 double SpacingY(GBool &bDefault){return GetParamDbl(OGRSTBrushDy,bDefault);} 00334 void SetSpacingY(double dfY){SetParamDbl(OGRSTBrushDy,dfY );} 00335 int Priority(GBool &bDefault){ return GetParamNum(OGRSTBrushPriority,bDefault);} 00336 void SetPriority(int nPriority){ SetParamNum(OGRSTBrushPriority,nPriority);} 00337 00338 /*****************************************************************/ 00339 00340 const char *GetParamStr(OGRSTBrushParam eParam, GBool &bValueIsNull); 00341 int GetParamNum(OGRSTBrushParam eParam,GBool &bValueIsNull); 00342 double GetParamDbl(OGRSTBrushParam eParam,GBool &bValueIsNull); 00343 void SetParamStr(OGRSTBrushParam eParam, const char *pszParamString); 00344 void SetParamNum(OGRSTBrushParam eParam, int nParam); 00345 void SetParamDbl(OGRSTBrushParam eParam, double dfParam); 00346 const char *GetStyleString() CPL_OVERRIDE; 00347 }; 00348 00352 class CPL_DLL OGRStyleSymbol : public OGRStyleTool 00353 { 00354 private: 00355 00356 OGRStyleValue *m_pasStyleValue; 00357 00358 GBool Parse() CPL_OVERRIDE; 00359 00360 public: 00361 00362 OGRStyleSymbol(); 00363 virtual ~OGRStyleSymbol(); 00364 00365 /*****************************************************************/ 00366 /* Explicit fct for all parameters defined in the Drawing tools */ 00367 /*****************************************************************/ 00368 00369 const char *Id(GBool &bDefault){return GetParamStr(OGRSTSymbolId,bDefault);} 00370 void SetId(const char *pszId){ SetParamStr(OGRSTSymbolId,pszId);} 00371 double Angle(GBool &bDefault){ return GetParamDbl(OGRSTSymbolAngle,bDefault);} 00372 void SetAngle(double dfAngle){SetParamDbl(OGRSTSymbolAngle,dfAngle );} 00373 const char *Color(GBool &bDefault){return GetParamStr(OGRSTSymbolColor,bDefault);} 00374 void SetColor(const char *pszColor){SetParamStr(OGRSTSymbolColor,pszColor);} 00375 double Size(GBool &bDefault){ return GetParamDbl(OGRSTSymbolSize,bDefault);} 00376 void SetSize(double dfSize){ SetParamDbl(OGRSTSymbolSize,dfSize );} 00377 double SpacingX(GBool &bDefault){return GetParamDbl(OGRSTSymbolDx,bDefault);} 00378 void SetSpacingX(double dfX){SetParamDbl(OGRSTSymbolDx,dfX );} 00379 double SpacingY(GBool &bDefault){return GetParamDbl(OGRSTSymbolDy,bDefault);} 00380 void SetSpacingY(double dfY){SetParamDbl(OGRSTSymbolDy,dfY );} 00381 double Step(GBool &bDefault){return GetParamDbl(OGRSTSymbolStep,bDefault);} 00382 void SetStep(double dfStep){SetParamDbl(OGRSTSymbolStep,dfStep );} 00383 double Offset(GBool &bDefault){return GetParamDbl(OGRSTSymbolOffset,bDefault);} 00384 void SetOffset(double dfOffset){SetParamDbl(OGRSTSymbolOffset,dfOffset );} 00385 double Perp(GBool &bDefault){return GetParamDbl(OGRSTSymbolPerp,bDefault);} 00386 void SetPerp(double dfPerp){SetParamDbl(OGRSTSymbolPerp,dfPerp );} 00387 int Priority(GBool &bDefault){return GetParamNum(OGRSTSymbolPriority,bDefault);} 00388 void SetPriority(int nPriority){SetParamNum(OGRSTSymbolPriority,nPriority);} 00389 const char *FontName(GBool &bDefault) 00390 {return GetParamStr(OGRSTSymbolFontName,bDefault);} 00391 void SetFontName(const char *pszFontName) 00392 {SetParamStr(OGRSTSymbolFontName,pszFontName);} 00393 const char *OColor(GBool &bDefault){return GetParamStr(OGRSTSymbolOColor,bDefault);} 00394 void SetOColor(const char *pszColor){SetParamStr(OGRSTSymbolOColor,pszColor);} 00395 00396 /*****************************************************************/ 00397 00398 const char *GetParamStr(OGRSTSymbolParam eParam, GBool &bValueIsNull); 00399 int GetParamNum(OGRSTSymbolParam eParam,GBool &bValueIsNull); 00400 double GetParamDbl(OGRSTSymbolParam eParam,GBool &bValueIsNull); 00401 void SetParamStr(OGRSTSymbolParam eParam, const char *pszParamString); 00402 void SetParamNum(OGRSTSymbolParam eParam, int nParam); 00403 void SetParamDbl(OGRSTSymbolParam eParam, double dfParam); 00404 const char *GetStyleString() CPL_OVERRIDE; 00405 }; 00406 00410 class CPL_DLL OGRStyleLabel : public OGRStyleTool 00411 { 00412 private: 00413 00414 OGRStyleValue *m_pasStyleValue; 00415 00416 GBool Parse() CPL_OVERRIDE; 00417 00418 public: 00419 00420 OGRStyleLabel(); 00421 virtual ~OGRStyleLabel(); 00422 00423 /*****************************************************************/ 00424 /* Explicit fct for all parameters defined in the Drawing tools */ 00425 /*****************************************************************/ 00426 00427 const char *FontName(GBool &bDefault){return GetParamStr(OGRSTLabelFontName,bDefault);} 00428 void SetFontName(const char *pszFontName){SetParamStr(OGRSTLabelFontName,pszFontName);} 00429 double Size(GBool &bDefault){return GetParamDbl(OGRSTLabelSize,bDefault);} 00430 void SetSize(double dfSize){SetParamDbl(OGRSTLabelSize,dfSize);} 00431 const char *TextString(GBool &bDefault){return GetParamStr(OGRSTLabelTextString,bDefault);} 00432 void SetTextString(const char *pszTextString){SetParamStr(OGRSTLabelTextString,pszTextString);} 00433 double Angle(GBool &bDefault){return GetParamDbl(OGRSTLabelAngle,bDefault);} 00434 void SetAngle(double dfAngle){SetParamDbl(OGRSTLabelAngle,dfAngle);} 00435 const char *ForeColor(GBool &bDefault){return GetParamStr(OGRSTLabelFColor,bDefault);} 00436 void SetForColor(const char *pszForColor){SetParamStr(OGRSTLabelFColor,pszForColor);} 00437 const char *BackColor(GBool &bDefault){return GetParamStr(OGRSTLabelBColor,bDefault);} 00438 void SetBackColor(const char *pszBackColor){SetParamStr(OGRSTLabelBColor,pszBackColor);} 00439 const char *Placement(GBool &bDefault){return GetParamStr(OGRSTLabelPlacement,bDefault);} 00440 void SetPlacement(const char *pszPlacement){SetParamStr(OGRSTLabelPlacement,pszPlacement);} 00441 int Anchor(GBool &bDefault){return GetParamNum(OGRSTLabelAnchor,bDefault);} 00442 void SetAnchor(int nAnchor){SetParamNum(OGRSTLabelAnchor,nAnchor);} 00443 double SpacingX(GBool &bDefault){return GetParamDbl(OGRSTLabelDx,bDefault);} 00444 void SetSpacingX(double dfX){SetParamDbl(OGRSTLabelDx,dfX);} 00445 double SpacingY(GBool &bDefault){return GetParamDbl(OGRSTLabelDy,bDefault);} 00446 void SetSpacingY(double dfY){SetParamDbl(OGRSTLabelDy,dfY);} 00447 double Perp(GBool &bDefault){return GetParamDbl(OGRSTLabelPerp,bDefault);} 00448 void SetPerp(double dfPerp){SetParamDbl(OGRSTLabelPerp,dfPerp);} 00449 GBool Bold(GBool &bDefault){return GetParamNum(OGRSTLabelBold,bDefault);} 00450 void SetBold(GBool bBold){SetParamNum(OGRSTLabelBold,bBold);} 00451 GBool Italic(GBool &bDefault){return GetParamNum(OGRSTLabelItalic,bDefault);} 00452 void SetItalic(GBool bItalic){SetParamNum(OGRSTLabelItalic,bItalic);} 00453 GBool Underline(GBool &bDefault){return GetParamNum(OGRSTLabelUnderline,bDefault);} 00454 void SetUnderline(GBool bUnderline){SetParamNum(OGRSTLabelUnderline,bUnderline);} 00455 int Priority(GBool &bDefault){return GetParamNum(OGRSTLabelPriority,bDefault);} 00456 void SetPriority(int nPriority){SetParamNum(OGRSTLabelPriority,nPriority);} 00457 GBool Strikeout(GBool &bDefault){return GetParamNum(OGRSTLabelStrikeout,bDefault);} 00458 void SetStrikeout(GBool bStrikeout){SetParamNum(OGRSTLabelStrikeout,bStrikeout);} 00459 double Stretch(GBool &bDefault){return GetParamDbl(OGRSTLabelStretch,bDefault);} 00460 void SetStretch(double dfStretch){SetParamDbl(OGRSTLabelStretch,dfStretch);} 00461 const char *AdjustmentHor(GBool &bDefault){return GetParamStr(OGRSTLabelAdjHor,bDefault);} 00462 void SetAdjustmentHor(const char *pszAdjustmentHor){SetParamStr(OGRSTLabelAdjHor,pszAdjustmentHor);} 00463 const char *AdjustmentVert(GBool &bDefault){return GetParamStr(OGRSTLabelAdjVert,bDefault);} 00464 void SetAdjustmentVert(const char *pszAdjustmentVert){SetParamStr(OGRSTLabelAdjHor,pszAdjustmentVert);} 00465 const char *ShadowColor(GBool &bDefault){return GetParamStr(OGRSTLabelHColor,bDefault);} 00466 void SetShadowColor(const char *pszShadowColor){SetParamStr(OGRSTLabelHColor,pszShadowColor);} 00467 const char *OutlineColor(GBool &bDefault){return GetParamStr(OGRSTLabelOColor,bDefault);} 00468 void SetOutlineColor(const char *pszOutlineColor){SetParamStr(OGRSTLabelOColor,pszOutlineColor);} 00469 00470 /*****************************************************************/ 00471 00472 const char *GetParamStr(OGRSTLabelParam eParam, GBool &bValueIsNull); 00473 int GetParamNum(OGRSTLabelParam eParam,GBool &bValueIsNull); 00474 double GetParamDbl(OGRSTLabelParam eParam,GBool &bValueIsNull); 00475 void SetParamStr(OGRSTLabelParam eParam, const char *pszParamString); 00476 void SetParamNum(OGRSTLabelParam eParam, int nParam); 00477 void SetParamDbl(OGRSTLabelParam eParam, double dfParam); 00478 const char *GetStyleString() CPL_OVERRIDE; 00479 }; 00480 00482 00483 #endif /* OGR_FEATURESTYLE_INCLUDE */
1.7.6.1.