@hellkite/pipkin 0.8.2 → 0.9.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.
@@ -1,6 +1,5 @@
1
- import { Size, ImageType } from './types';
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
  }
@@ -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.slice(offset, offset + cardsPerPage)));
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: this.options.size.height,
37
- width: this.options.size.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;AAS5B,MAAM,iBAAiB,GAAS,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AAE9D,MAAM,iBAAiB,GAAS,iBAAiB,CAAC;AAElD,MAAM,uBAAuB,GAA2B;IACpD,IAAI,EAAE,iBAAiB;IACvB,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,CAAC;CACV,CAAC;AA6BF;;;;GAIG;AACH,MAAa,OAAO;IAChB,sCAAsC;IACtC,YAAqC,OAAuB;QAAvB,YAAO,GAAP,OAAO,CAAgB;IAAG,CAAC;IAEhE,MAAM,CAAC,GAAG,CAAC,OAAiC;QACxC,OAAO,IAAI,OAAO,iCACX,uBAAuB,GACvB,OAAO,EACZ,CAAC;IACP,CAAC;IAED,MAAM,CAAC,MAAwB;QAC3B,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;QAC3D,MAAM,OAAO,GAAqB,EAAE,CAAC;QACrC,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,IAAI,YAAY,EAAE,CAAC;YACnE,OAAO,CAAC,IAAI,CACR,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,CAAC,CAAC,CAC/D,CAAC;QACN,CAAC;QACD,OAAO,OAAO,CAAC;IACnB,CAAC;IAEO,UAAU,CAAC,MAAwB;;QACvC,MAAM,IAAI,GAAG,IAAI,WAAI,CAAC;YAClB,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM;YAChC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK;YAC9B,KAAK,EAAE,MAAA,IAAI,CAAC,OAAO,CAAC,OAAO,mCAAI,UAAU;SAC5C,CAAC,CAAC;QACH,MAAM,QAAQ,GAAS;YACnB,KAAK,EACD,CAAC,IAAI,CAAC,KAAK;gBACP,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;gBACvB,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;gBACxB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBACxB,IAAI,CAAC,OAAO,CAAC,IAAI;YACrB,MAAM,EACF,CAAC,IAAI,CAAC,MAAM;gBACR,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;gBACtB,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;gBACzB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBACxB,IAAI,CAAC,OAAO,CAAC,IAAI;SACxB,CAAC;QACF,KAAK,IAAI,QAAQ,GAAG,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC;YAC9D,KAAK,IAAI,QAAQ,GAAG,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC;gBAC9D,MAAM,UAAU,GAAG,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,QAAQ,CAAC;gBAC3D,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;gBACjC,IAAI,CAAC,KAAK,EAAE,CAAC;oBACT,SAAS;gBACb,CAAC;gBACD,KAAK,CAAC,UAAU,CAAC;oBACb,CAAC,EAAE,QAAQ,CAAC,KAAK;oBACjB,CAAC,EAAE,QAAQ,CAAC,MAAM;iBACrB,CAAC,CAAC;gBACH,MAAM,OAAO,GACT,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;oBACvB,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;oBAC9B,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC;gBAC9B,MAAM,OAAO,GACT,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;oBACtB,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;oBAC9B,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC;gBAC/B,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;YAC5C,CAAC;QACL,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAEO,MAAM,CAAC,SAA2B;;QACtC,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;YACvC,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;QAC5B,CAAC;aAAM,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC9C,OAAO,CACH,MAAA,CAAC,SAAS,KAAK,MAAM;gBACjB,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI;gBACvB,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,mCAAI,CAAC,CACpC,CAAC;QACN,CAAC;QACD,OAAO,CAAC,CAAC;IACb,CAAC;IAEO,UAAU,CAAC,SAA2B;;QAC1C,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;YAC3C,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;QAChC,CAAC;aAAM,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;YAClD,IACI,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO;gBAC9B,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAChC,CAAC;gBACC,QAAQ,SAAS,EAAE,CAAC;oBAChB,KAAK,KAAK,CAAC;oBACX,KAAK,QAAQ;wBACT,OAAO,MAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,mCAAI,CAAC,CAAC;oBAC1C,KAAK,OAAO,CAAC;oBACb,KAAK,MAAM;wBACP,OAAO,MAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,mCAAI,CAAC,CAAC;gBAC9C,CAAC;YACL,CAAC;iBAAM,CAAC;gBACJ,OAAO,MAAC,IAAI,CAAC,OAAO,CAAC,OAAsB,CAAC,SAAS,CAAC,mCAAI,CAAC,CAAC;YAChE,CAAC;QACL,CAAC;QACD,OAAO,CAAC,CAAC;IACb,CAAC;CACJ;AAtGD,0BAsGC"}
1
+ {"version":3,"file":"bundler.js","sourceRoot":"","sources":["../../../src/lib/bundler.ts"],"names":[],"mappings":"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"}
@@ -3,3 +3,4 @@ export * from './placeBoundingBox';
3
3
  export * from './htmlToImage';
4
4
  export * from './toPx';
5
5
  export * from './reduceBoundingBox';
6
+ export * from './imagesToPdf';
@@ -19,4 +19,5 @@ __exportStar(require("./placeBoundingBox"), exports);
19
19
  __exportStar(require("./htmlToImage"), exports);
20
20
  __exportStar(require("./toPx"), exports);
21
21
  __exportStar(require("./reduceBoundingBox"), exports);
22
+ __exportStar(require("./imagesToPdf"), exports);
22
23
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA4B;AAC5B,qDAAmC;AACnC,gDAA8B;AAC9B,yCAAuB;AACvB,sDAAoC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA4B;AAC5B,qDAAmC;AACnC,gDAA8B;AAC9B,yCAAuB;AACvB,sDAAoC;AACpC,gDAA8B"}
package/build/src/test.js CHANGED
@@ -73,7 +73,6 @@ const promises_1 = require("fs/promises");
73
73
  },
74
74
  replacementFn: replacement => replacement.replace(['Fireball'], { path: 'fireball.png' }),
75
75
  })
76
- .debug()
77
76
  .hbox(() => __awaiter(void 0, void 0, void 0, function* () {
78
77
  return [
79
78
  {
@@ -213,7 +212,10 @@ const promises_1 = require("fs/promises");
213
212
  },
214
213
  });
215
214
  yield Promise.all(results.map((result, index) => result.write(`assets/test-${index + 1}.png`)));
216
- const bundledImages = lib_1.Bundler.new().bundle(results);
215
+ const bundledImages = lib_1.Bundler.new({
216
+ gap: 8,
217
+ padding: 4,
218
+ }).bundle(results);
217
219
  yield Promise.all(bundledImages.map((r, index) => r.write(`assets/test-bundled-${index + 1}.png`)));
218
220
  const pdf = yield (0, imagesToPdf_1.imagesToPdf)(bundledImages);
219
221
  yield (0, promises_1.writeFile)('assets/result.pdf', pdf);
@@ -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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hellkite/pipkin",
3
- "version": "0.8.2",
3
+ "version": "0.9.1",
4
4
  "description": "Library for board game card generation",
5
5
  "main": "build/src/index.js",
6
6
  "types": "build/src/index.d.ts",
@@ -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>): 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: this.options.size.height,
77
- width: this.options.size.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;
@@ -3,3 +3,4 @@ export * from './placeBoundingBox';
3
3
  export * from './htmlToImage';
4
4
  export * from './toPx';
5
5
  export * from './reduceBoundingBox';
6
+ export * from './imagesToPdf';