16#ifndef QGSANNOTATIONREGISTRY_H
17#define QGSANNOTATIONREGISTRY_H
32using namespace Qt::StringLiterals;
39typedef std::function<
QgsAnnotation *() > QgsCreateAnnotationFunc;
46class CORE_EXPORT QgsAnnotationMetadata
53 QgsAnnotationMetadata(
const QString &typeName,
const QgsCreateAnnotationFunc &createFunc )
54 : mTypeName( typeName )
55 , mCreateFunc( createFunc )
61 QString type()
const {
return mTypeName; }
66 QgsAnnotation *createAnnotation()
const {
return mCreateFunc ? mCreateFunc() :
nullptr; }
70 QgsCreateAnnotationFunc mCreateFunc =
nullptr;
72 QgsAnnotationMetadata() =
default;
73 friend class QMap< QString, QgsAnnotationMetadata >;
81class CORE_EXPORT QgsAnnotationRegistry
88 QgsAnnotationRegistry()
100 bool addAnnotationType(
const QgsAnnotationMetadata &metadata )
102 if ( mMetadata.contains( metadata.type() ) )
105 mMetadata.insert( metadata.type(), metadata );
113 QgsAnnotation *create(
const QString &typeName )
const
115 if ( !mMetadata.contains( typeName ) )
118 return mMetadata.value( typeName ).createAnnotation();
122 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.