@mark1russell7/packing 0.1.5 → 0.1.6
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/build/index.d.ts +10 -5
- package/build/index.d.ts.map +1 -1
- package/build/index.js +19 -8
- package/build/index.js.map +1 -1
- package/package.json +2 -1
- package/src/check.ts +11 -5
- package/src/strategy.ts +6 -3
package/build/index.d.ts
CHANGED
|
@@ -519,8 +519,11 @@ export declare function quantile(values: readonly number[], q: number): number;
|
|
|
519
519
|
export declare function medianRatio(ratios: readonly number[]): number;
|
|
520
520
|
/** This function gives the share of the paired ratios above a limit. An empty list throws a `RangeError`. */
|
|
521
521
|
export declare function tailShare(ratios: readonly number[], limit: number): number;
|
|
522
|
-
/**
|
|
523
|
-
|
|
522
|
+
/**
|
|
523
|
+
* For each dimension of the taxonomy, the values that a strategy supports. `docs/research/TAXONOMY.md` gives the values.
|
|
524
|
+
* The type is an alias, not an interface. Thus it fits the record `Supports` of the contract.
|
|
525
|
+
*/
|
|
526
|
+
type Supports = {
|
|
524
527
|
containerSize: ("fixed" | "freeHeight" | "freeWidth" | "freeAspect" | "freeArea")[];
|
|
525
528
|
containerShape: ("rect" | "convex" | "polygon" | "circle" | "ellipse" | "holes")[];
|
|
526
529
|
/** The movement of the obstacles. An empty list supports only an input with no obstacle and no locked item. */
|
|
@@ -530,7 +533,7 @@ interface Supports {
|
|
|
530
533
|
order: ("free" | "soft" | "hard")[];
|
|
531
534
|
groups: ("none" | "flat" | "nested")[];
|
|
532
535
|
mode: ("offline" | "online" | "incremental")[];
|
|
533
|
-
}
|
|
536
|
+
};
|
|
534
537
|
/** A dimension of `Supports`. */
|
|
535
538
|
type Dimension = keyof Supports;
|
|
536
539
|
/** A value of a dimension of `Supports`. */
|
|
@@ -692,11 +695,13 @@ interface HardBreaks {
|
|
|
692
695
|
* This function counts the breaks of the 4 hard rules of the packer for an output.
|
|
693
696
|
*
|
|
694
697
|
* - `no-overlap`: each pair of items with their margins, and each pair of an item and an obstacle, that overlap by more than `tolerance.overlap`.
|
|
695
|
-
* - `in-container`: each item with its margin that goes out of a fixed side by more than `tolerance.overlap`.
|
|
698
|
+
* - `in-container`: each item with its margin that goes out of a fixed side by more than `tolerance.overlap`. The inset of
|
|
699
|
+
* the container makes each fixed side smaller (decision 3 of `docs/PACKER.md`).
|
|
696
700
|
* - `locked-kept`: each locked item that moved by more than `RECORD_EPS`, or that has no position.
|
|
697
701
|
* - `complete`: each item with no position that is not in the overflow.
|
|
698
702
|
*
|
|
699
|
-
* The rules read a shape of the container or of an
|
|
703
|
+
* The rules read a shape of the container, of an obstacle or of an item as its bounding box (decision 5). The bounding box
|
|
704
|
+
* of an item shape is relative to the position of the item. The result has no tolerance in it.
|
|
700
705
|
*/
|
|
701
706
|
export declare function checkHard(input: PackInput, output: PackOutput, tolerance?: Pick<Tolerance, "overlap">): HardBreaks;
|
|
702
707
|
/** An edge between two boxes. The router reads it, and the packer ignores it. */
|
package/build/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":[],"sources":["../src/vector.ts","../src/rect.ts","../src/order.ts","../src/pack.ts","../src/skyline.ts","../src/shelf.ts","../src/free.ts","../src/push.ts","../src/metrics.ts","../src/contract.ts","../src/measures.ts","../src/strategy.ts","../src/adapters.ts","../src/convert.ts","../src/registry.ts","../src/check.ts","../src/layout-input.ts","../src/generators.ts","../src/corpus.ts"],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../src/vector.ts","../src/rect.ts","../src/order.ts","../src/pack.ts","../src/skyline.ts","../src/shelf.ts","../src/free.ts","../src/push.ts","../src/metrics.ts","../src/contract.ts","../src/measures.ts","../src/strategy.ts","../src/adapters.ts","../src/convert.ts","../src/registry.ts","../src/check.ts","../src/layout-input.ts","../src/generators.ts","../src/corpus.ts"],"mappings":"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"}
|
package/build/index.js
CHANGED
|
@@ -2050,11 +2050,13 @@ function overlap(a, b, tolerance) {
|
|
|
2050
2050
|
* This function counts the breaks of the 4 hard rules of the packer for an output.
|
|
2051
2051
|
*
|
|
2052
2052
|
* - `no-overlap`: each pair of items with their margins, and each pair of an item and an obstacle, that overlap by more than `tolerance.overlap`.
|
|
2053
|
-
* - `in-container`: each item with its margin that goes out of a fixed side by more than `tolerance.overlap`.
|
|
2053
|
+
* - `in-container`: each item with its margin that goes out of a fixed side by more than `tolerance.overlap`. The inset of
|
|
2054
|
+
* the container makes each fixed side smaller (decision 3 of `docs/PACKER.md`).
|
|
2054
2055
|
* - `locked-kept`: each locked item that moved by more than `RECORD_EPS`, or that has no position.
|
|
2055
2056
|
* - `complete`: each item with no position that is not in the overflow.
|
|
2056
2057
|
*
|
|
2057
|
-
* The rules read a shape of the container or of an
|
|
2058
|
+
* The rules read a shape of the container, of an obstacle or of an item as its bounding box (decision 5). The bounding box
|
|
2059
|
+
* of an item shape is relative to the position of the item. The result has no tolerance in it.
|
|
2058
2060
|
*/
|
|
2059
2061
|
function checkHard(input, output, tolerance = DEFAULT_TOLERANCE) {
|
|
2060
2062
|
const tol = tolerance.overlap;
|
|
@@ -2080,11 +2082,19 @@ function checkHard(input, output, tolerance = DEFAULT_TOLERANCE) {
|
|
|
2080
2082
|
}
|
|
2081
2083
|
const placed = p.turn === 90 ? turnItem(item) : item;
|
|
2082
2084
|
const m = marginOf(placed);
|
|
2085
|
+
const area = placed.shape === void 0 ? {
|
|
2086
|
+
x: 0,
|
|
2087
|
+
y: 0,
|
|
2088
|
+
w: placed.w,
|
|
2089
|
+
h: placed.h
|
|
2090
|
+
} : boundsOf(placed.shape);
|
|
2091
|
+
const l = p.x + area.x;
|
|
2092
|
+
const t = p.y + area.y;
|
|
2083
2093
|
boxes.push({
|
|
2084
|
-
l:
|
|
2085
|
-
t:
|
|
2086
|
-
r:
|
|
2087
|
-
b:
|
|
2094
|
+
l: l - m.left,
|
|
2095
|
+
t: t - m.top,
|
|
2096
|
+
r: l + area.w + m.right,
|
|
2097
|
+
b: t + area.h + m.bottom
|
|
2088
2098
|
});
|
|
2089
2099
|
}
|
|
2090
2100
|
const moved = new Map(output.moved.map((m) => [m.id, m]));
|
|
@@ -2108,11 +2118,12 @@ function checkHard(input, output, tolerance = DEFAULT_TOLERANCE) {
|
|
|
2108
2118
|
const y = shape?.y ?? 0;
|
|
2109
2119
|
const w = shape?.w ?? container.w ?? Infinity;
|
|
2110
2120
|
const h = shape?.h ?? container.h ?? Infinity;
|
|
2121
|
+
const inset = container.inset ?? 0;
|
|
2111
2122
|
const fixedW = container.fixed === "size" || container.fixed === "width";
|
|
2112
2123
|
const fixedH = container.fixed === "size" || container.fixed === "height";
|
|
2113
2124
|
for (const box of boxes) {
|
|
2114
|
-
const outX = fixedW && (box.l < x - tol || box.r > x + w + tol);
|
|
2115
|
-
const outY = fixedH && (box.t < y - tol || box.b > y + h + tol);
|
|
2125
|
+
const outX = fixedW && (box.l < x + inset - tol || box.r > x + w - inset + tol);
|
|
2126
|
+
const outY = fixedH && (box.t < y + inset - tol || box.b > y + h - inset + tol);
|
|
2116
2127
|
if (outX || outY) breaks["in-container"] += 1;
|
|
2117
2128
|
}
|
|
2118
2129
|
return breaks;
|