File indexing completed on 2024-04-28 05:38:11

0001 #ifndef IMAGEITEM_H
0002 #define IMAGEITEM_H
0003 
0004 #include "rwidgets_global.h"
0005 #include "visualitem.h"
0006 #include <QImage>
0007 #include <QMovie>
0008 namespace vmap
0009 {
0010 class ImageItemController;
0011 }
0012 class RWIDGET_EXPORT ImageItem : public VisualItem
0013 {
0014     Q_OBJECT
0015 public:
0016     ImageItem(vmap::ImageItemController* ctrl);
0017     /**
0018      * @brief paint the current rectangle into the scene.
0019      * @see Qt documentation
0020      */
0021     void paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget= nullptr) override;
0022 
0023     /**
0024      * @brief gives bounding rect. Return rect geometry into the QRectF
0025      */
0026     virtual QRectF boundingRect() const override;
0027 
0028     /**
0029      * @brief defines new end point.
0030      */
0031     virtual void setNewEnd(const QPointF& nend) override;
0032 
0033     void setImageUri(QString uri);
0034     /**
0035      * @brief getImageUri
0036      * @return
0037      */
0038     QString getImageUri();
0039 
0040     virtual void setModifiers(Qt::KeyboardModifiers modifiers) override;
0041 
0042     VisualItem* promoteTo(vmap::VisualItemController::ItemType) override;
0043     QImage getImage() const;
0044     void setImage(const QImage& image);
0045 
0046     // void endOfGeometryChange(ChildPointItem::Change change) override;
0047 
0048 protected:
0049     /**
0050      * @brief updateChildPosition
0051      */
0052     virtual void updateChildPosition() override;
0053 
0054 private:
0055     void loadImage();
0056     void dataToMedia();
0057     void initImage();
0058 
0059 private:
0060     QPointer<vmap::ImageItemController> m_imgCtrl;
0061     bool m_keepAspect; ///< flag to keep the aspect.
0062 };
0063 
0064 #endif // IMAGEITEM_H