From 2cf4e414d2248a4e13aefb9c875e09d178cf10dd Mon Sep 17 00:00:00 2001 From: Martin Preuss Date: Sat, 7 Mar 2026 00:44:56 +0100 Subject: [PATCH] gui2: more work on layout code. --- avr/devices/c03/test/main.asm | 5 +- avr/modules/lcd2/gui2/base/hlayout.asm | 35 +-- avr/modules/lcd2/gui2/base/layout.asm | 32 +++ avr/modules/lcd2/gui2/base/mainwindow.asm | 105 ++++--- avr/modules/lcd2/gui2/base/vlayout.asm | 321 ++++++++++++++++++++++ 5 files changed, 424 insertions(+), 74 deletions(-) create mode 100644 avr/modules/lcd2/gui2/base/vlayout.asm diff --git a/avr/devices/c03/test/main.asm b/avr/devices/c03/test/main.asm index 4f2248a..ccbde37 100644 --- a/avr/devices/c03/test/main.asm +++ b/avr/devices/c03/test/main.asm @@ -286,12 +286,13 @@ test: .include "modules/lcd2/gui2/base/object.asm" .include "modules/lcd2/gui2/base/widget.asm" +.include "modules/lcd2/gui2/base/layout.asm" +.include "modules/lcd2/gui2/base/hlayout.asm" +.include "modules/lcd2/gui2/base/vlayout.asm" .include "modules/lcd2/gui2/base/guiapp.asm" .include "modules/lcd2/gui2/base/mainwindow.asm" .include "modules/lcd2/gui2/base/rootwindow.asm" .include "modules/lcd2/gui2/base/label.asm" -.include "modules/lcd2/gui2/base/layout.asm" -.include "modules/lcd2/gui2/base/hlayout.asm" diff --git a/avr/modules/lcd2/gui2/base/hlayout.asm b/avr/modules/lcd2/gui2/base/hlayout.asm index f59b145..a9b7c74 100644 --- a/avr/modules/lcd2/gui2/base/hlayout.asm +++ b/avr/modules/lcd2/gui2/base/hlayout.asm @@ -148,35 +148,6 @@ HLayout_OnGetDefaultHeight: -; --------------------------------------------------------------------------- -; @routine hLayoutCountFillXChildren -; -; @param Y pointer to widget -; @return r16 number of children with opt WIDGET_OPTSLO_FILLX_BIT -; @clobbers r17, r18, r19 - -hLayoutCountFillXChildren: - clr r16 - push yl - push yh - bigcall OBJ_GetFirstChild -hLayoutCountFillXChildren_loop: - brcc hLayoutCountFillXChildren_done - mov yl, r18 - mov yh, r19 - ldd r17, Y+OBJECT_OFFS_OPTS_LO - sbrc r17, WIDGET_OPTSLO_FILLX_BIT - inc r16 - rcall OBJ_GetNext - rjmp hLayoutCountFillXChildren_loop -hLayoutCountFillXChildren_done: - pop yh - pop yl - ret -; @end - - - ; --------------------------------------------------------------------------- ; @routine hLayoutSetX ; @@ -302,7 +273,10 @@ hLayoutHorizontally: brcs hLayoutHorizontally_setX ; r23:r22=remaining space to distribute - rcall hLayoutCountFillXChildren ; r16=number of expandable child widgets + push r22 + ldi r22, (1<