16 #ifndef QGSANNOTATIONREGISTRY_H
17 #define QGSANNOTATIONREGISTRY_H
21 #include "qgis_core.h"
34 typedef std::function <
QgsAnnotation*() > QgsCreateAnnotationFunc;
42 class CORE_EXPORT QgsAnnotationMetadata
50 QgsAnnotationMetadata(
const QString &
typeName,
const QgsCreateAnnotationFunc &createFunc )
52 , mCreateFunc( createFunc )
58 QString type()
const {
return mTypeName; }
63 QgsAnnotation *createAnnotation()
const {
return mCreateFunc ? mCreateFunc() : nullptr ; }
68 QgsCreateAnnotationFunc mCreateFunc =
nullptr;
70 QgsAnnotationMetadata() =
default;
71 friend class QMap< QString, QgsAnnotationMetadata >;
81 class CORE_EXPORT QgsAnnotationRegistry
90 QgsAnnotationRegistry()
102 bool addAnnotationType(
const QgsAnnotationMetadata &metadata )
104 if ( mMetadata.contains( metadata.type() ) )
107 mMetadata.insert( metadata.type(), metadata );
117 if ( !mMetadata.contains(
typeName ) )
120 return mMetadata.value(
typeName ).createAnnotation();
125 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.