texts inside labels now work.
This commit is contained in:
@@ -508,7 +508,11 @@ Widget_FillRect:
|
||||
; @clobbers any, !Z
|
||||
|
||||
Widget_DrawBorder:
|
||||
rcall Widget_LoadDisplayRegs
|
||||
clr r6
|
||||
clr r7
|
||||
clr r8
|
||||
clr r9
|
||||
rcall Widget_MakeAbsPos ; (R16, R17)
|
||||
bigcall Display_DrawRect
|
||||
ret
|
||||
; @end
|
||||
@@ -525,7 +529,6 @@ Widget_DrawBorder:
|
||||
; @clobbers any, !Z
|
||||
|
||||
Widget_DrawTextFlash:
|
||||
rcall Widget_LoadDisplayRegs
|
||||
rcall Widget_GetSdramPtr ; (none)
|
||||
rcall Widget_SelectColors
|
||||
rjmp Widget_DrawColoredTextFlash
|
||||
@@ -546,23 +549,24 @@ Widget_DrawTextFlash:
|
||||
|
||||
Widget_DrawColoredTextFlash:
|
||||
rcall widgetCalcAbsPosAndBorders
|
||||
push zl
|
||||
push zh
|
||||
mov zl, r12
|
||||
mov zh, r13
|
||||
Widget_DrawColoredTextFlash_loop:
|
||||
push zl
|
||||
push zh
|
||||
mov zl, r12
|
||||
mov zh, r13
|
||||
lpm r16, Z
|
||||
tst r16
|
||||
breq Widget_DrawColoredTextFlash_loopEnd
|
||||
rcall widgetDrawChar
|
||||
brcc Widget_DrawColoredTextFlash_loopEnd
|
||||
adiw zh:zl, 1
|
||||
rjmp Widget_DrawColoredTextFlash_loop
|
||||
pop zh
|
||||
pop zl
|
||||
tst r16
|
||||
breq Widget_DrawColoredTextFlash_loopEnd
|
||||
rcall widgetDrawChar
|
||||
brcc Widget_DrawColoredTextFlash_loopEnd
|
||||
ldi r16, 1
|
||||
add r12, r16
|
||||
adc r13, r12
|
||||
sub r13, r12
|
||||
rjmp Widget_DrawColoredTextFlash_loop
|
||||
Widget_DrawColoredTextFlash_loopEnd:
|
||||
mov r12, zl
|
||||
mov r13, zh
|
||||
pop zh
|
||||
pop zl
|
||||
ret
|
||||
; @end
|
||||
|
||||
@@ -585,11 +589,11 @@ widgetCalcAbsPosAndBorders:
|
||||
push zl
|
||||
push zh
|
||||
adiw zh:zl, WIDGET_OFFS_X_LO
|
||||
lpm r16, Z+
|
||||
lpm r16, Z+ ; widget X
|
||||
lpm r17, Z+
|
||||
add r4, r16 ; adjust X
|
||||
adc r5, r17
|
||||
lpm r16, Z+
|
||||
lpm r16, Z+ ; widget Y
|
||||
lpm r17, Z+
|
||||
add r6, r16 ; adjust Y
|
||||
adc r7, r17
|
||||
@@ -624,26 +628,29 @@ widgetDrawChar:
|
||||
push zl
|
||||
push zh
|
||||
; save R16 (char to write)
|
||||
mov r12, r16
|
||||
mov r14, r16
|
||||
|
||||
; get font to Z
|
||||
adiw zh:zl, WIDGET_OFFS_FONT_LO
|
||||
lpm r18, Z+
|
||||
lpm zh, Z
|
||||
mov zl, r18
|
||||
or r18, zh
|
||||
clc
|
||||
breq widgetDrawChar_done
|
||||
|
||||
; check whether the char fits inside window
|
||||
bigcall FONT_GetCharWidth ; r16=char width
|
||||
|
||||
|
||||
clr r17
|
||||
add r16, r4 ; char width+X
|
||||
adc r17, r5
|
||||
sub r16, r8 ; check against window width
|
||||
sbc r17, r9
|
||||
brcc widgetDrawChar_ret ; not fit, jmp
|
||||
brcc widgetDrawChar_done ; not fit, jmp
|
||||
|
||||
; actually draw char
|
||||
mov r16, r12
|
||||
mov r16, r14
|
||||
push r8
|
||||
push r9
|
||||
push r10
|
||||
@@ -657,10 +664,11 @@ widgetDrawChar:
|
||||
add r4, r18 ; increment X
|
||||
adc r5, r16
|
||||
sec ; write succeeded
|
||||
widgetDrawChar_ret:
|
||||
widgetDrawChar_done:
|
||||
pop zh
|
||||
pop zl
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user