gui2: X-layout works now!
This commit is contained in:
@@ -277,14 +277,14 @@ mLayoutCallbackSetYTmp:
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine mLayoutCallbackPositionX
|
||||
; @routine mLayoutCallbackGridX
|
||||
;
|
||||
; @param Y widget
|
||||
; @param r22 spacing between widgets
|
||||
; @param X current X pos
|
||||
; @clobbers r10-r13, r16-r21
|
||||
|
||||
mLayoutCallbackPositionX:
|
||||
mLayoutCallbackGridX:
|
||||
ldd r20, Y+WIDGET_OFFS_TMP_LO
|
||||
ldd r21, Y+WIDGET_OFFS_TMP_HI
|
||||
std Y+WIDGET_OFFS_X_LO, xl ; set new X
|
||||
@@ -296,40 +296,39 @@ mLayoutCallbackPositionX:
|
||||
sub xh, r22
|
||||
clc
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
; ldd r16, Y+OBJECT_OFFS_FLAGS
|
||||
; sbrs r16, WIDGET_FLAGS_VISIBLE_BIT
|
||||
; rjmp mLayoutCallbackPositionX_ret
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine mLayoutCallbackGridX
|
||||
;
|
||||
; @param Y widget
|
||||
; @param r22 spacing between widgets
|
||||
; @clobbers r10-r13, r16-r21, X
|
||||
|
||||
mLayoutCallbackPackX:
|
||||
ldd r10, Y+WIDGET_OFFS_TMP_LO ; calculated cell width
|
||||
ldd r11, Y+WIDGET_OFFS_TMP_HI
|
||||
ldd r12, Y+WIDGET_OFFS_WIDTH_LO ; default width
|
||||
ldd r13, Y+WIDGET_OFFS_WIDTH_HI
|
||||
ldd r17, Y+WIDGET_OFFS_PACK
|
||||
andi r17, 3 ; WIDGET_PACK_HSELF0_BIT = 0, no shift necessary
|
||||
push r10 ; cell width
|
||||
push r11
|
||||
rcall mLayoutPackCell ; R21:R20=relative pos, R19:R18=new size (r17, r18, r19)
|
||||
pop r11
|
||||
pop r10
|
||||
add r20, xl
|
||||
adc r21, xh
|
||||
std Y+WIDGET_OFFS_X_LO, r20 ; set new X
|
||||
std Y+WIDGET_OFFS_X_HI, r21
|
||||
std Y+WIDGET_OFFS_WIDTH_LO, r18 ; set new width
|
||||
rcall mLayoutPackCell ; R21:R20=relative pos, R19:R18=new size (r16, r17, r18, r19)
|
||||
ldd xl, Y+WIDGET_OFFS_X_LO
|
||||
ldd xh, Y+WIDGET_OFFS_X_HI
|
||||
add xl, r20
|
||||
adc xh, r21
|
||||
std Y+WIDGET_OFFS_X_LO, xl
|
||||
std Y+WIDGET_OFFS_X_HI, xh
|
||||
std Y+WIDGET_OFFS_WIDTH_LO, r18
|
||||
std Y+WIDGET_OFFS_WIDTH_HI, r19
|
||||
add xl, r10 ; advance X
|
||||
adc xh, r11
|
||||
add xl, r22 ; add spacing
|
||||
adc xh, r22
|
||||
sub xh, r22
|
||||
mLayoutCallbackPositionX_ret:
|
||||
clc
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine mLayoutCallbackPositionY
|
||||
;
|
||||
@@ -362,7 +361,7 @@ ret
|
||||
andi r17, 3
|
||||
push r18
|
||||
push r19
|
||||
rcall mLayoutPackCell ; R21:R20=relative pos (r17, r18, r19)
|
||||
rcall mLayoutPackCell ; R21:R20=relative pos (r16, r17, r18, r19)
|
||||
pop r19
|
||||
pop r18
|
||||
add r20, xl
|
||||
@@ -555,7 +554,7 @@ mLayoutCallbackGetMaxTmp_ret:
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine mLayoutCountChildrenMatchingPackContiguous
|
||||
; @routine mLayoutCountMatchingPackContiguous
|
||||
;
|
||||
; @param Y object whose TMP value is to be added
|
||||
; @param r22 mask for WIDGET_OFFS_PACK
|
||||
@@ -564,7 +563,7 @@ mLayoutCallbackGetMaxTmp_ret:
|
||||
; @return r20 number of matching children
|
||||
; @clobbers r18, r19
|
||||
|
||||
mLayoutCountChildrenMatchingPackContiguous:
|
||||
mLayoutCountMatchingPackContiguous:
|
||||
push yl
|
||||
push yh
|
||||
clr r20
|
||||
@@ -629,7 +628,7 @@ mLayoutCallbackCountChildrenMatchingPack_ret:
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine mLayoutExpandChildrenMatchingPackContiguous
|
||||
; @routine mLayoutExpandMatchingPackContiguous
|
||||
;
|
||||
; @param Y object whose TMP value is to be added
|
||||
; @param r21:r20 value to add to TMP
|
||||
@@ -638,12 +637,11 @@ mLayoutCallbackCountChildrenMatchingPack_ret:
|
||||
; @param r25 number of widgets to handle
|
||||
; @clobbers r18, r19
|
||||
|
||||
mLayoutExpandChildrenMatchingPackContiguous:
|
||||
mLayoutExpandMatchingPackContiguous:
|
||||
push yl
|
||||
push yh
|
||||
clr r20
|
||||
ldi zl, LOW(mLayoutCallbackExpandChildrenMatchingPack)
|
||||
ldi zh, HIGH(mLayoutCallbackExpandChildrenMatchingPack)
|
||||
ldi zl, LOW(mLayoutCallbackExpandMatchingPack)
|
||||
ldi zh, HIGH(mLayoutCallbackExpandMatchingPack)
|
||||
rcall mLayoutForEveryObjectContiguous ; (r18, r19, Y)
|
||||
pop yh
|
||||
pop yl
|
||||
@@ -653,7 +651,7 @@ mLayoutExpandChildrenMatchingPackContiguous:
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine mLayoutExpandChildrenMatchingPackSkipped
|
||||
; @routine mLayoutExpandMatchingPackSkipped
|
||||
;
|
||||
; @param Y object whose TMP value is to be added
|
||||
; @param r21:r20 value to add to TMP
|
||||
@@ -662,12 +660,11 @@ mLayoutExpandChildrenMatchingPackContiguous:
|
||||
; @param r25 number of widgets to skip
|
||||
; @clobbers r18, r19
|
||||
|
||||
mLayoutExpandChildrenMatchingPackSkipped:
|
||||
mLayoutExpandMatchingPackSkipped:
|
||||
push yl
|
||||
push yh
|
||||
clr r20
|
||||
ldi zl, LOW(mLayoutCallbackExpandChildrenMatchingPack)
|
||||
ldi zh, HIGH(mLayoutCallbackExpandChildrenMatchingPack)
|
||||
ldi zl, LOW(mLayoutCallbackExpandMatchingPack)
|
||||
ldi zh, HIGH(mLayoutCallbackExpandMatchingPack)
|
||||
rcall mLayoutForEveryObjectSkipped ; (r18, r19, Y)
|
||||
pop yh
|
||||
pop yl
|
||||
@@ -677,7 +674,7 @@ mLayoutExpandChildrenMatchingPackSkipped:
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine mLayoutCallbackExpandChildrenMatchingPack
|
||||
; @routine mLayoutCallbackExpandMatchingPack
|
||||
;
|
||||
; @param Y object whose TMP value is to be added
|
||||
; @param r21:r20 space to add to expandable widgets
|
||||
@@ -686,21 +683,21 @@ mLayoutExpandChildrenMatchingPackSkipped:
|
||||
; @return CFLAG clear (to not abort the loop function)
|
||||
; @clobbers r18, r19
|
||||
|
||||
mLayoutCallbackExpandChildrenMatchingPack:
|
||||
mLayoutCallbackExpandMatchingPack:
|
||||
ldd r18, Y+OBJECT_OFFS_FLAGS
|
||||
sbrs r18, WIDGET_FLAGS_VISIBLE_BIT
|
||||
rjmp mLayoutCallbackExpandChildrenMatchingPack_ret
|
||||
rjmp mLayoutCallbackExpandMatchingPack_ret
|
||||
ldd r18, Y+WIDGET_OFFS_PACK
|
||||
eor r18, r23
|
||||
and r18, r22
|
||||
brne mLayoutCallbackExpandChildrenMatchingPack_ret
|
||||
brne mLayoutCallbackExpandMatchingPack_ret
|
||||
ldd r18, Y+WIDGET_OFFS_TMP_LO
|
||||
ldd r19, Y+WIDGET_OFFS_TMP_HI
|
||||
add r18, r20
|
||||
adc r19, r21
|
||||
std Y+WIDGET_OFFS_TMP_LO, r18
|
||||
std Y+WIDGET_OFFS_TMP_HI, r19
|
||||
mLayoutCallbackExpandChildrenMatchingPack_ret:
|
||||
mLayoutCallbackExpandMatchingPack_ret:
|
||||
clc
|
||||
ret
|
||||
; @end
|
||||
@@ -871,7 +868,7 @@ mLayoutCallbackCopyTmpToHeight:
|
||||
; @param r22 spacing between widgets
|
||||
; @param r23 border at beginning and and
|
||||
; @return r21:r20 total size in the given dimension including borders and inter-widget spacing
|
||||
; @clobbers r18, r19, r25
|
||||
; @clobbers r18, r19
|
||||
|
||||
mLayoutSumContiguous:
|
||||
push yl
|
||||
@@ -880,7 +877,7 @@ mLayoutSumContiguous:
|
||||
clr r21
|
||||
ldi zl, LOW(mLayoutCallbackAddToSum)
|
||||
ldi zh, HIGH(mLayoutCallbackAddToSum)
|
||||
rcall mLayoutForEveryObjectContiguous ; (r18, r19, r25, Y)
|
||||
rcall mLayoutForEveryObjectContiguous ; (r18, r19, Y)
|
||||
sub r20, r22 ; undo last adding inter-widget space
|
||||
sbc r21, r22
|
||||
add r21, r22
|
||||
@@ -1081,18 +1078,19 @@ mLayoutGetBorders:
|
||||
; @param r22 spacing (between widgets)
|
||||
; @return R21:R20 pos
|
||||
; @return R19:R18 new size of widget
|
||||
; @clobbers r17, r18, r19
|
||||
; @clobbers r16, r17, r18, r19
|
||||
|
||||
mLayoutPackCell:
|
||||
clr r20 ; preset pos
|
||||
clr r21
|
||||
mov r18, r13 ; preset widget size
|
||||
mov r19, r12
|
||||
mov r18, r12 ; preset widget size
|
||||
mov r19, r13
|
||||
|
||||
; subtract borders from cell size
|
||||
clr r16
|
||||
sub r10, r22 ; subtract spacing
|
||||
sbc r11, r22
|
||||
add r11, r22
|
||||
sbc r11, r16
|
||||
brcs mLayoutPackCell_ret
|
||||
|
||||
andi r17, 3 ; only 2 bits pack mode
|
||||
cpi r17, WIDGET_PACK_FILLED
|
||||
|
||||
Reference in New Issue
Block a user