@hellkite/pipkin 0.8.2 → 0.9.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/build/src/lib/bundler.d.ts +2 -2
- package/build/src/lib/bundler.js +32 -22
- package/build/src/lib/bundler.js.map +1 -1
- package/build/src/test.js +4 -1
- package/build/src/test.js.map +1 -1
- package/package.json +1 -1
- package/src/lib/bundler.ts +40 -28
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ImageType } from './types';
|
|
2
2
|
type RequiredBundlerOptions = {
|
|
3
|
-
size: Size;
|
|
4
3
|
rows: number;
|
|
5
4
|
cols: number;
|
|
6
5
|
};
|
|
@@ -41,6 +40,7 @@ export declare class Bundler {
|
|
|
41
40
|
static new(options?: Partial<BundlerOptions>): Bundler;
|
|
42
41
|
bundle(images: Array<ImageType>): Array<ImageType>;
|
|
43
42
|
private renderPage;
|
|
43
|
+
private computeCardAndPageSize;
|
|
44
44
|
private getGap;
|
|
45
45
|
private getPadding;
|
|
46
46
|
}
|
package/build/src/lib/bundler.js
CHANGED
|
@@ -2,10 +2,9 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Bundler = void 0;
|
|
4
4
|
const jimp_1 = require("jimp");
|
|
5
|
+
// TODO: move
|
|
5
6
|
const PAGE_SIZE_300_PPI = { height: 2480, width: 3508 };
|
|
6
|
-
const DEFAULT_PAGE_SIZE = PAGE_SIZE_300_PPI;
|
|
7
7
|
const DEFAULT_BUNDLER_OPTIONS = {
|
|
8
|
-
size: DEFAULT_PAGE_SIZE,
|
|
9
8
|
rows: 2,
|
|
10
9
|
cols: 4,
|
|
11
10
|
};
|
|
@@ -26,29 +25,18 @@ class Bundler {
|
|
|
26
25
|
const cardsPerPage = this.options.cols * this.options.rows;
|
|
27
26
|
const results = [];
|
|
28
27
|
for (let offset = 0; offset <= images.length; offset += cardsPerPage) {
|
|
29
|
-
results.push(this.renderPage(images
|
|
28
|
+
results.push(this.renderPage(images, offset));
|
|
30
29
|
}
|
|
31
30
|
return results;
|
|
32
31
|
}
|
|
33
|
-
renderPage(images) {
|
|
32
|
+
renderPage(images, offset) {
|
|
34
33
|
var _a;
|
|
34
|
+
const { pageSize, cardSize } = this.computeCardAndPageSize(images, offset);
|
|
35
35
|
const page = new jimp_1.Jimp({
|
|
36
|
-
height:
|
|
37
|
-
width:
|
|
36
|
+
height: pageSize.height,
|
|
37
|
+
width: pageSize.width,
|
|
38
38
|
color: (_a = this.options.bgColor) !== null && _a !== void 0 ? _a : 0xffffffff,
|
|
39
39
|
});
|
|
40
|
-
const cardSize = {
|
|
41
|
-
width: (page.width -
|
|
42
|
-
this.getPadding('left') -
|
|
43
|
-
this.getPadding('right') -
|
|
44
|
-
this.getGap('cols')) /
|
|
45
|
-
this.options.cols,
|
|
46
|
-
height: (page.height -
|
|
47
|
-
this.getPadding('top') -
|
|
48
|
-
this.getPadding('bottom') -
|
|
49
|
-
this.getGap('rows')) /
|
|
50
|
-
this.options.rows,
|
|
51
|
-
};
|
|
52
40
|
for (let rowIndex = 0; rowIndex < this.options.rows; rowIndex++) {
|
|
53
41
|
for (let colIndex = 0; colIndex < this.options.cols; colIndex++) {
|
|
54
42
|
const imageIndex = rowIndex * this.options.cols + colIndex;
|
|
@@ -56,10 +44,6 @@ class Bundler {
|
|
|
56
44
|
if (!image) {
|
|
57
45
|
continue;
|
|
58
46
|
}
|
|
59
|
-
image.scaleToFit({
|
|
60
|
-
w: cardSize.width,
|
|
61
|
-
h: cardSize.height,
|
|
62
|
-
});
|
|
63
47
|
const offsetX = this.getPadding('left') +
|
|
64
48
|
colIndex * this.getGap('cols') +
|
|
65
49
|
colIndex * cardSize.width;
|
|
@@ -71,6 +55,32 @@ class Bundler {
|
|
|
71
55
|
}
|
|
72
56
|
return page;
|
|
73
57
|
}
|
|
58
|
+
computeCardAndPageSize(images, offset) {
|
|
59
|
+
const pageSize = { height: 0, width: 0 };
|
|
60
|
+
const cardSize = { height: 0, width: 0 };
|
|
61
|
+
for (let rowIndex = 0; rowIndex < this.options.rows; rowIndex++) {
|
|
62
|
+
for (let colIndex = 0; colIndex < this.options.cols; colIndex++) {
|
|
63
|
+
const imageIndex = offset + rowIndex * this.options.cols + colIndex;
|
|
64
|
+
const image = images[imageIndex];
|
|
65
|
+
if (!image) {
|
|
66
|
+
continue;
|
|
67
|
+
}
|
|
68
|
+
cardSize.height = Math.max(cardSize.height, image.height);
|
|
69
|
+
cardSize.width = Math.max(cardSize.width, image.width);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
pageSize.height +=
|
|
73
|
+
this.getPadding('top') +
|
|
74
|
+
cardSize.height * this.options.rows +
|
|
75
|
+
this.getGap('rows') * (this.options.rows - 1) +
|
|
76
|
+
this.getPadding('bottom');
|
|
77
|
+
pageSize.width +=
|
|
78
|
+
this.getPadding('left') +
|
|
79
|
+
cardSize.width * this.options.cols +
|
|
80
|
+
this.getGap('cols') * (this.options.cols - 1) +
|
|
81
|
+
this.getPadding('right');
|
|
82
|
+
return { pageSize, cardSize };
|
|
83
|
+
}
|
|
74
84
|
getGap(direction) {
|
|
75
85
|
var _a;
|
|
76
86
|
if (typeof this.options.gap === 'number') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bundler.js","sourceRoot":"","sources":["../../../src/lib/bundler.ts"],"names":[],"mappings":";;;AAAA,+BAA4B;
|
|
1
|
+
{"version":3,"file":"bundler.js","sourceRoot":"","sources":["../../../src/lib/bundler.ts"],"names":[],"mappings":"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"}
|
package/build/src/test.js
CHANGED
|
@@ -213,7 +213,10 @@ const promises_1 = require("fs/promises");
|
|
|
213
213
|
},
|
|
214
214
|
});
|
|
215
215
|
yield Promise.all(results.map((result, index) => result.write(`assets/test-${index + 1}.png`)));
|
|
216
|
-
const bundledImages = lib_1.Bundler.new(
|
|
216
|
+
const bundledImages = lib_1.Bundler.new({
|
|
217
|
+
gap: 8,
|
|
218
|
+
padding: 4
|
|
219
|
+
}).bundle(results);
|
|
217
220
|
yield Promise.all(bundledImages.map((r, index) => r.write(`assets/test-bundled-${index + 1}.png`)));
|
|
218
221
|
const pdf = yield (0, imagesToPdf_1.imagesToPdf)(bundledImages);
|
|
219
222
|
yield (0, promises_1.writeFile)('assets/result.pdf', pdf);
|
package/build/src/test.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test.js","sourceRoot":"","sources":["../../src/test.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"test.js","sourceRoot":"","sources":["../../src/test.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/lib/bundler.ts
CHANGED
|
@@ -2,17 +2,14 @@ import { Jimp } from 'jimp';
|
|
|
2
2
|
import { Size, ImageType } from './types';
|
|
3
3
|
|
|
4
4
|
type RequiredBundlerOptions = {
|
|
5
|
-
size: Size;
|
|
6
5
|
rows: number;
|
|
7
6
|
cols: number;
|
|
8
7
|
};
|
|
9
8
|
|
|
9
|
+
// TODO: move
|
|
10
10
|
const PAGE_SIZE_300_PPI: Size = { height: 2480, width: 3508 };
|
|
11
11
|
|
|
12
|
-
const DEFAULT_PAGE_SIZE: Size = PAGE_SIZE_300_PPI;
|
|
13
|
-
|
|
14
12
|
const DEFAULT_BUNDLER_OPTIONS: RequiredBundlerOptions = {
|
|
15
|
-
size: DEFAULT_PAGE_SIZE,
|
|
16
13
|
rows: 2,
|
|
17
14
|
cols: 4,
|
|
18
15
|
};
|
|
@@ -64,33 +61,21 @@ export class Bundler {
|
|
|
64
61
|
const cardsPerPage = this.options.cols * this.options.rows;
|
|
65
62
|
const results: Array<ImageType> = [];
|
|
66
63
|
for (let offset = 0; offset <= images.length; offset += cardsPerPage) {
|
|
67
|
-
results.push(
|
|
68
|
-
this.renderPage(images.slice(offset, offset + cardsPerPage)),
|
|
69
|
-
);
|
|
64
|
+
results.push(this.renderPage(images, offset));
|
|
70
65
|
}
|
|
71
66
|
return results;
|
|
72
67
|
}
|
|
73
68
|
|
|
74
|
-
private renderPage(images: Array<ImageType
|
|
69
|
+
private renderPage(images: Array<ImageType>, offset: number): ImageType {
|
|
70
|
+
const { pageSize, cardSize } = this.computeCardAndPageSize(
|
|
71
|
+
images,
|
|
72
|
+
offset,
|
|
73
|
+
);
|
|
75
74
|
const page = new Jimp({
|
|
76
|
-
height:
|
|
77
|
-
width:
|
|
75
|
+
height: pageSize.height,
|
|
76
|
+
width: pageSize.width,
|
|
78
77
|
color: this.options.bgColor ?? 0xffffffff,
|
|
79
78
|
});
|
|
80
|
-
const cardSize: Size = {
|
|
81
|
-
width:
|
|
82
|
-
(page.width -
|
|
83
|
-
this.getPadding('left') -
|
|
84
|
-
this.getPadding('right') -
|
|
85
|
-
this.getGap('cols')) /
|
|
86
|
-
this.options.cols,
|
|
87
|
-
height:
|
|
88
|
-
(page.height -
|
|
89
|
-
this.getPadding('top') -
|
|
90
|
-
this.getPadding('bottom') -
|
|
91
|
-
this.getGap('rows')) /
|
|
92
|
-
this.options.rows,
|
|
93
|
-
};
|
|
94
79
|
for (let rowIndex = 0; rowIndex < this.options.rows; rowIndex++) {
|
|
95
80
|
for (let colIndex = 0; colIndex < this.options.cols; colIndex++) {
|
|
96
81
|
const imageIndex = rowIndex * this.options.cols + colIndex;
|
|
@@ -98,10 +83,6 @@ export class Bundler {
|
|
|
98
83
|
if (!image) {
|
|
99
84
|
continue;
|
|
100
85
|
}
|
|
101
|
-
image.scaleToFit({
|
|
102
|
-
w: cardSize.width,
|
|
103
|
-
h: cardSize.height,
|
|
104
|
-
});
|
|
105
86
|
const offsetX =
|
|
106
87
|
this.getPadding('left') +
|
|
107
88
|
colIndex * this.getGap('cols') +
|
|
@@ -116,6 +97,37 @@ export class Bundler {
|
|
|
116
97
|
return page;
|
|
117
98
|
}
|
|
118
99
|
|
|
100
|
+
private computeCardAndPageSize(
|
|
101
|
+
images: Array<ImageType>,
|
|
102
|
+
offset: number,
|
|
103
|
+
): { cardSize: Size; pageSize: Size } {
|
|
104
|
+
const pageSize: Size = { height: 0, width: 0 };
|
|
105
|
+
const cardSize: Size = { height: 0, width: 0 };
|
|
106
|
+
for (let rowIndex = 0; rowIndex < this.options.rows; rowIndex++) {
|
|
107
|
+
for (let colIndex = 0; colIndex < this.options.cols; colIndex++) {
|
|
108
|
+
const imageIndex =
|
|
109
|
+
offset + rowIndex * this.options.cols + colIndex;
|
|
110
|
+
const image = images[imageIndex];
|
|
111
|
+
if (!image) {
|
|
112
|
+
continue;
|
|
113
|
+
}
|
|
114
|
+
cardSize.height = Math.max(cardSize.height, image.height);
|
|
115
|
+
cardSize.width = Math.max(cardSize.width, image.width);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
pageSize.height +=
|
|
119
|
+
this.getPadding('top') +
|
|
120
|
+
cardSize.height * this.options.rows +
|
|
121
|
+
this.getGap('rows') * (this.options.rows - 1) +
|
|
122
|
+
this.getPadding('bottom');
|
|
123
|
+
pageSize.width +=
|
|
124
|
+
this.getPadding('left') +
|
|
125
|
+
cardSize.width * this.options.cols +
|
|
126
|
+
this.getGap('cols') * (this.options.cols - 1) +
|
|
127
|
+
this.getPadding('right');
|
|
128
|
+
return { pageSize, cardSize };
|
|
129
|
+
}
|
|
130
|
+
|
|
119
131
|
private getGap(direction: keyof Direction2): number {
|
|
120
132
|
if (typeof this.options.gap === 'number') {
|
|
121
133
|
return this.options.gap;
|