~rabbits/nasu

2b156ad955efaac50f321ce0b0715ad36a3a9b5c — neauoire 1 year, 9 months ago 53415c1
Implemented erasing with right-click
1 files changed, 42 insertions(+), 63 deletions(-)

M nasu.usm
M nasu.usm => nasu.usm +42 -63
@@ 10,9 10,8 @@
	TODO:
		Save/load/rename
		Zoom
		Resize buttons
		Erase with right-click
		Painting in zoom view
		Draw guides
		Toggle guides
)

%+  { ADD } %-   { SUB }  %*  { MUL } %/   { DIV }


@@ 20,38 19,31 @@
%++ { ADD2 } %-- { SUB2 } %** { MUL2 } %// { DIV2 }
%<< { LTH2 } %>> { GTH2 } %== { EQU2 } %!! { NEQ2 }

%HOR { #20 }
%VER { #10 }
%WIDTH { HOR TOS #0008 ** }
%HEIGHT { VER TOS #0008 ** }
%HOR    { #20 }              %VER    { #10 }
%WIDTH  { HOR TOS #0008 ** } %HEIGHT { VER TOS #0008 ** }
%LENGTH { HOR TOS VER TOS ** #0010 ** }

%RTN { JMP2r }
%CPY { STHkr }
%STEP8 { #0033 SFT2 }

%ROL { DUP #80 AND #07 SFT SWP #10 SFT + }
%ROR { DUP #01 AND #70 SFT SWP #01 SFT + }

%SFL { #40 SFT SFT }

%MOD { DUP2 / * - }
%MOD2 { OVR2 OVR2 // ** -- }
%MOD8 { #07 AND }

%ROL { DUP #07 SFT SWP #10 SFT + }
%ROR { DUP #70 SFT SWP #01 SFT + }
%SFL { #40 SFT SFT }
%TOB { SWP POP } %TOS { #00 SWP }

%DEBUG  { .Console/byte DEO #0a .Console/char DEO }
%DEBUG2 { .Console/short DEO2 #0a .Console/char DEO }

%LTS2  { #8000 ++ SWP2 #8000 ++ >> }
%GTS2  { #8000 ++ SWP2 #8000 ++ << }

%INCR { SWP #01 + SWP }
%INCR2 { SWP2 #0001 ++ SWP2 }
%DECR2 { SWP2 #0001 -- SWP2 }
%GET-ITERATORS { SWP2k POP SWP POP } 

%DEBUG  { .Console/byte DEO #0a .Console/char DEO }
%DEBUG2 { .Console/short DEO2 #0a .Console/char DEO }

%BANK { #2000 }
%GET-COLOR { .settings/color LDZ STHk #02 / + DEI #01 STHr #01 AND - #04 * SFT #0f AND }
%RELEASE-MOUSE { #00 .Mouse/state DEO }

%SIZE-TO-RECT {
	STH2 STH2 OVR2 STH2r ++ OVR2 STH2r ++
} ( x y w h -- x1 y1 x2 y2 )


@@ 64,11 56,6 @@
	POP2
} ( x1 y1 x2 y2 addr -- )

%BANK { #2000 }
%GET-ADDR { .settings/selection LDZ TOS #0010 ** BANK ++ }
%GET-COLOR { .settings/color LDZ STHk #02 / + DEI #01 STHr #01 AND - #04 * SFT #0f AND }
%RELEASE-MOUSE { #00 .Mouse/state DEO }

( devices )

|00 @System     [ &vector $2 &pad     $6 &r $2 &g $2 &b $2 ]


@@ 83,13 70,10 @@
|0000

@settings [ 
	&depth $1
	&color $1
	&blending $1 
	&depth $1 
	&brush $1 
	&tile $2 
	&ratio $1
	&selection $1
	&tool $1
	&focus $2 ]



@@ 122,12 106,10 @@
	( set defaults )
	HOR TOS #0008 ** .frame/width STZ2
	VER TOS #0008 ** #0048 ++ .frame/height STZ2
	#01 .settings/brush STZ
	#32 .settings/ratio STZ
	BANK #0448 ++ .settings/tile STZ2
	#01 .settings/depth STZ
	#01 .settings/blending STZ
	#01 .settings/color STZ
	#01 .settings/blending STZ
	#32 .settings/ratio STZ
	#01 .settings/tool STZ
	BANK .settings/focus STZ2



@@ 224,7 206,8 @@ BRK
	.settings/tool LDZ
	DUP #00 ! ,&no-brush JCN
		POP
		.settings/color LDZ
		#00 .Mouse/state DEI #10 = ,&do-erase JCN 
			POP .settings/color LDZ &do-erase 
		;put-pixel JSR2
		;draw-tileview JSR2 
		;draw-preview JSR2


@@ 277,20 260,6 @@ BRK

@on-touch-dataview ( -> )
	
	.Mouse/x DEI2 .dataview/x1 LDZ2 -- #0008 // TOB 
	.Mouse/y DEI2 .dataview/y1 LDZ2 -- #0008 // TOB #40 SFT +
	DUP #40 ! ,&no-move-up JCN
		GET-ADDR ;op-shiftup JSR2
		GET-ADDR #0008 ++ ;op-shiftup JSR2
		RELEASE-MOUSE
		;redraw JSR2 POP BRK &no-move-up
	DUP #41 ! ,&no-move-down JCN
		GET-ADDR ;op-shiftdown JSR2
		GET-ADDR #0008 ++ ;op-shiftdown JSR2
		RELEASE-MOUSE
		;redraw JSR2 POP BRK &no-move-down
	POP

	RELEASE-MOUSE

BRK


@@ 316,11 285,26 @@ BRK
			DUP2 ;op-shiftleft JSR2
			#0008 ++ ;op-shiftleft JSR2 &no-shiftleft
		POP
		RELEASE-MOUSE
		,&finish JMP
	&no-mod

	;redraw JSR2
	( paint )
	.Mouse/x DEI2 .zoomview/x1 LDZ2 -- #0004 //
	.Mouse/y DEI2 .zoomview/y1 LDZ2 -- #0004 // 
	.settings/focus LDZ2 ++
	( detect erase )
	#00 .Mouse/state DEI #10 = ,&do-erase JCN 
		POP .settings/color LDZ &do-erase 
	STH
	OVR2 OVR2
		STHkr #00 ;toggle-pixel JSR2
	#0008 ++ 
		STHr #01 ;toggle-pixel JSR2

	RELEASE-MOUSE
	&finish

	;redraw JSR2

BRK



@@ 484,7 468,7 @@ RTN
		OVR DUP #08 * TOS .tileview/y1 LDZ2 ++ .Screen/y DEO2 STH
		#00 HOR
		&hor
			OVR DUP #08 * TOS .tileview/x1 LDZ2 ++ .Screen/x DEO2 CPY
			OVR DUP #08 * TOS .tileview/x1 LDZ2 ++ .Screen/x DEO2 STHkr
			TOS ROT TOS SWP2
			HOR TOS ** ++ #0010 **
			BANK ++ [ DUP2 ] .Screen/addr DEO2


@@ 533,7 517,7 @@ RTN
	OVR2 SWP2 ,get-addr JSR 
	( ch1 )
	OVR2 OVR2
		CPY #00 ,toggle-pixel JSR
		STHkr #00 ,toggle-pixel JSR
	( ch2 )
	#0008 ++ 
		STHr #01 ,toggle-pixel JSR


@@ 797,7 781,7 @@ RTN
@draw-byte ( byte color -- )
	
	STH STH
	;font-hex #00 CPY #f0 AND #04 SFT #08 * ++ .Screen/addr DEO2
	;font-hex #00 STHkr #f0 AND #04 SFT #08 * ++ .Screen/addr DEO2
	( draw ) OVRr STHr .Screen/color DEO
	.Screen/x DEI2 #0008 ++ .Screen/x DEO2
	;font-hex #00 STHr #0f AND #08 * ++ .Screen/addr DEO2


@@ 809,13 793,13 @@ RTN

	STH SWP 
	DUP #04 SFT TOS #0008 ** ;font-hex ++ .Screen/addr DEO2
	( draw ) CPY .Screen/color DEO
	( draw ) STHkr .Screen/color DEO
	#0f AND TOS #0008 ** ;font-hex ++ .Screen/addr DEO2
	.Screen/x DEI2 #0008 ++ .Screen/x DEO2
	( draw ) CPY .Screen/color DEO
	( draw ) STHkr .Screen/color DEO
	DUP #04 SFT TOS #0008 ** ;font-hex ++ .Screen/addr DEO2
	.Screen/x DEI2 #0008 ++ .Screen/x DEO2
	( draw ) CPY .Screen/color DEO
	( draw ) STHkr .Screen/color DEO
	#0f AND TOS #0008 ** ;font-hex ++ .Screen/addr DEO2
	.Screen/x DEI2 #0008 ++ .Screen/x DEO2
	( draw ) STHr .Screen/color DEO


@@ 843,8 827,6 @@ RTN
@tool_selector 80c0 e0f0 f8e0 1000
@tool_hand     2020 20b8 7c7c 3838
@tool_eraser   2050 b87c 3e1c 0800
@moveup_icn    0010 387c fe10 1000
@movedown_icn  0010 1010 fe7c 3810
@halftone_icn  aa55 aa55 aa55 aa55
@bigpixel-icn  f0f0 f0f0 0000 0000



@@ 867,9 849,6 @@ RTN
@eye-icns
	0038 4492 2810 0000 ( open )
	0000 0082 4438 0000 ( closed )
@depth-icns 
	00fe 8282 fe82 82fe
	00fe 9292 fe92 92fe
@font-hex
	007c 8282 8282 827c 0030 1010 1010 1010
	007c 8202 7c80 80fe 007c 8202 1c02 827c