@r2o3/rgskin-nodejs 0.0.2 → 0.0.4

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/README.md CHANGED
@@ -1,8 +1,18 @@
1
1
  # rgskin
2
- A library for loading and creating skins for various rhythm games. It supports cross-platform usage including Web and Node.js environments via WebAssembly (WASM).
2
+
3
+ [![crates.io](https://img.shields.io/crates/v/rgskin?style=flat-square&logo=rust&logoColor=white&color=e05d2c)](https://crates.io/crates/rgskin)
4
+ [![npm (browser)](https://img.shields.io/npm/v/%40r2o3%2Frgskin-browser?style=flat-square&logo=npm&logoColor=white&label=npm%20(browser)&color=CB3837)](https://www.npmjs.com/package/@r2o3/rgskin-browser)
5
+ [![npm (node)](https://img.shields.io/npm/v/%40r2o3%2Frgskin-nodejs?style=flat-square&logo=npm&logoColor=white&label=npm%20(node)&color=CB3837)](https://www.npmjs.com/package/@r2o3/rgskin-nodejs)
6
+
7
+ [![license](https://img.shields.io/badge/license-MIT-4A80D4?style=flat-square)](LICENSE)
8
+ [![rust](https://img.shields.io/badge/rust-nightly%201.98%2B-534eb5?style=flat-square&logo=rust&logoColor=white)](https://www.rust-lang.org/tools/install)
9
+
10
+ A library for loading and creating skins for various rhythm games. It supports multi-threading and cross-platform usage including Web and Node.js environments via WebAssembly (WASM).
3
11
 
4
12
  ## Table of Contents
5
13
 
14
+ - [Features](#features)
15
+ - [Supported Games](#supported-games)
6
16
  - [Rust Usage](#rust-usage)
7
17
  - [Installation](#installation)
8
18
  - [API Reference](#api-reference)
@@ -21,13 +31,20 @@ A library for loading and creating skins for various rhythm games. It supports c
21
31
  - [WASM Bindings](#wasm-bindings)
22
32
  - [License](#license)
23
33
 
34
+ ## Features
35
+
36
+ ### Supported Games:
37
+ - Osu!
38
+ - Quaver
39
+ - fluXis
40
+
24
41
  ## Rust Usage
25
42
 
26
43
  ### Installation
27
44
  Add this to your `Cargo.toml`:
28
45
  ```toml
29
46
  [dependencies]
30
- rgskin = "0.0.2"
47
+ rgskin = "0.0.4"
31
48
  ```
32
49
 
33
50
  Or run:
@@ -47,6 +64,7 @@ use rgskin::prelude::*;
47
64
  // importing a skin from a directory
48
65
  let osu_skin = import::osu::skin_from_dir("path/to/skin").expect("Failed to import skin!", false);
49
66
  let fluxis_skin = import::fluxis::skin_from_dir("path/to/skin").expect("Failed to import skin!", false);
67
+ let quaver_skin = import::quaver::skin_from_dir("path/to/skin").expect("Failed to import skin!", false);
50
68
  ```
51
69
 
52
70
  The second argument is for if you want to import ALL assets for a skin, it will import all textures but leave the unrequired unloaded, usually recommended when merging skins of the same type as you might need all assets; otherwise if false it will only import and load the required assets.
@@ -90,7 +108,7 @@ OsuSkin.to_generic_mania(()); // yes, the extra parethesis is required.
90
108
  ```
91
109
  ```rust
92
110
  FluXisSkin::from_generic_mania(&generic);
93
- FluXisSkin.to_generic_mania(fluxis_layout); // if you don't have a layout you can just pass None or ().
111
+ FluXisSkin.to_generic_mania(fluxis_layout); // if you don't have a layout you can just pass None.
94
112
  ```
95
113
 
96
114
  ---
@@ -134,20 +152,58 @@ then use as an ES module
134
152
  ### API Reference
135
153
 
136
154
  #### Initialization
155
+
156
+
157
+ As of now you can't parse/write using the original structures in JS/TS, will be supported in the *near* future.
158
+
159
+ > [!IMPORTANT]
160
+ > `wasm-bindgen-rayon` uses `SharedArrayBuffer` for thread communication, which requires your page to be cross-origin isolated. Your server must send these headers:
161
+ > ```
162
+ > Cross-Origin-Opener-Policy: same-origin
163
+ > Cross-Origin-Embedder-Policy: require-corp
164
+ > ```
165
+ > You can verify isolation is active with `self.crossOriginIsolated` in the browser console.
166
+
167
+ ---
168
+
169
+ **ES Modules (bundler or Node.js)**
170
+
137
171
  ```javascript
138
- // For ES modules
139
- import * as rgskin from '@r2o3/rgskin'; // or if not in node modules use the path to rgskin.js
172
+ import init, { initThreadPool } from '@r2o3/rgskin';
173
+ // or if not installed via npm:
174
+ // import init, { initThreadPool } from './path/to/rgskin.js';
140
175
 
141
- // or alternatively
142
- const rgskin = await import('path/to/rgskin.js')
176
+ await init();
177
+ await initThreadPool(navigator.hardwareConcurrency);
178
+ ```
143
179
 
144
- // For CommonJS
145
- const rgskin = require('rgskin');
180
+ ---
181
+
182
+ **Browser (`<script type="module">`)**
183
+
184
+ ```javascript
185
+ import rgskin from './path/to/rgskin.js';
186
+
187
+ await rgskin.default();
188
+ await rgskin.initThreadPool(navigator.hardwareConcurrency);
146
189
  ```
147
190
 
148
- you may need to do ``await rgskin.default()`` after importing if you've imported it in a script tag (with type="module") or you get an error like ``Uncaught TypeError: Cannot read properties of undefined (reading '__wbindgen_malloc')``
191
+ ---
149
192
 
150
- As of now you can't parse/write using the original structures in JS/TS, will be supported in the *near* future.
193
+ **CommonJS (Node.js or Legacy Environments)**
194
+
195
+ CommonJS (`require`) is not natively supported because `wasm-bindgen-rayon` relies on ES Modules and top-level async initialization. However, you can load it using `import()`:
196
+
197
+ ```javascript
198
+ async function loadWasm() {
199
+ const wasm = await import('@r2o3/rgskin');
200
+
201
+ await wasm.default();
202
+ await wasm.initThreadPool(navigator.hardwareConcurrency);
203
+
204
+ return wasm;
205
+ }
206
+ ```
151
207
 
152
208
  #### Importing/Loading Skins
153
209
 
package/package.json CHANGED
@@ -3,8 +3,8 @@
3
3
  "collaborators": [
4
4
  "menvae"
5
5
  ],
6
- "description": "A library for converting rhythm game skins.",
7
- "version": "0.0.2",
6
+ "description": "A library for converting, loading and creating skins for various rhythm games.",
7
+ "version": "0.0.4",
8
8
  "license": "MIT",
9
9
  "repository": {
10
10
  "type": "git",
package/rgskin.d.ts CHANGED
@@ -4,27 +4,33 @@
4
4
  export class BinaryStore {
5
5
  free(): void;
6
6
  [Symbol.dispose](): void;
7
- constructor();
8
- insertBinary(binary: RawBytes): void;
9
- makeUnique(new_path: string, binary: RawBytes): string;
10
- loadFromArrayBuffer(path: string, buffer: ArrayBuffer): void;
11
- loadFromUint8Array(path: string, array: Uint8Array): void;
12
7
  allLoaded(): boolean;
8
+ hasBinary(path: string): boolean;
9
+ makeUnique(new_path: string, binary: RawBytes): string;
13
10
  loadedCount(): number;
11
+ insertBinary(binary: RawBytes): void;
14
12
  unloadedPaths(): Array<any>;
15
- hasBinary(path: string): boolean;
16
- getBinaryPath(path: string): string | undefined;
17
13
  binaryHasData(path: string): boolean;
18
14
  getBinaryData(path: string): Uint8Array | undefined;
19
- contains(path: string): boolean;
20
- remove(path: string): boolean;
15
+ getBinaryPath(path: string): string | undefined;
16
+ loadFromUint8Array(path: string, array: Uint8Array): void;
17
+ loadFromArrayBuffer(path: string, buffer: ArrayBuffer): void;
18
+ constructor();
19
+ clear(): void;
21
20
  getLength(): number;
21
+ extend(other: BinaryStore): void;
22
+ remove(path: string): boolean;
23
+ contains(path: string): boolean;
22
24
  isEmpty(): boolean;
23
25
  getPaths(): Array<any>;
24
- clear(): void;
25
- copy(original_path: string, new_path: string): string | undefined;
26
26
  makeUniqueCopy(original_path: string, new_base_path: string): string | undefined;
27
- extend(other: BinaryStore): void;
27
+ copy(original_path: string, new_path: string): string | undefined;
28
+ }
29
+
30
+ export enum DefaultSkin {
31
+ Arrow = 0,
32
+ Bar = 1,
33
+ Circle = 2,
28
34
  }
29
35
 
30
36
  export class FluXisKeymode {
@@ -54,12 +60,12 @@ export class FluXisSkin {
54
60
  free(): void;
55
61
  [Symbol.dispose](): void;
56
62
  constructor(skin_json: SkinJson, textures?: TextureStore | null, samples?: BinaryStore | null);
63
+ getKeymode(keymode: number): FluXisKeymode | undefined;
57
64
  toGenericMania(): GenericManiaSkin;
58
- toGenericManiaWithLayout(layout: FluXisLayout): GenericManiaSkin;
59
65
  static fromGenericMania(skin: GenericManiaSkin): FluXisSkinWithLayout;
60
- getKeymode(keymode: number): FluXisKeymode | undefined;
61
- getRequiredTexturePaths(): string[];
62
66
  getRequiredSamplePaths(): string[];
67
+ getRequiredTexturePaths(): string[];
68
+ toGenericManiaWithLayout(layout: FluXisLayout): GenericManiaSkin;
63
69
  skin_json: SkinJson;
64
70
  textures: TextureStore;
65
71
  samples: BinaryStore;
@@ -102,15 +108,39 @@ export class GenericManiaSkin {
102
108
  private constructor();
103
109
  free(): void;
104
110
  [Symbol.dispose](): void;
111
+ getKeymode(keymode: number): Keymode | undefined;
105
112
  toGenericMania(): GenericManiaSkin;
106
113
  static fromGenericMania(skin: GenericManiaSkin): GenericManiaSkin;
107
- getKeymode(keymode: number): Keymode | undefined;
108
- getRequiredTexturePaths(): string[];
109
114
  getRequiredSamplePaths(): string[];
115
+ getRequiredTexturePaths(): string[];
110
116
  textures: TextureStore;
111
117
  samples: BinaryStore;
112
118
  }
113
119
 
120
+ export enum HealthBarKeysAlignment {
121
+ LeftStage = 0,
122
+ RightStage = 1,
123
+ TopLeft = 2,
124
+ }
125
+
126
+ export enum HealthBarType {
127
+ Horizontal = 0,
128
+ Vertical = 1,
129
+ }
130
+
131
+ export enum HitBubblesAlignment {
132
+ LeftStage = 0,
133
+ RightStage = 1,
134
+ BelowStage = 2,
135
+ }
136
+
137
+ export enum HitBubblesType {
138
+ FallDown = 0,
139
+ FallUp = 1,
140
+ FallLeft = 2,
141
+ FallRight = 3,
142
+ }
143
+
114
144
  export class Info {
115
145
  private constructor();
116
146
  free(): void;
@@ -124,12 +154,31 @@ export class Keymode {
124
154
  private constructor();
125
155
  free(): void;
126
156
  [Symbol.dispose](): void;
127
- static fromStr(content: string): OsuKeymode;
128
157
  toStr(): string;
158
+ static fromStr(content: string): OsuKeymode;
129
159
  getTexturePaths(): string[];
130
160
  keymode: number;
131
161
  }
132
162
 
163
+ export class MainMenu {
164
+ private constructor();
165
+ free(): void;
166
+ [Symbol.dispose](): void;
167
+ static fromStr(content: string): MainMenu;
168
+ toString(): string;
169
+ navigation_button_hovered_alpha: number;
170
+ audio_visualizer_opacity: number;
171
+ note_visualizer_opacity: number;
172
+ }
173
+
174
+ export class MenuBorder {
175
+ private constructor();
176
+ free(): void;
177
+ [Symbol.dispose](): void;
178
+ static fromStr(content: string): MenuBorder;
179
+ toString(): string;
180
+ }
181
+
133
182
  export class OsuKeymode {
134
183
  private constructor();
135
184
  free(): void;
@@ -190,11 +239,11 @@ export class OsuSkin {
190
239
  free(): void;
191
240
  [Symbol.dispose](): void;
192
241
  constructor(skin_ini: OsuSkinIni, textures?: TextureStore | null, samples?: BinaryStore | null);
242
+ getKeymode(keymode: number): OsuKeymode | undefined;
193
243
  toGenericMania(): GenericManiaSkin;
194
244
  static fromGenericMania(skin: GenericManiaSkin): OsuSkin;
195
- getKeymode(keymode: number): OsuKeymode | undefined;
196
- getRequiredTexturePaths(): string[];
197
245
  getRequiredSamplePaths(): string[];
246
+ getRequiredTexturePaths(): string[];
198
247
  skin_ini: OsuSkinIni;
199
248
  textures: TextureStore;
200
249
  samples: BinaryStore;
@@ -203,112 +252,291 @@ export class OsuSkin {
203
252
  export class OsuSkinIni {
204
253
  free(): void;
205
254
  [Symbol.dispose](): void;
206
- constructor();
207
255
  static fromStr(json_str: string): OsuSkinIni;
208
256
  toString(): string;
209
- getRequiredTexturePaths(): string[];
210
- getRequiredSamplePaths(): string[];
211
257
  getKeymode(keymode: number): OsuKeymode | undefined;
258
+ getRequiredSamplePaths(): string[];
259
+ getRequiredTexturePaths(): string[];
260
+ constructor();
212
261
  general: General;
213
262
  keymodes: OsuKeymode[];
214
263
  }
215
264
 
265
+ export class QuaGeneral {
266
+ private constructor();
267
+ free(): void;
268
+ [Symbol.dispose](): void;
269
+ static fromStr(content: string): QuaGeneral;
270
+ toString(): string;
271
+ name: string;
272
+ author: string;
273
+ version: string;
274
+ center_cursor: boolean;
275
+ use_skin_backgrounds: boolean;
276
+ }
277
+
278
+ export class QuaKeymode {
279
+ private constructor();
280
+ free(): void;
281
+ [Symbol.dispose](): void;
282
+ toStr(): string;
283
+ static fromStr(content: string): QuaKeymode;
284
+ keymode: number;
285
+ default_skin: DefaultSkin;
286
+ color_objects_by_snap_distance: boolean;
287
+ use_hit_object_sheet: boolean;
288
+ rotate_hit_objects_by_column: boolean;
289
+ flip_note_images_on_upscroll: boolean;
290
+ flip_note_end_images_on_upscroll: boolean;
291
+ draw_long_note_end: boolean;
292
+ note_padding: number;
293
+ width_for_note_height_scale: number;
294
+ bg_mask_alpha: number;
295
+ bg_mask_padding: number;
296
+ column_alignment: number;
297
+ column_size: number;
298
+ column_lighting_offset_y: number;
299
+ column_lighting_scale: number;
300
+ hit_pos_offset_y: number;
301
+ receptor_pos_offset_y: number;
302
+ receptors_over_hit_objects: boolean;
303
+ stage_receptor_padding: number;
304
+ coop_playfield_padding: number;
305
+ hit_error_chevron_size: number;
306
+ hit_error_height: number;
307
+ hit_error_pos_x: number;
308
+ hit_error_pos_y: number;
309
+ hit_error_alpha: number;
310
+ judgement_hit_burst_fps: number;
311
+ judgement_burst_pos_y: number;
312
+ judgement_hit_burst_bump_y: number;
313
+ judgement_hit_burst_bump_time: number;
314
+ judgement_hit_burst_scale: number;
315
+ hit_lighting_x: number;
316
+ hit_lighting_y: number;
317
+ hit_lighting_fps: number;
318
+ hit_lighting_scale: number;
319
+ hit_lighting_column_rotation: boolean;
320
+ hold_lighting_fps: number;
321
+ hold_lighting_scale: number;
322
+ hold_lighting_column_rotation: boolean;
323
+ health_bar_keys_alignment: HealthBarKeysAlignment;
324
+ health_bar_type: HealthBarType;
325
+ health_bar_pos_offset_x: number;
326
+ health_bar_pos_offset_y: number;
327
+ health_bar_scale: number;
328
+ hit_bubbles_alignment: HitBubblesAlignment;
329
+ hit_bubbles_type: HitBubblesType;
330
+ hit_bubbles_pos_x: number;
331
+ hit_bubbles_pos_y: number;
332
+ hit_bubbles_scale: number;
333
+ hit_bubble_scale: number;
334
+ hit_bubble_border_padding: number;
335
+ hit_bubble_padding: number;
336
+ combo_display_scale: number;
337
+ combo_pos_x: number;
338
+ combo_pos_y: number;
339
+ combo_display_bump_y: number;
340
+ combo_display_bump_time: number;
341
+ rating_display_scale: number;
342
+ rating_display_pos_x: number;
343
+ rating_display_pos_y: number;
344
+ accuracy_display_scale: number;
345
+ accuracy_display_pos_x: number;
346
+ accuracy_display_pos_y: number;
347
+ kps_display_scale: number;
348
+ kps_display_pos_x: number;
349
+ kps_display_pos_y: number;
350
+ score_display_scale: number;
351
+ score_display_pos_x: number;
352
+ score_display_pos_y: number;
353
+ battle_royale_alert_pos_x: number;
354
+ battle_royale_alert_pos_y: number;
355
+ battle_royale_alert_scale: number;
356
+ battle_royale_eliminated_pos_x: number;
357
+ battle_royale_eliminated_pos_y: number;
358
+ judgement_counter_alpha: number;
359
+ judgement_counter_size: number;
360
+ judgement_counter_pos_x: number;
361
+ judgement_counter_pos_y: number;
362
+ judgement_counter_padding: number;
363
+ judgement_counter_horizontal: boolean;
364
+ judgement_counter_fade_to_alpha: boolean;
365
+ use_judgement_color_for_numbers: boolean;
366
+ song_time_progress_scale: number;
367
+ song_time_progress_position_at_top: boolean;
368
+ show_mini_song_bar: boolean;
369
+ mini_song_bar_display_pos_x: number;
370
+ mini_song_bar_display_pos_y: number;
371
+ mini_song_bar_display_width_factor: number;
372
+ mini_song_bar_display_height: number;
373
+ use_fallback: boolean;
374
+ }
375
+
376
+ export class QuaSkin {
377
+ free(): void;
378
+ [Symbol.dispose](): void;
379
+ constructor(skin_ini: QuaSkinIni, textures?: TextureStore | null, samples?: BinaryStore | null);
380
+ getKeymode(keymode: number): QuaKeymode | undefined;
381
+ toGenericMania(): GenericManiaSkin;
382
+ static fromGenericMania(skin: GenericManiaSkin): QuaSkin;
383
+ getRequiredSamplePaths(): string[];
384
+ getRequiredTexturePaths(): string[];
385
+ skin_ini: QuaSkinIni;
386
+ textures: TextureStore;
387
+ samples: BinaryStore;
388
+ }
389
+
390
+ export class QuaSkinIni {
391
+ free(): void;
392
+ [Symbol.dispose](): void;
393
+ static fromStr(ini_str: string): QuaSkinIni;
394
+ toString(): string;
395
+ getKeymode(keymode: number): QuaKeymode | undefined;
396
+ constructor();
397
+ general: QuaGeneral;
398
+ main_menu: MainMenu;
399
+ menu_border: MenuBorder;
400
+ song_select: SongSelect;
401
+ results: Results;
402
+ keymodes: QuaKeymode[];
403
+ get shared_keymode(): QuaKeymode | undefined;
404
+ set shared_keymode(value: QuaKeymode | null | undefined);
405
+ }
406
+
216
407
  export class RawBytes {
217
408
  free(): void;
218
409
  [Symbol.dispose](): void;
219
- constructor(path: string);
220
- static fromBytes(path: string, bytes: Uint8Array): RawBytes;
221
410
  getData(): Uint8Array | undefined;
222
- static fromArrayBuffer(path: string, buffer: ArrayBuffer): RawBytes;
223
- static fromArrayBufferUnloaded(path: string, buffer: ArrayBuffer): RawBytes;
224
- static fromUint8Array(path: string, array: Uint8Array): RawBytes;
225
- static fromUint8ArrayUnloaded(path: string, array: Uint8Array): RawBytes;
411
+ getHash(): bigint | undefined;
412
+ static fromBytes(path: string, bytes: Uint8Array): RawBytes;
413
+ constructor(path: string);
414
+ unload(): void;
226
415
  getPath(): string;
227
416
  hasData(): boolean;
417
+ isEmpty(): boolean;
228
418
  isLoaded(): boolean;
229
419
  isUnloaded(): boolean;
230
- isEmpty(): boolean;
420
+ static fromUint8Array(path: string, array: Uint8Array): RawBytes;
421
+ static fromArrayBuffer(path: string, buffer: ArrayBuffer): RawBytes;
422
+ static fromUint8ArrayUnloaded(path: string, array: Uint8Array): RawBytes;
423
+ static fromArrayBufferUnloaded(path: string, buffer: ArrayBuffer): RawBytes;
231
424
  load(): void;
232
- unload(): void;
233
425
  path: string;
234
426
  }
235
427
 
428
+ export class Results {
429
+ private constructor();
430
+ free(): void;
431
+ [Symbol.dispose](): void;
432
+ static fromStr(content: string): Results;
433
+ toString(): string;
434
+ results_background_type: ResultsBackgroundType;
435
+ results_background_filter_alpha: number;
436
+ }
437
+
438
+ export enum ResultsBackgroundType {
439
+ Header = 0,
440
+ Background = 1,
441
+ None = 2,
442
+ }
443
+
236
444
  export class SkinJson {
237
445
  free(): void;
238
446
  [Symbol.dispose](): void;
239
- constructor();
240
447
  static fromStr(json_str: string): SkinJson;
241
448
  toString(): string;
449
+ constructor();
242
450
  info: Info;
243
451
  keymodes: FluXisKeymode[];
244
452
  }
245
453
 
454
+ export class SongSelect {
455
+ private constructor();
456
+ free(): void;
457
+ [Symbol.dispose](): void;
458
+ static fromStr(content: string): SongSelect;
459
+ toString(): string;
460
+ mapset_panel_hovering_alpha: number;
461
+ map_background_brightness: number;
462
+ display_map_background: boolean;
463
+ }
464
+
246
465
  export class Texture {
247
466
  free(): void;
248
467
  [Symbol.dispose](): void;
249
- constructor(path: string);
250
468
  static fromBlank(path: string): Texture;
251
- static fromArrayBuffer(path: string, buffer: ArrayBuffer): Texture;
252
- static fromArrayBufferUnloaded(path: string, buffer: ArrayBuffer): Texture;
253
- static fromUint8Array(path: string, array: Uint8Array): Texture;
254
- static fromUint8ArrayUnloaded(path: string, array: Uint8Array): Texture;
469
+ getHash(): bigint | undefined;
470
+ constructor(path: string);
471
+ unload(): void;
255
472
  getPath(): string;
256
473
  hasData(): boolean;
474
+ isEmpty(): boolean;
257
475
  isLoaded(): boolean;
258
476
  isUnloaded(): boolean;
259
- isEmpty(): boolean;
477
+ static fromUint8Array(path: string, array: Uint8Array): Texture;
478
+ static fromArrayBuffer(path: string, buffer: ArrayBuffer): Texture;
479
+ static fromUint8ArrayUnloaded(path: string, array: Uint8Array): Texture;
480
+ static fromArrayBufferUnloaded(path: string, buffer: ArrayBuffer): Texture;
260
481
  load(): void;
261
- unload(): void;
262
482
  path: string;
263
483
  }
264
484
 
265
485
  export class TextureStore {
266
486
  free(): void;
267
487
  [Symbol.dispose](): void;
268
- constructor();
269
- insertTexture(texture: Texture): void;
270
- makeUnique(new_path: string, texture: Texture): string;
271
- loadFromArrayBuffer(path: string, buffer: ArrayBuffer): void;
272
- loadFromUint8Array(path: string, array: Uint8Array): void;
273
488
  allLoaded(): boolean;
489
+ hasTexture(path: string): boolean;
490
+ makeUnique(new_path: string, texture: Texture): string;
274
491
  loadedCount(): number;
492
+ insertTexture(texture: Texture): void;
275
493
  unloadedPaths(): Array<any>;
276
- hasTexture(path: string): boolean;
277
494
  getTexturePath(path: string): string | undefined;
278
495
  textureHasData(path: string): boolean;
279
- contains(path: string): boolean;
280
- remove(path: string): boolean;
496
+ loadFromUint8Array(path: string, array: Uint8Array): void;
497
+ loadFromArrayBuffer(path: string, buffer: ArrayBuffer): void;
498
+ constructor();
499
+ clear(): void;
281
500
  getLength(): number;
501
+ extend(other: TextureStore): void;
502
+ remove(path: string): boolean;
503
+ contains(path: string): boolean;
282
504
  isEmpty(): boolean;
283
505
  getPaths(): Array<any>;
284
- clear(): void;
285
- copy(original_path: string, new_path: string): string | undefined;
286
506
  makeUniqueCopy(original_path: string, new_base_path: string): string | undefined;
287
- extend(other: TextureStore): void;
507
+ copy(original_path: string, new_path: string): string | undefined;
288
508
  }
289
509
 
290
510
  export function allSamplesFromDir(path: string): BinaryStore;
291
511
 
292
- export function allTexturesFromDir(path: string): TextureStore;
512
+ export function allTexturesFromDir(path: string, load_only?: string[] | null): TextureStore;
293
513
 
294
- export function fluXisSkinFromDir(path: string): FluXisSkin;
514
+ export function fluXisSkinFromDir(path: string, import_all?: boolean | null): FluXisSkin;
295
515
 
296
516
  export function fluXisSkinToDir(skin: FluXisSkin, path: string): void;
297
517
 
298
- export function iniStrFromDir(path: string): string;
518
+ export function fluxisJsonStrFromDir(path: string): string;
299
519
 
300
- export function iniToDir(skin_ini: OsuSkinIni, path: string): void;
520
+ export function fluxisJsonToDir(skin_json: SkinJson, path: string): void;
301
521
 
302
- export function jsonStrFromDir(path: string): string;
522
+ export function fluxisLayoutToDir(layout_json: FluXisLayout, path: string): void;
303
523
 
304
- export function jsonToDir(skin_json: SkinJson, path: string): void;
524
+ export function osuIniStrFromDir(path: string): string;
305
525
 
306
- export function layoutToDir(layout_json: FluXisLayout, path: string): void;
526
+ export function osuIniToDir(skin_ini: OsuSkinIni, path: string): void;
307
527
 
308
- export function osuSkinFromDir(path: string): OsuSkin;
528
+ export function osuSkinFromDir(path: string, import_all?: boolean | null): OsuSkin;
309
529
 
310
530
  export function osuSkinToDir(skin: OsuSkin, path: string): void;
311
531
 
532
+ export function quaverIniStrFromDir(path: string): string;
533
+
534
+ export function quaverIniToDir(skin_ini: QuaSkinIni, path: string): void;
535
+
536
+ export function quaverSkinFromDir(path: string, import_all?: boolean | null): QuaSkin;
537
+
538
+ export function quaverSkinToDir(skin: QuaSkin, path: string): void;
539
+
312
540
  export function samplesFromDir(path: string, relative_sample_paths: Array<any>): BinaryStore;
313
541
 
314
542
  export function samplesToDir(samples: BinaryStore, path: string): void;