r23106 by jghali - Refactor ScribusDoc::scaleGroup()
scribus-commit
scribus-commit at lists.scribus.net
Tue Aug 6 03:24:02 UTC 2019
Author: jghali
Date: Tue Aug 6 03:24:02 2019
New Revision: 23106
URL: http://scribus.net/websvn/listing.php?repname=Scribus&sc=1&rev=23106
Log:
Refactor ScribusDoc::scaleGroup()
Modified:
trunk/Scribus/scribus/scribusdoc.cpp
Modified: trunk/Scribus/scribus/scribusdoc.cpp
URL: http://scribus.net/websvn/diff.php?repname=Scribus&rev=23106&path=/trunk/Scribus/scribus/scribusdoc.cpp
==============================================================================
--- trunk/Scribus/scribus/scribusdoc.cpp (original)
+++ trunk/Scribus/scribus/scribusdoc.cpp Tue Aug 6 03:24:02 2019
@@ -14511,9 +14511,8 @@
if (selectedItemCount == 0)
return;
- PageItem *bb;
+ PageItem *item;
double gx, gy, gh, gw; //, x, y;
- int aa;
double sc = 1; //FIXME:av Scale;
int drm = m_rotMode;
m_rotMode = 0;
@@ -14530,102 +14529,102 @@
for (int i = 0; i < selectedItemCount; ++i)
{
- bb = itemSelection->itemAt(i);
- if ((bb->locked()) || (bb->sizeLocked()))
+ item = itemSelection->itemAt(i);
+ if ((item->locked()) || (item->sizeLocked()))
continue;
- bb->OldB = bb->width();
- bb->OldH = bb->height();
- bb->OldB2 = bb->width();
- bb->OldH2 = bb->height();
- double dw = (bb->width() * scx) - bb->width();
- double dh = (bb->height() * scy) - bb->height();
+ item->OldB = item->width();
+ item->OldH = item->height();
+ item->OldB2 = item->width();
+ item->OldH2 = item->height();
+ double dw = (item->width() * scx) - item->width();
+ double dh = (item->height() * scy) - item->height();
double dsch = 1.0;
double dscw = 1.0;
- if (bb->isArc())
- {
- PageItem_Arc* item = bb->asArc();
- if (bb->height() != 0.0)
- dsch = item->arcHeight / bb->height();
- if (bb->width() != 0.0)
- dscw = item->arcWidth / bb->width();
- }
- bb->Sizing = false;
+ if (item->isArc())
+ {
+ PageItem_Arc* arcItem = item->asArc();
+ if (arcItem->height() != 0.0)
+ dsch = arcItem->arcHeight / arcItem->height();
+ if (arcItem->width() != 0.0)
+ dscw = arcItem->arcWidth / arcItem->width();
+ }
+ item->Sizing = false;
double oldRot, oldLocalX, oldLocalY;
- oldRot = bb->rotation();
- oldLocalX = bb->imageXOffset();
- oldLocalY = bb->imageYOffset();
+ oldRot = item->rotation();
+ oldLocalX = item->imageXOffset();
+ oldLocalY = item->imageYOffset();
FPointArray gr;
- gr.addPoint(bb->GrStartX, bb->GrStartY);
- gr.addPoint(bb->GrEndX, bb->GrEndY);
- gr.addPoint(bb->GrFocalX, bb->GrFocalY);
- gr.addPoint(bb->GrControl1);
- gr.addPoint(bb->GrControl2);
- gr.addPoint(bb->GrControl3);
- gr.addPoint(bb->GrControl4);
- gr.addPoint(bb->GrControl5);
+ gr.addPoint(item->GrStartX, item->GrStartY);
+ gr.addPoint(item->GrEndX, item->GrEndY);
+ gr.addPoint(item->GrFocalX, item->GrFocalY);
+ gr.addPoint(item->GrControl1);
+ gr.addPoint(item->GrControl2);
+ gr.addPoint(item->GrControl3);
+ gr.addPoint(item->GrControl4);
+ gr.addPoint(item->GrControl5);
FPoint g(gx, gy);
- FPoint b(0, 0, bb->xPos(), bb->yPos(), bb->rotation(), 1, 1);
+ FPoint b(0, 0, item->xPos(), item->yPos(), item->rotation(), 1, 1);
b -= g;
FPoint b1(b.x(), b.y(), 0, 0, 0, scx, scy);
- FPoint t(bb->width(), 0, bb->xPos(), bb->yPos(), bb->rotation(), 1, 1);
+ FPoint t(item->width(), 0, item->xPos(), item->yPos(), item->rotation(), 1, 1);
t -= g;
FPoint t1(t.x(), t.y(), 0, 0, 0, scx, scy);
- FPoint h(0, bb->height(), bb->xPos(), bb->yPos(), bb->rotation(), 1, 1);
+ FPoint h(0, item->height(), item->xPos(), item->yPos(), item->rotation(), 1, 1);
h -= g;
FPoint h1(h.x(), h.y(), 0, 0, 0, scx, scy);
- if (bb->isGroup() || scaleLine) // change the LineWidth only when the item is within a real Group
- {
- if (bb->lineWidth() != 0) // don't try to scale hairlines
- bb->setLineWidth(qMax(bb->lineWidth() * ((scx + scy) / 2), 0.01));
- }
- if (bb->itemType() == PageItem::Line)
- {
- bb->setRotation(atan2(t1.y() - b1.y(), t1.x() - b1.x()) * (180.0 / M_PI));
- bb->setWidth(sqrt(pow(t1.x() - b1.x(), 2) + pow(t1.y() - b1.y(), 2)));
- bb->setXYPos(b1.x() + gx, b1.y() + gy);
+ if (item->isGroup() || scaleLine) // change the LineWidth only when the item is within a real Group
+ {
+ if (item->lineWidth() != 0) // don't try to scale hairlines
+ item->setLineWidth(qMax(item->lineWidth() * ((scx + scy) / 2), 0.01));
+ }
+ if (item->itemType() == PageItem::Line)
+ {
+ item->setRotation(atan2(t1.y() - b1.y(), t1.x() - b1.x()) * (180.0 / M_PI));
+ item->setWidth(sqrt(pow(t1.x() - b1.x(), 2) + pow(t1.y() - b1.y(), 2)));
+ item->setXYPos(b1.x() + gx, b1.y() + gy);
}
else
{
- FPoint oldPos(bb->xPos(), bb->yPos());
+ FPoint oldPos(item->xPos(), item->yPos());
QTransform ma;
- ma.rotate(bb->rotation());
- bb->PoLine.map(ma);
+ ma.rotate(item->rotation());
+ item->PoLine.map(ma);
QTransform ma2;
- ma2.translate(gx - bb->xPos(), gy - bb->yPos());
+ ma2.translate(gx - item->xPos(), gy - item->yPos());
ma2.scale(scx, scy);
- bb->PoLine.map(ma2);
- bb->setRotation(0.0);
- bb->ClipEdited = true;
- if (bb->isArc())
- {
- PageItem_Arc* item = bb->asArc();
- item->arcWidth += dw * dscw;
- item->arcHeight += dh * dsch;
- item->recalcPath();
- }
- if (bb->isSpiral())
- {
- PageItem_Spiral* item = bb->asSpiral();
- item->recalcPath();
- }
- else if (bb->isRegularPolygon())
- {
- PageItem_RegularPolygon* item = bb->asRegularPolygon();
- item->setWidthHeight(item->width() * scx, item->height() * scy, true);
- item->recalcPath();
- }
- else if (bb->isGroup() || bb->isSymbol())
- {
- double oldGW = bb->groupWidth;
- double oldGH = bb->groupHeight;
- adjustItemSize(bb, true, false);
- bb->groupWidth = oldGW;
- bb->groupHeight = oldGH;
+ item->PoLine.map(ma2);
+ item->setRotation(0.0);
+ item->ClipEdited = true;
+ if (item->isArc())
+ {
+ PageItem_Arc* arc = item->asArc();
+ arc->arcWidth += dw * dscw;
+ arc->arcHeight += dh * dsch;
+ arc->recalcPath();
+ }
+ if (item->isSpiral())
+ {
+ PageItem_Spiral* spiral = item->asSpiral();
+ spiral->recalcPath();
+ }
+ else if (item->isRegularPolygon())
+ {
+ PageItem_RegularPolygon* poly = item->asRegularPolygon();
+ poly->setWidthHeight(poly->width() * scx, poly->height() * scy, true);
+ poly->recalcPath();
+ }
+ else if (item->isGroup() || item->isSymbol())
+ {
+ double oldGW = item->groupWidth;
+ double oldGH = item->groupHeight;
+ adjustItemSize(item, true, false);
+ item->groupWidth = oldGW;
+ item->groupHeight = oldGH;
}
else
- adjustItemSize(bb, true, false);
- if (bb->isArc() || bb->isSpiral() || bb->isRegularPolygon())
- bb->setXYPos(b1.x() + gx, b1.y() + gy);
+ adjustItemSize(item, true, false);
+ if (item->isArc() || item->isSpiral() || item->isRegularPolygon())
+ item->setXYPos(b1.x() + gx, b1.y() + gy);
else
{
QTransform ma3;
@@ -14634,77 +14633,77 @@
FPoint n(gx - oldPos.x(), gy - oldPos.y());
double x = ma3.m11() * n.x() + ma3.m21() * n.y() + ma3.dx();
double y = ma3.m22() * n.y() + ma3.m12() * n.x() + ma3.dy();
- //moveItem(gx - x, gy - y, bb);
- bb->moveBy(gx - x, gy - y);
+ //moveItem(gx - x, gy - y, item);
+ item->moveBy(gx - x, gy - y);
}
if (oldRot != 0)
{
- bb->setRotation(atan2(t1.y() - b1.y(), t1.x() - b1.x()) * (180.0 / M_PI));
- if (!bb->isArc() && !bb->isSpiral() && !bb->isRegularPolygon())
+ item->setRotation(atan2(t1.y() - b1.y(), t1.x() - b1.x()) * (180.0 / M_PI));
+ if (!item->isArc() && !item->isSpiral() && !item->isRegularPolygon())
{
QTransform ma;
- ma.rotate(-bb->rotation());
- bb->PoLine.map(ma);
+ ma.rotate(-item->rotation());
+ item->PoLine.map(ma);
}
- if (bb->isGroup() || bb->isSymbol())
+ if (item->isGroup() || item->isSymbol())
{
- double oldGW = bb->groupWidth;
- double oldGH = bb->groupHeight;
- adjustItemSize(bb, true, false);
- bb->groupWidth = oldGW;
- bb->groupHeight = oldGH;
+ double oldGW = item->groupWidth;
+ double oldGH = item->groupHeight;
+ adjustItemSize(item, true, false);
+ item->groupWidth = oldGW;
+ item->groupHeight = oldGH;
}
else
- adjustItemSize(bb, true, false);
+ adjustItemSize(item, true, false);
}
}
if (scaleText)
{
- if (bb->itemText.length() != 0)
- {
- for (aa = 0; aa < bb->itemText.length(); ++aa)
+ if (item->itemText.length() != 0)
+ {
+ for (int j = 0; j < item->itemText.length(); ++j)
{
CharStyle fsStyle;
- fsStyle.setFontSize(qMax(qRound(bb->itemText.charStyle(aa).fontSize()*((scx+scy)/2)), 1));
- bb->itemText.applyCharStyle(aa, 1, fsStyle);
+ fsStyle.setFontSize(qMax(qRound(item->itemText.charStyle(j).fontSize()*((scx+scy)/2)), 1));
+ item->itemText.applyCharStyle(j, 1, fsStyle);
}
- if (bb->asPathText())
- bb->updatePolyClip();
- }
- }
-
- bb->checkChanges();
-
- bb->setImageXYOffset(oldLocalX, oldLocalY);
- bb->OldB2 = bb->width();
- bb->OldH2 = bb->height();
+ if (item->asPathText())
+ item->updatePolyClip();
+ }
+ }
+
+ item->checkChanges();
+
+ item->setImageXYOffset(oldLocalX, oldLocalY);
+ item->OldB2 = item->width();
+ item->OldH2 = item->height();
QTransform ma4;
ma4.rotate(oldRot);
ma4.scale(scx, scy);
gr.map(ma4);
- for (int grow = 0; grow < bb->meshGradientArray.count(); grow++)
- {
- for (int gcol = 0; gcol < bb->meshGradientArray[grow].count(); gcol++)
- {
- bb->meshGradientArray[grow][gcol].transform(ma4);
- }
- }
- bb->ContourLine.map(ma4);
- bb->GrStartX = gr.point(0).x();
- bb->GrStartY = gr.point(0).y();
- bb->GrEndX = gr.point(1).x();
- bb->GrEndY = gr.point(1).y();
- bb->GrFocalX = gr.point(2).x();
- bb->GrFocalY = gr.point(2).y();
- bb->GrControl1 = gr.point(3);
- bb->GrControl2 = gr.point(4);
- bb->GrControl3 = gr.point(5);
- bb->GrControl4 = gr.point(6);
- bb->GrControl5 = gr.point(7);
- bb->updateGradientVectors();
- }
- bb = itemSelection->itemAt(0);
- GroupOnPage(bb);
+ for (int grow = 0; grow < item->meshGradientArray.count(); grow++)
+ {
+ for (int gcol = 0; gcol < item->meshGradientArray[grow].count(); gcol++)
+ {
+ item->meshGradientArray[grow][gcol].transform(ma4);
+ }
+ }
+ item->ContourLine.map(ma4);
+ item->GrStartX = gr.point(0).x();
+ item->GrStartY = gr.point(0).y();
+ item->GrEndX = gr.point(1).x();
+ item->GrEndY = gr.point(1).y();
+ item->GrFocalX = gr.point(2).x();
+ item->GrFocalY = gr.point(2).y();
+ item->GrControl1 = gr.point(3);
+ item->GrControl2 = gr.point(4);
+ item->GrControl3 = gr.point(5);
+ item->GrControl4 = gr.point(6);
+ item->GrControl5 = gr.point(7);
+ item->updateGradientVectors();
+ }
+ item = itemSelection->itemAt(0);
+ GroupOnPage(item);
itemSelection->setGroupRect();
itemSelection->getGroupRect(&gx, &gy, &gw, &gh);
m_rotMode = drm;
More information about the scribus-commit
mailing list