initial import
This commit is contained in:
@@ -0,0 +1,218 @@
|
||||
/************************************************************************
|
||||
* $Id: drawerview.cpp 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/drawerview.cpp $
|
||||
*
|
||||
************************************************************************/
|
||||
|
||||
#include "drawerview.h"
|
||||
|
||||
#include <QWheelEvent>
|
||||
|
||||
#include "drawerscene.h"
|
||||
#include "constants.h"
|
||||
|
||||
DrawerView::DrawerView(bool isfirst, QWidget * parent) :
|
||||
QGraphicsView(parent),
|
||||
m_pageLayout(ACTUAL_SIZE),
|
||||
m_scale(1.0)
|
||||
{
|
||||
//qDebug("DrawerView()");
|
||||
|
||||
m_scene = new DrawerScene(isfirst, this);
|
||||
setScene(m_scene);
|
||||
|
||||
connect(m_scene, SIGNAL(createThumbnail()), this, SIGNAL(createThumbnail()));
|
||||
|
||||
//setPageLayout(m_pageLayout);
|
||||
|
||||
setAcceptDrops(true);
|
||||
}
|
||||
|
||||
DrawerView::~DrawerView()
|
||||
{
|
||||
//qDebug("~DrawerView()");
|
||||
// if (m_scene)
|
||||
// delete m_scene;
|
||||
// m_scene = 0;
|
||||
}
|
||||
|
||||
QImage DrawerView::screenShot()
|
||||
{
|
||||
qreal scale = actualSize();
|
||||
return m_scene->screenShot();
|
||||
setScale(scale);
|
||||
}
|
||||
|
||||
void DrawerView::addThumbnail(QImage &img)
|
||||
{
|
||||
m_scene->addThumbnail(img);
|
||||
}
|
||||
|
||||
void DrawerView::addCutout(QImage &img, QPointF &pos, qreal scale)
|
||||
{
|
||||
m_scene->addCutout(img, pos, scale);
|
||||
}
|
||||
|
||||
qreal DrawerView::zoom(bool zoomin)
|
||||
{
|
||||
m_pageLayout = ACTUAL_SIZE; //
|
||||
qreal oldscale = m_scale;
|
||||
qreal sc = ::pow(2, zoomin? ZOOM_FACTOR : -ZOOM_FACTOR);
|
||||
m_scale *= sc;
|
||||
m_scale = qMin(m_scale, MAX_SCALE);
|
||||
m_scale = qMax(m_scale, MIN_SCALE);
|
||||
|
||||
if (m_scale >= 1.0)
|
||||
m_scale = 1.0;
|
||||
|
||||
if (m_scale >= MIN_SCALE && m_scale <= 1)
|
||||
{
|
||||
m_scene->transform(m_scale);
|
||||
//m_clippingStation->displayZoomStatus(m_scale);
|
||||
m_scene->setSceneRect(m_scene->itemsBoundingRect() );
|
||||
this->setSceneRect(m_scene->itemsBoundingRect() );
|
||||
}
|
||||
|
||||
if(oldscale >= 1.0)
|
||||
return 1.0;
|
||||
|
||||
return oldscale;
|
||||
}
|
||||
|
||||
qreal DrawerView::actualSize()
|
||||
{
|
||||
qreal oldscale = m_scale;
|
||||
m_scale = 1.0;
|
||||
m_scene->transform(m_scale);
|
||||
m_scene->setSceneRect(m_scene->itemsBoundingRect() );
|
||||
this->setSceneRect(m_scene->itemsBoundingRect() );
|
||||
return oldscale;
|
||||
}
|
||||
|
||||
|
||||
|
||||
void DrawerView::resizeEvent(QResizeEvent* event)
|
||||
{
|
||||
//*
|
||||
if( m_pageLayout != ACTUAL_SIZE )
|
||||
{
|
||||
actualSize(); //just reset the page to default
|
||||
|
||||
qreal w = rect().width();
|
||||
qreal h = rect().height();
|
||||
|
||||
qreal sceneWidth = m_scene->itemsBoundingRect().width();
|
||||
qreal sceneHeight = m_scene->itemsBoundingRect().height();
|
||||
|
||||
//calculate the ratio
|
||||
qreal precW = w/sceneWidth;
|
||||
qreal precH = h/sceneHeight;
|
||||
|
||||
qreal prec = precW;
|
||||
|
||||
if (m_pageLayout == BEST_FIT)
|
||||
prec = qMin(precW, precH);
|
||||
|
||||
//calculate the ratio
|
||||
m_scale = prec;
|
||||
|
||||
if( m_scale > 1.0 )
|
||||
m_scale = 1.0;
|
||||
|
||||
}
|
||||
//to show the scroll bar as page changes
|
||||
//qDebug("Scale from resizeEvent %.2f", m_scale);
|
||||
|
||||
m_scene->transform(m_scale);
|
||||
m_scene->setSceneRect(m_scene->itemsBoundingRect() );
|
||||
this->setSceneRect(m_scene->itemsBoundingRect() );
|
||||
|
||||
QGraphicsView::resizeEvent(event);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void DrawerView::setPageLayout(PAGE_LAYOUT layout)
|
||||
{
|
||||
m_pageLayout = layout;
|
||||
|
||||
if( m_pageLayout != ACTUAL_SIZE )
|
||||
{
|
||||
actualSize(); //just reset the page to default
|
||||
|
||||
//fitInView((QGraphicsItem*)m_scene->imageItem(), Qt::KeepAspectRatio);
|
||||
qreal w = rect().width();
|
||||
qreal h = rect().height();
|
||||
|
||||
qreal sceneWidth = m_scene->itemsBoundingRect().width();
|
||||
qreal sceneHeight = m_scene->itemsBoundingRect().height();
|
||||
|
||||
//calculate the ratio
|
||||
qreal precW = w/sceneWidth;
|
||||
qreal precH = h/sceneHeight;
|
||||
|
||||
qreal prec = precW;
|
||||
|
||||
if (m_pageLayout == BEST_FIT)
|
||||
prec = qMin(precW, precH);
|
||||
|
||||
//calculate the ratio
|
||||
m_scale = prec;
|
||||
|
||||
if( m_scale > 1.0 )
|
||||
m_scale = 1.0;
|
||||
|
||||
//qDebug("Scale from pageLayout %.2f", m_scale);
|
||||
|
||||
//this->setSceneRect(QRectF(QPoint(0, 0), QSize() ) );
|
||||
}
|
||||
m_scene->transform(m_scale);
|
||||
m_scene->setSceneRect(m_scene->itemsBoundingRect() );
|
||||
this->setSceneRect(m_scene->itemsBoundingRect() );
|
||||
|
||||
}
|
||||
|
||||
qreal DrawerView::currentScale()
|
||||
{
|
||||
return m_scale;
|
||||
}
|
||||
|
||||
void DrawerView::setScale(qreal scale)
|
||||
{
|
||||
m_scale = scale;
|
||||
//m_pageLayout = ACTUAL_SIZE;
|
||||
m_scene->transform(m_scale);
|
||||
m_scene->setSceneRect(m_scene->itemsBoundingRect() );
|
||||
this->setSceneRect(m_scene->itemsBoundingRect() );
|
||||
}
|
||||
|
||||
|
||||
void DrawerView::setPixmap(const QPixmap &pix) const
|
||||
{
|
||||
m_scene->setPixmap(pix);
|
||||
}
|
||||
|
||||
|
||||
int DrawerView::cutoutsCount()
|
||||
{
|
||||
return m_scene->cutoutsCount();
|
||||
}
|
||||
|
||||
QRectF DrawerView::centerCutouts(bool isArabic)
|
||||
{
|
||||
return m_scene->centerCutouts(isArabic);
|
||||
}
|
||||
Reference in New Issue
Block a user