16#ifndef QGSANNOTATIONREGISTRY_H
17#define QGSANNOTATIONREGISTRY_H
32using namespace Qt::StringLiterals;
39typedef std::function <
QgsAnnotation*() > QgsCreateAnnotationFunc;
46class CORE_EXPORT QgsAnnotationMetadata
54 QgsAnnotationMetadata(
const QString &typeName,
const QgsCreateAnnotationFunc &createFunc )
55 : mTypeName( typeName )
56 , mCreateFunc( createFunc )
62 QString type()
const {
return mTypeName; }
67 QgsAnnotation *createAnnotation()
const {
return mCreateFunc ? mCreateFunc() : nullptr ; }
72 QgsCreateAnnotationFunc mCreateFunc =
nullptr;
74 QgsAnnotationMetadata() =
default;
75 friend class QMap< QString, QgsAnnotationMetadata >;
84class CORE_EXPORT QgsAnnotationRegistry
93 QgsAnnotationRegistry()
105 bool addAnnotationType(
const QgsAnnotationMetadata &metadata )
107 if ( mMetadata.contains( metadata.type() ) )
110 mMetadata.insert( metadata.type(), metadata );
118 QgsAnnotation *create(
const QString &typeName )
const
120 if ( !mMetadata.contains( typeName ) )
123 return mMetadata.value( typeName ).createAnnotation();
128 QMap< QString, QgsAnnotationMetadata > mMetadata;
Abstract base class for annotation items which are drawn over a map.
static QgsHtmlAnnotation * create()
Returns a new QgsHtmlAnnotation object.
static QgsSvgAnnotation * create()
Returns a new QgsSvgAnnotation object.
static QgsTextAnnotation * create()
Returns a new QgsTextAnnotation object.