Render points corresponding to a DOF in the front layer.

Before this commit, if any rendering mode except "show all occluded"
is enabled, points can be highlighted for corresponding to a DOF
after "Analyze → Degrees of Freedom" but then promptly occluded,
which is confusing.
pull/168/head
EvilSpirit 2017-01-20 10:05:03 +07:00 committed by whitequark
parent db75e06ecc
commit 86f229c5e6
2 changed files with 12 additions and 8 deletions

View File

@ -69,6 +69,8 @@ Bugs fixed:
same orientation constraints are more robust. same orientation constraints are more robust.
* Adding some constraints (vertical, midpoint, etc) twice will now error out * Adding some constraints (vertical, midpoint, etc) twice will now error out
immediately, instead of later and in a confusing way. immediately, instead of later and in a confusing way.
* Points highlighted with "Analyze → Show Degrees of Freedom" are drawn
on top of all other geometry.
2.3 2.3
--- ---

View File

@ -495,14 +495,6 @@ void Entity::Draw(DrawAs how, Canvas *canvas) {
stroke.zIndex = zIndex; stroke.zIndex = zIndex;
Canvas::hStroke hcs = canvas->GetStroke(stroke); Canvas::hStroke hcs = canvas->GetStroke(stroke);
Canvas::Stroke pointStroke = {};
pointStroke.layer = stroke.layer;
pointStroke.zIndex = stroke.zIndex;
pointStroke.color = stroke.color;
pointStroke.width = 7.0;
pointStroke.unit = Canvas::Unit::PX;
Canvas::hStroke hcsPoint = canvas->GetStroke(pointStroke);
switch(type) { switch(type) {
case Type::POINT_N_COPY: case Type::POINT_N_COPY:
case Type::POINT_N_TRANS: case Type::POINT_N_TRANS:
@ -528,9 +520,19 @@ void Entity::Draw(DrawAs how, Canvas *canvas) {
free = pu->free || pv->free; free = pu->free || pv->free;
} }
Canvas::Stroke pointStroke = {};
pointStroke.layer = (free) ? Canvas::Layer::FRONT : stroke.layer;
pointStroke.zIndex = stroke.zIndex;
pointStroke.color = stroke.color;
pointStroke.width = 7.0;
pointStroke.unit = Canvas::Unit::PX;
Canvas::hStroke hcsPoint = canvas->GetStroke(pointStroke);
if(free) { if(free) {
Canvas::Stroke analyzeStroke = Style::Stroke(Style::ANALYZE); Canvas::Stroke analyzeStroke = Style::Stroke(Style::ANALYZE);
analyzeStroke.width = 14.0; analyzeStroke.width = 14.0;
analyzeStroke.layer = Canvas::Layer::FRONT;
Canvas::hStroke hcsAnalyze = canvas->GetStroke(analyzeStroke); Canvas::hStroke hcsAnalyze = canvas->GetStroke(analyzeStroke);
canvas->DrawPoint(PointGetNum(), hcsAnalyze); canvas->DrawPoint(PointGetNum(), hcsAnalyze);