/************************************************************************ * $Id: fullpagescene.h 666 2011-05-08 22:48:10Z elzubeir $ * * ------------ * Description: * ------------ * * (C) Copyright 2009-2011 ALLCONTENT. All rights reserved. * * ----------------- * Revision Details: (Updated by Revision Control System) * ----------------- * $Date: 2011-05-09 02:48:10 +0400 (Mon, 09 May 2011) $ * $Author: elzubeir $ * $Revision: 666 $ * $HeadURL: file:///opt/svn/socialhose/trunk/app/ClippingStation/fullpagescene.h $ * ************************************************************************/ #ifndef SOURCE_SCENE_H #define SOURCE_SCENE_H #include #include "constants.h" #include "clippingstation.h" #include "tagcoordinates.h" #include "wordcoordinates.h" class ImageItem; class ImageCutout; class FullPageScene : public QGraphicsScene { public: //! \fn FullPageScene() //! default constructor //! \author elzubeir FullPageScene(QObject * parent); //! \fn ~FullPageScene() //! destructor //! \author elzubeir ~FullPageScene(); //! \fn loadPixmap() //! loads the pixmap to the scene //! \param[in] pixmap to be loaded to the scene //! \returns true if successful, false if not //! \author elzubeir bool loadPixmap(const QPixmap & pixmap); //! \fn removePixmap() //! removes a pixmap from the scene //! \author elzubeir void removePixmap(); //! \fn createImageCutout() //! create the image cutout //! \param[in] polygon of the points of the cutout //! \param[in] rotation angle of the cutout //! \param[in] name of the page from the image cutout //! \param[in] type of the created selection, image, title or body //! \returns true if successful, false if not //! \author elzubeir bool createImageCutout(const QPolygonF & cutout, qreal rotationAngle, QString pageName, SELECTION_AREA_TYPE selectionType = IMAGE); //! \fn removeImageCutout() //! remove image cutout from the scene //! \param[in] the cutout to remove //! \author elzubeir void removeImageCutout(ImageCutout * rect); //! \fn addWordCoordinates() //! add words of the page to the scene //! \param[in] list of WordCoordinates to add to the scene //! \author elzubeir void addWordCoordinates(QList &tagW); //void removeWordCoordinates(); //! \fn addTagCoordinates() //! add words of the page to the scene //! \param[in] list of TagCoordinates to add to the scene //! \author elzubeir void addTagCoordinates(QList &tagHighlight); QList& tagCoorindates(); //! \fn removeTagCoordinates(); //! remove the tag coordinates from the scene //! \author elzubeir void removeTagCoordinates(); //! \fn removeImageCutout() //! remove all the image cutouts from the scene //! \author elzubeir void removeImageCutouts(); //! \fn removePreselectedImageCutouts() //! remove the preselected image cutouts //! \author elzubeir void removePreselectedImageCutouts(); //! \fn hideImageCutouts() //! hide image cutouts from the scene //! \author elzubeir void hideImageCutouts(); //! \fn showImageCutouts(); //! show image cutouts in the scene //! \author elzubeir void showImageCutouts(); //! \fn setImageCutouts() //! add image cutouts to the scene //! \param[in] image cutous list to be added //! \author elzubeir void setImageCutouts(QList cutouts); //! \fn setPreselectedImageCutouts() //! add preselected image cutout to the scene //! \param[in] list of the preselected image cutouts to be added //! \author elzubeir void setPreselectedImageCutouts(QList cutouts); //! \fn preselectedImageCutoutsCount() //! count of preselected image cutout //! \returns count of the preselected cutouts //! \author elzubeir int preselectedImageCutoutsCount(); //! \fn setSelectionMode() //! set the current selection mode //! \param[in] SELECTION_MODE type //! \author elzubeir void setSelectionMode(SELECTION_MODE selectionMode); //! \fn isSourceImageIsLoad() //! is image loaded //! \returns true if image is loaded, false if not //! \author elzubeir bool isSourceImageIsLoad() const; //! \fn isPointIsOnImageCutoutItem() //! is point on image cutout //! \param[in] point to test //! \returns true if point on image cutout, false if not //! \author elzubeir bool isPointIsOnImageCutoutItem(const QPointF & point); //! \fn isPointIsOnImageItem() //! is point on the image //! \param[in] point to test //! \returns true if poing on image, false if not //! \author elzubeir bool isPointIsOnImageItem(const QPointF & point) const; //! \fn getImageCutoutPixmap() //! returns the cutouf of the image based on the passed rectangle //! \param[in] rectangle holding the cutout's coordinates //! \returns partial image from the page loaded //! \author elzubeir QPixmap getImageCutoutPixmap(const QRectF & rect) const; //! \fn mapToImageItem() //! map a scene position to the image item position. //! \param[in] point to be mapped //! \returns a mapped point //! \author elzubeir QPointF mapToImageItem(const QPointF & scenePos) const; //! \fn transform() //! transformation operations on the image item. //! \param[in] zoomFactor the scale used in zoom operation. //! \param[in] angle rotation angle. //! \author elzubeir void transform(qreal zoomFactor, qreal angle); //! \fn currentImageCutout() //! returns the current cutout from the image //! \returns returns the image cutout //! \author elzubeir ImageCutout* currentImageCutout(); //! \fn imageCutoutsList() //! list of image cutous of the scene //! \returns the list of the image cutous //! \author elzubeir QList imageCutoutsList(); //! \fn pageSize() //! the size of the image page //! \returns the size of the image //! \author elzubeir qreal pageSize(); //! \fn imageItem() //! current image item //! \returns current image item pointer //! \author elzubeir inline const ImageItem* imageItem() { return m_imageItem;} //! \fn setfileName() //! set file name of the current image //! \param[in] fileName of the current image //! \author elzubeir void setfileName(QString fileName); //! \fn screenShot() //! create a screen shot of the image on the scene //! \returns image of the screen shot //! \author elzubeir QImage screenShot(); //! \fn A4PageScale() //! scale of the a4 page in drawer //! \returns the scale of the a4 page in drawer //! \author elzubeir qreal A4PageScale() const; //! \fn getScaledPixmap() //! return a scaled image of the pixmap //! \param[in] original pixmap //! \returns the scaled image //! \author elzubeir QPixmap getScaledPixmap(const QPixmap & pixmap); //! \fn setOrderMode() //! set the order mode to set of select //! \param[in] order mode //! \author elzubeir void setOrderMode(bool set); //! \fn currentOrder() //! returns the current odrder //! \author elzubeir int currentOrder(); //! \fn increaseCurrentOrder() //! increase the current order of the cutouts //! \author elzubeir void increaseCurrentOrder(); //! \fn resetCurrentOrder(); //! set the current order to 1 //! \author elzubeir void resetCurrentOrder(); //! \fn imageBoundingRect() //! the bounding rectange of the scene //! \returns rectangle of the scene //! \author elzubeir QRectF imageBoundingRect(); //! \fn addTags() //! add tags from the current rect //! \param[in] rectangle to check tags existance inside of them //! \author elzubeir void addTags(QRect rect); //! \fn addTags() //! add tags from all the cutouts //! \author elzubeir void addTags(); //! \fn getWord() //! return a string list of the words in the rect //! \param[in] rect of the cutout to get the words from //! \returns string list of the words //! \author elzubeir QStringList getWord(QRect rect); //! \fn text() //! returns a text of the image //! \author elzubeir QString text(); void setImageVisibility(bool show); private: //! image item ImageItem * m_imageItem; ///< the image. //! selected cutouts QList m_imageCutoutsList; ///< the selected rect. //! preselected cutouts QList m_preselectedImageCutoutsList; //QList m_tagItems; //! words list QList m_wordCoordinates; //! tags list QList m_tagCoordinates; //! current cutout ImageCutout* m_currentImageCutout; //! zoom factor qreal m_zoomfactor; //! rotate angle qreal m_rotateAngle; //! filename QString m_fileName; //! page widht qreal m_pageWidth; //! page height qreal m_pageHeight; //! selection mode SELECTION_MODE m_selectionMode; //! current order int m_currentOrder; }; #endif // SOURCE_SCENE_H