/************************************************************************
 * This file has been generated automatically from                      *
 *                                                                      *
 * src/core/symbology/qgssymbollayerregistry.h                          *
 *                                                                      *
 * Do not edit manually ! Edit header and run scripts/sipify.pl again   *
 ************************************************************************/



class QgsSymbolLayerWidget /External/;

class QgsSymbolLayerAbstractMetadata
{
%Docstring
Stores metadata about one symbol layer class.

.. note::

   It's necessary to implement createSymbolLayer() function.
   In C++ you can use QgsSymbolLayerMetadata convenience class.
%End

%TypeHeaderCode
#include "qgssymbollayerregistry.h"
%End
  public:
    QgsSymbolLayerAbstractMetadata( const QString &name, const QString &visibleName, QgsSymbol::SymbolType type );

    virtual ~QgsSymbolLayerAbstractMetadata();

    QString name() const;
    QString visibleName() const;
    QgsSymbol::SymbolType type() const;

    virtual QgsSymbolLayer *createSymbolLayer( const QgsStringMap &map ) = 0 /Factory/;
%Docstring
Create a symbol layer of this type given the map of properties.
%End
    virtual QgsSymbolLayerWidget *createSymbolLayerWidget( QgsVectorLayer * ) /Factory/;
%Docstring
Create widget for symbol layer of this type. Can return ``None`` if there's no GUI
%End
    virtual QgsSymbolLayer *createSymbolLayerFromSld( QDomElement & ) /Factory/;
%Docstring
Create a symbol layer of this type given the map of properties.
%End

    virtual void resolvePaths( QgsStringMap &properties, const QgsPathResolver &pathResolver, bool saving );
%Docstring
Resolve paths in symbol layer's properties (if there are any paths).
When saving is ``True``, paths are converted from absolute to relative,
when saving is ``False``, paths are converted from relative to absolute.
This ensures that paths in project files can be relative, but in symbol layer
instances the paths are always absolute

.. versionadded:: 3.0
%End

  protected:
};


class QgsSymbolLayerMetadata : QgsSymbolLayerAbstractMetadata
{
%Docstring
Convenience metadata class that uses static functions to create symbol layer and its widget.
%End

%TypeHeaderCode
#include "qgssymbollayerregistry.h"
%End
  public:



    virtual QgsSymbolLayer *createSymbolLayer( const QgsStringMap &map ) /Factory/;
    virtual QgsSymbolLayerWidget *createSymbolLayerWidget( QgsVectorLayer *vl ) /Factory/;
    virtual QgsSymbolLayer *createSymbolLayerFromSld( QDomElement &elem ) /Factory/;
    virtual void resolvePaths( QgsStringMap &properties, const QgsPathResolver &pathResolver, bool saving );

  protected:

  private:
    QgsSymbolLayerMetadata();
};


class QgsSymbolLayerRegistry
{
%Docstring
Registry of available symbol layer classes.

QgsSymbolLayerRegistry is not usually directly created, but rather accessed through
:py:func:`QgsApplication.symbolLayerRegistry()`
%End

%TypeHeaderCode
#include "qgssymbollayerregistry.h"
%End
  public:

    QgsSymbolLayerRegistry();
    ~QgsSymbolLayerRegistry();


    QgsSymbolLayerAbstractMetadata *symbolLayerMetadata( const QString &name ) const;
%Docstring
Returns metadata for specified symbol layer. Returns ``None`` if not found
%End

    bool addSymbolLayerType( QgsSymbolLayerAbstractMetadata *metadata /Transfer/ );
%Docstring
register a new symbol layer type. Takes ownership of the metadata instance.
%End

    QgsSymbolLayer *createSymbolLayer( const QString &name, const QgsStringMap &properties = QgsStringMap() ) const /Factory/;
%Docstring
create a new instance of symbol layer given symbol layer name and properties
%End

    QgsSymbolLayer *createSymbolLayerFromSld( const QString &name, QDomElement &element ) const /Factory/;
%Docstring
create a new instance of symbol layer given symbol layer name and SLD
%End

    void resolvePaths( const QString &name, QgsStringMap &properties, const QgsPathResolver &pathResolver, bool saving ) const;
%Docstring
Resolve paths in properties of a particular symbol layer.
This normally means converting relative paths to absolute paths when loading
and converting absolute paths to relative paths when saving.

.. versionadded:: 3.0
%End

    QStringList symbolLayersForType( QgsSymbol::SymbolType type );
%Docstring
Returns a list of available symbol layers for a specified symbol type
%End

    static QgsSymbolLayer *defaultSymbolLayer( QgsSymbol::SymbolType type ) /Factory/;
%Docstring
create a new instance of symbol layer for specified symbol type with default settings
%End

  private:
    QgsSymbolLayerRegistry( const QgsSymbolLayerRegistry &rh );
};

/************************************************************************
 * This file has been generated automatically from                      *
 *                                                                      *
 * src/core/symbology/qgssymbollayerregistry.h                          *
 *                                                                      *
 * Do not edit manually ! Edit header and run scripts/sipify.pl again   *
 ************************************************************************/