some minor work on gui/win modules.
This commit is contained in:
@@ -179,6 +179,7 @@
|
|||||||
.include "modules/lcd2/win/defs.asm"
|
.include "modules/lcd2/win/defs.asm"
|
||||||
.include "modules/lcd2/win/object.asm"
|
.include "modules/lcd2/win/object.asm"
|
||||||
.include "modules/lcd2/win/widget.asm"
|
.include "modules/lcd2/win/widget.asm"
|
||||||
|
.include "modules/lcd2/win/gui.asm"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
13
avr/modules/lcd2/gui/TODO
Normal file
13
avr/modules/lcd2/gui/TODO
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
|
||||||
|
|
||||||
|
- Screen
|
||||||
|
- functions:
|
||||||
|
- show
|
||||||
|
- unshow
|
||||||
|
- touch
|
||||||
|
- key
|
||||||
|
- activeAreas:
|
||||||
|
- x, y, w, h (in FLASH)
|
||||||
|
- only small variable data in SRAM, no need for heap!
|
||||||
|
|
||||||
|
|
||||||
37
avr/modules/lcd2/gui/defs.asm
Normal file
37
avr/modules/lcd2/gui/defs.asm
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
; ***************************************************************************
|
||||||
|
; copyright : (C) 2025 by Martin Preuss
|
||||||
|
; email : martin@libchipcard.de
|
||||||
|
;
|
||||||
|
; ***************************************************************************
|
||||||
|
; * This file is part of the project "AqHome". *
|
||||||
|
; * Please see toplevel file COPYING of that project for license details. *
|
||||||
|
; ***************************************************************************
|
||||||
|
|
||||||
|
#ifndef AQH_AVR_GUI_H
|
||||||
|
#define AQH_AVR_GUI_H
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.equ SCR_OFFS_HANDLER_LO = 0
|
||||||
|
.equ SCR_OFFS_HANDLER_HI = 1
|
||||||
|
.equ SCR_OFFS_X_LO = 2
|
||||||
|
.equ SCR_OFFS_X_HI = 3
|
||||||
|
.equ SCR_OFFS_Y_LO = 4
|
||||||
|
.equ SCR_OFFS_Y_HI = 5
|
||||||
|
.equ SCR_OFFS_WIDTH_LO = 6
|
||||||
|
.equ SCR_OFFS_WIDTH_HI = 7
|
||||||
|
.equ SCR_OFFS_HEIGHT_LO = 8
|
||||||
|
.equ SCR_OFFS_HEIGHT_HI = 9
|
||||||
|
.equ SCR_OFFS_BG_COL_LO = 10
|
||||||
|
.equ SCR_OFFS_BG_COL_HI = 11
|
||||||
|
.equ SCR_OFFS_FG_COL_LO = 12
|
||||||
|
.equ SCR_OFFS_FG_COL_HI = 13
|
||||||
|
.equ SCR_OFFS_FONT_LO = 14
|
||||||
|
.equ SCR_OFFS_FONT_HI = 15
|
||||||
|
.equ SCR_SIZE = 16
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
@@ -69,9 +69,6 @@
|
|||||||
.equ WID_OPTIONS1_BIT_VALIGN0 = 4 ; 00: top, 01: bottom, 11: center
|
.equ WID_OPTIONS1_BIT_VALIGN0 = 4 ; 00: top, 01: bottom, 11: center
|
||||||
.equ WID_OPTIONS1_BIT_VALIGN1 = 5
|
.equ WID_OPTIONS1_BIT_VALIGN1 = 5
|
||||||
|
|
||||||
.equ WID_OPTIONS1_BIT_ALIGN_HCENTER = 4
|
|
||||||
.equ WID_OPTIONS1_BIT_ALIGN_VCENTER = 5
|
|
||||||
|
|
||||||
.equ WID_OPTIONS1_BIT_FIXED_WIDTH = 6
|
.equ WID_OPTIONS1_BIT_FIXED_WIDTH = 6
|
||||||
.equ WID_OPTIONS1_BIT_FIXED_HEIGHT = 7
|
.equ WID_OPTIONS1_BIT_FIXED_HEIGHT = 7
|
||||||
|
|
||||||
|
|||||||
22
avr/modules/lcd2/win/gui.asm
Normal file
22
avr/modules/lcd2/win/gui.asm
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
; ***************************************************************************
|
||||||
|
; copyright : (C) 2025 by Martin Preuss
|
||||||
|
; email : martin@libchipcard.de
|
||||||
|
;
|
||||||
|
; ***************************************************************************
|
||||||
|
; * This file is part of the project "AqHome". *
|
||||||
|
; * Please see toplevel file COPYING of that project for license details. *
|
||||||
|
; ***************************************************************************
|
||||||
|
|
||||||
|
|
||||||
|
.dseg
|
||||||
|
|
||||||
|
guiRootWidget: .byte 2
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.cseg
|
||||||
|
|
||||||
|
GUI_Init:
|
||||||
|
ret
|
||||||
|
; @end
|
||||||
|
|
||||||
@@ -8,6 +8,10 @@
|
|||||||
; ***************************************************************************
|
; ***************************************************************************
|
||||||
|
|
||||||
|
|
||||||
|
.cseg
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
; ---------------------------------------------------------------------------
|
; ---------------------------------------------------------------------------
|
||||||
; @routine OBJ_Init @global
|
; @routine OBJ_Init @global
|
||||||
;
|
;
|
||||||
|
|||||||
@@ -160,11 +160,11 @@ wVLayout:
|
|||||||
rcall wSetChildrenHeightsFromMinHeights
|
rcall wSetChildrenHeightsFromMinHeights
|
||||||
|
|
||||||
; count number of expandable children
|
; count number of expandable children
|
||||||
ldi r16, WID_OPTIONS1_BIT_STRETCH_Y
|
ldi r16, (1<<WID_OPTIONS1_BIT_STRETCH_Y) ; value
|
||||||
ldi r17, WID_OPTIONS1_BIT_STRETCH_Y
|
ldi r17, (1<<WID_OPTIONS1_BIT_STRETCH_Y) ; mask
|
||||||
rcall widgetCountVisibleChildrenWithOptions1 ; (r18, r24, r25, X)
|
rcall widgetCountVisibleChildrenWithOptions1 ; r18=number of matching visible children (r24, r25, X)
|
||||||
tst r18
|
tst r18
|
||||||
breq wVLayout_Ydone ; no expandable children, nothing to distribute
|
breq wVLayout_Ydone ; no expandable children, nothing to distribute
|
||||||
; determine full height needed by all children
|
; determine full height needed by all children
|
||||||
push r18 ; number of visible expandable child widgets
|
push r18 ; number of visible expandable child widgets
|
||||||
clr r17 ; mask=0 -> count all visible children
|
clr r17 ; mask=0 -> count all visible children
|
||||||
@@ -187,7 +187,7 @@ wVLayout:
|
|||||||
sub r20, r18 ; r21:r20 = HEIGHT-SUM_OF_VIS_CHILDREN_HEIGHTS
|
sub r20, r18 ; r21:r20 = HEIGHT-SUM_OF_VIS_CHILDREN_HEIGHTS
|
||||||
sbc r21, r19
|
sbc r21, r19
|
||||||
brcc wVLayout_heightTooSmall
|
brcc wVLayout_heightTooSmall
|
||||||
breq wVLayout_yDone ; nothing to distribute
|
breq wVLayout_yDone ; nothing to distribute
|
||||||
bigcall Utils_Divu16_16_16 ; r17:r16 = r21:r20 / r23:r22
|
bigcall Utils_Divu16_16_16 ; r17:r16 = r21:r20 / r23:r22
|
||||||
; add additional pixel to heights of expandable child widgets
|
; add additional pixel to heights of expandable child widgets
|
||||||
rcall wAddToHeightsOfExpandableVisibleChildren
|
rcall wAddToHeightsOfExpandableVisibleChildren
|
||||||
|
|||||||
Reference in New Issue
Block a user