162 lines
4.6 KiB
C++
162 lines
4.6 KiB
C++
/************************************************************************
|
|
* $Id: pageitem.h 661 2011-04-05 13:16:53Z elzubeir $
|
|
*
|
|
* ------------
|
|
* Description:
|
|
* ------------
|
|
*
|
|
* (C) Copyright 2009-2011 ALLCONTENT. All rights reserved.
|
|
*
|
|
* -----------------
|
|
* Revision Details: (Updated by Revision Control System)
|
|
* -----------------
|
|
* $Date: 2011-04-05 17:16:53 +0400 (Tue, 05 Apr 2011) $
|
|
* $Author: elzubeir $
|
|
* $Revision: 661 $
|
|
* $HeadURL: file:///opt/svn/socialhose/trunk/app/ClippingStation/pageitem.h $
|
|
*
|
|
************************************************************************/
|
|
|
|
#ifndef PAGE_ITEM_H
|
|
#define PAGE_ITEM_H
|
|
|
|
#include <QGraphicsRectItem>
|
|
|
|
#include "pagemargin.h"
|
|
#include "thumbnail.h"
|
|
#include "globalfunctions.h"
|
|
|
|
/**
|
|
\brief Purpose of this class is to display the page item.
|
|
This item takes care of drop operations in the right panel.
|
|
*/
|
|
class PageItem : public QGraphicsRectItem
|
|
{
|
|
public:
|
|
|
|
//! \fn PageItem()
|
|
//! constructor
|
|
//! \param[in] paper format (default to A4)
|
|
//! \param[in] isfirst is this is the firat A4 page
|
|
//! \author elzubeir
|
|
PageItem(const QString & paperFormat, bool isfirst); //ctor
|
|
|
|
//! \fn ~PageItem()
|
|
//! desctructor
|
|
//! \author elzubeir
|
|
virtual ~PageItem(); //dtor
|
|
|
|
//! \fn hideMargins()
|
|
//! hide the margins
|
|
//! \param[in] hid: to show or to hide
|
|
//! \author elzubeir
|
|
void hideMargins(bool hide = true);
|
|
|
|
//! \fn addThumbnail()
|
|
//! add a thumbnail to the page
|
|
//! \param[in] thumbnail image
|
|
//! \author elzubeir
|
|
void addThumbnail(QImage &img);
|
|
|
|
//! \fn addCutout()
|
|
//! add cutout to the A4 page
|
|
//! \param[in] cutout image
|
|
//! \param[in] position point to where to add the cutout to page
|
|
//! \param[in] the scale to which zoom the image
|
|
//! \author elzubeir
|
|
void addCutout(QImage &img, QPointF &pos, qreal scale);
|
|
|
|
//! \fn width()
|
|
//! the pages width
|
|
//! \return the pages width
|
|
//! \author elzubeir
|
|
qreal width();
|
|
|
|
//! \fn height()
|
|
//! the pages height
|
|
//! \return the pages height
|
|
//! \author elzubeir
|
|
qreal height();
|
|
|
|
//! \fn margin()
|
|
//! the pages margin
|
|
//! \return the pages margin
|
|
//! \author elzubeir
|
|
PageMargin& margin();
|
|
|
|
//! \fn withinMarginBoundaries()
|
|
//! sets the point to within the pages boundaries
|
|
//! \author elzubeir
|
|
//! \param[out] the point within the boundary of the margin
|
|
//! \param[in] margins width
|
|
//! \param[in] margins height
|
|
//! \author elzubeir
|
|
void withinMarginBoundaries(QPointF &point, int width, int height);
|
|
|
|
//! \fn unselectItems();
|
|
//! unselect cutout items in the image
|
|
//! \author elzubeir
|
|
void unselectItems();
|
|
|
|
//! \fn setPixmap()
|
|
//! set the pixmap value of the image
|
|
//! \author elzubeir
|
|
void setPixmap(const QPixmap &pix);
|
|
|
|
//! \fn cutoutsCount()
|
|
//! the total count of the cutouts in the page
|
|
//! \return the number of cutouts in the page
|
|
//! \author elzubeir
|
|
int cutoutsCount();
|
|
|
|
//! \fn centerCutouts()
|
|
//! center the cutouts in the drawer
|
|
//! \param[in] is this an arabic cutout of not
|
|
//! \returns a rectangle holding the centered cutouts
|
|
//! \author elzubeir
|
|
QRectF centerCutouts(bool isArabic);
|
|
|
|
protected:
|
|
// overrides QGraphicsRectItem events.
|
|
//! \fn dragMoveEvent()
|
|
//! called when a drag operation is initaated
|
|
//! \author elzubeir
|
|
virtual void dragMoveEvent(QGraphicsSceneDragDropEvent * event);
|
|
|
|
//! \fn dropEvent()
|
|
//! called when a drop event happens
|
|
//! \author elzubeir
|
|
virtual void dropEvent(QGraphicsSceneDragDropEvent * event);
|
|
|
|
private:
|
|
//! \fn calculateDropEvent()
|
|
//! calculates the cutout drop position within margins
|
|
//! \param[in] top left position of the cutout
|
|
//! \param[in] cutouts width
|
|
//! \param[in] cutouts heigh
|
|
//! \returns a point for the top left position of the cutout
|
|
//! \author elzubeir
|
|
QPointF calculateDropEvent(const QPointF & itemPos, int pixmapWidth, int pixmapHeight) const;
|
|
|
|
private:
|
|
//! paper format (defulat to A4)
|
|
QString m_paperFormat;
|
|
|
|
//! page width
|
|
qreal m_pageWidth;
|
|
|
|
//! page height
|
|
qreal m_pageHeight;
|
|
|
|
//! is this the first page
|
|
bool m_isFirstPage;
|
|
|
|
//! page margin
|
|
PageMargin m_pageMargin;
|
|
|
|
//! thumbnail image
|
|
Thumbnail * m_thumbnail;
|
|
};
|
|
|
|
#endif // PAGE_ITEM_H
|