@@ 245,7 245,6 @@ BRK
.Mouse/x DEI2 .Mouse/y DEI2 .preview ;within-rect JSR2 ;on-touch-preview JCN2
.Mouse/x DEI2 .Mouse/y DEI2 .zoomview ;within-rect JSR2 ;on-touch-zoomview JCN2
&no-touch
-
( release-record )
#0000 .Mouse/state DEO .cursor/last STZ
@@ 253,14 252,13 @@ BRK
@on-touch-tileview ( -> )
+ .Mouse/x DEI2 .tileview/x1 LDZ2 SUB2
+ .Mouse/y DEI2 .tileview/y1 LDZ2 SUB2
( test )
.settings/tool LDZ #02 EQU ;&zoom JCN2
.settings/zoom LDZ #01 EQU ;&zoomed JCN2
.settings/tool LDZ #01 EQU ;&select JCN2
-
( paint )
- .Mouse/x DEI2 .tileview/x1 LDZ2 SUB2
- .Mouse/y DEI2 .tileview/y1 LDZ2 SUB2
.settings/color LDZ .Mouse/state DEI #01 EQU MUL
;put-pixel JSR2
#01 .state/changed STZ ;draw-state JSR2
@@ 268,47 266,37 @@ BRK
BRK
- &zoom ( -> )
+ &zoom ( x* y* -> )
- .Mouse/x DEI2 .tileview/x1 LDZ2 SUB2 #03 SFT2 NIP
- .Mouse/y DEI2 .tileview/y1 LDZ2 SUB2 #03 SFT2 NIP
- DUP2 #30 SFT SWP #30 SFT SWP ;set-selection-zoom JSR2
- ;set-selection-from JSR2
+ #33 SFT2 NIP STH
+ #33 SFT2 NIP STHr
+ ;set-selection-zoom JSR2
;toggle-zoom JSR2
;redraw JSR2
( release mouse ) #00 .Mouse/state DEO
BRK
- &zoomed ( -> )
+ &zoomed ( x* y* -> )
- .Mouse/x DEI2 .tileview/x1 LDZ2 SUB2 #03 SFT2 #00 .selection/zx LDZ ADD2
- .Mouse/y DEI2 .tileview/y1 LDZ2 SUB2 #03 SFT2 #00 .selection/zy LDZ ADD2
+ SWP2 #03 SFT2 #00 .selection/zx LDZ ADD2
+ SWP2 #03 SFT2 #00 .selection/zy LDZ ADD2
.settings/color LDZ .Mouse/state DEI #01 EQU MUL ;put-pixel JSR2
#01 .state/changed STZ ;draw-state JSR2
;redraw JSR2
BRK
- &select ( -> )
+ &select ( x* y* -> )
+ #03 SFT2 NIP STH
+ #03 SFT2 NIP STH SWPr
.Mouse/state DEI DUP .cursor/last LDZ
DUP2 #0000 EQU2 ,&end JCN
- DUP2 #0100 NEQ2 ,&no-down JCN
- .Mouse/x DEI2 .tileview/x1 LDZ2 SUB2 #03 SFT2 NIP
- .Mouse/y DEI2 .tileview/y1 LDZ2 SUB2 #03 SFT2 NIP
- ( select zoom )
- DUP2 #30 SFT SWP #30 SFT SWP ;set-selection-zoom JSR2
- ( select from )
- ;set-selection-from JSR2
- ,&end JMP
- &no-down
- ( release )
- .Mouse/x DEI2 .tileview/x1 LDZ2 SUB2 #03 SFT2 NIP
- .Mouse/y DEI2 .tileview/y1 LDZ2 SUB2 #03 SFT2 NIP
- ;set-selection-to JSR2
+ DUP2 #0100 NEQ2 ,&no-down JCN STH2kr ;set-selection-from JSR2 &no-down
+ DUP2 #0101 NEQ2 ,&no-up JCN STH2kr ;set-selection-to JSR2 &no-up
&end
- POP2
+ POP2 POP2r
.cursor/last STZ
BRK
@@ 638,19 626,13 @@ JMP2r
@clamp-selection ( -- )
- .selection/x1 LDZ #10 #01 SUB STHk LTH ,&ok-limitx1 JCN
- STHkr .selection/x1 STZ &ok-limitx1 POPr
- .selection/y1 LDZ #10 #01 SUB STHk LTH ,&ok-limity1 JCN
- STHkr .selection/y1 STZ &ok-limity1 POPr
- .selection/x2 LDZ #10 #01 SUB STHk LTH ,&ok-limitx2 JCN
- STHkr .selection/x2 STZ &ok-limitx2 POPr
- .selection/y2 LDZ #10 #01 SUB STHk LTH ,&ok-limity2 JCN
- STHkr .selection/y2 STZ &ok-limity2 POPr
+ .selection/x1 LDZ #10 #01 SUB STHk LTH ,&ok-limitx1 JCN STHkr .selection/x1 STZ &ok-limitx1 POPr
+ .selection/y1 LDZ #10 #01 SUB STHk LTH ,&ok-limity1 JCN STHkr .selection/y1 STZ &ok-limity1 POPr
+ .selection/x2 LDZ #10 #01 SUB STHk LTH ,&ok-limitx2 JCN STHkr .selection/x2 STZ &ok-limitx2 POPr
+ .selection/y2 LDZ #10 #01 SUB STHk LTH ,&ok-limity2 JCN STHkr .selection/y2 STZ &ok-limity2 POPr
( invert )
- .selection/x2 LDZ .selection/x1 LDZ STHk GTH ,&ok-flipx JCN
- STHkr .selection/x2 STZ &ok-flipx POPr
- .selection/y2 LDZ .selection/y1 LDZ STHk GTH ,&ok-flipy JCN
- STHkr .selection/y2 STZ &ok-flipy POPr
+ .selection/x2 LDZ .selection/x1 LDZ STHk GTH ,&ok-flipx JCN STHkr .selection/x2 STZ &ok-flipx POPr
+ .selection/y2 LDZ .selection/y1 LDZ STHk GTH ,&ok-flipy JCN STHkr .selection/y2 STZ &ok-flipy POPr
JMP2r
@@ 686,14 668,13 @@ JMP2r
.Screen/auto DEI #0f AND .selection/x2 LDZ .selection/x1 LDZ SUB #40 SFT ADD .Screen/auto DEO
.tileview/x1 LDZ2 #00 .selection/x1 LDZ #30 SFT2 ADD2 .Screen/x DEO2
.tileview/y1 LDZ2 #00 .selection/y1 LDZ #30 SFT2 ADD2 .Screen/y DEO2
- .selection LDZ2 ;get-tile-addr JSR2 STH2
+ .selection LDZ2 ;get-tile-addr JSR2 ,&sprite STR2
.selection/y2 LDZ .selection/y1 LDZ SUB INC #00
&loop-sel
- #00 OVR #80 SFT2 STH2kr ADD2 .Screen/addr DEO2
+ #00 OVR #80 SFT2 [ LIT2 &sprite $2 ] ADD2 .Screen/addr DEO2
#84 .Screen/sprite DEO
INC GTHk ,&loop-sel JCN
POP2
- POP2r
#00 .Screen/auto DEO
JMP2r
@@ 837,20 818,15 @@ JMP2r
;bigpixel-icn .Screen/addr DEO2
#0800
&ver
- #00 OVR #20 SFT .zoomview/y1 LDZ2 ADD2 .Screen/y DEO2
+ #00 OVR
+ DUP2 #00 .selection/y1 LDZ #30 SFT ADD2 ,&y STR2
+ #20 SFT .zoomview/y1 LDZ2 ADD2 .Screen/y DEO2
#0800
&hor
- #00 OVR #20 SFT .zoomview/x1 LDZ2 ADD2 .Screen/x DEO2
- ( get pixel )
- OVR2 NIP OVR SWP
- ( ch 1 )
- #00 SWP .settings/focus LDZ2 ADD2 [ STH2k ] LDA
- SWP [ STHk ] #07 SWP SUB SFT #01 AND
- ( ch2 )
- [ STHr ] [ STH2r ] #0008 ADD2 LDA SWP
- #07 SWP SUB SFT #01 AND
- #10 SFT ADD
- .Screen/sprite DEO
+ #00 OVR
+ DUP2 #00 .selection/x1 LDZ #30 SFT ADD2 ,&x STR2
+ #20 SFT .zoomview/x1 LDZ2 ADD2 .Screen/x DEO2
+ [ LIT2 &x $2 ] [ LIT2 &y $2 ] ;get-pixel JSR2 .Screen/sprite DEO
INC GTHk ,&hor JCN
POP2
INC GTHk ,&ver JCN