pixel-data-js 0.34.0 → 0.35.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/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "pixel-data-js",
3
3
  "type": "module",
4
- "version": "0.34.0",
4
+ "version": "0.35.0",
5
5
  "packageManager": "pnpm@10.33.0",
6
6
  "description": "JS Pixel and ImageData operations",
7
7
  "author": {
@@ -1,8 +1,11 @@
1
1
  import { _macro_paintRectCenterOffset } from '../Internal/macros'
2
- import type { PaintRect } from './_paint-types'
2
+ import { PaintMaskOutline, type PaintRect } from './_paint-types'
3
3
 
4
4
  export function makePaintRect(w: number, h: number): PaintRect {
5
5
  return {
6
+ type: null,
7
+ outlineType: PaintMaskOutline.RECT,
8
+ data: null,
6
9
  w,
7
10
  h,
8
11
  centerOffsetX: _macro_paintRectCenterOffset(w),
@@ -11,7 +11,7 @@ import { makeRectBinaryMaskOutline } from '../../Mask/BinaryMask/makeRectBinaryM
11
11
  import { fillPixelDataBinaryMask } from '../../PixelData/fillPixelDataBinaryMask'
12
12
  import { makeReusablePixelData } from '../../PixelData/ReusablePixelData'
13
13
  import type { Rect } from '../../Rect/_rect-types'
14
- import { type PaintMask, PaintMaskOutline } from '../_paint-types'
14
+ import { type PaintBrush, PaintMaskOutline } from '../_paint-types'
15
15
 
16
16
  export type PaintCursorRenderer = ReturnType<typeof makePaintCursorRenderer>
17
17
 
@@ -27,39 +27,42 @@ export function makePaintCursorRenderer<T extends HTMLCanvasElement | OffscreenC
27
27
  let _color = packColor(0, 255, 255, 255)
28
28
  let _scale = 1
29
29
 
30
- let currentMask: PaintMask = {
31
- type: MaskType.BINARY,
30
+ let currentBrush: PaintBrush = {
31
+ type: null,
32
32
  outlineType: PaintMaskOutline.RECT,
33
33
  w: 1,
34
34
  h: 1,
35
35
  centerOffsetX: _macro_paintRectCenterOffset(10),
36
36
  centerOffsetY: _macro_paintRectCenterOffset(10),
37
- } as PaintMask
37
+ data: null,
38
+ }
38
39
 
39
40
  let outline: BinaryMask
40
41
 
41
- function update(paintMask?: PaintMask, scale?: number, color?: Color32, alphaThreshold = 127) {
42
- currentMask = paintMask ?? currentMask
42
+ function update(paintMask?: PaintBrush, scale?: number, color?: Color32, alphaThreshold = 127) {
43
+ currentBrush = paintMask ?? currentBrush
43
44
 
44
45
  _scale = scale ?? _scale
45
46
  _color = color ?? _color
46
47
 
47
48
  updateBuffer(
48
- currentMask.w * _scale + 2 * _scale,
49
- currentMask.h * _scale + 2 * _scale,
49
+ currentBrush.w * _scale + 2 * _scale,
50
+ currentBrush.h * _scale + 2 * _scale,
50
51
  )
51
52
 
52
- if (currentMask.type === MaskType.BINARY) {
53
- if (currentMask.outlineType === PaintMaskOutline.CIRCLE) {
54
- outline = makeCircleBinaryMaskOutline(currentMask.w, _scale)
55
- } else if (currentMask.outlineType === PaintMaskOutline.RECT) {
56
- outline = makeRectBinaryMaskOutline(currentMask.w, currentMask.h, _scale)
57
- } else if (currentMask.outlineType === PaintMaskOutline.MASKED) {
58
- outline = makeBinaryMaskOutline(currentMask, _scale)
53
+ if (currentBrush.type === MaskType.BINARY) {
54
+ if (currentBrush.outlineType === PaintMaskOutline.CIRCLE) {
55
+ outline = makeCircleBinaryMaskOutline(currentBrush.w, _scale)
56
+ } else if (currentBrush.outlineType === PaintMaskOutline.RECT) {
57
+ outline = makeRectBinaryMaskOutline(currentBrush.w, currentBrush.h, _scale)
58
+ } else if (currentBrush.outlineType === PaintMaskOutline.MASKED) {
59
+ outline = makeBinaryMaskOutline(currentBrush, _scale)
59
60
  }
60
- } else if (currentMask.type === MaskType.ALPHA) {
61
- const mask = makeBinaryMaskFromAlphaMask(currentMask, alphaThreshold)
61
+ } else if (currentBrush.type === MaskType.ALPHA) {
62
+ const mask = makeBinaryMaskFromAlphaMask(currentBrush, alphaThreshold)
62
63
  outline = makeBinaryMaskOutline(mask, _scale)
64
+ } else {
65
+ outline = makeRectBinaryMaskOutline(currentBrush.w, currentBrush.h, _scale)
63
66
  }
64
67
 
65
68
  const pixelData = getPixelData(outline.w, outline.h)
@@ -70,10 +73,10 @@ export function makePaintCursorRenderer<T extends HTMLCanvasElement | OffscreenC
70
73
  const boundsScratch = { x: 0, y: 0, w: 0, h: 0 }
71
74
 
72
75
  function getBounds(centerX: number, centerY: number): Rect {
73
- boundsScratch.x = centerX + currentMask.centerOffsetX
74
- boundsScratch.y = centerY + currentMask.centerOffsetY
75
- boundsScratch.w = currentMask.w
76
- boundsScratch.h = currentMask.h
76
+ boundsScratch.x = centerX + currentBrush.centerOffsetX
77
+ boundsScratch.y = centerY + currentBrush.centerOffsetY
78
+ boundsScratch.w = currentBrush.w
79
+ boundsScratch.h = currentBrush.h
77
80
 
78
81
  return boundsScratch
79
82
  }
@@ -81,10 +84,10 @@ export function makePaintCursorRenderer<T extends HTMLCanvasElement | OffscreenC
81
84
  const boundsScaledScratch = { x: 0, y: 0, w: 0, h: 0 }
82
85
 
83
86
  function getOutlineBoundsScaled(centerX: number, centerY: number): Rect {
84
- boundsScaledScratch.x = centerX * _scale + currentMask.centerOffsetX * _scale - 1
85
- boundsScaledScratch.y = centerY * _scale + currentMask.centerOffsetY * _scale - 1
86
- boundsScaledScratch.w = currentMask.w * _scale
87
- boundsScaledScratch.h = currentMask.h * _scale
87
+ boundsScaledScratch.x = centerX * _scale + currentBrush.centerOffsetX * _scale - 1
88
+ boundsScaledScratch.y = centerY * _scale + currentBrush.centerOffsetY * _scale - 1
89
+ boundsScaledScratch.w = currentBrush.w * _scale
90
+ boundsScaledScratch.h = currentBrush.h * _scale
88
91
 
89
92
  return boundsScaledScratch
90
93
  }
@@ -94,8 +97,8 @@ export function makePaintCursorRenderer<T extends HTMLCanvasElement | OffscreenC
94
97
  centerX: number,
95
98
  centerY: number,
96
99
  ) {
97
- const dx = centerX * _scale + currentMask.centerOffsetX * _scale - 1
98
- const dy = centerY * _scale + currentMask.centerOffsetY * _scale - 1
100
+ const dx = centerX * _scale + currentBrush.centerOffsetX * _scale - 1
101
+ const dy = centerY * _scale + currentBrush.centerOffsetY * _scale - 1
99
102
 
100
103
  drawCtx.drawImage(canvas, Math.floor(dx), Math.floor(dy))
101
104
  }
@@ -104,7 +107,7 @@ export function makePaintCursorRenderer<T extends HTMLCanvasElement | OffscreenC
104
107
  return {
105
108
  color: _color,
106
109
  scale: _scale,
107
- currentMask,
110
+ currentBrush,
108
111
  }
109
112
  }
110
113
 
@@ -20,9 +20,14 @@ export interface PaintBinaryMask<T extends PaintMaskOutline = PaintMaskOutline>
20
20
 
21
21
  export type PaintMask = PaintAlphaMask<any> | PaintBinaryMask<any>
22
22
 
23
+ export type PaintBrush = PaintMask | PaintRect
24
+
23
25
  export interface PaintRect {
26
+ type: null,
27
+ readonly outlineType: PaintMaskOutline.RECT
24
28
  w: number,
25
29
  h: number,
26
30
  centerOffsetX: number,
27
31
  centerOffsetY: number,
32
+ data: null,
28
33
  }