avr: add touch handler routine to button module.
This commit is contained in:
@@ -95,53 +95,47 @@ dlgNetStatsOnHide:
|
||||
|
||||
dlgNetStatsOnTouch:
|
||||
mov r16, r18
|
||||
mov r17, r18
|
||||
mov yl, xl
|
||||
mov yh, xh
|
||||
|
||||
; check for press change event
|
||||
andi r17, (1<<DISPLAY_IFLAGS_CHGPRESS_BIT)
|
||||
breq dlgNetStatsTouch_ret
|
||||
; press changed
|
||||
mov r17, r16
|
||||
andi r17, (1<<DISPLAY_IFLAGS_PRESSED_BIT)
|
||||
breq dlgNetStatsTouch_up
|
||||
; touch came down
|
||||
ldi zl, LOW(dlgNetstats_CloseBtn*2)
|
||||
ldi zh, HIGH(dlgNetstats_CloseBtn*2)
|
||||
bigcall Window_IsPointInRect
|
||||
brcc dlgNetStatsTouch_ret
|
||||
lds r16, dlgNetstatsFlags
|
||||
mov r17, r16
|
||||
andi r17, (1<<DLG_NETSTATS_FLAGS_BUTTON_DOWN_BIT)
|
||||
brne dlgNetStatsTouch_ret ; already down, jmp
|
||||
ori r16, (1<<DLG_NETSTATS_FLAGS_BUTTON_DOWN_BIT)
|
||||
sts dlgNetstatsFlags, r16
|
||||
ldi zl, LOW(dlgNetstats_CloseBtn*2)
|
||||
ldi zh, HIGH(dlgNetstats_CloseBtn*2)
|
||||
bigcall Button_Draw_Down
|
||||
; check close button
|
||||
push r18
|
||||
rcall dlgNetStatsCheckCloseButton
|
||||
pop r18
|
||||
brcs dlgNetStatsOnTouch_closeActivated
|
||||
rjmp dlgNetStatsTouch_ret
|
||||
dlgNetStatsTouch_up:
|
||||
; touch came up
|
||||
lds r16, dlgNetstatsFlags
|
||||
mov r17, r16
|
||||
andi r17, (1<<DLG_NETSTATS_FLAGS_BUTTON_DOWN_BIT)
|
||||
breq dlgNetStatsTouch_ret ; already up, jmp
|
||||
cbr r16, (1<<DLG_NETSTATS_FLAGS_BUTTON_DOWN_BIT)
|
||||
sts dlgNetstatsFlags, r16
|
||||
ldi zl, LOW(dlgNetstats_CloseBtn*2)
|
||||
ldi zh, HIGH(dlgNetstats_CloseBtn*2)
|
||||
bigcall Button_Draw_Up
|
||||
ldi zl, LOW(dlgNetstats_CloseBtn*2)
|
||||
ldi zh, HIGH(dlgNetstats_CloseBtn*2)
|
||||
bigcall Window_IsPointInRect
|
||||
brcc dlgNetStatsTouch_ret
|
||||
; touch ended over button, TODO
|
||||
dlgNetStatsOnTouch_closeActivated:
|
||||
; close activated, TODO
|
||||
|
||||
dlgNetStatsTouch_ret:
|
||||
ret
|
||||
|
||||
|
||||
|
||||
dlgNetStatsCheckCloseButton:
|
||||
ldi zl, LOW(dlgNetstats_CloseBtn*2)
|
||||
ldi zh, HIGH(dlgNetstats_CloseBtn*2)
|
||||
clr r19
|
||||
lds r16, dlgNetstatsFlags
|
||||
sbrc r16, DLG_NETSTATS_FLAGS_BUTTON_DOWN_BIT
|
||||
sbr r19, (1<<BUTTON_STATE_DOWN_BIT)
|
||||
bigcall Button_HandleTouch
|
||||
|
||||
lds r16, dlgNetstatsFlags
|
||||
cbr r16, (1<<DLG_NETSTATS_FLAGS_BUTTON_DOWN_BIT)
|
||||
sbrc r19, 0
|
||||
sbr r16, (1<<DLG_NETSTATS_FLAGS_BUTTON_DOWN_BIT)
|
||||
sts dlgNetstatsFlags, r16
|
||||
clc
|
||||
sbrs r19, BUTTON_STATE_ACTIVATED_BIT
|
||||
rjmp dlgNetStatsCheckCloseButton_ret
|
||||
; button activated
|
||||
sec
|
||||
dlgNetStatsCheckCloseButton_ret:
|
||||
ret
|
||||
|
||||
|
||||
|
||||
dlgNetStatsOnTimer:
|
||||
ldd r16, Y+DIALOG_OFFS_OPTIONS
|
||||
andi r16, (1<<DIALOG_OPT_ACTIVE_BIT)
|
||||
@@ -226,10 +220,30 @@ DlgNetStats_Show:
|
||||
; update num
|
||||
DLGNETSTATS_PRINTLABEL 5*(2+STYLE_WIN_FONT_HEIGHT), dlgNetstats_lUpdate
|
||||
|
||||
; draw horizontal line
|
||||
ldi r16, 4 ; x
|
||||
mov r4, r16
|
||||
clr r5
|
||||
ldi r16, LOW((DISPLAY_HEIGHT-8)-(STYLE_WIN_FONT_HEIGHT+4))
|
||||
mov r6, r16 ; y
|
||||
ldi r16, HIGH((DISPLAY_HEIGHT-8)-(STYLE_WIN_FONT_HEIGHT+4))
|
||||
mov r7, r16
|
||||
ldi r16, LOW(DISPLAY_WIDTH-8)
|
||||
mov r8, r16 ; w
|
||||
ldi r16, HIGH(DISPLAY_WIDTH-8)
|
||||
mov r9, r16
|
||||
ldi r16, LOW(STYLE_WIN_FOREGROUND)
|
||||
mov r2, r16 ; color
|
||||
ldi r16, HIGH(STYLE_WIN_FOREGROUND)
|
||||
mov r3, r16
|
||||
bigcall Display_DrawHLine
|
||||
|
||||
; draw "close" button
|
||||
ldi zl, LOW(dlgNetstats_CloseBtn*2)
|
||||
ldi zh, HIGH(dlgNetstats_CloseBtn*2)
|
||||
bigcall Button_Draw_Up
|
||||
|
||||
; show values
|
||||
rcall DlgNetStats_Update
|
||||
|
||||
ret
|
||||
@@ -272,7 +286,8 @@ dlgNetstats_lClose: .db "Close", 0
|
||||
|
||||
|
||||
dlgNetstats_CloseBtn:
|
||||
.dw ((DISPLAY_WIDTH-((5*STYLE_WIN_FONT_WIDTH)+4))/2) ; 5 = string length ("close")
|
||||
; .dw ((DISPLAY_WIDTH-((5*STYLE_WIN_FONT_WIDTH)+4))/2) ; 5 = string length ("close")
|
||||
.dw ((DISPLAY_WIDTH-4-((5*STYLE_WIN_FONT_WIDTH)+4))) ; 5 = string length ("close"), align right
|
||||
.dw ((DISPLAY_HEIGHT-4)-(STYLE_WIN_FONT_HEIGHT+4))
|
||||
.dw (5*STYLE_WIN_FONT_WIDTH)+4 ; 5 = string length ("close")
|
||||
.dw (STYLE_WIN_FONT_HEIGHT+4)
|
||||
|
||||
@@ -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