@knowvah/dot-engine 2.0.2 → 2.2.0
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.
- package/dist/async/render-async.d.ts.map +1 -1
- package/dist/common/arith.d.ts +6 -0
- package/dist/common/arith.d.ts.map +1 -1
- package/dist/common/libm-hypot.d.ts +3 -0
- package/dist/common/libm-hypot.d.ts.map +1 -0
- package/dist/common/poly-sizing.d.ts.map +1 -1
- package/dist/common/textmeasure-factory.d.ts +2 -1
- package/dist/common/textmeasure-factory.d.ts.map +1 -1
- package/dist/common/textmeasure.d.ts +1 -1
- package/dist/common/textmeasure.d.ts.map +1 -1
- package/dist/index.js +97 -59
- package/dist/index.js.map +4 -4
- package/dist/layout/dot/splines-label.d.ts.map +1 -1
- package/dist/layout/fdp/derive.d.ts.map +1 -1
- package/dist/layout/fdp/fdp-model.d.ts +4 -4
- package/dist/layout/fdp/normalize.d.ts.map +1 -1
- package/dist/layout/fdp/tlayout-init.d.ts.map +1 -1
- package/dist/layout/fdp/tlayout-parms.d.ts +4 -1
- package/dist/layout/fdp/tlayout-parms.d.ts.map +1 -1
- package/dist/layout/fdp/tlayout.d.ts +3 -4
- package/dist/layout/fdp/tlayout.d.ts.map +1 -1
- package/dist/layout/fdp/xlayout.d.ts.map +1 -1
- package/dist/render.js +95 -57
- package/dist/render.js.map +4 -4
- package/package.json +1 -1
- package/src/async/render-async.ts +6 -3
- package/src/common/arith.ts +9 -0
- package/src/common/libm-hypot.ts +40 -0
- package/src/common/poly-sizing.ts +12 -11
- package/src/common/textmeasure-factory.ts +20 -1
- package/src/common/textmeasure.ts +1 -1
- package/src/layout/dot/splines-label.ts +2 -1
- package/src/layout/fdp/derive.ts +5 -2
- package/src/layout/fdp/fdp-model.ts +4 -4
- package/src/layout/fdp/normalize.ts +2 -1
- package/src/layout/fdp/tlayout-init.ts +8 -6
- package/src/layout/fdp/tlayout-parms.ts +5 -2
- package/src/layout/fdp/tlayout.ts +18 -17
- package/src/layout/fdp/xlayout.ts +26 -22
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render-async.d.ts","sourceRoot":"","sources":["../../src/async/render-async.ts"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAG/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAMpD,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGvE,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzD,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzD,0DAA0D;AAC1D,eAAO,MAAM,uBAAuB,OAAO,CAAC;AAE5C,8DAA8D;AAC9D,MAAM,MAAM,cAAc,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC;AAE7D,+DAA+D;AAC/D,MAAM,MAAM,eAAe,GAAG;IAAE,KAAK,EAAE,UAAU,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,UAAU,GAAG,IAAI,CAAC;AAEvF,uCAAuC;AACvC,MAAM,WAAW,kBAAmB,SAAQ,aAAa;IACvD,4EAA4E;IAC5E,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;IACtD,oFAAoF;IACpF,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,eAAe,CAAC,CAAC;IAC1D,mEAAmE;IACnE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kFAAkF;IAClF,OAAO,CAAC,EAAE,WAAW,CAAC;CACvB;AAED,qFAAqF;AACrF,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;AAEjE,6CAA6C;AAC7C,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,SAAS,EAAE,CAAC;CACzB;AAED,gDAAgD;AAChD,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,SAAS,EAAE,CAAC;CACzB;
|
|
1
|
+
{"version":3,"file":"render-async.d.ts","sourceRoot":"","sources":["../../src/async/render-async.ts"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAG/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAMpD,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGvE,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzD,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzD,0DAA0D;AAC1D,eAAO,MAAM,uBAAuB,OAAO,CAAC;AAE5C,8DAA8D;AAC9D,MAAM,MAAM,cAAc,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC;AAE7D,+DAA+D;AAC/D,MAAM,MAAM,eAAe,GAAG;IAAE,KAAK,EAAE,UAAU,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,UAAU,GAAG,IAAI,CAAC;AAEvF,uCAAuC;AACvC,MAAM,WAAW,kBAAmB,SAAQ,aAAa;IACvD,4EAA4E;IAC5E,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;IACtD,oFAAoF;IACpF,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,eAAe,CAAC,CAAC;IAC1D,mEAAmE;IACnE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kFAAkF;IAClF,OAAO,CAAC,EAAE,WAAW,CAAC;CACvB;AAED,qFAAqF;AACrF,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;AAEjE,6CAA6C;AAC7C,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,SAAS,EAAE,CAAC;CACzB;AAED,gDAAgD;AAChD,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,SAAS,EAAE,CAAC;CACzB;AAuDD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAsB,WAAW,CAC/B,CAAC,EAAE,KAAK,EACR,MAAM,EAAE,YAAY,EACpB,IAAI,CAAC,EAAE,kBAAkB,GACxB,OAAO,CAAC,iBAAiB,CAAC,CAsB5B;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,cAAc,CAClC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,UAAU,EAClB,IAAI,CAAC,EAAE,eAAe,GACrB,OAAO,CAAC,cAAc,CAAC,CAWzB"}
|
package/dist/common/arith.d.ts
CHANGED
|
@@ -32,4 +32,10 @@
|
|
|
32
32
|
* @see C99 7.12.9.6 (round)
|
|
33
33
|
*/
|
|
34
34
|
export declare function cround(v: number): number;
|
|
35
|
+
/**
|
|
36
|
+
* Degrees to radians in C's operation order, `(deg)/180.0 * M_PI`.
|
|
37
|
+
* `deg * Math.PI / 180` rounds differently for some angles (e.g. 33°).
|
|
38
|
+
* @see lib/common/arith.h:49 (RADIANS)
|
|
39
|
+
*/
|
|
40
|
+
export declare function RADIANS(deg: number): number;
|
|
35
41
|
//# sourceMappingURL=arith.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"arith.d.ts","sourceRoot":"","sources":["../../src/common/arith.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAExC"}
|
|
1
|
+
{"version":3,"file":"arith.d.ts","sourceRoot":"","sources":["../../src/common/arith.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAExC;AAED;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE3C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"libm-hypot.d.ts","sourceRoot":"","sources":["../../src/common/libm-hypot.ts"],"names":[],"mappings":"AAyBA,mDAAmD;AACnD,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAQtD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"poly-sizing.d.ts","sourceRoot":"","sources":["../../src/common/poly-sizing.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"poly-sizing.d.ts","sourceRoot":"","sources":["../../src/common/poly-sizing.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,8 @@
|
|
|
5
5
|
* 1. explicit override via setTextMeasurer (tests, host-faithful Node opt-in)
|
|
6
6
|
* 2. GV_TEXT_MEASURER=estimate|lut — test/CI hook to force a specific measurer
|
|
7
7
|
* 3. browser (document present) — CanvasTextMeasurer over the page canvas
|
|
8
|
-
* (host-faithful: the same font the browser renders the SVG with)
|
|
8
|
+
* (host-faithful: the same font the browser renders the SVG with);
|
|
9
|
+
* Worker (no document) — the same over an OffscreenCanvas
|
|
9
10
|
* 4. Node default — EstimateTextMeasurer (deterministic; matches
|
|
10
11
|
* graphviz's own headless estimate_textspan_size)
|
|
11
12
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"textmeasure-factory.d.ts","sourceRoot":"","sources":["../../src/common/textmeasure-factory.ts"],"names":[],"mappings":"AACA
|
|
1
|
+
{"version":3,"file":"textmeasure-factory.d.ts","sourceRoot":"","sources":["../../src/common/textmeasure-factory.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EACsD,KAAK,YAAY,EAC7E,MAAM,kBAAkB,CAAC;AAM1B;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,YAAY,GAAG,SAAS,GAAG,IAAI,CASjE;AAED,uEAAuE;AACvE,wBAAgB,eAAe,IAAI,YAAY,GAAG,SAAS,CAE1D;AA0CD,8EAA8E;AAC9E,wBAAgB,cAAc,IAAI,YAAY,CAmB7C"}
|
|
@@ -107,7 +107,7 @@ export declare class CanvasTextMeasurer implements TextMeasurer {
|
|
|
107
107
|
* font reuse (plugin/pango/gvtextlayout_pango.c:99-100).
|
|
108
108
|
*/
|
|
109
109
|
private readonly fonts;
|
|
110
|
-
constructor(ctx: CanvasRenderingContext2D);
|
|
110
|
+
constructor(ctx: CanvasRenderingContext2D | OffscreenCanvasRenderingContext2D);
|
|
111
111
|
measure(text: string, fontname: string, fontsize: number, flags?: TextVariantFlags): TextSize;
|
|
112
112
|
/** Cached font string; built and validated once per distinct font. */
|
|
113
113
|
private fontFor;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"textmeasure.d.ts","sourceRoot":"","sources":["../../src/common/textmeasure.ts"],"names":[],"mappings":"AACA;;;;;;GAMG;AAMH,qDAAqD;AACrD,eAAO,MAAM,gBAAgB,KAAK,CAAC;AAEnC,iDAAiD;AACjD,MAAM,WAAW,QAAQ;IACvB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV;;;;;;OAMG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;;OAKG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,oDAAoD;AACpD,MAAM,WAAW,YAAY;IAC3B,OAAO,CACL,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,KAAK,CAAC,EAAE,gBAAgB,GACvB,QAAQ,CAAC;CACb;AA8CD;;;;GAIG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,OAAO,EACb,MAAM,EAAE,OAAO,GACd,MAAM,CASR;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,qBAAqB,QAAY,CAAC;AAW/C;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,IAAI,UAAQ,EACZ,MAAM,UAAQ,GACb,MAAM,CAWR;AAED;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,QAAc,CAAC;AAEjD,+DAA+D;AAC/D,eAAO,MAAM,sBAAsB,QAAa,CAAC;AAgDjD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAG1E;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAK9E;AAED;;;;GAIG;AACH,qBAAa,eAAgB,YAAW,YAAY;IAClD,OAAO,CACL,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,KAAK,CAAC,EAAE,gBAAgB,GACvB,QAAQ;CAMZ;AASD;;;;;GAKG;AACH,qBAAa,kBAAmB,YAAW,YAAY;IAOzC,OAAO,CAAC,QAAQ,CAAC,GAAG;IANhC;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA6B;gBAEtB,GAAG,EAAE,wBAAwB;
|
|
1
|
+
{"version":3,"file":"textmeasure.d.ts","sourceRoot":"","sources":["../../src/common/textmeasure.ts"],"names":[],"mappings":"AACA;;;;;;GAMG;AAMH,qDAAqD;AACrD,eAAO,MAAM,gBAAgB,KAAK,CAAC;AAEnC,iDAAiD;AACjD,MAAM,WAAW,QAAQ;IACvB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV;;;;;;OAMG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;;OAKG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,oDAAoD;AACpD,MAAM,WAAW,YAAY;IAC3B,OAAO,CACL,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,KAAK,CAAC,EAAE,gBAAgB,GACvB,QAAQ,CAAC;CACb;AA8CD;;;;GAIG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,OAAO,EACb,MAAM,EAAE,OAAO,GACd,MAAM,CASR;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,qBAAqB,QAAY,CAAC;AAW/C;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,IAAI,UAAQ,EACZ,MAAM,UAAQ,GACb,MAAM,CAWR;AAED;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,QAAc,CAAC;AAEjD,+DAA+D;AAC/D,eAAO,MAAM,sBAAsB,QAAa,CAAC;AAgDjD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAG1E;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAK9E;AAED;;;;GAIG;AACH,qBAAa,eAAgB,YAAW,YAAY;IAClD,OAAO,CACL,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,KAAK,CAAC,EAAE,gBAAgB,GACvB,QAAQ;CAMZ;AASD;;;;;GAKG;AACH,qBAAa,kBAAmB,YAAW,YAAY;IAOzC,OAAO,CAAC,QAAQ,CAAC,GAAG;IANhC;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA6B;gBAEtB,GAAG,EAAE,wBAAwB,GAAG,iCAAiC;IAE9F,OAAO,CACL,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,KAAK,CAAC,EAAE,gBAAgB,GACvB,QAAQ;IAMX,sEAAsE;IACtE,OAAO,CAAC,OAAO;IAaf,kEAAkE;IAClE,OAAO,CAAC,OAAO;CAQhB;AAED,+EAA+E;AAC/E,eAAO,MAAM,WAAW,MAAO,CAAC;AAEhC;;;;;;;GAOG;AACH,qBAAa,oBAAqB,YAAW,YAAY;IACvD,OAAO,CACL,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,KAAK,CAAC,EAAE,gBAAgB,GACvB,QAAQ;CAWZ"}
|
package/dist/index.js
CHANGED
|
@@ -16901,6 +16901,32 @@ function fms(a, b, c) {
|
|
|
16901
16901
|
return fma(-a, b, c);
|
|
16902
16902
|
}
|
|
16903
16903
|
|
|
16904
|
+
// src/common/arith.ts
|
|
16905
|
+
function cround(v) {
|
|
16906
|
+
return v >= 0 ? Math.floor(v + 0.5) : Math.ceil(v - 0.5);
|
|
16907
|
+
}
|
|
16908
|
+
function RADIANS(deg) {
|
|
16909
|
+
return deg / 180 * Math.PI;
|
|
16910
|
+
}
|
|
16911
|
+
|
|
16912
|
+
// src/common/libm-hypot.ts
|
|
16913
|
+
var BIG = 2 ** 500;
|
|
16914
|
+
var SMALL = 2 ** -500;
|
|
16915
|
+
var SCALE_UP = 2 ** 600;
|
|
16916
|
+
var SCALE_DOWN = 2 ** -600;
|
|
16917
|
+
function libmHypot(a, b) {
|
|
16918
|
+
if (a === Infinity || a === -Infinity || b === Infinity || b === -Infinity) return Infinity;
|
|
16919
|
+
let x = Math.abs(a);
|
|
16920
|
+
let y = Math.abs(b);
|
|
16921
|
+
if (x < y) [x, y] = [y, x];
|
|
16922
|
+
if (x > BIG) return core(x * SCALE_DOWN, y * SCALE_DOWN) * SCALE_UP;
|
|
16923
|
+
if (x < SMALL) return core(x * SCALE_UP, y * SCALE_UP) * SCALE_DOWN;
|
|
16924
|
+
return core(x, y);
|
|
16925
|
+
}
|
|
16926
|
+
function core(x, y) {
|
|
16927
|
+
return Math.sqrt(fma(y, y, x * x));
|
|
16928
|
+
}
|
|
16929
|
+
|
|
16904
16930
|
// src/common/poly-sizing.ts
|
|
16905
16931
|
var GAP = 4;
|
|
16906
16932
|
var XPAD = 4 * GAP;
|
|
@@ -16988,16 +17014,16 @@ function ellipsePeripheryBB(bb, peripheries, penwidth, hasOutline) {
|
|
|
16988
17014
|
return { bb: b, outline };
|
|
16989
17015
|
}
|
|
16990
17016
|
function transformUnitVertex(R2, g, c, bb) {
|
|
16991
|
-
const D = { x: R2.x
|
|
16992
|
-
const alpha = g.orientation
|
|
16993
|
-
const r =
|
|
17017
|
+
const D = { x: fma(R2.x, fma(R2.y, c.gdistortion, c.skewdist), R2.y * c.gskew), y: R2.y };
|
|
17018
|
+
const alpha = RADIANS(g.orientation) + Math.atan2(D.y, D.x);
|
|
17019
|
+
const r = libmHypot(D.x, D.y);
|
|
16994
17020
|
return { x: r * Math.cos(alpha) * bb.x, y: r * Math.sin(alpha) * bb.y };
|
|
16995
17021
|
}
|
|
16996
17022
|
function polygonVertices(bb, g, isBox3) {
|
|
16997
17023
|
const sectorangle = 2 * Math.PI / g.sides;
|
|
16998
17024
|
const sidelength = Math.sin(sectorangle / 2);
|
|
16999
17025
|
const c = {
|
|
17000
|
-
skewdist:
|
|
17026
|
+
skewdist: libmHypot(Math.abs(g.distortion) + Math.abs(g.skew), 1),
|
|
17001
17027
|
gdistortion: g.distortion * SQRT2 / Math.cos(sectorangle / 2),
|
|
17002
17028
|
gskew: g.skew / 2
|
|
17003
17029
|
};
|
|
@@ -17422,13 +17448,13 @@ function evalBezier(sp, t, left2, right2) {
|
|
|
17422
17448
|
return pt;
|
|
17423
17449
|
}
|
|
17424
17450
|
var HW = 2;
|
|
17425
|
-
var
|
|
17451
|
+
var SMALL2 = 1e-10;
|
|
17426
17452
|
function ptToLine2(a, b, p) {
|
|
17427
17453
|
const dx = b.x - a.x;
|
|
17428
17454
|
const dy = b.y - a.y;
|
|
17429
17455
|
let a2 = (p.y - a.y) * dx - (p.x - a.x) * dy;
|
|
17430
17456
|
a2 *= a2;
|
|
17431
|
-
if (a2 <
|
|
17457
|
+
if (a2 < SMALL2) return 0;
|
|
17432
17458
|
return a2 / (dx * dx + dy * dy);
|
|
17433
17459
|
}
|
|
17434
17460
|
function checkControlPoints(cp) {
|
|
@@ -19059,11 +19085,6 @@ function makeSelfEdge(edges, cnt, sizex, sizey, sinfo) {
|
|
|
19059
19085
|
}
|
|
19060
19086
|
}
|
|
19061
19087
|
|
|
19062
|
-
// src/common/arith.ts
|
|
19063
|
-
function cround(v) {
|
|
19064
|
-
return v >= 0 ? Math.floor(v + 0.5) : Math.ceil(v - 0.5);
|
|
19065
|
-
}
|
|
19066
|
-
|
|
19067
19088
|
// src/layout/dot/position-aux.ts
|
|
19068
19089
|
var CL_OFFSET = 8;
|
|
19069
19090
|
function clusterMarginOf(g) {
|
|
@@ -19976,7 +19997,7 @@ function feasibleTree(ctx) {
|
|
|
19976
19997
|
|
|
19977
19998
|
// src/util/bsd-qsort.ts
|
|
19978
19999
|
var THRESH = 7;
|
|
19979
|
-
var
|
|
20000
|
+
var BIG2 = 40;
|
|
19980
20001
|
function swap(arr, i, j) {
|
|
19981
20002
|
const t = arr[i];
|
|
19982
20003
|
arr[i] = arr[j];
|
|
@@ -20002,7 +20023,7 @@ function choosePivot(arr, lo, n, cmp) {
|
|
|
20002
20023
|
let pm = lo + (n >> 1);
|
|
20003
20024
|
let pl = lo;
|
|
20004
20025
|
let pn = lo + (n - 1);
|
|
20005
|
-
if (n >
|
|
20026
|
+
if (n > BIG2) {
|
|
20006
20027
|
const d = n >> 3;
|
|
20007
20028
|
pl = med3(arr, pl, pl + d, pl + 2 * d, cmp);
|
|
20008
20029
|
pm = med3(arr, pm - d, pm, pm + d, cmp);
|
|
@@ -26845,6 +26866,15 @@ function adviseHostFaithful() {
|
|
|
26845
26866
|
"@knowvah/dot-engine: measuring text with built-in metrics (kerning/shaping not applied). For host-faithful sizing matching the rendering font, install `canvas` and call setTextMeasurer(new CanvasTextMeasurer(createCanvas(0,0).getContext('2d'))). Silence with GV_FONT_QUIET=1.\n"
|
|
26846
26867
|
);
|
|
26847
26868
|
}
|
|
26869
|
+
function offscreenMeasurer() {
|
|
26870
|
+
if (typeof OffscreenCanvas === "undefined") return void 0;
|
|
26871
|
+
try {
|
|
26872
|
+
const ctx2d = new OffscreenCanvas(0, 0).getContext("2d");
|
|
26873
|
+
return ctx2d ? new CanvasTextMeasurer(ctx2d) : void 0;
|
|
26874
|
+
} catch {
|
|
26875
|
+
return void 0;
|
|
26876
|
+
}
|
|
26877
|
+
}
|
|
26848
26878
|
function createMeasurer() {
|
|
26849
26879
|
if (override) return override;
|
|
26850
26880
|
const forced = envMeasurer();
|
|
@@ -26856,6 +26886,9 @@ function createMeasurer() {
|
|
|
26856
26886
|
if (ctx2d) return new CanvasTextMeasurer(ctx2d);
|
|
26857
26887
|
} catch {
|
|
26858
26888
|
}
|
|
26889
|
+
} else {
|
|
26890
|
+
const offscreen = offscreenMeasurer();
|
|
26891
|
+
if (offscreen) return offscreen;
|
|
26859
26892
|
}
|
|
26860
26893
|
adviseHostFaithful();
|
|
26861
26894
|
return new EstimateTextMeasurer();
|
|
@@ -32867,7 +32900,7 @@ function applyPortlabelPos(e, headP) {
|
|
|
32867
32900
|
}
|
|
32868
32901
|
function writePortlabelPos(l, pe, pf, angleStr, distanceStr) {
|
|
32869
32902
|
const angleDeg = lateDouble(angleStr, PORT_LABEL_ANGLE, -180);
|
|
32870
|
-
const angle = Math.atan2(pf.y - pe.y, pf.x - pe.x) +
|
|
32903
|
+
const angle = Math.atan2(pf.y - pe.y, pf.x - pe.x) + RADIANS(angleDeg);
|
|
32871
32904
|
const distMult = lateDouble(distanceStr || void 0, 1, 0);
|
|
32872
32905
|
const dist4 = PORT_LABEL_DISTANCE * distMult;
|
|
32873
32906
|
l.pos.x = pe.x + dist4 * Math.cos(angle);
|
|
@@ -35791,7 +35824,7 @@ function addLoop(sg, cp, dp, sp) {
|
|
|
35791
35824
|
var MARGIN = 36;
|
|
35792
35825
|
var delta = 1;
|
|
35793
35826
|
var mu = 500;
|
|
35794
|
-
var
|
|
35827
|
+
var BIG3 = 16384;
|
|
35795
35828
|
function chanSz(w) {
|
|
35796
35829
|
return (w - 3) / 2;
|
|
35797
35830
|
}
|
|
@@ -35811,7 +35844,7 @@ function updateWt(ep, sz) {
|
|
|
35811
35844
|
ep.cnt++;
|
|
35812
35845
|
if (ep.cnt > sz) {
|
|
35813
35846
|
ep.cnt = 0;
|
|
35814
|
-
ep.weight +=
|
|
35847
|
+
ep.weight += BIG3;
|
|
35815
35848
|
}
|
|
35816
35849
|
}
|
|
35817
35850
|
function updateWts(g, cp, ep) {
|
|
@@ -35869,12 +35902,12 @@ function createSEdges(cp, g) {
|
|
|
35869
35902
|
let vwt = delta * (bb.UR.y - bb.LL.y);
|
|
35870
35903
|
let wt = (hwt + vwt) / 2 + mu;
|
|
35871
35904
|
if (isSmall(bb.UR.y - bb.LL.y) && !(cp.flags & MZ_SMALLV)) {
|
|
35872
|
-
hwt =
|
|
35873
|
-
wt =
|
|
35905
|
+
hwt = BIG3;
|
|
35906
|
+
wt = BIG3;
|
|
35874
35907
|
}
|
|
35875
35908
|
if (isSmall(bb.UR.x - bb.LL.x) && !(cp.flags & MZ_SMALLH)) {
|
|
35876
|
-
vwt =
|
|
35877
|
-
wt =
|
|
35909
|
+
vwt = BIG3;
|
|
35910
|
+
wt = BIG3;
|
|
35878
35911
|
}
|
|
35879
35912
|
const L2 = cp.sides[M_LEFT];
|
|
35880
35913
|
const T2 = cp.sides[M_TOP];
|
|
@@ -41479,7 +41512,7 @@ function raySeg2(v, w, a, b) {
|
|
|
41479
41512
|
}
|
|
41480
41513
|
return wind(v, a, w) * wind(v, a, b) >= 0;
|
|
41481
41514
|
}
|
|
41482
|
-
var
|
|
41515
|
+
var SMALL3 = 1e-10;
|
|
41483
41516
|
function raySegIntersect(v, w, a, b) {
|
|
41484
41517
|
if (!raySeg2(v, w, a, b)) return null;
|
|
41485
41518
|
const mv = { x: w.x - v.x, y: w.y - v.y };
|
|
@@ -41487,7 +41520,7 @@ function raySegIntersect(v, w, a, b) {
|
|
|
41487
41520
|
const ln = { x: -lv.y, y: lv.x };
|
|
41488
41521
|
const lc = -(ln.x * a.x + ln.y * a.y);
|
|
41489
41522
|
const dt = ln.x * mv.x + ln.y * mv.y;
|
|
41490
|
-
if (Math.abs(dt) <
|
|
41523
|
+
if (Math.abs(dt) < SMALL3) return null;
|
|
41491
41524
|
const s = (ln.x * v.x + ln.y * v.y + lc) / dt;
|
|
41492
41525
|
return { x: v.x - s * mv.x, y: v.y - s * mv.y };
|
|
41493
41526
|
}
|
|
@@ -45754,7 +45787,7 @@ function angleSet(g) {
|
|
|
45754
45787
|
if (a === void 0 || a === "") return null;
|
|
45755
45788
|
const ang = parseAngle2(a);
|
|
45756
45789
|
if (ang === null) return null;
|
|
45757
|
-
return wrapDegrees(ang)
|
|
45790
|
+
return RADIANS(wrapDegrees(ang));
|
|
45758
45791
|
}
|
|
45759
45792
|
function parseAngle2(a) {
|
|
45760
45793
|
const m = /^\s*[+-]?(?:\d+\.?\d*|\.\d+)(?:[eE][-+]?\d+)?/.exec(a);
|
|
@@ -48203,7 +48236,10 @@ var fdpParms = {
|
|
|
48203
48236
|
C: 0,
|
|
48204
48237
|
Tfact: 1,
|
|
48205
48238
|
K: -1,
|
|
48206
|
-
T0: -1
|
|
48239
|
+
T0: -1,
|
|
48240
|
+
/** Distance beyond which repulsion is 0; HUGE_VAL unless `dot -Lm` (no library
|
|
48241
|
+
* equivalent). @see lib/fdpgen/fdp.h:fdpParms_s.Mlimit */
|
|
48242
|
+
Mlimit: Infinity
|
|
48207
48243
|
};
|
|
48208
48244
|
var parms = {
|
|
48209
48245
|
useGrid: 0,
|
|
@@ -48531,8 +48567,8 @@ function placeByNeighbors(g, np, ctr) {
|
|
|
48531
48567
|
np.info.pos[0] = p.x;
|
|
48532
48568
|
np.info.pos[1] = p.y;
|
|
48533
48569
|
} else if (cnt === 1) {
|
|
48534
|
-
np.info.pos[0] = 0.98
|
|
48535
|
-
np.info.pos[1] = 0.9
|
|
48570
|
+
np.info.pos[0] = fma(0.98, p.x, 0.1 * ctr.x);
|
|
48571
|
+
np.info.pos[1] = fma(0.9, p.y, 0.1 * ctr.y);
|
|
48536
48572
|
} else {
|
|
48537
48573
|
const angle = Math.PI * 2 * drand48();
|
|
48538
48574
|
const radius = 0.9 * drand48();
|
|
@@ -48548,8 +48584,8 @@ function averagePlacedNeighbors(g, np, p) {
|
|
|
48548
48584
|
const op = ep.head === np ? ep.tail : ep.head;
|
|
48549
48585
|
if (!hasPos3(op)) continue;
|
|
48550
48586
|
if (cnt) {
|
|
48551
|
-
p.x = (p.x
|
|
48552
|
-
p.y = (p.y
|
|
48587
|
+
p.x = fma(p.x, cnt, op.info.pos[0]) / (cnt + 1);
|
|
48588
|
+
p.y = fma(p.y, cnt, op.info.pos[1]) / (cnt + 1);
|
|
48553
48589
|
} else {
|
|
48554
48590
|
p.x = op.info.pos[0];
|
|
48555
48591
|
p.y = op.info.pos[1];
|
|
@@ -48611,8 +48647,8 @@ function sizeBoundary(width, height) {
|
|
|
48611
48647
|
function placeWithPorts(g, pp, ctr) {
|
|
48612
48648
|
for (const port of pp) {
|
|
48613
48649
|
const np = port.n;
|
|
48614
|
-
np.info.pos[0] = parms.Wd
|
|
48615
|
-
np.info.pos[1] = parms.Ht
|
|
48650
|
+
np.info.pos[0] = fma(parms.Wd, Math.cos(port.alpha), ctr.x);
|
|
48651
|
+
np.info.pos[1] = fma(parms.Ht, Math.sin(port.alpha), ctr.y);
|
|
48616
48652
|
dndata(np).pinned = P_SET;
|
|
48617
48653
|
}
|
|
48618
48654
|
for (const np of g.nodes.values()) {
|
|
@@ -48674,19 +48710,20 @@ function coincidentDelta() {
|
|
|
48674
48710
|
} while (xdelta === 0 && ydelta === 0);
|
|
48675
48711
|
return { xdelta, ydelta };
|
|
48676
48712
|
}
|
|
48677
|
-
function doRep(p, q, xdelta, ydelta,
|
|
48713
|
+
function doRep(p, q, xdelta, ydelta, dist4) {
|
|
48678
48714
|
let force;
|
|
48679
|
-
if (
|
|
48715
|
+
if (!(dist4 > 0)) {
|
|
48680
48716
|
const d = coincidentDelta();
|
|
48681
48717
|
xdelta = d.xdelta;
|
|
48682
48718
|
ydelta = d.ydelta;
|
|
48683
|
-
|
|
48719
|
+
dist4 = libmHypot(xdelta, ydelta);
|
|
48684
48720
|
}
|
|
48685
|
-
if (
|
|
48686
|
-
|
|
48687
|
-
|
|
48721
|
+
if (dist4 > fdpParms.Mlimit) {
|
|
48722
|
+
force = 0;
|
|
48723
|
+
} else if (parms.useNew) {
|
|
48724
|
+
force = parms.K * parms.K / (dist4 * dist4 * dist4);
|
|
48688
48725
|
} else {
|
|
48689
|
-
force = parms.K * parms.K /
|
|
48726
|
+
force = parms.K * parms.K / (dist4 * dist4);
|
|
48690
48727
|
}
|
|
48691
48728
|
if (isPort(p) && isPort(q)) force *= 10;
|
|
48692
48729
|
const dq = disp(q);
|
|
@@ -48699,7 +48736,7 @@ function doRep(p, q, xdelta, ydelta, dist22) {
|
|
|
48699
48736
|
function applyRep(p, q) {
|
|
48700
48737
|
const xdelta = q.info.pos[0] - p.info.pos[0];
|
|
48701
48738
|
const ydelta = q.info.pos[1] - p.info.pos[1];
|
|
48702
|
-
doRep(p, q, xdelta, ydelta,
|
|
48739
|
+
doRep(p, q, xdelta, ydelta, libmHypot(xdelta, ydelta));
|
|
48703
48740
|
}
|
|
48704
48741
|
function doNeighbor(grid2, i, j, nodes) {
|
|
48705
48742
|
const cellp = grid2.find(i, j);
|
|
@@ -48708,8 +48745,8 @@ function doNeighbor(grid2, i, j, nodes) {
|
|
|
48708
48745
|
for (const q of cellp.nodes) {
|
|
48709
48746
|
const xdelta = q.info.pos[0] - p.info.pos[0];
|
|
48710
48747
|
const ydelta = q.info.pos[1] - p.info.pos[1];
|
|
48711
|
-
const
|
|
48712
|
-
if (
|
|
48748
|
+
const dist4 = libmHypot(xdelta, ydelta);
|
|
48749
|
+
if (dist4 < parms.Cell) doRep(p, q, xdelta, ydelta, dist4);
|
|
48713
48750
|
}
|
|
48714
48751
|
}
|
|
48715
48752
|
}
|
|
@@ -48881,7 +48918,7 @@ function ht2(n) {
|
|
|
48881
48918
|
return xMarg.doAdd ? n.info.height / 2 + xMarg.y : n.info.height * xMarg.y / 2;
|
|
48882
48919
|
}
|
|
48883
48920
|
function rad(n) {
|
|
48884
|
-
return
|
|
48921
|
+
return libmHypot(wd2(n), ht2(n));
|
|
48885
48922
|
}
|
|
48886
48923
|
function xinitParams(n, xpms) {
|
|
48887
48924
|
xParams.K = xpms.K;
|
|
@@ -48916,37 +48953,38 @@ function cntOverlaps(g) {
|
|
|
48916
48953
|
function applyRep2(p, q, rs) {
|
|
48917
48954
|
let xdelta = q.info.pos[0] - p.info.pos[0];
|
|
48918
48955
|
let ydelta = q.info.pos[1] - p.info.pos[1];
|
|
48919
|
-
let
|
|
48920
|
-
if (
|
|
48956
|
+
let dist4 = libmHypot(xdelta, ydelta);
|
|
48957
|
+
if (!(dist4 > 0)) {
|
|
48921
48958
|
const d = coincidentDelta();
|
|
48922
48959
|
xdelta = d.xdelta;
|
|
48923
48960
|
ydelta = d.ydelta;
|
|
48924
|
-
|
|
48961
|
+
dist4 = libmHypot(xdelta, ydelta);
|
|
48925
48962
|
}
|
|
48926
48963
|
const ov = overlap4(p, q) ? 1 : 0;
|
|
48927
|
-
|
|
48964
|
+
let force = ov ? rs.ov / (dist4 * dist4) : rs.nonov / (dist4 * dist4);
|
|
48965
|
+
if (dist4 > fdpParms.Mlimit) force = 0;
|
|
48928
48966
|
const dq = disp(q);
|
|
48929
48967
|
const dp = disp(p);
|
|
48930
|
-
dq[0]
|
|
48931
|
-
dq[1]
|
|
48932
|
-
dp[0]
|
|
48933
|
-
dp[1]
|
|
48968
|
+
dq[0] = fma(xdelta, force, dq[0]);
|
|
48969
|
+
dq[1] = fma(ydelta, force, dq[1]);
|
|
48970
|
+
dp[0] = fms(xdelta, force, dp[0]);
|
|
48971
|
+
dp[1] = fms(ydelta, force, dp[1]);
|
|
48934
48972
|
return ov;
|
|
48935
48973
|
}
|
|
48936
48974
|
function applyAttr2(p, q) {
|
|
48937
48975
|
if (overlap4(p, q)) return;
|
|
48938
48976
|
const xdelta = q.info.pos[0] - p.info.pos[0];
|
|
48939
48977
|
const ydelta = q.info.pos[1] - p.info.pos[1];
|
|
48940
|
-
const dist4 =
|
|
48978
|
+
const dist4 = libmHypot(xdelta, ydelta);
|
|
48941
48979
|
const din = rad(p) + rad(q);
|
|
48942
48980
|
const dout = dist4 - din;
|
|
48943
48981
|
const force = dout * dout / ((xParams.K + din) * dist4);
|
|
48944
48982
|
const dq = disp(q);
|
|
48945
48983
|
const dp = disp(p);
|
|
48946
|
-
dq[0]
|
|
48947
|
-
dq[1]
|
|
48948
|
-
dp[0]
|
|
48949
|
-
dp[1]
|
|
48984
|
+
dq[0] = fms(xdelta, force, dq[0]);
|
|
48985
|
+
dq[1] = fms(ydelta, force, dq[1]);
|
|
48986
|
+
dp[0] = fma(xdelta, force, dp[0]);
|
|
48987
|
+
dp[1] = fma(ydelta, force, dp[1]);
|
|
48950
48988
|
}
|
|
48951
48989
|
function accumForces(g, rs) {
|
|
48952
48990
|
let overlaps2 = 0;
|
|
@@ -48968,7 +49006,7 @@ function moveNodes(g, temp) {
|
|
|
48968
49006
|
if (dndata(n).pinned === P_PIN) continue;
|
|
48969
49007
|
const dx = disp(n)[0];
|
|
48970
49008
|
const dy = disp(n)[1];
|
|
48971
|
-
const len2 = dx
|
|
49009
|
+
const len2 = fma(dx, dx, dy * dy);
|
|
48972
49010
|
if (len2 < temp2) {
|
|
48973
49011
|
n.info.pos[0] += dx;
|
|
48974
49012
|
n.info.pos[1] += dy;
|
|
@@ -49222,7 +49260,7 @@ function deriveClusterNodes(g, dg, infop) {
|
|
|
49222
49260
|
}
|
|
49223
49261
|
}
|
|
49224
49262
|
function deriveRealNodes(g, dg) {
|
|
49225
|
-
for (const n of g
|
|
49263
|
+
for (const n of nodesInSeq(g)) {
|
|
49226
49264
|
if (getDnode(n) !== null) continue;
|
|
49227
49265
|
const par = getParent(n);
|
|
49228
49266
|
if (par !== null && par !== gdata(g).parent) {
|
|
@@ -49264,7 +49302,7 @@ function deriveEdge(dg, byPair, tl, hd) {
|
|
|
49264
49302
|
return de;
|
|
49265
49303
|
}
|
|
49266
49304
|
function deriveEdges(g, dg, byPair) {
|
|
49267
|
-
for (const n of g
|
|
49305
|
+
for (const n of nodesInSeq(g)) {
|
|
49268
49306
|
const tl = getDnode(n);
|
|
49269
49307
|
for (const e of n.outEdges(g)) {
|
|
49270
49308
|
const hd = getDnode(e.head);
|
|
@@ -55565,8 +55603,8 @@ async function loadFonts(fontSet, fonts, timeoutMs) {
|
|
|
55565
55603
|
var DEFAULT_FONT_TIMEOUT_MS = 3e3;
|
|
55566
55604
|
function defaultFontSet() {
|
|
55567
55605
|
const doc = Reflect.get(globalThis, "document");
|
|
55568
|
-
|
|
55569
|
-
const fonts = Reflect.get(
|
|
55606
|
+
const owner = typeof doc === "object" && doc !== null ? doc : globalThis;
|
|
55607
|
+
const fonts = Reflect.get(owner, "fonts");
|
|
55570
55608
|
if (typeof fonts !== "object" || fonts === null) return void 0;
|
|
55571
55609
|
return fonts;
|
|
55572
55610
|
}
|