Browse code

Noodle: Patternize fill-rect routine

neauoire authored on 25/03/2021 00:22:03
Showing 1 changed files
... ...
@@ -39,7 +39,7 @@
39 39
 ;toolpane { x1 2 y1 2 x2 2 y2 2 }
40 40
 ;pattpane { x1 2 y1 2 x2 2 y2 2 }
41 41
 ;sizepane { x1 2 y1 2 x2 2 y2 2 }
42
-;cursor { x 2 y 2 x0 2 y0 2 tool 1 size 1 patt 1 drag 1 mirror 1 oper 2 }
42
+;cursor { x 2 y 2 x0 2 y0 2 dx 2 dy 2 tool 1 size 1 patt 1 drag 1 last 1 mirror 1 oper 2 }
43 43
 ;zoom { active 1 x 2 y 2 }
44 44
 ;rect { x1 2 y1 2 x2 2 y2 2 }
45 45
 ;line { x0 2 y0 2 x 2 y 2 sx 2 sy 2 dx 2 dy 2 e1 2 e2 2 }
... ...
@@ -122,6 +122,28 @@ BRK
122 122
 		#00 =cursor.drag
123 123
 	$no-release
124 124
 
125
+	( operations on release line/rect )
126
+	,$no-touch-change ~Mouse.state ~cursor.last EQU JMP2?
127
+		,$no-touch-change ~Mouse.x CLN2r ~canvas.x1 GTS2 STH2r ~canvas.x2 LTS2 #0101 NEQ2 JMP2?
128
+		,$no-touch-change ~Mouse.y CLN2r ~canvas.y1 GTS2 STH2r ~canvas.y2 LTS2 #0101 NEQ2 JMP2?
129
+		,$no-touch-ondown ~Mouse.state #00 EQU JMP2?
130
+			( on down )
131
+			~Mouse.x =cursor.dx
132
+			~Mouse.y =cursor.dy
133
+		$no-touch-ondown
134
+		,$no-touch-onup ~Mouse.state #00 NEQ JMP2?
135
+			( on up )
136
+			,$no-touch-line ~cursor.tool #02 NEQ JMP2?
137
+				~cursor.dx ~canvas.x1 SUB2 ~cursor.dy ~canvas.y1 SUB2 ~Mouse.x ~canvas.x1 SUB2 ~Mouse.y ~canvas.y1 SUB2 #01 ,paint-line JSR2
138
+				,$touch-end JMP2
139
+			$no-touch-line
140
+			,$no-touch-rect ~cursor.tool #03 NEQ JMP2?
141
+				~cursor.dx ~canvas.x1 SUB2 ~cursor.dy ~canvas.y1 SUB2 ~Mouse.x ~canvas.x1 SUB2 ~Mouse.y ~canvas.y1 SUB2 #01 ,paint-rect JSR2
142
+				,$touch-end JMP2
143
+			$no-touch-rect
144
+		$no-touch-onup
145
+	$no-touch-change
146
+
125 147
 	,$no-touch ~Mouse.state #00 EQU JMP2?
126 148
 
127 149
 		( drag )
... ...
@@ -184,13 +206,10 @@ BRK
184 206
 			$no-touch-pen
185 207
 
186 208
 			,$no-touch-brush ~cursor.tool #01 NEQ JMP2?
187
-				~Mouse.x ~canvas.x1 SUB2 ~Mouse.y ~canvas.y1 SUB2 ,paint JSR2
209
+				~Mouse.x ~canvas.x1 SUB2 ~Mouse.y ~canvas.y1 SUB2 ,paint-brush JSR2
188 210
 				,$touch-end JMP2
189 211
 			$no-touch-brush
190 212
 
191
-			( unknown tool )
192
-			#aa =Console.byte
193
-			
194 213
 		$no-touch-canvas
195 214
 
196 215
 		( background interface )
... ...
@@ -250,6 +269,7 @@ BRK
250 269
 
251 270
 	~Mouse.x =cursor.x0
252 271
 	~Mouse.y =cursor.y0
272
+	~Mouse.state =cursor.last
253 273
 
254 274
 BRK
255 275
 
... ...
@@ -318,7 +338,31 @@ RTN
318 338
 
319 339
 RTN
320 340
 
321
-@paint ( x y )
341
+;rpt { x 2 y 2 }
342
+
343
+@paint-rect ( x1 y1 x2 y2 color )
344
+
345
+	( load ) =color =rect.y2 =rect.x2 DUP2 =rpt.y =rect.y1 DUP2 =rpt.x =rect.x1
346
+	$ver
347
+		~rect.x1 =rpt.x
348
+		$hor
349
+			~rpt.x SWP POP =px.x ~rpt.y SWP POP =px.y
350
+			,$no-pixel ,patternize JSR2 #00 EQU JMP2?
351
+				( draw ) ~rpt.x ~rpt.y ~cursor.oper JSR2
352
+			$no-pixel
353
+			( incr ) ~rpt.x ++ =rpt.x
354
+			,$hor ~rpt.x ~rect.x2 LTH2 JMP2?
355
+		~rpt.y ++ =rpt.y
356
+		,$ver ~rpt.y ~rect.y2 LTH2 JMP2?
357
+
358
+	,draw-canvas JSR2
359
+	,draw-toolpane JSR2
360
+	,draw-pattpane JSR2
361
+	,draw-sizepane JSR2
362
+	
363
+RTN
364
+
365
+@paint-brush ( x y )
322 366
 
323 367
 	#0003 SUB2 =pt0.y #0003 SUB2 =pt0.x ( cursor offset )
324 368