bool FlattenPathPlugin::run(ScribusDoc* doc, QString) { ScribusDoc* currDoc = doc; if (currDoc == 0) currDoc = ScCore->primaryMainWindow()->doc; if (currDoc->m_Selection->count() > 0) { PageItem *currItem = currDoc->m_Selection->itemAt(0); QPainterPath pp; if (currItem->itemType() == PageItem::PolyLine) pp = currItem->PoLine.toQPainterPath(false); else pp = currItem->PoLine.toQPainterPath(true); QList<QPolygonF> polyList = pp.toSubpathPolygons(); QPainterPath result; for (int a = 0; a < polyList.count(); a++) { result.addPolygon(polyList[a]); } currItem->PoLine.fromQPainterPath(result); currItem->ClipEdited = true; currItem->FrameType = 3; currDoc->adjustItemSize(currItem); currItem->OldB2 = currItem->width(); currItem->OldH2 = currItem->height(); currItem->updateClip(); currDoc->regionsChanged()->update(QRectF()); currDoc->changed(); } return true; }
bool LensEffectsPlugin::run(ScribusDoc* doc, QString) { ScribusDoc* currDoc = doc; if (currDoc == 0) currDoc = ScCore->primaryMainWindow()->doc; if (currDoc->m_Selection->count() > 0) { LensDialog *dia = new LensDialog(currDoc->scMW(), currDoc); if (dia->exec()) { for (int a = 0; a < dia->origPathItem.count(); a++) { PageItem *currItem = dia->origPageItem[a]; if (currItem->itemType() == PageItem::Line) continue; QPainterPath path = dia->origPathItem[a]->path(); FPointArray points; points.fromQPainterPath(path); currItem->PoLine = points; currItem->ClipEdited = true; currItem->FrameType = 3; double oW = currItem->width(); double oH = currItem->height(); currDoc->adjustItemSize(currItem, true); currItem->OldB2 = currItem->width(); currItem->OldH2 = currItem->height(); if (currItem->isGroup()) { currItem->groupWidth = currItem->groupWidth * (currItem->OldB2 / oW); currItem->groupHeight = currItem->groupHeight * (currItem->OldH2 / oH); } currItem->updateClip(); if (currItem->isGroup()) { currDoc->resizeGroupToContents(currItem); currItem->SetRectFrame(); } currItem->ContourLine = currItem->PoLine.copy(); } if (currDoc->m_Selection->count() > 0) { PageItem *m_patternItem = currDoc->m_Selection->itemAt(0); if (m_patternItem->isGroup()) { currDoc->resizeGroupToContents(m_patternItem); m_patternItem->SetRectFrame(); } } currDoc->changed(); currDoc->view()->DrawNew(); } delete dia; } return true; }