avr: add touch handler routine to button module.
This commit is contained in:
@@ -11,6 +11,11 @@
|
||||
#define AQH_AVR_GUI_BUTTON_ASM
|
||||
|
||||
|
||||
.equ BUTTON_STATE_DOWN_BIT = 0
|
||||
.equ BUTTON_STATE_ACTIVATED_BIT = 1
|
||||
|
||||
|
||||
|
||||
.cseg
|
||||
|
||||
|
||||
@@ -47,6 +52,74 @@ Button_Draw_Down:
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine Button_HandleTouch @global
|
||||
;
|
||||
; @param r18 flags
|
||||
; @param r19 current state of button (bit 0: pressed, bit 1: activated)
|
||||
; @param r5:r4 x
|
||||
; @param r7:r6 Y
|
||||
; @param Z pointer to button data in FLASH
|
||||
; @return r19 new state of button (0=normal, 1=pressed)
|
||||
|
||||
Button_HandleTouch:
|
||||
cbr r19, (1<<BUTTON_STATE_ACTIVATED_BIT) ; clear activated bit
|
||||
; check for press change event
|
||||
mov r17, r18
|
||||
andi r17, (1<<DISPLAY_IFLAGS_CHGPRESS_BIT)
|
||||
breq Button_HandleTouch_ret
|
||||
; press changed
|
||||
mov r17, r18
|
||||
andi r17, (1<<DISPLAY_IFLAGS_PRESSED_BIT)
|
||||
breq Button_HandleTouch_up
|
||||
; touch came down
|
||||
push zl
|
||||
push zh
|
||||
push r19
|
||||
bigcall Window_IsPointInRect
|
||||
pop r19
|
||||
pop zh
|
||||
pop zl
|
||||
brcc Button_HandleTouch_ret
|
||||
tst r19
|
||||
brne Button_HandleTouch_ret ; already down, jmp
|
||||
sbr r19, (1<<BUTTON_STATE_DOWN_BIT) ; button now down
|
||||
push zl
|
||||
push zh
|
||||
push r19
|
||||
rcall Button_Draw_Down
|
||||
pop r19
|
||||
pop zh
|
||||
pop zl
|
||||
rjmp Button_HandleTouch_ret
|
||||
Button_HandleTouch_up:
|
||||
; touch came up
|
||||
tst r19
|
||||
breq Button_HandleTouch_ret ; already up, jmp
|
||||
cbr r19, (1<<BUTTON_STATE_DOWN_BIT)
|
||||
push zl
|
||||
push zh
|
||||
push r19
|
||||
rcall Button_Draw_Up
|
||||
pop r19
|
||||
pop zh
|
||||
pop zl
|
||||
push zl
|
||||
push zh
|
||||
push r19
|
||||
bigcall Window_IsPointInRect
|
||||
pop r19
|
||||
pop zh
|
||||
pop zl
|
||||
brcc Button_HandleTouch_ret
|
||||
; touch ended over button
|
||||
sbr r19, (1<<BUTTON_STATE_ACTIVATED_BIT) ; set activated bit
|
||||
Button_HandleTouch_ret:
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine buttonDraw
|
||||
;
|
||||
|
||||
Reference in New Issue
Block a user