[TD]fix Print Center Marks #11309

This commit is contained in:
wandererfan
2023-11-08 13:50:38 -05:00
committed by WandererFan
parent 0bd0d2e4b5
commit 65c88376f8
2 changed files with 52 additions and 19 deletions

View File

@@ -349,23 +349,6 @@ void QGIViewPart::drawAllVertexes()
auto dvp(static_cast<TechDraw::DrawViewPart*>(getViewObject()));
auto vp(static_cast<ViewProviderViewPart*>(getViewProvider(getViewObject())));
bool showVertices = true;
bool showCenterMarks = true;
if (getFrameState()) {
//frames are on
if (dvp->CoarseView.getValue()) {
// don't show vertexes in CoarseView as there are too many
showVertices = false;
}
} else {
//frames are off
showVertices = false;
}
if (!vp->ArcCenterMarks.getValue()) {
showCenterMarks = false;
}
float lineWidth = vp->LineWidth.getValue() * lineScaleFactor; //thick
double vertexScaleFactor = Preferences::getPreferenceGroup("General")->GetFloat("VertexScale", 3.0);
QColor vertexColor = PreferencesGui::getAccessibleQColor(PreferencesGui::vertexQColor());
@@ -374,7 +357,7 @@ void QGIViewPart::drawAllVertexes()
std::vector<TechDraw::VertexPtr>::const_iterator vert = verts.begin();
for (int i = 0; vert != verts.end(); ++vert, i++) {
if ((*vert)->isCenter()) {
if (showCenterMarks) {
if (showCenterMarks()) {
QGICMark* cmItem = new QGICMark(i);
addToGroup(cmItem);
cmItem->setPos(Rez::guiX((*vert)->x()), Rez::guiX((*vert)->y()));
@@ -385,7 +368,7 @@ void QGIViewPart::drawAllVertexes()
}
} else {
//regular Vertex
if (showVertices) {
if (showVertices()) {
QGIVertex* item = new QGIVertex(i);
addToGroup(item);
item->setPos(Rez::guiX((*vert)->x()), Rez::guiX((*vert)->y()));
@@ -424,6 +407,51 @@ bool QGIViewPart::showThisEdge(BaseGeomPtr geom)
return false;
}
// returns true if vertex dots should be shown
bool QGIViewPart::showVertices()
{
// dvp and vp already validated
auto dvp(static_cast<TechDraw::DrawViewPart*>(getViewObject()));
if (dvp->CoarseView.getValue()) {
// never show vertices in CoarseView
return false;
}
if (!getFrameState()) {
// frames are off, don't show vertices
return false;
}
return true;
}
// returns true if arc center marks should be shown
bool QGIViewPart::showCenterMarks()
{
// dvp and vp already validated
auto dvp(static_cast<TechDraw::DrawViewPart*>(getViewObject()));
auto vp(static_cast<ViewProviderViewPart*>(getViewProvider(dvp)));
if (!vp->ArcCenterMarks.getValue()) {
// no center marks if view property is false
return false;
}
if (getFrameState()) {
// frames are on and view property is true
return true;
}
if (prefPrintCenters()) {
// frames are off, view property is true and Print Center Marks is true
return true;
}
return false;
}
bool QGIViewPart::formatGeomFromCosmetic(std::string cTag, QGIEdge* item)
{
// Base::Console().Message("QGIVP::formatGeomFromCosmetic(%s)\n", cTag.c_str());
@@ -971,6 +999,8 @@ void QGIViewPart::paint(QPainter* painter, const QStyleOptionGraphicsItem* optio
QGIView::paint(painter, &myOption, widget);
}
//QGIViewPart derived classes do not need a rotate view method as rotation is handled on App side.
void QGIViewPart::rotateView() {}

View File

@@ -126,6 +126,9 @@ protected:
bool formatGeomFromCosmetic(std::string cTag, QGIEdge* item);
bool formatGeomFromCenterLine(std::string cTag, QGIEdge* item);
bool showCenterMarks();
bool showVertices();
private:
QList<QGraphicsItem*> deleteItems;
PathBuilder* m_pathBuilder;