0
0
Fork 0
mirror of https://git.sr.ht/~rabbits/uxn synced 2024-12-02 18:47:26 +00:00
uxn/projects/examples/gui/hover.usm

105 lines
3.1 KiB
Text
Raw Normal View History

2021-04-02 04:53:41 +00:00
( GUI Hover )
2021-03-01 03:49:53 +00:00
2021-03-16 04:29:44 +00:00
%RTN { JMP2r }
( devices )
2021-03-01 03:49:53 +00:00
|00 @System [ &vector $2 &pad $6 &r $2 &g $2 &b $2 ]
|20 @Screen [ &vector $2 &width $2 &height $2 &pad $2 &x $2 &y $2 &addr $2 &color $1 ]
2021-04-26 17:52:46 +00:00
|90 @Mouse [ &vector $2 &x $2 &y $2 &state $1 &chord $1 ]
( variables )
|0000
@color [ &byte $1 ]
@pointer [ &x $2 &y $2 &sprite $2 ]
@rect [ &x1 $2 &y1 $2 &x2 $2 &y2 $2 ]
@r1 [ &x1 $2 &y1 $2 &x2 $2 &y2 $2 ]
@r2 [ &x1 $2 &y1 $2 &x2 $2 &y2 $2 ]
@r3 [ &x1 $2 &y1 $2 &x2 $2 &y2 $2 ]
2021-03-21 21:16:19 +00:00
2021-04-05 20:00:55 +00:00
( program )
|0100
2021-03-21 21:16:19 +00:00
( theme ) #0f0f .System/r DEO2 #0fff .System/g DEO2 #0ff0 .System/b DEO2
( vectors ) ;on-mouse .Mouse/vector DEO2
2021-03-01 03:49:53 +00:00
2021-05-11 18:14:52 +00:00
#0020 #0030 #0060 #0060 .r1/y2 STZ2 .r1/x2 STZ2 .r1/y1 STZ2 .r1/x1 STZ2
#0058 #0050 #0090 #0080 .r2/y2 STZ2 .r2/x2 STZ2 .r2/y1 STZ2 .r2/x1 STZ2
#0048 #0048 #0080 #0098 .r3/y2 STZ2 .r3/x2 STZ2 .r3/y1 STZ2 .r3/x1 STZ2
2021-03-01 03:49:53 +00:00
( no BRK, run through to on-mouse )
2021-03-01 03:49:53 +00:00
@on-mouse
2021-03-14 01:34:08 +00:00
2021-05-11 18:14:52 +00:00
;pointer_icn .pointer/sprite STZ2
2021-03-01 03:49:53 +00:00
2021-05-11 18:14:52 +00:00
#01 .color STZ
2021-03-01 16:55:16 +00:00
( matrix comparison )
2021-05-11 18:14:52 +00:00
.Mouse/x DEI2 .r1/x1 LDZ2 GTH2 .Mouse/x DEI2 .r1/x2 LDZ2 LTH2 #0101 EQU2
.Mouse/y DEI2 .r1/y1 LDZ2 GTH2 .Mouse/y DEI2 .r1/y2 LDZ2 LTH2 #0101 EQU2
#0101 NEQ2 ,&draw1 JCN #02 .color STZ ;hand_icn .pointer/sprite STZ2
&draw1 .r1/x1 LDZ2 .r1/y1 LDZ2 .r1/x2 LDZ2 .r1/y2 LDZ2 .color LDZ ;line-rect JSR2
2021-03-01 03:49:53 +00:00
2021-05-11 18:14:52 +00:00
#01 .color STZ
2021-03-01 16:55:16 +00:00
( 2-step comparison )
2021-05-11 18:14:52 +00:00
.Mouse/x DEI2 .r2/x1 LDZ2 GTH2 .Mouse/x DEI2 .r2/x2 LDZ2 LTH2 #0101 NEQ2 ,&draw2 JCN
.Mouse/y DEI2 .r2/y1 LDZ2 GTH2 .Mouse/y DEI2 .r2/y2 LDZ2 LTH2 #0101 NEQ2 ,&draw2 JCN
#03 .color STZ ;hand_icn .pointer/sprite STZ2
&draw2 .r2/x1 LDZ2 .r2/y1 LDZ2 .r2/x2 LDZ2 .r2/y2 LDZ2 .color LDZ ;line-rect JSR2
2021-03-01 03:49:53 +00:00
2021-05-11 18:14:52 +00:00
#01 .color STZ
2021-03-01 16:55:16 +00:00
( 4-step comparison )
2021-05-11 18:14:52 +00:00
.Mouse/x DEI2 .r3/x1 LDZ2 LTH2 ,&draw3 JCN
.Mouse/x DEI2 .r3/x2 LDZ2 GTH2 ,&draw3 JCN
.Mouse/y DEI2 .r3/y1 LDZ2 LTH2 ,&draw3 JCN
.Mouse/y DEI2 .r3/y2 LDZ2 GTH2 ,&draw3 JCN
#02 .color STZ ;hand_icn .pointer/sprite STZ2
&draw3 .r3/x1 LDZ2 .r3/y1 LDZ2 .r3/x2 LDZ2 .r3/y2 LDZ2 .color LDZ ;line-rect JSR2
2021-03-01 03:49:53 +00:00
;draw-cursor JSR2
2021-03-01 03:49:53 +00:00
BRK
2021-03-01 03:49:53 +00:00
@draw-cursor
2021-03-14 01:34:08 +00:00
( clear last cursor )
;clear_icn .Screen/addr DEO2
2021-05-11 18:14:52 +00:00
.pointer/x LDZ2 .Screen/x DEO2
.pointer/y LDZ2 .Screen/y DEO2
#30 .Screen/color DEO
2021-03-01 03:49:53 +00:00
2021-03-14 01:34:08 +00:00
( record pointer positions )
2021-05-11 18:14:52 +00:00
.Mouse/x DEI2 .pointer/x STZ2 .Mouse/y DEI2 .pointer/y STZ2
2021-03-01 03:49:53 +00:00
2021-03-14 01:34:08 +00:00
( draw new cursor )
2021-05-11 18:14:52 +00:00
.pointer/sprite LDZ2 .Screen/addr DEO2
.pointer/x LDZ2 .Screen/x DEO2
.pointer/y LDZ2 .Screen/y DEO2
#31 .Screen/color DEO
2021-03-01 03:49:53 +00:00
2021-03-14 21:26:17 +00:00
RTN
2021-03-01 03:49:53 +00:00
2021-04-29 04:00:39 +00:00
@line-rect ( x1* y1* x2* y2* color -- )
2021-03-01 03:49:53 +00:00
2021-05-11 18:14:52 +00:00
( load ) .color STZ .rect/y2 STZ2 .rect/x2 STZ2 DUP2 .Screen/y DEO2 .rect/y1 STZ2 DUP2 .Screen/x DEO2 .rect/x1 STZ2
&hor
( incr ) .Screen/x DEI2 #0001 ADD2 .Screen/x DEO2
2021-05-11 18:14:52 +00:00
( draw ) .rect/y1 LDZ2 .Screen/y DEO2 .color LDZ .Screen/color DEO
( draw ) .rect/y2 LDZ2 .Screen/y DEO2 .color LDZ .Screen/color DEO
.Screen/x DEI2 .rect/x2 LDZ2 LTH2 ,&hor JCN
.rect/y1 LDZ2 .Screen/y DEO2
&ver
2021-05-11 18:14:52 +00:00
( draw ) .rect/x1 LDZ2 .Screen/x DEO2 .color LDZ .Screen/color DEO
( draw ) .rect/x2 LDZ2 .Screen/x DEO2 .color LDZ .Screen/color DEO
( incr ) .Screen/y DEI2 #0001 ADD2 .Screen/y DEO2
2021-05-11 18:14:52 +00:00
.Screen/y DEI2 .rect/y2 LDZ2 #0001 ADD2 LTH2 ,&ver JCN
2021-03-01 03:49:53 +00:00
2021-03-14 21:26:17 +00:00
RTN
2021-03-01 03:49:53 +00:00
@clear_icn [ 0000 0000 0000 0000 ]
2021-03-01 17:16:40 +00:00
@pointer_icn [ 80c0 e0f0 f8e0 1000 ]
2021-03-01 03:49:53 +00:00
@hand_icn [ 4040 4070 f8f8 f870 ]