Initial DrawingViewDetail

This commit is contained in:
WandererFan
2016-11-20 07:13:45 -05:00
committed by Yorik van Havre
parent 9735744b46
commit 082045456f
19 changed files with 1253 additions and 5 deletions

View File

@@ -51,6 +51,7 @@
#include <Mod/TechDraw/App/DrawViewPart.h>
#include <Mod/TechDraw/App/DrawViewSection.h>
#include <Mod/TechDraw/App/DrawHatch.h>
#include <Mod/TechDraw/App/DrawViewDetail.h>
#include "ZVALUE.h"
#include "QGIFace.h"
@@ -61,6 +62,8 @@
#include "QGICenterLine.h"
#include "QGCustomBorder.h"
#include "QGCustomLabel.h"
#include "QGCustomRect.h"
#include "QGIMatting.h"
#include "QGIViewPart.h"
using namespace TechDrawGui;
@@ -308,6 +311,7 @@ void QGIViewPart::updateView(bool update)
void QGIViewPart::draw() {
drawViewPart();
drawBorder();
drawMatting();
}
void QGIViewPart::drawViewPart()
@@ -486,11 +490,14 @@ void QGIViewPart::removeDecorations()
QList<QGraphicsItem*> children = childItems();
for (auto& c:children) {
QGIDecoration* decor = dynamic_cast<QGIDecoration*>(c);
QGIMatting* mat = dynamic_cast<QGIMatting*>(c);
if (decor) {
removeFromGroup(decor);
scene()->removeItem(decor);
delete decor;
} else if (mat) {
removeFromGroup(mat);
scene()->removeItem(mat);
delete mat;
}
}
}
@@ -601,6 +608,29 @@ void QGIViewPart::drawCenterLines(bool b)
}
}
void QGIViewPart::drawMatting()
{
auto viewPart( dynamic_cast<TechDraw::DrawViewPart *>(getViewObject()) );
TechDraw::DrawViewDetail* dvd = nullptr;
if (viewPart->isDerivedFrom(TechDraw::DrawViewDetail::getClassTypeId())) {
dvd = static_cast<TechDraw::DrawViewDetail*>(viewPart);
} else {
return;
}
double scale = dvd->Scale.getValue();
double radius = dvd->Radius.getValue() * scale;
QGIMatting* mat = new QGIMatting();
addToGroup(mat);
mat->setPos(0.0,0.0);
mat->setRadius(radius);
QRectF displayArea = customChildrenBoundingRect();
mat->setSize(displayArea.width(),displayArea.height());
mat->setHoleStyle(dvd->getMattingStyle());
mat->draw();
mat->show();
}
// As called by arc of ellipse case:
// pathArc(path, geom->major, geom->minor, geom->angle, geom->largeArc, geom->cw,
// geom->endPnt.x, geom->endPnt.y,