texts inside labels now work.
This commit is contained in:
@@ -254,9 +254,8 @@ test:
|
||||
;.include "modules/lcd2/font/font4.asm"
|
||||
;.include "modules/lcd2/font/font12x16.asm"
|
||||
|
||||
;.include "modules/lcd2/ili9341/font12x16.asm"
|
||||
;.include "modules/lcd2/ili9341/font12x16_1.asm"
|
||||
.equ ili9341Font12x16_1 = 0
|
||||
.include "modules/lcd2/ili9341/font12x16.asm"
|
||||
.include "modules/lcd2/ili9341/font12x16_1.asm"
|
||||
|
||||
;.include "modules/lcd2/ili9341/font12x20.asm"
|
||||
;.include "modules/lcd2/ili9341/font12x20_1.asm"
|
||||
@@ -268,6 +267,7 @@ test:
|
||||
.include "modules/lcd2/gui2/style.asm"
|
||||
.include "modules/lcd2/gui2/object.asm"
|
||||
.include "modules/lcd2/gui2/widget.asm"
|
||||
.include "modules/lcd2/gui2/label.asm"
|
||||
.include "modules/lcd2/gui2/guiapp.asm"
|
||||
.include "modules/lcd2/gui2/guicntrl.asm"
|
||||
|
||||
|
||||
@@ -28,6 +28,8 @@ testApp_ramdata:
|
||||
testWin_ramdata:
|
||||
.byte WIDGET_SD_SIZE
|
||||
|
||||
testWinHeader_ramdata:
|
||||
.byte WIDGET_SD_SIZE
|
||||
|
||||
|
||||
; ***************************************************************************
|
||||
@@ -72,7 +74,7 @@ testWin_flashdata:
|
||||
; OBJECT
|
||||
.dw 0 ; next
|
||||
.dw 0 ; parent
|
||||
.dw 0 ; first child
|
||||
.dw testWinHeader_flashdata*2 ; first child
|
||||
.dw 0 ; target
|
||||
.dw 0 ; selector (ony lower 8 bits used)
|
||||
.dw testWin_signalmap*2 ; signal map
|
||||
@@ -82,10 +84,9 @@ testWin_flashdata:
|
||||
.dw 0 ; Y
|
||||
.dw DISPLAY_WIDTH ; W
|
||||
.dw DISPLAY_HEIGHT ; H
|
||||
.dw 0 ; front color
|
||||
.dw DISPLAY_COLOR_PURPLE ; back color
|
||||
; .dw STYLE_WIN_FONT*2 ; font
|
||||
.dw 0 ; font
|
||||
.dw STYLE_WIN_FOREGROUND ; front color
|
||||
.dw STYLE_WIN_BACKGROUND ; back color
|
||||
.dw STYLE_WIN_FONT*2 ; font
|
||||
.dw testWin_ramdata ; ptr to SDRAM
|
||||
testWin_signalmap:
|
||||
.db 0, OBJECT_SIGNAL_CREATE, LOW(Widget_OnCreate), HIGH(Widget_OnCreate)
|
||||
@@ -93,6 +94,35 @@ testWin_signalmap:
|
||||
.db 0, 0, 0, 0 ; end of table
|
||||
|
||||
|
||||
testWinHeader_flashdata:
|
||||
; OBJECT
|
||||
.dw 0 ; next
|
||||
.dw testWin_flashdata*2 ; parent
|
||||
.dw 0 ; first child
|
||||
.dw 0 ; target
|
||||
.dw 0 ; selector (ony lower 8 bits used)
|
||||
.dw testWinHeader_signalmap*2 ; signal map
|
||||
; WIDGET
|
||||
.db 0, 0 ; opts lo, hi
|
||||
.dw 0 ; X
|
||||
.dw 0 ; Y
|
||||
.dw DISPLAY_WIDTH ; W
|
||||
.dw STYLE_WIN_TITLE_HEIGHT ; H
|
||||
.dw STYLE_WIN_TITLE_FOREGROUND ; front color
|
||||
.dw STYLE_WIN_TITLE_BACKGROUND ; back color
|
||||
.dw STYLE_WIN_FONT*2 ; font
|
||||
.dw testWinHeader_ramdata ; ptr to SDRAM
|
||||
; LABEL
|
||||
.dw testWinHeader_text*2 ; text
|
||||
|
||||
testWinHeader_text:
|
||||
.db "Test-Window", 0
|
||||
testWinHeader_signalmap:
|
||||
.db 0, OBJECT_SIGNAL_CREATE, LOW(Widget_OnCreate), HIGH(Widget_OnCreate)
|
||||
.db 0, WIDGET_SIGNAL_DRAW, LOW(Label_OnDraw), HIGH(Label_OnDraw)
|
||||
.db 0, 0, 0, 0 ; end of table
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -42,7 +42,6 @@ Label_OnDraw:
|
||||
andi r16, (1<<WIDGET_FLAGS_DIRTY_BIT)
|
||||
breq Label_OnDraw_ret
|
||||
|
||||
bigcall Widget_LoadDisplayRegs
|
||||
adiw zh:zl, WIDGET_OFFS_OPTS_LO ; get OPTS low
|
||||
lpm r14, Z
|
||||
sbiw zh:zl, WIDGET_OFFS_OPTS_LO
|
||||
@@ -60,6 +59,7 @@ Label_OnDraw:
|
||||
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
|
||||
@@ -77,14 +77,14 @@ Label_OnDraw_ret:
|
||||
; @param Z byte address of object (for LPM!)
|
||||
; @param R1:R0 background color
|
||||
; @param R3:R2 foreground color
|
||||
; @param R5:R4 X
|
||||
; @param R7:R6 Y
|
||||
; @param R9:R8 widget width
|
||||
; @param R11:R10 widget height
|
||||
; @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
|
||||
|
||||
@@ -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