initial import

This commit is contained in:
Mo Elzubeir
2022-12-13 09:18:00 -06:00
commit d2d561810c
322 changed files with 1147261 additions and 0 deletions
+181
View File
@@ -0,0 +1,181 @@
/************************************************************************
* $Id: drawerscene.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/drawerscene.cpp $
*
************************************************************************/
#include "drawerscene.h"
#include <QGraphicsSceneDragDropEvent>
#include <QMimeData>
#include <QGraphicsPixmapItem>
#include <QPainter>
#include <QPrinter>
#include <QImage>
#include <QApplication>
#include <QDesktopWidget>
#include "constants.h"
DrawerScene::DrawerScene(bool isfirst, QObject * parent):
QGraphicsScene(parent)
{
setBackgroundBrush(Qt::gray);
// by now this is A4 format, so we set the scene Rect with a A4 geometry + margins borders (30 pix).
createPageItem("A4", isfirst);
if (m_pageItem)
setSceneRect(-10.0, -10.0, m_pageItem->boundingRect().width()+20.0, m_pageItem->boundingRect().height()+20.0);
m_timer = new QTimer(); //create a timer and connect it's timeout signal to the update slot
connect( m_timer, SIGNAL( timeout() ), this, SLOT( thumbnail() ) );
}
DrawerScene::~DrawerScene()
{
//qDebug("~DrawerScene()");
if(m_pageItem)
{
delete m_pageItem;
m_pageItem = 0;
}
if(m_timer)
{
if (m_timer->isActive())
m_timer->stop();
delete m_timer;
m_timer = 0;
}
}
void DrawerScene::dropEvent(QGraphicsSceneDragDropEvent * event)
{
//event->ignore();
QGraphicsScene::dropEvent(event);
//qDebug() << "emit signal";
//emit createThumbnail();
m_timer->start(100);
}
bool DrawerScene::createPageItem(const QString & paperFormat, bool isfirst)
{
// format is useless by now
m_pageItem = new PageItem(paperFormat, isfirst);
addItem(m_pageItem);
return true;
}
QImage DrawerScene::screenShot()
{
//first we hide the margins
m_pageItem->hideMargins();
m_pageItem->unselectItems();
int dpi = QApplication::desktop()->logicalDpiX();
int w = static_cast<int> (dpi * A4_WIDTH);
int h = static_cast<int> (dpi * A4_HEIGHT);
//int w = 827;
//int h = 1169;
QImage image(w, h, QImage::Format_RGB32);
QPainter painter(&image);
setBackgroundBrush(Qt::white);
painter.setBackgroundMode(Qt::TransparentMode);
painter.setBackground(Qt::white);
painter.setRenderHint(QPainter::HighQualityAntialiasing);
//QRect rec = m_pageItem->boundingRect().toRect();
//rec.setX(rec.x() - 20);
//rec.setY(rec.y() - 20);
//rec.setX(rec.x()-20);
//rec.setWidth(rec.width()-20);
QPoint bottomright = m_pageItem->boundingRect().toRect().bottomRight();
bottomright.setX(bottomright.x()+1);
bottomright.setY(bottomright.y()+1);
QRect rec(QPoint(-1, -1), bottomright);
//this->render(&painter, m_pageItem->boundingRect().toRect(), m_pageItem->boundingRect().toRect() );
this->render(&painter, rec, m_pageItem->boundingRect().toRect());
setBackgroundBrush(Qt::gray);
m_pageItem->hideMargins(false);
return image;
}
void DrawerScene::addThumbnail(QImage &img)
{
m_pageItem->addThumbnail(img);
}
void DrawerScene::addCutout(QImage &img, QPointF &pos, qreal scale)
{
m_pageItem->addCutout(img, pos, scale);
}
void DrawerScene::transform(qreal zoomFactor)
{
if (!m_pageItem)
return;
m_zoomfactor = zoomFactor;
// we compute image center.
qreal imageCenterX = m_pageItem->x()+ m_pageItem->boundingRect().width()/2;
qreal imageCenterY = m_pageItem->y()+ m_pageItem->boundingRect().height()/2;
qreal imageX, imageY;
imageX = m_pageItem->boundingRect().width()/2;
imageY = m_pageItem->boundingRect().height()/2;
//m_pageItem->setTransformationMode(Qt::SmoothTransformation);
m_pageItem->setTransform(QTransform().translate(imageCenterX, imageCenterY).scale(zoomFactor, zoomFactor).translate(-imageCenterX, -imageCenterY));
//qDebug("Zoom Factor %.2d", zoomFactor);
}
void DrawerScene::thumbnail()
{
emit createThumbnail();
m_timer->stop();
}
void DrawerScene::setPixmap(const QPixmap &pix) const
{
m_pageItem->setPixmap(pix);
}
int DrawerScene::cutoutsCount()
{
return m_pageItem->cutoutsCount();
}
QRectF DrawerScene::centerCutouts(bool isArabic)
{
return m_pageItem->centerCutouts(isArabic);
}