Files
aqhomecontrol/avr/modules/lcd2/gui/titlewindow2.asm
2025-11-10 14:49:23 +01:00

157 lines
3.6 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_GUI_TITLEWINDOW2_ASM
#define AQH_AVR_GUI_TITLEWINDOW2_ASM
.cseg
; ---------------------------------------------------------------------------
; @routine TitleWindow_Init @global
;
; @param Y pointer to titledwindow data (size=TITLEWINDOW_SIZE)
TitleWindow_Init:
bigcall Window_Init
ret
; @end
; ---------------------------------------------------------------------------
; @routine TitleWindow_SetFullSize @global
;
; @param Y pointer to screen object in SDRAM
; @clobbers any, !Y
TitleWindow_SetFullSize:
clr r16
std Y+WIN_OFFS_X_LO, r16
std Y+WIN_OFFS_X_HI, r16
std Y+WIN_OFFS_Y_LO, r16
std Y+WIN_OFFS_Y_HI, r16
ldi r16, LOW(DISPLAY_WIDTH)
std Y+WIN_OFFS_WIDTH_LO, r16
ldi r16, HIGH(DISPLAY_WIDTH)
std Y+WIN_OFFS_WIDTH_HI, r16
ldi r16, LOW(DISPLAY_HEIGHT)
std Y+WIN_OFFS_HEIGHT_LO, r16
ldi r16, HIGH(DISPLAY_HEIGHT)
std Y+WIN_OFFS_HEIGHT_HI, r16
ret
; @enb
; ---------------------------------------------------------------------------
; @routine TitleWindow_SetStyleColors @global
;
; @param Y pointer to screen object in SDRAM
; @clobbers any, !Y
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
ret
; @end
; ---------------------------------------------------------------------------
; @routine TitleWindow_DrawTitle @global
;
; @param Y pointer to screen object in SDRAM
; @param Z pointer to title
; @clobbers any, !Y
TitleWindow_DrawTitle:
; fill background of title area
clr r4
clr r5
clr r6
clr r7
ldd r8, Y+WIN_OFFS_WIDTH_LO
ldd r9, Y+WIN_OFFS_WIDTH_HI
ldi r16, LOW(STYLE_WIN_TITLE_HEIGHT)
ldi r17, HIGH(STYLE_WIN_TITLE_HEIGHT)
mov r10, r16
mov r11, r17
ldi r16, LOW(STYLE_WIN_TITLE_BACKGROUND)
mov r2, r16
ldi r16, HIGH(STYLE_WIN_TITLE_BACKGROUND)
mov r3, r16
rcall Window_FillRect
; draw title
ldi r16, 5 ; X
mov r4, r16
clr r5
ldi r16, 2 ; Y
mov r6, r16
clr r7
ldi r16, LOW(STYLE_WIN_TITLE_BACKGROUND)
mov r0, r16
ldi r16, HIGH(STYLE_WIN_TITLE_BACKGROUND)
mov r1, r16
ldi r16, LOW(STYLE_WIN_TITLE_FOREGROUND)
mov r2, r16
ldi r16, HIGH(STYLE_WIN_TITLE_FOREGROUND)
mov r3, r16
bigcall Window_DrawColorTextFlash
ret
; @end
; ---------------------------------------------------------------------------
; @routine TitleWindow_ClearContentArea @global
;
; @param Y pointer to screen object in SDRAM
; @clobbers any, !Y
TitleWindow_ClearContentArea:
clr r4
clr r5
ldi r16, LOW(STYLE_WIN_TITLE_HEIGHT)
mov r6, r16
ldi r16, HIGH(STYLE_WIN_TITLE_HEIGHT)
mov r7, r16
ldd r8, Y+WIN_OFFS_WIDTH_LO
ldd r9, Y+WIN_OFFS_WIDTH_HI
ldi r16, LOW(STYLE_WIN_TITLE_HEIGHT)
ldi r17, HIGH(STYLE_WIN_TITLE_HEIGHT)
ldd r10, Y+WIN_OFFS_HEIGHT_LO
ldd r11, Y+WIN_OFFS_HEIGHT_HI
sub r10, r16
sbc r11, r17
ldi r16, LOW(STYLE_WIN_BACKGROUND)
ldd r2, Y+WIN_OFFS_BG_COL_LO
ldd r3, Y+WIN_OFFS_BG_COL_HI
rcall Window_FillRect
ret
; @end
#endif