ea 0.6.13 → 0.6.14

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: cf25ee32e2c74ea3e4c5dc60be9e471eb535e861308ba4ba4c3caf73d73b4431
4
- data.tar.gz: 2702c5b5d83823a16b4eb7c286fa96fa0a09174b61e3965634a27e6070b06545
3
+ metadata.gz: 80dad306c8a1e15bbabb2a01af81700b3ab4ca4010f1fd9c4d9f0e2136ccf834
4
+ data.tar.gz: 07a78eefd9c86ef3b025621a6b89013d1f988529a2bcd835b465cd43e0b98fa3
5
5
  SHA512:
6
- metadata.gz: c7c111e417e5097b43abcb1a8b54f61232262821b4524b459f96d734663309920d8256d4a833fe01357a843b56106427d4ede024ba9cc47a3a08160c41b8ca16
7
- data.tar.gz: 849694a1724246a1b0410083d6ab0a8e84b5048bc5b1c214006c7264a95827aa851792b3db726ba602da585d2d9daf7af9b43873518219b8ee7cdfcea84897e2
6
+ metadata.gz: 274a1276005d3863049b801c9d044dd7aa4952749041b7ad6ed63b691771bb73779c0a1567a6068c436033c758c7beb59c14e39d7e95cc467058fd6b89f28065
7
+ data.tar.gz: 6600d5ecef1586cd5a566236237b0a6fb1692357ec41a7a7f0b887d294e8ed757611a9473b920807b75c499feb0e107ae953447d01ff5e9c0843482e7a942ede
@@ -377,9 +377,15 @@ module Ea
377
377
  element_edge_point(target_placement, :target, edge_out)
378
378
 
379
379
  intermediate = intermediate_waypoints(link_row)
380
- if tree_route?(edge_out, intermediate)
381
- points = tree_waypoints(source_placement, target_placement,
382
- intermediate.first)
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.
386
+ points = [[source_point[0], source_point[1]],
387
+ [target_point[0], source_point[1]],
388
+ [target_point[0], target_point[1]]]
383
389
  elsif intermediate.any?
384
390
  points = [source_point, *intermediate, target_point]
385
391
  elsif source_port || target_port
@@ -395,26 +401,6 @@ module Ea
395
401
  end
396
402
  end
397
403
 
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
-
418
404
  # Absolute connection point EA docks the connector's visible
419
405
  # endpoint at, derived from the Geometry SX/SY (source) and
420
406
  # EX/EY (target) offsets. The offsets are measured inward from
@@ -69,11 +69,12 @@ module Ea
69
69
 
70
70
  private
71
71
 
72
- # EA's tree-route label clusters (verified against
73
- # EA-published reference SVGs): source-end pairs stack at
74
- # the exit point (role +3/-23, mult +3/0); target-end pairs
75
- # sit astride the trunk — the mult starts at trunk+8 and
76
- # the role's right edge meets it (role_x = trunk+8-width).
72
+ # EA's tree-route label clusters (hand-verified against the
73
+ # EA-published reference, SY 8542 with canvas=(0,0)):
74
+ # source-end pairs stack at the exit point (role +3/-23,
75
+ # mult +3/0); target-end pairs sit just above the dock
76
+ # astride the trunk — role right edge at trunk+7, mult
77
+ # starting at trunk+8, both at dock_y - 8.
77
78
  def zero_offset?(text_box, mult_box)
78
79
  [text_box, mult_box].compact.all? do |b|
79
80
  b["ox"].to_i.zero? && b["oy"].to_i.zero?
@@ -88,8 +89,8 @@ module Ea
88
89
  width = Ea::Fonts::Metrics.text_length(
89
90
  role.to_s, font_size, family: font_family
90
91
  ) || role.to_s.length * 6
91
- [[anchor[0] + 8 - width, text_pos ? text_pos[1] : anchor[1]],
92
- [anchor[0] + 8, mult_pos ? mult_pos[1] : anchor[1]]]
92
+ [[anchor[0] + 7 - width, anchor[1] - 8],
93
+ [anchor[0] + 8, anchor[1] - 8]]
93
94
  end
94
95
  end
95
96
 
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.13"
7
+ VERSION = "0.6.14"
8
8
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ea
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.13
4
+ version: 0.6.14
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2026-09-30 00:00:00.000000000 Z
11
+ date: 2026-10-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: lutaml-model