avr: added titled windows
This commit is contained in:
@@ -5,6 +5,8 @@
|
||||
<extradist>
|
||||
defs.asm
|
||||
main.asm
|
||||
style.asm
|
||||
titledwindow.asm
|
||||
window.asm
|
||||
</extradist>
|
||||
|
||||
|
||||
@@ -32,6 +32,12 @@
|
||||
|
||||
|
||||
|
||||
.equ WIN_EVENT_DESTROY = 1
|
||||
.equ WIN_EVENT_SHOW = 2
|
||||
.equ WIN_EVENT_HIDE = 3
|
||||
.equ WIN_EVENT_DRAW = 4
|
||||
.equ WIN_EVENT_TIMER = 5
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
24
avr/modules/lcd2/gui/style.asm
Normal file
24
avr/modules/lcd2/gui/style.asm
Normal file
@@ -0,0 +1,24 @@
|
||||
; ***************************************************************************
|
||||
; 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_GUI_STYLE_ASM
|
||||
#define AQH_AVR_GUI_STYLE_ASM
|
||||
|
||||
|
||||
.equ STYLE_WIN_TITLE_BACKGROUND = DISPLAY_COLOR_NAVY
|
||||
.equ STYLE_WIN_TITLE_FOREGROUND = DISPLAY_COLOR_WHITE
|
||||
.equ STYLE_WIN_BACKGROUND = DISPLAY_COLOR_LIGHTGREY
|
||||
.equ STYLE_WIN_FOREGROUND = DISPLAY_COLOR_BLACK
|
||||
|
||||
|
||||
.equ STYLE_WIN_TITLE_HEIGHT = 20
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
214
avr/modules/lcd2/gui/titledwindow.asm
Normal file
214
avr/modules/lcd2/gui/titledwindow.asm
Normal file
@@ -0,0 +1,214 @@
|
||||
; ***************************************************************************
|
||||
; 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_GUI_TITLEDWINDOW_ASM
|
||||
#define AQH_AVR_GUI_TITLEDWINDOW_ASM
|
||||
|
||||
|
||||
|
||||
.equ TITLEDWINDOW_OFFS_SELF = 0
|
||||
.equ TITLEDWINDOW_OFFS_TITLEPTR_LO = WIN_SIZE
|
||||
.equ TITLEDWINDOW_OFFS_TITLEPTR_HI = WIN_SIZE+1
|
||||
.equ TITLEDWINDOW_OFFS_TITLEWIN = TITLEDWINDOW_OFFS_TITLEPTR_HI+1
|
||||
.equ TITLEDWINDOW_OFFS_CONTENTWIN = TITLEDWINDOW_OFFS_TITLEWIN+WIN_SIZE
|
||||
.equ TITLEDWINDOW_SIZE = TITLEDWINDOW_OFFS_CONTENTWIN+WIN_SIZE
|
||||
|
||||
|
||||
|
||||
.cseg
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine TitleWindow_Init @global
|
||||
;
|
||||
; @param Y pointer to titledwindow data (size=TITLEDWINDOW_SIZE)
|
||||
|
||||
TitleWindow_Init:
|
||||
mov xl, yl
|
||||
mov xh, yh
|
||||
ldi r17, TITLEDWINDOW_SIZE
|
||||
clr r16
|
||||
bigcall Utils_FillSram ; (R17, X)
|
||||
|
||||
ldi r16, LOW(TitleWindow_Handler)
|
||||
std Y+(TITLEDWINDOW_OFFS_SELF+WIN_OFFS_HANDLER_LO), r16
|
||||
ldi r16, HIGH(TitleWindow_Handler)
|
||||
std Y+(TITLEDWINDOW_OFFS_SELF+WIN_OFFS_HANDLER_HI), r16
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine TitleWindow_SetFont @global
|
||||
;
|
||||
; @param Y pointer to screen object in SDRAM
|
||||
; @param Z pointer to font
|
||||
; @clobbers any, !Y
|
||||
|
||||
TitleWindow_SetFont:
|
||||
std Y+WIN_OFFS_FONT_LO, zl
|
||||
std Y+WIN_OFFS_FONT_HI, zh
|
||||
|
||||
; setup title window
|
||||
adiw yh:yl, TITLEDWINDOW_OFFS_TITLEWIN
|
||||
std Y+WIN_OFFS_FONT_LO, zl
|
||||
std Y+WIN_OFFS_FONT_HI, zh
|
||||
sbiw yh:yl, TITLEDWINDOW_OFFS_TITLEWIN
|
||||
|
||||
; setup content window
|
||||
adiw yh:yl, TITLEDWINDOW_OFFS_CONTENTWIN
|
||||
std Y+WIN_OFFS_FONT_LO, zl
|
||||
std Y+WIN_OFFS_FONT_HI, zh
|
||||
sbiw yh:yl, TITLEDWINDOW_OFFS_CONTENTWIN
|
||||
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine TitleWindow_SetPosAndSize @global
|
||||
;
|
||||
; @param Y pointer to screen object in SDRAM
|
||||
; @param R5:R4 X (abs)
|
||||
; @param R7:R6 Y (abs)
|
||||
; @param R9:R8 W
|
||||
; @param R11:R10 H
|
||||
; @clobbers any, !Y
|
||||
|
||||
TitleWindow_SetPosAndSize:
|
||||
std Y+WIN_OFFS_X_LO, r4
|
||||
std Y+WIN_OFFS_X_HI, r5
|
||||
std Y+WIN_OFFS_Y_LO, r6
|
||||
std Y+WIN_OFFS_Y_HI, r7
|
||||
std Y+WIN_OFFS_WIDTH_LO, r8
|
||||
std Y+WIN_OFFS_WIDTH_HI, r9
|
||||
std Y+WIN_OFFS_HEIGHT_LO, r10
|
||||
std Y+WIN_OFFS_HEIGHT_HI, r11
|
||||
|
||||
; setup title window
|
||||
adiw yh:yl, TITLEDWINDOW_OFFS_TITLEWIN
|
||||
std Y+WIN_OFFS_X_LO, r4
|
||||
std Y+WIN_OFFS_X_HI, r5
|
||||
std Y+WIN_OFFS_Y_LO, r6
|
||||
std Y+WIN_OFFS_Y_HI, r7
|
||||
std Y+WIN_OFFS_WIDTH_LO, r8
|
||||
std Y+WIN_OFFS_WIDTH_HI, r9
|
||||
ldi r16, LOW(STYLE_WIN_TITLE_HEIGHT)
|
||||
ldi r17, HIGH(STYLE_WIN_TITLE_HEIGHT)
|
||||
std Y+WIN_OFFS_HEIGHT_LO, r16
|
||||
std Y+WIN_OFFS_HEIGHT_HI, r17
|
||||
sbiw yh:yl, TITLEDWINDOW_OFFS_TITLEWIN
|
||||
|
||||
; setup content window
|
||||
adiw yh:yl, TITLEDWINDOW_OFFS_CONTENTWIN
|
||||
std Y+WIN_OFFS_X_LO, r4
|
||||
std Y+WIN_OFFS_X_HI, r5
|
||||
ldi r16, LOW(STYLE_WIN_TITLE_HEIGHT)
|
||||
ldi r17, HIGH(STYLE_WIN_TITLE_HEIGHT)
|
||||
add r16, r6
|
||||
adc r16, r7
|
||||
std Y+WIN_OFFS_Y_LO, r16
|
||||
std Y+WIN_OFFS_Y_HI, r17
|
||||
std Y+WIN_OFFS_WIDTH_LO, r8
|
||||
std Y+WIN_OFFS_WIDTH_HI, r9
|
||||
mov r16, r10
|
||||
mov r17, r11
|
||||
subi r16, LOW(STYLE_WIN_TITLE_HEIGHT)
|
||||
sbci r17, HIGH(STYLE_WIN_TITLE_HEIGHT)
|
||||
std Y+WIN_OFFS_HEIGHT_LO, r16
|
||||
std Y+WIN_OFFS_HEIGHT_HI, r17
|
||||
sbiw yh:yl, TITLEDWINDOW_OFFS_CONTENTWIN
|
||||
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
TitleWindow_SetStyleColors:
|
||||
ldi r16, LOW(STYLE_WIN_BACKGROUND)
|
||||
ldi r17, HIGH(STYLE_WIN_BACKGROUND)
|
||||
std Y+WIN_OFFS_BG_COL_LO, r16
|
||||
std Y+WIN_OFFS_BG_COL_HI, r17
|
||||
ldi r16, LOW(STYLE_WIN_FOREGROUND)
|
||||
ldi r17, HIGH(STYLE_WIN_FOREGROUND)
|
||||
std Y+WIN_OFFS_FG_COL_LO, r16
|
||||
std Y+WIN_OFFS_FG_COL_HI, r17
|
||||
|
||||
; setup title window
|
||||
adiw yh:yl, TITLEDWINDOW_OFFS_TITLEWIN
|
||||
ldi r16, LOW(STYLE_WIN_TITLE_BACKGROUND)
|
||||
ldi r17, HIGH(STYLE_WIN_TITLE_BACKGROUND)
|
||||
std Y+WIN_OFFS_BG_COL_LO, r16
|
||||
std Y+WIN_OFFS_BG_COL_HI, r17
|
||||
ldi r16, LOW(STYLE_WIN_TITLE_FOREGROUND)
|
||||
ldi r17, HIGH(STYLE_WIN_TITLE_FOREGROUND)
|
||||
std Y+WIN_OFFS_FG_COL_LO, r16
|
||||
std Y+WIN_OFFS_FG_COL_HI, r17
|
||||
sbiw yh:yl, TITLEDWINDOW_OFFS_TITLEWIN
|
||||
|
||||
; setup content window
|
||||
adiw yh:yl, TITLEDWINDOW_OFFS_CONTENTWIN
|
||||
ldi r16, LOW(STYLE_WIN_BACKGROUND)
|
||||
ldi r17, HIGH(STYLE_WIN_BACKGROUND)
|
||||
std Y+WIN_OFFS_BG_COL_LO, r16
|
||||
std Y+WIN_OFFS_BG_COL_HI, r17
|
||||
ldi r16, LOW(STYLE_WIN_FOREGROUND)
|
||||
ldi r17, HIGH(STYLE_WIN_FOREGROUND)
|
||||
std Y+WIN_OFFS_FG_COL_LO, r16
|
||||
std Y+WIN_OFFS_FG_COL_HI, r17
|
||||
sbiw yh:yl, TITLEDWINDOW_OFFS_CONTENTWIN
|
||||
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine TitleWindow_Draw @global
|
||||
;
|
||||
; @param Y pointer to titledwindow data (size=TITLEDWINDOW_SIZE)
|
||||
|
||||
TitleWindow_Draw:
|
||||
; draw title window
|
||||
adiw yh:yl, TITLEDWINDOW_OFFS_TITLEWIN
|
||||
rcall Window_Clear
|
||||
sbiw yh:yl, TITLEDWINDOW_OFFS_TITLEWIN
|
||||
|
||||
; write header
|
||||
ldd zl, Y+TITLEDWINDOW_OFFS_TITLEPTR_LO
|
||||
ldd zh, Y+TITLEDWINDOW_OFFS_TITLEPTR_HI
|
||||
adiw yh:yl, TITLEDWINDOW_OFFS_TITLEWIN
|
||||
ldi r16, 5
|
||||
mov r4, r16
|
||||
clr r5
|
||||
ldi r16, 5
|
||||
mov r6, r16
|
||||
clr r7
|
||||
rcall Window_DrawTextFlash
|
||||
sbiw yh:yl, TITLEDWINDOW_OFFS_TITLEWIN
|
||||
|
||||
; clear content window
|
||||
adiw yh:yl, TITLEDWINDOW_OFFS_CONTENTWIN
|
||||
rcall Window_Clear
|
||||
sbiw yh:yl, TITLEDWINDOW_OFFS_CONTENTWIN
|
||||
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
TitleWindow_Handler:
|
||||
ret
|
||||
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user