From 25b6eba148a968d85e663c258db040016b746f83 Mon Sep 17 00:00:00 2001 From: whitequark Date: Tue, 21 May 2019 23:05:05 +0000 Subject: [PATCH] Adjust angle label margin similarly to eda294ef. --- src/drawconstraint.cpp | 6 +++--- test/constraint/angle/free_in_3d.png | Bin 4773 -> 4763 bytes test/constraint/angle/normal.png | Bin 4878 -> 4882 bytes test/constraint/angle/reference.png | Bin 5262 -> 5239 bytes .../constraint/angle/reference_free_in_3d.png | Bin 4858 -> 4857 bytes 5 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/drawconstraint.cpp b/src/drawconstraint.cpp index e5f4cf1e..5c583624 100644 --- a/src/drawconstraint.cpp +++ b/src/drawconstraint.cpp @@ -349,8 +349,8 @@ void Constraint::DoArcForAngle(Canvas *canvas, Canvas::hStroke hcs, double r = max(sqrt(rda*rda + rdna*rdna), 15.0 * pixels); double th = Style::TextHeight(GetStyle()) / camera.scale; - double swidth = VectorFont::Builtin()->GetWidth(th, Label()) + 4*pixels, - sheight = VectorFont::Builtin()->GetCapHeight(th) + 8*pixels; + double swidth = VectorFont::Builtin()->GetWidth(th, Label()) + 8*pixels, + sheight = VectorFont::Builtin()->GetCapHeight(th) + 6*pixels; double textR = sqrt(swidth * swidth + sheight * sheight) / 2.0; *ref = pi.Plus(rm.WithMagnitude(std::max(rm.Magnitude(), 15 * pixels + textR))); @@ -412,7 +412,7 @@ void Constraint::DoArcForAngle(Canvas *canvas, Canvas::hStroke hcs, if(i > 0) { if(trim) { DoLineTrimmedAgainstBox(canvas, hcs, *ref, prev, p, - /*extend=*/false, gr, gu, swidth, sheight); + /*extend=*/false, gr, gu, swidth, sheight + 2*pixels); } else { DoLine(canvas, hcs, prev, p); } diff --git a/test/constraint/angle/free_in_3d.png b/test/constraint/angle/free_in_3d.png index 03a0afb1e55cfa20e4ef0d4a6c6625b1bf29cbc1..2fef8c185e0a3efea5f6b4e411d23675eeaf05ab 100644 GIT binary patch delta 3106 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 diff --git a/test/constraint/angle/normal.png b/test/constraint/angle/normal.png index 10f0a4f219607039e90454bcdd17a3628b900f67..40b2d0e190cf5f5c833be4f3730398c704e3c0cb 100644 GIT binary patch literal 4882 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 diff --git a/test/constraint/angle/reference.png b/test/constraint/angle/reference.png index ca91c0d133661a07ac9cca48178191a07759f9e1..e59f481133d65828dbe291f641bd2223ff701fdf 100644 GIT binary patch literal 5239 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 literal 4858 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