... | ... |
@@ -41,7 +41,7 @@ |
41 | 41 |
;canvas { x1 2 y1 2 x2 2 y2 2 w 2 h 2 } |
42 | 42 |
|
43 | 43 |
;rect { x1 2 y1 2 x2 2 y2 2 } |
44 |
-;line { x0 2 y0 2 x 2 y 2 sx 2 sy 2 dx 2 dy 2 e1 2 e2 2 } |
|
44 |
+;line { x1 2 y1 2 x2 2 y2 2 sx 2 sy 2 dx 2 dy 2 e1 2 e2 2 } |
|
45 | 45 |
;origin { x1 2 y1 2 x2 2 y2 2 } |
46 | 46 |
;color { byte 1 } |
47 | 47 |
;pt0 { x 2 y 2 } |
... | ... |
@@ -66,7 +66,7 @@ |
66 | 66 |
|0200 @RESET |
67 | 67 |
|
68 | 68 |
( default canvas ) |
69 |
- #002a =canvas.w #001a =canvas.h |
|
69 |
+ #0020 =canvas.w #0010 =canvas.h |
|
70 | 70 |
|
71 | 71 |
( default brush ) |
72 | 72 |
#04 =brush.size |
... | ... |
@@ -92,7 +92,7 @@ |
92 | 92 |
#0010 =pattpane.x1 ~Screen.height #0018 SUB2 =pattpane.y1 |
93 | 93 |
~Screen.width #0050 SUB2 =sizepane.x1 #0010 =sizepane.y1 |
94 | 94 |
|
95 |
- ~toolpane.x1 #0020 ADD2 =toolpane.x2 |
|
95 |
+ ~toolpane.x1 #0028 ADD2 =toolpane.x2 |
|
96 | 96 |
~toolpane.y1 #0008 ADD2 =toolpane.y2 |
97 | 97 |
,draw-toolpane JSR2 |
98 | 98 |
|
... | ... |
@@ -210,16 +210,20 @@ BRK |
210 | 210 |
,$touch-end JMP2 |
211 | 211 |
$no-touch-brush |
212 | 212 |
|
213 |
+ ,$no-touch-zoom ~brush.tool #04 NEQ JMP2? |
|
214 |
+ ~zoom.active #00 EQU =zoom.active |
|
215 |
+ ( release ) #00 =Mouse.state |
|
216 |
+ ~Mouse.x ~canvas.x1 SUB2 ~canvas.w 2/ SUB2 =zoom.x |
|
217 |
+ ~Mouse.y ~canvas.y1 SUB2 ~canvas.h 2/ SUB2 =zoom.y |
|
218 |
+ ,redraw JSR2 |
|
219 |
+ ,$touch-end JMP2 |
|
220 |
+ $no-touch-zoom |
|
221 |
+ |
|
213 | 222 |
$no-touch-canvas |
214 | 223 |
|
215 | 224 |
( background interface ) |
216 | 225 |
,$no-touch-background ~Mouse.y STEP8 ~Screen.height #0010 SUB2 NEQ2 JMP2? |
217 | 226 |
~Mouse.x ~Screen.width #0020 SUB2 SUB2 8/ |
218 |
- DUP2 #0000 NEQ2 ,$no-toggle-zoom ROT JMP2? |
|
219 |
- ~zoom.active #00 EQU =zoom.active |
|
220 |
- ( release ) #00 =Mouse.state |
|
221 |
- ,redraw JSR2 |
|
222 |
- $no-toggle-zoom |
|
223 | 227 |
DUP2 #0001 NEQ2 ,$no-load-button ROT JMP2? |
224 | 228 |
,filepath ,load-file JSR2 |
225 | 229 |
,draw-canvas JSR2 |
... | ... |
@@ -262,6 +266,8 @@ BRK |
262 | 266 |
( tool0 ) #02 =brush.tool ,draw-toolpane JSR2 $no-ekey |
263 | 267 |
DUP #72 NEQ ,$no-rkey ROT JMP2? |
264 | 268 |
( tool0 ) #03 =brush.tool ,draw-toolpane JSR2 $no-rkey |
269 |
+ DUP #74 NEQ ,$no-tkey ROT JMP2? |
|
270 |
+ ( tool0 ) #04 =brush.tool ,draw-toolpane JSR2 $no-tkey |
|
265 | 271 |
DUP |
266 | 272 |
DUP #30 GTH SWP #39 LTH #0101 NEQ2 ,$no-numkey ROT JMP2? |
267 | 273 |
( size ) ~Keys #31 SUB =brush.size ,draw-sizepane JSR2 $no-numkey |
... | ... |
@@ -311,23 +317,32 @@ RTN |
311 | 317 |
|
312 | 318 |
@paint-line ( x1 y1 x2 y2 ) |
313 | 319 |
|
314 |
- ( load ) =line.y0 =line.x0 =line.y =line.x |
|
315 |
- ~line.x0 ~line.x SUB2 ABS2 =line.dx |
|
316 |
- ~line.y0 ~line.y SUB2 ABS2 #0000 SWP2 SUB2 =line.dy |
|
317 |
- #ffff #00 ~line.x ~line.x0 LTS2 #0002 MUL2 ADD2 =line.sx |
|
318 |
- #ffff #00 ~line.y ~line.y0 LTS2 #0002 MUL2 ADD2 =line.sy |
|
320 |
+ ( load ) =line.y1 =line.x1 =line.y2 =line.x2 |
|
321 |
+ |
|
322 |
+ ( trim if zoomed ) |
|
323 |
+ ,$no-zoom ~zoom.active #01 NEQ JMP2? |
|
324 |
+ ~line.x1 8/ ~zoom.x ADD2 =line.x1 |
|
325 |
+ ~line.y1 8/ ~zoom.y ADD2 =line.y1 |
|
326 |
+ ~line.x2 8/ ~zoom.x ADD2 =line.x2 |
|
327 |
+ ~line.y2 8/ ~zoom.y ADD2 =line.y2 |
|
328 |
+ $no-zoom |
|
329 |
+ |
|
330 |
+ ~line.x1 ~line.x2 SUB2 ABS2 =line.dx |
|
331 |
+ ~line.y1 ~line.y2 SUB2 ABS2 #0000 SWP2 SUB2 =line.dy |
|
332 |
+ #ffff #00 ~line.x2 ~line.x1 LTS2 #0002 MUL2 ADD2 =line.sx |
|
333 |
+ #ffff #00 ~line.y2 ~line.y1 LTS2 #0002 MUL2 ADD2 =line.sy |
|
319 | 334 |
~line.dx ~line.dy ADD2 =line.e1 |
320 | 335 |
$loop |
321 |
- ( paint ) ~line.x ~line.y ~brush.oper JSR2 |
|
322 |
- ,$end ~line.x ~line.x0 EQU2 ~line.y ~line.y0 EQU2 #0101 EQU2 JMP2? |
|
336 |
+ ( paint ) ~line.x2 ~line.y2 ~brush.oper JSR2 |
|
337 |
+ ,$end ~line.x2 ~line.x1 EQU2 ~line.y2 ~line.y1 EQU2 #0101 EQU2 JMP2? |
|
323 | 338 |
~line.e1 #0002 MUL2 =line.e2 |
324 | 339 |
,$skipy ~line.e2 ~line.dy LTS2 JMP2? |
325 | 340 |
~line.e1 ~line.dy ADD2 =line.e1 |
326 |
- ~line.x ~line.sx ADD2 =line.x |
|
341 |
+ ~line.x2 ~line.sx ADD2 =line.x2 |
|
327 | 342 |
$skipy |
328 | 343 |
,$skipx ~line.e2 ~line.dx GTS2 JMP2? |
329 | 344 |
~line.e1 ~line.dx ADD2 =line.e1 |
330 |
- ~line.y ~line.sy ADD2 =line.y |
|
345 |
+ ~line.y2 ~line.sy ADD2 =line.y2 |
|
331 | 346 |
$skipx |
332 | 347 |
,$loop JMP2 |
333 | 348 |
|
... | ... |
@@ -342,7 +357,19 @@ RTN |
342 | 357 |
|
343 | 358 |
@paint-rect ( x1 y1 x2 y2 ) |
344 | 359 |
|
345 |
- ( load ) =rect.y2 =rect.x2 DUP2 =pt2.y =rect.y1 DUP2 =pt2.x =rect.x1 |
|
360 |
+ ( load ) =rect.y2 =rect.x2 =rect.y1 =rect.x1 |
|
361 |
+ |
|
362 |
+ ( trim if zoomed ) |
|
363 |
+ ,$no-zoom ~zoom.active #01 NEQ JMP2? |
|
364 |
+ ~rect.x1 8/ ~zoom.x ADD2 =rect.x1 |
|
365 |
+ ~rect.y1 8/ ~zoom.y ADD2 =rect.y1 |
|
366 |
+ ~rect.x2 8/ ~zoom.x ADD2 #0001 ADD2 =rect.x2 |
|
367 |
+ ~rect.y2 8/ ~zoom.y ADD2 #0001 ADD2 =rect.y2 |
|
368 |
+ $no-zoom |
|
369 |
+ |
|
370 |
+ ~rect.x1 =pt2.x |
|
371 |
+ ~rect.y1 =pt2.y |
|
372 |
+ |
|
346 | 373 |
$ver |
347 | 374 |
~rect.x1 =pt2.x |
348 | 375 |
$hor |
... | ... |
@@ -351,9 +378,9 @@ RTN |
351 | 378 |
( draw ) ~pt2.x ~pt2.y ~brush.oper JSR2 |
352 | 379 |
$no-pixel |
353 | 380 |
( incr ) ~pt2.x ++ =pt2.x |
354 |
- ,$hor ~pt2.x ~rect.x2 LTH2 JMP2? |
|
381 |
+ ,$hor ~pt2.x ~rect.x2 LTS2 JMP2? |
|
355 | 382 |
~pt2.y ++ =pt2.y |
356 |
- ,$ver ~pt2.y ~rect.y2 LTH2 JMP2? |
|
383 |
+ ,$ver ~pt2.y ~rect.y2 LTS2 JMP2? |
|
357 | 384 |
|
358 | 385 |
,draw-canvas JSR2 |
359 | 386 |
,draw-toolpane JSR2 |
... | ... |
@@ -372,12 +399,6 @@ RTN |
372 | 399 |
~pt0.y 8/ ~zoom.y ADD2 #0003 SUB2 =pt0.y |
373 | 400 |
$no-zoom |
374 | 401 |
|
375 |
- ( center zoom on paint ) |
|
376 |
- ,$no-follow ~zoom.active JMP2? |
|
377 |
- ~pt0.x ~canvas.w 2/ SUB2 #0003 ADD2 =zoom.x |
|
378 |
- ~pt0.y ~canvas.h 2/ SUB2 #0003 ADD2 =zoom.y |
|
379 |
- $no-follow |
|
380 |
- |
|
381 | 402 |
#00 =px.x #00 =px.y |
382 | 403 |
$ver |
383 | 404 |
#00 =px.x |
... | ... |
@@ -592,6 +613,12 @@ RTN |
592 | 613 |
( incr ) ~Sprite.addr 8+ =Sprite.addr |
593 | 614 |
,$tools ~Sprite.x ~toolpane.x2 LTH2 JMP2? |
594 | 615 |
|
616 |
+ ,$no-zoom ~zoom.active #01 NEQ JMP2? |
|
617 |
+ ~Sprite.x #0008 SUB2 =Sprite.x |
|
618 |
+ ,tool_icn #0028 ADD2 =Sprite.addr |
|
619 |
+ #01 #04 ~brush.tool EQU #02 MUL ADD =Sprite.color |
|
620 |
+ $no-zoom |
|
621 |
+ |
|
595 | 622 |
RTN |
596 | 623 |
|
597 | 624 |
@draw-pattpane |
... | ... |
@@ -657,11 +684,9 @@ RTN |
657 | 684 |
,save_icn =Sprite.addr |
658 | 685 |
#01 =Sprite.color |
659 | 686 |
~Screen.width #0020 SUB2 =Sprite.x |
660 |
- ,zoom_icn #00 ~zoom.active 8* ADD2 =Sprite.addr |
|
661 |
- #01 =Sprite.color |
|
662 | 687 |
|
663 | 688 |
( draw width ) |
664 |
- ~Screen.width #0048 SUB2 =Sprite.x |
|
689 |
+ ~Screen.width #0040 SUB2 =Sprite.x |
|
665 | 690 |
,font_hex ~canvas.w #f0 AND #04 SFT #08 MUL ADD2 =Sprite.addr |
666 | 691 |
( draw ) #02 =Sprite.color |
667 | 692 |
~Sprite.x 8+ =Sprite.x |
... | ... |
@@ -735,11 +760,8 @@ RTN |
735 | 760 |
[ e0d0 a844 2212 0c00 ] |
736 | 761 |
[ c0b8 4848 7804 0200 ] |
737 | 762 |
[ 44ba 4444 44ba 4400 ] |
738 |
- [ 3844 8282 8244 3800 ] |
|
739 |
- [ fe82 8282 8282 fe00 ] |
|
740 |
- [ 80c0 e0f0 f8e0 1000 ] |
|
741 |
- [ 0202 0438 4080 8000 ] |
|
742 |
- [ 0204 0810 2040 8000 ] |
|
763 |
+ [ 3048 8484 4834 0200 ] ( zoom ) |
|
764 |
+ [ 3245 8284 4834 0200 ] ( zoom out ) |
|
743 | 765 |
|
744 | 766 |
@brush_view |
745 | 767 |
[ 0000 0010 0000 0000 ] |
... | ... |
@@ -752,10 +774,6 @@ RTN |
752 | 774 |
[ 7c82 8282 8282 7c00 ] |
753 | 775 |
[ 7cfe fefe fefe 7c00 ] |
754 | 776 |
|
755 |
-@zoom_icn |
|
756 |
- [ 3048 8484 4834 0200 ] |
|
757 |
- [ 3245 8284 4834 0200 ] |
|
758 |
- |
|
759 | 777 |
@bigpixel_icn |
760 | 778 |
[ 5580 0080 0080 0080 ] |
761 | 779 |
[ 55ff 7fff 7fff 7fff ] |
... | ... |
@@ -768,7 +786,7 @@ RTN |
768 | 786 |
@save_icn [ fe82 8282 848a f400 ] |
769 | 787 |
|
770 | 788 |
@blank_icn [ 0000 0000 0000 0000 ] |
771 |
-@filepath [ projects/pictures/tima2a1a.bit 00 ] |
|
789 |
+@filepath [ projects/pictures/akane2010.bit 00 ] |
|
772 | 790 |
|
773 | 791 |
@font_hex ( 0-F ) |
774 | 792 |
[ |