; *************************************************************************** ; 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_BUTTON_ASM #define AQH_AVR_GUI_BUTTON_ASM .cseg ; --------------------------------------------------------------------------- ; @routine Button_Draw_Up @global ; ; Draw button in state "UP". ; ; @param Y pointer to window in SDRAM ; @param Z pointer to button data in FLASH (byte address for LPM) ; @clobbers any, !Y Button_Draw_Up: clr r14 rjmp buttonDraw ; @end ; --------------------------------------------------------------------------- ; @routine Button_Draw_Down @global ; ; Draw button in state "DOWN". ; ; @param Y pointer to window in SDRAM ; @param Z pointer to button data in FLASH (byte address for LPM) ; @clobbers any, !Y Button_Draw_Down: ldi r16, 1 mov r14, r16 rjmp buttonDraw ; @end ; --------------------------------------------------------------------------- ; @routine buttonDraw ; ; @param Y pointer to window in SDRAM ; @param Z pointer to button data in FLASH (byte address for LPM) ; @param r14 0 if normal, 1 if pressed state ; @clobbers any, !Y buttonDraw: lpm r4, Z+ ; X lpm r5, Z+ lpm r6, Z+ ; Y lpm r7, Z+ lpm r8, Z+ ; W lpm r9, Z+ lpm r10, Z+ ; H lpm r11, Z+ ; clear background push zl push zh tst r14 brne buttonDraw_bgDown ldi r16, LOW(STYLE_BUTTON_COL_BG_NORM) mov r2, r16 ldi r16, HIGH(STYLE_BUTTON_COL_BG_NORM) mov r3, r16 rjmp buttonDraw_bgFill buttonDraw_bgDown: ldi r16, LOW(STYLE_BUTTON_COL_BG_PRESSED) mov r2, r16 ldi r16, HIGH(STYLE_BUTTON_COL_BG_PRESSED) mov r3, r16 buttonDraw_bgFill: bigcall Display_FillRect pop zh pop zl ; draw border push zl push zh ldi r16, LOW(STYLE_BUTTON_COL_BORDER) mov r2, r16 ldi r16, HIGH(STYLE_BUTTON_COL_BORDER) mov r3, r16 bigcall Display_DrawRect pop zh pop zl ldi r16, 2 clr r17 add r4, r16 ; x+=2 adc r5, r17 add r6, r16 ; y+=2 adc r7, r17 lpm r16, Z+ ; text lpm r17, Z+ mov zl, r16 mov zh, r17 ; set text colors tst r14 brne buttonDraw_textDown ; set background color ldi r16, LOW(STYLE_BUTTON_COL_BG_NORM) mov r0, r16 ldi r16, HIGH(STYLE_BUTTON_COL_BG_NORM) mov r1, r16 ; set foreground color ldi r16, LOW(STYLE_BUTTON_COL_FG_NORM) mov r2, r16 ldi r16, HIGH(STYLE_BUTTON_COL_FG_NORM) mov r3, r16 rjmp buttonDraw_textDraw buttonDraw_textDown: ; set background color ldi r16, LOW(STYLE_BUTTON_COL_BG_PRESSED) mov r0, r16 ldi r16, HIGH(STYLE_BUTTON_COL_BG_PRESSED) mov r1, r16 ; set foreground color ldi r16, LOW(STYLE_BUTTON_COL_FG_PRESSED) mov r2, r16 ldi r16, HIGH(STYLE_BUTTON_COL_FG_PRESSED) mov r3, r16 buttonDraw_textDraw: bigcall Window_DrawColorTextFlash ret ; @end #endif