16#ifndef QGSANNOTATIONREGISTRY_H
17#define QGSANNOTATIONREGISTRY_H
31using namespace Qt::StringLiterals;
38typedef std::function <
QgsAnnotation*() > QgsCreateAnnotationFunc;
45class 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 ; }
71 QgsCreateAnnotationFunc mCreateFunc =
nullptr;
73 QgsAnnotationMetadata() =
default;
74 friend class QMap< QString, QgsAnnotationMetadata >;
83class CORE_EXPORT QgsAnnotationRegistry
92 QgsAnnotationRegistry()
104 bool addAnnotationType(
const QgsAnnotationMetadata &metadata )
106 if ( mMetadata.contains( metadata.type() ) )
109 mMetadata.insert( metadata.type(), metadata );
117 QgsAnnotation *create(
const QString &typeName )
const
119 if ( !mMetadata.contains( typeName ) )
122 return mMetadata.value( typeName ).createAnnotation();
127 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.