@@ -51,8 +51,44 @@ suite('p5.Image', function() {
51
51
} ) ;
52
52
53
53
suite ( 'p5.Image.prototype.mask' , function ( ) {
54
- test ( 'it should mask the image' , function ( ) {
54
+ for ( const density of [ 1 , 2 ] ) {
55
+ test ( `it should mask the image at pixel density ${ density } ` , function ( ) {
56
+ let img = myp5 . createImage ( 10 , 10 ) ;
57
+ img . pixelDensity ( density ) ;
58
+ img . loadPixels ( ) ;
59
+ for ( let i = 0 ; i < img . height ; i ++ ) {
60
+ for ( let j = 0 ; j < img . width ; j ++ ) {
61
+ let alpha = i < 5 ? 255 : 0 ;
62
+ img . set ( i , j , myp5 . color ( 0 , 0 , 0 , alpha ) ) ;
63
+ }
64
+ }
65
+ img . updatePixels ( ) ;
66
+
67
+ let mask = myp5 . createImage ( 10 , 10 ) ;
68
+ mask . pixelDensity ( density ) ;
69
+ mask . loadPixels ( ) ;
70
+ for ( let i = 0 ; i < mask . width ; i ++ ) {
71
+ for ( let j = 0 ; j < mask . height ; j ++ ) {
72
+ let alpha = j < 5 ? 255 : 0 ;
73
+ mask . set ( i , j , myp5 . color ( 0 , 0 , 0 , alpha ) ) ;
74
+ }
75
+ }
76
+ mask . updatePixels ( ) ;
77
+
78
+ img . mask ( mask ) ;
79
+ img . loadPixels ( ) ;
80
+ for ( let i = 0 ; i < img . width ; i ++ ) {
81
+ for ( let j = 0 ; j < img . height ; j ++ ) {
82
+ let alpha = i < 5 && j < 5 ? 255 : 0 ;
83
+ assert . strictEqual ( img . get ( i , j ) [ 3 ] , alpha ) ;
84
+ }
85
+ }
86
+ } ) ;
87
+ }
88
+
89
+ test ( 'it should mask images of different density' , function ( ) {
55
90
let img = myp5 . createImage ( 10 , 10 ) ;
91
+ img . pixelDensity ( 1 ) ;
56
92
img . loadPixels ( ) ;
57
93
for ( let i = 0 ; i < img . height ; i ++ ) {
58
94
for ( let j = 0 ; j < img . width ; j ++ ) {
@@ -62,15 +98,16 @@ suite('p5.Image', function() {
62
98
}
63
99
img . updatePixels ( ) ;
64
100
65
- let mask = myp5 . createImage ( 10 , 10 ) ;
101
+ let mask = myp5 . createImage ( 20 , 20 ) ;
66
102
mask . loadPixels ( ) ;
67
103
for ( let i = 0 ; i < mask . width ; i ++ ) {
68
104
for ( let j = 0 ; j < mask . height ; j ++ ) {
69
- let alpha = j < 5 ? 255 : 0 ;
105
+ let alpha = j < 10 ? 255 : 0 ;
70
106
mask . set ( i , j , myp5 . color ( 0 , 0 , 0 , alpha ) ) ;
71
107
}
72
108
}
73
109
mask . updatePixels ( ) ;
110
+ mask . pixelDensity ( 2 ) ;
74
111
75
112
img . mask ( mask ) ;
76
113
img . loadPixels ( ) ;
@@ -82,6 +119,25 @@ suite('p5.Image', function() {
82
119
}
83
120
} ) ;
84
121
122
+ test ( 'it should mask images from createGraphics' , function ( ) {
123
+ myp5 . createCanvas ( 10 , 10 ) ;
124
+ myp5 . pixelDensity ( 2 ) ;
125
+ let img = myp5 . createGraphics ( 10 , 10 ) ;
126
+ img . rect ( 0 , 0 , 10 , 10 ) ;
127
+ img . background ( 0 ) ;
128
+ let mask = createGraphics ( 10 , 10 ) ;
129
+ mask . rect ( 0 , 0 , 5 , 5 ) ;
130
+ let masked = img . get ( ) ;
131
+ masked . mask ( mask . get ( ) ) ;
132
+
133
+ for ( let i = 0 ; i < masked . width ; i ++ ) {
134
+ for ( let j = 0 ; j < masked . height ; j ++ ) {
135
+ let alpha = i < 5 && j < 5 ? 255 : 0 ;
136
+ assert . strictEqual ( masked . get ( i , j ) [ 3 ] , alpha ) ;
137
+ }
138
+ }
139
+ } ) ;
140
+
85
141
test ( 'it should mask the animated gif image' , function ( ) {
86
142
const imagePath = 'unit/assets/nyan_cat.gif' ;
87
143
return new Promise ( function ( resolve , reject ) {
0 commit comments