moved to shstk
This commit is contained in:
109
libs/blockview/blockbase.cpp
Normal file
109
libs/blockview/blockbase.cpp
Normal file
@@ -0,0 +1,109 @@
|
||||
#include "blockbase.h"
|
||||
#include "alignedtextitem.h"
|
||||
#include "qvariantedit.h"
|
||||
|
||||
|
||||
QDataStream & operator <<(QDataStream & s, const QGraphicsItem * item) {
|
||||
if (!item) {
|
||||
s << int(-1);
|
||||
return s;
|
||||
}
|
||||
const QGraphicsRectItem * irect = qgraphicsitem_cast<const QGraphicsRectItem*>(item);
|
||||
const QGraphicsEllipseItem * iell = qgraphicsitem_cast<const QGraphicsEllipseItem*>(item);
|
||||
const QGraphicsSimpleTextItem * itext = qgraphicsitem_cast<const QGraphicsSimpleTextItem*>(item);
|
||||
const AlignedTextItem * iatext = qgraphicsitem_cast<const AlignedTextItem*>(item);
|
||||
const QGraphicsLineItem * iline = qgraphicsitem_cast<const QGraphicsLineItem*>(item);
|
||||
const QGraphicsPathItem * ipath = qgraphicsitem_cast<const QGraphicsPathItem*>(item);
|
||||
const QGraphicsPixmapItem * ipixmap = qgraphicsitem_cast<const QGraphicsPixmapItem*>(item);
|
||||
if (irect) {
|
||||
s << int(0) << (irect->pen()) << (irect->brush()) << (irect->rect());
|
||||
} else if (iell) {
|
||||
s << int(1) << (iell->pen()) << (iell->brush()) << (iell->rect());
|
||||
} else if (itext) {
|
||||
s << int(2) << (itext->pen()) << (itext->brush()) << (itext->font()) << (itext->text());
|
||||
} else if (iatext) {
|
||||
s << int(6) << (iatext->pen()) << (iatext->brush()) << (iatext->font()) << (iatext->text()) << int(iatext->alignment());
|
||||
} else if (iline) {
|
||||
s << int(3) << (iline->pen()) << (iline->line());
|
||||
} else if (ipath) {
|
||||
s << int(4) << (ipath->pen()) << (ipath->path());
|
||||
} else if (ipixmap) {
|
||||
s << int(7) << (ipixmap->pixmap()) << (ipixmap->transform());
|
||||
} else {
|
||||
s << int(-1);
|
||||
return s;
|
||||
}
|
||||
s << (item->pos()) << (item->rotation()) << int(item->flags());
|
||||
return s;
|
||||
}
|
||||
|
||||
|
||||
QDataStream & operator >>(QDataStream & s, QGraphicsItem *& item) {
|
||||
int type_; s >> type_;
|
||||
if (type_ < 0) {
|
||||
item = 0;
|
||||
return s;
|
||||
}
|
||||
QGraphicsRectItem * nrect = 0;
|
||||
QGraphicsEllipseItem * nell = 0;
|
||||
QGraphicsSimpleTextItem * ntext = 0;
|
||||
AlignedTextItem * natext = 0;
|
||||
QGraphicsLineItem * nline = 0;
|
||||
QGraphicsPathItem * npath = 0;
|
||||
QGraphicsPixmapItem * npixmap = 0;
|
||||
item = 0;
|
||||
switch (type_) {
|
||||
case 0:
|
||||
nrect = new QGraphicsRectItem(); item = nrect;
|
||||
{QPen _v; s >> _v; nrect->setPen(_v);}
|
||||
{QBrush _v; s >> _v; nrect->setBrush(_v);}
|
||||
{QRectF _v; s >> _v; nrect->setRect(_v);}
|
||||
break;
|
||||
case 1:
|
||||
nell = new QGraphicsEllipseItem(); item = nell;
|
||||
{QPen _v; s >> _v; nell->setPen(_v);}
|
||||
{QBrush _v; s >> _v; nell->setBrush(_v);}
|
||||
{QRectF _v; s >> _v; nell->setRect(_v);}
|
||||
break;
|
||||
case 2:
|
||||
ntext = new QGraphicsSimpleTextItem(); item = ntext;
|
||||
{QPen _v; s >> _v; ntext->setPen(_v);}
|
||||
{QBrush _v; s >> _v; ntext->setBrush(_v);}
|
||||
{QFont _v; s >> _v; ntext->setFont(_v);}
|
||||
{QString _v; s >> _v; ntext->setText(_v);}
|
||||
break;
|
||||
case 6:
|
||||
natext = new AlignedTextItem(); item = natext;
|
||||
{QPen _v; s >> _v; natext->setPen(_v);}
|
||||
{QBrush _v; s >> _v; natext->setBrush(_v);}
|
||||
{QFont _v; s >> _v; natext->setFont(_v);}
|
||||
{QString _v; s >> _v; natext->setText(_v);}
|
||||
{int _v; s >> _v; natext->setAlignment((Qt::AlignmentFlag)_v);}
|
||||
break;
|
||||
case 3:
|
||||
nline = new QGraphicsLineItem(); item = nline;
|
||||
{QPen _v; s >> _v; nline->setPen(_v);}
|
||||
{QLineF _v; s >> _v; nline->setLine(_v);}
|
||||
break;
|
||||
case 4:
|
||||
npath = new QGraphicsPathItem(); item = npath;
|
||||
{QPen _v; s >> _v; npath->setPen(_v);}
|
||||
{QPainterPath _v; s >> _v; npath->setPath(_v);}
|
||||
break;
|
||||
case 5:
|
||||
npixmap = new QGraphicsPixmapItem(); item = npixmap;
|
||||
{QPixmap _v; s >> _v; npixmap->setPixmap(_v);}
|
||||
break;
|
||||
case 7:
|
||||
npixmap = new QGraphicsPixmapItem(); item = npixmap;
|
||||
{QPixmap _v; s >> _v; npixmap->setPixmap(_v);}
|
||||
{QTransform _t; s >> _t; npixmap->setTransform(_t);}
|
||||
break;
|
||||
}
|
||||
if (item) {
|
||||
{QPointF _v; s >> _v; item->setPos(_v);}
|
||||
{qreal _v; s >> _v; item->setRotation(_v);}
|
||||
{int _v; s >> _v; item->setFlags((QGraphicsItem::GraphicsItemFlags)_v);}
|
||||
}
|
||||
return s;
|
||||
}
|
||||
Reference in New Issue
Block a user