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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 80dad306c8a1e15bbabb2a01af81700b3ab4ca4010f1fd9c4d9f0e2136ccf834
4
- data.tar.gz: 07a78eefd9c86ef3b025621a6b89013d1f988529a2bcd835b465cd43e0b98fa3
3
+ metadata.gz: d69a2edfc36e402cd81b0eda6c4eb5c43cb0fda3ad8c46fcc2e4e5d1de63d8ec
4
+ data.tar.gz: d5bfb484b0d84399bfe8e54fd874374a7200dbb3e667dc47f0330f5f65a6531f
5
5
  SHA512:
6
- metadata.gz: 274a1276005d3863049b801c9d044dd7aa4952749041b7ad6ed63b691771bb73779c0a1567a6068c436033c758c7beb59c14e39d7e95cc467058fd6b89f28065
7
- data.tar.gz: 6600d5ecef1586cd5a566236237b0a6fb1692357ec41a7a7f0b887d294e8ed757611a9473b920807b75c499feb0e107ae953447d01ff5e9c0843482e7a942ede
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
- # EA computes tree routes at DRAW TIME from current
382
- # element positions — the stored Path is stale for them
383
- # (hand-verified: SY 8542 stored corner (271,-42) vs EA
384
- # drawn (298,70)). Route: source port -> corner at
385
- # (target dock x, source exit y) -> target port.
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
@@ -4,5 +4,5 @@ module Ea
4
4
  # Gem release version. Extracted to its own file so the
5
5
  # `gem-release` tool's `gem bump` can find and update it via the
6
6
  # standard `lib/<gem>/version.rb` convention.
7
- VERSION = "0.6.14"
7
+ VERSION = "0.6.15"
8
8
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ea
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.14
4
+ version: 0.6.15
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.