- reading images from predefined ressources (stored at 0x8000+) works - drawing IDX2 images within widgets works - added some image ressources in IDX2 format
207 lines
5.8 KiB
NASM
207 lines
5.8 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_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_CLOUD)
|
|
ldi r17, HIGH(RESSSOURCE_IMG_CLOUD)
|
|
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
|
|
|