avr: add touch handler routine to button module.
This commit is contained in:
@@ -95,53 +95,47 @@ dlgNetStatsOnHide:
|
|||||||
|
|
||||||
dlgNetStatsOnTouch:
|
dlgNetStatsOnTouch:
|
||||||
mov r16, r18
|
mov r16, r18
|
||||||
mov r17, r18
|
|
||||||
mov yl, xl
|
mov yl, xl
|
||||||
mov yh, xh
|
mov yh, xh
|
||||||
|
|
||||||
; check for press change event
|
; check close button
|
||||||
andi r17, (1<<DISPLAY_IFLAGS_CHGPRESS_BIT)
|
push r18
|
||||||
breq dlgNetStatsTouch_ret
|
rcall dlgNetStatsCheckCloseButton
|
||||||
; press changed
|
pop r18
|
||||||
mov r17, r16
|
brcs dlgNetStatsOnTouch_closeActivated
|
||||||
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
|
|
||||||
rjmp dlgNetStatsTouch_ret
|
rjmp dlgNetStatsTouch_ret
|
||||||
dlgNetStatsTouch_up:
|
dlgNetStatsOnTouch_closeActivated:
|
||||||
; touch came up
|
; close activated, TODO
|
||||||
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
|
|
||||||
dlgNetStatsTouch_ret:
|
dlgNetStatsTouch_ret:
|
||||||
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:
|
dlgNetStatsOnTimer:
|
||||||
ldd r16, Y+DIALOG_OFFS_OPTIONS
|
ldd r16, Y+DIALOG_OFFS_OPTIONS
|
||||||
andi r16, (1<<DIALOG_OPT_ACTIVE_BIT)
|
andi r16, (1<<DIALOG_OPT_ACTIVE_BIT)
|
||||||
@@ -226,10 +220,30 @@ DlgNetStats_Show:
|
|||||||
; update num
|
; update num
|
||||||
DLGNETSTATS_PRINTLABEL 5*(2+STYLE_WIN_FONT_HEIGHT), dlgNetstats_lUpdate
|
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 zl, LOW(dlgNetstats_CloseBtn*2)
|
||||||
ldi zh, HIGH(dlgNetstats_CloseBtn*2)
|
ldi zh, HIGH(dlgNetstats_CloseBtn*2)
|
||||||
bigcall Button_Draw_Up
|
bigcall Button_Draw_Up
|
||||||
|
|
||||||
|
; show values
|
||||||
rcall DlgNetStats_Update
|
rcall DlgNetStats_Update
|
||||||
|
|
||||||
ret
|
ret
|
||||||
@@ -272,7 +286,8 @@ dlgNetstats_lClose: .db "Close", 0
|
|||||||
|
|
||||||
|
|
||||||
dlgNetstats_CloseBtn:
|
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 ((DISPLAY_HEIGHT-4)-(STYLE_WIN_FONT_HEIGHT+4))
|
||||||
.dw (5*STYLE_WIN_FONT_WIDTH)+4 ; 5 = string length ("close")
|
.dw (5*STYLE_WIN_FONT_WIDTH)+4 ; 5 = string length ("close")
|
||||||
.dw (STYLE_WIN_FONT_HEIGHT+4)
|
.dw (STYLE_WIN_FONT_HEIGHT+4)
|
||||||
|
|||||||
@@ -11,6 +11,11 @@
|
|||||||
#define AQH_AVR_GUI_BUTTON_ASM
|
#define AQH_AVR_GUI_BUTTON_ASM
|
||||||
|
|
||||||
|
|
||||||
|
.equ BUTTON_STATE_DOWN_BIT = 0
|
||||||
|
.equ BUTTON_STATE_ACTIVATED_BIT = 1
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.cseg
|
.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
|
; @routine buttonDraw
|
||||||
;
|
;
|
||||||
|
|||||||
Reference in New Issue
Block a user