q.x = p.x + u.x;
q.y = p.y + u.y;
- // FIXME: handle this correctly for ARR_MOD_LEFT and ARR_MOD_RIGHT when the
- // angle of the arrow tip is half of the normal arrow
-
- const pointf normal_left = {-v.x, -v.y};
- const pointf normal_right = v;
+ const pointf origin = {0, 0};
+ const pointf v_inv = {-v.x, -v.y};
+ const pointf normal_left = flag & ARR_MOD_RIGHT ? origin : v_inv;
+ const pointf normal_right = flag & ARR_MOD_LEFT ? origin : v;
const pointf base_left = flag & ARR_MOD_INV ? normal_right : normal_left;
const pointf base_right = flag & ARR_MOD_INV ? normal_left : normal_right;
const pointf normal_tip = {-u.x, -u.y};
#include "test_edge_node_overlap_utilities.h"
#include "test_utilities.h"
-// FIXME: this test fails for the 'l' and 'r' arrow shape modifiers which do not
-// handle the miter point correctly yet
-
TEST_CASE(
"Edge node overlap for normal and inv arrow with all arrow shape modifiers",
- "[!shouldfail] An edge connected to a node shall touch that node and not "
- "overlap it too much, regardless of if the arrow shape is 'normal' or "
- "'inv' and which arrrow shape modifier is used") {
+ "An edge connected to a node shall touch that node and not overlap it too "
+ "much, regardless of if the arrow shape is 'normal' or 'inv' and which "
+ "arrrow shape modifier is used") {
std::string filename_base = AUTO_NAME();