From 86f229c5e6e1630ef1946933c6bea20df52bc7da Mon Sep 17 00:00:00 2001 From: EvilSpirit Date: Fri, 20 Jan 2017 10:05:03 +0700 Subject: [PATCH] Render points corresponding to a DOF in the front layer. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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. --- CHANGELOG.md | 2 ++ src/drawentity.cpp | 18 ++++++++++-------- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 19f43ba..fd7c456 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -69,6 +69,8 @@ Bugs fixed: same orientation constraints are more robust. * Adding some constraints (vertical, midpoint, etc) twice will now error out 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 --- diff --git a/src/drawentity.cpp b/src/drawentity.cpp index 5478b4a..7f534ef 100644 --- a/src/drawentity.cpp +++ b/src/drawentity.cpp @@ -495,14 +495,6 @@ void Entity::Draw(DrawAs how, Canvas *canvas) { stroke.zIndex = zIndex; 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) { case Type::POINT_N_COPY: case Type::POINT_N_TRANS: @@ -528,9 +520,19 @@ void Entity::Draw(DrawAs how, Canvas *canvas) { 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) { Canvas::Stroke analyzeStroke = Style::Stroke(Style::ANALYZE); analyzeStroke.width = 14.0; + analyzeStroke.layer = Canvas::Layer::FRONT; Canvas::hStroke hcsAnalyze = canvas->GetStroke(analyzeStroke); canvas->DrawPoint(PointGetNum(), hcsAnalyze);