; *************************************************************************** ; copyright : (C) 2026 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_GUI2_WIDGET_ASM #define AQH_AVR_GUI2_WIDGET_ASM ; *************************************************************************** ; defines ; Widget in flash .equ WIDGET_OFFS_WIDGET = OBJECT_SIZE .equ WIDGET_OFFS_OPTS_LO = WIDGET_OFFS_WIDGET+0 .equ WIDGET_OFFS_OPTS_HI = WIDGET_OFFS_WIDGET+1 .equ WIDGET_OFFS_X_LO = WIDGET_OFFS_WIDGET+2 .equ WIDGET_OFFS_X_HI = WIDGET_OFFS_WIDGET+3 .equ WIDGET_OFFS_Y_LO = WIDGET_OFFS_WIDGET+4 .equ WIDGET_OFFS_Y_HI = WIDGET_OFFS_WIDGET+5 .equ WIDGET_OFFS_WIDTH_LO = WIDGET_OFFS_WIDGET+6 .equ WIDGET_OFFS_WIDTH_HI = WIDGET_OFFS_WIDGET+7 .equ WIDGET_OFFS_HEIGHT_LO = WIDGET_OFFS_WIDGET+8 .equ WIDGET_OFFS_HEIGHT_HI = WIDGET_OFFS_WIDGET+9 .equ WIDGET_OFFS_FRONTCOL_LO = WIDGET_OFFS_WIDGET+10 .equ WIDGET_OFFS_FRONTCOL_HI = WIDGET_OFFS_WIDGET+11 .equ WIDGET_OFFS_BACKCOL_LO = WIDGET_OFFS_WIDGET+12 .equ WIDGET_OFFS_BACKCOL_HI = WIDGET_OFFS_WIDGET+13 .equ WIDGET_OFFS_FONT_LO = WIDGET_OFFS_WIDGET+14 .equ WIDGET_OFFS_FONT_HI = WIDGET_OFFS_WIDGET+15 .equ WIDGET_OFFS_SDRAM_LO = WIDGET_OFFS_WIDGET+16 .equ WIDGET_OFFS_SDRAM_HI = WIDGET_OFFS_WIDGET+17 .equ WIDGET_SIZE = WIDGET_OFFS_WIDGET+18 ; SDRAM data for widget .equ WIDGET_SD_OFFS_FLAGS = 0 .equ WIDGET_SD_SIZE = 1 ; widget opts_lo .equ WIDGET_OPTSLO_BORDER_BIT = 7 .equ WIDGET_OPTSLO_INPUT_BIT = 6 ; TOUCH, KEY .equ WIDGET_OPTSLO_TIMER_BIT = 5 .equ WIDGET_OPTSLO_MSGRECV_BIT = 4 .equ WIDGET_OPTSHI_HALIGNRIGHT_BIT = 7 .equ WIDGET_OPTSHI_HALIGNCENTER_BIT = 6 .equ WIDGET_OPTSHI_VALIGNBOTTOM_BIT = 5 .equ WIDGET_OPTSHI_VALIGNCENTER_BIT = 4 ; widget flags .equ WIDGET_FLAGS_ACTIVE_BIT = 7 .equ WIDGET_FLAGS_TOUCH_BIT = 6 .equ WIDGET_FLAGS_DIRTY_BIT = 5 .equ WIDGET_FLAGS_PRESSED_BIT = 4 ; SDRAM data for signal WIDGET_SIGNAL_TOUCH .equ WIDGET_DATA_TOUCH_OFFS_X_LO = 0 .equ WIDGET_DATA_TOUCH_OFFS_X_HI = 1 .equ WIDGET_DATA_TOUCH_OFFS_Y_LO = 2 .equ WIDGET_DATA_TOUCH_OFFS_Y_HI = 3 .equ WIDGET_DATA_TOUCH_OFFS_STATE = 4 .equ WIDGET_DATA_TOUCH_SIZE = 5 ; signals .equ WIDGET_SIGNAL_SHOW = OBJECT_SIGNAL_NEXTFREE+0 .equ WIDGET_SIGNAL_HIDE = OBJECT_SIGNAL_NEXTFREE+1 .equ WIDGET_SIGNAL_DRAW = OBJECT_SIGNAL_NEXTFREE+2 .equ WIDGET_SIGNAL_TOUCH = OBJECT_SIGNAL_NEXTFREE+3 .equ WIDGET_SIGNAL_CLICKED = OBJECT_SIGNAL_NEXTFREE+4 .equ WIDGET_SIGNAL_NEXTFREE = OBJECT_SIGNAL_NEXTFREE+5 ; args to Widget_AlignPos .equ WIDGET_1DALIGN_END_BIT = 0 .equ WIDGET_1DALIGN_CENTER_BIT = 1 .equ WIDGET_1DALIGN_BORDER_BIT = 2 ; *************************************************************************** ; code .cseg ; --------------------------------------------------------------------------- ; @routine Widget_Init @global ; ; @param Z byte address of widget object (for LPM!) Widget_Init: rcall Widget_GetSdramPtr ; (none) clr r16 ori r16, (1<