ea 0.6.14 → 0.6.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/ea/sources/qea/diagram_builder.rb +35 -6
- data/lib/ea/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: d69a2edfc36e402cd81b0eda6c4eb5c43cb0fda3ad8c46fcc2e4e5d1de63d8ec
|
|
4
|
+
data.tar.gz: d5bfb484b0d84399bfe8e54fd874374a7200dbb3e667dc47f0330f5f65a6531f
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: ba29936fcceaa22430339e69dd4db37a47fd39b7c6c474484740fb8d218014a1c0a4bfa84fc6ab09fd90adf4402e65cf51fbf96cd3e63cc8e116c45065ba4a07
|
|
7
|
+
data.tar.gz: 947511083114075e9ad373e11f20c1c4dcea02cd9f5b35da4719243430a2228322da6922bb6b95903fd63a30cc6568ac12d6d5b353a02e633b567cbbc674eaa5
|
|
@@ -377,15 +377,31 @@ module Ea
|
|
|
377
377
|
element_edge_point(target_placement, :target, edge_out)
|
|
378
378
|
|
|
379
379
|
intermediate = intermediate_waypoints(link_row)
|
|
380
|
-
if edge_out == 2 && source_port && target_port
|
|
381
|
-
|
|
382
|
-
#
|
|
383
|
-
#
|
|
384
|
-
#
|
|
385
|
-
#
|
|
380
|
+
if edge_out == 2 && source_port && target_port &&
|
|
381
|
+
!valid_tree_path?(intermediate, source_placement)
|
|
382
|
+
# EA recomputes tree routes at DRAW TIME from current
|
|
383
|
+
# element positions when the stored Path no longer lands
|
|
384
|
+
# on the source's facing edge (hand-verified: SY 8542's
|
|
385
|
+
# stale Path vs EA-drawn route; CityObjectGroup's current
|
|
386
|
+
# Path renders byte-exact and is kept). Computed route:
|
|
387
|
+
# source port -> corner at (target dock x, source exit
|
|
388
|
+
# y) -> target port.
|
|
386
389
|
points = [[source_point[0], source_point[1]],
|
|
387
390
|
[target_point[0], source_point[1]],
|
|
388
391
|
[target_point[0], target_point[1]]]
|
|
392
|
+
elsif edge_out == 2 && intermediate.size == 1
|
|
393
|
+
# Current tree Path (bend on the source's facing edge):
|
|
394
|
+
# EA's draw-time route shape — source right edge at the
|
|
395
|
+
# bend's y, corner at the bend, target facing edge at the
|
|
396
|
+
# bend's x (byte-exact on CityObjectGroup).
|
|
397
|
+
src = bounds_from_rect(source_placement)
|
|
398
|
+
tgt = bounds_from_rect(target_placement)
|
|
399
|
+
bend = intermediate.first
|
|
400
|
+
going_up = tgt.y + tgt.height <= src.y
|
|
401
|
+
target_y = going_up ? tgt.y + tgt.height : tgt.y
|
|
402
|
+
points = [[src.x + src.width, bend[1]],
|
|
403
|
+
[bend[0], bend[1]],
|
|
404
|
+
[bend[0], target_y]]
|
|
389
405
|
elsif intermediate.any?
|
|
390
406
|
points = [source_point, *intermediate, target_point]
|
|
391
407
|
elsif source_port || target_port
|
|
@@ -401,6 +417,19 @@ module Ea
|
|
|
401
417
|
end
|
|
402
418
|
end
|
|
403
419
|
|
|
420
|
+
# A tree Path is current when its bend height still falls
|
|
421
|
+
# within the source element's y-range (the exit height EA
|
|
422
|
+
# records); a bend outside the element is stale and EA
|
|
423
|
+
# re-derives the route at draw time. The bend's x may sit
|
|
424
|
+
# arbitrarily far right (trunk position).
|
|
425
|
+
def valid_tree_path?(intermediate, source_placement)
|
|
426
|
+
return false if intermediate.empty?
|
|
427
|
+
|
|
428
|
+
bend = intermediate.first
|
|
429
|
+
b = bounds_from_rect(source_placement)
|
|
430
|
+
bend[1].between?(b.y - 5, b.y + b.height + 5)
|
|
431
|
+
end
|
|
432
|
+
|
|
404
433
|
# Absolute connection point EA docks the connector's visible
|
|
405
434
|
# endpoint at, derived from the Geometry SX/SY (source) and
|
|
406
435
|
# EX/EY (target) offsets. The offsets are measured inward from
|
data/lib/ea/version.rb
CHANGED