Files
aqhomecontrol/avr/devices/c03/main/testwin.asm
Martin Preuss 99c58d13e2 add ressources, use signals for GuiApp.
makes it easier to extend.
2026-01-14 21:19:46 +01:00

211 lines
6.1 KiB
NASM

; ***************************************************************************
; copyright : (C) 2025 by Martin Preuss
; email : martin@libchipcard.de
;
; ***************************************************************************
; * This file is part of the project "AqHome". *
; * Please see toplevel file COPYING of that project for license details. *
; ***************************************************************************
#ifndef AQH_AVR_DEVICE_C03_TESTWIN_ASM
#define AQH_AVR_DEVICE_C03_TESTWIN_ASM
; ***************************************************************************
; defines
; ***************************************************************************
; data
.dseg
testApp_ramdata:
.byte GUIAPP_SD_SIZE
testWin_ramdata:
.byte WIDGET_SD_SIZE
testWinHeader_ramdata:
.byte WIDGET_SD_SIZE
testWinBody_ramdata:
.byte WIDGET_SD_SIZE
; ***************************************************************************
; code
.cseg
testCntrl:
; OBJECT
.dw 0 ; next
.dw 0 ; parent
.dw testApp_flashdata*2 ; first child
.dw 0 ; target
.dw 0 ; selector (ony lower 8 bits used)
.dw testCntrl_signalmap*2 ; signal map
testCntrl_signalmap:
.db 0, OBJECT_SIGNAL_CREATE, LOW(GuiCntlr_OnCreate), HIGH(GuiCntlr_OnCreate)
.db 0, GUIAPP_SIGNAL_RAISE, LOW(GuiCntlr_OnRaise), HIGH(GuiCntlr_OnRaise)
.db 0, 0, 0, 0 ; end of table
testApp_flashdata:
; OBJECT
.dw 0 ; next
.dw testCntrl*2 ; parent
.dw 0 ; first child
.dw testCntrl*2 ; target
.dw 0 ; selector (ony lower 8 bits used)
.dw testApp_signalmap*2 ; signal map
; GUIAPP
.dw testApp_ramdata ; SDRAM data
.dw testWin_flashdata*2 ; root widget
.dw 0 ; root timer
testApp_signalmap:
.db 0, OBJECT_SIGNAL_TIMER, LOW(GuiApp_OnTimer), HIGH(GuiApp_OnTimer)
.db 0, WIDGET_SIGNAL_TOUCH, LOW(GuiApp_OnTouch), HIGH(GuiApp_OnTouch)
.db 0, WIDGET_SIGNAL_SHOW, LOW(GuiApp_OnShow), HIGH(GuiApp_OnShow)
.db 0, WIDGET_SIGNAL_HIDE, LOW(GuiApp_OnHide), HIGH(GuiApp_OnHide)
.db 0, OBJECT_SIGNAL_CREATE, LOW(GuiApp_OnCreate), HIGH(GuiApp_OnCreate)
.db 0, 0, 0, 0 ; end of table
testWin_flashdata:
; OBJECT
.dw 0 ; next
.dw 0 ; parent
.dw testWinHeader_flashdata*2 ; first child
.dw 0 ; target
.dw 0 ; selector (ony lower 8 bits used)
.dw testWin_signalmap*2 ; signal map
; WIDGET
.db 0, 0 ; opts lo, hi
.dw 0 ; X
.dw 0 ; Y
.dw DISPLAY_WIDTH ; W
.dw DISPLAY_HEIGHT ; H
.dw STYLE_WIN_FOREGROUND ; front color
.dw STYLE_WIN_BACKGROUND ; back color
.dw STYLE_WIN_FONT*2 ; font
.dw testWin_ramdata ; ptr to SDRAM
testWin_signalmap:
.db 0, OBJECT_SIGNAL_CREATE, LOW(Widget_OnCreate), HIGH(Widget_OnCreate)
.db 0, WIDGET_SIGNAL_DRAW, LOW(Widget_OnDraw), HIGH(Widget_OnDraw)
.db 0, 0, 0, 0 ; end of table
testWinHeader_flashdata:
; OBJECT
.dw testWinBody_flashdata*2 ; next
.dw testWin_flashdata*2 ; parent
.dw 0 ; first child
.dw 0 ; target
.dw 0 ; selector (ony lower 8 bits used)
.dw testWinHeader_signalmap*2 ; signal map
; WIDGET
.db 0, 0 ; opts lo, hi
.dw 0 ; X
.dw 0 ; Y
.dw DISPLAY_WIDTH ; W
.dw STYLE_WIN_TITLE_HEIGHT ; H
.dw STYLE_WIN_TITLE_FOREGROUND ; front color
.dw STYLE_WIN_TITLE_BACKGROUND ; back color
.dw STYLE_WIN_FONT*2 ; font
.dw testWinHeader_ramdata ; ptr to SDRAM
; LABEL
.dw testWinHeader_text*2 ; text
testWinHeader_text:
.db "Test-Window", 0
testWinHeader_signalmap:
.db 0, OBJECT_SIGNAL_CREATE, LOW(Widget_OnCreate), HIGH(Widget_OnCreate)
.db 0, WIDGET_SIGNAL_DRAW, LOW(Label_OnDraw), HIGH(Label_OnDraw)
.db 0, 0, 0, 0 ; end of table
testWinBody_flashdata:
; OBJECT
.dw 0 ; next
.dw testWin_flashdata*2 ; parent
.dw 0 ; first child
.dw 0 ; target
.dw 0 ; selector (ony lower 8 bits used)
.dw testWinBody_signalmap*2 ; signal map
; WIDGET
.db 0, 0 ; opts lo, hi
.dw 0 ; X
.dw STYLE_WIN_TITLE_HEIGHT ; Y
.dw DISPLAY_WIDTH ; W
.dw DISPLAY_HEIGHT-STYLE_WIN_TITLE_HEIGHT ; H
.dw STYLE_WIN_FOREGROUND ; front color
; .dw DISPLAY_COLOR_YELLOW
.dw STYLE_WIN_BACKGROUND ; back color
.dw STYLE_WIN_FONT*2 ; font
.dw testWinBody_ramdata ; ptr to SDRAM
testWinBody_signalmap:
.db 0, OBJECT_SIGNAL_CREATE, LOW(Widget_OnCreate), HIGH(Widget_OnCreate)
.db 0, WIDGET_SIGNAL_DRAW, LOW(ImageViewer_OnDraw), HIGH(ImageViewer_OnDraw)
.db 0, 0, 0, 0 ; end of table
ImageViewer_OnDraw:
bigcall Widget_GetSdramPtr ; (none)
ldd r16, Y+WIDGET_SD_OFFS_FLAGS
andi r16, (1<<WIDGET_FLAGS_DIRTY_BIT)
breq ImageViewer_OnDraw_ret
rcall Widget_Clear
push zl
push zh
ldi zl, LOW(RESSOURCE_ADDR*2)
ldi zh, HIGH(RESSOURCE_ADDR*2)
ldi r16, LOW(RESSSOURCE_IMG_CLOUD96)
ldi r17, HIGH(RESSSOURCE_IMG_CLOUD96)
rcall RES_GetRessource
mov r12, zl
mov r13, zh
pop zh
pop zl
brcc ImageViewer_OnDraw_done
ldi r16, LOW(DISPLAY_COLOR_DARKGREEN) ; background color
mov r0, r16
ldi r16, HIGH(DISPLAY_COLOR_DARKGREEN)
mov r1, r16
ldi r16, 4 ; X
mov r4, r16
clr r5
ldi r16, 4
mov r6, r16 ; Y
clr r7
bigcall Widget_DrawImage
ImageViewer_OnDraw_done:
bigcall Widget_GetSdramPtr ; (none)
ldd r16, Y+WIDGET_SD_OFFS_FLAGS
cbr r16, (1<<WIDGET_FLAGS_DIRTY_BIT)
std Y+WIDGET_SD_OFFS_FLAGS, r16
ImageViewer_OnDraw_ret:
sec
ret
; @end
#endif