GDAL

ogr_featurestyle.h
Go to the documentation of this file.
1/******************************************************************************
2 * $Id$
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
30#ifndef OGR_FEATURESTYLE_INCLUDE
31#define OGR_FEATURESTYLE_INCLUDE
32
33#include "cpl_conv.h"
34#include "cpl_string.h"
35#include "ogr_core.h"
36
37class OGRFeature;
38
45/*
46 * All OGRStyleTool param lists are defined in ogr_core.h.
47 */
48
50 typedef enum ogr_style_type
51{
52 OGRSTypeUnused = -1,
53 OGRSTypeString,
54 OGRSTypeDouble,
55 OGRSTypeInteger,
56 OGRSTypeBoolean
57} OGRSType;
58
60typedef struct ogr_style_param
61{
62 int eParam;
63 const char *pszToken;
64 GBool bGeoref;
65 OGRSType eType;
66} OGRStyleParamId;
67
68typedef struct ogr_style_value
69{
70 char *pszValue;
71 double dfValue;
72 int nValue; // Used for both integer and boolean types
73 GBool bValid;
74 OGRSTUnitId eUnit;
75} OGRStyleValue;
76
78
79// Every time a pszStyleString given in parameter is NULL,
80// the StyleString defined in the Mgr will be use.
81
85 class CPL_DLL OGRStyleTable
86{
87 private:
88 char **m_papszStyleTable = nullptr;
89
90 CPLString osLastRequestedStyleName{};
91 int iNextStyle = 0;
92
93 CPL_DISALLOW_COPY_ASSIGN(OGRStyleTable)
94
95 public:
96 OGRStyleTable();
97 ~OGRStyleTable();
98 GBool AddStyle(const char *pszName, const char *pszStyleString);
99 GBool RemoveStyle(const char *pszName);
100 GBool ModifyStyle(const char *pszName, const char *pszStyleString);
101
102 GBool SaveStyleTable(const char *pszFilename);
103 GBool LoadStyleTable(const char *pszFilename);
104 const char *Find(const char *pszStyleString);
105 GBool IsExist(const char *pszName);
106 const char *GetStyleName(const char *pszName);
107 void Print(FILE *fpOut);
108 void Clear();
109 OGRStyleTable *Clone();
110 void ResetStyleStringReading();
111 const char *GetNextStyle();
112 const char *GetLastStyleName();
113};
114
115class OGRStyleTool;
116
120 class CPL_DLL OGRStyleMgr
121{
122 private:
123 OGRStyleTable *m_poDataSetStyleTable = nullptr;
124 char *m_pszStyleString = nullptr;
125
126 CPL_DISALLOW_COPY_ASSIGN(OGRStyleMgr)
127
128 public:
129 explicit OGRStyleMgr(OGRStyleTable *poDataSetStyleTable = nullptr);
130 ~OGRStyleMgr();
131
132 GBool SetFeatureStyleString(OGRFeature *,
133 const char *pszStyleString = nullptr,
134 GBool bNoMatching = FALSE);
135 /* It will set in the given feature the pszStyleString with
136 the style or will set the style name found in
137 dataset StyleTable (if bNoMatching == FALSE). */
138
139 const char *InitFromFeature(OGRFeature *);
140 GBool InitStyleString(const char *pszStyleString = nullptr);
141
142 const char *GetStyleName(const char *pszStyleString = nullptr);
143 const char *GetStyleByName(const char *pszStyleName);
144
145 GBool AddStyle(const char *pszStyleName,
146 const char *pszStyleString = nullptr);
147
148 const char *GetStyleString(OGRFeature * = nullptr);
149
150 GBool AddPart(OGRStyleTool *);
151 GBool AddPart(const char *);
152
153 int GetPartCount(const char *pszStyleString = nullptr);
154 OGRStyleTool *GetPart(int hPartId, const char *pszStyleString = nullptr);
155
156 /* It could have a reference counting process us for the OGRStyleTable, if
157 needed. */
159 OGRStyleTable *GetDataSetStyleTable()
160 {
161 return m_poDataSetStyleTable;
162 }
163
164 static OGRStyleTool *
165 CreateStyleToolFromStyleString(const char *pszStyleString);
167};
168
172 class CPL_DLL OGRStyleTool
173{
174 private:
175 GBool m_bModified = false;
176 GBool m_bParsed = false;
177 double m_dfScale = 1.0;
178 OGRSTUnitId m_eUnit = OGRSTUMM;
179 OGRSTClassId m_eClassId = OGRSTCNone;
180 char *m_pszStyleString = nullptr;
181
182 virtual GBool Parse() = 0;
183
184 CPL_DISALLOW_COPY_ASSIGN(OGRStyleTool)
185
186 protected:
187#ifndef DOXYGEN_SKIP
188 GBool Parse(const OGRStyleParamId *pasStyle, OGRStyleValue *pasValue,
189 int nCount);
190#endif
191
192 public:
193 OGRStyleTool()
194 : m_bModified(FALSE), m_bParsed(FALSE), m_dfScale(0.0),
195 m_eUnit(OGRSTUGround), m_eClassId(OGRSTCNone),
196 m_pszStyleString(nullptr)
197 {
198 }
199
200 explicit OGRStyleTool(OGRSTClassId eClassId);
201 virtual ~OGRStyleTool();
202
203 static GBool GetRGBFromString(const char *pszColor, int &nRed, int &nGreen,
204 int &nBlue, int &nTransparence);
205 static int GetSpecificId(const char *pszId, const char *pszWanted);
206
207#ifndef DOXYGEN_SKIP
208 GBool IsStyleModified()
209 {
210 return m_bModified;
211 }
212
213 void StyleModified()
214 {
215 m_bModified = TRUE;
216 }
217
218 GBool IsStyleParsed()
219 {
220 return m_bParsed;
221 }
222
223 void StyleParsed()
224 {
225 m_bParsed = TRUE;
226 }
227#endif
228
229 OGRSTClassId GetType();
230
231#ifndef DOXYGEN_SKIP
232 void SetInternalInputUnitFromParam(char *pszString);
233#endif
234
235 void SetUnit(OGRSTUnitId,
236 double dfScale = 1.0); // the dfScale will be
237 // used if we are working with Ground
238 // Unit ( ground = paper * scale);
239
240 OGRSTUnitId GetUnit()
241 {
242 return m_eUnit;
243 }
244
245 // There are two way to set the parameters in the Style, with generic
246 // methods (using a defined enumeration) or with the reel method specific
247 // for Each style tools.
248
249 virtual const char *GetStyleString() = 0;
250 void SetStyleString(const char *pszStyleString);
251 const char *GetStyleString(const OGRStyleParamId *pasStyleParam,
252 OGRStyleValue *pasStyleValue, int nSize);
253
254 const char *GetParamStr(const OGRStyleParamId &sStyleParam,
255 const OGRStyleValue &sStyleValue,
256 GBool &bValueIsNull);
257
258 int GetParamNum(const OGRStyleParamId &sStyleParam,
259 const OGRStyleValue &sStyleValue, GBool &bValueIsNull);
260
261 double GetParamDbl(const OGRStyleParamId &sStyleParam,
262 const OGRStyleValue &sStyleValue, GBool &bValueIsNull);
263
264 void SetParamStr(const OGRStyleParamId &sStyleParam,
265 OGRStyleValue &sStyleValue, const char *pszParamString);
266
267 void SetParamNum(const OGRStyleParamId &sStyleParam,
268 OGRStyleValue &sStyleValue, int nParam);
269
270 void SetParamDbl(const OGRStyleParamId &sStyleParam,
271 OGRStyleValue &sStyleValue, double dfParam);
272#ifndef DOXYGEN_SKIP
273 double ComputeWithUnit(double, OGRSTUnitId);
274 int ComputeWithUnit(int, OGRSTUnitId);
275#endif
276};
277
279
283class CPL_DLL OGRStylePen : public OGRStyleTool
284{
285 private:
286 OGRStyleValue *m_pasStyleValue;
287
288 GBool Parse() override;
289
290 CPL_DISALLOW_COPY_ASSIGN(OGRStylePen)
291
292 public:
293 OGRStylePen();
294 ~OGRStylePen() override;
295
296 /**********************************************************************/
297 /* Explicit fct for all parameters defined in the Drawing tools Pen */
298 /**********************************************************************/
299
300 const char *Color(GBool &bDefault)
301 {
302 return GetParamStr(OGRSTPenColor, bDefault);
303 }
304
305 void SetColor(const char *pszColor)
306 {
307 SetParamStr(OGRSTPenColor, pszColor);
308 }
309
310 double Width(GBool &bDefault)
311 {
312 return GetParamDbl(OGRSTPenWidth, bDefault);
313 }
314
315 void SetWidth(double dfWidth)
316 {
317 SetParamDbl(OGRSTPenWidth, dfWidth);
318 }
319
320 const char *Pattern(GBool &bDefault)
321 {
322 return GetParamStr(OGRSTPenPattern, bDefault);
323 }
324
325 void SetPattern(const char *pszPattern)
326 {
327 SetParamStr(OGRSTPenPattern, pszPattern);
328 }
329
330 const char *Id(GBool &bDefault)
331 {
332 return GetParamStr(OGRSTPenId, bDefault);
333 }
334
335 void SetId(const char *pszId)
336 {
337 SetParamStr(OGRSTPenId, pszId);
338 }
339
340 double PerpendicularOffset(GBool &bDefault)
341 {
342 return GetParamDbl(OGRSTPenPerOffset, bDefault);
343 }
344
345 void SetPerpendicularOffset(double dfPerp)
346 {
347 SetParamDbl(OGRSTPenPerOffset, dfPerp);
348 }
349
350 const char *Cap(GBool &bDefault)
351 {
352 return GetParamStr(OGRSTPenCap, bDefault);
353 }
354
355 void SetCap(const char *pszCap)
356 {
357 SetParamStr(OGRSTPenCap, pszCap);
358 }
359
360 const char *Join(GBool &bDefault)
361 {
362 return GetParamStr(OGRSTPenJoin, bDefault);
363 }
364
365 void SetJoin(const char *pszJoin)
366 {
367 SetParamStr(OGRSTPenJoin, pszJoin);
368 }
369
370 int Priority(GBool &bDefault)
371 {
372 return GetParamNum(OGRSTPenPriority, bDefault);
373 }
374
375 void SetPriority(int nPriority)
376 {
377 SetParamNum(OGRSTPenPriority, nPriority);
378 }
379
380 /*****************************************************************/
381
382 const char *GetParamStr(OGRSTPenParam eParam, GBool &bValueIsNull);
383 int GetParamNum(OGRSTPenParam eParam, GBool &bValueIsNull);
384 double GetParamDbl(OGRSTPenParam eParam, GBool &bValueIsNull);
385 void SetParamStr(OGRSTPenParam eParam, const char *pszParamString);
386 void SetParamNum(OGRSTPenParam eParam, int nParam);
387 void SetParamDbl(OGRSTPenParam eParam, double dfParam);
388 const char *GetStyleString() override;
389};
390
394class CPL_DLL OGRStyleBrush : public OGRStyleTool
395{
396 private:
397 OGRStyleValue *m_pasStyleValue;
398
399 GBool Parse() override;
400
401 CPL_DISALLOW_COPY_ASSIGN(OGRStyleBrush)
402
403 public:
404 OGRStyleBrush();
405 ~OGRStyleBrush() override;
406
407 /* Explicit fct for all parameters defined in the Drawing tools Brush */
408
409 const char *ForeColor(GBool &bDefault)
410 {
411 return GetParamStr(OGRSTBrushFColor, bDefault);
412 }
413
414 void SetForeColor(const char *pszColor)
415 {
416 SetParamStr(OGRSTBrushFColor, pszColor);
417 }
418
419 const char *BackColor(GBool &bDefault)
420 {
421 return GetParamStr(OGRSTBrushBColor, bDefault);
422 }
423
424 void SetBackColor(const char *pszColor)
425 {
426 SetParamStr(OGRSTBrushBColor, pszColor);
427 }
428
429 const char *Id(GBool &bDefault)
430 {
431 return GetParamStr(OGRSTBrushId, bDefault);
432 }
433
434 void SetId(const char *pszId)
435 {
436 SetParamStr(OGRSTBrushId, pszId);
437 }
438
439 double Angle(GBool &bDefault)
440 {
441 return GetParamDbl(OGRSTBrushAngle, bDefault);
442 }
443
444 void SetAngle(double dfAngle)
445 {
446 SetParamDbl(OGRSTBrushAngle, dfAngle);
447 }
448
449 double Size(GBool &bDefault)
450 {
451 return GetParamDbl(OGRSTBrushSize, bDefault);
452 }
453
454 void SetSize(double dfSize)
455 {
456 SetParamDbl(OGRSTBrushSize, dfSize);
457 }
458
459 double SpacingX(GBool &bDefault)
460 {
461 return GetParamDbl(OGRSTBrushDx, bDefault);
462 }
463
464 void SetSpacingX(double dfX)
465 {
466 SetParamDbl(OGRSTBrushDx, dfX);
467 }
468
469 double SpacingY(GBool &bDefault)
470 {
471 return GetParamDbl(OGRSTBrushDy, bDefault);
472 }
473
474 void SetSpacingY(double dfY)
475 {
476 SetParamDbl(OGRSTBrushDy, dfY);
477 }
478
479 int Priority(GBool &bDefault)
480 {
481 return GetParamNum(OGRSTBrushPriority, bDefault);
482 }
483
484 void SetPriority(int nPriority)
485 {
486 SetParamNum(OGRSTBrushPriority, nPriority);
487 }
488
489 /*****************************************************************/
490
491 const char *GetParamStr(OGRSTBrushParam eParam, GBool &bValueIsNull);
492 int GetParamNum(OGRSTBrushParam eParam, GBool &bValueIsNull);
493 double GetParamDbl(OGRSTBrushParam eParam, GBool &bValueIsNull);
494 void SetParamStr(OGRSTBrushParam eParam, const char *pszParamString);
495 void SetParamNum(OGRSTBrushParam eParam, int nParam);
496 void SetParamDbl(OGRSTBrushParam eParam, double dfParam);
497 const char *GetStyleString() override;
498};
499
503class CPL_DLL OGRStyleSymbol : public OGRStyleTool
504{
505 private:
506 OGRStyleValue *m_pasStyleValue;
507
508 GBool Parse() override;
509
510 CPL_DISALLOW_COPY_ASSIGN(OGRStyleSymbol)
511
512 public:
513 OGRStyleSymbol();
514 ~OGRStyleSymbol() override;
515
516 /*****************************************************************/
517 /* Explicit fct for all parameters defined in the Drawing tools */
518 /*****************************************************************/
519
520 const char *Id(GBool &bDefault)
521 {
522 return GetParamStr(OGRSTSymbolId, bDefault);
523 }
524
525 void SetId(const char *pszId)
526 {
527 SetParamStr(OGRSTSymbolId, pszId);
528 }
529
530 double Angle(GBool &bDefault)
531 {
532 return GetParamDbl(OGRSTSymbolAngle, bDefault);
533 }
534
535 void SetAngle(double dfAngle)
536 {
537 SetParamDbl(OGRSTSymbolAngle, dfAngle);
538 }
539
540 const char *Color(GBool &bDefault)
541 {
542 return GetParamStr(OGRSTSymbolColor, bDefault);
543 }
544
545 void SetColor(const char *pszColor)
546 {
547 SetParamStr(OGRSTSymbolColor, pszColor);
548 }
549
550 double Size(GBool &bDefault)
551 {
552 return GetParamDbl(OGRSTSymbolSize, bDefault);
553 }
554
555 void SetSize(double dfSize)
556 {
557 SetParamDbl(OGRSTSymbolSize, dfSize);
558 }
559
560 double SpacingX(GBool &bDefault)
561 {
562 return GetParamDbl(OGRSTSymbolDx, bDefault);
563 }
564
565 void SetSpacingX(double dfX)
566 {
567 SetParamDbl(OGRSTSymbolDx, dfX);
568 }
569
570 double SpacingY(GBool &bDefault)
571 {
572 return GetParamDbl(OGRSTSymbolDy, bDefault);
573 }
574
575 void SetSpacingY(double dfY)
576 {
577 SetParamDbl(OGRSTSymbolDy, dfY);
578 }
579
580 double Step(GBool &bDefault)
581 {
582 return GetParamDbl(OGRSTSymbolStep, bDefault);
583 }
584
585 void SetStep(double dfStep)
586 {
587 SetParamDbl(OGRSTSymbolStep, dfStep);
588 }
589
590 double Offset(GBool &bDefault)
591 {
592 return GetParamDbl(OGRSTSymbolOffset, bDefault);
593 }
594
595 void SetOffset(double dfOffset)
596 {
597 SetParamDbl(OGRSTSymbolOffset, dfOffset);
598 }
599
600 double Perp(GBool &bDefault)
601 {
602 return GetParamDbl(OGRSTSymbolPerp, bDefault);
603 }
604
605 void SetPerp(double dfPerp)
606 {
607 SetParamDbl(OGRSTSymbolPerp, dfPerp);
608 }
609
610 int Priority(GBool &bDefault)
611 {
612 return GetParamNum(OGRSTSymbolPriority, bDefault);
613 }
614
615 void SetPriority(int nPriority)
616 {
617 SetParamNum(OGRSTSymbolPriority, nPriority);
618 }
619
620 const char *FontName(GBool &bDefault)
621 {
622 return GetParamStr(OGRSTSymbolFontName, bDefault);
623 }
624
625 void SetFontName(const char *pszFontName)
626 {
627 SetParamStr(OGRSTSymbolFontName, pszFontName);
628 }
629
630 const char *OColor(GBool &bDefault)
631 {
632 return GetParamStr(OGRSTSymbolOColor, bDefault);
633 }
634
635 void SetOColor(const char *pszColor)
636 {
637 SetParamStr(OGRSTSymbolOColor, pszColor);
638 }
639
640 /*****************************************************************/
641
642 const char *GetParamStr(OGRSTSymbolParam eParam, GBool &bValueIsNull);
643 int GetParamNum(OGRSTSymbolParam eParam, GBool &bValueIsNull);
644 double GetParamDbl(OGRSTSymbolParam eParam, GBool &bValueIsNull);
645 void SetParamStr(OGRSTSymbolParam eParam, const char *pszParamString);
646 void SetParamNum(OGRSTSymbolParam eParam, int nParam);
647 void SetParamDbl(OGRSTSymbolParam eParam, double dfParam);
648 const char *GetStyleString() override;
649};
650
654class CPL_DLL OGRStyleLabel : public OGRStyleTool
655{
656 private:
657 OGRStyleValue *m_pasStyleValue;
658
659 GBool Parse() override;
660
661 CPL_DISALLOW_COPY_ASSIGN(OGRStyleLabel)
662
663 public:
664 OGRStyleLabel();
665 ~OGRStyleLabel() override;
666
667 /*****************************************************************/
668 /* Explicit fct for all parameters defined in the Drawing tools */
669 /*****************************************************************/
670
671 const char *FontName(GBool &bDefault)
672 {
673 return GetParamStr(OGRSTLabelFontName, bDefault);
674 }
675
676 void SetFontName(const char *pszFontName)
677 {
678 SetParamStr(OGRSTLabelFontName, pszFontName);
679 }
680
681 double Size(GBool &bDefault)
682 {
683 return GetParamDbl(OGRSTLabelSize, bDefault);
684 }
685
686 void SetSize(double dfSize)
687 {
688 SetParamDbl(OGRSTLabelSize, dfSize);
689 }
690
691 const char *TextString(GBool &bDefault)
692 {
693 return GetParamStr(OGRSTLabelTextString, bDefault);
694 }
695
696 void SetTextString(const char *pszTextString)
697 {
698 SetParamStr(OGRSTLabelTextString, pszTextString);
699 }
700
701 double Angle(GBool &bDefault)
702 {
703 return GetParamDbl(OGRSTLabelAngle, bDefault);
704 }
705
706 void SetAngle(double dfAngle)
707 {
708 SetParamDbl(OGRSTLabelAngle, dfAngle);
709 }
710
711 const char *ForeColor(GBool &bDefault)
712 {
713 return GetParamStr(OGRSTLabelFColor, bDefault);
714 }
715
716 void SetForColor(const char *pszForColor)
717 {
718 SetParamStr(OGRSTLabelFColor, pszForColor);
719 }
720
721 const char *BackColor(GBool &bDefault)
722 {
723 return GetParamStr(OGRSTLabelBColor, bDefault);
724 }
725
726 void SetBackColor(const char *pszBackColor)
727 {
728 SetParamStr(OGRSTLabelBColor, pszBackColor);
729 }
730
731 const char *Placement(GBool &bDefault)
732 {
733 return GetParamStr(OGRSTLabelPlacement, bDefault);
734 }
735
736 void SetPlacement(const char *pszPlacement)
737 {
738 SetParamStr(OGRSTLabelPlacement, pszPlacement);
739 }
740
741 int Anchor(GBool &bDefault)
742 {
743 return GetParamNum(OGRSTLabelAnchor, bDefault);
744 }
745
746 void SetAnchor(int nAnchor)
747 {
748 SetParamNum(OGRSTLabelAnchor, nAnchor);
749 }
750
751 double SpacingX(GBool &bDefault)
752 {
753 return GetParamDbl(OGRSTLabelDx, bDefault);
754 }
755
756 void SetSpacingX(double dfX)
757 {
758 SetParamDbl(OGRSTLabelDx, dfX);
759 }
760
761 double SpacingY(GBool &bDefault)
762 {
763 return GetParamDbl(OGRSTLabelDy, bDefault);
764 }
765
766 void SetSpacingY(double dfY)
767 {
768 SetParamDbl(OGRSTLabelDy, dfY);
769 }
770
771 double Perp(GBool &bDefault)
772 {
773 return GetParamDbl(OGRSTLabelPerp, bDefault);
774 }
775
776 void SetPerp(double dfPerp)
777 {
778 SetParamDbl(OGRSTLabelPerp, dfPerp);
779 }
780
781 GBool Bold(GBool &bDefault)
782 {
783 return GetParamNum(OGRSTLabelBold, bDefault);
784 }
785
786 void SetBold(GBool bBold)
787 {
788 SetParamNum(OGRSTLabelBold, bBold);
789 }
790
791 GBool Italic(GBool &bDefault)
792 {
793 return GetParamNum(OGRSTLabelItalic, bDefault);
794 }
795
796 void SetItalic(GBool bItalic)
797 {
798 SetParamNum(OGRSTLabelItalic, bItalic);
799 }
800
801 GBool Underline(GBool &bDefault)
802 {
803 return GetParamNum(OGRSTLabelUnderline, bDefault);
804 }
805
806 void SetUnderline(GBool bUnderline)
807 {
808 SetParamNum(OGRSTLabelUnderline, bUnderline);
809 }
810
811 int Priority(GBool &bDefault)
812 {
813 return GetParamNum(OGRSTLabelPriority, bDefault);
814 }
815
816 void SetPriority(int nPriority)
817 {
818 SetParamNum(OGRSTLabelPriority, nPriority);
819 }
820
821 GBool Strikeout(GBool &bDefault)
822 {
823 return GetParamNum(OGRSTLabelStrikeout, bDefault);
824 }
825
826 void SetStrikeout(GBool bStrikeout)
827 {
828 SetParamNum(OGRSTLabelStrikeout, bStrikeout);
829 }
830
831 double Stretch(GBool &bDefault)
832 {
833 return GetParamDbl(OGRSTLabelStretch, bDefault);
834 }
835
836 void SetStretch(double dfStretch)
837 {
838 SetParamDbl(OGRSTLabelStretch, dfStretch);
839 }
840
841 const char *ShadowColor(GBool &bDefault)
842 {
843 return GetParamStr(OGRSTLabelHColor, bDefault);
844 }
845
846 void SetShadowColor(const char *pszShadowColor)
847 {
848 SetParamStr(OGRSTLabelHColor, pszShadowColor);
849 }
850
851 const char *OutlineColor(GBool &bDefault)
852 {
853 return GetParamStr(OGRSTLabelOColor, bDefault);
854 }
855
856 void SetOutlineColor(const char *pszOutlineColor)
857 {
858 SetParamStr(OGRSTLabelOColor, pszOutlineColor);
859 }
860
861 /*****************************************************************/
862
863 const char *GetParamStr(OGRSTLabelParam eParam, GBool &bValueIsNull);
864 int GetParamNum(OGRSTLabelParam eParam, GBool &bValueIsNull);
865 double GetParamDbl(OGRSTLabelParam eParam, GBool &bValueIsNull);
866 void SetParamStr(OGRSTLabelParam eParam, const char *pszParamString);
867 void SetParamNum(OGRSTLabelParam eParam, int nParam);
868 void SetParamDbl(OGRSTLabelParam eParam, double dfParam);
869 const char *GetStyleString() override;
870};
871
873
874#endif /* OGR_FEATURESTYLE_INCLUDE */
CPLString
Convenient string class based on std::string.
Definition: cpl_string.h:320
OGRFeature
A simple feature, including geometry and attributes.
Definition: ogr_feature.h:893
OGRStyleMgr
This class represents a style manager.
Definition: ogr_featurestyle.h:121
OGRStyleTable
This class represents a style table.
Definition: ogr_featurestyle.h:86
OGRStyleTool
This class represents a style tool.
Definition: ogr_featurestyle.h:173
OGRStyleTool::GetStyleString
virtual const char * GetStyleString()=0
Get the style string for this Style Tool.
OGRStyleTool::GetUnit
OGRSTUnitId GetUnit()
Get Style Tool units.
Definition: ogr_featurestyle.h:240
cpl_conv.h
Various convenience functions for CPL.
GBool
int GBool
Type for boolean values (alias to int)
Definition: cpl_port.h:196
CPL_DISALLOW_COPY_ASSIGN
#define CPL_DISALLOW_COPY_ASSIGN(ClassName)
Helper to remove the copy and assignment constructors so that the compiler will not generate the defa...
Definition: cpl_port.h:1042
cpl_string.h
Various convenience functions for working with strings and string lists.
ogr_core.h
Core portability services for cross-platform OGR code.
OGRSTSymbolDy
@ OGRSTSymbolDy
Dy.
Definition: ogr_core.h:1188
OGRSTSymbolId
@ OGRSTSymbolId
Id.
Definition: ogr_core.h:1183
OGRSTSymbolSize
@ OGRSTSymbolSize
Size.
Definition: ogr_core.h:1186
OGRSTSymbolFontName
@ OGRSTSymbolFontName
Font name.
Definition: ogr_core.h:1193
OGRSTSymbolColor
@ OGRSTSymbolColor
Color.
Definition: ogr_core.h:1185
OGRSTSymbolDx
@ OGRSTSymbolDx
Dx.
Definition: ogr_core.h:1187
OGRSTSymbolPerp
@ OGRSTSymbolPerp
Perpendicular.
Definition: ogr_core.h:1190
OGRSTSymbolAngle
@ OGRSTSymbolAngle
Angle.
Definition: ogr_core.h:1184
OGRSTSymbolOColor
@ OGRSTSymbolOColor
Outline color.
Definition: ogr_core.h:1194
OGRSTSymbolPriority
@ OGRSTSymbolPriority
Priority.
Definition: ogr_core.h:1192
OGRSTSymbolStep
@ OGRSTSymbolStep
Step.
Definition: ogr_core.h:1189
OGRSTSymbolOffset
@ OGRSTSymbolOffset
Offset.
Definition: ogr_core.h:1191
OGRSTSymbolParam
enum ogr_style_tool_param_symbol_id OGRSTSymbolParam
List of parameters for use with OGRStyleSymbol.
OGRSTPenParam
enum ogr_style_tool_param_pen_id OGRSTPenParam
List of parameters for use with OGRStylePen.
OGRSTLabelUnderline
@ OGRSTLabelUnderline
Underline.
Definition: ogr_core.h:1218
OGRSTLabelPriority
@ OGRSTLabelPriority
Priority.
Definition: ogr_core.h:1219
OGRSTLabelBold
@ OGRSTLabelBold
Bold.
Definition: ogr_core.h:1216
OGRSTLabelStrikeout
@ OGRSTLabelStrikeout
Strike out.
Definition: ogr_core.h:1220
OGRSTLabelBColor
@ OGRSTLabelBColor
Background color.
Definition: ogr_core.h:1210
OGRSTLabelPlacement
@ OGRSTLabelPlacement
Placement.
Definition: ogr_core.h:1211
OGRSTLabelPerp
@ OGRSTLabelPerp
Perpendicular.
Definition: ogr_core.h:1215
OGRSTLabelOColor
@ OGRSTLabelOColor
Outline color.
Definition: ogr_core.h:1225
OGRSTLabelDx
@ OGRSTLabelDx
Dx.
Definition: ogr_core.h:1213
OGRSTLabelHColor
@ OGRSTLabelHColor
Highlight color.
Definition: ogr_core.h:1224
OGRSTLabelItalic
@ OGRSTLabelItalic
Italic.
Definition: ogr_core.h:1217
OGRSTLabelTextString
@ OGRSTLabelTextString
Text string.
Definition: ogr_core.h:1207
OGRSTLabelSize
@ OGRSTLabelSize
Size.
Definition: ogr_core.h:1206
OGRSTLabelAngle
@ OGRSTLabelAngle
Angle.
Definition: ogr_core.h:1208
OGRSTLabelFColor
@ OGRSTLabelFColor
Foreground color.
Definition: ogr_core.h:1209
OGRSTLabelDy
@ OGRSTLabelDy
Dy.
Definition: ogr_core.h:1214
OGRSTLabelFontName
@ OGRSTLabelFontName
Font name.
Definition: ogr_core.h:1205
OGRSTLabelStretch
@ OGRSTLabelStretch
Stretch.
Definition: ogr_core.h:1221
OGRSTLabelAnchor
@ OGRSTLabelAnchor
Anchor.
Definition: ogr_core.h:1212
OGRSTUGround
@ OGRSTUGround
Ground unit.
Definition: ogr_core.h:1133
OGRSTUMM
@ OGRSTUMM
Millimeter.
Definition: ogr_core.h:1136
OGRSTClassId
enum ogr_style_tool_class_id OGRSTClassId
OGRStyleTool derived class types (returned by GetType()).
OGRSTUnitId
enum ogr_style_tool_units_id OGRSTUnitId
List of units supported by OGRStyleTools.
OGRSTBrushParam
enum ogr_style_tool_param_brush_id OGRSTBrushParam
List of parameters for use with OGRStyleBrush.
OGRSTLabelParam
enum ogr_style_tool_param_label_id OGRSTLabelParam
List of parameters for use with OGRStyleLabel.
OGRSTBrushAngle
@ OGRSTBrushAngle
Angle.
Definition: ogr_core.h:1167
OGRSTBrushId
@ OGRSTBrushId
Id.
Definition: ogr_core.h:1166
OGRSTBrushPriority
@ OGRSTBrushPriority
Priority.
Definition: ogr_core.h:1171
OGRSTBrushBColor
@ OGRSTBrushBColor
Background color.
Definition: ogr_core.h:1165
OGRSTBrushSize
@ OGRSTBrushSize
Size.
Definition: ogr_core.h:1168
OGRSTBrushDy
@ OGRSTBrushDy
Dy.
Definition: ogr_core.h:1170
OGRSTBrushFColor
@ OGRSTBrushFColor
Foreground color.
Definition: ogr_core.h:1164
OGRSTBrushDx
@ OGRSTBrushDx
Dx.
Definition: ogr_core.h:1169
OGRSTCNone
@ OGRSTCNone
None.
Definition: ogr_core.h:1120
OGRSTPenId
@ OGRSTPenId
Id.
Definition: ogr_core.h:1149
OGRSTPenCap
@ OGRSTPenCap
Cap.
Definition: ogr_core.h:1151
OGRSTPenPerOffset
@ OGRSTPenPerOffset
Perpendicular offset.
Definition: ogr_core.h:1150
OGRSTPenWidth
@ OGRSTPenWidth
Width.
Definition: ogr_core.h:1147
OGRSTPenColor
@ OGRSTPenColor
Color.
Definition: ogr_core.h:1146
OGRSTPenJoin
@ OGRSTPenJoin
Join.
Definition: ogr_core.h:1152
OGRSTPenPriority
@ OGRSTPenPriority
Priority.
Definition: ogr_core.h:1153
OGRSTPenPattern
@ OGRSTPenPattern
Pattern.
Definition: ogr_core.h:1148
ogr_style_type
ogr_style_type
OGR Style type.
Definition: ogr_featurestyle.h:51
OGRSType
enum ogr_style_type OGRSType
OGR Style type.