emf-converter 4.6.5 → 4.6.7
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/browser.js +139 -10
- package/dist/browser.mjs +139 -10
- package/dist/index.js +139 -10
- package/dist/index.mjs +139 -10
- package/package.json +1 -1
package/dist/browser.js
CHANGED
|
@@ -28728,7 +28728,119 @@ var HOBBY = [
|
|
|
28728
28728
|
[[8, -48], [-8, -48], [-24, -40], [-40, -24], [-48, -8], [-48, 8], [-40, 24], [-24, 40], [-8, 48], [8, 48], [24, 40], [40, 24], [48, 8], [48, -8], [40, -24], [24, -40]]
|
|
28729
28729
|
];
|
|
28730
28730
|
var HOBBY_LIMIT = 104;
|
|
28731
|
-
var
|
|
28731
|
+
var FLAT_SECTOR_BIAS = {
|
|
28732
|
+
7: [9, "cf..", "edededEdcDcdcd"],
|
|
28733
|
+
8: [9, "dFee", "ededededbdbdbd"],
|
|
28734
|
+
9: [9, "df..", "ddddddddbDbdbd"],
|
|
28735
|
+
10: [9, "de..", "dededeDebEbebE"],
|
|
28736
|
+
11: [9, "ce..", "eeeeeeEececece"],
|
|
28737
|
+
12: [13, "ce..", "eeeeeeeeeeeececEcecece"],
|
|
28738
|
+
13: [17, "ce..", "eeeeededdddddeDebebebdbdcdcdce"],
|
|
28739
|
+
14: [17, "df..", "ddedeeeededeeeedcDcebebecececd"],
|
|
28740
|
+
15: [17, "dF..", "ddedeeeeeeeedeDdbdbecececececd"],
|
|
28741
|
+
16: [17, "ce..", "eeeededededeeeeececebebebebece"],
|
|
28742
|
+
17: [17, "df..", "ddedededededdeddbdbebdbdbdbdcd"],
|
|
28743
|
+
18: [17, "de..", "deeededeededeeEdcDcecdcdbebece"],
|
|
28744
|
+
19: [17, "cf..", "ededeeeedddddeDebEbecdcdbebecd"],
|
|
28745
|
+
20: [17, "ce..", "eeeeddddeeeeddDdbdbdcecebdbdce"],
|
|
28746
|
+
21: [17, "dF..", "ddddededededddDdbdbdcdcdcdcdbd"],
|
|
28747
|
+
22: [17, "ce..", "eeeededeeeeedeDebebececebebece"],
|
|
28748
|
+
23: [17, "cf..", "edededededededEdcDcdcdcdcdcdcD"],
|
|
28749
|
+
24: [17, "dF..", "ddddddddddddddDdbdbdbdbdbdbdbd"],
|
|
28750
|
+
25: [17, "cE..", "eeeeededededeeEecEcecdcdcdcdce"],
|
|
28751
|
+
26: [17, "cf..", "ededdedeededdedebEbecdcdbebecd"],
|
|
28752
|
+
27: [17, "de..", "dedeededdedeededcDcdbebecdcdbe"],
|
|
28753
|
+
28: [17, "cf..", "ededddddeeeedeDebEbebebecdcdcd"],
|
|
28754
|
+
29: [17, "ce..", "eeeeeeeededededebebebebececece"],
|
|
28755
|
+
30: [17, "dF..", "dddddedeeeeeedEdcdcdcecebebebd"],
|
|
28756
|
+
31: [17, "de..", "dedeededededdeDebebecdcdcdcdbe"],
|
|
28757
|
+
32: [17, "cf..", "ededdededdddeeeecEcebdbdbebecd"],
|
|
28758
|
+
33: [17, "de..", "dedeeeeeededddDdbdbdcdcdcecebe"],
|
|
28759
|
+
34: [17, "de..", "dedeeeeeddddedEdcdcdbdbdcecebe"],
|
|
28760
|
+
35: [17, "cf..", "ededededdededeDebebebebecdcdcd"],
|
|
28761
|
+
36: [17, "deee", "eeeeeeeeddddddDdcdcdcdcDbebebe"],
|
|
28762
|
+
37: [17, "dF..", "dddddededededdDdbdbdcecececebd"],
|
|
28763
|
+
38: [17, "ce..", "eeeeddddddddeeEececebdbdbdbdce"],
|
|
28764
|
+
39: [17, "cF..", "ededddddddddededcdcdbdbDbdbdcd"],
|
|
28765
|
+
40: [17, "de..", "dededededdddddddbdbdbdbdbebebe"],
|
|
28766
|
+
41: [17, "ce..", "eeeeeeeeeeeeeeEececececececece"],
|
|
28767
|
+
42: [17, "cf..", "ededeeeedddddedebebebdbdcececd"],
|
|
28768
|
+
43: [17, "df..", "ddddeeeededeedEdcdcdbebececebd"],
|
|
28769
|
+
44: [17, "cF..", "ededdedeededdeDebebecdcdbebecd"],
|
|
28770
|
+
45: [17, "ce..", "eeeededededeeeeecEcebebebebece"],
|
|
28771
|
+
46: [17, "dF..", "ddddededddddedEdcDcdcdcdbdbdbd"],
|
|
28772
|
+
47: [17, "ce..", "dedededededededececececececece"],
|
|
28773
|
+
48: [25, "cf..", "ededeeeeeeeeededeeeeeeEecececececdcdcececececd"],
|
|
28774
|
+
49: [25, "cF..", "ededddddededeeeeededdeDebebecdcdcececdcdbdbdcd"],
|
|
28775
|
+
50: [25, "ce..", "eeeeddddededdededededeDebebebebebEbecdcdbdbdce"],
|
|
28776
|
+
51: [25, "ce..", "eeeeededddddeeeededeeeEececebebececebdbdcdcdce"],
|
|
28777
|
+
52: [25, "ce..", "eeeededededeededededeeEecececdcdcdcdbebebebece"],
|
|
28778
|
+
53: [25, "dF..", "ddedeeeedddddddddedeeeEdcdcebebebdbDbdbdcececd"],
|
|
28779
|
+
54: [25, "dF..", "ddedddddededededdddddEDdbdbebdbdcdcdcdcdbdbdcd"],
|
|
28780
|
+
55: [25, "dF..", "ddeddedeeeeeeeeedededeDdbdbebebebebebebebebecd"],
|
|
28781
|
+
56: [25, "dE..", "deeeeeeeededeeeededeeEedcdcebebecececdcdcecece"],
|
|
28782
|
+
57: [25, "de..", "deeedddddddddedeededeeEdcDcecDcdcececdcdbdbDce"],
|
|
28783
|
+
58: [25, "dF..", "ddedddddeeeedddddedeeeEdcdcebebebdbdcecebdbdcd"],
|
|
28784
|
+
59: [33, "cF..", "ededdedeededddddeeeeeeeedddddeDebebebdbdcecececebdbdcdcdbebecd"],
|
|
28785
|
+
60: [33, "cf..", "ededeeeeededededddddeeeeeeeedeDebebececececebdbdcdcdcdcdcececd"],
|
|
28786
|
+
61: [33, "ce..", "eeeeeeeeddddeeeeeeeeddddeeeeeeeececececebdbdcecececebdbdcecece"],
|
|
28787
|
+
62: [33, "ce..", "eeeeddddeeeeededededeeeeddddeeEecEcebdbdcececdcdcdcdcecebdbdce"],
|
|
28788
|
+
63: [33, "cf..", "ededededeeeededededeeeeeeeeeeeEececececececebebEbebecececdcdcd"],
|
|
28789
|
+
64: [33, "cF..", "ededeeeedddddedeeeeededeeeeedeDebebececebebececebebebdbdcececd"],
|
|
28790
|
+
65: [33, "df..", "ddedededededddddddddeeeeeeeedeDdbdbececececebdbdbdbdcdcdcdcdcd"],
|
|
28791
|
+
66: [33, "de..", "deeeededdedeeeeedddddededddddeDdbdbebdbdbebecdcdbebebebecdcdce"],
|
|
28792
|
+
67: [33, "de..", "deeeddddddddededdddddededdddeeEdcDcebdbdbebebdbdcdcdbdbdbdbdce"],
|
|
28793
|
+
68: [33, "dE..", "deeeeeeeeeeeeeeeddddeeeeeeeeeeEdcdcececececebdbdcecececececece"],
|
|
28794
|
+
69: [33, "df..", "ddedededdedeeeeeddddededededdeDdbdbecdcdcdcdbdbdcecebebecdcdcd"],
|
|
28795
|
+
70: [33, "dF..", "ddeddddddddddddddededededddddeDdbdbebdbdbebebebebdbdbdbdbdbDcd"],
|
|
28796
|
+
71: [33, "ce..", "eeeeddddeeeededeeeeededeededdeDebebecdcdbebececebebececebdbdce"],
|
|
28797
|
+
72: [33, "ce..", "eeeededededeededededddddddddeeEececebdbdbdbdcdcdcdcdbebebebece"],
|
|
28798
|
+
73: [33, "ce..", "eeeeededededddddededdedeeeeeeeEececececebebecdcdbdbdcdcDcdcdce"],
|
|
28799
|
+
74: [33, "cf..", "ededddddededededededdededddddeDebebebdbdbebecdcDcdcdcdcdbdbdcd"],
|
|
28800
|
+
75: [33, "cF..", "ededdededededdddddddeeeedddddeDebebebdbdcececdcdcdcdbebebebecd"],
|
|
28801
|
+
76: [33, "ce..", "eeeeeeeeeeeeeeeeeeeededeeeeedeDebebececebebecececececececececE"],
|
|
28802
|
+
77: [33, "ce..", "eeeeeeeedededddddededdddedededEdcDcdcdcdbdbdbebebdbdbebececece"],
|
|
28803
|
+
78: [33, "de..", "dedeededdedededeeeeeeeeededeedEdcdcdbebececececebebebebecdcdbe"],
|
|
28804
|
+
79: [33, "dF..", "ddddddddededdededdddeeeeedededEdcDcdcdcdcecebdbdbebecdcdbdbdbd"],
|
|
28805
|
+
80: [33, "dF..", "dddddededdddeeeeddddddddededddDdbdbdcdcdbdbdbdbDcecebdbdbebEbd"],
|
|
28806
|
+
81: [33, "de..", "dedeeeeeeeeededeededeeeedededdDdbdbdbebecececdcdbebececececebe"],
|
|
28807
|
+
82: [33, "de..", "dedeededdedeededdedededeedededEdcdcdcdcdbebebebecdcdbebecdcDbe"],
|
|
28808
|
+
83: [33, "de..", "dededededddddededdddeeeededeeeEececebebececebdbdbebebdbdbebebe"],
|
|
28809
|
+
84: [33, "cF..", "ededddddeeeeddddeeeeeeeeededeeEecececdcdcecebebecdcdcecebdbdcd"],
|
|
28810
|
+
85: [33, "cf..", "ededdddddededddddddddedeeeeedeDebebececebebebdbdbdbdbebebdbdcd"],
|
|
28811
|
+
86: [33, "ce..", "eeeeededddddeeeeeeeedededededeDebebebebebebebebebebebdbdcdcdce"],
|
|
28812
|
+
87: [33, "ce..", "eeeeddddeeeeddddddddeeeeddddeeeececebdbdcecebdbDbdbdcecebdbdce"],
|
|
28813
|
+
88: [33, "ce..", "eeeedededdddeeeeededededededeeeecececdcdcdcdcdcdcecebdbdbebece"],
|
|
28814
|
+
89: [33, "cF..", "ededeeeeddddddddededdedededeeeEecEcebebEbebecdcdbdbdbdbdcececd"],
|
|
28815
|
+
90: [33, "dF..", "ddddededeeeeededeeeedededededdDdbdbdbebebEbecececdcdcececdcdbd"],
|
|
28816
|
+
91: [33, "df..", "ddddeeeededededeededdddddededdDdbdbdbebebdbdcdcdbebebebececebd"],
|
|
28817
|
+
92: [33, "de..", "dedededeededdddddededededdddedEdcdcdbdbdbebebebebdbdcdcdbebebe"],
|
|
28818
|
+
93: [33, "de..", "dededddddddddedeededeeeeeeeeededcdcdcececececdcdbebebdbdbdbdbe"],
|
|
28819
|
+
94: [33, "dF..", "ddddeeeeddddeeeeddddeeeededeedEdcDcdbebececebdbDcecebdbdcecebd"],
|
|
28820
|
+
95: [33, "df..", "ddddddddededeeeedddddededdddddDdbdbDbdbdbebecdcdbebecdcdbdbdbd"],
|
|
28821
|
+
96: [33, "cf..", "ededeeeededeeeeedededdddeeeedeDebebececebdbdbebececebebecececd"],
|
|
28822
|
+
97: [33, "ce..", "eeeedededededededdddeeeedddddeDebebebdbdcEcebdbdbebebEbebebece"],
|
|
28823
|
+
98: [33, "ce..", "eeeeededededeeeeeeeededededeeeEececebebebebecececececdcdcdcdce"],
|
|
28824
|
+
99: [33, "cf..", "ededededddddddddddddededdedeeeEececebebecdcdbdbdbdbdbdbdcdcdcd"],
|
|
28825
|
+
100: [33, "cf..", "ededdedeeeeededededeeeeeededdeDebebecdcdcecebebebebececebebecd"]
|
|
28826
|
+
};
|
|
28827
|
+
function sectorBias(code) {
|
|
28828
|
+
return code >= 97 ? (code - 97) / 2 - 1.5 : (code - 65) / 2 - 1.5 - 1 / 64;
|
|
28829
|
+
}
|
|
28830
|
+
var VERTICAL_STEP_EARLY = "120002002002002002202200200200200220220020000022222220000002222220000002222220000";
|
|
28831
|
+
var VERTICAL_STEP_FIRST = 7;
|
|
28832
|
+
function verticalSideOffset(width) {
|
|
28833
|
+
if (width < HOBBY_LIMIT || width > 1400) {
|
|
28834
|
+
return void 0;
|
|
28835
|
+
}
|
|
28836
|
+
let m = VERTICAL_STEP_FIRST;
|
|
28837
|
+
for (let i = 1; i < VERTICAL_STEP_EARLY.length; i++) {
|
|
28838
|
+
if (width >= 16 * (i + VERTICAL_STEP_FIRST) - 7 - +VERTICAL_STEP_EARLY[i]) {
|
|
28839
|
+
m = i + VERTICAL_STEP_FIRST;
|
|
28840
|
+
}
|
|
28841
|
+
}
|
|
28842
|
+
return 8 * m;
|
|
28843
|
+
}
|
|
28732
28844
|
var penCache = /* @__PURE__ */ new Map();
|
|
28733
28845
|
function penPolygon(width) {
|
|
28734
28846
|
const cached = penCache.get(width);
|
|
@@ -28741,7 +28853,7 @@ function penPolygon(width) {
|
|
|
28741
28853
|
pen = HOBBY[n - 1];
|
|
28742
28854
|
} else {
|
|
28743
28855
|
const rx = Math.ceil(width / 2);
|
|
28744
|
-
const ry =
|
|
28856
|
+
const ry = rx;
|
|
28745
28857
|
const f = flattenBezierPath(ellipseBeziers(-rx, -ry, rx, ry));
|
|
28746
28858
|
const half = [];
|
|
28747
28859
|
for (let i = 0; i + 1 < f.length; i += 2) {
|
|
@@ -28807,13 +28919,20 @@ function perpendicularVectors(width, dx0, dy0) {
|
|
|
28807
28919
|
const [B, hB, hS] = hP >= hN ? [P, hP, hN] : [N, hN, hP];
|
|
28808
28920
|
const den = 2 * (bh - hB + (bh - hS));
|
|
28809
28921
|
const w = den === 0 ? 0 : (hB - hS) / den;
|
|
28810
|
-
const off = width % 16 === 0 && width >= HOBBY_LIMIT ? FLAT_VECTOR_OFFSET[width / 16] : void 0;
|
|
28811
|
-
const sgn = best < n / 2 ? 1 : -1;
|
|
28812
|
-
const ox = off ? sgn * off[0] : 0;
|
|
28813
|
-
const oy = off ? sgn * off[1] : 0;
|
|
28814
28922
|
const r = (v) => 8 * Math.floor((v + 4) / 8);
|
|
28815
28923
|
const x = D[0] + (B[0] - D[0]) * w, y = D[1] + (B[1] - D[1]) * w;
|
|
28816
|
-
|
|
28924
|
+
let cx = 0.5 * Math.sign(dy), cy = 0.5 * Math.sign(dx);
|
|
28925
|
+
const table = width % 16 === 0 ? FLAT_SECTOR_BIAS[width / 16] : void 0;
|
|
28926
|
+
if (table) {
|
|
28927
|
+
const key = best * 2 + (hP >= hN ? 0 : 1);
|
|
28928
|
+
const pair = key === 0 ? table[1].slice(0, 2) : key >= table[0] ? table[2].slice((key - table[0]) * 2, (key - table[0]) * 2 + 2) : "..";
|
|
28929
|
+
if (pair[0] !== ".") {
|
|
28930
|
+
cx = sectorBias(pair.charCodeAt(0));
|
|
28931
|
+
cy = sectorBias(pair.charCodeAt(1));
|
|
28932
|
+
}
|
|
28933
|
+
}
|
|
28934
|
+
const side = dx === 0 ? verticalSideOffset(width) : void 0;
|
|
28935
|
+
const vx = side === void 0 ? r(x + cx) : -side, vy = r(y + cy);
|
|
28817
28936
|
return { v: flip ? [-vx, -vy] : [vx, vy], ray: flip ? [-x, -y] : [x, y] };
|
|
28818
28937
|
}
|
|
28819
28938
|
function squareExtension(width, dx, dy) {
|
|
@@ -29467,6 +29586,14 @@ function brushPaint2(rCtx) {
|
|
|
29467
29586
|
...state.bkMode === 1 && state.brushPattern?.kind === "hatch" ? { skip: hatchBackgroundMask(state.brushPattern.hatch) } : {}
|
|
29468
29587
|
};
|
|
29469
29588
|
}
|
|
29589
|
+
function withoutCurveTangents(path) {
|
|
29590
|
+
if (!path.figures.some((f) => f.tangents)) {
|
|
29591
|
+
return path;
|
|
29592
|
+
}
|
|
29593
|
+
const plain = new GdiRasterPath();
|
|
29594
|
+
plain.figures = path.figures.map((f) => ({ pts: f.pts, closed: f.closed, roundWiden: f.roundWiden }));
|
|
29595
|
+
return plain;
|
|
29596
|
+
}
|
|
29470
29597
|
function layoutRasterPath(rCtx, path, boxShape = false) {
|
|
29471
29598
|
if (!rCtx.wmfLayoutRtl || boxShape) return path;
|
|
29472
29599
|
const shift = Math.round(16 * (rCtx.wholeDevicePixels?.[0] ?? 1));
|
|
@@ -29477,9 +29604,11 @@ function layoutRasterPath(rCtx, path, boxShape = false) {
|
|
|
29477
29604
|
function paintRasterPath(rCtx, path, opts) {
|
|
29478
29605
|
path = layoutRasterPath(rCtx, path, opts.rectangle || opts.roundPen);
|
|
29479
29606
|
const { ctx, state } = rCtx;
|
|
29607
|
+
let filled = !!opts.filled;
|
|
29480
29608
|
if (opts.fill) {
|
|
29481
29609
|
const paint = brushPaint2(rCtx);
|
|
29482
29610
|
if (paint) {
|
|
29611
|
+
filled = true;
|
|
29483
29612
|
const fillPath = opts.fillPath ? layoutRasterPath(rCtx, opts.fillPath, opts.rectangle || opts.roundPen) : path;
|
|
29484
29613
|
const spans = fillPathSpans(fillPath, !!opts.winding);
|
|
29485
29614
|
paintSpansDeferred(rCtx, spans, paint, state.rop2);
|
|
@@ -29492,7 +29621,7 @@ function paintRasterPath(rCtx, path, opts) {
|
|
|
29492
29621
|
if (!penIsWidened(rCtx)) {
|
|
29493
29622
|
return false;
|
|
29494
29623
|
}
|
|
29495
|
-
const polys = widenPath(path, penWidenOptions(rCtx, opts));
|
|
29624
|
+
const polys = widenPath(filled ? withoutCurveTangents(path) : path, penWidenOptions(rCtx, opts));
|
|
29496
29625
|
paintSpansDeferred(rCtx, fillPolygonSpans(polys, true), { kind: "solid", rgb: rgbOf(state.penColor) }, state.rop2);
|
|
29497
29626
|
return true;
|
|
29498
29627
|
}
|
|
@@ -29809,7 +29938,7 @@ function paintGdiShape(rCtx, shape) {
|
|
|
29809
29938
|
return;
|
|
29810
29939
|
}
|
|
29811
29940
|
if ((cosmetic || penIsWidened(rCtx)) && (aliased || bitwise)) {
|
|
29812
|
-
paintRasterPath(rCtx, getPath(), { fill: false, stroke: true, style: shape.style, rectangle: shape.rectangle, roundPen: shape.roundPen });
|
|
29941
|
+
paintRasterPath(rCtx, getPath(), { fill: false, stroke: true, style: shape.style, rectangle: shape.rectangle, roundPen: shape.roundPen, filled: !!shape.fill && state.brushStyle !== 1 });
|
|
29813
29942
|
return;
|
|
29814
29943
|
}
|
|
29815
29944
|
const pattern = cosmeticPattern(rCtx);
|
|
@@ -38714,7 +38843,7 @@ function compatCorner(p, w, h, box) {
|
|
|
38714
38843
|
if ((p.rCtx.state.penStyle & 15) === PS_INSIDEFRAME && !penIsCosmetic(p.rCtx)) {
|
|
38715
38844
|
const penWidth = p.rCtx.state.penWidth * Math.sqrt(Math.abs(m[0] * m[3] - m[1] * m[2])) * 16;
|
|
38716
38845
|
const width = box.x1 - box.x0, height = box.y1 - box.y0;
|
|
38717
|
-
return [Math.min(cw, width + penWidth) * width / (width + penWidth), Math.min(ch, height + penWidth) * height / (height + penWidth)];
|
|
38846
|
+
return [Math.floor(Math.min(cw, width + penWidth) * width / (width + penWidth)), Math.floor(Math.min(ch, height + penWidth) * height / (height + penWidth))];
|
|
38718
38847
|
}
|
|
38719
38848
|
if (!penIsNull(p) && penIsCosmetic(p.rCtx)) {
|
|
38720
38849
|
const width = box.x1 - box.x0, height = box.y1 - box.y0;
|
package/dist/browser.mjs
CHANGED
|
@@ -28726,7 +28726,119 @@ var HOBBY = [
|
|
|
28726
28726
|
[[8, -48], [-8, -48], [-24, -40], [-40, -24], [-48, -8], [-48, 8], [-40, 24], [-24, 40], [-8, 48], [8, 48], [24, 40], [40, 24], [48, 8], [48, -8], [40, -24], [24, -40]]
|
|
28727
28727
|
];
|
|
28728
28728
|
var HOBBY_LIMIT = 104;
|
|
28729
|
-
var
|
|
28729
|
+
var FLAT_SECTOR_BIAS = {
|
|
28730
|
+
7: [9, "cf..", "edededEdcDcdcd"],
|
|
28731
|
+
8: [9, "dFee", "ededededbdbdbd"],
|
|
28732
|
+
9: [9, "df..", "ddddddddbDbdbd"],
|
|
28733
|
+
10: [9, "de..", "dededeDebEbebE"],
|
|
28734
|
+
11: [9, "ce..", "eeeeeeEececece"],
|
|
28735
|
+
12: [13, "ce..", "eeeeeeeeeeeececEcecece"],
|
|
28736
|
+
13: [17, "ce..", "eeeeededdddddeDebebebdbdcdcdce"],
|
|
28737
|
+
14: [17, "df..", "ddedeeeededeeeedcDcebebecececd"],
|
|
28738
|
+
15: [17, "dF..", "ddedeeeeeeeedeDdbdbecececececd"],
|
|
28739
|
+
16: [17, "ce..", "eeeededededeeeeececebebebebece"],
|
|
28740
|
+
17: [17, "df..", "ddedededededdeddbdbebdbdbdbdcd"],
|
|
28741
|
+
18: [17, "de..", "deeededeededeeEdcDcecdcdbebece"],
|
|
28742
|
+
19: [17, "cf..", "ededeeeedddddeDebEbecdcdbebecd"],
|
|
28743
|
+
20: [17, "ce..", "eeeeddddeeeeddDdbdbdcecebdbdce"],
|
|
28744
|
+
21: [17, "dF..", "ddddededededddDdbdbdcdcdcdcdbd"],
|
|
28745
|
+
22: [17, "ce..", "eeeededeeeeedeDebebececebebece"],
|
|
28746
|
+
23: [17, "cf..", "edededededededEdcDcdcdcdcdcdcD"],
|
|
28747
|
+
24: [17, "dF..", "ddddddddddddddDdbdbdbdbdbdbdbd"],
|
|
28748
|
+
25: [17, "cE..", "eeeeededededeeEecEcecdcdcdcdce"],
|
|
28749
|
+
26: [17, "cf..", "ededdedeededdedebEbecdcdbebecd"],
|
|
28750
|
+
27: [17, "de..", "dedeededdedeededcDcdbebecdcdbe"],
|
|
28751
|
+
28: [17, "cf..", "ededddddeeeedeDebEbebebecdcdcd"],
|
|
28752
|
+
29: [17, "ce..", "eeeeeeeededededebebebebececece"],
|
|
28753
|
+
30: [17, "dF..", "dddddedeeeeeedEdcdcdcecebebebd"],
|
|
28754
|
+
31: [17, "de..", "dedeededededdeDebebecdcdcdcdbe"],
|
|
28755
|
+
32: [17, "cf..", "ededdededdddeeeecEcebdbdbebecd"],
|
|
28756
|
+
33: [17, "de..", "dedeeeeeededddDdbdbdcdcdcecebe"],
|
|
28757
|
+
34: [17, "de..", "dedeeeeeddddedEdcdcdbdbdcecebe"],
|
|
28758
|
+
35: [17, "cf..", "ededededdededeDebebebebecdcdcd"],
|
|
28759
|
+
36: [17, "deee", "eeeeeeeeddddddDdcdcdcdcDbebebe"],
|
|
28760
|
+
37: [17, "dF..", "dddddededededdDdbdbdcecececebd"],
|
|
28761
|
+
38: [17, "ce..", "eeeeddddddddeeEececebdbdbdbdce"],
|
|
28762
|
+
39: [17, "cF..", "ededddddddddededcdcdbdbDbdbdcd"],
|
|
28763
|
+
40: [17, "de..", "dededededdddddddbdbdbdbdbebebe"],
|
|
28764
|
+
41: [17, "ce..", "eeeeeeeeeeeeeeEececececececece"],
|
|
28765
|
+
42: [17, "cf..", "ededeeeedddddedebebebdbdcececd"],
|
|
28766
|
+
43: [17, "df..", "ddddeeeededeedEdcdcdbebececebd"],
|
|
28767
|
+
44: [17, "cF..", "ededdedeededdeDebebecdcdbebecd"],
|
|
28768
|
+
45: [17, "ce..", "eeeededededeeeeecEcebebebebece"],
|
|
28769
|
+
46: [17, "dF..", "ddddededddddedEdcDcdcdcdbdbdbd"],
|
|
28770
|
+
47: [17, "ce..", "dedededededededececececececece"],
|
|
28771
|
+
48: [25, "cf..", "ededeeeeeeeeededeeeeeeEecececececdcdcececececd"],
|
|
28772
|
+
49: [25, "cF..", "ededddddededeeeeededdeDebebecdcdcececdcdbdbdcd"],
|
|
28773
|
+
50: [25, "ce..", "eeeeddddededdededededeDebebebebebEbecdcdbdbdce"],
|
|
28774
|
+
51: [25, "ce..", "eeeeededddddeeeededeeeEececebebececebdbdcdcdce"],
|
|
28775
|
+
52: [25, "ce..", "eeeededededeededededeeEecececdcdcdcdbebebebece"],
|
|
28776
|
+
53: [25, "dF..", "ddedeeeedddddddddedeeeEdcdcebebebdbDbdbdcececd"],
|
|
28777
|
+
54: [25, "dF..", "ddedddddededededdddddEDdbdbebdbdcdcdcdcdbdbdcd"],
|
|
28778
|
+
55: [25, "dF..", "ddeddedeeeeeeeeedededeDdbdbebebebebebebebebecd"],
|
|
28779
|
+
56: [25, "dE..", "deeeeeeeededeeeededeeEedcdcebebecececdcdcecece"],
|
|
28780
|
+
57: [25, "de..", "deeedddddddddedeededeeEdcDcecDcdcececdcdbdbDce"],
|
|
28781
|
+
58: [25, "dF..", "ddedddddeeeedddddedeeeEdcdcebebebdbdcecebdbdcd"],
|
|
28782
|
+
59: [33, "cF..", "ededdedeededddddeeeeeeeedddddeDebebebdbdcecececebdbdcdcdbebecd"],
|
|
28783
|
+
60: [33, "cf..", "ededeeeeededededddddeeeeeeeedeDebebececececebdbdcdcdcdcdcececd"],
|
|
28784
|
+
61: [33, "ce..", "eeeeeeeeddddeeeeeeeeddddeeeeeeeececececebdbdcecececebdbdcecece"],
|
|
28785
|
+
62: [33, "ce..", "eeeeddddeeeeededededeeeeddddeeEecEcebdbdcececdcdcdcdcecebdbdce"],
|
|
28786
|
+
63: [33, "cf..", "ededededeeeededededeeeeeeeeeeeEececececececebebEbebecececdcdcd"],
|
|
28787
|
+
64: [33, "cF..", "ededeeeedddddedeeeeededeeeeedeDebebececebebececebebebdbdcececd"],
|
|
28788
|
+
65: [33, "df..", "ddedededededddddddddeeeeeeeedeDdbdbececececebdbdbdbdcdcdcdcdcd"],
|
|
28789
|
+
66: [33, "de..", "deeeededdedeeeeedddddededddddeDdbdbebdbdbebecdcdbebebebecdcdce"],
|
|
28790
|
+
67: [33, "de..", "deeeddddddddededdddddededdddeeEdcDcebdbdbebebdbdcdcdbdbdbdbdce"],
|
|
28791
|
+
68: [33, "dE..", "deeeeeeeeeeeeeeeddddeeeeeeeeeeEdcdcececececebdbdcecececececece"],
|
|
28792
|
+
69: [33, "df..", "ddedededdedeeeeeddddededededdeDdbdbecdcdcdcdbdbdcecebebecdcdcd"],
|
|
28793
|
+
70: [33, "dF..", "ddeddddddddddddddededededddddeDdbdbebdbdbebebebebdbdbdbdbdbDcd"],
|
|
28794
|
+
71: [33, "ce..", "eeeeddddeeeededeeeeededeededdeDebebecdcdbebececebebececebdbdce"],
|
|
28795
|
+
72: [33, "ce..", "eeeededededeededededddddddddeeEececebdbdbdbdcdcdcdcdbebebebece"],
|
|
28796
|
+
73: [33, "ce..", "eeeeededededddddededdedeeeeeeeEececececebebecdcdbdbdcdcDcdcdce"],
|
|
28797
|
+
74: [33, "cf..", "ededddddededededededdededddddeDebebebdbdbebecdcDcdcdcdcdbdbdcd"],
|
|
28798
|
+
75: [33, "cF..", "ededdededededdddddddeeeedddddeDebebebdbdcececdcdcdcdbebebebecd"],
|
|
28799
|
+
76: [33, "ce..", "eeeeeeeeeeeeeeeeeeeededeeeeedeDebebececebebecececececececececE"],
|
|
28800
|
+
77: [33, "ce..", "eeeeeeeedededddddededdddedededEdcDcdcdcdbdbdbebebdbdbebececece"],
|
|
28801
|
+
78: [33, "de..", "dedeededdedededeeeeeeeeededeedEdcdcdbebececececebebebebecdcdbe"],
|
|
28802
|
+
79: [33, "dF..", "ddddddddededdededdddeeeeedededEdcDcdcdcdcecebdbdbebecdcdbdbdbd"],
|
|
28803
|
+
80: [33, "dF..", "dddddededdddeeeeddddddddededddDdbdbdcdcdbdbdbdbDcecebdbdbebEbd"],
|
|
28804
|
+
81: [33, "de..", "dedeeeeeeeeededeededeeeedededdDdbdbdbebecececdcdbebececececebe"],
|
|
28805
|
+
82: [33, "de..", "dedeededdedeededdedededeedededEdcdcdcdcdbebebebecdcdbebecdcDbe"],
|
|
28806
|
+
83: [33, "de..", "dededededddddededdddeeeededeeeEececebebececebdbdbebebdbdbebebe"],
|
|
28807
|
+
84: [33, "cF..", "ededddddeeeeddddeeeeeeeeededeeEecececdcdcecebebecdcdcecebdbdcd"],
|
|
28808
|
+
85: [33, "cf..", "ededdddddededddddddddedeeeeedeDebebececebebebdbdbdbdbebebdbdcd"],
|
|
28809
|
+
86: [33, "ce..", "eeeeededddddeeeeeeeedededededeDebebebebebebebebebebebdbdcdcdce"],
|
|
28810
|
+
87: [33, "ce..", "eeeeddddeeeeddddddddeeeeddddeeeececebdbdcecebdbDbdbdcecebdbdce"],
|
|
28811
|
+
88: [33, "ce..", "eeeedededdddeeeeededededededeeeecececdcdcdcdcdcdcecebdbdbebece"],
|
|
28812
|
+
89: [33, "cF..", "ededeeeeddddddddededdedededeeeEecEcebebEbebecdcdbdbdbdbdcececd"],
|
|
28813
|
+
90: [33, "dF..", "ddddededeeeeededeeeedededededdDdbdbdbebebEbecececdcdcececdcdbd"],
|
|
28814
|
+
91: [33, "df..", "ddddeeeededededeededdddddededdDdbdbdbebebdbdcdcdbebebebececebd"],
|
|
28815
|
+
92: [33, "de..", "dedededeededdddddededededdddedEdcdcdbdbdbebebebebdbdcdcdbebebe"],
|
|
28816
|
+
93: [33, "de..", "dededddddddddedeededeeeeeeeeededcdcdcececececdcdbebebdbdbdbdbe"],
|
|
28817
|
+
94: [33, "dF..", "ddddeeeeddddeeeeddddeeeededeedEdcDcdbebececebdbDcecebdbdcecebd"],
|
|
28818
|
+
95: [33, "df..", "ddddddddededeeeedddddededdddddDdbdbDbdbdbebecdcdbebecdcdbdbdbd"],
|
|
28819
|
+
96: [33, "cf..", "ededeeeededeeeeedededdddeeeedeDebebececebdbdbebececebebecececd"],
|
|
28820
|
+
97: [33, "ce..", "eeeedededededededdddeeeedddddeDebebebdbdcEcebdbdbebebEbebebece"],
|
|
28821
|
+
98: [33, "ce..", "eeeeededededeeeeeeeededededeeeEececebebebebecececececdcdcdcdce"],
|
|
28822
|
+
99: [33, "cf..", "ededededddddddddddddededdedeeeEececebebecdcdbdbdbdbdbdbdcdcdcd"],
|
|
28823
|
+
100: [33, "cf..", "ededdedeeeeededededeeeeeededdeDebebecdcdcecebebebebececebebecd"]
|
|
28824
|
+
};
|
|
28825
|
+
function sectorBias(code) {
|
|
28826
|
+
return code >= 97 ? (code - 97) / 2 - 1.5 : (code - 65) / 2 - 1.5 - 1 / 64;
|
|
28827
|
+
}
|
|
28828
|
+
var VERTICAL_STEP_EARLY = "120002002002002002202200200200200220220020000022222220000002222220000002222220000";
|
|
28829
|
+
var VERTICAL_STEP_FIRST = 7;
|
|
28830
|
+
function verticalSideOffset(width) {
|
|
28831
|
+
if (width < HOBBY_LIMIT || width > 1400) {
|
|
28832
|
+
return void 0;
|
|
28833
|
+
}
|
|
28834
|
+
let m = VERTICAL_STEP_FIRST;
|
|
28835
|
+
for (let i = 1; i < VERTICAL_STEP_EARLY.length; i++) {
|
|
28836
|
+
if (width >= 16 * (i + VERTICAL_STEP_FIRST) - 7 - +VERTICAL_STEP_EARLY[i]) {
|
|
28837
|
+
m = i + VERTICAL_STEP_FIRST;
|
|
28838
|
+
}
|
|
28839
|
+
}
|
|
28840
|
+
return 8 * m;
|
|
28841
|
+
}
|
|
28730
28842
|
var penCache = /* @__PURE__ */ new Map();
|
|
28731
28843
|
function penPolygon(width) {
|
|
28732
28844
|
const cached = penCache.get(width);
|
|
@@ -28739,7 +28851,7 @@ function penPolygon(width) {
|
|
|
28739
28851
|
pen = HOBBY[n - 1];
|
|
28740
28852
|
} else {
|
|
28741
28853
|
const rx = Math.ceil(width / 2);
|
|
28742
|
-
const ry =
|
|
28854
|
+
const ry = rx;
|
|
28743
28855
|
const f = flattenBezierPath(ellipseBeziers(-rx, -ry, rx, ry));
|
|
28744
28856
|
const half = [];
|
|
28745
28857
|
for (let i = 0; i + 1 < f.length; i += 2) {
|
|
@@ -28805,13 +28917,20 @@ function perpendicularVectors(width, dx0, dy0) {
|
|
|
28805
28917
|
const [B, hB, hS] = hP >= hN ? [P, hP, hN] : [N, hN, hP];
|
|
28806
28918
|
const den = 2 * (bh - hB + (bh - hS));
|
|
28807
28919
|
const w = den === 0 ? 0 : (hB - hS) / den;
|
|
28808
|
-
const off = width % 16 === 0 && width >= HOBBY_LIMIT ? FLAT_VECTOR_OFFSET[width / 16] : void 0;
|
|
28809
|
-
const sgn = best < n / 2 ? 1 : -1;
|
|
28810
|
-
const ox = off ? sgn * off[0] : 0;
|
|
28811
|
-
const oy = off ? sgn * off[1] : 0;
|
|
28812
28920
|
const r = (v) => 8 * Math.floor((v + 4) / 8);
|
|
28813
28921
|
const x = D[0] + (B[0] - D[0]) * w, y = D[1] + (B[1] - D[1]) * w;
|
|
28814
|
-
|
|
28922
|
+
let cx = 0.5 * Math.sign(dy), cy = 0.5 * Math.sign(dx);
|
|
28923
|
+
const table = width % 16 === 0 ? FLAT_SECTOR_BIAS[width / 16] : void 0;
|
|
28924
|
+
if (table) {
|
|
28925
|
+
const key = best * 2 + (hP >= hN ? 0 : 1);
|
|
28926
|
+
const pair = key === 0 ? table[1].slice(0, 2) : key >= table[0] ? table[2].slice((key - table[0]) * 2, (key - table[0]) * 2 + 2) : "..";
|
|
28927
|
+
if (pair[0] !== ".") {
|
|
28928
|
+
cx = sectorBias(pair.charCodeAt(0));
|
|
28929
|
+
cy = sectorBias(pair.charCodeAt(1));
|
|
28930
|
+
}
|
|
28931
|
+
}
|
|
28932
|
+
const side = dx === 0 ? verticalSideOffset(width) : void 0;
|
|
28933
|
+
const vx = side === void 0 ? r(x + cx) : -side, vy = r(y + cy);
|
|
28815
28934
|
return { v: flip ? [-vx, -vy] : [vx, vy], ray: flip ? [-x, -y] : [x, y] };
|
|
28816
28935
|
}
|
|
28817
28936
|
function squareExtension(width, dx, dy) {
|
|
@@ -29465,6 +29584,14 @@ function brushPaint2(rCtx) {
|
|
|
29465
29584
|
...state.bkMode === 1 && state.brushPattern?.kind === "hatch" ? { skip: hatchBackgroundMask(state.brushPattern.hatch) } : {}
|
|
29466
29585
|
};
|
|
29467
29586
|
}
|
|
29587
|
+
function withoutCurveTangents(path) {
|
|
29588
|
+
if (!path.figures.some((f) => f.tangents)) {
|
|
29589
|
+
return path;
|
|
29590
|
+
}
|
|
29591
|
+
const plain = new GdiRasterPath();
|
|
29592
|
+
plain.figures = path.figures.map((f) => ({ pts: f.pts, closed: f.closed, roundWiden: f.roundWiden }));
|
|
29593
|
+
return plain;
|
|
29594
|
+
}
|
|
29468
29595
|
function layoutRasterPath(rCtx, path, boxShape = false) {
|
|
29469
29596
|
if (!rCtx.wmfLayoutRtl || boxShape) return path;
|
|
29470
29597
|
const shift = Math.round(16 * (rCtx.wholeDevicePixels?.[0] ?? 1));
|
|
@@ -29475,9 +29602,11 @@ function layoutRasterPath(rCtx, path, boxShape = false) {
|
|
|
29475
29602
|
function paintRasterPath(rCtx, path, opts) {
|
|
29476
29603
|
path = layoutRasterPath(rCtx, path, opts.rectangle || opts.roundPen);
|
|
29477
29604
|
const { ctx, state } = rCtx;
|
|
29605
|
+
let filled = !!opts.filled;
|
|
29478
29606
|
if (opts.fill) {
|
|
29479
29607
|
const paint = brushPaint2(rCtx);
|
|
29480
29608
|
if (paint) {
|
|
29609
|
+
filled = true;
|
|
29481
29610
|
const fillPath = opts.fillPath ? layoutRasterPath(rCtx, opts.fillPath, opts.rectangle || opts.roundPen) : path;
|
|
29482
29611
|
const spans = fillPathSpans(fillPath, !!opts.winding);
|
|
29483
29612
|
paintSpansDeferred(rCtx, spans, paint, state.rop2);
|
|
@@ -29490,7 +29619,7 @@ function paintRasterPath(rCtx, path, opts) {
|
|
|
29490
29619
|
if (!penIsWidened(rCtx)) {
|
|
29491
29620
|
return false;
|
|
29492
29621
|
}
|
|
29493
|
-
const polys = widenPath(path, penWidenOptions(rCtx, opts));
|
|
29622
|
+
const polys = widenPath(filled ? withoutCurveTangents(path) : path, penWidenOptions(rCtx, opts));
|
|
29494
29623
|
paintSpansDeferred(rCtx, fillPolygonSpans(polys, true), { kind: "solid", rgb: rgbOf(state.penColor) }, state.rop2);
|
|
29495
29624
|
return true;
|
|
29496
29625
|
}
|
|
@@ -29807,7 +29936,7 @@ function paintGdiShape(rCtx, shape) {
|
|
|
29807
29936
|
return;
|
|
29808
29937
|
}
|
|
29809
29938
|
if ((cosmetic || penIsWidened(rCtx)) && (aliased || bitwise)) {
|
|
29810
|
-
paintRasterPath(rCtx, getPath(), { fill: false, stroke: true, style: shape.style, rectangle: shape.rectangle, roundPen: shape.roundPen });
|
|
29939
|
+
paintRasterPath(rCtx, getPath(), { fill: false, stroke: true, style: shape.style, rectangle: shape.rectangle, roundPen: shape.roundPen, filled: !!shape.fill && state.brushStyle !== 1 });
|
|
29811
29940
|
return;
|
|
29812
29941
|
}
|
|
29813
29942
|
const pattern = cosmeticPattern(rCtx);
|
|
@@ -38712,7 +38841,7 @@ function compatCorner(p, w, h, box) {
|
|
|
38712
38841
|
if ((p.rCtx.state.penStyle & 15) === PS_INSIDEFRAME && !penIsCosmetic(p.rCtx)) {
|
|
38713
38842
|
const penWidth = p.rCtx.state.penWidth * Math.sqrt(Math.abs(m[0] * m[3] - m[1] * m[2])) * 16;
|
|
38714
38843
|
const width = box.x1 - box.x0, height = box.y1 - box.y0;
|
|
38715
|
-
return [Math.min(cw, width + penWidth) * width / (width + penWidth), Math.min(ch, height + penWidth) * height / (height + penWidth)];
|
|
38844
|
+
return [Math.floor(Math.min(cw, width + penWidth) * width / (width + penWidth)), Math.floor(Math.min(ch, height + penWidth) * height / (height + penWidth))];
|
|
38716
38845
|
}
|
|
38717
38846
|
if (!penIsNull(p) && penIsCosmetic(p.rCtx)) {
|
|
38718
38847
|
const width = box.x1 - box.x0, height = box.y1 - box.y0;
|
package/dist/index.js
CHANGED
|
@@ -28729,7 +28729,119 @@ var HOBBY = [
|
|
|
28729
28729
|
[[8, -48], [-8, -48], [-24, -40], [-40, -24], [-48, -8], [-48, 8], [-40, 24], [-24, 40], [-8, 48], [8, 48], [24, 40], [40, 24], [48, 8], [48, -8], [40, -24], [24, -40]]
|
|
28730
28730
|
];
|
|
28731
28731
|
var HOBBY_LIMIT = 104;
|
|
28732
|
-
var
|
|
28732
|
+
var FLAT_SECTOR_BIAS = {
|
|
28733
|
+
7: [9, "cf..", "edededEdcDcdcd"],
|
|
28734
|
+
8: [9, "dFee", "ededededbdbdbd"],
|
|
28735
|
+
9: [9, "df..", "ddddddddbDbdbd"],
|
|
28736
|
+
10: [9, "de..", "dededeDebEbebE"],
|
|
28737
|
+
11: [9, "ce..", "eeeeeeEececece"],
|
|
28738
|
+
12: [13, "ce..", "eeeeeeeeeeeececEcecece"],
|
|
28739
|
+
13: [17, "ce..", "eeeeededdddddeDebebebdbdcdcdce"],
|
|
28740
|
+
14: [17, "df..", "ddedeeeededeeeedcDcebebecececd"],
|
|
28741
|
+
15: [17, "dF..", "ddedeeeeeeeedeDdbdbecececececd"],
|
|
28742
|
+
16: [17, "ce..", "eeeededededeeeeececebebebebece"],
|
|
28743
|
+
17: [17, "df..", "ddedededededdeddbdbebdbdbdbdcd"],
|
|
28744
|
+
18: [17, "de..", "deeededeededeeEdcDcecdcdbebece"],
|
|
28745
|
+
19: [17, "cf..", "ededeeeedddddeDebEbecdcdbebecd"],
|
|
28746
|
+
20: [17, "ce..", "eeeeddddeeeeddDdbdbdcecebdbdce"],
|
|
28747
|
+
21: [17, "dF..", "ddddededededddDdbdbdcdcdcdcdbd"],
|
|
28748
|
+
22: [17, "ce..", "eeeededeeeeedeDebebececebebece"],
|
|
28749
|
+
23: [17, "cf..", "edededededededEdcDcdcdcdcdcdcD"],
|
|
28750
|
+
24: [17, "dF..", "ddddddddddddddDdbdbdbdbdbdbdbd"],
|
|
28751
|
+
25: [17, "cE..", "eeeeededededeeEecEcecdcdcdcdce"],
|
|
28752
|
+
26: [17, "cf..", "ededdedeededdedebEbecdcdbebecd"],
|
|
28753
|
+
27: [17, "de..", "dedeededdedeededcDcdbebecdcdbe"],
|
|
28754
|
+
28: [17, "cf..", "ededddddeeeedeDebEbebebecdcdcd"],
|
|
28755
|
+
29: [17, "ce..", "eeeeeeeededededebebebebececece"],
|
|
28756
|
+
30: [17, "dF..", "dddddedeeeeeedEdcdcdcecebebebd"],
|
|
28757
|
+
31: [17, "de..", "dedeededededdeDebebecdcdcdcdbe"],
|
|
28758
|
+
32: [17, "cf..", "ededdededdddeeeecEcebdbdbebecd"],
|
|
28759
|
+
33: [17, "de..", "dedeeeeeededddDdbdbdcdcdcecebe"],
|
|
28760
|
+
34: [17, "de..", "dedeeeeeddddedEdcdcdbdbdcecebe"],
|
|
28761
|
+
35: [17, "cf..", "ededededdededeDebebebebecdcdcd"],
|
|
28762
|
+
36: [17, "deee", "eeeeeeeeddddddDdcdcdcdcDbebebe"],
|
|
28763
|
+
37: [17, "dF..", "dddddededededdDdbdbdcecececebd"],
|
|
28764
|
+
38: [17, "ce..", "eeeeddddddddeeEececebdbdbdbdce"],
|
|
28765
|
+
39: [17, "cF..", "ededddddddddededcdcdbdbDbdbdcd"],
|
|
28766
|
+
40: [17, "de..", "dededededdddddddbdbdbdbdbebebe"],
|
|
28767
|
+
41: [17, "ce..", "eeeeeeeeeeeeeeEececececececece"],
|
|
28768
|
+
42: [17, "cf..", "ededeeeedddddedebebebdbdcececd"],
|
|
28769
|
+
43: [17, "df..", "ddddeeeededeedEdcdcdbebececebd"],
|
|
28770
|
+
44: [17, "cF..", "ededdedeededdeDebebecdcdbebecd"],
|
|
28771
|
+
45: [17, "ce..", "eeeededededeeeeecEcebebebebece"],
|
|
28772
|
+
46: [17, "dF..", "ddddededddddedEdcDcdcdcdbdbdbd"],
|
|
28773
|
+
47: [17, "ce..", "dedededededededececececececece"],
|
|
28774
|
+
48: [25, "cf..", "ededeeeeeeeeededeeeeeeEecececececdcdcececececd"],
|
|
28775
|
+
49: [25, "cF..", "ededddddededeeeeededdeDebebecdcdcececdcdbdbdcd"],
|
|
28776
|
+
50: [25, "ce..", "eeeeddddededdededededeDebebebebebEbecdcdbdbdce"],
|
|
28777
|
+
51: [25, "ce..", "eeeeededddddeeeededeeeEececebebececebdbdcdcdce"],
|
|
28778
|
+
52: [25, "ce..", "eeeededededeededededeeEecececdcdcdcdbebebebece"],
|
|
28779
|
+
53: [25, "dF..", "ddedeeeedddddddddedeeeEdcdcebebebdbDbdbdcececd"],
|
|
28780
|
+
54: [25, "dF..", "ddedddddededededdddddEDdbdbebdbdcdcdcdcdbdbdcd"],
|
|
28781
|
+
55: [25, "dF..", "ddeddedeeeeeeeeedededeDdbdbebebebebebebebebecd"],
|
|
28782
|
+
56: [25, "dE..", "deeeeeeeededeeeededeeEedcdcebebecececdcdcecece"],
|
|
28783
|
+
57: [25, "de..", "deeedddddddddedeededeeEdcDcecDcdcececdcdbdbDce"],
|
|
28784
|
+
58: [25, "dF..", "ddedddddeeeedddddedeeeEdcdcebebebdbdcecebdbdcd"],
|
|
28785
|
+
59: [33, "cF..", "ededdedeededddddeeeeeeeedddddeDebebebdbdcecececebdbdcdcdbebecd"],
|
|
28786
|
+
60: [33, "cf..", "ededeeeeededededddddeeeeeeeedeDebebececececebdbdcdcdcdcdcececd"],
|
|
28787
|
+
61: [33, "ce..", "eeeeeeeeddddeeeeeeeeddddeeeeeeeececececebdbdcecececebdbdcecece"],
|
|
28788
|
+
62: [33, "ce..", "eeeeddddeeeeededededeeeeddddeeEecEcebdbdcececdcdcdcdcecebdbdce"],
|
|
28789
|
+
63: [33, "cf..", "ededededeeeededededeeeeeeeeeeeEececececececebebEbebecececdcdcd"],
|
|
28790
|
+
64: [33, "cF..", "ededeeeedddddedeeeeededeeeeedeDebebececebebececebebebdbdcececd"],
|
|
28791
|
+
65: [33, "df..", "ddedededededddddddddeeeeeeeedeDdbdbececececebdbdbdbdcdcdcdcdcd"],
|
|
28792
|
+
66: [33, "de..", "deeeededdedeeeeedddddededddddeDdbdbebdbdbebecdcdbebebebecdcdce"],
|
|
28793
|
+
67: [33, "de..", "deeeddddddddededdddddededdddeeEdcDcebdbdbebebdbdcdcdbdbdbdbdce"],
|
|
28794
|
+
68: [33, "dE..", "deeeeeeeeeeeeeeeddddeeeeeeeeeeEdcdcececececebdbdcecececececece"],
|
|
28795
|
+
69: [33, "df..", "ddedededdedeeeeeddddededededdeDdbdbecdcdcdcdbdbdcecebebecdcdcd"],
|
|
28796
|
+
70: [33, "dF..", "ddeddddddddddddddededededddddeDdbdbebdbdbebebebebdbdbdbdbdbDcd"],
|
|
28797
|
+
71: [33, "ce..", "eeeeddddeeeededeeeeededeededdeDebebecdcdbebececebebececebdbdce"],
|
|
28798
|
+
72: [33, "ce..", "eeeededededeededededddddddddeeEececebdbdbdbdcdcdcdcdbebebebece"],
|
|
28799
|
+
73: [33, "ce..", "eeeeededededddddededdedeeeeeeeEececececebebecdcdbdbdcdcDcdcdce"],
|
|
28800
|
+
74: [33, "cf..", "ededddddededededededdededddddeDebebebdbdbebecdcDcdcdcdcdbdbdcd"],
|
|
28801
|
+
75: [33, "cF..", "ededdededededdddddddeeeedddddeDebebebdbdcececdcdcdcdbebebebecd"],
|
|
28802
|
+
76: [33, "ce..", "eeeeeeeeeeeeeeeeeeeededeeeeedeDebebececebebecececececececececE"],
|
|
28803
|
+
77: [33, "ce..", "eeeeeeeedededddddededdddedededEdcDcdcdcdbdbdbebebdbdbebececece"],
|
|
28804
|
+
78: [33, "de..", "dedeededdedededeeeeeeeeededeedEdcdcdbebececececebebebebecdcdbe"],
|
|
28805
|
+
79: [33, "dF..", "ddddddddededdededdddeeeeedededEdcDcdcdcdcecebdbdbebecdcdbdbdbd"],
|
|
28806
|
+
80: [33, "dF..", "dddddededdddeeeeddddddddededddDdbdbdcdcdbdbdbdbDcecebdbdbebEbd"],
|
|
28807
|
+
81: [33, "de..", "dedeeeeeeeeededeededeeeedededdDdbdbdbebecececdcdbebececececebe"],
|
|
28808
|
+
82: [33, "de..", "dedeededdedeededdedededeedededEdcdcdcdcdbebebebecdcdbebecdcDbe"],
|
|
28809
|
+
83: [33, "de..", "dededededddddededdddeeeededeeeEececebebececebdbdbebebdbdbebebe"],
|
|
28810
|
+
84: [33, "cF..", "ededddddeeeeddddeeeeeeeeededeeEecececdcdcecebebecdcdcecebdbdcd"],
|
|
28811
|
+
85: [33, "cf..", "ededdddddededddddddddedeeeeedeDebebececebebebdbdbdbdbebebdbdcd"],
|
|
28812
|
+
86: [33, "ce..", "eeeeededddddeeeeeeeedededededeDebebebebebebebebebebebdbdcdcdce"],
|
|
28813
|
+
87: [33, "ce..", "eeeeddddeeeeddddddddeeeeddddeeeececebdbdcecebdbDbdbdcecebdbdce"],
|
|
28814
|
+
88: [33, "ce..", "eeeedededdddeeeeededededededeeeecececdcdcdcdcdcdcecebdbdbebece"],
|
|
28815
|
+
89: [33, "cF..", "ededeeeeddddddddededdedededeeeEecEcebebEbebecdcdbdbdbdbdcececd"],
|
|
28816
|
+
90: [33, "dF..", "ddddededeeeeededeeeedededededdDdbdbdbebebEbecececdcdcececdcdbd"],
|
|
28817
|
+
91: [33, "df..", "ddddeeeededededeededdddddededdDdbdbdbebebdbdcdcdbebebebececebd"],
|
|
28818
|
+
92: [33, "de..", "dedededeededdddddededededdddedEdcdcdbdbdbebebebebdbdcdcdbebebe"],
|
|
28819
|
+
93: [33, "de..", "dededddddddddedeededeeeeeeeeededcdcdcececececdcdbebebdbdbdbdbe"],
|
|
28820
|
+
94: [33, "dF..", "ddddeeeeddddeeeeddddeeeededeedEdcDcdbebececebdbDcecebdbdcecebd"],
|
|
28821
|
+
95: [33, "df..", "ddddddddededeeeedddddededdddddDdbdbDbdbdbebecdcdbebecdcdbdbdbd"],
|
|
28822
|
+
96: [33, "cf..", "ededeeeededeeeeedededdddeeeedeDebebececebdbdbebececebebecececd"],
|
|
28823
|
+
97: [33, "ce..", "eeeedededededededdddeeeedddddeDebebebdbdcEcebdbdbebebEbebebece"],
|
|
28824
|
+
98: [33, "ce..", "eeeeededededeeeeeeeededededeeeEececebebebebecececececdcdcdcdce"],
|
|
28825
|
+
99: [33, "cf..", "ededededddddddddddddededdedeeeEececebebecdcdbdbdbdbdbdbdcdcdcd"],
|
|
28826
|
+
100: [33, "cf..", "ededdedeeeeededededeeeeeededdeDebebecdcdcecebebebebececebebecd"]
|
|
28827
|
+
};
|
|
28828
|
+
function sectorBias(code) {
|
|
28829
|
+
return code >= 97 ? (code - 97) / 2 - 1.5 : (code - 65) / 2 - 1.5 - 1 / 64;
|
|
28830
|
+
}
|
|
28831
|
+
var VERTICAL_STEP_EARLY = "120002002002002002202200200200200220220020000022222220000002222220000002222220000";
|
|
28832
|
+
var VERTICAL_STEP_FIRST = 7;
|
|
28833
|
+
function verticalSideOffset(width) {
|
|
28834
|
+
if (width < HOBBY_LIMIT || width > 1400) {
|
|
28835
|
+
return void 0;
|
|
28836
|
+
}
|
|
28837
|
+
let m = VERTICAL_STEP_FIRST;
|
|
28838
|
+
for (let i = 1; i < VERTICAL_STEP_EARLY.length; i++) {
|
|
28839
|
+
if (width >= 16 * (i + VERTICAL_STEP_FIRST) - 7 - +VERTICAL_STEP_EARLY[i]) {
|
|
28840
|
+
m = i + VERTICAL_STEP_FIRST;
|
|
28841
|
+
}
|
|
28842
|
+
}
|
|
28843
|
+
return 8 * m;
|
|
28844
|
+
}
|
|
28733
28845
|
var penCache = /* @__PURE__ */ new Map();
|
|
28734
28846
|
function penPolygon(width) {
|
|
28735
28847
|
const cached = penCache.get(width);
|
|
@@ -28742,7 +28854,7 @@ function penPolygon(width) {
|
|
|
28742
28854
|
pen = HOBBY[n - 1];
|
|
28743
28855
|
} else {
|
|
28744
28856
|
const rx = Math.ceil(width / 2);
|
|
28745
|
-
const ry =
|
|
28857
|
+
const ry = rx;
|
|
28746
28858
|
const f = flattenBezierPath(ellipseBeziers(-rx, -ry, rx, ry));
|
|
28747
28859
|
const half = [];
|
|
28748
28860
|
for (let i = 0; i + 1 < f.length; i += 2) {
|
|
@@ -28808,13 +28920,20 @@ function perpendicularVectors(width, dx0, dy0) {
|
|
|
28808
28920
|
const [B, hB, hS] = hP >= hN ? [P, hP, hN] : [N, hN, hP];
|
|
28809
28921
|
const den = 2 * (bh - hB + (bh - hS));
|
|
28810
28922
|
const w = den === 0 ? 0 : (hB - hS) / den;
|
|
28811
|
-
const off = width % 16 === 0 && width >= HOBBY_LIMIT ? FLAT_VECTOR_OFFSET[width / 16] : void 0;
|
|
28812
|
-
const sgn = best < n / 2 ? 1 : -1;
|
|
28813
|
-
const ox = off ? sgn * off[0] : 0;
|
|
28814
|
-
const oy = off ? sgn * off[1] : 0;
|
|
28815
28923
|
const r = (v) => 8 * Math.floor((v + 4) / 8);
|
|
28816
28924
|
const x = D[0] + (B[0] - D[0]) * w, y = D[1] + (B[1] - D[1]) * w;
|
|
28817
|
-
|
|
28925
|
+
let cx = 0.5 * Math.sign(dy), cy = 0.5 * Math.sign(dx);
|
|
28926
|
+
const table = width % 16 === 0 ? FLAT_SECTOR_BIAS[width / 16] : void 0;
|
|
28927
|
+
if (table) {
|
|
28928
|
+
const key = best * 2 + (hP >= hN ? 0 : 1);
|
|
28929
|
+
const pair = key === 0 ? table[1].slice(0, 2) : key >= table[0] ? table[2].slice((key - table[0]) * 2, (key - table[0]) * 2 + 2) : "..";
|
|
28930
|
+
if (pair[0] !== ".") {
|
|
28931
|
+
cx = sectorBias(pair.charCodeAt(0));
|
|
28932
|
+
cy = sectorBias(pair.charCodeAt(1));
|
|
28933
|
+
}
|
|
28934
|
+
}
|
|
28935
|
+
const side = dx === 0 ? verticalSideOffset(width) : void 0;
|
|
28936
|
+
const vx = side === void 0 ? r(x + cx) : -side, vy = r(y + cy);
|
|
28818
28937
|
return { v: flip ? [-vx, -vy] : [vx, vy], ray: flip ? [-x, -y] : [x, y] };
|
|
28819
28938
|
}
|
|
28820
28939
|
function squareExtension(width, dx, dy) {
|
|
@@ -29468,6 +29587,14 @@ function brushPaint2(rCtx) {
|
|
|
29468
29587
|
...state.bkMode === 1 && state.brushPattern?.kind === "hatch" ? { skip: hatchBackgroundMask(state.brushPattern.hatch) } : {}
|
|
29469
29588
|
};
|
|
29470
29589
|
}
|
|
29590
|
+
function withoutCurveTangents(path) {
|
|
29591
|
+
if (!path.figures.some((f) => f.tangents)) {
|
|
29592
|
+
return path;
|
|
29593
|
+
}
|
|
29594
|
+
const plain = new GdiRasterPath();
|
|
29595
|
+
plain.figures = path.figures.map((f) => ({ pts: f.pts, closed: f.closed, roundWiden: f.roundWiden }));
|
|
29596
|
+
return plain;
|
|
29597
|
+
}
|
|
29471
29598
|
function layoutRasterPath(rCtx, path, boxShape = false) {
|
|
29472
29599
|
if (!rCtx.wmfLayoutRtl || boxShape) return path;
|
|
29473
29600
|
const shift = Math.round(16 * (rCtx.wholeDevicePixels?.[0] ?? 1));
|
|
@@ -29478,9 +29605,11 @@ function layoutRasterPath(rCtx, path, boxShape = false) {
|
|
|
29478
29605
|
function paintRasterPath(rCtx, path, opts) {
|
|
29479
29606
|
path = layoutRasterPath(rCtx, path, opts.rectangle || opts.roundPen);
|
|
29480
29607
|
const { ctx, state } = rCtx;
|
|
29608
|
+
let filled = !!opts.filled;
|
|
29481
29609
|
if (opts.fill) {
|
|
29482
29610
|
const paint = brushPaint2(rCtx);
|
|
29483
29611
|
if (paint) {
|
|
29612
|
+
filled = true;
|
|
29484
29613
|
const fillPath = opts.fillPath ? layoutRasterPath(rCtx, opts.fillPath, opts.rectangle || opts.roundPen) : path;
|
|
29485
29614
|
const spans = fillPathSpans(fillPath, !!opts.winding);
|
|
29486
29615
|
paintSpansDeferred(rCtx, spans, paint, state.rop2);
|
|
@@ -29493,7 +29622,7 @@ function paintRasterPath(rCtx, path, opts) {
|
|
|
29493
29622
|
if (!penIsWidened(rCtx)) {
|
|
29494
29623
|
return false;
|
|
29495
29624
|
}
|
|
29496
|
-
const polys = widenPath(path, penWidenOptions(rCtx, opts));
|
|
29625
|
+
const polys = widenPath(filled ? withoutCurveTangents(path) : path, penWidenOptions(rCtx, opts));
|
|
29497
29626
|
paintSpansDeferred(rCtx, fillPolygonSpans(polys, true), { kind: "solid", rgb: rgbOf(state.penColor) }, state.rop2);
|
|
29498
29627
|
return true;
|
|
29499
29628
|
}
|
|
@@ -29810,7 +29939,7 @@ function paintGdiShape(rCtx, shape) {
|
|
|
29810
29939
|
return;
|
|
29811
29940
|
}
|
|
29812
29941
|
if ((cosmetic || penIsWidened(rCtx)) && (aliased || bitwise)) {
|
|
29813
|
-
paintRasterPath(rCtx, getPath(), { fill: false, stroke: true, style: shape.style, rectangle: shape.rectangle, roundPen: shape.roundPen });
|
|
29942
|
+
paintRasterPath(rCtx, getPath(), { fill: false, stroke: true, style: shape.style, rectangle: shape.rectangle, roundPen: shape.roundPen, filled: !!shape.fill && state.brushStyle !== 1 });
|
|
29814
29943
|
return;
|
|
29815
29944
|
}
|
|
29816
29945
|
const pattern = cosmeticPattern(rCtx);
|
|
@@ -38715,7 +38844,7 @@ function compatCorner(p, w, h, box) {
|
|
|
38715
38844
|
if ((p.rCtx.state.penStyle & 15) === PS_INSIDEFRAME && !penIsCosmetic(p.rCtx)) {
|
|
38716
38845
|
const penWidth = p.rCtx.state.penWidth * Math.sqrt(Math.abs(m[0] * m[3] - m[1] * m[2])) * 16;
|
|
38717
38846
|
const width = box.x1 - box.x0, height = box.y1 - box.y0;
|
|
38718
|
-
return [Math.min(cw, width + penWidth) * width / (width + penWidth), Math.min(ch, height + penWidth) * height / (height + penWidth)];
|
|
38847
|
+
return [Math.floor(Math.min(cw, width + penWidth) * width / (width + penWidth)), Math.floor(Math.min(ch, height + penWidth) * height / (height + penWidth))];
|
|
38719
38848
|
}
|
|
38720
38849
|
if (!penIsNull(p) && penIsCosmetic(p.rCtx)) {
|
|
38721
38850
|
const width = box.x1 - box.x0, height = box.y1 - box.y0;
|
package/dist/index.mjs
CHANGED
|
@@ -28727,7 +28727,119 @@ var HOBBY = [
|
|
|
28727
28727
|
[[8, -48], [-8, -48], [-24, -40], [-40, -24], [-48, -8], [-48, 8], [-40, 24], [-24, 40], [-8, 48], [8, 48], [24, 40], [40, 24], [48, 8], [48, -8], [40, -24], [24, -40]]
|
|
28728
28728
|
];
|
|
28729
28729
|
var HOBBY_LIMIT = 104;
|
|
28730
|
-
var
|
|
28730
|
+
var FLAT_SECTOR_BIAS = {
|
|
28731
|
+
7: [9, "cf..", "edededEdcDcdcd"],
|
|
28732
|
+
8: [9, "dFee", "ededededbdbdbd"],
|
|
28733
|
+
9: [9, "df..", "ddddddddbDbdbd"],
|
|
28734
|
+
10: [9, "de..", "dededeDebEbebE"],
|
|
28735
|
+
11: [9, "ce..", "eeeeeeEececece"],
|
|
28736
|
+
12: [13, "ce..", "eeeeeeeeeeeececEcecece"],
|
|
28737
|
+
13: [17, "ce..", "eeeeededdddddeDebebebdbdcdcdce"],
|
|
28738
|
+
14: [17, "df..", "ddedeeeededeeeedcDcebebecececd"],
|
|
28739
|
+
15: [17, "dF..", "ddedeeeeeeeedeDdbdbecececececd"],
|
|
28740
|
+
16: [17, "ce..", "eeeededededeeeeececebebebebece"],
|
|
28741
|
+
17: [17, "df..", "ddedededededdeddbdbebdbdbdbdcd"],
|
|
28742
|
+
18: [17, "de..", "deeededeededeeEdcDcecdcdbebece"],
|
|
28743
|
+
19: [17, "cf..", "ededeeeedddddeDebEbecdcdbebecd"],
|
|
28744
|
+
20: [17, "ce..", "eeeeddddeeeeddDdbdbdcecebdbdce"],
|
|
28745
|
+
21: [17, "dF..", "ddddededededddDdbdbdcdcdcdcdbd"],
|
|
28746
|
+
22: [17, "ce..", "eeeededeeeeedeDebebececebebece"],
|
|
28747
|
+
23: [17, "cf..", "edededededededEdcDcdcdcdcdcdcD"],
|
|
28748
|
+
24: [17, "dF..", "ddddddddddddddDdbdbdbdbdbdbdbd"],
|
|
28749
|
+
25: [17, "cE..", "eeeeededededeeEecEcecdcdcdcdce"],
|
|
28750
|
+
26: [17, "cf..", "ededdedeededdedebEbecdcdbebecd"],
|
|
28751
|
+
27: [17, "de..", "dedeededdedeededcDcdbebecdcdbe"],
|
|
28752
|
+
28: [17, "cf..", "ededddddeeeedeDebEbebebecdcdcd"],
|
|
28753
|
+
29: [17, "ce..", "eeeeeeeededededebebebebececece"],
|
|
28754
|
+
30: [17, "dF..", "dddddedeeeeeedEdcdcdcecebebebd"],
|
|
28755
|
+
31: [17, "de..", "dedeededededdeDebebecdcdcdcdbe"],
|
|
28756
|
+
32: [17, "cf..", "ededdededdddeeeecEcebdbdbebecd"],
|
|
28757
|
+
33: [17, "de..", "dedeeeeeededddDdbdbdcdcdcecebe"],
|
|
28758
|
+
34: [17, "de..", "dedeeeeeddddedEdcdcdbdbdcecebe"],
|
|
28759
|
+
35: [17, "cf..", "ededededdededeDebebebebecdcdcd"],
|
|
28760
|
+
36: [17, "deee", "eeeeeeeeddddddDdcdcdcdcDbebebe"],
|
|
28761
|
+
37: [17, "dF..", "dddddededededdDdbdbdcecececebd"],
|
|
28762
|
+
38: [17, "ce..", "eeeeddddddddeeEececebdbdbdbdce"],
|
|
28763
|
+
39: [17, "cF..", "ededddddddddededcdcdbdbDbdbdcd"],
|
|
28764
|
+
40: [17, "de..", "dededededdddddddbdbdbdbdbebebe"],
|
|
28765
|
+
41: [17, "ce..", "eeeeeeeeeeeeeeEececececececece"],
|
|
28766
|
+
42: [17, "cf..", "ededeeeedddddedebebebdbdcececd"],
|
|
28767
|
+
43: [17, "df..", "ddddeeeededeedEdcdcdbebececebd"],
|
|
28768
|
+
44: [17, "cF..", "ededdedeededdeDebebecdcdbebecd"],
|
|
28769
|
+
45: [17, "ce..", "eeeededededeeeeecEcebebebebece"],
|
|
28770
|
+
46: [17, "dF..", "ddddededddddedEdcDcdcdcdbdbdbd"],
|
|
28771
|
+
47: [17, "ce..", "dedededededededececececececece"],
|
|
28772
|
+
48: [25, "cf..", "ededeeeeeeeeededeeeeeeEecececececdcdcececececd"],
|
|
28773
|
+
49: [25, "cF..", "ededddddededeeeeededdeDebebecdcdcececdcdbdbdcd"],
|
|
28774
|
+
50: [25, "ce..", "eeeeddddededdededededeDebebebebebEbecdcdbdbdce"],
|
|
28775
|
+
51: [25, "ce..", "eeeeededddddeeeededeeeEececebebececebdbdcdcdce"],
|
|
28776
|
+
52: [25, "ce..", "eeeededededeededededeeEecececdcdcdcdbebebebece"],
|
|
28777
|
+
53: [25, "dF..", "ddedeeeedddddddddedeeeEdcdcebebebdbDbdbdcececd"],
|
|
28778
|
+
54: [25, "dF..", "ddedddddededededdddddEDdbdbebdbdcdcdcdcdbdbdcd"],
|
|
28779
|
+
55: [25, "dF..", "ddeddedeeeeeeeeedededeDdbdbebebebebebebebebecd"],
|
|
28780
|
+
56: [25, "dE..", "deeeeeeeededeeeededeeEedcdcebebecececdcdcecece"],
|
|
28781
|
+
57: [25, "de..", "deeedddddddddedeededeeEdcDcecDcdcececdcdbdbDce"],
|
|
28782
|
+
58: [25, "dF..", "ddedddddeeeedddddedeeeEdcdcebebebdbdcecebdbdcd"],
|
|
28783
|
+
59: [33, "cF..", "ededdedeededddddeeeeeeeedddddeDebebebdbdcecececebdbdcdcdbebecd"],
|
|
28784
|
+
60: [33, "cf..", "ededeeeeededededddddeeeeeeeedeDebebececececebdbdcdcdcdcdcececd"],
|
|
28785
|
+
61: [33, "ce..", "eeeeeeeeddddeeeeeeeeddddeeeeeeeececececebdbdcecececebdbdcecece"],
|
|
28786
|
+
62: [33, "ce..", "eeeeddddeeeeededededeeeeddddeeEecEcebdbdcececdcdcdcdcecebdbdce"],
|
|
28787
|
+
63: [33, "cf..", "ededededeeeededededeeeeeeeeeeeEececececececebebEbebecececdcdcd"],
|
|
28788
|
+
64: [33, "cF..", "ededeeeedddddedeeeeededeeeeedeDebebececebebececebebebdbdcececd"],
|
|
28789
|
+
65: [33, "df..", "ddedededededddddddddeeeeeeeedeDdbdbececececebdbdbdbdcdcdcdcdcd"],
|
|
28790
|
+
66: [33, "de..", "deeeededdedeeeeedddddededddddeDdbdbebdbdbebecdcdbebebebecdcdce"],
|
|
28791
|
+
67: [33, "de..", "deeeddddddddededdddddededdddeeEdcDcebdbdbebebdbdcdcdbdbdbdbdce"],
|
|
28792
|
+
68: [33, "dE..", "deeeeeeeeeeeeeeeddddeeeeeeeeeeEdcdcececececebdbdcecececececece"],
|
|
28793
|
+
69: [33, "df..", "ddedededdedeeeeeddddededededdeDdbdbecdcdcdcdbdbdcecebebecdcdcd"],
|
|
28794
|
+
70: [33, "dF..", "ddeddddddddddddddededededddddeDdbdbebdbdbebebebebdbdbdbdbdbDcd"],
|
|
28795
|
+
71: [33, "ce..", "eeeeddddeeeededeeeeededeededdeDebebecdcdbebececebebececebdbdce"],
|
|
28796
|
+
72: [33, "ce..", "eeeededededeededededddddddddeeEececebdbdbdbdcdcdcdcdbebebebece"],
|
|
28797
|
+
73: [33, "ce..", "eeeeededededddddededdedeeeeeeeEececececebebecdcdbdbdcdcDcdcdce"],
|
|
28798
|
+
74: [33, "cf..", "ededddddededededededdededddddeDebebebdbdbebecdcDcdcdcdcdbdbdcd"],
|
|
28799
|
+
75: [33, "cF..", "ededdededededdddddddeeeedddddeDebebebdbdcececdcdcdcdbebebebecd"],
|
|
28800
|
+
76: [33, "ce..", "eeeeeeeeeeeeeeeeeeeededeeeeedeDebebececebebecececececececececE"],
|
|
28801
|
+
77: [33, "ce..", "eeeeeeeedededddddededdddedededEdcDcdcdcdbdbdbebebdbdbebececece"],
|
|
28802
|
+
78: [33, "de..", "dedeededdedededeeeeeeeeededeedEdcdcdbebececececebebebebecdcdbe"],
|
|
28803
|
+
79: [33, "dF..", "ddddddddededdededdddeeeeedededEdcDcdcdcdcecebdbdbebecdcdbdbdbd"],
|
|
28804
|
+
80: [33, "dF..", "dddddededdddeeeeddddddddededddDdbdbdcdcdbdbdbdbDcecebdbdbebEbd"],
|
|
28805
|
+
81: [33, "de..", "dedeeeeeeeeededeededeeeedededdDdbdbdbebecececdcdbebececececebe"],
|
|
28806
|
+
82: [33, "de..", "dedeededdedeededdedededeedededEdcdcdcdcdbebebebecdcdbebecdcDbe"],
|
|
28807
|
+
83: [33, "de..", "dededededddddededdddeeeededeeeEececebebececebdbdbebebdbdbebebe"],
|
|
28808
|
+
84: [33, "cF..", "ededddddeeeeddddeeeeeeeeededeeEecececdcdcecebebecdcdcecebdbdcd"],
|
|
28809
|
+
85: [33, "cf..", "ededdddddededddddddddedeeeeedeDebebececebebebdbdbdbdbebebdbdcd"],
|
|
28810
|
+
86: [33, "ce..", "eeeeededddddeeeeeeeedededededeDebebebebebebebebebebebdbdcdcdce"],
|
|
28811
|
+
87: [33, "ce..", "eeeeddddeeeeddddddddeeeeddddeeeececebdbdcecebdbDbdbdcecebdbdce"],
|
|
28812
|
+
88: [33, "ce..", "eeeedededdddeeeeededededededeeeecececdcdcdcdcdcdcecebdbdbebece"],
|
|
28813
|
+
89: [33, "cF..", "ededeeeeddddddddededdedededeeeEecEcebebEbebecdcdbdbdbdbdcececd"],
|
|
28814
|
+
90: [33, "dF..", "ddddededeeeeededeeeedededededdDdbdbdbebebEbecececdcdcececdcdbd"],
|
|
28815
|
+
91: [33, "df..", "ddddeeeededededeededdddddededdDdbdbdbebebdbdcdcdbebebebececebd"],
|
|
28816
|
+
92: [33, "de..", "dedededeededdddddededededdddedEdcdcdbdbdbebebebebdbdcdcdbebebe"],
|
|
28817
|
+
93: [33, "de..", "dededddddddddedeededeeeeeeeeededcdcdcececececdcdbebebdbdbdbdbe"],
|
|
28818
|
+
94: [33, "dF..", "ddddeeeeddddeeeeddddeeeededeedEdcDcdbebececebdbDcecebdbdcecebd"],
|
|
28819
|
+
95: [33, "df..", "ddddddddededeeeedddddededdddddDdbdbDbdbdbebecdcdbebecdcdbdbdbd"],
|
|
28820
|
+
96: [33, "cf..", "ededeeeededeeeeedededdddeeeedeDebebececebdbdbebececebebecececd"],
|
|
28821
|
+
97: [33, "ce..", "eeeedededededededdddeeeedddddeDebebebdbdcEcebdbdbebebEbebebece"],
|
|
28822
|
+
98: [33, "ce..", "eeeeededededeeeeeeeededededeeeEececebebebebecececececdcdcdcdce"],
|
|
28823
|
+
99: [33, "cf..", "ededededddddddddddddededdedeeeEececebebecdcdbdbdbdbdbdbdcdcdcd"],
|
|
28824
|
+
100: [33, "cf..", "ededdedeeeeededededeeeeeededdeDebebecdcdcecebebebebececebebecd"]
|
|
28825
|
+
};
|
|
28826
|
+
function sectorBias(code) {
|
|
28827
|
+
return code >= 97 ? (code - 97) / 2 - 1.5 : (code - 65) / 2 - 1.5 - 1 / 64;
|
|
28828
|
+
}
|
|
28829
|
+
var VERTICAL_STEP_EARLY = "120002002002002002202200200200200220220020000022222220000002222220000002222220000";
|
|
28830
|
+
var VERTICAL_STEP_FIRST = 7;
|
|
28831
|
+
function verticalSideOffset(width) {
|
|
28832
|
+
if (width < HOBBY_LIMIT || width > 1400) {
|
|
28833
|
+
return void 0;
|
|
28834
|
+
}
|
|
28835
|
+
let m = VERTICAL_STEP_FIRST;
|
|
28836
|
+
for (let i = 1; i < VERTICAL_STEP_EARLY.length; i++) {
|
|
28837
|
+
if (width >= 16 * (i + VERTICAL_STEP_FIRST) - 7 - +VERTICAL_STEP_EARLY[i]) {
|
|
28838
|
+
m = i + VERTICAL_STEP_FIRST;
|
|
28839
|
+
}
|
|
28840
|
+
}
|
|
28841
|
+
return 8 * m;
|
|
28842
|
+
}
|
|
28731
28843
|
var penCache = /* @__PURE__ */ new Map();
|
|
28732
28844
|
function penPolygon(width) {
|
|
28733
28845
|
const cached = penCache.get(width);
|
|
@@ -28740,7 +28852,7 @@ function penPolygon(width) {
|
|
|
28740
28852
|
pen = HOBBY[n - 1];
|
|
28741
28853
|
} else {
|
|
28742
28854
|
const rx = Math.ceil(width / 2);
|
|
28743
|
-
const ry =
|
|
28855
|
+
const ry = rx;
|
|
28744
28856
|
const f = flattenBezierPath(ellipseBeziers(-rx, -ry, rx, ry));
|
|
28745
28857
|
const half = [];
|
|
28746
28858
|
for (let i = 0; i + 1 < f.length; i += 2) {
|
|
@@ -28806,13 +28918,20 @@ function perpendicularVectors(width, dx0, dy0) {
|
|
|
28806
28918
|
const [B, hB, hS] = hP >= hN ? [P, hP, hN] : [N, hN, hP];
|
|
28807
28919
|
const den = 2 * (bh - hB + (bh - hS));
|
|
28808
28920
|
const w = den === 0 ? 0 : (hB - hS) / den;
|
|
28809
|
-
const off = width % 16 === 0 && width >= HOBBY_LIMIT ? FLAT_VECTOR_OFFSET[width / 16] : void 0;
|
|
28810
|
-
const sgn = best < n / 2 ? 1 : -1;
|
|
28811
|
-
const ox = off ? sgn * off[0] : 0;
|
|
28812
|
-
const oy = off ? sgn * off[1] : 0;
|
|
28813
28921
|
const r = (v) => 8 * Math.floor((v + 4) / 8);
|
|
28814
28922
|
const x = D[0] + (B[0] - D[0]) * w, y = D[1] + (B[1] - D[1]) * w;
|
|
28815
|
-
|
|
28923
|
+
let cx = 0.5 * Math.sign(dy), cy = 0.5 * Math.sign(dx);
|
|
28924
|
+
const table = width % 16 === 0 ? FLAT_SECTOR_BIAS[width / 16] : void 0;
|
|
28925
|
+
if (table) {
|
|
28926
|
+
const key = best * 2 + (hP >= hN ? 0 : 1);
|
|
28927
|
+
const pair = key === 0 ? table[1].slice(0, 2) : key >= table[0] ? table[2].slice((key - table[0]) * 2, (key - table[0]) * 2 + 2) : "..";
|
|
28928
|
+
if (pair[0] !== ".") {
|
|
28929
|
+
cx = sectorBias(pair.charCodeAt(0));
|
|
28930
|
+
cy = sectorBias(pair.charCodeAt(1));
|
|
28931
|
+
}
|
|
28932
|
+
}
|
|
28933
|
+
const side = dx === 0 ? verticalSideOffset(width) : void 0;
|
|
28934
|
+
const vx = side === void 0 ? r(x + cx) : -side, vy = r(y + cy);
|
|
28816
28935
|
return { v: flip ? [-vx, -vy] : [vx, vy], ray: flip ? [-x, -y] : [x, y] };
|
|
28817
28936
|
}
|
|
28818
28937
|
function squareExtension(width, dx, dy) {
|
|
@@ -29466,6 +29585,14 @@ function brushPaint2(rCtx) {
|
|
|
29466
29585
|
...state.bkMode === 1 && state.brushPattern?.kind === "hatch" ? { skip: hatchBackgroundMask(state.brushPattern.hatch) } : {}
|
|
29467
29586
|
};
|
|
29468
29587
|
}
|
|
29588
|
+
function withoutCurveTangents(path) {
|
|
29589
|
+
if (!path.figures.some((f) => f.tangents)) {
|
|
29590
|
+
return path;
|
|
29591
|
+
}
|
|
29592
|
+
const plain = new GdiRasterPath();
|
|
29593
|
+
plain.figures = path.figures.map((f) => ({ pts: f.pts, closed: f.closed, roundWiden: f.roundWiden }));
|
|
29594
|
+
return plain;
|
|
29595
|
+
}
|
|
29469
29596
|
function layoutRasterPath(rCtx, path, boxShape = false) {
|
|
29470
29597
|
if (!rCtx.wmfLayoutRtl || boxShape) return path;
|
|
29471
29598
|
const shift = Math.round(16 * (rCtx.wholeDevicePixels?.[0] ?? 1));
|
|
@@ -29476,9 +29603,11 @@ function layoutRasterPath(rCtx, path, boxShape = false) {
|
|
|
29476
29603
|
function paintRasterPath(rCtx, path, opts) {
|
|
29477
29604
|
path = layoutRasterPath(rCtx, path, opts.rectangle || opts.roundPen);
|
|
29478
29605
|
const { ctx, state } = rCtx;
|
|
29606
|
+
let filled = !!opts.filled;
|
|
29479
29607
|
if (opts.fill) {
|
|
29480
29608
|
const paint = brushPaint2(rCtx);
|
|
29481
29609
|
if (paint) {
|
|
29610
|
+
filled = true;
|
|
29482
29611
|
const fillPath = opts.fillPath ? layoutRasterPath(rCtx, opts.fillPath, opts.rectangle || opts.roundPen) : path;
|
|
29483
29612
|
const spans = fillPathSpans(fillPath, !!opts.winding);
|
|
29484
29613
|
paintSpansDeferred(rCtx, spans, paint, state.rop2);
|
|
@@ -29491,7 +29620,7 @@ function paintRasterPath(rCtx, path, opts) {
|
|
|
29491
29620
|
if (!penIsWidened(rCtx)) {
|
|
29492
29621
|
return false;
|
|
29493
29622
|
}
|
|
29494
|
-
const polys = widenPath(path, penWidenOptions(rCtx, opts));
|
|
29623
|
+
const polys = widenPath(filled ? withoutCurveTangents(path) : path, penWidenOptions(rCtx, opts));
|
|
29495
29624
|
paintSpansDeferred(rCtx, fillPolygonSpans(polys, true), { kind: "solid", rgb: rgbOf(state.penColor) }, state.rop2);
|
|
29496
29625
|
return true;
|
|
29497
29626
|
}
|
|
@@ -29808,7 +29937,7 @@ function paintGdiShape(rCtx, shape) {
|
|
|
29808
29937
|
return;
|
|
29809
29938
|
}
|
|
29810
29939
|
if ((cosmetic || penIsWidened(rCtx)) && (aliased || bitwise)) {
|
|
29811
|
-
paintRasterPath(rCtx, getPath(), { fill: false, stroke: true, style: shape.style, rectangle: shape.rectangle, roundPen: shape.roundPen });
|
|
29940
|
+
paintRasterPath(rCtx, getPath(), { fill: false, stroke: true, style: shape.style, rectangle: shape.rectangle, roundPen: shape.roundPen, filled: !!shape.fill && state.brushStyle !== 1 });
|
|
29812
29941
|
return;
|
|
29813
29942
|
}
|
|
29814
29943
|
const pattern = cosmeticPattern(rCtx);
|
|
@@ -38713,7 +38842,7 @@ function compatCorner(p, w, h, box) {
|
|
|
38713
38842
|
if ((p.rCtx.state.penStyle & 15) === PS_INSIDEFRAME && !penIsCosmetic(p.rCtx)) {
|
|
38714
38843
|
const penWidth = p.rCtx.state.penWidth * Math.sqrt(Math.abs(m[0] * m[3] - m[1] * m[2])) * 16;
|
|
38715
38844
|
const width = box.x1 - box.x0, height = box.y1 - box.y0;
|
|
38716
|
-
return [Math.min(cw, width + penWidth) * width / (width + penWidth), Math.min(ch, height + penWidth) * height / (height + penWidth)];
|
|
38845
|
+
return [Math.floor(Math.min(cw, width + penWidth) * width / (width + penWidth)), Math.floor(Math.min(ch, height + penWidth) * height / (height + penWidth))];
|
|
38717
38846
|
}
|
|
38718
38847
|
if (!penIsNull(p) && penIsCosmetic(p.rCtx)) {
|
|
38719
38848
|
const width = box.x1 - box.x0, height = box.y1 - box.y0;
|