abstract-image 3.3.2 → 3.4.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.
Files changed (118) hide show
  1. package/CHANGELOG.md +54 -38
  2. package/LICENSE +21 -21
  3. package/README.md +73 -73
  4. package/lib/_tests_/exporters/svg-export-image.test.d.ts.map +1 -0
  5. package/lib/_tests_/exporters/svg-export-image.test.js.map +1 -0
  6. package/lib/exporters/__tests__/dxf2d-export-image/test-defs/dxf2d-ellipse.js +379 -379
  7. package/lib/exporters/__tests__/dxf2d-export-image/test-defs/dxf2d-group.js +123 -123
  8. package/lib/exporters/__tests__/dxf2d-export-image/test-defs/dxf2d-line.js +55 -55
  9. package/lib/exporters/__tests__/dxf2d-export-image/test-defs/dxf2d-polygon.js +89 -89
  10. package/lib/exporters/__tests__/dxf2d-export-image/test-defs/dxf2d-polyline.js +79 -79
  11. package/lib/exporters/__tests__/dxf2d-export-image/test-defs/dxf2d-rectangle.js +99 -99
  12. package/lib/exporters/__tests__/dxf2d-export-image/test-defs/dxf2d-text-growth-directions.js +135 -135
  13. package/lib/exporters/__tests__/dxf2d-export-image/test-defs/dxf2d-text.js +63 -63
  14. package/lib/exporters/__tests__/eps-export-image/export.test.js +1 -1
  15. package/lib/exporters/__tests__/eps-export-image/test-defs/eps-ellipse.js +24 -24
  16. package/lib/exporters/__tests__/eps-export-image/test-defs/eps-empty-text.js +26 -26
  17. package/lib/exporters/__tests__/eps-export-image/test-defs/eps-group.js +31 -31
  18. package/lib/exporters/__tests__/eps-export-image/test-defs/eps-line.js +20 -20
  19. package/lib/exporters/__tests__/eps-export-image/test-defs/eps-polygon.js +34 -34
  20. package/lib/exporters/__tests__/eps-export-image/test-defs/eps-polyline.js +26 -26
  21. package/lib/exporters/__tests__/eps-export-image/test-defs/eps-rectangle.js +20 -20
  22. package/lib/exporters/__tests__/eps-export-image/test-defs/eps-text-growth-directions.js +59 -59
  23. package/lib/exporters/__tests__/eps-export-image/test-defs/eps-text-iso-latin1-encoding.d.ts +3 -0
  24. package/lib/exporters/__tests__/eps-export-image/test-defs/eps-text-iso-latin1-encoding.d.ts.map +1 -0
  25. package/lib/exporters/__tests__/eps-export-image/test-defs/eps-text-iso-latin1-encoding.js +71 -0
  26. package/lib/exporters/__tests__/eps-export-image/test-defs/eps-text-iso-latin1-encoding.js.map +1 -0
  27. package/lib/exporters/__tests__/eps-export-image/test-defs/eps-text.js +26 -26
  28. package/lib/exporters/eps-export-image.d.ts +2 -0
  29. package/lib/exporters/eps-export-image.d.ts.map +1 -1
  30. package/lib/exporters/eps-export-image.js +113 -32
  31. package/lib/exporters/eps-export-image.js.map +1 -1
  32. package/package.json +4 -2
  33. package/src/__stories__/react-svg-export/example-1.stories.tsx +54 -54
  34. package/src/__stories__/svg-export/example-1.stories.tsx +42 -42
  35. package/src/exporters/__tests__/dxf2d-export-image/export-test-def.ts +11 -11
  36. package/src/exporters/__tests__/dxf2d-export-image/export.test.tsx +13 -13
  37. package/src/exporters/__tests__/dxf2d-export-image/test-defs/dxf2d-ellipse.ts +405 -405
  38. package/src/exporters/__tests__/dxf2d-export-image/test-defs/dxf2d-group.ts +166 -166
  39. package/src/exporters/__tests__/dxf2d-export-image/test-defs/dxf2d-line.ts +80 -80
  40. package/src/exporters/__tests__/dxf2d-export-image/test-defs/dxf2d-polygon.ts +114 -114
  41. package/src/exporters/__tests__/dxf2d-export-image/test-defs/dxf2d-polyline.ts +103 -103
  42. package/src/exporters/__tests__/dxf2d-export-image/test-defs/dxf2d-rectangle.ts +125 -125
  43. package/src/exporters/__tests__/dxf2d-export-image/test-defs/dxf2d-text-growth-directions.ts +214 -214
  44. package/src/exporters/__tests__/dxf2d-export-image/test-defs/dxf2d-text.ts +97 -97
  45. package/src/exporters/__tests__/eps-export-image/export-test-def.ts +11 -11
  46. package/src/exporters/__tests__/eps-export-image/export.test.tsx +13 -13
  47. package/src/exporters/__tests__/eps-export-image/test-defs/eps-ellipse.ts +50 -50
  48. package/src/exporters/__tests__/eps-export-image/test-defs/eps-empty-text.ts +60 -60
  49. package/src/exporters/__tests__/eps-export-image/test-defs/eps-group.ts +74 -74
  50. package/src/exporters/__tests__/eps-export-image/test-defs/eps-line.ts +45 -45
  51. package/src/exporters/__tests__/eps-export-image/test-defs/eps-polygon.ts +65 -65
  52. package/src/exporters/__tests__/eps-export-image/test-defs/eps-polyline.ts +58 -58
  53. package/src/exporters/__tests__/eps-export-image/test-defs/eps-rectangle.ts +46 -46
  54. package/src/exporters/__tests__/eps-export-image/test-defs/eps-text-growth-directions.ts +138 -138
  55. package/src/exporters/__tests__/eps-export-image/test-defs/eps-text-iso-latin1-encoding.ts +71 -0
  56. package/src/exporters/__tests__/eps-export-image/test-defs/eps-text.ts +60 -60
  57. package/src/exporters/__tests__/exception/png-unsupported.test.tsx +25 -25
  58. package/src/exporters/__tests__/exception/react-svg-direction-exception.test.tsx +65 -65
  59. package/src/exporters/__tests__/exception/svg-direction-exception.test.tsx +65 -65
  60. package/src/exporters/__tests__/png-export-image/export-test-def.ts +11 -11
  61. package/src/exporters/__tests__/png-export-image/export.test.tsx +13 -13
  62. package/src/exporters/__tests__/png-export-image/test-defs/png-createPNG.tsx +26 -26
  63. package/src/exporters/__tests__/react-svg-export-image/export-test-def.tsx +13 -13
  64. package/src/exporters/__tests__/react-svg-export-image/export.test.tsx +13 -13
  65. package/src/exporters/__tests__/react-svg-export-image/test-defs/react-svg-binary-png.tsx +26 -26
  66. package/src/exporters/__tests__/react-svg-export-image/test-defs/react-svg-binary-url.tsx +26 -26
  67. package/src/exporters/__tests__/react-svg-export-image/test-defs/react-svg-binary.tsx +25 -25
  68. package/src/exporters/__tests__/react-svg-export-image/test-defs/react-svg-callback.tsx +60 -60
  69. package/src/exporters/__tests__/react-svg-export-image/test-defs/react-svg-ellipse.tsx +28 -28
  70. package/src/exporters/__tests__/react-svg-export-image/test-defs/react-svg-empty-text.tsx +35 -35
  71. package/src/exporters/__tests__/react-svg-export-image/test-defs/react-svg-group.tsx +44 -44
  72. package/src/exporters/__tests__/react-svg-export-image/test-defs/react-svg-line.tsx +26 -26
  73. package/src/exporters/__tests__/react-svg-export-image/test-defs/react-svg-polygon.tsx +32 -32
  74. package/src/exporters/__tests__/react-svg-export-image/test-defs/react-svg-polyline.tsx +33 -33
  75. package/src/exporters/__tests__/react-svg-export-image/test-defs/react-svg-rectangle.tsx +27 -27
  76. package/src/exporters/__tests__/react-svg-export-image/test-defs/react-svg-subimage.tsx +36 -36
  77. package/src/exporters/__tests__/react-svg-export-image/test-defs/react-svg-text-bold.tsx +50 -50
  78. package/src/exporters/__tests__/react-svg-export-image/test-defs/react-svg-text-growth-directions.tsx +80 -80
  79. package/src/exporters/__tests__/react-svg-export-image/test-defs/react-svg-text-italic.tsx +65 -65
  80. package/src/exporters/__tests__/react-svg-export-image/test-defs/react-svg-text-sub.tsx +35 -35
  81. package/src/exporters/__tests__/react-svg-export-image/test-defs/react-svg-text.tsx +35 -35
  82. package/src/exporters/__tests__/svg-export-image/export-test-def.ts +11 -11
  83. package/src/exporters/__tests__/svg-export-image/export.test.tsx +13 -13
  84. package/src/exporters/__tests__/svg-export-image/test-defs/svg-binary.tsx +25 -25
  85. package/src/exporters/__tests__/svg-export-image/test-defs/svg-ellipse.ts +27 -27
  86. package/src/exporters/__tests__/svg-export-image/test-defs/svg-empty-text.ts +34 -34
  87. package/src/exporters/__tests__/svg-export-image/test-defs/svg-group.ts +44 -44
  88. package/src/exporters/__tests__/svg-export-image/test-defs/svg-line.ts +26 -26
  89. package/src/exporters/__tests__/svg-export-image/test-defs/svg-polygon.ts +32 -32
  90. package/src/exporters/__tests__/svg-export-image/test-defs/svg-polyline.ts +33 -33
  91. package/src/exporters/__tests__/svg-export-image/test-defs/svg-rectangle.ts +27 -27
  92. package/src/exporters/__tests__/svg-export-image/test-defs/svg-text-bold.ts +50 -50
  93. package/src/exporters/__tests__/svg-export-image/test-defs/svg-text-growth-directions.ts +80 -80
  94. package/src/exporters/__tests__/svg-export-image/test-defs/svg-text-italic.ts +65 -65
  95. package/src/exporters/__tests__/svg-export-image/test-defs/svg-text.ts +35 -35
  96. package/src/exporters/dxf2d-export-image.ts +218 -218
  97. package/src/exporters/eps-export-image.ts +233 -154
  98. package/src/exporters/index.ts +3 -3
  99. package/src/exporters/png-export-image.ts +12 -12
  100. package/src/exporters/react-svg-export-image.tsx +315 -315
  101. package/src/exporters/svg-export-image.ts +309 -309
  102. package/src/index.ts +11 -11
  103. package/src/model/__tests__/color/export-test-def.ts +13 -13
  104. package/src/model/__tests__/color/export.test.tsx +14 -14
  105. package/src/model/__tests__/color/test-defs/color-from-string.ts +46 -46
  106. package/src/model/__tests__/color/test-defs/color-to-string.ts +35 -35
  107. package/src/model/__tests__/color/test-defs/color-undefined-2.ts +8 -8
  108. package/src/model/__tests__/color/test-defs/color-undefined.ts +8 -8
  109. package/src/model/abstract-image.ts +25 -25
  110. package/src/model/color.ts +52 -52
  111. package/src/model/component.ts +279 -279
  112. package/src/model/index.ts +5 -5
  113. package/src/model/point.ts +11 -11
  114. package/src/model/size.ts +11 -11
  115. package/lib/exporters/__tests__/svg-export-image.test.d.ts.map +0 -1
  116. package/lib/exporters/__tests__/svg-export-image.test.js.map +0 -1
  117. /package/lib/{exporters/__tests__ → _tests_/exporters}/svg-export-image.test.d.ts +0 -0
  118. /package/lib/{exporters/__tests__ → _tests_/exporters}/svg-export-image.test.js +0 -0
@@ -1,14 +1,14 @@
1
- import path from "path";
2
- import { loadTests, onlySkip } from "@abstract-visuals/test-utils";
3
- import { ExportTestDef } from "./export-test-def";
4
-
5
- export const tests = loadTests<ExportTestDef>(path.join(__dirname, "test-defs/"));
6
-
7
- describe("color", () => {
8
- onlySkip(tests).forEach((item) => {
9
- test(item.name, async () => {
10
- // const abstractDoc = render(item.abstractDocJsx);
11
- expect(item.abstractColor).toEqual(item.expectedColor);
12
- });
13
- });
14
- });
1
+ import path from "path";
2
+ import { loadTests, onlySkip } from "@abstract-visuals/test-utils";
3
+ import { ExportTestDef } from "./export-test-def";
4
+
5
+ export const tests = loadTests<ExportTestDef>(path.join(__dirname, "test-defs/"));
6
+
7
+ describe("color", () => {
8
+ onlySkip(tests).forEach((item) => {
9
+ test(item.name, async () => {
10
+ // const abstractDoc = render(item.abstractDocJsx);
11
+ expect(item.abstractColor).toEqual(item.expectedColor);
12
+ });
13
+ });
14
+ });
@@ -1,46 +1,46 @@
1
- import { ExportTestDef } from "../export-test-def";
2
- import * as AbstractImage from "../../../../../src/index";
3
-
4
- const colorStrings = [
5
- "#ff000000",
6
- "#ff0000ff",
7
- "#ffa52a2a",
8
- "#ff00ffff",
9
- "#ffa9a9a9",
10
- "#ff808080",
11
- "#ff008000",
12
- "#ffd3d3d3",
13
- "#ffff00ff",
14
- "#ffffa500",
15
- "#ff800080",
16
- "#ffff0000",
17
- "#ffffffff",
18
- "#ffffffff",
19
- "#ffffff00",
20
- "#ffadd8e6",
21
- ];
22
-
23
- const fromColor = colorStrings.map((color) => AbstractImage.fromString(color));
24
-
25
- export const test: ExportTestDef = {
26
- name: "color from string",
27
- abstractColor: fromColor,
28
- expectedColor: [
29
- { a: 255, b: 0, g: 0, r: 0 },
30
- { a: 255, b: 255, g: 0, r: 0 },
31
- { a: 255, b: 42, g: 42, r: 165 },
32
- { a: 255, b: 255, g: 255, r: 0 },
33
- { a: 255, b: 169, g: 169, r: 169 },
34
- { a: 255, b: 128, g: 128, r: 128 },
35
- { a: 255, b: 0, g: 128, r: 0 },
36
- { a: 255, b: 211, g: 211, r: 211 },
37
- { a: 255, b: 255, g: 0, r: 255 },
38
- { a: 255, b: 0, g: 165, r: 255 },
39
- { a: 255, b: 128, g: 0, r: 128 },
40
- { a: 255, b: 0, g: 0, r: 255 },
41
- { a: 255, b: 255, g: 255, r: 255 },
42
- { a: 255, b: 255, g: 255, r: 255 },
43
- { a: 255, b: 0, g: 255, r: 255 },
44
- { a: 255, b: 230, g: 216, r: 173 },
45
- ],
46
- };
1
+ import { ExportTestDef } from "../export-test-def";
2
+ import * as AbstractImage from "../../../../../src/index";
3
+
4
+ const colorStrings = [
5
+ "#ff000000",
6
+ "#ff0000ff",
7
+ "#ffa52a2a",
8
+ "#ff00ffff",
9
+ "#ffa9a9a9",
10
+ "#ff808080",
11
+ "#ff008000",
12
+ "#ffd3d3d3",
13
+ "#ffff00ff",
14
+ "#ffffa500",
15
+ "#ff800080",
16
+ "#ffff0000",
17
+ "#ffffffff",
18
+ "#ffffffff",
19
+ "#ffffff00",
20
+ "#ffadd8e6",
21
+ ];
22
+
23
+ const fromColor = colorStrings.map((color) => AbstractImage.fromString(color));
24
+
25
+ export const test: ExportTestDef = {
26
+ name: "color from string",
27
+ abstractColor: fromColor,
28
+ expectedColor: [
29
+ { a: 255, b: 0, g: 0, r: 0 },
30
+ { a: 255, b: 255, g: 0, r: 0 },
31
+ { a: 255, b: 42, g: 42, r: 165 },
32
+ { a: 255, b: 255, g: 255, r: 0 },
33
+ { a: 255, b: 169, g: 169, r: 169 },
34
+ { a: 255, b: 128, g: 128, r: 128 },
35
+ { a: 255, b: 0, g: 128, r: 0 },
36
+ { a: 255, b: 211, g: 211, r: 211 },
37
+ { a: 255, b: 255, g: 0, r: 255 },
38
+ { a: 255, b: 0, g: 165, r: 255 },
39
+ { a: 255, b: 128, g: 0, r: 128 },
40
+ { a: 255, b: 0, g: 0, r: 255 },
41
+ { a: 255, b: 255, g: 255, r: 255 },
42
+ { a: 255, b: 255, g: 255, r: 255 },
43
+ { a: 255, b: 0, g: 255, r: 255 },
44
+ { a: 255, b: 230, g: 216, r: 173 },
45
+ ],
46
+ };
@@ -1,35 +1,35 @@
1
- import { ExportTestDef } from "../export-test-def";
2
- import * as AbstractImage from "../../../../../src/index";
3
-
4
- const colors = [
5
- AbstractImage.black,
6
- AbstractImage.blue,
7
- AbstractImage.brown,
8
- AbstractImage.cyan,
9
- AbstractImage.darkGray,
10
- AbstractImage.gray,
11
- AbstractImage.green,
12
- AbstractImage.lightGray,
13
- AbstractImage.magenta,
14
- AbstractImage.orange,
15
- AbstractImage.purple,
16
- AbstractImage.red,
17
- AbstractImage.transparent,
18
- AbstractImage.white,
19
- AbstractImage.yellow,
20
- AbstractImage.lightBlue,
21
- ];
22
-
23
- const colorString = colors
24
- .map((color) => AbstractImage.toString6Hex(color))
25
- .reduce((acc, color) => {
26
- acc += `${color} `;
27
- return acc;
28
- }, "")
29
- .slice(0, -1);
30
-
31
- export const test: ExportTestDef = {
32
- name: "color to string",
33
- abstractColor: colorString,
34
- expectedColor: `000000 0000ff a52a2a 00ffff a9a9a9 808080 008000 d3d3d3 ff00ff ffa500 800080 ff0000 ffffff ffffff ffff00 add8e6`,
35
- };
1
+ import { ExportTestDef } from "../export-test-def";
2
+ import * as AbstractImage from "../../../../../src/index";
3
+
4
+ const colors = [
5
+ AbstractImage.black,
6
+ AbstractImage.blue,
7
+ AbstractImage.brown,
8
+ AbstractImage.cyan,
9
+ AbstractImage.darkGray,
10
+ AbstractImage.gray,
11
+ AbstractImage.green,
12
+ AbstractImage.lightGray,
13
+ AbstractImage.magenta,
14
+ AbstractImage.orange,
15
+ AbstractImage.purple,
16
+ AbstractImage.red,
17
+ AbstractImage.transparent,
18
+ AbstractImage.white,
19
+ AbstractImage.yellow,
20
+ AbstractImage.lightBlue,
21
+ ];
22
+
23
+ const colorString = colors
24
+ .map((color) => AbstractImage.toString6Hex(color))
25
+ .reduce((acc, color) => {
26
+ acc += `${color} `;
27
+ return acc;
28
+ }, "")
29
+ .slice(0, -1);
30
+
31
+ export const test: ExportTestDef = {
32
+ name: "color to string",
33
+ abstractColor: colorString,
34
+ expectedColor: `000000 0000ff a52a2a 00ffff a9a9a9 808080 008000 d3d3d3 ff00ff ffa500 800080 ff0000 ffffff ffffff ffff00 add8e6`,
35
+ };
@@ -1,8 +1,8 @@
1
- import { ExportTestDef } from "../export-test-def";
2
- import * as AbstractImage from "../../../../../src/index";
3
-
4
- export const test: ExportTestDef = {
5
- name: "color undefined 2",
6
- abstractColor: AbstractImage.fromString("#########"),
7
- expectedColor: undefined,
8
- };
1
+ import { ExportTestDef } from "../export-test-def";
2
+ import * as AbstractImage from "../../../../../src/index";
3
+
4
+ export const test: ExportTestDef = {
5
+ name: "color undefined 2",
6
+ abstractColor: AbstractImage.fromString("#########"),
7
+ expectedColor: undefined,
8
+ };
@@ -1,8 +1,8 @@
1
- import { ExportTestDef } from "../export-test-def";
2
- import * as AbstractImage from "../../../../../src/index";
3
-
4
- export const test: ExportTestDef = {
5
- name: "color undefined",
6
- abstractColor: AbstractImage.fromString("#fff"),
7
- expectedColor: undefined,
8
- };
1
+ import { ExportTestDef } from "../export-test-def";
2
+ import * as AbstractImage from "../../../../../src/index";
3
+
4
+ export const test: ExportTestDef = {
5
+ name: "color undefined",
6
+ abstractColor: AbstractImage.fromString("#fff"),
7
+ expectedColor: undefined,
8
+ };
@@ -1,25 +1,25 @@
1
- import * as Size from "./size";
2
- import * as Color from "./color";
3
- import * as Component from "./component";
4
- import * as Point from "./point";
5
-
6
- export interface AbstractImage {
7
- readonly topLeft: Point.Point;
8
- readonly size: Size.Size;
9
- readonly backgroundColor: Color.Color;
10
- readonly components: Array<Component.Component>;
11
- }
12
-
13
- export function createAbstractImage(
14
- topLeft: Point.Point,
15
- size: Size.Size,
16
- backgroundColor: Color.Color,
17
- components: Array<Component.Component>
18
- ): AbstractImage {
19
- return {
20
- topLeft: topLeft,
21
- size: size,
22
- backgroundColor: backgroundColor,
23
- components: components
24
- };
25
- }
1
+ import * as Size from "./size";
2
+ import * as Color from "./color";
3
+ import * as Component from "./component";
4
+ import * as Point from "./point";
5
+
6
+ export interface AbstractImage {
7
+ readonly topLeft: Point.Point;
8
+ readonly size: Size.Size;
9
+ readonly backgroundColor: Color.Color;
10
+ readonly components: Array<Component.Component>;
11
+ }
12
+
13
+ export function createAbstractImage(
14
+ topLeft: Point.Point,
15
+ size: Size.Size,
16
+ backgroundColor: Color.Color,
17
+ components: Array<Component.Component>
18
+ ): AbstractImage {
19
+ return {
20
+ topLeft: topLeft,
21
+ size: size,
22
+ backgroundColor: backgroundColor,
23
+ components: components
24
+ };
25
+ }
@@ -1,52 +1,52 @@
1
- export interface Color {
2
- readonly a: number;
3
- readonly r: number;
4
- readonly g: number;
5
- readonly b: number;
6
- }
7
-
8
- export function fromArgb(a: number, r: number, g: number, b: number): Color {
9
- return { a: a, r: r, g: g, b: b };
10
- }
11
-
12
- export function toString6Hex(color: Color): string {
13
- return (
14
- ("00" + color.r.toString(16)).substr(-2) +
15
- ("00" + color.g.toString(16)).substr(-2) +
16
- ("00" + color.b.toString(16)).substr(-2)
17
- );
18
- }
19
-
20
- export function fromString(s: string): Color | undefined {
21
- if (s === null || s === undefined || s.length !== 9 || s[0] !== "#") {
22
- return undefined;
23
- }
24
-
25
- const a: number = parseInt(s.substring(1, 1 + 2), 16);
26
- const r: number = parseInt(s.substring(3, 3 + 2), 16);
27
- const g: number = parseInt(s.substring(5, 5 + 2), 16);
28
- const b: number = parseInt(s.substring(7, 7 + 2), 16);
29
-
30
- if (isNaN(a) || isNaN(r) || isNaN(g) || isNaN(b)) {
31
- return undefined;
32
- }
33
-
34
- return fromArgb(a, r, g, b);
35
- }
36
-
37
- export const black: Color = fromArgb(0xff, 0, 0, 0);
38
- export const blue: Color = fromArgb(0xff, 0x00, 0x00, 0xff);
39
- export const brown: Color = fromArgb(0xff, 0xa5, 0x2a, 0x2a);
40
- export const cyan: Color = fromArgb(0xff, 0x00, 0xff, 0xff);
41
- export const darkGray: Color = fromArgb(0xff, 0xa9, 0xa9, 0xa9);
42
- export const gray: Color = fromArgb(0xff, 0x80, 0x80, 0x80);
43
- export const green: Color = fromArgb(0xff, 0x00, 0x80, 0x00);
44
- export const lightGray: Color = fromArgb(0xff, 0xd3, 0xd3, 0xd3);
45
- export const magenta: Color = fromArgb(0xff, 0xff, 0x00, 0xff);
46
- export const orange: Color = fromArgb(0xff, 0xff, 0xa5, 0x00);
47
- export const purple: Color = fromArgb(0xff, 0x80, 0x00, 0x80);
48
- export const red: Color = fromArgb(0xff, 0xff, 0x00, 0x00);
49
- export const transparent: Color = fromArgb(0x00, 0xff, 0xff, 0xff);
50
- export const white: Color = fromArgb(0xff, 0xff, 0xff, 0xff);
51
- export const yellow: Color = fromArgb(0xff, 0xff, 0xff, 0x00);
52
- export const lightBlue: Color = fromArgb(0xff, 0xad, 0xd8, 0xe6);
1
+ export interface Color {
2
+ readonly a: number;
3
+ readonly r: number;
4
+ readonly g: number;
5
+ readonly b: number;
6
+ }
7
+
8
+ export function fromArgb(a: number, r: number, g: number, b: number): Color {
9
+ return { a: a, r: r, g: g, b: b };
10
+ }
11
+
12
+ export function toString6Hex(color: Color): string {
13
+ return (
14
+ ("00" + color.r.toString(16)).substr(-2) +
15
+ ("00" + color.g.toString(16)).substr(-2) +
16
+ ("00" + color.b.toString(16)).substr(-2)
17
+ );
18
+ }
19
+
20
+ export function fromString(s: string): Color | undefined {
21
+ if (s === null || s === undefined || s.length !== 9 || s[0] !== "#") {
22
+ return undefined;
23
+ }
24
+
25
+ const a: number = parseInt(s.substring(1, 1 + 2), 16);
26
+ const r: number = parseInt(s.substring(3, 3 + 2), 16);
27
+ const g: number = parseInt(s.substring(5, 5 + 2), 16);
28
+ const b: number = parseInt(s.substring(7, 7 + 2), 16);
29
+
30
+ if (isNaN(a) || isNaN(r) || isNaN(g) || isNaN(b)) {
31
+ return undefined;
32
+ }
33
+
34
+ return fromArgb(a, r, g, b);
35
+ }
36
+
37
+ export const black: Color = fromArgb(0xff, 0, 0, 0);
38
+ export const blue: Color = fromArgb(0xff, 0x00, 0x00, 0xff);
39
+ export const brown: Color = fromArgb(0xff, 0xa5, 0x2a, 0x2a);
40
+ export const cyan: Color = fromArgb(0xff, 0x00, 0xff, 0xff);
41
+ export const darkGray: Color = fromArgb(0xff, 0xa9, 0xa9, 0xa9);
42
+ export const gray: Color = fromArgb(0xff, 0x80, 0x80, 0x80);
43
+ export const green: Color = fromArgb(0xff, 0x00, 0x80, 0x00);
44
+ export const lightGray: Color = fromArgb(0xff, 0xd3, 0xd3, 0xd3);
45
+ export const magenta: Color = fromArgb(0xff, 0xff, 0x00, 0xff);
46
+ export const orange: Color = fromArgb(0xff, 0xff, 0xa5, 0x00);
47
+ export const purple: Color = fromArgb(0xff, 0x80, 0x00, 0x80);
48
+ export const red: Color = fromArgb(0xff, 0xff, 0x00, 0x00);
49
+ export const transparent: Color = fromArgb(0x00, 0xff, 0xff, 0xff);
50
+ export const white: Color = fromArgb(0xff, 0xff, 0xff, 0xff);
51
+ export const yellow: Color = fromArgb(0xff, 0xff, 0xff, 0x00);
52
+ export const lightBlue: Color = fromArgb(0xff, 0xad, 0xd8, 0xe6);