ttpg-darrell 1.1.36 → 1.1.37

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.
Files changed (39) hide show
  1. package/build/cjs/lib/ui/window/player-window.js +1 -1
  2. package/build/esm/lib/ui/window/player-window.js +1 -1
  3. package/package.json +2 -2
  4. package/build/cjs/lib/color-lib/color-mapping-rotating.d.ts +0 -1
  5. package/build/cjs/lib/color-lib/color-mapping-rotating.js +0 -72
  6. package/build/cjs/lib/color-lib/color-mapping-rotating.js.map +0 -1
  7. package/build/cjs/lib/parse/parse-color/parse-color.d.ts +0 -7
  8. package/build/cjs/lib/parse/parse-color/parse-color.js +0 -51
  9. package/build/cjs/lib/parse/parse-color/parse-color.js.map +0 -1
  10. package/build/cjs/lib-ext/color-mapping/color-extract.d.ts +0 -1
  11. package/build/cjs/lib-ext/color-mapping/color-extract.js +0 -127
  12. package/build/cjs/lib-ext/color-mapping/color-extract.js.map +0 -1
  13. package/build/cjs/lib-ext/color-mapping/color-mapping-linear-centered.d.ts +0 -1
  14. package/build/cjs/lib-ext/color-mapping/color-mapping-linear-centered.js +0 -230
  15. package/build/cjs/lib-ext/color-mapping/color-mapping-linear-centered.js.map +0 -1
  16. package/build/cjs/lib-ext/color-mapping/color-mapping-linear.d.ts +0 -1
  17. package/build/cjs/lib-ext/color-mapping/color-mapping-linear.js +0 -217
  18. package/build/cjs/lib-ext/color-mapping/color-mapping-linear.js.map +0 -1
  19. package/build/cjs/lib-ext/color-mapping/color-mapping-ridge.d.ts +0 -1
  20. package/build/cjs/lib-ext/color-mapping/color-mapping-ridge.js +0 -216
  21. package/build/cjs/lib-ext/color-mapping/color-mapping-ridge.js.map +0 -1
  22. package/build/cjs/lib-ext/color-mapping/color-mapping.d.ts +0 -15
  23. package/build/cjs/lib-ext/color-mapping/color-mapping.data.d.ts +0 -7
  24. package/build/cjs/lib-ext/color-mapping/color-mapping.data.js +0 -790
  25. package/build/cjs/lib-ext/color-mapping/color-mapping.data.js.map +0 -1
  26. package/build/cjs/lib-ext/color-mapping/color-mapping.js +0 -54
  27. package/build/cjs/lib-ext/color-mapping/color-mapping.js.map +0 -1
  28. package/build/cjs/lib-ext/color-mapping/raw-linear.d.ts +0 -1
  29. package/build/cjs/lib-ext/color-mapping/raw-linear.js +0 -167
  30. package/build/cjs/lib-ext/color-mapping/raw-linear.js.map +0 -1
  31. package/build/cjs/lib-ext/image/cell/cell-parser/cell-parser.test.d.ts +0 -1
  32. package/build/cjs/lib-ext/image/cell/cell-parser/cell-parser.test.js +0 -212
  33. package/build/cjs/lib-ext/image/cell/cell-parser/cell-parser.test.js.map +0 -1
  34. package/build/esm/lib/parse/parse-color/parse-color.d.ts +0 -7
  35. package/build/esm/lib/parse/parse-color/parse-color.js +0 -44
  36. package/build/esm/lib/parse/parse-color/parse-color.js.map +0 -1
  37. package/build/esm/lib-ext/image/cell/cell-parser/cell-parser.test.d.ts +0 -1
  38. package/build/esm/lib-ext/image/cell/cell-parser/cell-parser.test.js +0 -210
  39. package/build/esm/lib-ext/image/cell/cell-parser/cell-parser.test.js.map +0 -1
@@ -196,7 +196,7 @@ class PlayerWindow {
196
196
  if (!this._windowWidget) {
197
197
  throw new Error("Window widget not created");
198
198
  }
199
- const spacer = new api_1.Border().setColor([0, 0, 0, 0]);
199
+ const spacer = new api_1.Border().setColor([0, 0, 0, 1]);
200
200
  const scale = this._scale *
201
201
  (this._target === "screen" ? 1 : PlayerWindow.WORLD_SCALE);
202
202
  const child = this._windowWidget.create({
@@ -193,7 +193,7 @@ export class PlayerWindow {
193
193
  if (!this._windowWidget) {
194
194
  throw new Error("Window widget not created");
195
195
  }
196
- const spacer = new Border().setColor([0, 0, 0, 0]);
196
+ const spacer = new Border().setColor([0, 0, 0, 1]);
197
197
  const scale = this._scale *
198
198
  (this._target === "screen" ? 1 : PlayerWindow.WORLD_SCALE);
199
199
  const child = this._windowWidget.create({
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ttpg-darrell",
3
- "version": "1.1.36",
3
+ "version": "1.1.37",
4
4
  "description": "TTPG TypeScript library",
5
5
  "main": "./build/cjs/index.js",
6
6
  "module": "./build/esm/index.js",
@@ -43,7 +43,7 @@
43
43
  "typescript": "^5.3.2"
44
44
  },
45
45
  "dependencies": {
46
- "@tabletop-playground/api": "^0.39.0",
46
+ "@tabletop-playground/api": "0.41.0",
47
47
  "fastest-levenshtein": "^1.0.16",
48
48
  "js-base64": "^3.7.7",
49
49
  "zod": "^3.22.4"
@@ -1 +0,0 @@
1
- export {};
@@ -1,72 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- /**
4
- * Create game objects using given source colors, screenshot then use the
5
- * lib-ext extract tool to read color values.
6
- */
7
- const api_1 = require("@tabletop-playground/api");
8
- const shuffle_1 = require("../shuffle/shuffle");
9
- // Clear the world before (re)creating objects.
10
- for (const obj of api_1.world.getAllObjects()) {
11
- if (obj !== api_1.refObject) {
12
- obj.destroy();
13
- }
14
- }
15
- const templateId = "83FDE12C4E6D912B16B85E9A00422F43"; // cube
16
- const cube = api_1.world.createObjectFromTemplate(
17
- templateId,
18
- new api_1.Vector(0, 0, api_1.world.getTableHeight() + 4)
19
- );
20
- if (!cube) {
21
- throw new Error("Failed to create object");
22
- }
23
- cube.setRoughness(1);
24
- cube.setMetallic(0);
25
- cube.snapToGround();
26
- const border = new api_1.Border();
27
- const ui = new api_1.UIElement();
28
- ui.position = new api_1.Vector(-4, 0, 2);
29
- ui.widget = border.setChild(
30
- new api_1.LayoutBox().setOverrideWidth(25).setOverrideHeight(25)
31
- );
32
- cube.addUI(ui);
33
- // Look straight down at result.
34
- const player = api_1.world.getAllPlayers()[0];
35
- if (player) {
36
- console.log(player.getPosition());
37
- console.log(player.getRotation());
38
- const z = api_1.world.getTableHeight() + 40;
39
- player.setPositionAndRotation([-10, -25, z], [-90, 0, 0]);
40
- }
41
- const n = 16;
42
- let colors = [];
43
- for (let r = 0; r < n; r++) {
44
- for (let g = 0; g < n; g++) {
45
- for (let b = 0; b < n; b++) {
46
- const color = new api_1.Color(
47
- r / (n - 1),
48
- g / (n - 1),
49
- b / (n - 1)
50
- );
51
- colors.push(color);
52
- }
53
- }
54
- }
55
- colors = new shuffle_1.Shuffle().shuffle(colors);
56
- console.log("|colors|:", colors.length);
57
- function setToNextColor() {
58
- const color = colors.shift();
59
- if (color) {
60
- console.log(color.toHex(), colors.length);
61
- api_1.world.setSlotColor(0, color);
62
- cube === null || cube === void 0 ? void 0 : cube.setPrimaryColor(color);
63
- border.setColor(color);
64
- }
65
- return color !== undefined;
66
- }
67
- const handle = setInterval(() => {
68
- if (!setToNextColor()) {
69
- clearInterval(handle);
70
- }
71
- }, 3000);
72
- //# sourceMappingURL=color-mapping-rotating.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"color-mapping-rotating.js","sourceRoot":"","sources":["../../../../src/lib/color-lib/color-mapping-rotating.ts"],"names":[],"mappings":"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"}
@@ -1,7 +0,0 @@
1
- import { Color } from "@tabletop-playground/api";
2
- export declare const HEX_COLOR_REGEX: RegExp;
3
- export declare class ParseColor {
4
- private readonly _hexColorRegex;
5
- parseColor(hexColor: string): Color | undefined;
6
- parseColorOrThrow(hexColor: string): Color;
7
- }
@@ -1,51 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ParseColor = exports.HEX_COLOR_REGEX = void 0;
4
- const api_1 = require("@tabletop-playground/api");
5
- exports.HEX_COLOR_REGEX = /^#([0-9a-f]{3}|[0-9a-f]{6}|[0-9a-f]{8})$/i;
6
- class ParseColor {
7
- constructor() {
8
- this._hexColorRegex = new RegExp(exports.HEX_COLOR_REGEX);
9
- }
10
- parseColor(hexColor) {
11
- var _a;
12
- const m = hexColor.match(this._hexColorRegex);
13
- const hexStr =
14
- (_a = m === null || m === void 0 ? void 0 : m[1]) !== null &&
15
- _a !== void 0
16
- ? _a
17
- : "";
18
- if (!m) {
19
- return undefined;
20
- }
21
- if (hexStr.length !== 3 && hexStr.length !== 6 && hexStr.length !== 8) {
22
- return undefined;
23
- }
24
- let r = 0;
25
- let g = 0;
26
- let b = 0;
27
- let a = 1;
28
- if (hexStr.length === 3) {
29
- r = Number.parseInt(hexStr.substring(0, 1), 16) / 15;
30
- g = Number.parseInt(hexStr.substring(1, 2), 16) / 15;
31
- b = Number.parseInt(hexStr.substring(2, 3), 16) / 15;
32
- } else {
33
- r = Number.parseInt(hexStr.substring(0, 2), 16) / 255;
34
- g = Number.parseInt(hexStr.substring(2, 4), 16) / 255;
35
- b = Number.parseInt(hexStr.substring(4, 6), 16) / 255;
36
- }
37
- if (hexStr.length === 8) {
38
- a = Number.parseInt(hexStr.substring(6, 8), 16) / 255;
39
- }
40
- return new api_1.Color(r, g, b, a);
41
- }
42
- parseColorOrThrow(hexColor) {
43
- const color = this.parseColor(hexColor);
44
- if (!color) {
45
- throw new Error(`bad hexColor "${hexColor}"`);
46
- }
47
- return color;
48
- }
49
- }
50
- exports.ParseColor = ParseColor;
51
- //# sourceMappingURL=parse-color.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"parse-color.js","sourceRoot":"","sources":["../../../../../src/lib/parse/parse-color/parse-color.ts"],"names":[],"mappings":";;;AAAA,kDAAiD;AAEpC,QAAA,eAAe,GAAG,2CAA2C,CAAC;AAE3E,MAAa,UAAU;IAAvB;QACqB,mBAAc,GAAW,IAAI,MAAM,CAAC,uBAAe,CAAC,CAAC;IAsC1E,CAAC;IApCG,UAAU,CAAC,QAAgB;;QACvB,MAAM,CAAC,GAA4B,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACvE,MAAM,MAAM,GAAW,MAAA,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAG,CAAC,CAAC,mCAAI,EAAE,CAAC;QACpC,IAAI,CAAC,CAAC,EAAE,CAAC;YACL,OAAO,SAAS,CAAC;QACrB,CAAC;QACD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpE,OAAO,SAAS,CAAC;QACrB,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC;YACrD,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC;YACrD,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC;QACzD,CAAC;aAAM,CAAC;YACJ,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC;YACtD,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC;YACtD,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC;QAC1D,CAAC;QACD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC;QAC1D,CAAC;QACD,OAAO,IAAI,WAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACjC,CAAC;IAED,iBAAiB,CAAC,QAAgB;QAC9B,MAAM,KAAK,GAAsB,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAC3D,IAAI,CAAC,KAAK,EAAE,CAAC;YACT,MAAM,IAAI,KAAK,CAAC,iBAAiB,QAAQ,GAAG,CAAC,CAAC;QAClD,CAAC;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;CACJ;AAvCD,gCAuCC"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,127 +0,0 @@
1
- "use strict";
2
- var __awaiter =
3
- (this && this.__awaiter) ||
4
- function (thisArg, _arguments, P, generator) {
5
- function adopt(value) {
6
- return value instanceof P
7
- ? value
8
- : new P(function (resolve) {
9
- resolve(value);
10
- });
11
- }
12
- return new (P || (P = Promise))(function (resolve, reject) {
13
- function fulfilled(value) {
14
- try {
15
- step(generator.next(value));
16
- } catch (e) {
17
- reject(e);
18
- }
19
- }
20
- function rejected(value) {
21
- try {
22
- step(generator["throw"](value));
23
- } catch (e) {
24
- reject(e);
25
- }
26
- }
27
- function step(result) {
28
- result.done
29
- ? resolve(result.value)
30
- : adopt(result.value).then(fulfilled, rejected);
31
- }
32
- step(
33
- (generator = generator.apply(thisArg, _arguments || [])).next()
34
- );
35
- });
36
- };
37
- var __importDefault =
38
- (this && this.__importDefault) ||
39
- function (mod) {
40
- return mod && mod.__esModule ? mod : { default: mod };
41
- };
42
- Object.defineProperty(exports, "__esModule", { value: true });
43
- /**
44
- * Given a screenshot and start/end coordinates extract the color values.
45
- */
46
- const fs_1 = __importDefault(require("fs"));
47
- const sharp_1 = __importDefault(require("sharp"));
48
- function extractColors(filename, startX, startY, endX, endY, n) {
49
- return __awaiter(this, void 0, void 0, function* () {
50
- const result = [];
51
- const image = (0, sharp_1.default)(filename);
52
- const metadata = yield image.metadata();
53
- const w = metadata.width;
54
- const h = metadata.height;
55
- if (!w || !h) {
56
- throw new Error("bad metadata");
57
- }
58
- const raw = yield image.raw().toBuffer();
59
- const pixelArray = new Uint8ClampedArray(raw); // [r, g, b, a] repeated
60
- if (pixelArray.length !== w * h * 4) {
61
- throw new Error("bad pixel array");
62
- }
63
- const getPx = (x, y) => {
64
- const i = (y * w + x) * 4;
65
- const pixel = pixelArray.slice(i, i + 4);
66
- const s = 10000;
67
- const r = Math.floor((pixel[0] * s) / 255) / s;
68
- const g = Math.floor((pixel[1] * s) / 255) / s;
69
- const b = Math.floor((pixel[2] * s) / 255) / s;
70
- return [r, g, b];
71
- };
72
- const dx = (endX - startX) / (n - 1);
73
- const dy = (endY - startY) / (n - 1);
74
- for (let i = 0; i < n; i++) {
75
- const x = Math.round(startX + i * dx);
76
- const y = Math.round(startY + i * dy);
77
- const rgb = getPx(x, y);
78
- result.push(rgb);
79
- }
80
- return result;
81
- });
82
- }
83
- function processScreenshot() {
84
- return __awaiter(this, void 0, void 0, function* () {
85
- const filename =
86
- "/Users/darrell/Desktop/Screenshot 2024-08-16 at 10.34.21 AM.png";
87
- if (!fs_1.default.existsSync(filename)) {
88
- throw new Error(`file not found "${filename}"`);
89
- }
90
- // Plastic.
91
- {
92
- const startX = 50;
93
- const startY = 44;
94
- const endX = 4904;
95
- const endY = 43;
96
- const n = 40;
97
- const colors = yield extractColors(
98
- filename,
99
- startX,
100
- startY,
101
- endX,
102
- endY,
103
- n
104
- );
105
- console.log(colors);
106
- }
107
- // Widget.
108
- {
109
- const startX = 55;
110
- const startY = 107;
111
- const endX = 4898;
112
- const endY = 107;
113
- const n = 40;
114
- const colors = yield extractColors(
115
- filename,
116
- startX,
117
- startY,
118
- endX,
119
- endY,
120
- n
121
- );
122
- console.log(colors);
123
- }
124
- });
125
- }
126
- processScreenshot();
127
- //# sourceMappingURL=color-extract.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"color-extract.js","sourceRoot":"","sources":["../../../../src/lib-ext/color-mapping/color-extract.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA;;GAEG;AACH,4CAAoB;AACpB,kDAAwC;AAIxC,SAAe,aAAa,CACxB,QAAgB,EAChB,MAAc,EACd,MAAc,EACd,IAAY,EACZ,IAAY,EACZ,CAAS;;QAET,MAAM,MAAM,GAAe,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAG,IAAA,eAAK,EAAC,QAAQ,CAAC,CAAC;QAC9B,MAAM,QAAQ,GAAa,MAAM,KAAK,CAAC,QAAQ,EAAE,CAAC;QAClD,MAAM,CAAC,GAAuB,QAAQ,CAAC,KAAK,CAAC;QAC7C,MAAM,CAAC,GAAuB,QAAQ,CAAC,MAAM,CAAC;QAC9C,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;QACpC,CAAC;QAED,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;QACzC,MAAM,UAAU,GAAsB,IAAI,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,wBAAwB;QAE1F,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACvC,CAAC;QAED,MAAM,KAAK,GAAG,CAAC,CAAS,EAAE,CAAS,EAAO,EAAE;YACxC,MAAM,CAAC,GAAW,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;YAClC,MAAM,KAAK,GAAsB,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YAC5D,MAAM,CAAC,GAAW,KAAK,CAAC;YACxB,MAAM,CAAC,GAAW,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAE,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;YACxD,MAAM,CAAC,GAAW,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAE,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;YACxD,MAAM,CAAC,GAAW,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAE,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;YACxD,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACrB,CAAC,CAAC;QAEF,MAAM,EAAE,GAAG,CAAC,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACrC,MAAM,EAAE,GAAG,CAAC,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACrC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YACzB,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;YACtC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;YACtC,MAAM,GAAG,GAAQ,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC7B,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACrB,CAAC;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;CAAA;AAED,SAAe,iBAAiB;;QAC5B,MAAM,QAAQ,GACV,iEAAiE,CAAC;QACtE,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,mBAAmB,QAAQ,GAAG,CAAC,CAAC;QACpD,CAAC;QAED,WAAW;QACX,CAAC;YACG,MAAM,MAAM,GAAW,EAAE,CAAC;YAC1B,MAAM,MAAM,GAAW,EAAE,CAAC;YAC1B,MAAM,IAAI,GAAW,IAAI,CAAC;YAC1B,MAAM,IAAI,GAAW,EAAE,CAAC;YACxB,MAAM,CAAC,GAAW,EAAE,CAAC;YACrB,MAAM,MAAM,GAAe,MAAM,aAAa,CAC1C,QAAQ,EACR,MAAM,EACN,MAAM,EACN,IAAI,EACJ,IAAI,EACJ,CAAC,CACJ,CAAC;YAEF,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,CAAC;QAED,UAAU;QACV,CAAC;YACG,MAAM,MAAM,GAAW,EAAE,CAAC;YAC1B,MAAM,MAAM,GAAW,GAAG,CAAC;YAC3B,MAAM,IAAI,GAAW,IAAI,CAAC;YAC1B,MAAM,IAAI,GAAW,GAAG,CAAC;YACzB,MAAM,CAAC,GAAW,EAAE,CAAC;YACrB,MAAM,MAAM,GAAe,MAAM,aAAa,CAC1C,QAAQ,EACR,MAAM,EACN,MAAM,EACN,IAAI,EACJ,IAAI,EACJ,CAAC,CACJ,CAAC;YAEF,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,CAAC;IACL,CAAC;CAAA;AAED,iBAAiB,EAAE,CAAC"}
@@ -1,230 +0,0 @@
1
- "use strict";
2
- var __createBinding =
3
- (this && this.__createBinding) ||
4
- (Object.create
5
- ? function (o, m, k, k2) {
6
- if (k2 === undefined) k2 = k;
7
- var desc = Object.getOwnPropertyDescriptor(m, k);
8
- if (
9
- !desc ||
10
- ("get" in desc
11
- ? !m.__esModule
12
- : desc.writable || desc.configurable)
13
- ) {
14
- desc = {
15
- enumerable: true,
16
- get: function () {
17
- return m[k];
18
- },
19
- };
20
- }
21
- Object.defineProperty(o, k2, desc);
22
- }
23
- : function (o, m, k, k2) {
24
- if (k2 === undefined) k2 = k;
25
- o[k2] = m[k];
26
- });
27
- var __setModuleDefault =
28
- (this && this.__setModuleDefault) ||
29
- (Object.create
30
- ? function (o, v) {
31
- Object.defineProperty(o, "default", {
32
- enumerable: true,
33
- value: v,
34
- });
35
- }
36
- : function (o, v) {
37
- o["default"] = v;
38
- });
39
- var __importStar =
40
- (this && this.__importStar) ||
41
- function (mod) {
42
- if (mod && mod.__esModule) return mod;
43
- var result = {};
44
- if (mod != null)
45
- for (var k in mod)
46
- if (
47
- k !== "default" &&
48
- Object.prototype.hasOwnProperty.call(mod, k)
49
- )
50
- __createBinding(result, mod, k);
51
- __setModuleDefault(result, mod);
52
- return result;
53
- };
54
- var __awaiter =
55
- (this && this.__awaiter) ||
56
- function (thisArg, _arguments, P, generator) {
57
- function adopt(value) {
58
- return value instanceof P
59
- ? value
60
- : new P(function (resolve) {
61
- resolve(value);
62
- });
63
- }
64
- return new (P || (P = Promise))(function (resolve, reject) {
65
- function fulfilled(value) {
66
- try {
67
- step(generator.next(value));
68
- } catch (e) {
69
- reject(e);
70
- }
71
- }
72
- function rejected(value) {
73
- try {
74
- step(generator["throw"](value));
75
- } catch (e) {
76
- reject(e);
77
- }
78
- }
79
- function step(result) {
80
- result.done
81
- ? resolve(result.value)
82
- : adopt(result.value).then(fulfilled, rejected);
83
- }
84
- step(
85
- (generator = generator.apply(thisArg, _arguments || [])).next()
86
- );
87
- });
88
- };
89
- Object.defineProperty(exports, "__esModule", { value: true });
90
- const color_mapping_data_1 = require("./color-mapping.data");
91
- const scikitjs_1 = require("scikitjs");
92
- const tensorflow = __importStar(require("@tensorflow/tfjs"));
93
- (0, scikitjs_1.setBackend)(tensorflow);
94
- function centerRGBs(colors) {
95
- colors.forEach((rgb) => {
96
- rgb[0] = rgb[0] - 0.5;
97
- rgb[1] = rgb[1] - 0.5;
98
- rgb[2] = rgb[2] - 0.5;
99
- });
100
- }
101
- centerRGBs(color_mapping_data_1.PLASTIC_COLORS);
102
- centerRGBs(color_mapping_data_1.WIDGET_COLORS);
103
- centerRGBs(color_mapping_data_1.RAW_COLORS);
104
- centerRGBs(color_mapping_data_1.PLASTIC_COLORS_SPECTRUM);
105
- centerRGBs(color_mapping_data_1.WIDGET_COLORS_SPECTRUM);
106
- centerRGBs(color_mapping_data_1.RAW_COLORS_SPECTRUM);
107
- // Because we are using squares, center values around [-0.5:0.5]
108
- const raw = {
109
- R: color_mapping_data_1.RAW_COLORS.map(([r, _g, _b]) => r),
110
- G: color_mapping_data_1.RAW_COLORS.map(([_r, g, _b]) => g),
111
- B: color_mapping_data_1.RAW_COLORS.map(([_r, _g, b]) => b),
112
- RS: color_mapping_data_1.RAW_COLORS_SPECTRUM.map(([r, _g, _b]) => r),
113
- GS: color_mapping_data_1.RAW_COLORS_SPECTRUM.map(([_r, g, _b]) => g),
114
- BS: color_mapping_data_1.RAW_COLORS_SPECTRUM.map(([_r, _g, b]) => b),
115
- };
116
- function processOne(channel, raw) {
117
- return __awaiter(this, void 0, void 0, function* () {
118
- let best;
119
- let bestScore = 0;
120
- for (let i = 0; i < 20; i++) {
121
- const model = yield new scikitjs_1.LinearRegression({
122
- fitIntercept: true,
123
- }).fit(raw, channel);
124
- const score = model.score(raw, channel);
125
- if (score > bestScore) {
126
- const coefs = model.coef.arraySync().flat();
127
- best = {
128
- intercept: model.intercept,
129
- coefs,
130
- score,
131
- };
132
- const scrub = (x) => Math.round(x * 10000) / 10000;
133
- best.intercept = scrub(best.intercept);
134
- best.coefs = best.coefs.map(scrub);
135
- best.score = scrub(best.score);
136
- bestScore = score;
137
- }
138
- }
139
- return best;
140
- });
141
- }
142
- function processOneSq(channel, raw) {
143
- return __awaiter(this, void 0, void 0, function* () {
144
- raw = raw.map((entry) => {
145
- const result = [...entry];
146
- for (const value of entry) {
147
- result.push(value * value);
148
- }
149
- return result;
150
- });
151
- return yield processOne(channel, raw);
152
- });
153
- }
154
- function processAll() {
155
- return __awaiter(this, void 0, void 0, function* () {
156
- let result;
157
- console.log("----------------------------------------");
158
- result = {
159
- r: yield processOne(raw.R, color_mapping_data_1.PLASTIC_COLORS),
160
- g: yield processOne(raw.G, color_mapping_data_1.PLASTIC_COLORS),
161
- b: yield processOne(raw.B, color_mapping_data_1.PLASTIC_COLORS),
162
- score: 0,
163
- };
164
- result.score = (result.r.score + result.g.score + result.b.score) / 3;
165
- console.log("plastic", JSON.stringify(result));
166
- result = {
167
- r: yield processOne(raw.R, color_mapping_data_1.WIDGET_COLORS),
168
- g: yield processOne(raw.G, color_mapping_data_1.WIDGET_COLORS),
169
- b: yield processOne(raw.B, color_mapping_data_1.WIDGET_COLORS),
170
- score: 0,
171
- };
172
- result.score = (result.r.score + result.g.score + result.b.score) / 3;
173
- console.log("widget", JSON.stringify(result));
174
- console.log("----------------------------------------");
175
- result = {
176
- r: yield processOneSq(raw.R, color_mapping_data_1.PLASTIC_COLORS),
177
- g: yield processOneSq(raw.G, color_mapping_data_1.PLASTIC_COLORS),
178
- b: yield processOneSq(raw.B, color_mapping_data_1.PLASTIC_COLORS),
179
- score: 0,
180
- };
181
- result.score = (result.r.score + result.g.score + result.b.score) / 3;
182
- console.log("plasticSq", JSON.stringify(result));
183
- result = {
184
- r: yield processOneSq(raw.R, color_mapping_data_1.WIDGET_COLORS),
185
- g: yield processOneSq(raw.G, color_mapping_data_1.WIDGET_COLORS),
186
- b: yield processOneSq(raw.B, color_mapping_data_1.WIDGET_COLORS),
187
- score: 0,
188
- };
189
- result.score = (result.r.score + result.g.score + result.b.score) / 3;
190
- console.log("widgetSq", JSON.stringify(result));
191
- console.log("----------------------------------------");
192
- result = {
193
- r: yield processOneSq(
194
- raw.RS,
195
- color_mapping_data_1.PLASTIC_COLORS_SPECTRUM
196
- ),
197
- g: yield processOneSq(
198
- raw.GS,
199
- color_mapping_data_1.PLASTIC_COLORS_SPECTRUM
200
- ),
201
- b: yield processOneSq(
202
- raw.BS,
203
- color_mapping_data_1.PLASTIC_COLORS_SPECTRUM
204
- ),
205
- score: 0,
206
- };
207
- result.score = (result.r.score + result.g.score + result.b.score) / 3;
208
- console.log("plasticSqSpectrum", JSON.stringify(result));
209
- result = {
210
- r: yield processOneSq(
211
- raw.RS,
212
- color_mapping_data_1.WIDGET_COLORS_SPECTRUM
213
- ),
214
- g: yield processOneSq(
215
- raw.GS,
216
- color_mapping_data_1.WIDGET_COLORS_SPECTRUM
217
- ),
218
- b: yield processOneSq(
219
- raw.BS,
220
- color_mapping_data_1.WIDGET_COLORS_SPECTRUM
221
- ),
222
- score: 0,
223
- };
224
- result.score = (result.r.score + result.g.score + result.b.score) / 3;
225
- console.log("widgetSqSpectrun", JSON.stringify(result));
226
- console.log("----------------------------------------");
227
- });
228
- }
229
- processAll();
230
- //# sourceMappingURL=color-mapping-linear-centered.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"color-mapping-linear-centered.js","sourceRoot":"","sources":["../../../../src/lib-ext/color-mapping/color-mapping-linear-centered.ts"],"names":[],"mappings":"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"}