avr: added text aligning in labels.

This commit is contained in:
Martin Preuss
2026-01-18 20:02:25 +01:00
parent fb308ba9fc
commit a11c5ac536
5 changed files with 270 additions and 87 deletions

View File

@@ -15,17 +15,17 @@
; defines
; IMGVIEW in flash
.equ VLABEL_OFFS_VLABEL = WIDGET_SIZE
.equ VLABEL_OFFS_POSTKOMMADIGITS = VLABEL_OFFS_VLABEL+0
.equ VLABEL_OFFS_RESERVED = VLABEL_OFFS_VLABEL+1
.equ VLABEL_SIZE = VLABEL_OFFS_VLABEL+2
.equ VLABEL_OFFS_VLABEL = WIDGET_SIZE
.equ VLABEL_OFFS_POSTKOMMADIGITS = VLABEL_OFFS_VLABEL+0
.equ VLABEL_OFFS_RESERVED = VLABEL_OFFS_VLABEL+1
.equ VLABEL_SIZE = VLABEL_OFFS_VLABEL+2
; SDRAM data for IMGVIEW
.equ VLABEL_SD_OFFS_VLABEL = WIDGET_SD_SIZE
.equ VLABEL_SD_OFFS_VALUE_LO = VLABEL_SD_OFFS_VLABEL+0
.equ VLABEL_SD_OFFS_VALUE_HI = VLABEL_SD_OFFS_VLABEL+1
.equ VLABEL_SD_SIZE = VLABEL_SD_OFFS_VLABEL+2
.equ VLABEL_SD_OFFS_VLABEL = WIDGET_SD_SIZE
.equ VLABEL_SD_OFFS_VALUE_LO = VLABEL_SD_OFFS_VLABEL+0
.equ VLABEL_SD_OFFS_VALUE_HI = VLABEL_SD_OFFS_VLABEL+1
.equ VLABEL_SD_SIZE = VLABEL_SD_OFFS_VLABEL+2
; signals
@@ -102,16 +102,18 @@ ValueLabel_OnDraw:
andi r16, (1<<WIDGET_FLAGS_DIRTY_BIT)
breq ValueLabel_OnDraw_ret
bigcall Widget_Clear
adiw zh:zl, WIDGET_OFFS_OPTS_LO ; get OPTS low
lpm r14, Z
sbiw zh:zl, WIDGET_OFFS_OPTS_LO
bigcall Widget_Clear
rcall valueLabelWriteValue
push r14
rcall valueLabelWriteValue
pop r14
mov r16, r14
andi r16, (1<<WIDGETS_OPTSLO_BORDER_BIT)
breq ValueLabel_OnDraw_done
sbrs r14, WIDGET_OPTSLO_BORDER_BIT
rjmp ValueLabel_OnDraw_done
ldi r16, LOW(STYLE_BUTTON_COL_BORDER)
mov r2, r16
ldi r16, HIGH(STYLE_BUTTON_COL_BORDER)
@@ -142,26 +144,17 @@ valueLabelWriteValue:
push zl
push zh
bigcall Widget_GetSdramPtr ; (none)
; convert value to string
ldd r20, Y+VLABEL_SD_OFFS_VALUE_LO
ldd r21, Y+VLABEL_SD_OFFS_VALUE_HI
adiw zh:zl, VLABEL_OFFS_POSTKOMMADIGITS
lpm r24, Z
sbiw zh:zl, VLABEL_OFFS_POSTKOMMADIGITS
rcall IntToAscii ; X=pointer to text
clr r4 ; X
clr r5
clr r6 ; Y
clr r7
mov r16, r14
andi r16, (1<<WIDGETS_OPTSLO_BORDER_BIT)
breq valueLabelWriteValue_draw
ldi r16, 2
clr r17
add r4, r16 ; x+=2
adc r5, r17
add r6, r16 ; y+=2
adc r7, r17
valueLabelWriteValue_draw:
; align according to string size
ldi r18, STYLE_WIN_FONT_WIDTH
rcall Widget_CalcStringWidthSDRAM ; r13:r12=string width
rcall Widget_AlignPosXY ; (r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19)
bigcall Widget_DrawTextSDRAM
pop zh
pop zl
@@ -172,6 +165,5 @@ valueLabelWriteValue_draw:
#endif