//------------------------------------------------------------------------------ // // Project: Anonymizer // // Brno University of Technology // Faculty of Information Technology // //------------------------------------------------------------------------------ // // This project was financially supported by project VG20102015006 funds // provided by Ministry of the Interior of the Czech republic. // //------------------------------------------------------------------------------ /*! @file imagelabel.h @brief Header file @details Details @authors Martin Borek (mborekcz@gmail.com) @authors Filip Orsag (orsag@fit.vutbr.cz) @date 2014-2015 @note This project was supported by MV CR project VG20102015006. @copyright BUT OPEN SOURCE LICENCE (see License.txt) */ #ifndef IMAGELABEL_H #define IMAGELABEL_H #include "selection.h" #include #include class ImageLabel : public QLabel { Q_OBJECT public: /** * Constructor * @param parent Parent widget */ explicit ImageLabel(QWidget *parent = 0); /** * Destructor */ ~ImageLabel(); /** * Sets new image. It ss called also when the MainWindow is resized. * @param image Original image * @param displayWidth Maximal allowed width (with respect to the current size of the window) * @param displayHeight Maximal allowed height */ void set_image(QImage const &image, int displayWidth, int displayHeight); /** * Returns position of the currently selected area. * @return Selected area */ Selection get_selection() const; /** * Enables or disables object (area) selection. * @param enabled If true, selection is enabled. If false, selection is disabled. */ void set_selection_enabled(bool enabled); //void hide_selection(); protected: /** * Updates the ImageLabel when the MainWindows is resized. */ void resizeEvent(QResizeEvent *); /** * Handles mouse press events over the ImageLabel area. * @param event */ void mousePressEvent(QMouseEvent * event); /** * Handles mouse release events over the ImageLabel area. * @param event */ void mouseReleaseEvent(QMouseEvent * event); /** * Handles mouse move events over the ImageLabel area. * @param event */ void mouseMoveEvent(QMouseEvent * event); private: /** * Shows the image without highlight any selection. */ void show_without_selection(); /** * Shows the image with highlighted selection. */ void show_with_selection(); private: bool selectionEnabled; bool isPressed; // true -> mouse button pressed over the image //bool isSelected; // selection exists, therefore is displayed int posX; // x coordinate, where the selection starts int posY; // y coordinate, where the selection starts int imgWidth; // width of original (unscaled) image int imgHeight; // height of original (unscaled) image int scaledWidth; // width of image at the time of selecting int scaledHeight; Selection selection; // selection geometry - values with respect to scaledWidth and scaledHeight QImage scaledImage; }; #endif // IMAGELABEL_H