avr: more work on gui.
This commit is contained in:
@@ -17,7 +17,14 @@
|
||||
.equ LABEL_OFFS_BEGIN = WIDGET_SIZE
|
||||
.equ LABEL_OFFS_TEXTRES_LO = LABEL_OFFS_BEGIN+0
|
||||
.equ LABEL_OFFS_TEXTRES_HI = LABEL_OFFS_BEGIN+1
|
||||
.equ LABEL_SIZE = LABEL_OFFS_BEGIN+2
|
||||
.equ LABEL_OFFS_MINWIDTH_LO = LABEL_OFFS_BEGIN+2
|
||||
.equ LABEL_OFFS_MINWIDTH_HI = LABEL_OFFS_BEGIN+3
|
||||
.equ LABEL_SIZE = LABEL_OFFS_BEGIN+4
|
||||
|
||||
|
||||
; values
|
||||
.equ LABEL_VALUE_TEXTRES = 1
|
||||
.equ LABEL_VALUE_MINWIDTH = 2
|
||||
|
||||
|
||||
|
||||
@@ -150,9 +157,6 @@ Label_OnDraw_ret:
|
||||
; @routine Label_OnGetDefaultWidth @global
|
||||
;
|
||||
; @param Y address of widget
|
||||
; @param r17 value requested
|
||||
; @param xl param1
|
||||
; @param xh param2
|
||||
; @return CFLAG set if signal handled
|
||||
; @return r19:r18 value
|
||||
; @clobbers any, !Y
|
||||
@@ -161,6 +165,14 @@ Label_OnGetDefaultWidth:
|
||||
rcall labelCalcTextWidth
|
||||
mov r18, r12
|
||||
mov r19, r13
|
||||
ldd r16, Y+LABEL_OFFS_MINWIDTH_LO
|
||||
ldd r17, Y+LABEL_OFFS_MINWIDTH_HI
|
||||
cp r18, r16
|
||||
cpc r19, r17
|
||||
brcc Label_OnGetDefaultWidth_addBorders
|
||||
mov r18, r16
|
||||
mov r19, r17
|
||||
Label_OnGetDefaultWidth_addBorders:
|
||||
bigcall Widget_AddOuterStyleBorders ; (r20, r21)
|
||||
sec
|
||||
ret
|
||||
@@ -190,7 +202,57 @@ Label_OnGetDefaultHeight:
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine Label_OnDraw @global
|
||||
; @routine Label_OnSetValueTextRes @global
|
||||
;
|
||||
; @param Y address of widget
|
||||
; @param X id of text ressource
|
||||
; @clobbers r16, r17, r18, r19
|
||||
|
||||
Label_OnSetValueTextRes:
|
||||
std Y+LABEL_OFFS_TEXTRES_LO, xl
|
||||
std Y+LABEL_OFFS_TEXTRES_HI, xh
|
||||
|
||||
; set dirty flag
|
||||
ldd r16, Y+OBJECT_OFFS_FLAGS
|
||||
ori r16, (1<<WIDGET_FLAGS_DIRTY_BIT)
|
||||
std Y+OBJECT_OFFS_FLAGS, r16
|
||||
|
||||
; force layout of this and all parent widgets
|
||||
ldi r16, (1<<WIDGET_FLAGS_LAYOUT_BIT)
|
||||
bigcall OBJ_AddFlagsUp ; (r17, r18, r19)
|
||||
sec
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine Label_OnSetValueMinWidth @global
|
||||
;
|
||||
; @param Y address of widget
|
||||
; @param X id of text ressource
|
||||
; @clobbers r16, r17, r18, r19
|
||||
|
||||
Label_OnSetValueMinWidth:
|
||||
std Y+LABEL_OFFS_MINWIDTH_LO, xl
|
||||
std Y+LABEL_OFFS_MINWIDTH_HI, xh
|
||||
|
||||
; set dirty flag
|
||||
ldd r16, Y+OBJECT_OFFS_FLAGS
|
||||
ori r16, (1<<WIDGET_FLAGS_DIRTY_BIT)
|
||||
std Y+OBJECT_OFFS_FLAGS, r16
|
||||
|
||||
; force layout of this and all parent widgets
|
||||
ldi r16, (1<<WIDGET_FLAGS_LAYOUT_BIT)
|
||||
bigcall OBJ_AddFlagsUp ; (r17, r18, r19)
|
||||
sec
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine labelWriteText
|
||||
;
|
||||
; @param Y address of widget
|
||||
; @clobbers any, !Y
|
||||
@@ -262,6 +324,9 @@ Label_DefaultSignalmap:
|
||||
.dw Widget_DefaultSignalmap*2 ; next table to use
|
||||
; entries
|
||||
.db 0, WIDGET_SIGNAL_DRAW, LOW(Label_OnDraw), HIGH(Label_OnDraw)
|
||||
|
||||
.db LABEL_VALUE_TEXTRES, WIDGET_SIGNAL_SETVALUE, LOW(Label_OnSetValueTextRes), HIGH(Label_OnSetValueTextRes)
|
||||
.db LABEL_VALUE_MINWIDTH, WIDGET_SIGNAL_SETVALUE, LOW(Label_OnSetValueMinWidth), HIGH(Label_OnSetValueMinWidth)
|
||||
.db WIDGET_VALUE_DEFAULT_WIDTH, WIDGET_SIGNAL_GETVALUE, LOW(Label_OnGetDefaultWidth), HIGH(Label_OnGetDefaultWidth)
|
||||
.db WIDGET_VALUE_DEFAULT_HEIGHT, WIDGET_SIGNAL_GETVALUE, LOW(Label_OnGetDefaultHeight), HIGH(Label_OnGetDefaultHeight)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user