@mark1russell7/packing 0.2.0 → 0.2.1
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 +99 -18
- package/build/index.d.ts.map +1 -1
- package/build/index.js +1795 -1272
- package/build/index.js.map +1 -1
- package/package.json +1 -1
- package/src/adapters.ts +14 -8
- package/src/index.ts +2 -1
- package/src/pack.ts +12 -1
- package/src/shelf.ts +107 -0
- package/src/skyline.ts +125 -2
- package/src/space.ts +379 -0
package/build/index.d.ts
CHANGED
|
@@ -80,10 +80,77 @@ type SortOrder = "height-desc" | "height-asc" | "width-desc" | "area-desc" | "in
|
|
|
80
80
|
export declare const SORT_ORDERS: readonly SortOrder[];
|
|
81
81
|
/** This function gives the comparator of a sort order. The sort is stable, so `input` keeps the order. */
|
|
82
82
|
export declare function compareRects(order: SortOrder): <T>(a: Rect<T>, b: Rect<T>) => number;
|
|
83
|
+
/** This function gives the margin of an item on each side. A number is the same margin on each side. */
|
|
84
|
+
export declare function marginOf(item: Pick<Item$1, "margin">): Sides$1;
|
|
85
|
+
/**
|
|
86
|
+
* This function gives an item after a turn of 90 degrees clockwise, with the y axis down (decision 1 of
|
|
87
|
+
* `docs/PACKER.md`). The width and the height change places. The top-left corner, the id and the other fields stay.
|
|
88
|
+
* The ports, the shape and the margin turn with the item. The function does not change its argument.
|
|
89
|
+
* It is `turnBox` of the contract.
|
|
90
|
+
*/
|
|
91
|
+
export declare function turnItem(item: Item$1): Item$1;
|
|
92
|
+
/** A free interval on one axis, from `start` to `end`. A box fits when it starts at `start` or later and ends at `end` or earlier. */
|
|
93
|
+
interface FreeSpan {
|
|
94
|
+
readonly start: number;
|
|
95
|
+
readonly end: number;
|
|
96
|
+
}
|
|
97
|
+
/** A rectangle of the frame: its top-left corner and its size. */
|
|
98
|
+
interface SpaceRect {
|
|
99
|
+
readonly x: number;
|
|
100
|
+
readonly y: number;
|
|
101
|
+
readonly w: number;
|
|
102
|
+
readonly h: number;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* The free space of one input, in the coordinates of the frame of the adapters. A rectangle of the frame is an item with its
|
|
106
|
+
* margin, grown by half the gap on each side. Each method takes such a rectangle.
|
|
107
|
+
*
|
|
108
|
+
* - The outline of a container with a fixed size is exact. A free side uses the bounding box of the shape, and the holes stay.
|
|
109
|
+
* - The inset of the container counts as in `checkHard`: the item with its margin, grown by the inset, stays in the outline.
|
|
110
|
+
* - A rectangle obstacle and a locked item are holes with the exact rectangles of the frame.
|
|
111
|
+
* - Another obstacle blocks its range over the query, grown by half the gap on each axis.
|
|
112
|
+
*/
|
|
113
|
+
interface FreeSpace {
|
|
114
|
+
/** The width of the area of the frame. A free side has the width `Infinity`. */
|
|
115
|
+
readonly w: number;
|
|
116
|
+
/** The height of the area of the frame. A free side has the height `Infinity`. */
|
|
117
|
+
readonly h: number;
|
|
118
|
+
/**
|
|
119
|
+
* The value `true` tells that the container is a plain rectangle and that each obstacle is a rectangle. Then `band` does
|
|
120
|
+
* not test y, and `column` does not test x, because each strategy tests the fixed side itself. This is the fast path.
|
|
121
|
+
*/
|
|
122
|
+
readonly plain: boolean;
|
|
123
|
+
/** This method gives the free x-spans, from left to right, for a rectangle from `y0` to `y1`. */
|
|
124
|
+
band(y0: number, y1: number): FreeSpan[];
|
|
125
|
+
/**
|
|
126
|
+
* This method gives the first free y-span for a rectangle from `x0` to `x1` that ends after `from`. The span starts
|
|
127
|
+
* at `from` or later. The method gives `undefined` when no such span is free.
|
|
128
|
+
*/
|
|
129
|
+
column(x0: number, x1: number, from?: number): FreeSpan | undefined;
|
|
130
|
+
/** This method tells if a rectangle is in the free space. */
|
|
131
|
+
fits(rect: SpaceRect): boolean;
|
|
132
|
+
/** This method gives the first x from `x` where a rectangle of width `w` fits from `y0` to `y1`, or `Infinity`. */
|
|
133
|
+
fitX(x: number, w: number, y0: number, y1: number): number;
|
|
134
|
+
/**
|
|
135
|
+
* This method gives the next top edge after `y0` where the free spans of a rectangle of the height `y1 - y0` change, or
|
|
136
|
+
* `Infinity`. A row that has no place for a rectangle of width `w` steps down to this edge.
|
|
137
|
+
*/
|
|
138
|
+
nextY(y0: number, y1: number, w: number): number;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* This function gives the free space of an input, in the coordinates of the frame of the adapters. The origin of the
|
|
142
|
+
* frame is the corner of the container, moved in by the inset and out by half the gap. `FreeSpace` tells the methods.
|
|
143
|
+
*/
|
|
144
|
+
export declare function freeSpace(input: PackInput): FreeSpace;
|
|
83
145
|
/** The options of `pack` and `packRows` */
|
|
84
146
|
interface PackOptions {
|
|
85
147
|
/** The order of the rectangles before the packing. The default is `height-desc`. */
|
|
86
148
|
sortOrder?: SortOrder;
|
|
149
|
+
/**
|
|
150
|
+
* The free space of the container: `freeSpace` of the input. With a space that is not plain, each strategy packs into
|
|
151
|
+
* the outline of the container and around its holes. The rows of `packRows` also go around the locked rectangles.
|
|
152
|
+
*/
|
|
153
|
+
space?: FreeSpace;
|
|
87
154
|
}
|
|
88
155
|
/** The options of `pack` */
|
|
89
156
|
interface PackLayoutOptions extends PackOptions {
|
|
@@ -97,6 +164,9 @@ interface PackLayoutOptions extends PackOptions {
|
|
|
97
164
|
* This function packs rectangles into an outer rectangle of a given width with a guillotine row packing. It does
|
|
98
165
|
* not change the width. Without `fixedSize`, the height grows until all rectangles fit. A `locked` rectangle keeps
|
|
99
166
|
* its position, but the rows do not go around it. `pack` sets the width first and then uses this function.
|
|
167
|
+
*
|
|
168
|
+
* With `options.space`, the rows go around the locked rectangles and the holes of the space, inside its outline. A space
|
|
169
|
+
* that is plain, with no locked rectangle, gives the rows of 0.1.
|
|
100
170
|
*/
|
|
101
171
|
export declare function packRows<T>(rects: Rect<T>[], outer: Rect<T>, options?: PackOptions): Rect<T>;
|
|
102
172
|
/**
|
|
@@ -114,11 +184,24 @@ export declare function pack<T>(rects: Rect<T>[], outer?: Rect<T>, options?: Pac
|
|
|
114
184
|
* This function finds the lowest window of width `rw` on a skyline. For each `x` in `[0, width - rw]`, the height
|
|
115
185
|
* of the window is the largest value of `skyline[x, x + rw)`. The first `x` with the smallest height wins. A
|
|
116
186
|
* monotonic deque makes the search O(width) for one rectangle.
|
|
187
|
+
*
|
|
188
|
+
* With `limit`, a window is valid only when its height plus `rh` is not more than the smallest value of
|
|
189
|
+
* `limit[x, x + rw)`. A second deque keeps that smallest value. No valid window gives the height `Infinity`.
|
|
117
190
|
*/
|
|
118
|
-
export declare function lowestWindow(skyline: ArrayLike<number>, width: number, rw: number): {
|
|
191
|
+
export declare function lowestWindow(skyline: ArrayLike<number>, width: number, rw: number, limit?: ArrayLike<number>, rh?: number): {
|
|
119
192
|
x: number;
|
|
120
193
|
y: number;
|
|
121
194
|
};
|
|
195
|
+
/** The options of `packSkyline` */
|
|
196
|
+
interface SkylineOptions {
|
|
197
|
+
/** The order of the rectangles before the packing. The default is `height-desc`. */
|
|
198
|
+
sortOrder?: SortOrder;
|
|
199
|
+
/**
|
|
200
|
+
* The free space of the container: `freeSpace` of the input. Without it, or when it is plain, the skyline uses only the
|
|
201
|
+
* outer rectangle and the locked rectangles.
|
|
202
|
+
*/
|
|
203
|
+
space?: FreeSpace;
|
|
204
|
+
}
|
|
122
205
|
/**
|
|
123
206
|
* This function packs rectangles into an outer rectangle with a skyline. It puts each rectangle in the lowest place
|
|
124
207
|
* where it fits, and it does not change the width of the outer rectangle.
|
|
@@ -130,14 +213,19 @@ export declare function lowestWindow(skyline: ArrayLike<number>, width: number,
|
|
|
130
213
|
* - Without `fixedSize`, the height of the outer rectangle grows to the content. With `fixedSize`, a rectangle that
|
|
131
214
|
* does not fit is not packed: its `wasPacked` stays `false`.
|
|
132
215
|
* - The default sort order is `height-desc`. The order of the array of the caller stays.
|
|
216
|
+
* - With a space that is not plain, each cell gets its start and its limit from `column` of the space. The space holds
|
|
217
|
+
* the obstacles and the locked items, thus the locked rectangles only keep their positions.
|
|
133
218
|
*/
|
|
134
|
-
export declare function packSkyline<T>(rects: Rect<T>[], outer: Rect<T>, options?:
|
|
135
|
-
sortOrder?: SortOrder;
|
|
136
|
-
}): Rect<T>;
|
|
219
|
+
export declare function packSkyline<T>(rects: Rect<T>[], outer: Rect<T>, options?: SkylineOptions): Rect<T>;
|
|
137
220
|
/** The options of `packShelf` */
|
|
138
221
|
interface ShelfOptions {
|
|
139
222
|
/** The order of the rectangles before the packing. The default is `height-desc`. */
|
|
140
223
|
sortOrder?: SortOrder;
|
|
224
|
+
/**
|
|
225
|
+
* The free space of the container: `freeSpace` of the input. Without it, or when it is plain, the packer uses only the
|
|
226
|
+
* outer rectangle and the locked rectangles.
|
|
227
|
+
*/
|
|
228
|
+
space?: FreeSpace;
|
|
141
229
|
}
|
|
142
230
|
/**
|
|
143
231
|
* This function packs rectangles into shelves: rows that it fills left to right in the sort order, and does not fill
|
|
@@ -150,6 +238,7 @@ interface ShelfOptions {
|
|
|
150
238
|
* - A rectangle wider than the outer rectangle goes on its own row, at the left edge, and overflows.
|
|
151
239
|
* - It does not change the width. Without `fixedSize`, the height grows to the content. With `fixedSize`, a
|
|
152
240
|
* rectangle that does not fit is not packed: its `wasPacked` stays `false`.
|
|
241
|
+
* - With a space that is not plain, `packRowsInSpace` packs the rows into the outline of the space and around its holes.
|
|
153
242
|
*/
|
|
154
243
|
export declare function packShelf<T>(rects: Rect<T>[], outer: Rect<T>, options?: ShelfOptions): Rect<T>;
|
|
155
244
|
/** The options of `packFree` */
|
|
@@ -259,15 +348,6 @@ interface MetricsOptions {
|
|
|
259
348
|
* ```
|
|
260
349
|
*/
|
|
261
350
|
export declare function packingMetrics(rects: readonly Rect[], options?: MetricsOptions): PackingMetrics;
|
|
262
|
-
/** This function gives the margin of an item on each side. A number is the same margin on each side. */
|
|
263
|
-
export declare function marginOf(item: Pick<Item$1, "margin">): Sides$1;
|
|
264
|
-
/**
|
|
265
|
-
* This function gives an item after a turn of 90 degrees clockwise, with the y axis down (decision 1 of
|
|
266
|
-
* `docs/PACKER.md`). The width and the height change places. The top-left corner, the id and the other fields stay.
|
|
267
|
-
* The ports, the shape and the margin turn with the item. The function does not change its argument.
|
|
268
|
-
* It is `turnBox` of the contract.
|
|
269
|
-
*/
|
|
270
|
-
export declare function turnItem(item: Item$1): Item$1;
|
|
271
351
|
/** The family of a measure. Each family has a section in `docs/MEASURES.md`. */
|
|
272
352
|
type MeasureFamily = "density" | "aspect" | "order" | "raggedness" | "overflow" | "stability" | "determinism" | "speed";
|
|
273
353
|
/** The id of a measure of the packer. The ids are those of `docs/FORMAT.md`, and `highways` uses the same ids. */
|
|
@@ -501,18 +581,19 @@ interface PushStrategyOptions {
|
|
|
501
581
|
maxShovesPerItem: number;
|
|
502
582
|
}
|
|
503
583
|
/**
|
|
504
|
-
* The strategy `rows` uses `packRows`: a guillotine row packing with a recursive gap fill.
|
|
505
|
-
*
|
|
584
|
+
* The strategy `rows` uses `packRows`: a guillotine row packing with a recursive gap fill. With obstacles, locked items or a
|
|
585
|
+
* container shape, the rows go around the holes of the free space and lose the gap fill. Turnable items, groups and item
|
|
586
|
+
* shapes throw `UnsupportedCell`.
|
|
506
587
|
*/
|
|
507
588
|
export declare const rows: Strategy<LayoutStrategyOptions>;
|
|
508
589
|
/**
|
|
509
590
|
* The strategy `skyline` uses `packSkyline`: each item goes to the lowest place where it fits. It packs around the
|
|
510
|
-
* locked items and the fixed obstacles. Turnable items, groups and shapes throw `UnsupportedCell`.
|
|
591
|
+
* locked items and the fixed obstacles, in each container shape. Turnable items, groups and item shapes throw `UnsupportedCell`.
|
|
511
592
|
*/
|
|
512
593
|
export declare const skyline: Strategy<LayoutStrategyOptions>;
|
|
513
594
|
/**
|
|
514
595
|
* The strategy `shelf` uses `packShelf`: rows filled left to right, around the locked items and the fixed obstacles.
|
|
515
|
-
* With the sort order `input`, the rows keep the rank order. Turnable items, groups and shapes throw `UnsupportedCell`.
|
|
596
|
+
* With the sort order `input`, the rows keep the rank order. Turnable items, groups and item shapes throw `UnsupportedCell`.
|
|
516
597
|
*/
|
|
517
598
|
export declare const shelf: Strategy<LayoutStrategyOptions>;
|
|
518
599
|
/**
|
|
@@ -737,5 +818,5 @@ interface Corpus {
|
|
|
737
818
|
* `RangeError` for an unknown generator, a different version or 2 inputs with the same id.
|
|
738
819
|
*/
|
|
739
820
|
export declare function corpus(name: string, specs: readonly CorpusSpec[]): Corpus;
|
|
740
|
-
export { type Cell, type ChangeMeasures, type Corpus, type CorpusCell, type CorpusEntry, type CorpusGenerator, type CorpusManifest, type CorpusSpec, type CountScale, DEFAULT_TOLERANCE, type Dimension, type DimensionValue, type Direction, EPS, type EdgeCase, type EdgeCaseParams, type FreeWidthOptions, type FreeWidthResult, type FreeWidthTry, type GeneratedInput, type GeneratorParams, type GeneratorStamp, type Item, type LayoutContainer, type LayoutEdge, type LayoutInput, type LayoutMeasures, type LayoutStrategyOptions, type Margin, type MeasureFamily, type MeasureId, type MeasureOptions, type MeasureSpec, type MetricsOptions, type Obstacle, type ObstacleLayout, type PackContext, type PackHard, type PackInput, type PackLayoutOptions, type PackOptions, type PackOutput, type PackingMetrics, type Placement, type Port, type PushOptions, type PushStrategyOptions, RECORD_EPS, type RectGridParams, type RectScatteredParams, type Region, type ShelfOptions, type Side, type Sides, type SizeDistribution, type SizeSearch, type SortOrder, type StageTrace, type Strategy, type Supports, type Tolerance, type UiParams, checkInput, turnPoint, turnPort, turnRegion };
|
|
821
|
+
export { type Cell, type ChangeMeasures, type Corpus, type CorpusCell, type CorpusEntry, type CorpusGenerator, type CorpusManifest, type CorpusSpec, type CountScale, DEFAULT_TOLERANCE, type Dimension, type DimensionValue, type Direction, EPS, type EdgeCase, type EdgeCaseParams, type FreeSpace, type FreeSpan, type FreeWidthOptions, type FreeWidthResult, type FreeWidthTry, type GeneratedInput, type GeneratorParams, type GeneratorStamp, type Item, type LayoutContainer, type LayoutEdge, type LayoutInput, type LayoutMeasures, type LayoutStrategyOptions, type Margin, type MeasureFamily, type MeasureId, type MeasureOptions, type MeasureSpec, type MetricsOptions, type Obstacle, type ObstacleLayout, type PackContext, type PackHard, type PackInput, type PackLayoutOptions, type PackOptions, type PackOutput, type PackingMetrics, type Placement, type Port, type PushOptions, type PushStrategyOptions, RECORD_EPS, type RectGridParams, type RectScatteredParams, type Region, type ShelfOptions, type Side, type Sides, type SizeDistribution, type SizeSearch, type SkylineOptions, type SortOrder, type SpaceRect, type StageTrace, type Strategy, type Supports, type Tolerance, type UiParams, checkInput, turnPoint, turnPort, turnRegion };
|
|
741
822
|
//# sourceMappingURL=index.d.ts.map
|
package/build/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":["Item","Sides","ContractMeasureSpec","Direction","PackHard","LayoutContainer","LayoutEdge","LayoutInput"],"sources":["../src/vector.ts","../src/rect.ts","../src/order.ts","../src/
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":["Item","Sides","ContractMeasureSpec","Direction","PackHard","LayoutContainer","LayoutEdge","LayoutInput"],"sources":["../src/vector.ts","../src/rect.ts","../src/order.ts","../src/contract.ts","../src/space.ts","../src/pack.ts","../src/skyline.ts","../src/shelf.ts","../src/free.ts","../src/push.ts","../src/metrics.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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"}
|