@design-core/core 0.0.1 → 0.0.3

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 (254) hide show
  1. package/.eslintrc.json +14 -7
  2. package/.github/workflows/DesignCoreQA.yml +3 -1
  3. package/README.md +11 -4
  4. package/TODO.md +19 -0
  5. package/core/core/core.js +49 -42
  6. package/core/designCore.js +61 -2
  7. package/core/dimensions/alignedDimension.js +142 -0
  8. package/core/dimensions/angularDimension.js +550 -0
  9. package/core/dimensions/baseCircularDimension.js +244 -0
  10. package/core/dimensions/baseDimension.js +558 -0
  11. package/core/dimensions/baseLinearDimension.js +371 -0
  12. package/core/dimensions/diametricDimension.js +82 -0
  13. package/core/dimensions/dimension.js +298 -0
  14. package/core/dimensions/linearDimension.js +29 -0
  15. package/core/dimensions/radialDimension.js +78 -0
  16. package/core/dimensions/rotatedDimension.js +167 -0
  17. package/core/entities/arc.js +314 -60
  18. package/core/entities/arctext.js +642 -0
  19. package/core/entities/basePolyline.js +553 -94
  20. package/core/entities/circle.js +181 -54
  21. package/core/entities/entity.js +154 -74
  22. package/core/entities/hatch.js +807 -0
  23. package/core/entities/insert.js +200 -39
  24. package/core/entities/line.js +196 -134
  25. package/core/entities/lwpolyline.js +21 -44
  26. package/core/entities/point.js +194 -29
  27. package/core/entities/polyline.js +54 -7
  28. package/core/entities/rectangle.js +43 -13
  29. package/core/entities/solid.js +43 -6
  30. package/core/entities/text.js +324 -181
  31. package/core/lib/boundingBox.js +73 -13
  32. package/core/lib/canvas.js +256 -65
  33. package/core/lib/clipboard.js +198 -0
  34. package/core/lib/colour.js +144 -0
  35. package/core/lib/colours.js +367 -301
  36. package/core/lib/commandLine.js +16 -28
  37. package/core/lib/commandManager.js +115 -58
  38. package/core/lib/constants.js +23 -0
  39. package/core/lib/dxf/dxf.js +249 -34
  40. package/core/lib/dxf/dxfFile.js +23 -38
  41. package/core/lib/dxf/dxfIterator.js +17 -5
  42. package/core/lib/dxf/dxfRead.js +23 -7
  43. package/core/lib/dxf/dxfWrite.js +39 -129
  44. package/core/lib/dxf/handleManager.js +97 -0
  45. package/core/lib/dxf/sections/blocks.js +16 -2
  46. package/core/lib/dxf/sections/entities.js +17 -3
  47. package/core/lib/dxf/sections/header.js +10 -1
  48. package/core/lib/dxf/sections/objects.js +36 -0
  49. package/core/lib/dxf/sections/section.js +43 -5
  50. package/core/lib/dxf/sections/tables.js +17 -3
  51. package/core/lib/entityManager.js +178 -0
  52. package/core/lib/fileio.js +14 -4
  53. package/core/lib/headers.js +229 -0
  54. package/core/lib/input.js +46 -0
  55. package/core/lib/inputManager.js +199 -194
  56. package/core/lib/intersect.js +341 -468
  57. package/core/lib/logging.js +25 -1
  58. package/core/lib/matrix.js +6 -8
  59. package/core/lib/mouse.js +24 -79
  60. package/core/lib/patterns.js +690 -0
  61. package/core/lib/promptOptions.js +133 -0
  62. package/core/lib/scene.js +71 -174
  63. package/core/lib/selectionManager.js +74 -48
  64. package/core/lib/selectionWindow.js +24 -10
  65. package/core/lib/settings.js +18 -11
  66. package/core/lib/snapping.js +129 -21
  67. package/core/lib/stateManager.js +288 -0
  68. package/core/lib/strings.js +57 -5
  69. package/core/lib/utils.js +95 -11
  70. package/core/objects/dictionary.js +43 -0
  71. package/core/objects/dictionaryManager.js +80 -0
  72. package/core/properties/dimType.js +117 -0
  73. package/core/properties/flags.js +66 -0
  74. package/core/properties/property.js +26 -0
  75. package/core/properties/propertyManager.js +65 -19
  76. package/core/tables/appId.js +31 -0
  77. package/core/tables/appIdManager.js +44 -0
  78. package/core/tables/block.js +323 -0
  79. package/core/tables/blockManager.js +48 -0
  80. package/core/tables/blockRecord.js +29 -0
  81. package/core/tables/blockRecordManager.js +37 -0
  82. package/core/tables/dimStyle.js +627 -0
  83. package/core/tables/dimStyleManager.js +187 -0
  84. package/core/tables/endblk.js +28 -0
  85. package/core/tables/layer.js +219 -0
  86. package/core/tables/layerManager.js +47 -0
  87. package/core/tables/ltype.js +85 -0
  88. package/core/tables/ltypeManager.js +65 -0
  89. package/core/tables/style.js +145 -0
  90. package/core/tables/styleManager.js +55 -0
  91. package/core/tables/styleManagerBase.js +110 -0
  92. package/core/tables/tableManagerBase.js +354 -0
  93. package/core/tables/ucs.js +28 -0
  94. package/core/tables/ucsManager.js +44 -0
  95. package/core/tables/view.js +28 -0
  96. package/core/tables/viewManager.js +44 -0
  97. package/core/tables/vport.js +70 -0
  98. package/core/tables/vportManager.js +65 -0
  99. package/core/tools/chamfer.js +343 -0
  100. package/core/tools/chamferFilletBase.js +162 -0
  101. package/core/tools/copy.js +68 -40
  102. package/core/tools/copybase.js +65 -0
  103. package/core/tools/copyclip.js +59 -0
  104. package/core/tools/cornerEntity.js +138 -0
  105. package/core/tools/cutclip.js +72 -0
  106. package/core/tools/distance.js +37 -9
  107. package/core/tools/erase.js +43 -13
  108. package/core/tools/explode.js +117 -0
  109. package/core/tools/extend.js +71 -32
  110. package/core/tools/fillet.js +336 -0
  111. package/core/tools/identify.js +33 -6
  112. package/core/tools/matchProp.js +106 -0
  113. package/core/tools/mirror.js +141 -0
  114. package/core/tools/move.js +65 -32
  115. package/core/tools/offset.js +321 -0
  116. package/core/tools/pan.js +54 -0
  117. package/core/tools/pasteclip.js +93 -0
  118. package/core/tools/purge.js +90 -0
  119. package/core/tools/rotate.js +105 -70
  120. package/core/tools/scale.js +166 -0
  121. package/core/tools/tool.js +14 -4
  122. package/core/tools/trim.js +71 -32
  123. package/core/tools/zoom.js +152 -0
  124. package/package.json +3 -305
  125. package/test/dimensions/alignedDimension.test.js +211 -0
  126. package/test/dimensions/angularDimension.test.js +243 -0
  127. package/test/dimensions/baseDimension.test.js +239 -0
  128. package/test/dimensions/diametricDimension.test.js +203 -0
  129. package/test/dimensions/dimension.test.js +102 -0
  130. package/test/dimensions/radialDimension.test.js +203 -0
  131. package/test/dimensions/rotatedDimension.test.js +224 -0
  132. package/test/entities/arc.test.js +463 -41
  133. package/test/entities/arctext.test.js +329 -0
  134. package/test/entities/basePolyline.test.js +459 -10
  135. package/test/entities/circle.test.js +312 -7
  136. package/test/entities/entity.test.js +28 -9
  137. package/test/entities/hatch.test.js +606 -0
  138. package/test/entities/insert.test.js +90 -0
  139. package/test/entities/line.test.js +182 -6
  140. package/test/entities/point.test.js +375 -37
  141. package/test/entities/solid.test.js +156 -0
  142. package/test/entities/text.test.js +533 -7
  143. package/test/integration/exportIntegration.reference.dxf +1706 -0
  144. package/test/integration/exportIntegration.test.js +186 -0
  145. package/test/integration/importExportIntegration.test.js +126 -0
  146. package/test/integration/intersectionIntegration.test.js +880 -0
  147. package/test/integration/userInputIntegration.reference.dxf +1410 -0
  148. package/test/integration/userInputIntegration.test.js +269 -0
  149. package/test/lib/boundingBox.test.js +26 -2
  150. package/test/lib/canvas.test.js +613 -5
  151. package/test/lib/clipboard.test.js +70 -0
  152. package/test/lib/colour.test.js +114 -0
  153. package/test/lib/colours.test.js +63 -18
  154. package/test/lib/commandLine.test.js +159 -22
  155. package/test/lib/commandManager.test.js +4 -4
  156. package/test/lib/constants.test.js +9 -0
  157. package/test/lib/dxf/dxfFile.test.js +6 -2
  158. package/test/lib/dxf/dxfIterator.test.js +1 -1
  159. package/test/lib/dxf/dxfWrite.test.js +173 -0
  160. package/test/lib/dxf/handleManager.test.js +137 -0
  161. package/test/lib/dxf/sections/blocks.test.js +5 -5
  162. package/test/lib/dxf/sections/entities.test.js +4 -4
  163. package/test/lib/dxf/sections/header.test.js +18 -4
  164. package/test/lib/dxf/sections/objects.test.js +132 -0
  165. package/test/lib/dxf/sections/section.test.js +29 -29
  166. package/test/lib/dxf/sections/tables.test.js +3 -3
  167. package/test/lib/entityManager.test.js +163 -0
  168. package/test/lib/headers.test.js +233 -0
  169. package/test/lib/inputManager.test.js +1144 -5
  170. package/test/lib/intersect.test.js +454 -331
  171. package/test/lib/logging.test.js +1 -1
  172. package/test/lib/matrix.test.js +1 -1
  173. package/test/lib/mouse.test.js +327 -4
  174. package/test/lib/patterns.test.js +105 -0
  175. package/test/lib/promptOptions.test.js +179 -0
  176. package/test/lib/scene.test.js +16 -52
  177. package/test/lib/selectionManager.test.js +17 -5
  178. package/test/lib/settings.test.js +111 -5
  179. package/test/lib/snapping.test.js +142 -4
  180. package/test/lib/stateManager.test.js +155 -0
  181. package/test/lib/utils.test.js +81 -1
  182. package/test/objects/dictionary.test.js +81 -0
  183. package/test/objects/dictionaryManager.test.js +34 -0
  184. package/test/properties/dimType.test.js +62 -0
  185. package/test/properties/flags.test.js +164 -0
  186. package/test/properties/property.test.js +13 -0
  187. package/test/properties/propertyManager.test.js +10 -11
  188. package/test/tables/appId.test.js +46 -0
  189. package/test/tables/appIdManager.test.js +72 -0
  190. package/test/tables/block.test.js +157 -0
  191. package/test/tables/blockManager.test.js +52 -0
  192. package/test/tables/blockRecord.test.js +39 -0
  193. package/test/tables/blockRecordManager.test.js +60 -0
  194. package/test/tables/dimstyle.test.js +72 -0
  195. package/test/tables/endblk.test.js +30 -0
  196. package/test/tables/layer.test.js +95 -0
  197. package/test/tables/layerManager.test.js +172 -0
  198. package/test/{styles → tables}/ltype.test.js +7 -7
  199. package/test/{styles → tables}/ltypeManager.test.js +2 -2
  200. package/test/tables/style.test.js +44 -0
  201. package/test/tables/stylemanagerbase.test.js +220 -0
  202. package/test/tables/tableManagerBase.test.js +194 -0
  203. package/test/tables/ucs.test.js +37 -0
  204. package/test/tables/ucsManager.test.js +48 -0
  205. package/test/tables/view.test.js +37 -0
  206. package/test/tables/viewManager.test.js +48 -0
  207. package/test/tables/vport.test.js +117 -0
  208. package/test/tables/vportManager.test.js +54 -0
  209. package/test/test-helpers/test-helpers.js +66 -0
  210. package/test/tools/chamfer.test.js +970 -0
  211. package/test/tools/chamferFilletBase.test.js +446 -0
  212. package/test/tools/copy.test.js +22 -14
  213. package/test/tools/copybase.test.js +93 -0
  214. package/test/tools/copyclip.test.js +92 -0
  215. package/test/tools/cornerEntity.test.js +201 -0
  216. package/test/tools/cutclip.test.js +94 -0
  217. package/test/tools/distance.test.js +140 -18
  218. package/test/tools/erase.test.js +12 -12
  219. package/test/tools/explode.test.js +45 -0
  220. package/test/tools/extend.test.js +326 -44
  221. package/test/tools/fillet.test.js +831 -0
  222. package/test/tools/identify.test.js +115 -16
  223. package/test/tools/matchProp.test.js +84 -0
  224. package/test/tools/mirror.test.js +475 -0
  225. package/test/tools/move.test.js +75 -19
  226. package/test/tools/offset.test.js +748 -0
  227. package/test/tools/pan.test.js +72 -0
  228. package/test/tools/pasteclip.test.js +100 -0
  229. package/test/tools/purge.test.js +89 -0
  230. package/test/tools/rotate.test.js +89 -23
  231. package/test/tools/scale.test.js +529 -0
  232. package/test/tools/trim.test.js +419 -84
  233. package/test/tools/zoom.test.js +504 -0
  234. package/core/entities/alignedDimension.js +0 -279
  235. package/core/entities/angularDimension.js +0 -194
  236. package/core/entities/baseDimension.js +0 -227
  237. package/core/entities/block.js +0 -247
  238. package/core/entities/diametricDimension.js +0 -133
  239. package/core/entities/dimension.js +0 -202
  240. package/core/entities/radialDimension.js +0 -126
  241. package/core/styles/dimStyle.js +0 -719
  242. package/core/styles/dimStyleManager.js +0 -47
  243. package/core/styles/layer.js +0 -133
  244. package/core/styles/layerManager.js +0 -40
  245. package/core/styles/ltype.js +0 -86
  246. package/core/styles/ltypeManager.js +0 -50
  247. package/core/styles/style.js +0 -158
  248. package/core/styles/styleManager.js +0 -43
  249. package/core/styles/styleManagerBase.js +0 -299
  250. package/test/entities/block.test.js +0 -22
  251. package/test/styles/dimstyle.test.js +0 -19
  252. package/test/styles/layerManager.test.js +0 -150
  253. package/test/styles/style.test.js +0 -33
  254. package/test/styles/stylemanagerbase.test.js +0 -219
@@ -1,337 +1,403 @@
1
+
2
+ import { Logging } from './logging.js';
3
+
4
+ /**
5
+ * Colours is a static class to support colour managements
6
+ * All colours are stored as RGB {r:, g:, b:} objects
7
+ * When importing dxf colour are converted to RGB
8
+ * ACI (AutoCAD colour index) from groupcode 62
9
+ * True Colour from groupcode 420
10
+ *
11
+ */
1
12
  export class Colours {
2
13
  /**
3
- * Convert an AutoCAD colour index (ACI) to a hex colour
4
- * @param {Number} acadColour
14
+ * Check rgb is a valid rgb object
15
+ * @param {Object} rgb
16
+ * @return {boolean} true if the object is an rgb colour, otherwise false.
5
17
  */
6
- static getHexColour(acadColour) {
7
- return this.conversion_table[acadColour];
8
- };
18
+ static isRGB(rgb) {
19
+ if (rgb) {
20
+ if (rgb.hasOwnProperty('r') && rgb.r >= 0 && rgb.r <= 255) {
21
+ if (rgb.hasOwnProperty('g') && rgb.g >= 0 && rgb.g <= 255) {
22
+ if (rgb.hasOwnProperty('b') && rgb.b >= 0 && rgb.b <= 255) {
23
+ return true;
24
+ }
25
+ }
26
+ }
27
+ }
28
+
29
+ Logging.instance.error('Invalid RGB value');
30
+ return false;
31
+ }
9
32
 
10
33
  /**
11
- * Convert a hex colour to an AutoCAD colour index (ACI)
12
- * @param {String} hexColour
34
+ * Convert an AutoCAD colour index (ACI) to a rgb colour
35
+ * @param {number} aci
36
+ * @return {number}
13
37
  */
14
- static getACADColour(hexColour) {
15
- for (const acadColour in this.conversion_table) {
16
- if (this.conversion_table[acadColour] === hexColour) {
17
- return acadColour;
38
+ static aciToRGB(aci) {
39
+ if ((typeof aci === 'number' || aci instanceof Number)) {
40
+ if (aci >= 0 && aci <= 256) {
41
+ return this.rgb_conversion_table[aci];
18
42
  }
19
43
  }
44
+
45
+ Logging.instance.warn('Invalid ACI value');
46
+ return;
20
47
  };
21
48
 
22
49
  /**
23
- * Get hex component from r, g or b value
24
- * @param {Number} c
50
+ * Convert a rgb colour to an AutoCAD colour index (ACI)
51
+ * @param {Object} rgb
52
+ * @return {number}
25
53
  */
26
- static componentToHex(c) {
27
- const hex = Math.abs(c).toString(16);
28
- return hex.length == 1 ? '0' + hex : hex;
54
+ static rgbToACI(rgb) {
55
+ if (!this.isRGB(rgb)) {
56
+ // not an rgb colour
57
+ return;
58
+ }
59
+ for (const aci in this.rgb_conversion_table) {
60
+ if (this.rgb_conversion_table[aci].r === rgb.r) {
61
+ if (this.rgb_conversion_table[aci].g === rgb.g) {
62
+ if (this.rgb_conversion_table[aci].b === rgb.b) {
63
+ // return matching aci
64
+ return Number(aci);
65
+ }
66
+ }
67
+ }
68
+ }
69
+
70
+ // no aci match
71
+ return;
29
72
  }
30
73
 
31
74
  /**
32
- * Get hex colour from RGB
33
- * @param {Number} r - red value
34
- * @param {Number} g - green value
35
- * @param {Number} b - blue value
75
+ * Convert rgb colour to formatted string
76
+ * @param {Object} rgb
77
+ * @return {number}
36
78
  */
37
- static rgbToHex(r, g, b) {
38
- return '#' + this.componentToHex(r) + this.componentToHex(g) + this.componentToHex(b);
79
+ static rgbToString(rgb) {
80
+ if (this.isRGB(rgb)) {
81
+ return `rgb(${rgb.r}, ${rgb.g}, ${rgb.b})`;
82
+ }
83
+
84
+ return;
39
85
  }
40
86
 
41
87
  /**
42
- * Get RGB colour components from hex colour
43
- * @param {String} hexColour
88
+ * Get RGB colour components scaled 0 - 1 from rgb colour
89
+ * @param {Object} rgb - object with r, g, and b values
90
+ * @return {number} scaled rgb object or undefined
44
91
  */
45
- static hexToRGB(hexColour) {
46
- const result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hexColour);
47
-
48
- if (result) {
92
+ static rgbToScaledRGB(rgb) {
93
+ if (this.isRGB(rgb)) {
49
94
  return {
50
- r: parseInt(result[1], 16),
51
- g: parseInt(result[2], 16),
52
- b: parseInt(result[3], 16),
95
+ r: rgb.r / 255,
96
+ g: rgb.g / 255,
97
+ b: rgb.b / 255,
53
98
  };
54
99
  }
55
100
 
56
- return null;
101
+ return;
57
102
  }
58
103
 
59
104
  /**
60
- * Get RGB colour components scaled 0 - 1 from hex colour
61
- * @param {String} hexColour
105
+ * Get RGB colour components from true colour
106
+ * @param {string} trueColour
107
+ * A 32-bit integer representing a 24-bit color value.
108
+ * The high-order byte (8 bits) is 0, the low-order byte an unsigned char holding the Blue value (0-255),
109
+ * then the Green value, and the next-to-high order byte is the Red Value.
110
+ * Converting this integer value to hexadecimal yields the following bit mask: 0x00RRGGBB.
111
+ * For example:
112
+ * true color with Red==200, Green==100 and Blue==50 is 0x00C86432, and in DXF, in decimal, 13132850
113
+ * @return {number}
62
114
  */
63
- static hexToScaledRGB(hexColour) {
64
- const rgb = this.hexToRGB(hexColour);
65
-
66
- if (rgb) {
115
+ static trueColourToRGB(trueColour) {
116
+ if (trueColour) {
67
117
  return {
68
- r: rgb.r / 255,
69
- g: rgb.g / 255,
70
- b: rgb.b / 255,
118
+ r: (trueColour & 0xff0000) >> 16,
119
+ g: (trueColour & 0x00ff00) >> 8,
120
+ b: (trueColour & 0x0000ff),
71
121
  };
72
122
  }
123
+ return;
124
+ }
125
+
126
+ /**
127
+ * Get the trueColour value for rgb colour
128
+ * @param {Object} rgb
129
+ * @return {number} representing the rgb value as a trueColor
130
+ */
131
+ static rgbToTrueColour(rgb) {
132
+ if (this.isRGB(rgb)) {
133
+ const trueColour = ((rgb.r << 16) | ((rgb.g << 8) | (rgb.b)));
134
+ return trueColour;
135
+ }
73
136
 
74
- return null;
137
+ return;
75
138
  }
76
139
 
77
- static conversion_table = {
78
- // Map the 256 AutoCAD colours to the equivalent hex colour
79
- 0: 'BYBLOCK',
80
- 1: '#FF0000',
81
- 2: '#FFFF00',
82
- 3: '#00FF00',
83
- 4: '#00FFFF',
84
- 5: '#0000FF',
85
- 6: '#FF00FF',
86
- 7: '#FFFFFF',
87
- 8: '#808080',
88
- 9: '#C0C0C0',
89
- 10: '#FF0000',
90
- 11: '#FF7F7F',
91
- 12: '#CC0000',
92
- 13: '#CC6666',
93
- 14: '#990000',
94
- 15: '#994C4C',
95
- 16: '#7F0000',
96
- 17: '#7F3F3F',
97
- 18: '#4C0000',
98
- 19: '#4C2626',
99
- 20: '#FF3F00',
100
- 21: '#FF9F7F',
101
- 22: '#CC3300',
102
- 23: '#CC7F66',
103
- 24: '#992600',
104
- 25: '#995F4C',
105
- 26: '#7F1F00',
106
- 27: '#7F4F3F',
107
- 28: '#4C1300',
108
- 29: '#4C2F26',
109
- 30: '#FF7F00',
110
- 31: '#FFBF7F',
111
- 32: '#CC6600',
112
- 33: '#CC9966',
113
- 34: '#994C00',
114
- 35: '#99724C',
115
- 36: '#7F3F00',
116
- 37: '#7F5F3F',
117
- 38: '#4C2600',
118
- 39: '#4C3926',
119
- 40: '#FFBF00',
120
- 41: '#FFDF7F',
121
- 42: '#CC9900',
122
- 43: '#CCB266',
123
- 44: '#997200',
124
- 45: '#99854C',
125
- 46: '#7F5F00',
126
- 47: '#7F6F3F',
127
- 48: '#4C3900',
128
- 49: '#4C4226',
129
- 50: '#FFFF00',
130
- 51: '#FFFF7F',
131
- 52: '#CCCC00',
132
- 53: '#CCCC66',
133
- 54: '#999900',
134
- 55: '#99994C',
135
- 56: '#7F7F00',
136
- 57: '#7F7F3F',
137
- 58: '#4C4C00',
138
- 59: '#4C4C26',
139
- 60: '#BFFF00',
140
- 61: '#DFFF7F',
141
- 62: '#99CC00',
142
- 63: '#B2CC66',
143
- 64: '#729900',
144
- 65: '#85994C',
145
- 66: '#5F7F00',
146
- 67: '#6F7F3F',
147
- 68: '#394C00',
148
- 69: '#424C26',
149
- 70: '#7FFF00',
150
- 71: '#BFFF7F',
151
- 72: '#66CC00',
152
- 73: '#99CC66',
153
- 74: '#4C9900',
154
- 75: '#72994C',
155
- 76: '#3F7F00',
156
- 77: '#5F7F3F',
157
- 78: '#264C00',
158
- 79: '#394C26',
159
- 80: '#3FFF00',
160
- 81: '#9FFF7F',
161
- 82: '#33CC00',
162
- 83: '#7FCC66',
163
- 84: '#269900',
164
- 85: '#5F994C',
165
- 86: '#1F7F00',
166
- 87: '#4F7F3F',
167
- 88: '#134C00',
168
- 89: '#2F4C26',
169
- 90: '#00FF00',
170
- 91: '#7FFF7F',
171
- 92: '#00CC00',
172
- 93: '#66CC66',
173
- 94: '#009900',
174
- 95: '#4C994C',
175
- 96: '#007F00',
176
- 97: '#3F7F3F',
177
- 98: '#004C00',
178
- 99: '#264C26',
179
- 100: '#00FF3F',
180
- 101: '#7FFF9F',
181
- 102: '#00CC33',
182
- 103: '#66CC7F',
183
- 104: '#009926',
184
- 105: '#4C995F',
185
- 106: '#007F1F',
186
- 107: '#3F7F4F',
187
- 108: '#004C13',
188
- 109: '#264C2F',
189
- 110: '#00FF7F',
190
- 111: '#7FFFBF',
191
- 112: '#00CC66',
192
- 113: '#66CC99',
193
- 114: '#00994C',
194
- 115: '#4C9972',
195
- 116: '#007F3F',
196
- 117: '#3F7F5F',
197
- 118: '#004C26',
198
- 119: '#264C39',
199
- 120: '#00FFBF',
200
- 121: '#7FFFDF',
201
- 122: '#00CC99',
202
- 123: '#66CCB2',
203
- 124: '#009972',
204
- 125: '#4C9985',
205
- 126: '#007F5F',
206
- 127: '#3F7F6F',
207
- 128: '#004C39',
208
- 129: '#264C42',
209
- 130: '#00FFFF',
210
- 131: '#7FFFFF',
211
- 132: '#00CCCC',
212
- 133: '#66CCCC',
213
- 134: '#009999',
214
- 135: '#4C9999',
215
- 136: '#007F7F',
216
- 137: '#3F7F7F',
217
- 138: '#004C4C',
218
- 139: '#264C4C',
219
- 140: '#00BFFF',
220
- 141: '#7FDFFF',
221
- 142: '#0099CC',
222
- 143: '#66B2CC',
223
- 144: '#007299',
224
- 145: '#4C8599',
225
- 146: '#005F7F',
226
- 147: '#3F6F7F',
227
- 148: '#00394C',
228
- 149: '#26424C',
229
- 150: '#007FFF',
230
- 151: '#7FBFFF',
231
- 152: '#0066CC',
232
- 153: '#6699CC',
233
- 154: '#004C99',
234
- 155: '#4C7299',
235
- 156: '#003F7F',
236
- 157: '#3F5F7F',
237
- 158: '#00264C',
238
- 159: '#26394C',
239
- 160: '#003FFF',
240
- 161: '#7F9FFF',
241
- 162: '#0033CC',
242
- 163: '#667FCC',
243
- 164: '#002699',
244
- 165: '#4C5F99',
245
- 166: '#001F7F',
246
- 167: '#3F4F7F',
247
- 168: '#00134C',
248
- 169: '#262F4C',
249
- 170: '#0000FF',
250
- 171: '#7F7FFF',
251
- 172: '#0000CC',
252
- 173: '#6666CC',
253
- 174: '#000099',
254
- 175: '#4C4C99',
255
- 176: '#00007F',
256
- 177: '#3F3F7F',
257
- 178: '#00004C',
258
- 179: '#26264C',
259
- 180: '#3F00FF',
260
- 181: '#9F7FFF',
261
- 182: '#3300CC',
262
- 183: '#7F66CC',
263
- 184: '#260099',
264
- 185: '#5F4C99',
265
- 186: '#1F007F',
266
- 187: '#4F3F7F',
267
- 188: '#13004C',
268
- 189: '#2F264C',
269
- 190: '#7F00FF',
270
- 191: '#BF7FFF',
271
- 192: '#6600CC',
272
- 193: '#9966CC',
273
- 194: '#4C0099',
274
- 195: '#724C99',
275
- 196: '#3F007F',
276
- 197: '#5F3F7F',
277
- 198: '#26004C',
278
- 199: '#39264C',
279
- 200: '#BF00FF',
280
- 201: '#DF7FFF',
281
- 202: '#9900CC',
282
- 203: '#B266CC',
283
- 204: '#720099',
284
- 205: '#854C99',
285
- 206: '#5F007F',
286
- 207: '#6F3F7F',
287
- 208: '#39004C',
288
- 209: '#42264C',
289
- 210: '#FF00FF',
290
- 211: '#FF7FFF',
291
- 212: '#CC00CC',
292
- 213: '#CC66CC',
293
- 214: '#990099',
294
- 215: '#994C99',
295
- 216: '#7F007F',
296
- 217: '#7F3F7F',
297
- 218: '#4C004C',
298
- 219: '#4C264C',
299
- 220: '#FF00BF',
300
- 221: '#FF7FDF',
301
- 222: '#CC0099',
302
- 223: '#CC66B2',
303
- 224: '#990072',
304
- 225: '#994C85',
305
- 226: '#7F005F',
306
- 227: '#7F3F6F',
307
- 228: '#4C0039',
308
- 229: '#4C2642',
309
- 230: '#FF007F',
310
- 231: '#FF7FBF',
311
- 232: '#CC0066',
312
- 233: '#CC6699',
313
- 234: '#99004C',
314
- 235: '#994C72',
315
- 236: '#7F003F',
316
- 237: '#7F3F5F',
317
- 238: '#4C0026',
318
- 239: '#4C2639',
319
- 240: '#FF003F',
320
- 241: '#FF7F9F',
321
- 242: '#CC0033',
322
- 243: '#CC667F',
323
- 244: '#990026',
324
- 245: '#994C5F',
325
- 246: '#7F001F',
326
- 247: '#7F3F4F',
327
- 248: '#4C0013',
328
- 249: '#4C262F',
329
- 250: '#333333',
330
- 251: '#5B5B5B',
331
- 252: '#848484',
332
- 253: '#ADADAD',
333
- 254: '#D6D6D6',
334
- 255: '#FFFFFF',
335
- 256: 'BYLAYER', // '#000000'
140
+ /**
141
+ * Map the 256 AutoCAD colours to the equivalent rgb colour
142
+ */
143
+ static rgb_conversion_table = {
144
+
145
+ 0: { r: 0, g: 0, b: 0 }, // ByBlock
146
+ 1: { r: 255, g: 0, b: 0 },
147
+ 2: { r: 255, g: 255, b: 0 },
148
+ 3: { r: 0, g: 255, b: 0 },
149
+ 4: { r: 0, g: 255, b: 255 },
150
+ 5: { r: 0, g: 0, b: 255 },
151
+ 6: { r: 255, g: 0, b: 255 },
152
+ 7: { r: 254, g: 254, b: 254 }, // changes colour based on background colour (use {254, 254, 254} to avoid duplicate with ACI 255)
153
+ 8: { r: 128, g: 128, b: 128 },
154
+ 9: { r: 192, g: 192, b: 129 },
155
+ 10: { r: 254, g: 0, b: 0 }, // {use {254, 0, 0} to avoid duplicate with ACI 1}
156
+ 11: { r: 255, g: 127, b: 127 },
157
+ 12: { r: 204, g: 0, b: 0 },
158
+ 13: { r: 204, g: 102, b: 102 },
159
+ 14: { r: 138, g: 0, b: 0 },
160
+ 15: { r: 138, g: 76, b: 76 },
161
+ 16: { r: 127, g: 0, b: 0 },
162
+ 17: { r: 127, g: 63, b: 63 },
163
+ 18: { r: 76, g: 0, b: 0 },
164
+ 19: { r: 76, g: 38, b: 38 },
165
+ 20: { r: 255, g: 63, b: 0 },
166
+ 21: { r: 255, g: 159, b: 127 },
167
+ 22: { r: 204, g: 51, b: 0 },
168
+ 23: { r: 204, g: 127, b: 102 },
169
+ 24: { r: 153, g: 38, b: 0 },
170
+ 25: { r: 153, g: 95, b: 76 },
171
+ 26: { r: 127, g: 31, b: 0 },
172
+ 27: { r: 127, g: 79, b: 63 },
173
+ 28: { r: 76, g: 19, b: 0 },
174
+ 29: { r: 76, g: 47, b: 38 },
175
+ 30: { r: 255, g: 127, b: 0 },
176
+ 31: { r: 255, g: 191, b: 127 },
177
+ 32: { r: 204, g: 94, b: 0 },
178
+ 33: { r: 204, g: 157, b: 102 },
179
+ 34: { r: 153, g: 76, b: 0 },
180
+ 35: { r: 153, g: 114, b: 76 },
181
+ 36: { r: 127, g: 63, b: 0 },
182
+ 37: { r: 127, g: 95, b: 63 },
183
+ 38: { r: 76, g: 38, b: 0 },
184
+ 39: { r: 76, g: 57, b: 38 },
185
+ 40: { r: 255, g: 191, b: 0 },
186
+ 41: { r: 255, g: 223, b: 127 },
187
+ 42: { r: 204, g: 127, b: 0 },
188
+ 43: { r: 204, g: 173, b: 102 },
189
+ 44: { r: 153, g: 114, b: 0 },
190
+ 45: { r: 153, g: 133, b: 76 },
191
+ 46: { r: 127, g: 95, b: 0 },
192
+ 47: { r: 127, g: 111, b: 63 },
193
+ 48: { r: 76, g: 57, b: 0 },
194
+ 49: { r: 76, g: 66, b: 38 },
195
+ 50: { r: 254, g: 254, b: 0 }, // {use {254, 254, 0} to avoid duplicate with ACI 2}
196
+ 51: { r: 255, g: 255, b: 127 },
197
+ 52: { r: 204, g: 204, b: 0 },
198
+ 53: { r: 204, g: 204, b: 102 },
199
+ 54: { r: 153, g: 153, b: 0 },
200
+ 55: { r: 153, g: 153, b: 76 },
201
+ 56: { r: 127, g: 127, b: 0 },
202
+ 57: { r: 127, g: 127, b: 63 },
203
+ 58: { r: 76, g: 76, b: 0 },
204
+ 59: { r: 76, g: 76, b: 38 },
205
+ 60: { r: 191, g: 255, b: 0 },
206
+ 61: { r: 223, g: 255, b: 127 },
207
+ 62: { r: 127, g: 204, b: 0 },
208
+ 63: { r: 173, g: 204, b: 102 },
209
+ 64: { r: 114, g: 153, b: 0 },
210
+ 65: { r: 133, g: 153, b: 76 },
211
+ 66: { r: 95, g: 127, b: 0 },
212
+ 67: { r: 111, g: 127, b: 63 },
213
+ 68: { r: 57, g: 76, b: 0 },
214
+ 69: { r: 66, g: 76, b: 38 },
215
+ 70: { r: 127, g: 255, b: 0 },
216
+ 71: { r: 191, g: 255, b: 127 },
217
+ 72: { r: 94, g: 204, b: 0 },
218
+ 73: { r: 157, g: 204, b: 102 },
219
+ 74: { r: 76, g: 153, b: 0 },
220
+ 75: { r: 114, g: 153, b: 76 },
221
+ 76: { r: 63, g: 127, b: 0 },
222
+ 77: { r: 95, g: 127, b: 63 },
223
+ 78: { r: 38, g: 76, b: 0 },
224
+ 79: { r: 57, g: 76, b: 38 },
225
+ 80: { r: 63, g: 255, b: 0 },
226
+ 81: { r: 159, g: 255, b: 127 },
227
+ 82: { r: 51, g: 204, b: 0 },
228
+ 83: { r: 127, g: 204, b: 102 },
229
+ 84: { r: 38, g: 153, b: 0 },
230
+ 85: { r: 95, g: 153, b: 76 },
231
+ 86: { r: 31, g: 127, b: 0 },
232
+ 87: { r: 79, g: 127, b: 63 },
233
+ 88: { r: 19, g: 76, b: 0 },
234
+ 89: { r: 47, g: 76, b: 38 },
235
+ 90: { r: 0, g: 254, b: 0 }, // {use {0, 254, 0} to avoid duplicate with ACI 3}
236
+ 91: { r: 127, g: 255, b: 127 },
237
+ 92: { r: 0, g: 204, b: 0 },
238
+ 93: { r: 102, g: 204, b: 102 },
239
+ 94: { r: 0, g: 153, b: 0 },
240
+ 95: { r: 76, g: 153, b: 76 },
241
+ 96: { r: 0, g: 127, b: 0 },
242
+ 97: { r: 63, g: 127, b: 63 },
243
+ 98: { r: 0, g: 76, b: 0 },
244
+ 99: { r: 38, g: 76, b: 38 },
245
+ 100: { r: 0, g: 255, b: 63 },
246
+ 101: { r: 127, g: 255, b: 159 },
247
+ 102: { r: 0, g: 204, b: 51 },
248
+ 103: { r: 102, g: 204, b: 127 },
249
+ 104: { r: 0, g: 153, b: 38 },
250
+ 105: { r: 76, g: 153, b: 95 },
251
+ 106: { r: 0, g: 127, b: 31 },
252
+ 107: { r: 63, g: 127, b: 79 },
253
+ 108: { r: 0, g: 76, b: 19 },
254
+ 109: { r: 38, g: 76, b: 47 },
255
+ 110: { r: 0, g: 255, b: 127 },
256
+ 111: { r: 127, g: 255, b: 191 },
257
+ 112: { r: 0, g: 204, b: 94 },
258
+ 113: { r: 102, g: 204, b: 157 },
259
+ 114: { r: 0, g: 153, b: 76 },
260
+ 115: { r: 76, g: 153, b: 114 },
261
+ 116: { r: 0, g: 127, b: 63 },
262
+ 117: { r: 63, g: 127, b: 95 },
263
+ 118: { r: 0, g: 76, b: 38 },
264
+ 119: { r: 38, g: 76, b: 57 },
265
+ 120: { r: 0, g: 255, b: 191 },
266
+ 121: { r: 127, g: 255, b: 223 },
267
+ 122: { r: 0, g: 204, b: 127 },
268
+ 123: { r: 102, g: 204, b: 173 },
269
+ 124: { r: 0, g: 153, b: 114 },
270
+ 125: { r: 76, g: 153, b: 133 },
271
+ 126: { r: 0, g: 127, b: 95 },
272
+ 127: { r: 63, g: 127, b: 111 },
273
+ 128: { r: 0, g: 76, b: 57 },
274
+ 129: { r: 38, g: 76, b: 66 },
275
+ 130: { r: 0, g: 254, b: 254 }, // {use {0, 254, 254} to avoid duplicate with ACI 4}
276
+ 131: { r: 127, g: 255, b: 255 },
277
+ 132: { r: 0, g: 204, b: 204 },
278
+ 133: { r: 102, g: 204, b: 204 },
279
+ 134: { r: 0, g: 153, b: 153 },
280
+ 135: { r: 76, g: 153, b: 153 },
281
+ 136: { r: 0, g: 127, b: 127 },
282
+ 137: { r: 63, g: 127, b: 127 },
283
+ 138: { r: 0, g: 76, b: 76 },
284
+ 139: { r: 38, g: 76, b: 76 },
285
+ 140: { r: 0, g: 191, b: 255 },
286
+ 141: { r: 127, g: 223, b: 255 },
287
+ 142: { r: 0, g: 127, b: 204 },
288
+ 143: { r: 102, g: 173, b: 204 },
289
+ 144: { r: 0, g: 114, b: 153 },
290
+ 145: { r: 76, g: 133, b: 153 },
291
+ 146: { r: 0, g: 95, b: 127 },
292
+ 147: { r: 63, g: 111, b: 127 },
293
+ 148: { r: 0, g: 57, b: 76 },
294
+ 149: { r: 38, g: 66, b: 76 },
295
+ 150: { r: 0, g: 127, b: 255 },
296
+ 151: { r: 127, g: 191, b: 255 },
297
+ 152: { r: 0, g: 94, b: 204 },
298
+ 153: { r: 102, g: 157, b: 204 },
299
+ 154: { r: 0, g: 76, b: 153 },
300
+ 155: { r: 76, g: 114, b: 153 },
301
+ 156: { r: 0, g: 63, b: 127 },
302
+ 157: { r: 63, g: 76, b: 127 },
303
+ 158: { r: 0, g: 38, b: 76 },
304
+ 159: { r: 38, g: 57, b: 76 },
305
+ 160: { r: 0, g: 63, b: 255 },
306
+ 161: { r: 127, g: 159, b: 255 },
307
+ 162: { r: 0, g: 51, b: 204 },
308
+ 163: { r: 102, g: 127, b: 204 },
309
+ 164: { r: 0, g: 38, b: 153 },
310
+ 165: { r: 76, g: 95, b: 153 },
311
+ 166: { r: 0, g: 31, b: 127 },
312
+ 167: { r: 63, g: 79, b: 127 },
313
+ 168: { r: 0, g: 19, b: 76 },
314
+ 169: { r: 38, g: 47, b: 76 },
315
+ 170: { r: 0, g: 0, b: 254 }, // {use {0, 0, 254} to avoid duplicate with ACI 5}
316
+ 171: { r: 127, g: 127, b: 255 },
317
+ 172: { r: 0, g: 0, b: 204 },
318
+ 173: { r: 102, g: 102, b: 204 },
319
+ 174: { r: 0, g: 0, b: 153 },
320
+ 175: { r: 76, g: 76, b: 153 },
321
+ 176: { r: 0, g: 0, b: 127 },
322
+ 177: { r: 63, g: 63, b: 127 },
323
+ 178: { r: 0, g: 0, b: 76 },
324
+ 179: { r: 38, g: 38, b: 76 },
325
+ 180: { r: 63, g: 0, b: 255 },
326
+ 181: { r: 159, g: 127, b: 255 },
327
+ 182: { r: 51, g: 0, b: 204 },
328
+ 183: { r: 127, g: 102, b: 204 },
329
+ 184: { r: 38, g: 0, b: 153 },
330
+ 185: { r: 95, g: 76, b: 153 },
331
+ 186: { r: 31, g: 0, b: 127 },
332
+ 187: { r: 79, g: 63, b: 127 },
333
+ 188: { r: 19, g: 0, b: 76 },
334
+ 189: { r: 59, g: 38, b: 76 },
335
+ 190: { r: 127, g: 0, b: 255 },
336
+ 191: { r: 191, g: 127, b: 255 },
337
+ 192: { r: 94, g: 0, b: 204 },
338
+ 193: { r: 157, g: 102, b: 204 },
339
+ 194: { r: 76, g: 0, b: 153 },
340
+ 195: { r: 114, g: 76, b: 153 },
341
+ 196: { r: 63, g: 0, b: 127 },
342
+ 197: { r: 95, g: 63, b: 127 },
343
+ 198: { r: 38, g: 0, b: 76 },
344
+ 199: { r: 57, g: 38, b: 76 },
345
+ 200: { r: 191, g: 0, b: 255 },
346
+ 201: { r: 223, g: 127, b: 255 },
347
+ 202: { r: 127, g: 0, b: 204 },
348
+ 203: { r: 173, g: 102, b: 204 },
349
+ 204: { r: 114, g: 0, b: 153 },
350
+ 205: { r: 118, g: 86, b: 153 },
351
+ 206: { r: 95, g: 0, b: 127 },
352
+ 207: { r: 111, g: 63, b: 127 },
353
+ 208: { r: 57, g: 0, b: 76 },
354
+ 209: { r: 66, g: 38, b: 76 },
355
+ 210: { r: 254, g: 0, b: 254 }, // {use {254, 0, 254} to avoid duplicate with ACI 6}
356
+ 211: { r: 255, g: 127, b: 255 },
357
+ 212: { r: 204, g: 0, b: 204 },
358
+ 213: { r: 204, g: 102, b: 204 },
359
+ 214: { r: 153, g: 0, b: 153 },
360
+ 215: { r: 153, g: 76, b: 153 },
361
+ 216: { r: 127, g: 0, b: 127 },
362
+ 217: { r: 127, g: 63, b: 127 },
363
+ 218: { r: 76, g: 0, b: 76 },
364
+ 219: { r: 76, g: 38, b: 76 },
365
+ 220: { r: 255, g: 0, b: 191 },
366
+ 221: { r: 255, g: 127, b: 223 },
367
+ 222: { r: 204, g: 0, b: 127 },
368
+ 223: { r: 204, g: 102, b: 173 },
369
+ 224: { r: 153, g: 0, b: 114 },
370
+ 225: { r: 153, g: 76, b: 133 },
371
+ 226: { r: 127, g: 0, b: 95 },
372
+ 227: { r: 127, g: 63, b: 111 },
373
+ 228: { r: 76, g: 0, b: 57 },
374
+ 229: { r: 76, g: 38, b: 66 },
375
+ 230: { r: 255, g: 0, b: 127 },
376
+ 231: { r: 255, g: 127, b: 191 },
377
+ 232: { r: 204, g: 0, b: 94 },
378
+ 233: { r: 204, g: 102, b: 157 },
379
+ 234: { r: 153, g: 0, b: 76 },
380
+ 235: { r: 153, g: 76, b: 114 },
381
+ 236: { r: 127, g: 0, b: 63 },
382
+ 237: { r: 127, g: 63, b: 95 },
383
+ 238: { r: 76, g: 0, b: 38 },
384
+ 239: { r: 76, g: 38, b: 57 },
385
+ 240: { r: 255, g: 0, b: 63 },
386
+ 241: { r: 255, g: 127, b: 159 },
387
+ 242: { r: 204, g: 0, b: 51 },
388
+ 243: { r: 204, g: 102, b: 127 },
389
+ 244: { r: 153, g: 0, b: 38 },
390
+ 245: { r: 153, g: 76, b: 95 },
391
+ 246: { r: 127, g: 0, b: 31 },
392
+ 247: { r: 127, g: 63, b: 79 },
393
+ 248: { r: 76, g: 0, b: 19 },
394
+ 249: { r: 76, g: 38, b: 47 },
395
+ 250: { r: 51, g: 51, b: 51 },
396
+ 251: { r: 91, g: 91, b: 91 },
397
+ 252: { r: 132, g: 132, b: 132 },
398
+ 253: { r: 173, g: 173, b: 173 },
399
+ 254: { r: 214, g: 214, b: 214 },
400
+ 255: { r: 255, g: 255, b: 255 },
401
+ 256: { r: 1, g: 1, b: 1 }, // ByLayer (Adjusted to {1, 1, 1} to be unique)
336
402
  };
337
403
  }