Files
aqhomecontrol/avr/modules/lcd2/gui2/label.asm
Martin Preuss b1693168c4 fixed apidoc.
2026-01-18 14:26:11 +01:00

108 lines
2.4 KiB
NASM

; ***************************************************************************
; copyright : (C) 2026 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_GUI2_LABEL_ASM
#define AQH_AVR_GUI2_LABEL_ASM
; ***************************************************************************
; defines
; Label in flash
.equ LABEL_OFFS_LABEL = WIDGET_SIZE
.equ LABEL_OFFS_TEXT_LO = LABEL_OFFS_LABEL+0
.equ LABEL_OFFS_TEXT_HI = LABEL_OFFS_LABEL+1
.equ LABEL_SIZE = LABEL_OFFS_LABEL+2
; ***************************************************************************
; code
.cseg
; ---------------------------------------------------------------------------
; @routine Label_OnDraw @global
;
; @param Z byte address of object (for LPM!)
; @param xl param1
; @param xh param2
; @clobbers any, !Z
Label_OnDraw:
bigcall Widget_GetSdramPtr ; (none)
ldd r16, Y+WIDGET_SD_OFFS_FLAGS
andi r16, (1<<WIDGET_FLAGS_DIRTY_BIT)
breq Label_OnDraw_ret
adiw zh:zl, WIDGET_OFFS_OPTS_LO ; get OPTS low
lpm r14, Z
sbiw zh:zl, WIDGET_OFFS_OPTS_LO
rcall Widget_Clear
rcall labelWriteText
mov r16, r14
andi r16, (1<<WIDGETS_OPTSLO_BORDER_BIT)
breq Label_OnDraw_done
ldi r16, LOW(STYLE_BUTTON_COL_BORDER)
mov r2, r16
ldi r16, HIGH(STYLE_BUTTON_COL_BORDER)
mov r3, r16
bigcall Widget_DrawBorder
Label_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
Label_OnDraw_ret:
sec
ret
; @end
; ---------------------------------------------------------------------------
; @routine labelWriteText
;
; @param Z byte address of object (for LPM!)
; @param R14 opts low
; @clobbers any, !Z
labelWriteText:
clr r4
clr r5
clr r6
clr r7
mov r16, r14
andi r16, (1<<WIDGETS_OPTSLO_BORDER_BIT)
breq labelWriteText_draw
ldi r16, 2
clr r17
add r4, r16 ; x+=2
adc r5, r17
add r6, r16 ; y+=2
adc r7, r17
labelWriteText_draw:
adiw zh:zl, LABEL_OFFS_TEXT_LO
lpm r12, Z+
lpm r13, Z
sbiw zh:zl, LABEL_OFFS_TEXT_LO+1
bigcall Widget_DrawTextFlash
ret
; @end
#endif