---
scribo/scribo/util/component_precise_outline.hh | 91 ++++++++++-------------
1 files changed, 40 insertions(+), 51 deletions(-)
diff --git a/scribo/scribo/util/component_precise_outline.hh
b/scribo/scribo/util/component_precise_outline.hh
index f147293..1e447a3 100644
--- a/scribo/scribo/util/component_precise_outline.hh
+++ b/scribo/scribo/util/component_precise_outline.hh
@@ -103,20 +103,15 @@ namespace scribo
const I& input,
const point2d& cur_pt)
{
- if (i < 3)
+ const point2d p2(cur_pt.row() + offset[direction][5][1],
+ cur_pt.col() + offset[direction][5][0]);
+ const point2d p3(cur_pt.row() + offset[direction][7][1],
+ cur_pt.col() + offset[direction][7][0]);
+
+ if (!input(p2) && input(p3))
{
- const point2d p1(cur_pt.row() + offset[direction][0][1],
- cur_pt.col() + offset[direction][0][0]);
- const point2d p2(cur_pt.row() + offset[direction][5][1],
- cur_pt.col() + offset[direction][5][0]);
- const point2d p3(cur_pt.row() + offset[direction][7][1],
- cur_pt.col() + offset[direction][7][0]);
-
- if (input(p1) && !input(p2) && input(p3))
- {
- direction = 3;
- return;
- }
+ direction = 3;
+ return;
}
if (i == 3 || i == 4)
@@ -135,20 +130,20 @@ namespace scribo
const I& input,
const point2d& cur_pt)
{
- if (i < 3)
+ const point2d p1(cur_pt.row() + offset[direction][0][1],
+ cur_pt.col() + offset[direction][0][0]);
+ const point2d p2(cur_pt.row() + offset[direction][5][1],
+ cur_pt.col() + offset[direction][5][0]);
+ const point2d p3(cur_pt.row() + offset[direction][7][1],
+ cur_pt.col() + offset[direction][7][0]);
+
+ if (!input(p2) && (input(p1) || input(p3)))
{
- const point2d p2(cur_pt.row() + offset[direction][5][1],
- cur_pt.col() + offset[direction][5][0]);
- const point2d p3(cur_pt.row() + offset[direction][7][1],
- cur_pt.col() + offset[direction][7][0]);
-
- if (!input(p2) && input(p3))
- {
- direction = 0;
- return;
- }
+ direction = 0;
+ return;
}
+
if (i == 3 || i == 4)
direction = 2;
else if (i == 5 || i == 6)
@@ -165,20 +160,15 @@ namespace scribo
const I& input,
const point2d& cur_pt)
{
- if (i < 3)
+ const point2d p2(cur_pt.row() + offset[direction][5][1],
+ cur_pt.col() + offset[direction][5][0]);
+ const point2d p3(cur_pt.row() + offset[direction][7][1],
+ cur_pt.col() + offset[direction][7][0]);
+
+ if (!input(p2) && input(p3))
{
- const point2d p1(cur_pt.row() + offset[direction][0][1],
- cur_pt.col() + offset[direction][0][0]);
- const point2d p2(cur_pt.row() + offset[direction][5][1],
- cur_pt.col() + offset[direction][5][0]);
- const point2d p3(cur_pt.row() + offset[direction][7][1],
- cur_pt.col() + offset[direction][7][0]);
-
- if (input(p1) && !input(p2) && input(p3))
- {
- direction = 1;
- return;
- }
+ direction = 1;
+ return;
}
if (i == 3 || i == 4)
@@ -197,18 +187,17 @@ namespace scribo
const I& input,
const point2d& cur_pt)
{
- if (i < 3)
+ const point2d p1(cur_pt.row() + offset[direction][0][1],
+ cur_pt.col() + offset[direction][0][0]);
+ const point2d p2(cur_pt.row() + offset[direction][5][1],
+ cur_pt.col() + offset[direction][5][0]);
+ const point2d p3(cur_pt.row() + offset[direction][7][1],
+ cur_pt.col() + offset[direction][7][0]);
+
+ if (!input(p2) && (input(p1) || input(p3)))
{
- const point2d p2(cur_pt.row() + offset[direction][5][1],
- cur_pt.col() + offset[direction][5][0]);
- const point2d p3(cur_pt.row() + offset[direction][7][1],
- cur_pt.col() + offset[direction][7][0]);
-
- if (!input(p2) && input(p3))
- {
- direction = 2;
- return;
- }
+ direction = 2;
+ return;
}
if (i == 3 || i == 4)
@@ -346,11 +335,11 @@ namespace scribo
}
}
- mln::p_array<P> waypoints;
- internal::filter_points(points, waypoints);
+ // mln::p_array<P> waypoints;
+ // internal::filter_points(points, waypoints);
trace::exiting("scribo::util::component_precise_outline");
- return waypoints;
+ return points;
}
# endif // ! MLN_INCLUDE_ONLY
--
1.5.6.5