ogr_featurestyle.h 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466
  1. /******************************************************************************
  2. * $Id: ogr_featurestyle.h 19442 2010-04-18 00:02:37Z mloskot $
  3. *
  4. * Project: OpenGIS Simple Features Reference Implementation
  5. * Purpose: Define of Feature Representation
  6. * Author: Stephane Villeneuve, stephane.v@videtron.ca
  7. *
  8. ******************************************************************************
  9. * Copyright (c) 1999, Frank Warmerdam
  10. *
  11. * Permission is hereby granted, free of charge, to any person obtaining a
  12. * copy of this software and associated documentation files (the "Software"),
  13. * to deal in the Software without restriction, including without limitation
  14. * the rights to use, copy, modify, merge, publish, distribute, sublicense,
  15. * and/or sell copies of the Software, and to permit persons to whom the
  16. * Software is furnished to do so, subject to the following conditions:
  17. *
  18. * The above copyright notice and this permission notice shall be included
  19. * in all copies or substantial portions of the Software.
  20. *
  21. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
  22. * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  23. * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
  24. * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  25. * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
  26. * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
  27. * DEALINGS IN THE SOFTWARE.
  28. ****************************************************************************/
  29. #ifndef OGR_FEATURESTYLE_INCLUDE
  30. #define OGR_FEATURESTYLE_INCLUDE
  31. #include "cpl_conv.h"
  32. #include "cpl_string.h"
  33. #include "ogr_core.h"
  34. class OGRFeature;
  35. /**
  36. * \file ogr_featurestyle.h
  37. *
  38. * Simple feature style classes.
  39. */
  40. /*
  41. * All OGRStyleTool param lists are defined in ogr_core.h.
  42. */
  43. typedef enum ogr_style_type
  44. {
  45. OGRSTypeString,
  46. OGRSTypeDouble,
  47. OGRSTypeInteger,
  48. OGRSTypeBoolean
  49. } OGRSType;
  50. typedef struct ogr_style_param
  51. {
  52. int eParam;
  53. const char *pszToken;
  54. GBool bGeoref;
  55. OGRSType eType;
  56. } OGRStyleParamId;
  57. typedef struct ogr_style_value
  58. {
  59. char *pszValue;
  60. double dfValue;
  61. int nValue; // Used for both integer and boolean types
  62. GBool bValid;
  63. OGRSTUnitId eUnit;
  64. } OGRStyleValue;
  65. //Everytime a pszStyleString gived in parameter is NULL,
  66. // the StyleString defined in the Mgr will be use.
  67. /**
  68. * This class represents a style table
  69. */
  70. class CPL_DLL OGRStyleTable
  71. {
  72. private:
  73. char **m_papszStyleTable;
  74. CPLString osLastRequestedStyleName;
  75. int iNextStyle;
  76. public:
  77. OGRStyleTable();
  78. ~OGRStyleTable();
  79. GBool AddStyle(const char *pszName,const char *pszStyleString);
  80. GBool RemoveStyle(const char *pszName);
  81. GBool ModifyStyle(const char *pszName, const char *pszStyleString);
  82. GBool SaveStyleTable(const char *pszFilename);
  83. GBool LoadStyleTable(const char *pszFilename);
  84. const char *Find(const char *pszStyleString);
  85. GBool IsExist(const char *pszName);
  86. const char *GetStyleName(const char *pszName);
  87. void Print(FILE *fpOut);
  88. void Clear();
  89. OGRStyleTable *Clone();
  90. void ResetStyleStringReading();
  91. const char *GetNextStyle();
  92. const char *GetLastStyleName();
  93. };
  94. class OGRStyleTool;
  95. /**
  96. * This class represents a style manager
  97. */
  98. class CPL_DLL OGRStyleMgr
  99. {
  100. private:
  101. OGRStyleTable *m_poDataSetStyleTable;
  102. char *m_pszStyleString;
  103. public:
  104. OGRStyleMgr(OGRStyleTable *poDataSetStyleTable = NULL);
  105. ~OGRStyleMgr();
  106. GBool SetFeatureStyleString(OGRFeature *,const char *pszStyleString=NULL,
  107. GBool bNoMatching = FALSE);
  108. /*it will set in the gived feature the pszStyleString with
  109. the style or will set the style name found in
  110. dataset StyleTable (if bNoMatching == FALSE)*/
  111. const char *InitFromFeature(OGRFeature *);
  112. GBool InitStyleString(const char *pszStyleString = NULL);
  113. const char *GetStyleName(const char *pszStyleString= NULL);
  114. const char *GetStyleByName(const char *pszStyleName);
  115. GBool AddStyle(const char *pszStyleName, const char *pszStyleString=NULL);
  116. const char *GetStyleString(OGRFeature * = NULL);
  117. GBool AddPart(OGRStyleTool *);
  118. GBool AddPart(const char *);
  119. int GetPartCount(const char *pszStyleString = NULL);
  120. OGRStyleTool *GetPart(int hPartId, const char *pszStyleString = NULL);
  121. /*It could have a reference counting processus for the OGRStyleTable, if
  122. needed */
  123. OGRStyleTable *GetDataSetStyleTable(){return m_poDataSetStyleTable;}
  124. OGRStyleTool *CreateStyleToolFromStyleString(const char *pszStyleString);
  125. };
  126. /**
  127. * This class represents a style tool
  128. */
  129. class CPL_DLL OGRStyleTool
  130. {
  131. private:
  132. GBool m_bModified;
  133. GBool m_bParsed;
  134. double m_dfScale;
  135. OGRSTUnitId m_eUnit;
  136. OGRSTClassId m_eClassId;
  137. char *m_pszStyleString;
  138. virtual GBool Parse() = 0;
  139. protected:
  140. GBool Parse(const OGRStyleParamId* pasStyle,
  141. OGRStyleValue* pasValue,
  142. int nCount);
  143. public:
  144. OGRStyleTool(){}
  145. OGRStyleTool(OGRSTClassId eClassId);
  146. virtual ~OGRStyleTool();
  147. GBool GetRGBFromString(const char *pszColor, int &nRed, int &nGreen,
  148. int &nBlue, int &nTransparence);
  149. int GetSpecificId(const char *pszId, const char *pszWanted);
  150. GBool IsStyleModified() {return m_bModified;}
  151. void StyleModified() {m_bModified = TRUE;}
  152. GBool IsStyleParsed() {return m_bParsed;}
  153. void StyleParsed() {m_bParsed = TRUE;}
  154. OGRSTClassId GetType();
  155. void SetInternalInputUnitFromParam(char *pszString);
  156. void SetUnit(OGRSTUnitId,double dfScale = 1.0); //the dfScale will be
  157. //used if we are working with Ground Unit ( ground = paper * scale);
  158. OGRSTUnitId GetUnit(){return m_eUnit;}
  159. /* It's existe two way to set the parameters in the Style, with generic
  160. methodes (using a defined enumeration) or with the reel method specific
  161. for Each style tools.*/
  162. virtual const char *GetStyleString() = 0;
  163. void SetStyleString(const char *pszStyleString);
  164. const char *GetStyleString(const OGRStyleParamId *pasStyleParam ,
  165. OGRStyleValue *pasStyleValue, int nSize);
  166. const char *GetParamStr(const OGRStyleParamId &sStyleParam ,
  167. OGRStyleValue &sStyleValue,
  168. GBool &bValueIsNull);
  169. int GetParamNum(const OGRStyleParamId &sStyleParam ,
  170. OGRStyleValue &sStyleValue,
  171. GBool &bValueIsNull);
  172. double GetParamDbl(const OGRStyleParamId &sStyleParam ,
  173. OGRStyleValue &sStyleValue,
  174. GBool &bValueIsNull);
  175. void SetParamStr(const OGRStyleParamId &sStyleParam ,
  176. OGRStyleValue &sStyleValue,
  177. const char *pszParamString);
  178. void SetParamNum(const OGRStyleParamId &sStyleParam ,
  179. OGRStyleValue &sStyleValue,
  180. int nParam);
  181. void SetParamDbl(const OGRStyleParamId &sStyleParam ,
  182. OGRStyleValue &sStyleValue,
  183. double dfParam);
  184. double ComputeWithUnit(double, OGRSTUnitId);
  185. int ComputeWithUnit(int , OGRSTUnitId);
  186. };
  187. /**
  188. * This class represents a style pen
  189. */
  190. class CPL_DLL OGRStylePen : public OGRStyleTool
  191. {
  192. private:
  193. OGRStyleValue *m_pasStyleValue;
  194. GBool Parse();
  195. public:
  196. OGRStylePen();
  197. virtual ~OGRStylePen();
  198. /**********************************************************************/
  199. /* Explicit fct for all parameters defined in the Drawing tools Pen */
  200. /**********************************************************************/
  201. const char *Color(GBool &bDefault){return GetParamStr(OGRSTPenColor,bDefault);}
  202. void SetColor(const char *pszColor){SetParamStr(OGRSTPenColor,pszColor);}
  203. double Width(GBool &bDefault){return GetParamDbl(OGRSTPenWidth,bDefault);}
  204. void SetWidth(double dfWidth){SetParamDbl(OGRSTPenWidth,dfWidth);}
  205. const char *Pattern(GBool &bDefault){return (const char *)GetParamStr(OGRSTPenPattern,bDefault);}
  206. void SetPattern(const char *pszPattern){SetParamStr(OGRSTPenPattern,pszPattern);}
  207. const char *Id(GBool &bDefault){return GetParamStr(OGRSTPenId,bDefault);}
  208. void SetId(const char *pszId){SetParamStr(OGRSTPenId,pszId);}
  209. double PerpendicularOffset(GBool &bDefault){return GetParamDbl(OGRSTPenPerOffset,bDefault);}
  210. void SetPerpendicularOffset(double dfPerp){SetParamDbl(OGRSTPenPerOffset,dfPerp);}
  211. const char *Cap(GBool &bDefault){return GetParamStr(OGRSTPenCap,bDefault);}
  212. void SetCap(const char *pszCap){SetParamStr(OGRSTPenCap,pszCap);}
  213. const char *Join(GBool &bDefault){return GetParamStr(OGRSTPenJoin,bDefault);}
  214. void SetJoin(const char *pszJoin){SetParamStr(OGRSTPenJoin,pszJoin);}
  215. int Priority(GBool &bDefault){return GetParamNum(OGRSTPenPriority,bDefault);}
  216. void SetPriority(int nPriority){SetParamNum(OGRSTPenPriority,nPriority);}
  217. /*****************************************************************/
  218. const char *GetParamStr(OGRSTPenParam eParam, GBool &bValueIsNull);
  219. int GetParamNum(OGRSTPenParam eParam,GBool &bValueIsNull);
  220. double GetParamDbl(OGRSTPenParam eParam,GBool &bValueIsNull);
  221. void SetParamStr(OGRSTPenParam eParam, const char *pszParamString);
  222. void SetParamNum(OGRSTPenParam eParam, int nParam);
  223. void SetParamDbl(OGRSTPenParam eParam, double dfParam);
  224. const char *GetStyleString();
  225. };
  226. /**
  227. * This class represents a style brush
  228. */
  229. class CPL_DLL OGRStyleBrush : public OGRStyleTool
  230. {
  231. private:
  232. OGRStyleValue *m_pasStyleValue;
  233. GBool Parse();
  234. public:
  235. OGRStyleBrush();
  236. virtual ~OGRStyleBrush();
  237. /* Explicit fct for all parameters defined in the Drawing tools Brush */
  238. const char *ForeColor(GBool &bDefault){return GetParamStr(OGRSTBrushFColor,bDefault);}
  239. void SetForeColor(const char *pszColor){SetParamStr(OGRSTBrushFColor,pszColor);}
  240. const char *BackColor(GBool &bDefault){return GetParamStr(OGRSTBrushBColor,bDefault);}
  241. void SetBackColor(const char *pszColor){SetParamStr(OGRSTBrushBColor,pszColor);}
  242. const char *Id(GBool &bDefault){ return GetParamStr(OGRSTBrushId,bDefault);}
  243. void SetId(const char *pszId){SetParamStr(OGRSTBrushId,pszId);}
  244. double Angle(GBool &bDefault){return GetParamDbl(OGRSTBrushAngle,bDefault);}
  245. void SetAngle(double dfAngle){SetParamDbl(OGRSTBrushAngle,dfAngle );}
  246. double Size(GBool &bDefault){return GetParamDbl(OGRSTBrushSize,bDefault);}
  247. void SetSize(double dfSize){SetParamDbl(OGRSTBrushSize,dfSize );}
  248. double SpacingX(GBool &bDefault){return GetParamDbl(OGRSTBrushDx,bDefault);}
  249. void SetSpacingX(double dfX){SetParamDbl(OGRSTBrushDx,dfX );}
  250. double SpacingY(GBool &bDefault){return GetParamDbl(OGRSTBrushDy,bDefault);}
  251. void SetSpacingY(double dfY){SetParamDbl(OGRSTBrushDy,dfY );}
  252. int Priority(GBool &bDefault){ return GetParamNum(OGRSTBrushPriority,bDefault);}
  253. void SetPriority(int nPriority){ SetParamNum(OGRSTBrushPriority,nPriority);}
  254. /*****************************************************************/
  255. const char *GetParamStr(OGRSTBrushParam eParam, GBool &bValueIsNull);
  256. int GetParamNum(OGRSTBrushParam eParam,GBool &bValueIsNull);
  257. double GetParamDbl(OGRSTBrushParam eParam,GBool &bValueIsNull);
  258. void SetParamStr(OGRSTBrushParam eParam, const char *pszParamString);
  259. void SetParamNum(OGRSTBrushParam eParam, int nParam);
  260. void SetParamDbl(OGRSTBrushParam eParam, double dfParam);
  261. const char *GetStyleString();
  262. };
  263. /**
  264. * This class represents a style symbol
  265. */
  266. class CPL_DLL OGRStyleSymbol : public OGRStyleTool
  267. {
  268. private:
  269. OGRStyleValue *m_pasStyleValue;
  270. GBool Parse();
  271. public:
  272. OGRStyleSymbol();
  273. virtual ~OGRStyleSymbol();
  274. /*****************************************************************/
  275. /* Explicit fct for all parameters defined in the Drawing tools */
  276. /*****************************************************************/
  277. const char *Id(GBool &bDefault){return GetParamStr(OGRSTSymbolId,bDefault);}
  278. void SetId(const char *pszId){ SetParamStr(OGRSTSymbolId,pszId);}
  279. double Angle(GBool &bDefault){ return GetParamDbl(OGRSTSymbolAngle,bDefault);}
  280. void SetAngle(double dfAngle){SetParamDbl(OGRSTSymbolAngle,dfAngle );}
  281. const char *Color(GBool &bDefault){return GetParamStr(OGRSTSymbolColor,bDefault);}
  282. void SetColor(const char *pszColor){SetParamStr(OGRSTSymbolColor,pszColor);}
  283. double Size(GBool &bDefault){ return GetParamDbl(OGRSTSymbolSize,bDefault);}
  284. void SetSize(double dfSize){ SetParamDbl(OGRSTSymbolSize,dfSize );}
  285. double SpacingX(GBool &bDefault){return GetParamDbl(OGRSTSymbolDx,bDefault);}
  286. void SetSpacingX(double dfX){SetParamDbl(OGRSTSymbolDx,dfX );}
  287. double SpacingY(GBool &bDefault){return GetParamDbl(OGRSTSymbolDy,bDefault);}
  288. void SetSpacingY(double dfY){SetParamDbl(OGRSTSymbolDy,dfY );}
  289. double Step(GBool &bDefault){return GetParamDbl(OGRSTSymbolStep,bDefault);}
  290. void SetStep(double dfStep){SetParamDbl(OGRSTSymbolStep,dfStep );}
  291. double Offset(GBool &bDefault){return GetParamDbl(OGRSTSymbolOffset,bDefault);}
  292. void SetOffset(double dfOffset){SetParamDbl(OGRSTSymbolOffset,dfOffset );}
  293. double Perp(GBool &bDefault){return GetParamDbl(OGRSTSymbolPerp,bDefault);}
  294. void SetPerp(double dfPerp){SetParamDbl(OGRSTSymbolPerp,dfPerp );}
  295. int Priority(GBool &bDefault){return GetParamNum(OGRSTSymbolPriority,bDefault);}
  296. void SetPriority(int nPriority){SetParamNum(OGRSTSymbolPriority,nPriority);}
  297. const char *FontName(GBool &bDefault)
  298. {return GetParamStr(OGRSTSymbolFontName,bDefault);}
  299. void SetFontName(const char *pszFontName)
  300. {SetParamStr(OGRSTSymbolFontName,pszFontName);}
  301. const char *OColor(GBool &bDefault){return GetParamStr(OGRSTSymbolOColor,bDefault);}
  302. void SetOColor(const char *pszColor){SetParamStr(OGRSTSymbolOColor,pszColor);}
  303. /*****************************************************************/
  304. const char *GetParamStr(OGRSTSymbolParam eParam, GBool &bValueIsNull);
  305. int GetParamNum(OGRSTSymbolParam eParam,GBool &bValueIsNull);
  306. double GetParamDbl(OGRSTSymbolParam eParam,GBool &bValueIsNull);
  307. void SetParamStr(OGRSTSymbolParam eParam, const char *pszParamString);
  308. void SetParamNum(OGRSTSymbolParam eParam, int nParam);
  309. void SetParamDbl(OGRSTSymbolParam eParam, double dfParam);
  310. const char *GetStyleString();
  311. };
  312. /**
  313. * This class represents a style label
  314. */
  315. class CPL_DLL OGRStyleLabel : public OGRStyleTool
  316. {
  317. private:
  318. OGRStyleValue *m_pasStyleValue;
  319. GBool Parse();
  320. public:
  321. OGRStyleLabel();
  322. virtual ~OGRStyleLabel();
  323. /*****************************************************************/
  324. /* Explicit fct for all parameters defined in the Drawing tools */
  325. /*****************************************************************/
  326. const char *FontName(GBool &bDefault){return GetParamStr(OGRSTLabelFontName,bDefault);}
  327. void SetFontName(const char *pszFontName){SetParamStr(OGRSTLabelFontName,pszFontName);}
  328. double Size(GBool &bDefault){return GetParamDbl(OGRSTLabelSize,bDefault);}
  329. void SetSize(double dfSize){SetParamDbl(OGRSTLabelSize,dfSize);}
  330. const char *TextString(GBool &bDefault){return GetParamStr(OGRSTLabelTextString,bDefault);}
  331. void SetTextString(const char *pszTextString){SetParamStr(OGRSTLabelTextString,pszTextString);}
  332. double Angle(GBool &bDefault){return GetParamDbl(OGRSTLabelAngle,bDefault);}
  333. void SetAngle(double dfAngle){SetParamDbl(OGRSTLabelAngle,dfAngle);}
  334. const char *ForeColor(GBool &bDefault){return GetParamStr(OGRSTLabelFColor,bDefault);}
  335. void SetForColor(const char *pszForColor){SetParamStr(OGRSTLabelFColor,pszForColor);}
  336. const char *BackColor(GBool &bDefault){return GetParamStr(OGRSTLabelBColor,bDefault);}
  337. void SetBackColor(const char *pszBackColor){SetParamStr(OGRSTLabelBColor,pszBackColor);}
  338. const char *Placement(GBool &bDefault){return GetParamStr(OGRSTLabelPlacement,bDefault);}
  339. void SetPlacement(const char *pszPlacement){SetParamStr(OGRSTLabelPlacement,pszPlacement);}
  340. int Anchor(GBool &bDefault){return GetParamNum(OGRSTLabelAnchor,bDefault);}
  341. void SetAnchor(int nAnchor){SetParamNum(OGRSTLabelAnchor,nAnchor);}
  342. double SpacingX(GBool &bDefault){return GetParamDbl(OGRSTLabelDx,bDefault);}
  343. void SetSpacingX(double dfX){SetParamDbl(OGRSTLabelDx,dfX);}
  344. double SpacingY(GBool &bDefault){return GetParamDbl(OGRSTLabelDy,bDefault);}
  345. void SetSpacingY(double dfY){SetParamDbl(OGRSTLabelDy,dfY);}
  346. double Perp(GBool &bDefault){return GetParamDbl(OGRSTLabelPerp,bDefault);}
  347. void SetPerp(double dfPerp){SetParamDbl(OGRSTLabelPerp,dfPerp);}
  348. GBool Bold(GBool &bDefault){return GetParamNum(OGRSTLabelBold,bDefault);}
  349. void SetBold(GBool bBold){SetParamNum(OGRSTLabelBold,bBold);}
  350. GBool Italic(GBool &bDefault){return GetParamNum(OGRSTLabelItalic,bDefault);}
  351. void SetItalic(GBool bItalic){SetParamNum(OGRSTLabelItalic,bItalic);}
  352. GBool Underline(GBool &bDefault){return GetParamNum(OGRSTLabelUnderline,bDefault);}
  353. void SetUnderline(GBool bUnderline){SetParamNum(OGRSTLabelUnderline,bUnderline);}
  354. int Priority(GBool &bDefault){return GetParamNum(OGRSTLabelPriority,bDefault);}
  355. void SetPriority(int nPriority){SetParamNum(OGRSTLabelPriority,nPriority);}
  356. GBool Strikeout(GBool &bDefault){return GetParamNum(OGRSTLabelStrikeout,bDefault);}
  357. void SetStrikeout(GBool bStrikeout){SetParamNum(OGRSTLabelStrikeout,bStrikeout);}
  358. double Stretch(GBool &bDefault){return GetParamDbl(OGRSTLabelStretch,bDefault);}
  359. void SetStretch(double dfStretch){SetParamDbl(OGRSTLabelStretch,dfStretch);}
  360. const char *AdjustmentHor(GBool &bDefault){return GetParamStr(OGRSTLabelAdjHor,bDefault);}
  361. void SetAdjustmentHor(const char *pszAdjustmentHor){SetParamStr(OGRSTLabelAdjHor,pszAdjustmentHor);}
  362. const char *AdjustmentVert(GBool &bDefault){return GetParamStr(OGRSTLabelAdjVert,bDefault);}
  363. void SetAdjustmentVert(const char *pszAdjustmentVert){SetParamStr(OGRSTLabelAdjHor,pszAdjustmentVert);}
  364. const char *ShadowColor(GBool &bDefault){return GetParamStr(OGRSTLabelHColor,bDefault);}
  365. void SetShadowColor(const char *pszShadowColor){SetParamStr(OGRSTLabelHColor,pszShadowColor);}
  366. const char *OutlineColor(GBool &bDefault){return GetParamStr(OGRSTLabelOColor,bDefault);}
  367. void SetOutlineColor(const char *pszOutlineColor){SetParamStr(OGRSTLabelOColor,pszOutlineColor);}
  368. /*****************************************************************/
  369. const char *GetParamStr(OGRSTLabelParam eParam, GBool &bValueIsNull);
  370. int GetParamNum(OGRSTLabelParam eParam,GBool &bValueIsNull);
  371. double GetParamDbl(OGRSTLabelParam eParam,GBool &bValueIsNull);
  372. void SetParamStr(OGRSTLabelParam eParam, const char *pszParamString);
  373. void SetParamNum(OGRSTLabelParam eParam, int nParam);
  374. void SetParamDbl(OGRSTLabelParam eParam, double dfParam);
  375. const char *GetStyleString();
  376. };
  377. #endif /* OGR_FEATURESTYLE_INCLUDE */