# OGRFeature Style C++ API

## Include file

`ogr_featurestyle.h`

## OGRFeature Style C++ API

Simple feature style classes.

Typedefs

typedef enum ogr_style_type OGRSType

  OGR Style type.

Enums

enum ogr_style_type

  OGR Style type.

  Values:

  enumerator OGRSTypeUnused
  enumerator OGRSTypeString
  enumerator OGRSTypeDouble
  enumerator OGRSTypeInteger
  enumerator OGRSTypeBoolean

class OGRStyleTable
  #include <ogr_featurestyle.h>

  This class represents a style table.

  Public Functions

  OGRStyleTable()
  ~OGRStyleTable()
  GBool AddStyle(const char *pszName, const char *pszStyleString)

    Add a new style in the table.

    No comparison will be done on the Style string, only on the name.

    Parameters:

      - pszName -- the name the style to add.

      - pszStyleString -- the style string to add.

    Returns:

      TRUE on success, FALSE on error

  GBool RemoveStyle(const char *pszName)

    Remove a style in the table by its name.

    Parameters:

      pszName -- the name of the style to remove.

    Returns:

      TRUE on success, FALSE on error

  GBool ModifyStyle(const char *pszName, const char *pszStyleString)

    Modify a style in the table by its name If the style does not exist, it will be added.

    Parameters:

      - pszName -- the name of the style to modify.

      - pszStyleString -- the style string.

    Returns:

      TRUE on success, FALSE on error

  GBool SaveStyleTable(const char *pszFilename)

    Save a style table to a file.

    Parameters:

      pszFilename -- the name of the file to save to.

    Returns:

      TRUE on success, FALSE on error

  GBool LoadStyleTable(const char *pszFilename)

    Load a style table from a file.

    Parameters:

      pszFilename -- the name of the file to load from.

    Returns:

      TRUE on success, FALSE on error

  const char *Find(const char *pszStyleString)

    Get a style string by name.

    Parameters:

      pszName -- the name of the style string to find.

    Returns:

      the style string matching the name, NULL if not found or error.

  GBool IsExist(const char *pszName)

    Get the index of a style in the table by its name.

    Parameters:

      pszName -- the name to look for.

    Returns:

      The index of the style if found, -1 if not found or error.

  const char *GetStyleName(const char *pszName)

    Get style name by style string.

    Parameters:

      pszStyleString -- the style string to look up.

    Returns:

      the Name of the matching style string or NULL on error.

  void Print(FILE *fpOut)

    Print a style table to a FILE pointer.

    Parameters:

      fpOut -- the FILE pointer to print to.

  void Clear()

    Clear a style table.

  OGRStyleTable *Clone()

    Duplicate style table.

    The newly created style table is owned by the caller, and will have its own reference to the OGRStyleTable.

    Returns:

      new style table, exactly matching this style table.

  void ResetStyleStringReading()

    Reset the next style pointer to 0.

  const char *GetNextStyle()

    Get the next style string from the table.

    Returns:

      the next style string or NULL on error.

  const char *GetLastStyleName()

    Get the style name of the last style string fetched with OGR_STBL_GetNextStyle.

    Returns:

      the Name of the last style string or NULL on error.

  Private Members

  char **m_papszStyleTable = nullptr
  CPLString osLastRequestedStyleName = {}
  int iNextStyle = 0

class OGRStyleMgr
  #include <ogr_featurestyle.h>

  This class represents a style manager.

  Public Functions

  explicit OGRStyleMgr(OGRStyleTable *poDataSetStyleTable = nullptr)

    Constructor.

    This method is the same as the C function OGR_SM_Create()

    Parameters:

      poDataSetStyleTable -- (currently unused, reserved for future use), pointer to OGRStyleTable. Pass NULL for now.

  ~OGRStyleMgr()

    Destructor.

    This method is the same as the C function OGR_SM_Destroy()

  GBool SetFeatureStyleString(OGRFeature*, const char *pszStyleString = nullptr, GBool bNoMatching = FALSE)

    Set a style in a feature.

    Parameters:

      - poFeature -- the feature object to store the style in

      - pszStyleString -- the style to store

      - bNoMatching -- TRUE to lookup the style in the style table and add the name to the feature

    Returns:

      TRUE on success, FALSE on error.

  const char *InitFromFeature(OGRFeature*)

    Initialize style manager from the style string of a feature.

    This method is the same as the C function OGR_SM_InitFromFeature().

    Parameters:

      poFeature -- feature object from which to read the style.

    Returns:

      a reference to the style string read from the feature, or NULL in case of error..

  GBool InitStyleString(const char *pszStyleString = nullptr)

    Initialize style manager from the style string.

    Style string can be an expanded style string (e.g. "PEN(c:#FF0000,w:5px)"), or (starting with GDAL 3.5.1), a reference to a style name starting with @ (e.g. "@my_style") registered in the associated style table.

    This method is the same as the C function OGR_SM_InitStyleString().

    Parameters:

      pszStyleString -- the style string to use (can be NULL).

    Returns:

      TRUE on success, FALSE on errors.

  const char *GetStyleName(const char *pszStyleString = nullptr)

    Get the name of a style from the style table.

    Parameters:

      pszStyleString -- the style to search for, or NULL to use the style currently stored in the manager.

    Returns:

      The name if found, or NULL on error.

  const char *GetStyleByName(const char *pszStyleName)

    find a style in the current style table.

    Parameters:

      pszStyleName -- the name of the style to add.

    Returns:

      the style string matching the name or NULL if not found or error.

  GBool AddStyle(const char *pszStyleName, const char *pszStyleString = nullptr)

    Add a style to the current style table.

    This method is the same as the C function OGR_SM_AddStyle().

    Parameters:

      - pszStyleName -- the name of the style to add.

      - pszStyleString -- the style string to use, or NULL to use the style stored in the manager.

    Returns:

      TRUE on success, FALSE on errors.

  const char *GetStyleString(OGRFeature* = nullptr)

    Get the style string from the style manager.

    NOTE: this method will call OGRStyleMgr::InitFromFeature() if poFeature is not NULL and replace the style string stored in the style manager

    Parameters:

      poFeature -- feature object from which to read the style or NULL to get the style string stored in the manager.

    Returns:

      the style string stored in the feature or the style string stored in the style manager if poFeature is NULL

  GBool AddPart(OGRStyleTool*)

    Add a part (style tool) to the current style.

    This method is the same as the C function OGR_SM_AddPart().

    Parameters:

      poStyleTool -- the style tool defining the part to add.

    Returns:

      TRUE on success, FALSE on errors.

  GBool AddPart(const char*)

    Add a part (style string) to the current style.

    Parameters:

      pszPart -- the style string defining the part to add.

    Returns:

      TRUE on success, FALSE on errors.

  int GetPartCount(const char *pszStyleString = nullptr)

    Get the number of parts in a style.

    This method is the same as the C function OGR_SM_GetPartCount().

    Parameters:

      pszStyleString -- (optional) the style string on which to operate. If NULL then the current style string stored in the style manager is used.

    Returns:

      the number of parts (style tools) in the style.

  OGRStyleTool *GetPart(int hPartId, const char *pszStyleString = nullptr)

    Fetch a part (style tool) from the current style.

    This method is the same as the C function OGR_SM_GetPart().

    This method instantiates a new object that should be freed with OGR_ST_Destroy().

    Parameters:

      - nPartId -- the part number (0-based index).

      - pszStyleString -- (optional) the style string on which to operate. If NULL then the current style string stored in the style manager is used.

    Returns:

      OGRStyleTool of the requested part (style tools) or NULL on error.

  Private Members

  OGRStyleTable *m_poDataSetStyleTable = nullptr
  char *m_pszStyleString = nullptr

class OGRStyleTool
  #include <ogr_featurestyle.h>

  This class represents a style tool.

  Public Functions

  inline OGRStyleTool()
  explicit OGRStyleTool(OGRSTClassId eClassId)

    Constructor.

  virtual ~OGRStyleTool()
  OGRSTClassId GetType()

    Determine type of Style Tool.

    Returns:

      the style tool type, one of OGRSTCPen (1), OGRSTCBrush (2), OGRSTCSymbol (3) or OGRSTCLabel (4). Returns OGRSTCNone (0) if the OGRStyleToolH is invalid.

  void SetUnit(OGRSTUnitId, double dfScale = 1.0)

    Set Style Tool units.

    Parameters:

      - eUnit -- the new unit.

      - dfGroundPaperScale -- ground to paper scale factor.

  inline OGRSTUnitId GetUnit()

    Get Style Tool units.

    Returns:

      the style tool units.

  virtual const char *GetStyleString() = 0

    Get the style string for this Style Tool.

    Maps to the OGRStyleTool subclasses' GetStyleString() methods.

    Returns:

      the style string for this style tool or "" if the hST is invalid.

  void SetStyleString(const char *pszStyleString)

    Undocumented.

    Parameters:

      pszStyleString -- undocumented.

  const char *GetStyleString(const OGRStyleParamId *pasStyleParam, OGRStyleValue *pasStyleValue, int nSize)

    Undocumented.

    Parameters:

      - pasStyleParam -- undocumented.

      - pasStyleValue -- undocumented.

      - nSize -- undocumented.

    Returns:

      undocumented.

  const char *GetParamStr(const OGRStyleParamId &sStyleParam, const OGRStyleValue &sStyleValue, GBool &bValueIsNull)

    Undocumented.

    Parameters:

      - sStyleParam -- undocumented.

      - sStyleValue -- undocumented.

      - bValueIsNull -- undocumented.

    Returns:

      Undocumented.

  int GetParamNum(const OGRStyleParamId &sStyleParam, const OGRStyleValue &sStyleValue, GBool &bValueIsNull)

    Undocumented.

    Parameters:

      - sStyleParam -- undocumented.

      - sStyleValue -- undocumented.

      - bValueIsNull -- undocumented.

    Returns:

      Undocumented.

  double GetParamDbl(const OGRStyleParamId &sStyleParam, const OGRStyleValue &sStyleValue, GBool &bValueIsNull)

    Undocumented.

    Parameters:

      - sStyleParam -- undocumented.

      - sStyleValue -- undocumented.

      - bValueIsNull -- undocumented.

    Returns:

      Undocumented.

  void SetParamStr(const OGRStyleParamId &sStyleParam, OGRStyleValue &sStyleValue, const char *pszParamString)

    Undocumented.

    Parameters:

      - sStyleParam -- undocumented.

      - sStyleValue -- undocumented.

      - pszParamString -- undocumented.

  void SetParamNum(const OGRStyleParamId &sStyleParam, OGRStyleValue &sStyleValue, int nParam)

    Undocumented.

    Parameters:

      - sStyleParam -- undocumented.

      - sStyleValue -- undocumented.

      - nParam -- undocumented.

  void SetParamDbl(const OGRStyleParamId &sStyleParam, OGRStyleValue &sStyleValue, double dfParam)

    Undocumented.

    Parameters:

      - sStyleParam -- undocumented.

      - sStyleValue -- undocumented.

      - dfParam -- undocumented.

  Public Static Functions

  static GBool GetRGBFromString(const char *pszColor, int &nRed, int &nGreen, int &nBlue, int &nTransparence)

    Return the r,g,b,a components of a color encoded in #RRGGBB[AA] format.

    Maps to OGRStyleTool::GetRGBFromString().

    Parameters:

      - pszColor -- the color to parse

      - nRed -- reference to an int in which the red value will be returned.

      - nGreen -- reference to an int in which the green value will be returned.

      - nBlue -- reference to an int in which the blue value will be returned.

      - nTransparance -- reference to an int in which the (optional) alpha value will be returned.

    Returns:

      TRUE if the color could be successfully parsed, or FALSE in case of errors.

  static int GetSpecificId(const char *pszId, const char *pszWanted)

    Undocumented.

    Parameters:

      - pszId -- Undocumented

      - pszWanted -- Undocumented

    Returns:

      Undocumented

  Private Functions

  virtual GBool Parse() = 0

  Private Members

  GBool m_bModified = false
  GBool m_bParsed = false
  double m_dfScale = 1.0
  OGRSTUnitId m_eUnit = OGRSTUMM
  OGRSTClassId m_eClassId = OGRSTCNone
  char *m_pszStyleString = nullptr