ea 0.6.10 → 0.6.11

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: eed940fe5d30af46cc24f8945771cfa2ae1b4ccafaf5574a343b0b361241c7fb
4
- data.tar.gz: f072e8063bfd37d5f1547bec70e72fcc3cac33a2ae0fdfff5a85e035885a4ab2
3
+ metadata.gz: c33a8ed4fa47f762a4ced58e7525a0612927510f35c3367423c14651c1aa7017
4
+ data.tar.gz: d0e757281769b12bbee152bc415d0fdfd441fb022a2dbd29213efb1cce06a41c
5
5
  SHA512:
6
- metadata.gz: a202d8da9feef0a2f2908780873dab759090e74fc6c5bd9c313e443f3e33659a871b2492122fd9b39b37528e4f5f05f30e4439b88e72646c370a0045a66b2ecc
7
- data.tar.gz: 56d7264d3167c6367a753254a4815e42e3ed029cc1a39ae0d1d85f2baebf1fde14a0cf2a1b0008981a1196474632eafcc1c763cfac72ff8913e10dcb5096154f
6
+ metadata.gz: f76e15be4c2a04d97fdc169ff4bf79da55c72a49c14b8e553c26e4659ec04373bd6b479364c86447a732b8405d5c9c1d108bd8ae8d4e57506ed673cd21e924d4
7
+ data.tar.gz: '025978b5e6c9ce71457d0a86635072ffc0082bfff9dcd3a0f64657d498adc5ffd6b347097af3974993ef1f5e42f0e2824d5a59197504e6a3839df4dd96167f39'
@@ -377,7 +377,10 @@ module Ea
377
377
  element_edge_point(target_placement, :target, edge_out)
378
378
 
379
379
  intermediate = intermediate_waypoints(link_row)
380
- if intermediate.any?
380
+ if tree_route?(edge_out, intermediate)
381
+ points = tree_waypoints(source_placement, target_placement,
382
+ intermediate.first)
383
+ elsif intermediate.any?
381
384
  points = [source_point, *intermediate, target_point]
382
385
  elsif source_port || target_port
383
386
  # Exact ports are known — the SX/SY bend heuristics in
@@ -392,6 +395,26 @@ module Ea
392
395
  end
393
396
  end
394
397
 
398
+ # EA's tree-style routing (Geometry EDGE=2 with a single Path
399
+ # bend): the visible line leaves the SOURCE's right edge at
400
+ # the bend's y, runs horizontally to the bend x, then
401
+ # vertically to the target's facing edge — replacing the
402
+ # ray-cast ports entirely. Verified against the
403
+ # CityObjectGroup reference (parent + groupMember lines).
404
+ def tree_route?(edge_out, intermediate)
405
+ edge_out == 2 && intermediate.size == 1
406
+ end
407
+
408
+ def tree_waypoints(source_placement, target_placement, bend)
409
+ src = bounds_from_rect(source_placement)
410
+ tgt = bounds_from_rect(target_placement)
411
+ bend_x = bend[0]
412
+ source_point = [src.x + src.width, bend[1]]
413
+ going_up = tgt.y + tgt.height <= src.y
414
+ target_y = going_up ? tgt.y + tgt.height : tgt.y
415
+ [source_point, [bend_x, bend[1]], [bend_x, target_y]]
416
+ end
417
+
395
418
  # Absolute connection point EA docks the connector's visible
396
419
  # endpoint at, derived from the Geometry SX/SY (source) and
397
420
  # 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.10"
7
+ VERSION = "0.6.11"
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.10
4
+ version: 0.6.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.