Browse code

Optimized redraws

neauoire authored on 19/03/2021 19:09:55
Showing 1 changed files
... ...
@@ -7,10 +7,7 @@
7 7
 		- Only draw-canvas when mouse has changed
8 8
 		- Only draw-canvas target tile
9 9
 		- Resize buttons
10
-		- Zoom
11 10
 		- Clear all button
12
-		- Toggle guides
13
-		- Complete save/load
14 11
 		- Limit size
15 12
 		- Draw point inbetween
16 13
 		- Pixel cleanup brush
... ...
@@ -29,6 +26,7 @@
29 26
 ;cursor { x 2 y 2 x0 2 y0 2 size 1 patt 1 drag 1 zoom 1 }
30 27
 ;zoom { x 2 y 2 }
31 28
 ;rect { x1 2 y1 2 x2 2 y2 2 }
29
+;origin { x1 2 y1 2 x2 2 y2 2 }
32 30
 ;color { byte 1 }
33 31
 ;pos { x 2 y 2 }
34 32
 ;pix { x 2 y 2 }
... ...
@@ -70,7 +68,7 @@ BRK
70 68
 
71 69
 	( release drag )
72 70
 	,$no-release ~Mouse.state #00 EQU ~cursor.drag #01 EQU #0101 NEQ2 JMP2?
73
-		#0000 #0000 ~Screen.width ~Screen.height #00 ,fill-rect JSR2
71
+		~origin.x1 #0002 SUB2 ~origin.y1 #0002 SUB2 ~origin.x2 #0002 ADD2 ~origin.y2 #0002 ADD2 #00 ,fill-rect JSR2
74 72
 		~canvas.x1 -- ~canvas.y1 -- ~canvas.x2 ~canvas.y2 #10 ,line-rect JSR2
75 73
 		,draw-background JSR2
76 74
 		,fit-canvas JSR2
... ...
@@ -82,6 +80,12 @@ BRK
82 80
 
83 81
 		( drag )
84 82
 		,$no-drag ~Controller #02 NEQ JMP2?
83
+			,$no-drag-start ~cursor.drag #00 NEQ JMP2?
84
+				~canvas.x1 =origin.x1
85
+				~canvas.y1 =origin.y1
86
+				~canvas.x2 =origin.x2
87
+				~canvas.y2 =origin.y2
88
+			$no-drag-start
85 89
 			~canvas.x1 -- ~canvas.y1 -- ~canvas.x2 ~canvas.y2 #10 ,line-rect JSR2
86 90
 			~canvas.x1 ~Mouse.x ~cursor.x0 SUB2 ADD2 =canvas.x1
87 91
 			~canvas.y1 ~Mouse.y ~cursor.y0 SUB2 ADD2 =canvas.y1
... ...
@@ -120,12 +124,12 @@ BRK
120 124
 		#0000 NEQ2 ,$no-toggle-zoom ROT JMP2?
121 125
 			~cursor.zoom #00 EQU =cursor.zoom
122 126
 			( release ) #00 =Mouse.state
123
-			~cursor.zoom =Console.byte
124 127
 			,redraw JSR2
125 128
 		$no-toggle-zoom
126 129
 		DUP2 
127 130
 		#0001 NEQ2 ,$no-load-button ROT JMP2?
128 131
 			,filepath ,load-file JSR2
132
+			,draw-canvas JSR2
129 133
 			( release ) #00 =Mouse.state
130 134
 		$no-load-button
131 135
 		DUP2 
... ...
@@ -139,7 +143,7 @@ BRK
139 143
 
140 144
 	$no-touch
141 145
 
142
-	,$no-ctrl ~Controller #00 EQU JMP2?
146
+	,$no-ctrl ~Controller #00 EQU ~cursor.zoom #00 EQU #0000 NEQ2 JMP2?
143 147
 
144 148
 		,$no-ctrl-up ~Controller #10 EQU JMP2?
145 149
 			~zoom.y ++ =zoom.y
... ...
@@ -410,7 +414,8 @@ RTN
410 414
 
411 415
 	( draw new cursor )
412 416
 	,$outside-canvas ~Mouse.x CLN2r ~canvas.x1 GTH2 STH2r ~canvas.x2 LTH2 #0101 NEQ2 JMP2?
413
-	,$outside-canvas ~Mouse.y CLN2r ~canvas.y1 GTH2 STH2r ~canvas.y2 LTH2 #0101 NEQ2 JMP2?		
417
+	,$outside-canvas ~Mouse.y CLN2r ~canvas.y1 GTH2 STH2r ~canvas.y2 LTH2 #0101 NEQ2 JMP2?	
418
+		,$outside-canvas ~Controller #02 EQU JMP2?
414 419
 		~cursor.x #0003 SUB2 =Sprite.x
415 420
 		~cursor.y #0003 SUB2 =Sprite.y
416 421
 		,brush_view #00 ~cursor.size 8* ADD2 =Sprite.addr