git-svn-id: svn://db.shs.com.ru/libs@288 a8b55f48-bf90-11e4-a774-851b48703e85

This commit is contained in:
2017-10-03 13:47:43 +00:00
parent fc04d04e9b
commit 90d8a5f1a0
3 changed files with 137 additions and 8 deletions

View File

@@ -28,7 +28,7 @@ QDataStream & operator <<(QDataStream & s, const QGraphicsItem * item) {
} else if (ipath) {
s << int(4) << (ipath->pen()) << (ipath->path());
} else if (ipixmap) {
s << int(5) << (ipixmap->pixmap());
s << int(7) << (ipixmap->pixmap()) << (ipixmap->transform());
} else {
s << int(-1);
return s;
@@ -94,6 +94,11 @@ QDataStream & operator >>(QDataStream & s, QGraphicsItem *& item) {
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);}

View File

@@ -261,6 +261,8 @@ actions_Z_up(this), actions_Z_top(this), actions_Z_down(this), actions_Z_bottom(
connect(ui->spinHeight, SIGNAL(editingFinished()), this, SLOT(changeFinished()));
connect(ui->spinThick, SIGNAL(valueChanged(double)), this, SLOT(propertyChanged()));
connect(ui->spinThick, SIGNAL(editingFinished()), this, SLOT(changeFinished()));
connect(ui->spinScale, SIGNAL(valueChanged(double)), this, SLOT(propertyChanged()));
connect(ui->spinScale, SIGNAL(editingFinished()), this, SLOT(changeFinished()));
connect(ui->comboText, SIGNAL(editTextChanged(QString)), this, SLOT(propertyChanged()));
connect(ui->comboText->lineEdit(), SIGNAL(editingFinished()), this, SLOT(changeFinished()));
connect(ui->colorButtonPen, SIGNAL(colorChanged(QColor)), this, SLOT(propertyChanged()));
@@ -586,6 +588,7 @@ void DrawTools::selectionChanged() {
size_item.assignObject(iatext);
} else if (ipixmap) {
ui->stackedProperties->setCurrentIndex(2);
ui->spinScale->setValue(sqrt(ipixmap->transform().determinant()));
setPenBrushEnabled(false, false);
size_item.assignObject(ipixmap);
} else if (irect || iell) {
@@ -666,6 +669,16 @@ void DrawTools::propertyChanged() {
iatext->setBrush(ui->colorButtonPen->color());
iatext->setAlignment(align);
} else if (ipixmap) {
QTransform t = ipixmap->transform();
double det = sqrt(t.determinant());
QSizeF os = ipixmap->boundingRect().size() * det;
if (det != 0.) t.scale(1. / det, 1. / det);
det = ui->spinScale->value();
t.scale(det, det);
ipixmap->setTransform(t);
QSizeF ns = ipixmap->boundingRect().size() * det;
QSizeF ds = (os - ns) / 2.;
ipixmap->setPos(ipixmap->pos() + QPointF(ds.width(), ds.height()));
} else if (irect || iell) {
QAbstractGraphicsShapeItem * ishape(0);
if (irect) {

View File

@@ -6,7 +6,7 @@
<rect>
<x>0</x>
<y>0</y>
<width>656</width>
<width>712</width>
<height>111</height>
</rect>
</property>
@@ -14,7 +14,16 @@
<string>Form</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout">
<property name="margin">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
@@ -24,7 +33,16 @@
</property>
<widget class="QWidget" name="pageText">
<layout class="QHBoxLayout" name="horizontalLayout_6">
<property name="margin">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
@@ -87,7 +105,16 @@
<item>
<widget class="QWidget" name="widgetAlign2" native="true">
<layout class="QHBoxLayout" name="horizontalLayout_2">
<property name="margin">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
@@ -136,7 +163,16 @@
<item>
<widget class="QWidget" name="widgetAlign9" native="true">
<layout class="QGridLayout" name="gridLayout">
<property name="margin">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<property name="spacing">
@@ -383,7 +419,16 @@
</widget>
<widget class="QWidget" name="pageDim">
<layout class="QHBoxLayout" name="horizontalLayout_7">
<property name="margin">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
@@ -502,11 +547,26 @@
</widget>
<widget class="QWidget" name="pageImage">
<layout class="QHBoxLayout" name="horizontalLayout_9">
<property name="margin">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QPushButton" name="buttonImage">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Load image ...</string>
</property>
@@ -516,6 +576,57 @@
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_4">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Preferred</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>1</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QLabel" name="label_5">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Scale:</string>
</property>
</widget>
</item>
<item>
<widget class="QDoubleSpinBox" name="spinScale">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="decimals">
<number>3</number>
</property>
<property name="maximum">
<double>999.000000000000000</double>
</property>
<property name="singleStep">
<double>0.100000000000000</double>
</property>
<property name="value">
<double>1.000000000000000</double>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="pageEmpty"/>