vexell 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Cargo.lock +715 -0
- package/Cargo.toml +10 -0
- package/README.md +28 -0
- package/index.js +37 -0
- package/output_node.png +0 -0
- package/output_rust.png +0 -0
- package/package.json +28 -0
- package/src/main.rs +58 -0
package/Cargo.lock
ADDED
|
@@ -0,0 +1,715 @@
|
|
|
1
|
+
# This file is automatically @generated by Cargo.
|
|
2
|
+
# It is not intended for manual editing.
|
|
3
|
+
version = 4
|
|
4
|
+
|
|
5
|
+
[[package]]
|
|
6
|
+
name = "Vexell"
|
|
7
|
+
version = "0.1.0"
|
|
8
|
+
dependencies = [
|
|
9
|
+
"clap",
|
|
10
|
+
"resvg",
|
|
11
|
+
"tiny-skia",
|
|
12
|
+
"usvg",
|
|
13
|
+
]
|
|
14
|
+
|
|
15
|
+
[[package]]
|
|
16
|
+
name = "adler2"
|
|
17
|
+
version = "2.0.1"
|
|
18
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
19
|
+
checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa"
|
|
20
|
+
|
|
21
|
+
[[package]]
|
|
22
|
+
name = "anstream"
|
|
23
|
+
version = "1.0.0"
|
|
24
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
25
|
+
checksum = "824a212faf96e9acacdbd09febd34438f8f711fb84e09a8916013cd7815ca28d"
|
|
26
|
+
dependencies = [
|
|
27
|
+
"anstyle",
|
|
28
|
+
"anstyle-parse",
|
|
29
|
+
"anstyle-query",
|
|
30
|
+
"anstyle-wincon",
|
|
31
|
+
"colorchoice",
|
|
32
|
+
"is_terminal_polyfill",
|
|
33
|
+
"utf8parse",
|
|
34
|
+
]
|
|
35
|
+
|
|
36
|
+
[[package]]
|
|
37
|
+
name = "anstyle"
|
|
38
|
+
version = "1.0.14"
|
|
39
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
40
|
+
checksum = "940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000"
|
|
41
|
+
|
|
42
|
+
[[package]]
|
|
43
|
+
name = "anstyle-parse"
|
|
44
|
+
version = "1.0.0"
|
|
45
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
46
|
+
checksum = "52ce7f38b242319f7cabaa6813055467063ecdc9d355bbb4ce0c68908cd8130e"
|
|
47
|
+
dependencies = [
|
|
48
|
+
"utf8parse",
|
|
49
|
+
]
|
|
50
|
+
|
|
51
|
+
[[package]]
|
|
52
|
+
name = "anstyle-query"
|
|
53
|
+
version = "1.1.5"
|
|
54
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
55
|
+
checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc"
|
|
56
|
+
dependencies = [
|
|
57
|
+
"windows-sys",
|
|
58
|
+
]
|
|
59
|
+
|
|
60
|
+
[[package]]
|
|
61
|
+
name = "anstyle-wincon"
|
|
62
|
+
version = "3.0.11"
|
|
63
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
64
|
+
checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d"
|
|
65
|
+
dependencies = [
|
|
66
|
+
"anstyle",
|
|
67
|
+
"once_cell_polyfill",
|
|
68
|
+
"windows-sys",
|
|
69
|
+
]
|
|
70
|
+
|
|
71
|
+
[[package]]
|
|
72
|
+
name = "arrayref"
|
|
73
|
+
version = "0.3.9"
|
|
74
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
75
|
+
checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb"
|
|
76
|
+
|
|
77
|
+
[[package]]
|
|
78
|
+
name = "arrayvec"
|
|
79
|
+
version = "0.7.7"
|
|
80
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
81
|
+
checksum = "f02882884d3e1bc524fb12c79f107f6ad0e1cfd498c536ffb494301740995dfe"
|
|
82
|
+
|
|
83
|
+
[[package]]
|
|
84
|
+
name = "autocfg"
|
|
85
|
+
version = "1.5.1"
|
|
86
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
87
|
+
checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53"
|
|
88
|
+
|
|
89
|
+
[[package]]
|
|
90
|
+
name = "base64"
|
|
91
|
+
version = "0.22.1"
|
|
92
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
93
|
+
checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6"
|
|
94
|
+
|
|
95
|
+
[[package]]
|
|
96
|
+
name = "bitflags"
|
|
97
|
+
version = "2.13.0"
|
|
98
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
99
|
+
checksum = "b4388bee8683e3d04af747c73422af53102d2bd24d9eadb6cbc100baef4b43f8"
|
|
100
|
+
|
|
101
|
+
[[package]]
|
|
102
|
+
name = "bytemuck"
|
|
103
|
+
version = "1.25.0"
|
|
104
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
105
|
+
checksum = "c8efb64bd706a16a1bdde310ae86b351e4d21550d98d056f22f8a7f7a2183fec"
|
|
106
|
+
|
|
107
|
+
[[package]]
|
|
108
|
+
name = "byteorder-lite"
|
|
109
|
+
version = "0.1.0"
|
|
110
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
111
|
+
checksum = "8f1fe948ff07f4bd06c30984e69f5b4899c516a3ef74f34df92a2df2ab535495"
|
|
112
|
+
|
|
113
|
+
[[package]]
|
|
114
|
+
name = "cfg-if"
|
|
115
|
+
version = "1.0.4"
|
|
116
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
117
|
+
checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801"
|
|
118
|
+
|
|
119
|
+
[[package]]
|
|
120
|
+
name = "clap"
|
|
121
|
+
version = "4.6.1"
|
|
122
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
123
|
+
checksum = "1ddb117e43bbf7dacf0a4190fef4d345b9bad68dfc649cb349e7d17d28428e51"
|
|
124
|
+
dependencies = [
|
|
125
|
+
"clap_builder",
|
|
126
|
+
"clap_derive",
|
|
127
|
+
]
|
|
128
|
+
|
|
129
|
+
[[package]]
|
|
130
|
+
name = "clap_builder"
|
|
131
|
+
version = "4.6.0"
|
|
132
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
133
|
+
checksum = "714a53001bf66416adb0e2ef5ac857140e7dc3a0c48fb28b2f10762fc4b5069f"
|
|
134
|
+
dependencies = [
|
|
135
|
+
"anstream",
|
|
136
|
+
"anstyle",
|
|
137
|
+
"clap_lex",
|
|
138
|
+
"strsim",
|
|
139
|
+
]
|
|
140
|
+
|
|
141
|
+
[[package]]
|
|
142
|
+
name = "clap_derive"
|
|
143
|
+
version = "4.6.1"
|
|
144
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
145
|
+
checksum = "f2ce8604710f6733aa641a2b3731eaa1e8b3d9973d5e3565da11800813f997a9"
|
|
146
|
+
dependencies = [
|
|
147
|
+
"heck",
|
|
148
|
+
"proc-macro2",
|
|
149
|
+
"quote",
|
|
150
|
+
"syn",
|
|
151
|
+
]
|
|
152
|
+
|
|
153
|
+
[[package]]
|
|
154
|
+
name = "clap_lex"
|
|
155
|
+
version = "1.1.0"
|
|
156
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
157
|
+
checksum = "c8d4a3bb8b1e0c1050499d1815f5ab16d04f0959b233085fb31653fbfc9d98f9"
|
|
158
|
+
|
|
159
|
+
[[package]]
|
|
160
|
+
name = "color_quant"
|
|
161
|
+
version = "1.1.0"
|
|
162
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
163
|
+
checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b"
|
|
164
|
+
|
|
165
|
+
[[package]]
|
|
166
|
+
name = "colorchoice"
|
|
167
|
+
version = "1.0.5"
|
|
168
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
169
|
+
checksum = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570"
|
|
170
|
+
|
|
171
|
+
[[package]]
|
|
172
|
+
name = "core_maths"
|
|
173
|
+
version = "0.1.1"
|
|
174
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
175
|
+
checksum = "77745e017f5edba1a9c1d854f6f3a52dac8a12dd5af5d2f54aecf61e43d80d30"
|
|
176
|
+
dependencies = [
|
|
177
|
+
"libm",
|
|
178
|
+
]
|
|
179
|
+
|
|
180
|
+
[[package]]
|
|
181
|
+
name = "crc32fast"
|
|
182
|
+
version = "1.5.0"
|
|
183
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
184
|
+
checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511"
|
|
185
|
+
dependencies = [
|
|
186
|
+
"cfg-if",
|
|
187
|
+
]
|
|
188
|
+
|
|
189
|
+
[[package]]
|
|
190
|
+
name = "data-url"
|
|
191
|
+
version = "0.3.2"
|
|
192
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
193
|
+
checksum = "be1e0bca6c3637f992fc1cc7cbc52a78c1ef6db076dbf1059c4323d6a2048376"
|
|
194
|
+
|
|
195
|
+
[[package]]
|
|
196
|
+
name = "euclid"
|
|
197
|
+
version = "0.22.14"
|
|
198
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
199
|
+
checksum = "f1a05365e3b1c6d1650318537c7460c6923f1abdd272ad6842baa2b509957a06"
|
|
200
|
+
dependencies = [
|
|
201
|
+
"num-traits",
|
|
202
|
+
]
|
|
203
|
+
|
|
204
|
+
[[package]]
|
|
205
|
+
name = "fdeflate"
|
|
206
|
+
version = "0.3.7"
|
|
207
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
208
|
+
checksum = "1e6853b52649d4ac5c0bd02320cddc5ba956bdb407c4b75a2c6b75bf51500f8c"
|
|
209
|
+
dependencies = [
|
|
210
|
+
"simd-adler32",
|
|
211
|
+
]
|
|
212
|
+
|
|
213
|
+
[[package]]
|
|
214
|
+
name = "flate2"
|
|
215
|
+
version = "1.1.9"
|
|
216
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
217
|
+
checksum = "843fba2746e448b37e26a819579957415c8cef339bf08564fe8b7ddbd959573c"
|
|
218
|
+
dependencies = [
|
|
219
|
+
"crc32fast",
|
|
220
|
+
"miniz_oxide",
|
|
221
|
+
]
|
|
222
|
+
|
|
223
|
+
[[package]]
|
|
224
|
+
name = "float-cmp"
|
|
225
|
+
version = "0.9.0"
|
|
226
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
227
|
+
checksum = "98de4bbd547a563b716d8dfa9aad1cb19bfab00f4fa09a6a4ed21dbcf44ce9c4"
|
|
228
|
+
|
|
229
|
+
[[package]]
|
|
230
|
+
name = "fontconfig-parser"
|
|
231
|
+
version = "0.5.8"
|
|
232
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
233
|
+
checksum = "bbc773e24e02d4ddd8395fd30dc147524273a83e54e0f312d986ea30de5f5646"
|
|
234
|
+
dependencies = [
|
|
235
|
+
"roxmltree 0.20.0",
|
|
236
|
+
]
|
|
237
|
+
|
|
238
|
+
[[package]]
|
|
239
|
+
name = "fontdb"
|
|
240
|
+
version = "0.23.0"
|
|
241
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
242
|
+
checksum = "457e789b3d1202543297a350643cf459f836cade38934e7a4cf6a39e7cde2905"
|
|
243
|
+
dependencies = [
|
|
244
|
+
"fontconfig-parser",
|
|
245
|
+
"log",
|
|
246
|
+
"memmap2",
|
|
247
|
+
"slotmap",
|
|
248
|
+
"tinyvec",
|
|
249
|
+
"ttf-parser",
|
|
250
|
+
]
|
|
251
|
+
|
|
252
|
+
[[package]]
|
|
253
|
+
name = "gif"
|
|
254
|
+
version = "0.14.2"
|
|
255
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
256
|
+
checksum = "ee8cfcc411d9adbbaba82fb72661cc1bcca13e8bba98b364e62b2dba8f960159"
|
|
257
|
+
dependencies = [
|
|
258
|
+
"color_quant",
|
|
259
|
+
"weezl",
|
|
260
|
+
]
|
|
261
|
+
|
|
262
|
+
[[package]]
|
|
263
|
+
name = "heck"
|
|
264
|
+
version = "0.5.0"
|
|
265
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
266
|
+
checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
|
|
267
|
+
|
|
268
|
+
[[package]]
|
|
269
|
+
name = "image-webp"
|
|
270
|
+
version = "0.2.4"
|
|
271
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
272
|
+
checksum = "525e9ff3e1a4be2fbea1fdf0e98686a6d98b4d8f937e1bf7402245af1909e8c3"
|
|
273
|
+
dependencies = [
|
|
274
|
+
"byteorder-lite",
|
|
275
|
+
"quick-error",
|
|
276
|
+
]
|
|
277
|
+
|
|
278
|
+
[[package]]
|
|
279
|
+
name = "imagesize"
|
|
280
|
+
version = "0.14.0"
|
|
281
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
282
|
+
checksum = "09e54e57b4c48b40f7aec75635392b12b3421fa26fe8b4332e63138ed278459c"
|
|
283
|
+
|
|
284
|
+
[[package]]
|
|
285
|
+
name = "is_terminal_polyfill"
|
|
286
|
+
version = "1.70.2"
|
|
287
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
288
|
+
checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695"
|
|
289
|
+
|
|
290
|
+
[[package]]
|
|
291
|
+
name = "kurbo"
|
|
292
|
+
version = "0.13.1"
|
|
293
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
294
|
+
checksum = "4b60dfc32f652b926df6192e55525b16d186c69d47876c3ead4da5cc9f8450e2"
|
|
295
|
+
dependencies = [
|
|
296
|
+
"arrayvec",
|
|
297
|
+
"euclid",
|
|
298
|
+
"polycool",
|
|
299
|
+
"smallvec",
|
|
300
|
+
]
|
|
301
|
+
|
|
302
|
+
[[package]]
|
|
303
|
+
name = "libc"
|
|
304
|
+
version = "0.2.186"
|
|
305
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
306
|
+
checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66"
|
|
307
|
+
|
|
308
|
+
[[package]]
|
|
309
|
+
name = "libm"
|
|
310
|
+
version = "0.2.16"
|
|
311
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
312
|
+
checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981"
|
|
313
|
+
|
|
314
|
+
[[package]]
|
|
315
|
+
name = "log"
|
|
316
|
+
version = "0.4.33"
|
|
317
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
318
|
+
checksum = "0ceec5bc11778974d1bcb055b18002eba7f4b3518b6a0081b3af5f21666da9ad"
|
|
319
|
+
|
|
320
|
+
[[package]]
|
|
321
|
+
name = "memchr"
|
|
322
|
+
version = "2.8.2"
|
|
323
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
324
|
+
checksum = "88904434abc2901f197fe8cc55f0445e7ded921dba5911dad2e2b39b48e663c4"
|
|
325
|
+
|
|
326
|
+
[[package]]
|
|
327
|
+
name = "memmap2"
|
|
328
|
+
version = "0.9.10"
|
|
329
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
330
|
+
checksum = "714098028fe011992e1c3962653c96b2d578c4b4bce9036e15ff220319b1e0e3"
|
|
331
|
+
dependencies = [
|
|
332
|
+
"libc",
|
|
333
|
+
]
|
|
334
|
+
|
|
335
|
+
[[package]]
|
|
336
|
+
name = "miniz_oxide"
|
|
337
|
+
version = "0.8.9"
|
|
338
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
339
|
+
checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316"
|
|
340
|
+
dependencies = [
|
|
341
|
+
"adler2",
|
|
342
|
+
"simd-adler32",
|
|
343
|
+
]
|
|
344
|
+
|
|
345
|
+
[[package]]
|
|
346
|
+
name = "num-traits"
|
|
347
|
+
version = "0.2.19"
|
|
348
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
349
|
+
checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
|
|
350
|
+
dependencies = [
|
|
351
|
+
"autocfg",
|
|
352
|
+
]
|
|
353
|
+
|
|
354
|
+
[[package]]
|
|
355
|
+
name = "once_cell_polyfill"
|
|
356
|
+
version = "1.70.2"
|
|
357
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
358
|
+
checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe"
|
|
359
|
+
|
|
360
|
+
[[package]]
|
|
361
|
+
name = "pico-args"
|
|
362
|
+
version = "0.5.0"
|
|
363
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
364
|
+
checksum = "5be167a7af36ee22fe3115051bc51f6e6c7054c9348e28deb4f49bd6f705a315"
|
|
365
|
+
|
|
366
|
+
[[package]]
|
|
367
|
+
name = "png"
|
|
368
|
+
version = "0.18.1"
|
|
369
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
370
|
+
checksum = "60769b8b31b2a9f263dae2776c37b1b28ae246943cf719eb6946a1db05128a61"
|
|
371
|
+
dependencies = [
|
|
372
|
+
"bitflags",
|
|
373
|
+
"crc32fast",
|
|
374
|
+
"fdeflate",
|
|
375
|
+
"flate2",
|
|
376
|
+
"miniz_oxide",
|
|
377
|
+
]
|
|
378
|
+
|
|
379
|
+
[[package]]
|
|
380
|
+
name = "polycool"
|
|
381
|
+
version = "0.4.0"
|
|
382
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
383
|
+
checksum = "50596ddc09eb5ad5f75cacd40209568e66df71baf86e1499a0e99c4cff12a5a6"
|
|
384
|
+
dependencies = [
|
|
385
|
+
"arrayvec",
|
|
386
|
+
]
|
|
387
|
+
|
|
388
|
+
[[package]]
|
|
389
|
+
name = "proc-macro2"
|
|
390
|
+
version = "1.0.106"
|
|
391
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
392
|
+
checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934"
|
|
393
|
+
dependencies = [
|
|
394
|
+
"unicode-ident",
|
|
395
|
+
]
|
|
396
|
+
|
|
397
|
+
[[package]]
|
|
398
|
+
name = "quick-error"
|
|
399
|
+
version = "2.0.1"
|
|
400
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
401
|
+
checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3"
|
|
402
|
+
|
|
403
|
+
[[package]]
|
|
404
|
+
name = "quote"
|
|
405
|
+
version = "1.0.45"
|
|
406
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
407
|
+
checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924"
|
|
408
|
+
dependencies = [
|
|
409
|
+
"proc-macro2",
|
|
410
|
+
]
|
|
411
|
+
|
|
412
|
+
[[package]]
|
|
413
|
+
name = "resvg"
|
|
414
|
+
version = "0.47.0"
|
|
415
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
416
|
+
checksum = "9be183ad6a216aa96f33e4c8033b0988b8b3ea6fd2359d19af5bac4643fd8e81"
|
|
417
|
+
dependencies = [
|
|
418
|
+
"gif",
|
|
419
|
+
"image-webp",
|
|
420
|
+
"log",
|
|
421
|
+
"pico-args",
|
|
422
|
+
"rgb",
|
|
423
|
+
"svgtypes",
|
|
424
|
+
"tiny-skia",
|
|
425
|
+
"usvg",
|
|
426
|
+
"zune-jpeg",
|
|
427
|
+
]
|
|
428
|
+
|
|
429
|
+
[[package]]
|
|
430
|
+
name = "rgb"
|
|
431
|
+
version = "0.8.53"
|
|
432
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
433
|
+
checksum = "47b34b781b31e5d73e9fbc8689c70551fd1ade9a19e3e28cfec8580a79290cc4"
|
|
434
|
+
dependencies = [
|
|
435
|
+
"bytemuck",
|
|
436
|
+
]
|
|
437
|
+
|
|
438
|
+
[[package]]
|
|
439
|
+
name = "roxmltree"
|
|
440
|
+
version = "0.20.0"
|
|
441
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
442
|
+
checksum = "6c20b6793b5c2fa6553b250154b78d6d0db37e72700ae35fad9387a46f487c97"
|
|
443
|
+
|
|
444
|
+
[[package]]
|
|
445
|
+
name = "roxmltree"
|
|
446
|
+
version = "0.21.1"
|
|
447
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
448
|
+
checksum = "f1964b10c76125c36f8afe190065a4bf9a87bf324842c05701330bba9f1cacbb"
|
|
449
|
+
dependencies = [
|
|
450
|
+
"memchr",
|
|
451
|
+
]
|
|
452
|
+
|
|
453
|
+
[[package]]
|
|
454
|
+
name = "rustybuzz"
|
|
455
|
+
version = "0.20.1"
|
|
456
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
457
|
+
checksum = "fd3c7c96f8a08ee34eff8857b11b49b07d71d1c3f4e88f8a88d4c9e9f90b1702"
|
|
458
|
+
dependencies = [
|
|
459
|
+
"bitflags",
|
|
460
|
+
"bytemuck",
|
|
461
|
+
"core_maths",
|
|
462
|
+
"log",
|
|
463
|
+
"smallvec",
|
|
464
|
+
"ttf-parser",
|
|
465
|
+
"unicode-bidi-mirroring",
|
|
466
|
+
"unicode-ccc",
|
|
467
|
+
"unicode-properties",
|
|
468
|
+
"unicode-script",
|
|
469
|
+
]
|
|
470
|
+
|
|
471
|
+
[[package]]
|
|
472
|
+
name = "simd-adler32"
|
|
473
|
+
version = "0.3.9"
|
|
474
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
475
|
+
checksum = "703d5c7ef118737c72f1af64ad2f6f8c5e1921f818cdcb97b8fe6fc69bf66214"
|
|
476
|
+
|
|
477
|
+
[[package]]
|
|
478
|
+
name = "simplecss"
|
|
479
|
+
version = "0.2.2"
|
|
480
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
481
|
+
checksum = "7a9c6883ca9c3c7c90e888de77b7a5c849c779d25d74a1269b0218b14e8b136c"
|
|
482
|
+
dependencies = [
|
|
483
|
+
"log",
|
|
484
|
+
]
|
|
485
|
+
|
|
486
|
+
[[package]]
|
|
487
|
+
name = "siphasher"
|
|
488
|
+
version = "1.0.3"
|
|
489
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
490
|
+
checksum = "8ee5873ec9cce0195efcb7a4e9507a04cd49aec9c83d0389df45b1ef7ba2e649"
|
|
491
|
+
|
|
492
|
+
[[package]]
|
|
493
|
+
name = "slotmap"
|
|
494
|
+
version = "1.1.1"
|
|
495
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
496
|
+
checksum = "bdd58c3c93c3d278ca835519292445cb4b0d4dc59ccfdf7ceadaab3f8aeb4038"
|
|
497
|
+
dependencies = [
|
|
498
|
+
"version_check",
|
|
499
|
+
]
|
|
500
|
+
|
|
501
|
+
[[package]]
|
|
502
|
+
name = "smallvec"
|
|
503
|
+
version = "1.15.2"
|
|
504
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
505
|
+
checksum = "8ed6a63f02c8539c91a8685a86f4099661ba3da017932f6ebbea6de3f0fa7c90"
|
|
506
|
+
|
|
507
|
+
[[package]]
|
|
508
|
+
name = "strict-num"
|
|
509
|
+
version = "0.1.1"
|
|
510
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
511
|
+
checksum = "6637bab7722d379c8b41ba849228d680cc12d0a45ba1fa2b48f2a30577a06731"
|
|
512
|
+
dependencies = [
|
|
513
|
+
"float-cmp",
|
|
514
|
+
]
|
|
515
|
+
|
|
516
|
+
[[package]]
|
|
517
|
+
name = "strsim"
|
|
518
|
+
version = "0.11.1"
|
|
519
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
520
|
+
checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
|
|
521
|
+
|
|
522
|
+
[[package]]
|
|
523
|
+
name = "svgtypes"
|
|
524
|
+
version = "0.16.1"
|
|
525
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
526
|
+
checksum = "695b5790b3131dafa99b3bbfd25a216edb3d216dad9ca208d4657bfb8f2abc3d"
|
|
527
|
+
dependencies = [
|
|
528
|
+
"kurbo",
|
|
529
|
+
"siphasher",
|
|
530
|
+
]
|
|
531
|
+
|
|
532
|
+
[[package]]
|
|
533
|
+
name = "syn"
|
|
534
|
+
version = "2.0.118"
|
|
535
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
536
|
+
checksum = "1b9ae57f904213ebb649ce6895b8a66c66f0203b9319718f69a5612a065b1422"
|
|
537
|
+
dependencies = [
|
|
538
|
+
"proc-macro2",
|
|
539
|
+
"quote",
|
|
540
|
+
"unicode-ident",
|
|
541
|
+
]
|
|
542
|
+
|
|
543
|
+
[[package]]
|
|
544
|
+
name = "tiny-skia"
|
|
545
|
+
version = "0.12.0"
|
|
546
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
547
|
+
checksum = "47ffee5eaaf5527f630fb0e356b90ebdec84d5d18d937c5e440350f88c5a91ea"
|
|
548
|
+
dependencies = [
|
|
549
|
+
"arrayref",
|
|
550
|
+
"arrayvec",
|
|
551
|
+
"bytemuck",
|
|
552
|
+
"cfg-if",
|
|
553
|
+
"log",
|
|
554
|
+
"png",
|
|
555
|
+
"tiny-skia-path",
|
|
556
|
+
]
|
|
557
|
+
|
|
558
|
+
[[package]]
|
|
559
|
+
name = "tiny-skia-path"
|
|
560
|
+
version = "0.12.0"
|
|
561
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
562
|
+
checksum = "edca365c3faccca67d06593c5980fa6c57687de727a03131735bb85f01fdeeb9"
|
|
563
|
+
dependencies = [
|
|
564
|
+
"arrayref",
|
|
565
|
+
"bytemuck",
|
|
566
|
+
"strict-num",
|
|
567
|
+
]
|
|
568
|
+
|
|
569
|
+
[[package]]
|
|
570
|
+
name = "tinyvec"
|
|
571
|
+
version = "1.11.0"
|
|
572
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
573
|
+
checksum = "3e61e67053d25a4e82c844e8424039d9745781b3fc4f32b8d55ed50f5f667ef3"
|
|
574
|
+
dependencies = [
|
|
575
|
+
"tinyvec_macros",
|
|
576
|
+
]
|
|
577
|
+
|
|
578
|
+
[[package]]
|
|
579
|
+
name = "tinyvec_macros"
|
|
580
|
+
version = "0.1.1"
|
|
581
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
582
|
+
checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
|
|
583
|
+
|
|
584
|
+
[[package]]
|
|
585
|
+
name = "ttf-parser"
|
|
586
|
+
version = "0.25.1"
|
|
587
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
588
|
+
checksum = "d2df906b07856748fa3f6e0ad0cbaa047052d4a7dd609e231c4f72cee8c36f31"
|
|
589
|
+
dependencies = [
|
|
590
|
+
"core_maths",
|
|
591
|
+
]
|
|
592
|
+
|
|
593
|
+
[[package]]
|
|
594
|
+
name = "unicode-bidi"
|
|
595
|
+
version = "0.3.18"
|
|
596
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
597
|
+
checksum = "5c1cb5db39152898a79168971543b1cb5020dff7fe43c8dc468b0885f5e29df5"
|
|
598
|
+
|
|
599
|
+
[[package]]
|
|
600
|
+
name = "unicode-bidi-mirroring"
|
|
601
|
+
version = "0.4.0"
|
|
602
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
603
|
+
checksum = "5dfa6e8c60bb66d49db113e0125ee8711b7647b5579dc7f5f19c42357ed039fe"
|
|
604
|
+
|
|
605
|
+
[[package]]
|
|
606
|
+
name = "unicode-ccc"
|
|
607
|
+
version = "0.4.0"
|
|
608
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
609
|
+
checksum = "ce61d488bcdc9bc8b5d1772c404828b17fc481c0a582b5581e95fb233aef503e"
|
|
610
|
+
|
|
611
|
+
[[package]]
|
|
612
|
+
name = "unicode-ident"
|
|
613
|
+
version = "1.0.24"
|
|
614
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
615
|
+
checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75"
|
|
616
|
+
|
|
617
|
+
[[package]]
|
|
618
|
+
name = "unicode-properties"
|
|
619
|
+
version = "0.1.4"
|
|
620
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
621
|
+
checksum = "7df058c713841ad818f1dc5d3fd88063241cc61f49f5fbea4b951e8cf5a8d71d"
|
|
622
|
+
|
|
623
|
+
[[package]]
|
|
624
|
+
name = "unicode-script"
|
|
625
|
+
version = "0.5.8"
|
|
626
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
627
|
+
checksum = "383ad40bb927465ec0ce7720e033cb4ca06912855fc35db31b5755d0de75b1ee"
|
|
628
|
+
|
|
629
|
+
[[package]]
|
|
630
|
+
name = "unicode-vo"
|
|
631
|
+
version = "0.1.0"
|
|
632
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
633
|
+
checksum = "b1d386ff53b415b7fe27b50bb44679e2cc4660272694b7b6f3326d8480823a94"
|
|
634
|
+
|
|
635
|
+
[[package]]
|
|
636
|
+
name = "usvg"
|
|
637
|
+
version = "0.47.0"
|
|
638
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
639
|
+
checksum = "d46cf96c5f498d36b7a9693bc6a7075c0bb9303189d61b2249b0dc3d309c07de"
|
|
640
|
+
dependencies = [
|
|
641
|
+
"base64",
|
|
642
|
+
"data-url",
|
|
643
|
+
"flate2",
|
|
644
|
+
"fontdb",
|
|
645
|
+
"imagesize",
|
|
646
|
+
"kurbo",
|
|
647
|
+
"log",
|
|
648
|
+
"pico-args",
|
|
649
|
+
"roxmltree 0.21.1",
|
|
650
|
+
"rustybuzz",
|
|
651
|
+
"simplecss",
|
|
652
|
+
"siphasher",
|
|
653
|
+
"strict-num",
|
|
654
|
+
"svgtypes",
|
|
655
|
+
"tiny-skia-path",
|
|
656
|
+
"ttf-parser",
|
|
657
|
+
"unicode-bidi",
|
|
658
|
+
"unicode-script",
|
|
659
|
+
"unicode-vo",
|
|
660
|
+
"xmlwriter",
|
|
661
|
+
]
|
|
662
|
+
|
|
663
|
+
[[package]]
|
|
664
|
+
name = "utf8parse"
|
|
665
|
+
version = "0.2.2"
|
|
666
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
667
|
+
checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821"
|
|
668
|
+
|
|
669
|
+
[[package]]
|
|
670
|
+
name = "version_check"
|
|
671
|
+
version = "0.9.5"
|
|
672
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
673
|
+
checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
|
|
674
|
+
|
|
675
|
+
[[package]]
|
|
676
|
+
name = "weezl"
|
|
677
|
+
version = "0.1.12"
|
|
678
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
679
|
+
checksum = "a28ac98ddc8b9274cb41bb4d9d4d5c425b6020c50c46f25559911905610b4a88"
|
|
680
|
+
|
|
681
|
+
[[package]]
|
|
682
|
+
name = "windows-link"
|
|
683
|
+
version = "0.2.1"
|
|
684
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
685
|
+
checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5"
|
|
686
|
+
|
|
687
|
+
[[package]]
|
|
688
|
+
name = "windows-sys"
|
|
689
|
+
version = "0.61.2"
|
|
690
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
691
|
+
checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc"
|
|
692
|
+
dependencies = [
|
|
693
|
+
"windows-link",
|
|
694
|
+
]
|
|
695
|
+
|
|
696
|
+
[[package]]
|
|
697
|
+
name = "xmlwriter"
|
|
698
|
+
version = "0.1.0"
|
|
699
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
700
|
+
checksum = "ec7a2a501ed189703dba8b08142f057e887dfc4b2cc4db2d343ac6376ba3e0b9"
|
|
701
|
+
|
|
702
|
+
[[package]]
|
|
703
|
+
name = "zune-core"
|
|
704
|
+
version = "0.5.1"
|
|
705
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
706
|
+
checksum = "cb8a0807f7c01457d0379ba880ba6322660448ddebc890ce29bb64da71fb40f9"
|
|
707
|
+
|
|
708
|
+
[[package]]
|
|
709
|
+
name = "zune-jpeg"
|
|
710
|
+
version = "0.5.15"
|
|
711
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
712
|
+
checksum = "27bc9d5b815bc103f142aa054f561d9187d191692ec7c2d1e2b4737f8dbd7296"
|
|
713
|
+
dependencies = [
|
|
714
|
+
"zune-core",
|
|
715
|
+
]
|
package/Cargo.toml
ADDED
package/README.md
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Vexell
|
|
2
|
+
|
|
3
|
+
Blazing fast, lossless SVG to PNG converter.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
### Via NPM (Node.js)
|
|
8
|
+
You can instantly run Vexell via `npx` without installing it:
|
|
9
|
+
```bash
|
|
10
|
+
npx vexell input.svg output.png -s 1024
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
Or install it globally:
|
|
14
|
+
```bash
|
|
15
|
+
npm install -g vexell
|
|
16
|
+
vexell input.svg output.png -s 1024
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
### Via Cargo (Rust)
|
|
20
|
+
If you prefer the ultra-fast Rust binary:
|
|
21
|
+
```bash
|
|
22
|
+
cargo install vexell
|
|
23
|
+
vexell input.svg output.png -W 1024
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## Options
|
|
27
|
+
* `-s, --size <pixels>`: Set the output resolution (default: 1024)
|
|
28
|
+
* `-h, --help`: Show help menu
|
package/index.js
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
const { program } = require('commander');
|
|
4
|
+
const sharp = require('sharp');
|
|
5
|
+
const fs = require('fs');
|
|
6
|
+
|
|
7
|
+
program
|
|
8
|
+
.name('vexell')
|
|
9
|
+
.description('Vexell: Blazing fast lossless SVG to PNG converter')
|
|
10
|
+
.version('1.0.0')
|
|
11
|
+
.argument('<input>', 'Input SVG file')
|
|
12
|
+
.argument('<output>', 'Output PNG file')
|
|
13
|
+
.option('-s, --size <pixels>', 'Output resolution (width and height)', 1024)
|
|
14
|
+
.action((input, output, options) => {
|
|
15
|
+
if (!fs.existsSync(input)) {
|
|
16
|
+
console.error(`Error: File ${input} not found.`);
|
|
17
|
+
process.exit(1);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
const size = parseInt(options.size);
|
|
21
|
+
|
|
22
|
+
console.log(`Vexellizing ${input} -> ${output}...`);
|
|
23
|
+
|
|
24
|
+
sharp(input)
|
|
25
|
+
.resize(size, size, { fit: 'inside' })
|
|
26
|
+
.png({ compressionLevel: 9, adaptiveFiltering: true, force: true })
|
|
27
|
+
.toFile(output)
|
|
28
|
+
.then(info => {
|
|
29
|
+
console.log(`Successfully rendered! (${info.width}x${info.height})`);
|
|
30
|
+
})
|
|
31
|
+
.catch(err => {
|
|
32
|
+
console.error(`Error converting file: ${err.message}`);
|
|
33
|
+
process.exit(1);
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
program.parse();
|
package/output_node.png
ADDED
|
Binary file
|
package/output_rust.png
ADDED
|
Binary file
|
package/package.json
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "vexell",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Blazing fast lossless SVG to PNG converter",
|
|
5
|
+
"main": "index.js",
|
|
6
|
+
"bin": {
|
|
7
|
+
"vexell": "./index.js"
|
|
8
|
+
},
|
|
9
|
+
"scripts": {
|
|
10
|
+
"test": "echo \"Error: no test specified\" && exit 1"
|
|
11
|
+
},
|
|
12
|
+
"keywords": [
|
|
13
|
+
"svg",
|
|
14
|
+
"png",
|
|
15
|
+
"converter",
|
|
16
|
+
"vector",
|
|
17
|
+
"pixel",
|
|
18
|
+
"sharp",
|
|
19
|
+
"lossless"
|
|
20
|
+
],
|
|
21
|
+
"author": "Orbit Ecosystem",
|
|
22
|
+
"license": "MIT",
|
|
23
|
+
"type": "commonjs",
|
|
24
|
+
"dependencies": {
|
|
25
|
+
"commander": "^15.0.0",
|
|
26
|
+
"sharp": "^0.35.2"
|
|
27
|
+
}
|
|
28
|
+
}
|
package/src/main.rs
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
use clap::Parser;
|
|
2
|
+
use std::fs;
|
|
3
|
+
use usvg::{Options, Tree};
|
|
4
|
+
use tiny_skia::Pixmap;
|
|
5
|
+
|
|
6
|
+
#[derive(Parser, Debug)]
|
|
7
|
+
#[command(author, version, about = "Vexell: Blazing fast SVG to PNG converter", long_about = None)]
|
|
8
|
+
struct Args {
|
|
9
|
+
/// Input SVG file path
|
|
10
|
+
input: String,
|
|
11
|
+
|
|
12
|
+
/// Output PNG file path
|
|
13
|
+
output: String,
|
|
14
|
+
|
|
15
|
+
/// Width of the output image (preserves aspect ratio)
|
|
16
|
+
#[arg(short = 'W', long)]
|
|
17
|
+
width: Option<u32>,
|
|
18
|
+
|
|
19
|
+
/// Height of the output image (preserves aspect ratio)
|
|
20
|
+
#[arg(short = 'H', long)]
|
|
21
|
+
height: Option<u32>,
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
fn main() -> Result<(), Box<dyn std::error::Error>> {
|
|
25
|
+
let args = Args::parse();
|
|
26
|
+
|
|
27
|
+
let svg_data = fs::read(&args.input)?;
|
|
28
|
+
let mut opt = Options::default();
|
|
29
|
+
opt.fontdb_mut().load_system_fonts();
|
|
30
|
+
|
|
31
|
+
let tree = Tree::from_data(&svg_data, &opt)?;
|
|
32
|
+
|
|
33
|
+
let svg_size = tree.size();
|
|
34
|
+
let mut w = svg_size.width();
|
|
35
|
+
let mut h = svg_size.height();
|
|
36
|
+
|
|
37
|
+
if let Some(target_w) = args.width {
|
|
38
|
+
let scale = target_w as f32 / w;
|
|
39
|
+
w = target_w as f32;
|
|
40
|
+
h = h * scale;
|
|
41
|
+
} else if let Some(target_h) = args.height {
|
|
42
|
+
let scale = target_h as f32 / h;
|
|
43
|
+
h = target_h as f32;
|
|
44
|
+
w = w * scale;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
let transform = tiny_skia::Transform::from_scale(w / svg_size.width(), h / svg_size.height());
|
|
48
|
+
|
|
49
|
+
let mut pixmap = Pixmap::new(w.ceil() as u32, h.ceil() as u32).ok_or("Failed to create pixmap")?;
|
|
50
|
+
|
|
51
|
+
resvg::render(&tree, transform, &mut pixmap.as_mut());
|
|
52
|
+
|
|
53
|
+
pixmap.save_png(&args.output)?;
|
|
54
|
+
|
|
55
|
+
println!("Successfully rendered {} to {} ({}x{})", args.input, args.output, w.ceil(), h.ceil());
|
|
56
|
+
|
|
57
|
+
Ok(())
|
|
58
|
+
}
|