gooderp18绿色标准版
Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.

495 lines
19KB

  1. /******************************************************************************
  2. * $Id: ogr_featurestyle.h 1e082b59d067cf2edf5713e15101c0b369d37e9a 2018-12-02 22:16:23 +0300 drons $
  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. /** OGR Style type */
  44. typedef enum ogr_style_type
  45. {
  46. OGRSTypeUnused = -1,
  47. OGRSTypeString,
  48. OGRSTypeDouble,
  49. OGRSTypeInteger,
  50. OGRSTypeBoolean
  51. } OGRSType;
  52. //! @cond Doxygen_Suppress
  53. typedef struct ogr_style_param
  54. {
  55. int eParam;
  56. const char *pszToken;
  57. GBool bGeoref;
  58. OGRSType eType;
  59. } OGRStyleParamId;
  60. typedef struct ogr_style_value
  61. {
  62. char *pszValue;
  63. double dfValue;
  64. int nValue; // Used for both integer and boolean types
  65. GBool bValid;
  66. OGRSTUnitId eUnit;
  67. } OGRStyleValue;
  68. //! @endcond
  69. // Every time a pszStyleString given in parameter is NULL,
  70. // the StyleString defined in the Mgr will be use.
  71. /**
  72. * This class represents a style table
  73. */
  74. class CPL_DLL OGRStyleTable
  75. {
  76. private:
  77. char **m_papszStyleTable = nullptr;
  78. CPLString osLastRequestedStyleName{};
  79. int iNextStyle = 0;
  80. CPL_DISALLOW_COPY_ASSIGN(OGRStyleTable)
  81. public:
  82. OGRStyleTable();
  83. ~OGRStyleTable();
  84. GBool AddStyle(const char *pszName,const char *pszStyleString);
  85. GBool RemoveStyle(const char *pszName);
  86. GBool ModifyStyle(const char *pszName, const char *pszStyleString);
  87. GBool SaveStyleTable(const char *pszFilename);
  88. GBool LoadStyleTable(const char *pszFilename);
  89. const char *Find(const char *pszStyleString);
  90. GBool IsExist(const char *pszName);
  91. const char *GetStyleName(const char *pszName);
  92. void Print(FILE *fpOut);
  93. void Clear();
  94. OGRStyleTable *Clone();
  95. void ResetStyleStringReading();
  96. const char *GetNextStyle();
  97. const char *GetLastStyleName();
  98. };
  99. class OGRStyleTool;
  100. /**
  101. * This class represents a style manager
  102. */
  103. class CPL_DLL OGRStyleMgr
  104. {
  105. private:
  106. OGRStyleTable *m_poDataSetStyleTable = nullptr;
  107. char *m_pszStyleString = nullptr;
  108. CPL_DISALLOW_COPY_ASSIGN(OGRStyleMgr)
  109. public:
  110. explicit OGRStyleMgr(OGRStyleTable *poDataSetStyleTable = nullptr);
  111. ~OGRStyleMgr();
  112. GBool SetFeatureStyleString(OGRFeature *,const char *pszStyleString=nullptr,
  113. GBool bNoMatching = FALSE);
  114. /* It will set in the given feature the pszStyleString with
  115. the style or will set the style name found in
  116. dataset StyleTable (if bNoMatching == FALSE). */
  117. const char *InitFromFeature(OGRFeature *);
  118. GBool InitStyleString(const char *pszStyleString = nullptr);
  119. const char *GetStyleName(const char *pszStyleString= nullptr);
  120. const char *GetStyleByName(const char *pszStyleName);
  121. GBool AddStyle(const char *pszStyleName, const char *pszStyleString=nullptr);
  122. const char *GetStyleString(OGRFeature * = nullptr);
  123. GBool AddPart(OGRStyleTool *);
  124. GBool AddPart(const char *);
  125. int GetPartCount(const char *pszStyleString = nullptr);
  126. OGRStyleTool *GetPart(int hPartId, const char *pszStyleString = nullptr);
  127. /* It could have a reference counting process us for the OGRStyleTable, if
  128. needed. */
  129. //! @cond Doxygen_Suppress
  130. OGRStyleTable *GetDataSetStyleTable(){return m_poDataSetStyleTable;}
  131. OGRStyleTool *CreateStyleToolFromStyleString(const char *pszStyleString);
  132. //! @endcond
  133. };
  134. /**
  135. * This class represents a style tool
  136. */
  137. class CPL_DLL OGRStyleTool
  138. {
  139. private:
  140. GBool m_bModified = false;
  141. GBool m_bParsed = false;
  142. double m_dfScale = 1.0;
  143. OGRSTUnitId m_eUnit = OGRSTUMM;
  144. OGRSTClassId m_eClassId = OGRSTCNone;
  145. char *m_pszStyleString = nullptr;
  146. virtual GBool Parse() = 0;
  147. CPL_DISALLOW_COPY_ASSIGN(OGRStyleTool)
  148. protected:
  149. #ifndef DOXYGEN_SKIP
  150. GBool Parse(const OGRStyleParamId* pasStyle,
  151. OGRStyleValue* pasValue,
  152. int nCount);
  153. #endif
  154. public:
  155. OGRStyleTool() :
  156. m_bModified(FALSE),
  157. m_bParsed(FALSE),
  158. m_dfScale(0.0),
  159. m_eUnit(OGRSTUGround),
  160. m_eClassId(OGRSTCNone),
  161. m_pszStyleString(nullptr)
  162. {}
  163. explicit OGRStyleTool(OGRSTClassId eClassId);
  164. virtual ~OGRStyleTool();
  165. static GBool GetRGBFromString(const char *pszColor, int &nRed, int &nGreen,
  166. int &nBlue, int &nTransparence);
  167. static int GetSpecificId(const char *pszId, const char *pszWanted);
  168. #ifndef DOXYGEN_SKIP
  169. GBool IsStyleModified() {return m_bModified;}
  170. void StyleModified() {m_bModified = TRUE;}
  171. GBool IsStyleParsed() {return m_bParsed;}
  172. void StyleParsed() {m_bParsed = TRUE;}
  173. #endif
  174. OGRSTClassId GetType();
  175. #ifndef DOXYGEN_SKIP
  176. void SetInternalInputUnitFromParam(char *pszString);
  177. #endif
  178. void SetUnit(OGRSTUnitId,double dfScale = 1.0); //the dfScale will be
  179. //used if we are working with Ground Unit ( ground = paper * scale);
  180. OGRSTUnitId GetUnit(){return m_eUnit;}
  181. // There are two way to set the parameters in the Style, with generic
  182. // methods (using a defined enumeration) or with the reel method specific
  183. // for Each style tools.
  184. virtual const char *GetStyleString() = 0;
  185. void SetStyleString(const char *pszStyleString);
  186. const char *GetStyleString(const OGRStyleParamId *pasStyleParam ,
  187. OGRStyleValue *pasStyleValue, int nSize);
  188. const char *GetParamStr(const OGRStyleParamId &sStyleParam ,
  189. OGRStyleValue &sStyleValue,
  190. GBool &bValueIsNull);
  191. int GetParamNum(const OGRStyleParamId &sStyleParam ,
  192. OGRStyleValue &sStyleValue,
  193. GBool &bValueIsNull);
  194. double GetParamDbl(const OGRStyleParamId &sStyleParam ,
  195. OGRStyleValue &sStyleValue,
  196. GBool &bValueIsNull);
  197. void SetParamStr(const OGRStyleParamId &sStyleParam ,
  198. OGRStyleValue &sStyleValue,
  199. const char *pszParamString);
  200. void SetParamNum(const OGRStyleParamId &sStyleParam ,
  201. OGRStyleValue &sStyleValue,
  202. int nParam);
  203. void SetParamDbl(const OGRStyleParamId &sStyleParam ,
  204. OGRStyleValue &sStyleValue,
  205. double dfParam);
  206. #ifndef DOXYGEN_SKIP
  207. double ComputeWithUnit(double, OGRSTUnitId);
  208. int ComputeWithUnit(int , OGRSTUnitId);
  209. #endif
  210. };
  211. //! @cond Doxygen_Suppress
  212. /**
  213. * This class represents a style pen
  214. */
  215. class CPL_DLL OGRStylePen : public OGRStyleTool
  216. {
  217. private:
  218. OGRStyleValue *m_pasStyleValue;
  219. GBool Parse() override;
  220. CPL_DISALLOW_COPY_ASSIGN(OGRStylePen)
  221. public:
  222. OGRStylePen();
  223. ~OGRStylePen() override;
  224. /**********************************************************************/
  225. /* Explicit fct for all parameters defined in the Drawing tools Pen */
  226. /**********************************************************************/
  227. const char *Color(GBool &bDefault){return GetParamStr(OGRSTPenColor,bDefault);}
  228. void SetColor(const char *pszColor){SetParamStr(OGRSTPenColor,pszColor);}
  229. double Width(GBool &bDefault){return GetParamDbl(OGRSTPenWidth,bDefault);}
  230. void SetWidth(double dfWidth){SetParamDbl(OGRSTPenWidth,dfWidth);}
  231. const char *Pattern(GBool &bDefault){return GetParamStr(OGRSTPenPattern,bDefault);}
  232. void SetPattern(const char *pszPattern){SetParamStr(OGRSTPenPattern,pszPattern);}
  233. const char *Id(GBool &bDefault){return GetParamStr(OGRSTPenId,bDefault);}
  234. void SetId(const char *pszId){SetParamStr(OGRSTPenId,pszId);}
  235. double PerpendicularOffset(GBool &bDefault){return GetParamDbl(OGRSTPenPerOffset,bDefault);}
  236. void SetPerpendicularOffset(double dfPerp){SetParamDbl(OGRSTPenPerOffset,dfPerp);}
  237. const char *Cap(GBool &bDefault){return GetParamStr(OGRSTPenCap,bDefault);}
  238. void SetCap(const char *pszCap){SetParamStr(OGRSTPenCap,pszCap);}
  239. const char *Join(GBool &bDefault){return GetParamStr(OGRSTPenJoin,bDefault);}
  240. void SetJoin(const char *pszJoin){SetParamStr(OGRSTPenJoin,pszJoin);}
  241. int Priority(GBool &bDefault){return GetParamNum(OGRSTPenPriority,bDefault);}
  242. void SetPriority(int nPriority){SetParamNum(OGRSTPenPriority,nPriority);}
  243. /*****************************************************************/
  244. const char *GetParamStr(OGRSTPenParam eParam, GBool &bValueIsNull);
  245. int GetParamNum(OGRSTPenParam eParam,GBool &bValueIsNull);
  246. double GetParamDbl(OGRSTPenParam eParam,GBool &bValueIsNull);
  247. void SetParamStr(OGRSTPenParam eParam, const char *pszParamString);
  248. void SetParamNum(OGRSTPenParam eParam, int nParam);
  249. void SetParamDbl(OGRSTPenParam eParam, double dfParam);
  250. const char *GetStyleString() override;
  251. };
  252. /**
  253. * This class represents a style brush
  254. */
  255. class CPL_DLL OGRStyleBrush : public OGRStyleTool
  256. {
  257. private:
  258. OGRStyleValue *m_pasStyleValue;
  259. GBool Parse() override;
  260. CPL_DISALLOW_COPY_ASSIGN(OGRStyleBrush)
  261. public:
  262. OGRStyleBrush();
  263. ~OGRStyleBrush() override;
  264. /* Explicit fct for all parameters defined in the Drawing tools Brush */
  265. const char *ForeColor(GBool &bDefault){return GetParamStr(OGRSTBrushFColor,bDefault);}
  266. void SetForeColor(const char *pszColor){SetParamStr(OGRSTBrushFColor,pszColor);}
  267. const char *BackColor(GBool &bDefault){return GetParamStr(OGRSTBrushBColor,bDefault);}
  268. void SetBackColor(const char *pszColor){SetParamStr(OGRSTBrushBColor,pszColor);}
  269. const char *Id(GBool &bDefault){ return GetParamStr(OGRSTBrushId,bDefault);}
  270. void SetId(const char *pszId){SetParamStr(OGRSTBrushId,pszId);}
  271. double Angle(GBool &bDefault){return GetParamDbl(OGRSTBrushAngle,bDefault);}
  272. void SetAngle(double dfAngle){SetParamDbl(OGRSTBrushAngle,dfAngle );}
  273. double Size(GBool &bDefault){return GetParamDbl(OGRSTBrushSize,bDefault);}
  274. void SetSize(double dfSize){SetParamDbl(OGRSTBrushSize,dfSize );}
  275. double SpacingX(GBool &bDefault){return GetParamDbl(OGRSTBrushDx,bDefault);}
  276. void SetSpacingX(double dfX){SetParamDbl(OGRSTBrushDx,dfX );}
  277. double SpacingY(GBool &bDefault){return GetParamDbl(OGRSTBrushDy,bDefault);}
  278. void SetSpacingY(double dfY){SetParamDbl(OGRSTBrushDy,dfY );}
  279. int Priority(GBool &bDefault){ return GetParamNum(OGRSTBrushPriority,bDefault);}
  280. void SetPriority(int nPriority){ SetParamNum(OGRSTBrushPriority,nPriority);}
  281. /*****************************************************************/
  282. const char *GetParamStr(OGRSTBrushParam eParam, GBool &bValueIsNull);
  283. int GetParamNum(OGRSTBrushParam eParam,GBool &bValueIsNull);
  284. double GetParamDbl(OGRSTBrushParam eParam,GBool &bValueIsNull);
  285. void SetParamStr(OGRSTBrushParam eParam, const char *pszParamString);
  286. void SetParamNum(OGRSTBrushParam eParam, int nParam);
  287. void SetParamDbl(OGRSTBrushParam eParam, double dfParam);
  288. const char *GetStyleString() override;
  289. };
  290. /**
  291. * This class represents a style symbol
  292. */
  293. class CPL_DLL OGRStyleSymbol : public OGRStyleTool
  294. {
  295. private:
  296. OGRStyleValue *m_pasStyleValue;
  297. GBool Parse() override;
  298. CPL_DISALLOW_COPY_ASSIGN(OGRStyleSymbol)
  299. public:
  300. OGRStyleSymbol();
  301. ~OGRStyleSymbol() override;
  302. /*****************************************************************/
  303. /* Explicit fct for all parameters defined in the Drawing tools */
  304. /*****************************************************************/
  305. const char *Id(GBool &bDefault){return GetParamStr(OGRSTSymbolId,bDefault);}
  306. void SetId(const char *pszId){ SetParamStr(OGRSTSymbolId,pszId);}
  307. double Angle(GBool &bDefault){ return GetParamDbl(OGRSTSymbolAngle,bDefault);}
  308. void SetAngle(double dfAngle){SetParamDbl(OGRSTSymbolAngle,dfAngle );}
  309. const char *Color(GBool &bDefault){return GetParamStr(OGRSTSymbolColor,bDefault);}
  310. void SetColor(const char *pszColor){SetParamStr(OGRSTSymbolColor,pszColor);}
  311. double Size(GBool &bDefault){ return GetParamDbl(OGRSTSymbolSize,bDefault);}
  312. void SetSize(double dfSize){ SetParamDbl(OGRSTSymbolSize,dfSize );}
  313. double SpacingX(GBool &bDefault){return GetParamDbl(OGRSTSymbolDx,bDefault);}
  314. void SetSpacingX(double dfX){SetParamDbl(OGRSTSymbolDx,dfX );}
  315. double SpacingY(GBool &bDefault){return GetParamDbl(OGRSTSymbolDy,bDefault);}
  316. void SetSpacingY(double dfY){SetParamDbl(OGRSTSymbolDy,dfY );}
  317. double Step(GBool &bDefault){return GetParamDbl(OGRSTSymbolStep,bDefault);}
  318. void SetStep(double dfStep){SetParamDbl(OGRSTSymbolStep,dfStep );}
  319. double Offset(GBool &bDefault){return GetParamDbl(OGRSTSymbolOffset,bDefault);}
  320. void SetOffset(double dfOffset){SetParamDbl(OGRSTSymbolOffset,dfOffset );}
  321. double Perp(GBool &bDefault){return GetParamDbl(OGRSTSymbolPerp,bDefault);}
  322. void SetPerp(double dfPerp){SetParamDbl(OGRSTSymbolPerp,dfPerp );}
  323. int Priority(GBool &bDefault){return GetParamNum(OGRSTSymbolPriority,bDefault);}
  324. void SetPriority(int nPriority){SetParamNum(OGRSTSymbolPriority,nPriority);}
  325. const char *FontName(GBool &bDefault)
  326. {return GetParamStr(OGRSTSymbolFontName,bDefault);}
  327. void SetFontName(const char *pszFontName)
  328. {SetParamStr(OGRSTSymbolFontName,pszFontName);}
  329. const char *OColor(GBool &bDefault){return GetParamStr(OGRSTSymbolOColor,bDefault);}
  330. void SetOColor(const char *pszColor){SetParamStr(OGRSTSymbolOColor,pszColor);}
  331. /*****************************************************************/
  332. const char *GetParamStr(OGRSTSymbolParam eParam, GBool &bValueIsNull);
  333. int GetParamNum(OGRSTSymbolParam eParam,GBool &bValueIsNull);
  334. double GetParamDbl(OGRSTSymbolParam eParam,GBool &bValueIsNull);
  335. void SetParamStr(OGRSTSymbolParam eParam, const char *pszParamString);
  336. void SetParamNum(OGRSTSymbolParam eParam, int nParam);
  337. void SetParamDbl(OGRSTSymbolParam eParam, double dfParam);
  338. const char *GetStyleString() override;
  339. };
  340. /**
  341. * This class represents a style label
  342. */
  343. class CPL_DLL OGRStyleLabel : public OGRStyleTool
  344. {
  345. private:
  346. OGRStyleValue *m_pasStyleValue;
  347. GBool Parse() override;
  348. CPL_DISALLOW_COPY_ASSIGN(OGRStyleLabel)
  349. public:
  350. OGRStyleLabel();
  351. ~OGRStyleLabel() override;
  352. /*****************************************************************/
  353. /* Explicit fct for all parameters defined in the Drawing tools */
  354. /*****************************************************************/
  355. const char *FontName(GBool &bDefault){return GetParamStr(OGRSTLabelFontName,bDefault);}
  356. void SetFontName(const char *pszFontName){SetParamStr(OGRSTLabelFontName,pszFontName);}
  357. double Size(GBool &bDefault){return GetParamDbl(OGRSTLabelSize,bDefault);}
  358. void SetSize(double dfSize){SetParamDbl(OGRSTLabelSize,dfSize);}
  359. const char *TextString(GBool &bDefault){return GetParamStr(OGRSTLabelTextString,bDefault);}
  360. void SetTextString(const char *pszTextString){SetParamStr(OGRSTLabelTextString,pszTextString);}
  361. double Angle(GBool &bDefault){return GetParamDbl(OGRSTLabelAngle,bDefault);}
  362. void SetAngle(double dfAngle){SetParamDbl(OGRSTLabelAngle,dfAngle);}
  363. const char *ForeColor(GBool &bDefault){return GetParamStr(OGRSTLabelFColor,bDefault);}
  364. void SetForColor(const char *pszForColor){SetParamStr(OGRSTLabelFColor,pszForColor);}
  365. const char *BackColor(GBool &bDefault){return GetParamStr(OGRSTLabelBColor,bDefault);}
  366. void SetBackColor(const char *pszBackColor){SetParamStr(OGRSTLabelBColor,pszBackColor);}
  367. const char *Placement(GBool &bDefault){return GetParamStr(OGRSTLabelPlacement,bDefault);}
  368. void SetPlacement(const char *pszPlacement){SetParamStr(OGRSTLabelPlacement,pszPlacement);}
  369. int Anchor(GBool &bDefault){return GetParamNum(OGRSTLabelAnchor,bDefault);}
  370. void SetAnchor(int nAnchor){SetParamNum(OGRSTLabelAnchor,nAnchor);}
  371. double SpacingX(GBool &bDefault){return GetParamDbl(OGRSTLabelDx,bDefault);}
  372. void SetSpacingX(double dfX){SetParamDbl(OGRSTLabelDx,dfX);}
  373. double SpacingY(GBool &bDefault){return GetParamDbl(OGRSTLabelDy,bDefault);}
  374. void SetSpacingY(double dfY){SetParamDbl(OGRSTLabelDy,dfY);}
  375. double Perp(GBool &bDefault){return GetParamDbl(OGRSTLabelPerp,bDefault);}
  376. void SetPerp(double dfPerp){SetParamDbl(OGRSTLabelPerp,dfPerp);}
  377. GBool Bold(GBool &bDefault){return GetParamNum(OGRSTLabelBold,bDefault);}
  378. void SetBold(GBool bBold){SetParamNum(OGRSTLabelBold,bBold);}
  379. GBool Italic(GBool &bDefault){return GetParamNum(OGRSTLabelItalic,bDefault);}
  380. void SetItalic(GBool bItalic){SetParamNum(OGRSTLabelItalic,bItalic);}
  381. GBool Underline(GBool &bDefault){return GetParamNum(OGRSTLabelUnderline,bDefault);}
  382. void SetUnderline(GBool bUnderline){SetParamNum(OGRSTLabelUnderline,bUnderline);}
  383. int Priority(GBool &bDefault){return GetParamNum(OGRSTLabelPriority,bDefault);}
  384. void SetPriority(int nPriority){SetParamNum(OGRSTLabelPriority,nPriority);}
  385. GBool Strikeout(GBool &bDefault){return GetParamNum(OGRSTLabelStrikeout,bDefault);}
  386. void SetStrikeout(GBool bStrikeout){SetParamNum(OGRSTLabelStrikeout,bStrikeout);}
  387. double Stretch(GBool &bDefault){return GetParamDbl(OGRSTLabelStretch,bDefault);}
  388. void SetStretch(double dfStretch){SetParamDbl(OGRSTLabelStretch,dfStretch);}
  389. const char *ShadowColor(GBool &bDefault){return GetParamStr(OGRSTLabelHColor,bDefault);}
  390. void SetShadowColor(const char *pszShadowColor){SetParamStr(OGRSTLabelHColor,pszShadowColor);}
  391. const char *OutlineColor(GBool &bDefault){return GetParamStr(OGRSTLabelOColor,bDefault);}
  392. void SetOutlineColor(const char *pszOutlineColor){SetParamStr(OGRSTLabelOColor,pszOutlineColor);}
  393. /*****************************************************************/
  394. const char *GetParamStr(OGRSTLabelParam eParam, GBool &bValueIsNull);
  395. int GetParamNum(OGRSTLabelParam eParam,GBool &bValueIsNull);
  396. double GetParamDbl(OGRSTLabelParam eParam,GBool &bValueIsNull);
  397. void SetParamStr(OGRSTLabelParam eParam, const char *pszParamString);
  398. void SetParamNum(OGRSTLabelParam eParam, int nParam);
  399. void SetParamDbl(OGRSTLabelParam eParam, double dfParam);
  400. const char *GetStyleString() override;
  401. };
  402. //! @endcond
  403. #endif /* OGR_FEATURESTYLE_INCLUDE */
上海开阖软件有限公司 沪ICP备12045867号-1