litecanvas 0.103.4 → 0.103.6

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/src/index.js CHANGED
@@ -14,7 +14,9 @@ export default function litecanvas(settings = {}) {
14
14
  const /** @type {Window} */
15
15
  root = window,
16
16
  math = Math,
17
+ perf = performance,
17
18
  TWO_PI = math.PI * 2,
19
+ loggerPrefix = '[Litecanvas] ',
18
20
  raf = requestAnimationFrame,
19
21
  /** @type {Function[]} */
20
22
  _browserEventListeners = [],
@@ -141,9 +143,9 @@ export default function litecanvas(settings = {}) {
141
143
  * @tutorial https://gamedev.net/tutorials/programming/general-and-gameplay-programming/a-brief-introduction-to-lerp-r4954/
142
144
  */
143
145
  lerp: (start, end, t) => {
144
- DEV: assert(isNumber(start), '[litecanvas] lerp() 1st param must be a number')
145
- DEV: assert(isNumber(end), '[litecanvas] lerp() 2nd param must be a number')
146
- DEV: assert(isNumber(t), '[litecanvas] lerp() 3rd param must be a number')
146
+ DEV: assert(isNumber(start), loggerPrefix + 'lerp() 1st param must be a number')
147
+ DEV: assert(isNumber(end), loggerPrefix + 'lerp() 2nd param must be a number')
148
+ DEV: assert(isNumber(t), loggerPrefix + 'lerp() 3rd param must be a number')
147
149
 
148
150
  return start + t * (end - start)
149
151
  },
@@ -182,10 +184,10 @@ export default function litecanvas(settings = {}) {
182
184
  * @returns {number} rounded number.
183
185
  */
184
186
  round: (n, precision = 0) => {
185
- DEV: assert(isNumber(n), '[litecanvas] round() 1st param must be a number')
187
+ DEV: assert(isNumber(n), loggerPrefix + 'round() 1st param must be a number')
186
188
  DEV: assert(
187
189
  isNumber(precision) && precision >= 0,
188
- '[litecanvas] round() 2nd param must be a positive number or zero'
190
+ loggerPrefix + 'round() 2nd param must be a positive number or zero'
189
191
  )
190
192
 
191
193
  if (!precision) {
@@ -204,12 +206,12 @@ export default function litecanvas(settings = {}) {
204
206
  * @returns {number}
205
207
  */
206
208
  clamp: (value, min, max) => {
207
- DEV: assert(isNumber(value), '[litecanvas] clamp() 1st param must be a number')
208
- DEV: assert(isNumber(min), '[litecanvas] clamp() 2nd param must be a number')
209
- DEV: assert(isNumber(max), '[litecanvas] clamp() 3rd param must be a number')
209
+ DEV: assert(isNumber(value), loggerPrefix + 'clamp() 1st param must be a number')
210
+ DEV: assert(isNumber(min), loggerPrefix + 'clamp() 2nd param must be a number')
211
+ DEV: assert(isNumber(max), loggerPrefix + 'clamp() 3rd param must be a number')
210
212
  DEV: assert(
211
213
  max > min,
212
- '[litecanvas] clamp() the 2nd param must be less than the 3rd param'
214
+ loggerPrefix + 'clamp() the 2nd param must be less than the 3rd param'
213
215
  )
214
216
 
215
217
  if (value < min) return min
@@ -227,10 +229,10 @@ export default function litecanvas(settings = {}) {
227
229
  * @returns {number}
228
230
  */
229
231
  dist: (x1, y1, x2, y2) => {
230
- DEV: assert(isNumber(x1), '[litecanvas] dist() 1st param must be a number')
231
- DEV: assert(isNumber(y1), '[litecanvas] dist() 2nd param must be a number')
232
- DEV: assert(isNumber(x2), '[litecanvas] dist() 3rd param must be a number')
233
- DEV: assert(isNumber(y2), '[litecanvas] dist() 4th param must be a number')
232
+ DEV: assert(isNumber(x1), loggerPrefix + 'dist() 1st param must be a number')
233
+ DEV: assert(isNumber(y1), loggerPrefix + 'dist() 2nd param must be a number')
234
+ DEV: assert(isNumber(x2), loggerPrefix + 'dist() 3rd param must be a number')
235
+ DEV: assert(isNumber(y2), loggerPrefix + 'dist() 4th param must be a number')
234
236
 
235
237
  return math.hypot(x2 - x1, y2 - y1)
236
238
  },
@@ -244,12 +246,12 @@ export default function litecanvas(settings = {}) {
244
246
  * @returns {number}
245
247
  */
246
248
  wrap: (value, min, max) => {
247
- DEV: assert(isNumber(value), '[litecanvas] wrap() 1st param must be a number')
248
- DEV: assert(isNumber(min), '[litecanvas] wrap() 2nd param must be a number')
249
- DEV: assert(isNumber(max), '[litecanvas] wrap() 3rd param must be a number')
249
+ DEV: assert(isNumber(value), loggerPrefix + 'wrap() 1st param must be a number')
250
+ DEV: assert(isNumber(min), loggerPrefix + 'wrap() 2nd param must be a number')
251
+ DEV: assert(isNumber(max), loggerPrefix + 'wrap() 3rd param must be a number')
250
252
  DEV: assert(
251
253
  max > min,
252
- '[litecanvas] wrap() the 2nd param must be less than the 3rd param'
254
+ loggerPrefix + 'wrap() the 2nd param must be less than the 3rd param'
253
255
  )
254
256
 
255
257
  return value - (max - min) * math.floor((value - min) / (max - min))
@@ -267,14 +269,14 @@ export default function litecanvas(settings = {}) {
267
269
  * @returns {number} the remapped number
268
270
  */
269
271
  map(value, start1, stop1, start2, stop2, withinBounds) {
270
- DEV: assert(isNumber(value), '[litecanvas] map() 1st param must be a number')
271
- DEV: assert(isNumber(start1), '[litecanvas] map() 2nd param must be a number')
272
- DEV: assert(isNumber(stop1), '[litecanvas] map() 3rd param must be a number')
273
- DEV: assert(isNumber(start2), '[litecanvas] map() 4th param must be a number')
274
- DEV: assert(isNumber(stop2), '[litecanvas] map() 5th param must be a number')
272
+ DEV: assert(isNumber(value), loggerPrefix + 'map() 1st param must be a number')
273
+ DEV: assert(isNumber(start1), loggerPrefix + 'map() 2nd param must be a number')
274
+ DEV: assert(isNumber(stop1), loggerPrefix + 'map() 3rd param must be a number')
275
+ DEV: assert(isNumber(start2), loggerPrefix + 'map() 4th param must be a number')
276
+ DEV: assert(isNumber(stop2), loggerPrefix + 'map() 5th param must be a number')
275
277
  DEV: assert(
276
278
  stop1 !== start1,
277
- '[litecanvas] map() the 2nd param must be different than the 3rd param'
279
+ loggerPrefix + 'map() the 2nd param must be different than the 3rd param'
278
280
  )
279
281
 
280
282
  // prettier-ignore
@@ -293,12 +295,12 @@ export default function litecanvas(settings = {}) {
293
295
  * @returns {number} the normalized number.
294
296
  */
295
297
  norm: (value, start, stop) => {
296
- DEV: assert(isNumber(value), '[litecanvas] norm() 1st param must be a number')
297
- DEV: assert(isNumber(start), '[litecanvas] norm() 2nd param must be a number')
298
- DEV: assert(isNumber(stop), '[litecanvas] norm() 3rd param must be a number')
298
+ DEV: assert(isNumber(value), loggerPrefix + 'norm() 1st param must be a number')
299
+ DEV: assert(isNumber(start), loggerPrefix + 'norm() 2nd param must be a number')
300
+ DEV: assert(isNumber(stop), loggerPrefix + 'norm() 3rd param must be a number')
299
301
  DEV: assert(
300
302
  start !== stop,
301
- '[litecanvas] norm() the 2nd param must be different than the 3rd param'
303
+ loggerPrefix + 'norm() the 2nd param must be different than the 3rd param'
302
304
  )
303
305
 
304
306
  return instance.map(value, start, stop, 0, 1)
@@ -314,11 +316,11 @@ export default function litecanvas(settings = {}) {
314
316
  * @returns {number} the random number
315
317
  */
316
318
  rand: (min = 0.0, max = 1.0) => {
317
- DEV: assert(isNumber(min), '[litecanvas] rand() 1st param must be a number')
318
- DEV: assert(isNumber(max), '[litecanvas] rand() 2nd param must be a number')
319
+ DEV: assert(isNumber(min), loggerPrefix + 'rand() 1st param must be a number')
320
+ DEV: assert(isNumber(max), loggerPrefix + 'rand() 2nd param must be a number')
319
321
  DEV: assert(
320
322
  max > min,
321
- '[litecanvas] rand() the 1st param must be less than the 2nd param'
323
+ loggerPrefix + 'rand() the 1st param must be less than the 2nd param'
322
324
  )
323
325
 
324
326
  const a = 1664525
@@ -338,14 +340,14 @@ export default function litecanvas(settings = {}) {
338
340
  * @returns {number} the random number
339
341
  */
340
342
  randi: (min = 0, max = 1) => {
341
- DEV: assert(isNumber(min), '[litecanvas] randi() 1st param must be a number')
342
- DEV: assert(isNumber(max), '[litecanvas] randi() 2nd param must be a number')
343
+ DEV: assert(isNumber(min), loggerPrefix + 'randi() 1st param must be a number')
344
+ DEV: assert(isNumber(max), loggerPrefix + 'randi() 2nd param must be a number')
343
345
  DEV: assert(
344
346
  min <= max,
345
- '[litecanvas] randi() the 1st param must be less than the 2nd param'
347
+ loggerPrefix + 'randi() the 1st param must be less than the 2nd param'
346
348
  )
347
349
 
348
- return math.floor(instance.rand(min, max + 1))
350
+ return ~~instance.rand(min, max + 1)
349
351
  },
350
352
 
351
353
  /**
@@ -358,7 +360,7 @@ export default function litecanvas(settings = {}) {
358
360
  rseed(value) {
359
361
  DEV: assert(
360
362
  isNumber(value) && value >= 0,
361
- '[litecanvas] rseed() 1st param must be a positive integer or zero'
363
+ loggerPrefix + 'rseed() 1st param must be a positive integer or zero'
362
364
  )
363
365
 
364
366
  _rngSeed = ~~value
@@ -373,13 +375,13 @@ export default function litecanvas(settings = {}) {
373
375
  cls(color) {
374
376
  DEV: assert(
375
377
  null == color || (isNumber(color) && color >= 0),
376
- '[litecanvas] cls() 1st param must be a positive number or zero or undefined'
378
+ loggerPrefix + 'cls() 1st param must be a positive number or zero or undefined'
377
379
  )
378
380
 
379
381
  if (null == color) {
380
- _ctx.clearRect(0, 0, _ctx.canvas.width, _ctx.canvas.height)
382
+ _ctx.clearRect(0, 0, instance.W, instance.H)
381
383
  } else {
382
- instance.rectfill(0, 0, _ctx.canvas.width, _ctx.canvas.height, color)
384
+ instance.rectfill(0, 0, instance.W, instance.H, color)
383
385
  }
384
386
  },
385
387
 
@@ -396,23 +398,23 @@ export default function litecanvas(settings = {}) {
396
398
  * @see https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/roundRect
397
399
  */
398
400
  rect(x, y, width, height, color, radii) {
399
- DEV: assert(isNumber(x), '[litecanvas] rect() 1st param must be a number')
400
- DEV: assert(isNumber(y), '[litecanvas] rect() 2nd param must be a number')
401
+ DEV: assert(isNumber(x), loggerPrefix + 'rect() 1st param must be a number')
402
+ DEV: assert(isNumber(y), loggerPrefix + 'rect() 2nd param must be a number')
401
403
  DEV: assert(
402
404
  isNumber(width) && width > 0,
403
- '[litecanvas] rect() 3rd param must be a positive number'
405
+ loggerPrefix + 'rect() 3rd param must be a positive number'
404
406
  )
405
407
  DEV: assert(
406
408
  isNumber(height) && height >= 0,
407
- '[litecanvas] rect() 4th param must be a positive number or zero'
409
+ loggerPrefix + 'rect() 4th param must be a positive number or zero'
408
410
  )
409
411
  DEV: assert(
410
412
  null == color || (isNumber(color) && color >= 0),
411
- '[litecanvas] rect() 5th param must be a positive number or zero'
413
+ loggerPrefix + 'rect() 5th param must be a positive number or zero'
412
414
  )
413
415
  DEV: assert(
414
416
  null == radii || isNumber(radii) || (Array.isArray(radii) && radii.length >= 1),
415
- '[litecanvas] rect() 6th param must be a number or array of numbers'
417
+ loggerPrefix + 'rect() 6th param must be a number or array of numbers'
416
418
  )
417
419
 
418
420
  beginPath(_ctx)
@@ -437,23 +439,24 @@ export default function litecanvas(settings = {}) {
437
439
  * @param {number|number[]} [radii] A number or list specifying the radii used to draw a rounded-borders rectangle
438
440
  */
439
441
  rectfill(x, y, width, height, color, radii) {
440
- DEV: assert(isNumber(x), '[litecanvas] rectfill() 1st param must be a number')
441
- DEV: assert(isNumber(y), '[litecanvas] rectfill() 2nd param must be a number')
442
+ DEV: assert(isNumber(x), loggerPrefix + 'rectfill() 1st param must be a number')
443
+ DEV: assert(isNumber(y), loggerPrefix + 'rectfill() 2nd param must be a number')
442
444
  DEV: assert(
443
445
  isNumber(width) && width >= 0,
444
- '[litecanvas] rectfill() 3rd param must be a positive number or zero'
446
+ loggerPrefix + 'rectfill() 3rd param must be a positive number or zero'
445
447
  )
446
448
  DEV: assert(
447
449
  isNumber(height) && height >= 0,
448
- '[litecanvas] rectfill() 4th param must be a positive number or zero'
450
+ loggerPrefix + 'rectfill() 4th param must be a positive number or zero'
449
451
  )
450
452
  DEV: assert(
451
453
  null == color || (isNumber(color) && color >= 0),
452
- '[litecanvas] rectfill() 5th param must be a positive number or zero'
454
+ loggerPrefix + 'rectfill() 5th param must be a positive number or zero'
453
455
  )
454
456
  DEV: assert(
455
457
  null == radii || isNumber(radii) || (Array.isArray(radii) && radii.length >= 1),
456
- '[litecanvas] rectfill() 6th param must be a number or array of at least 2 numbers'
458
+ loggerPrefix +
459
+ 'rectfill() 6th param must be a number or array of at least 2 numbers'
457
460
  )
458
461
 
459
462
  beginPath(_ctx)
@@ -470,15 +473,15 @@ export default function litecanvas(settings = {}) {
470
473
  * @param {number} [color=0] the color index
471
474
  */
472
475
  circ(x, y, radius, color) {
473
- DEV: assert(isNumber(x), '[litecanvas] circ() 1st param must be a number')
474
- DEV: assert(isNumber(y), '[litecanvas] circ() 2nd param must be a number')
476
+ DEV: assert(isNumber(x), loggerPrefix + 'circ() 1st param must be a number')
477
+ DEV: assert(isNumber(y), loggerPrefix + 'circ() 2nd param must be a number')
475
478
  DEV: assert(
476
479
  isNumber(radius) && radius >= 0,
477
- '[litecanvas] circ() 3rd param must be a positive number or zero'
480
+ loggerPrefix + 'circ() 3rd param must be a positive number or zero'
478
481
  )
479
482
  DEV: assert(
480
483
  null == color || (isNumber(color) && color >= 0),
481
- '[litecanvas] circ() 4th param must be a positive number or zero'
484
+ loggerPrefix + 'circ() 4th param must be a positive number or zero'
482
485
  )
483
486
 
484
487
  beginPath(_ctx)
@@ -495,15 +498,15 @@ export default function litecanvas(settings = {}) {
495
498
  * @param {number} [color=0] the color index
496
499
  */
497
500
  circfill(x, y, radius, color) {
498
- DEV: assert(isNumber(x), '[litecanvas] circfill() 1st param must be a number')
499
- DEV: assert(isNumber(y), '[litecanvas] circfill() 2nd param must be a number')
501
+ DEV: assert(isNumber(x), loggerPrefix + 'circfill() 1st param must be a number')
502
+ DEV: assert(isNumber(y), loggerPrefix + 'circfill() 2nd param must be a number')
500
503
  DEV: assert(
501
504
  isNumber(radius) && radius >= 0,
502
- '[litecanvas] circfill() 3rd param must be a positive number or zero'
505
+ loggerPrefix + 'circfill() 3rd param must be a positive number or zero'
503
506
  )
504
507
  DEV: assert(
505
508
  null == color || (isNumber(color) && color >= 0),
506
- '[litecanvas] circfill() 4th param must be a positive number or zero'
509
+ loggerPrefix + 'circfill() 4th param must be a positive number or zero'
507
510
  )
508
511
 
509
512
  beginPath(_ctx)
@@ -521,19 +524,19 @@ export default function litecanvas(settings = {}) {
521
524
  * @param {number} [color=0] the color index
522
525
  */
523
526
  oval(x, y, radiusX, radiusY, color) {
524
- DEV: assert(isNumber(x), '[litecanvas] oval() 1st param must be a number')
525
- DEV: assert(isNumber(y), '[litecanvas] oval() 2nd param must be a number')
527
+ DEV: assert(isNumber(x), loggerPrefix + 'oval() 1st param must be a number')
528
+ DEV: assert(isNumber(y), loggerPrefix + 'oval() 2nd param must be a number')
526
529
  DEV: assert(
527
530
  isNumber(radiusX) && radiusX >= 0,
528
- '[litecanvas] oval() 3rd param must be a positive number or zero'
531
+ loggerPrefix + 'oval() 3rd param must be a positive number or zero'
529
532
  )
530
533
  DEV: assert(
531
534
  isNumber(radiusY) && radiusY >= 0,
532
- '[litecanvas] oval() 4th param must be a positive number or zero'
535
+ loggerPrefix + 'oval() 4th param must be a positive number or zero'
533
536
  )
534
537
  DEV: assert(
535
538
  null == color || (isNumber(color) && color >= 0),
536
- '[litecanvas] oval() 5th param must be a positive number or zero'
539
+ loggerPrefix + 'oval() 5th param must be a positive number or zero'
537
540
  )
538
541
 
539
542
  beginPath(_ctx)
@@ -551,19 +554,19 @@ export default function litecanvas(settings = {}) {
551
554
  * @param {number} [color=0] the color index
552
555
  */
553
556
  ovalfill(x, y, radiusX, radiusY, color) {
554
- DEV: assert(isNumber(x), '[litecanvas] ovalfill() 1st param must be a number')
555
- DEV: assert(isNumber(y), '[litecanvas] ovalfill() 2nd param must be a number')
557
+ DEV: assert(isNumber(x), loggerPrefix + 'ovalfill() 1st param must be a number')
558
+ DEV: assert(isNumber(y), loggerPrefix + 'ovalfill() 2nd param must be a number')
556
559
  DEV: assert(
557
560
  isNumber(radiusX) && radiusX >= 0,
558
- '[litecanvas] ovalfill() 3rd param must be a positive number or zero'
561
+ loggerPrefix + 'ovalfill() 3rd param must be a positive number or zero'
559
562
  )
560
563
  DEV: assert(
561
564
  isNumber(radiusY) && radiusY >= 0,
562
- '[litecanvas] ovalfill() 4th param must be a positive number or zero'
565
+ loggerPrefix + 'ovalfill() 4th param must be a positive number or zero'
563
566
  )
564
567
  DEV: assert(
565
568
  null == color || (isNumber(color) && color >= 0),
566
- '[litecanvas] ovalfill() 5th param must be a positive number or zero'
569
+ loggerPrefix + 'ovalfill() 5th param must be a positive number or zero'
567
570
  )
568
571
 
569
572
  beginPath(_ctx)
@@ -580,11 +583,12 @@ export default function litecanvas(settings = {}) {
580
583
  shape(points) {
581
584
  DEV: assert(
582
585
  Array.isArray(points),
583
- '[litecanvas] shape() 1st param must be an array of numbers'
586
+ loggerPrefix + 'shape() 1st param must be an array of numbers'
584
587
  )
585
588
  DEV: assert(
586
589
  points.length >= 6,
587
- '[litecanvas] shape() 1st param must be an array with at least 6 numbers (3 points)'
590
+ loggerPrefix +
591
+ 'shape() 1st param must be an array with at least 6 numbers (3 points)'
588
592
  )
589
593
  beginPath(_ctx)
590
594
  for (let i = 0; i < points.length; i += 2) {
@@ -607,19 +611,19 @@ export default function litecanvas(settings = {}) {
607
611
  * @param {number} [color=0] the color index
608
612
  */
609
613
  line(x1, y1, x2, y2, color) {
610
- DEV: assert(isNumber(x1), '[litecanvas] line() 1st param must be a number')
611
- DEV: assert(isNumber(y1), '[litecanvas] line() 2nd param must be a number')
614
+ DEV: assert(isNumber(x1), loggerPrefix + 'line() 1st param must be a number')
615
+ DEV: assert(isNumber(y1), loggerPrefix + 'line() 2nd param must be a number')
612
616
  DEV: assert(
613
617
  isNumber(x2),
614
- '[litecanvas] line() 3rd param must be a positive number or zero'
618
+ loggerPrefix + 'line() 3rd param must be a positive number or zero'
615
619
  )
616
620
  DEV: assert(
617
621
  isNumber(y2),
618
- '[litecanvas] line() 4th param must be a positive number or zero'
622
+ loggerPrefix + 'line() 4th param must be a positive number or zero'
619
623
  )
620
624
  DEV: assert(
621
625
  null == color || (isNumber(color) && color >= 0),
622
- '[litecanvas] line() 5th param must be a positive number or zero'
626
+ loggerPrefix + 'line() 5th param must be a positive number or zero'
623
627
  )
624
628
 
625
629
  beginPath(_ctx)
@@ -642,7 +646,7 @@ export default function litecanvas(settings = {}) {
642
646
  linewidth(value) {
643
647
  DEV: assert(
644
648
  isNumber(value) && value >= 0,
645
- '[litecanvas] linewidth() 1st param must be a positive number or zero'
649
+ loggerPrefix + 'linewidth() 1st param must be a positive number or zero'
646
650
  )
647
651
 
648
652
  _ctx.lineWidth = ~~value
@@ -660,9 +664,9 @@ export default function litecanvas(settings = {}) {
660
664
  linedash(segments, offset = 0) {
661
665
  DEV: assert(
662
666
  Array.isArray(segments) && segments.length > 0,
663
- '[litecanvas] linedash() 1st param must be an array of numbers'
667
+ loggerPrefix + 'linedash() 1st param must be an array of numbers'
664
668
  )
665
- DEV: assert(isNumber(offset), '[litecanvas] linedash() 2nd param must be a number')
669
+ DEV: assert(isNumber(offset), loggerPrefix + 'linedash() 2nd param must be a number')
666
670
 
667
671
  _ctx.setLineDash(segments)
668
672
  _ctx.lineDashOffset = offset
@@ -679,15 +683,15 @@ export default function litecanvas(settings = {}) {
679
683
  * @param {string} [fontStyle] can be "normal" (default), "italic" and/or "bold".
680
684
  */
681
685
  text(x, y, message, color = _defaultTextColor, fontStyle = 'normal') {
682
- DEV: assert(isNumber(x), '[litecanvas] text() 1st param must be a number')
683
- DEV: assert(isNumber(y), '[litecanvas] text() 2nd param must be a number')
686
+ DEV: assert(isNumber(x), loggerPrefix + 'text() 1st param must be a number')
687
+ DEV: assert(isNumber(y), loggerPrefix + 'text() 2nd param must be a number')
684
688
  DEV: assert(
685
689
  null == color || (isNumber(color) && color >= 0),
686
- '[litecanvas] text() 4th param must be a positive number or zero'
690
+ loggerPrefix + 'text() 4th param must be a positive number or zero'
687
691
  )
688
692
  DEV: assert(
689
693
  'string' === typeof fontStyle,
690
- '[litecanvas] text() 5th param must be a string'
694
+ loggerPrefix + 'text() 5th param must be a string'
691
695
  )
692
696
 
693
697
  _ctx.font = `${fontStyle} ${_fontSize}px ${_fontFamily}`
@@ -718,7 +722,7 @@ export default function litecanvas(settings = {}) {
718
722
  textfont(family) {
719
723
  DEV: assert(
720
724
  'string' === typeof family,
721
- '[litecanvas] textfont() 1st param must be a string'
725
+ loggerPrefix + 'textfont() 1st param must be a string'
722
726
  )
723
727
 
724
728
  _fontFamily = family
@@ -730,7 +734,7 @@ export default function litecanvas(settings = {}) {
730
734
  * @param {number} size
731
735
  */
732
736
  textsize(size) {
733
- DEV: assert(isNumber(size), '[litecanvas] textsize() 1st param must be a number')
737
+ DEV: assert(isNumber(size), loggerPrefix + 'textsize() 1st param must be a number')
734
738
 
735
739
  _fontSize = size
736
740
  },
@@ -746,14 +750,16 @@ export default function litecanvas(settings = {}) {
746
750
  textalign(align, baseline) {
747
751
  DEV: assert(
748
752
  null == align || ['left', 'right', 'center', 'start', 'end'].includes(align),
749
- '[litecanvas] textalign() 1st param must be null or one of the following strings: center, left, right, start or end.'
753
+ loggerPrefix +
754
+ 'textalign() 1st param must be null or one of the following strings: center, left, right, start or end.'
750
755
  )
751
756
  DEV: assert(
752
757
  null == baseline ||
753
758
  ['top', 'bottom', 'middle', 'hanging', 'alphabetic', 'ideographic'].includes(
754
759
  baseline
755
760
  ),
756
- '[litecanvas] textalign() 2nd param must be null or one of the following strings: middle, top, bottom, hanging, alphabetic or ideographic.'
761
+ loggerPrefix +
762
+ 'textalign() 2nd param must be null or one of the following strings: middle, top, bottom, hanging, alphabetic or ideographic.'
757
763
  )
758
764
 
759
765
  if (align) _ctx.textAlign = align
@@ -769,8 +775,8 @@ export default function litecanvas(settings = {}) {
769
775
  * @param {CanvasImageSource} source
770
776
  */
771
777
  image(x, y, source) {
772
- DEV: assert(isNumber(x), '[litecanvas] image() 1st param must be a number')
773
- DEV: assert(isNumber(y), '[litecanvas] image() 2nd param must be a number')
778
+ DEV: assert(isNumber(x), loggerPrefix + 'image() 1st param must be a number')
779
+ DEV: assert(isNumber(y), loggerPrefix + 'image() 2nd param must be a number')
774
780
 
775
781
  _ctx.drawImage(source, ~~x, ~~y)
776
782
  },
@@ -783,9 +789,12 @@ export default function litecanvas(settings = {}) {
783
789
  * @param {string} pixels
784
790
  */
785
791
  spr(x, y, pixels) {
786
- DEV: assert(isNumber(x), '[litecanvas] spr() 1st param must be a number')
787
- DEV: assert(isNumber(y), '[litecanvas] spr() 2nd param must be a number')
788
- DEV: assert('string' === typeof pixels, '[litecanvas] spr() 3rd param must be a string')
792
+ DEV: assert(isNumber(x), loggerPrefix + 'spr() 1st param must be a number')
793
+ DEV: assert(isNumber(y), loggerPrefix + 'spr() 2nd param must be a number')
794
+ DEV: assert(
795
+ 'string' === typeof pixels,
796
+ loggerPrefix + 'spr() 3rd param must be a string'
797
+ )
789
798
 
790
799
  const rows = pixels.trim().split('\n')
791
800
 
@@ -815,23 +824,23 @@ export default function litecanvas(settings = {}) {
815
824
  paint(width, height, callback, options = {}) {
816
825
  DEV: assert(
817
826
  isNumber(width) && width >= 1,
818
- '[litecanvas] paint() 1st param must be a positive number'
827
+ loggerPrefix + 'paint() 1st param must be a positive number'
819
828
  )
820
829
  DEV: assert(
821
830
  isNumber(height) && height >= 1,
822
- '[litecanvas] paint() 2nd param must be a positive number'
831
+ loggerPrefix + 'paint() 2nd param must be a positive number'
823
832
  )
824
833
  DEV: assert(
825
834
  'function' === typeof callback,
826
- '[litecanvas] paint() 3rd param must be a function'
835
+ loggerPrefix + 'paint() 3rd param must be a function'
827
836
  )
828
837
  DEV: assert(
829
838
  (options && null == options.scale) || isNumber(options.scale),
830
- '[litecanvas] paint() 4th param (options.scale) must be a number'
839
+ loggerPrefix + 'paint() 4th param (options.scale) must be a number'
831
840
  )
832
841
  DEV: assert(
833
842
  (options && null == options.canvas) || options.canvas instanceof OffscreenCanvas,
834
- '[litecanvas] paint() 4th param (options.canvas) must be an OffscreenCanvas'
843
+ loggerPrefix + 'paint() 4th param (options.canvas) must be an OffscreenCanvas'
835
844
  )
836
845
 
837
846
  const /** @type {OffscreenCanvas} */
@@ -891,8 +900,8 @@ export default function litecanvas(settings = {}) {
891
900
  * @param {number} y
892
901
  */
893
902
  translate(x, y) {
894
- DEV: assert(isNumber(x), '[litecanvas] translate() 1st param must be a number')
895
- DEV: assert(isNumber(y), '[litecanvas] translate() 2nd param must be a number')
903
+ DEV: assert(isNumber(x), loggerPrefix + 'translate() 1st param must be a number')
904
+ DEV: assert(isNumber(y), loggerPrefix + 'translate() 2nd param must be a number')
896
905
 
897
906
  _ctx.translate(~~x, ~~y)
898
907
  },
@@ -904,8 +913,11 @@ export default function litecanvas(settings = {}) {
904
913
  * @param {number} [y]
905
914
  */
906
915
  scale(x, y) {
907
- DEV: assert(isNumber(x), '[litecanvas] scale() 1st param must be a number')
908
- DEV: assert(null == y || isNumber(y), '[litecanvas] scale() 2nd param must be a number')
916
+ DEV: assert(isNumber(x), loggerPrefix + 'scale() 1st param must be a number')
917
+ DEV: assert(
918
+ null == y || isNumber(y),
919
+ loggerPrefix + 'scale() 2nd param must be a number'
920
+ )
909
921
 
910
922
  _ctx.scale(x, y || x)
911
923
  },
@@ -916,7 +928,7 @@ export default function litecanvas(settings = {}) {
916
928
  * @param {number} radians
917
929
  */
918
930
  rotate(radians) {
919
- DEV: assert(isNumber(radians), '[litecanvas] rotate() 1st param must be a number')
931
+ DEV: assert(isNumber(radians), loggerPrefix + 'rotate() 1st param must be a number')
920
932
 
921
933
  _ctx.rotate(radians)
922
934
  },
@@ -928,7 +940,7 @@ export default function litecanvas(settings = {}) {
928
940
  * @see https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/globalAlpha
929
941
  */
930
942
  alpha(value) {
931
- DEV: assert(isNumber(value), '[litecanvas] alpha() 1st param must be a number')
943
+ DEV: assert(isNumber(value), loggerPrefix + 'alpha() 1st param must be a number')
932
944
 
933
945
  _ctx.globalAlpha = instance.clamp(value, 0, 1)
934
946
  },
@@ -941,7 +953,7 @@ export default function litecanvas(settings = {}) {
941
953
  fill(color) {
942
954
  DEV: assert(
943
955
  null == color || (isNumber(color) && color >= 0),
944
- '[litecanvas] fill() 1st param must be a positive number or zero'
956
+ loggerPrefix + 'fill() 1st param must be a positive number or zero'
945
957
  )
946
958
 
947
959
  _ctx.fillStyle = getColor(color)
@@ -956,7 +968,7 @@ export default function litecanvas(settings = {}) {
956
968
  stroke(color) {
957
969
  DEV: assert(
958
970
  null == color || (isNumber(color) && color >= 0),
959
- '[litecanvas] stroke() 1st param must be a positive number or zero'
971
+ loggerPrefix + 'stroke() 1st param must be a positive number or zero'
960
972
  )
961
973
 
962
974
  _ctx.strokeStyle = getColor(color)
@@ -972,7 +984,7 @@ export default function litecanvas(settings = {}) {
972
984
  clip(callback) {
973
985
  DEV: assert(
974
986
  'function' === typeof callback,
975
- '[litecanvas] clip() 1st param must be a function'
987
+ loggerPrefix + 'clip() 1st param must be a function'
976
988
  )
977
989
 
978
990
  beginPath(_ctx)
@@ -995,10 +1007,10 @@ export default function litecanvas(settings = {}) {
995
1007
  sfx(zzfxParams, pitchSlide = 0, volumeFactor = 1) {
996
1008
  DEV: assert(
997
1009
  null == zzfxParams || Array.isArray(zzfxParams),
998
- '[litecanvas] sfx() 1st param must be an array'
1010
+ loggerPrefix + 'sfx() 1st param must be an array'
999
1011
  )
1000
- DEV: assert(isNumber(pitchSlide), '[litecanvas] sfx() 2nd param must be a number')
1001
- DEV: assert(isNumber(volumeFactor), '[litecanvas] sfx() 3rd param must be a number')
1012
+ DEV: assert(isNumber(pitchSlide), loggerPrefix + 'sfx() 2nd param must be a number')
1013
+ DEV: assert(isNumber(volumeFactor), loggerPrefix + 'sfx() 3rd param must be a number')
1002
1014
 
1003
1015
  if (
1004
1016
  !root.zzfxV ||
@@ -1030,7 +1042,7 @@ export default function litecanvas(settings = {}) {
1030
1042
  volume(value) {
1031
1043
  DEV: assert(
1032
1044
  isNumber(value) && value >= 0,
1033
- '[litecanvas] volume() 1st param must be a positive number or zero'
1045
+ loggerPrefix + 'volume() 1st param must be a positive number or zero'
1034
1046
  )
1035
1047
 
1036
1048
  root.zzfxV = value
@@ -1052,11 +1064,11 @@ export default function litecanvas(settings = {}) {
1052
1064
  use(callback, config = {}) {
1053
1065
  DEV: assert(
1054
1066
  'function' === typeof callback,
1055
- '[litecanvas] use() 1st param must be a function'
1067
+ loggerPrefix + 'use() 1st param must be a function'
1056
1068
  )
1057
1069
  DEV: assert(
1058
1070
  'object' === typeof config,
1059
- '[litecanvas] use() 2nd param must be an object'
1071
+ loggerPrefix + 'use() 2nd param must be an object'
1060
1072
  )
1061
1073
 
1062
1074
  loadPlugin(callback, config)
@@ -1072,11 +1084,11 @@ export default function litecanvas(settings = {}) {
1072
1084
  listen(eventName, callback) {
1073
1085
  DEV: assert(
1074
1086
  'string' === typeof eventName,
1075
- '[litecanvas] listen() 1st param must be a string'
1087
+ loggerPrefix + 'listen() 1st param must be a string'
1076
1088
  )
1077
1089
  DEV: assert(
1078
1090
  'function' === typeof callback,
1079
- '[litecanvas] listen() 2nd param must be a function'
1091
+ loggerPrefix + 'listen() 2nd param must be a function'
1080
1092
  )
1081
1093
 
1082
1094
  eventName = lowerCase(eventName)
@@ -1100,7 +1112,7 @@ export default function litecanvas(settings = {}) {
1100
1112
  emit(eventName, arg1, arg2, arg3, arg4) {
1101
1113
  DEV: assert(
1102
1114
  'string' === typeof eventName,
1103
- '[litecanvas] emit() 1st param must be a string'
1115
+ loggerPrefix + 'emit() 1st param must be a string'
1104
1116
  )
1105
1117
 
1106
1118
  if (_initialized) {
@@ -1121,11 +1133,11 @@ export default function litecanvas(settings = {}) {
1121
1133
  pal(colors, textColor = 3) {
1122
1134
  DEV: assert(
1123
1135
  null == colors || (Array.isArray(colors) && colors.length > 0),
1124
- '[litecanvas] pal() 1st param must be a array of color strings'
1136
+ loggerPrefix + 'pal() 1st param must be a array of color strings'
1125
1137
  )
1126
1138
  DEV: assert(
1127
1139
  isNumber(textColor) && textColor >= 0,
1128
- '[litecanvas] pal() 2nd param must be a positive number or zero'
1140
+ loggerPrefix + 'pal() 2nd param must be a positive number or zero'
1129
1141
  )
1130
1142
 
1131
1143
  _colorPalette = colors || defaultPalette
@@ -1146,11 +1158,11 @@ export default function litecanvas(settings = {}) {
1146
1158
  palc(a, b) {
1147
1159
  DEV: assert(
1148
1160
  null == a || (isNumber(a) && a >= 0),
1149
- '[litecanvas] palc() 1st param must be a positive number'
1161
+ loggerPrefix + 'palc() 1st param must be a positive number'
1150
1162
  )
1151
1163
  DEV: assert(
1152
1164
  isNumber(a) ? isNumber(b) && b >= 0 : null == b,
1153
- '[litecanvas] palc() 2nd param must be a positive number'
1165
+ loggerPrefix + 'palc() 2nd param must be a positive number'
1154
1166
  )
1155
1167
 
1156
1168
  if (a == null) {
@@ -1167,10 +1179,11 @@ export default function litecanvas(settings = {}) {
1167
1179
  * @param {*} value
1168
1180
  */
1169
1181
  def(key, value) {
1170
- DEV: assert('string' === typeof key, '[litecanvas] def() 1st param must be a string')
1182
+ DEV: assert('string' === typeof key, loggerPrefix + 'def() 1st param must be a string')
1171
1183
  DEV: if (null == value) {
1172
1184
  console.warn(
1173
- `[litecanvas] def() changed the key "${key}" to null (previous value was ${instance[key]})`
1185
+ loggerPrefix +
1186
+ `def() changed the key "${key}" to null (previous value was ${instance[key]})`
1174
1187
  )
1175
1188
  }
1176
1189
 
@@ -1190,7 +1203,7 @@ export default function litecanvas(settings = {}) {
1190
1203
  timescale(value) {
1191
1204
  DEV: assert(
1192
1205
  isNumber(value) && value >= 0,
1193
- '[litecanvas] timescale() 1st param must be a positive number or zero'
1206
+ loggerPrefix + 'timescale() 1st param must be a positive number or zero'
1194
1207
  )
1195
1208
 
1196
1209
  _timeScale = value
@@ -1204,7 +1217,7 @@ export default function litecanvas(settings = {}) {
1204
1217
  framerate(value) {
1205
1218
  DEV: assert(
1206
1219
  isNumber(value) && value >= 1,
1207
- '[litecanvas] framerate() 1st param must be a positive number'
1220
+ loggerPrefix + 'framerate() 1st param must be a positive number'
1208
1221
  )
1209
1222
 
1210
1223
  _fpsInterval = 1000 / ~~value
@@ -1219,7 +1232,7 @@ export default function litecanvas(settings = {}) {
1219
1232
  stat(index) {
1220
1233
  DEV: assert(
1221
1234
  isNumber(index) || 'string' === typeof index,
1222
- '[litecanvas] stat() 1st param must be a number or string'
1235
+ loggerPrefix + 'stat() 1st param must be a number or string'
1223
1236
  )
1224
1237
 
1225
1238
  const internals = [
@@ -1275,12 +1288,13 @@ export default function litecanvas(settings = {}) {
1275
1288
  resume() {
1276
1289
  DEV: assert(
1277
1290
  _initialized,
1278
- '[litecanvas] resume() cannot be called before the "init" event and neither after the quit() function'
1291
+ loggerPrefix +
1292
+ 'resume() cannot be called before the "init" event and neither after the quit() function'
1279
1293
  )
1280
1294
  if (_initialized && _paused) {
1281
1295
  _paused = false
1282
1296
  _accumulated = _fpsInterval
1283
- _lastFrameTime = Date.now()
1297
+ _lastFrameTime = perf.now()
1284
1298
  _rafid = raf(drawFrame)
1285
1299
  }
1286
1300
  },
@@ -1323,7 +1337,7 @@ export default function litecanvas(settings = {}) {
1323
1337
  delete root.ENGINE
1324
1338
  }
1325
1339
 
1326
- DEV: console.warn('[litecanvas] quit() terminated a Litecanvas instance.')
1340
+ DEV: console.warn(loggerPrefix + 'quit() terminated a Litecanvas instance.')
1327
1341
  },
1328
1342
  }
1329
1343
 
@@ -1367,7 +1381,7 @@ export default function litecanvas(settings = {}) {
1367
1381
  // initial y
1368
1382
  yi: y,
1369
1383
  // timestamp
1370
- t: Date.now(),
1384
+ t: perf.now(),
1371
1385
  }
1372
1386
  _taps.set(id, tap)
1373
1387
  return tap
@@ -1387,7 +1401,7 @@ export default function litecanvas(settings = {}) {
1387
1401
  /**
1388
1402
  * @param {{t: number}} tap
1389
1403
  */
1390
- (tap) => tap && Date.now() - tap.t <= 300
1404
+ (tap) => tap && perf.now() - tap.t <= 300
1391
1405
 
1392
1406
  let _pressingMouse = false
1393
1407
 
@@ -1564,7 +1578,7 @@ export default function litecanvas(settings = {}) {
1564
1578
  (key) => {
1565
1579
  DEV: assert(
1566
1580
  null == key || 'string' === typeof key,
1567
- '[litecanvas] iskeydown() 1st param must be a string or undefined'
1581
+ loggerPrefix + 'iskeydown() 1st param must be a string or undefined'
1568
1582
  )
1569
1583
  return keyCheck(_keysDown, key)
1570
1584
  }
@@ -1579,7 +1593,7 @@ export default function litecanvas(settings = {}) {
1579
1593
  (key) => {
1580
1594
  DEV: assert(
1581
1595
  null == key || 'string' === typeof key,
1582
- '[litecanvas] iskeypressed() 1st param must be a string or undefined'
1596
+ loggerPrefix + 'iskeypressed() 1st param must be a string or undefined'
1583
1597
  )
1584
1598
  return keyCheck(_keysPress, key)
1585
1599
  }
@@ -1604,7 +1618,7 @@ export default function litecanvas(settings = {}) {
1604
1618
  // request the next frame
1605
1619
  _rafid = raf(drawFrame)
1606
1620
 
1607
- let now = Date.now()
1621
+ let now = perf.now()
1608
1622
  let updated = 0
1609
1623
  let frameTime = now - _lastFrameTime
1610
1624
 
@@ -1626,7 +1640,8 @@ export default function litecanvas(settings = {}) {
1626
1640
  if (updated > 1) {
1627
1641
  _accumulated = 0
1628
1642
  DEV: console.warn(
1629
- '[litecanvas] the last frame updated ' +
1643
+ loggerPrefix +
1644
+ 'the last frame updated ' +
1630
1645
  updated +
1631
1646
  ' times. This can drop the FPS if it keeps happening.'
1632
1647
  )
@@ -1639,7 +1654,7 @@ export default function litecanvas(settings = {}) {
1639
1654
  _canvas = document.querySelector(settings.canvas)
1640
1655
  DEV: assert(
1641
1656
  null != _canvas,
1642
- '[litecanvas] litecanvas() option "canvas" is an invalid CSS selector'
1657
+ loggerPrefix + 'litecanvas() option "canvas" is an invalid CSS selector'
1643
1658
  )
1644
1659
  } else {
1645
1660
  _canvas = settings.canvas
@@ -1649,7 +1664,8 @@ export default function litecanvas(settings = {}) {
1649
1664
 
1650
1665
  DEV: assert(
1651
1666
  'CANVAS' === _canvas.tagName,
1652
- '[litecanvas] litecanvas() option "canvas" should be a canvas element or string (CSS selector)'
1667
+ loggerPrefix +
1668
+ 'litecanvas() option "canvas" should be a canvas element or string (CSS selector)'
1653
1669
  )
1654
1670
 
1655
1671
  _ctx = _canvas.getContext('2d')
@@ -1669,15 +1685,16 @@ export default function litecanvas(settings = {}) {
1669
1685
  function resizeCanvas() {
1670
1686
  DEV: assert(
1671
1687
  null == settings.width || (isNumber(settings.width) && settings.width > 0),
1672
- '[litecanvas] litecanvas() option "width" should be a positive number when defined'
1688
+ loggerPrefix + 'litecanvas() option "width" should be a positive number when defined'
1673
1689
  )
1674
1690
  DEV: assert(
1675
1691
  null == settings.height || (isNumber(settings.height) && settings.height > 0),
1676
- '[litecanvas] litecanvas() option "height" should be a positive number when defined'
1692
+ loggerPrefix + 'litecanvas() option "height" should be a positive number when defined'
1677
1693
  )
1678
1694
  DEV: assert(
1679
1695
  null == settings.height || (settings.width > 0 && settings.height > 0),
1680
- '[litecanvas] litecanvas() option "width" is required when the option "height" is defined'
1696
+ loggerPrefix +
1697
+ 'litecanvas() option "width" is required when the option "height" is defined'
1681
1698
  )
1682
1699
 
1683
1700
  const width = settings.width > 0 ? settings.width : innerWidth,
@@ -1737,7 +1754,7 @@ export default function litecanvas(settings = {}) {
1737
1754
 
1738
1755
  DEV: assert(
1739
1756
  null == pluginData || 'object' === typeof pluginData,
1740
- '[litecanvas] litecanvas() plugins should return an object or nothing'
1757
+ loggerPrefix + 'litecanvas() plugins should return an object or nothing'
1741
1758
  )
1742
1759
 
1743
1760
  for (const key in pluginData) {
@@ -1762,8 +1779,8 @@ export default function litecanvas(settings = {}) {
1762
1779
  root.ENGINE = instance
1763
1780
  }
1764
1781
 
1765
- DEV: console.info(`[litecanvas] version ${version} started`)
1766
- DEV: console.debug(`[litecanvas] litecanvas() options =`, settings)
1782
+ DEV: console.info(loggerPrefix + `version ${version} started`)
1783
+ DEV: console.debug(loggerPrefix + `litecanvas() options =`, settings)
1767
1784
 
1768
1785
  // setup the canvas
1769
1786
  setupCanvas()
@@ -1772,7 +1789,7 @@ export default function litecanvas(settings = {}) {
1772
1789
  const source = settings.loop ? settings.loop : root
1773
1790
  for (const event of _coreEvents.split(',')) {
1774
1791
  DEV: if (root === source && source[event]) {
1775
- console.info(`[litecanvas] using window.${event}()`)
1792
+ console.info(loggerPrefix + `using window.${event}()`)
1776
1793
  }
1777
1794
  if (source[event]) instance.listen(event, source[event])
1778
1795
  }