'Create a new item for :class:`SchemeAnnotation` and add it
to the scene. If the `scheme_annot` is already in the scene do
nothing and just return its item.'

def add_annotation(self, scheme_annot):

    if (scheme_annot in self.__item_for_annotation):
        return self.__item_for_annotation[scheme_annot]
    if isinstance(scheme_annot, scheme.SchemeTextAnnotation):
        item = items.TextAnnotation()
        (x, y, w, h) = scheme_annot.rect
        item.setPos(x, y)
        item.resize(w, h)
        item.setTextInteractionFlags(Qt.TextEditorInteraction)
        font = font_from_dict(scheme_annot.font, item.font())
        item.setFont(font)
        item.setContent(scheme_annot.content, scheme_annot.content_type)
        scheme_annot.content_changed.connect(item.setContent)
    elif isinstance(scheme_annot, scheme.SchemeArrowAnnotation):
        item = items.ArrowAnnotation()
        (start, end) = (scheme_annot.start_pos, scheme_annot.end_pos)
        item.setLine(QLineF(QPointF(*start), QPointF(*end)))
        item.setColor(QColor(scheme_annot.color))
    scheme_annot.geometry_changed.connect(self.__on_scheme_annot_geometry_change)
    self.add_annotation_item(item)
    self.__item_for_annotation[scheme_annot] = item
    return item
