diff --git a/avr/devices/c03/main/style.asm b/avr/devices/c03/main/style.asm index 33e5629..7719828 100644 --- a/avr/devices/c03/main/style.asm +++ b/avr/devices/c03/main/style.asm @@ -12,8 +12,57 @@ +; title window style +.equ STYLE_TITLE_BGCOL = DISPLAY_COLOR_NAVY +.equ STYLE_TITLE_FGCOL = DISPLAY_COLOR_WHITE +.equ STYLE_TITLE_BORDERCOL = DISPLAY_COLOR_WHITE +.equ STYLE_TITLE_SHADOWCOL = DISPLAY_COLOR_DARKGREY +.equ STYLE_TITLE_FONT = ili9341Font12x16_1 +.equ STYLE_TITLE_FONT_WIDTH = 12 +.equ STYLE_TITLE_FONT_HEIGHT = 16 + + +; window style +.equ STYLE_WIN_BGCOL_NORM = DISPLAY_COLOR_LIGHTGREY +.equ STYLE_WIN_FGCOL_NORM = DISPLAY_COLOR_BLACK +.equ STYLE_WIN_BORDERCOL_NORM = DISPLAY_COLOR_BLACK +.equ STYLE_WIN_SHADOWCOL_NORM = DISPLAY_COLOR_DARKGREY + +.equ STYLE_WIN_BGCOL_ACTIVATED = DISPLAY_COLOR_NAVY +.equ STYLE_WIN_FGCOL_ACTIVATED = DISPLAY_COLOR_WHITE +.equ STYLE_WIN_BORDERCOL_ACTIVATED = DISPLAY_COLOR_WHITE +.equ STYLE_WIN_SHADOWCOL_ACTIVATED = DISPLAY_COLOR_DARKGREY + +.equ STYLE_WIN_FONT = ili9341Font12x16_1 +.equ STYLE_WIN_FONT_WIDTH = 12 +.equ STYLE_WIN_FONT_HEIGHT = 16 + + +; button style +.equ STYLE_BUTTON_BGCOL_NORM = DISPLAY_COLOR_WHITE +.equ STYLE_BUTTON_FGCOL_NORM = DISPLAY_COLOR_BLACK +.equ STYLE_BUTTON_BORDERCOL_NORM = DISPLAY_COLOR_BLACK +.equ STYLE_BUTTON_SHADOWCOL_NORM = DISPLAY_COLOR_DARKGREY + +.equ STYLE_BUTTON_BGCOL_ACTIVATED = DISPLAY_COLOR_NAVY +.equ STYLE_BUTTON_FGCOL_ACTIVATED = DISPLAY_COLOR_WHITE +.equ STYLE_BUTTON_BORDERCOL_ACTIVATED = DISPLAY_COLOR_WHITE +.equ STYLE_BUTTON_SHADOWCOL_ACTIVATED = DISPLAY_COLOR_DARKGREY + +.equ STYLE_BUTTON_FONT = ili9341Font12x16_1 +.equ STYLE_BUTTON_FONT_WIDTH = 12 +.equ STYLE_BUTTON_FONT_HEIGHT = 16 + + + +.equ STYLE_WIN_TITLE_HEIGHT = (STYLE_TITLE_FONT_HEIGHT+4) + + + +; deprecated .equ STYLE_WIN_TITLE_BACKGROUND = DISPLAY_COLOR_NAVY .equ STYLE_WIN_TITLE_FOREGROUND = DISPLAY_COLOR_WHITE + .equ STYLE_BUTTON_COL_BORDER = DISPLAY_COLOR_BLACK .equ STYLE_BUTTON_COL_BG_NORM = DISPLAY_COLOR_WHITE .equ STYLE_BUTTON_COL_BG_PRESSED = DISPLAY_COLOR_NAVY @@ -22,11 +71,68 @@ .equ STYLE_WIN_BACKGROUND = DISPLAY_COLOR_LIGHTGREY .equ STYLE_WIN_FOREGROUND = DISPLAY_COLOR_BLACK -.equ STYLE_WIN_FONT = ili9341Font12x16_1 -.equ STYLE_WIN_FONT_WIDTH = 12 -.equ STYLE_WIN_FONT_HEIGHT = 16 -.equ STYLE_WIN_TITLE_HEIGHT = (STYLE_WIN_FONT_HEIGHT+4) + + + + +; *************************************************************************** +; data in FLASH + +.cseg + +DefaultStyle_Window: + .dw STYLE_WIN_FGCOL_NORM ; frontCol_norm + .dw STYLE_WIN_BGCOL_NORM ; backCol_norm + .dw STYLE_WIN_BORDERCOL_NORM ; borderCol_norm + .dw STYLE_WIN_SHADOWCOL_NORM ; shadowCol_norm + + .dw STYLE_WIN_FGCOL_ACTIVATED ; frontCol_activated + .dw STYLE_WIN_BGCOL_ACTIVATED ; backCol_activated + .dw STYLE_WIN_BORDERCOL_ACTIVATED ; borderCol_activated + .dw STYLE_WIN_SHADOWCOL_ACTIVATED ; shadowCol_activated + + .db 2, 2 ; outerBorderSize, innerBorderSize + .dw (STYLE_WIN_FONT*2) ; font + .db STYLE_WIN_FONT_WIDTH, \ + STYLE_WIN_FONT_HEIGHT ; charWidth, charHeight + + + +DefaultStyle_Button: + .dw STYLE_BUTTON_FGCOL_NORM ; frontCol_norm + .dw STYLE_BUTTON_BGCOL_NORM ; backCol_norm + .dw STYLE_BUTTON_BORDERCOL_NORM ; borderCol_norm + .dw STYLE_BUTTON_SHADOWCOL_NORM ; shadowCol_norm + + .dw STYLE_BUTTON_FGCOL_ACTIVATED ; frontCol_activated + .dw STYLE_BUTTON_BGCOL_ACTIVATED ; backCol_activated + .dw STYLE_BUTTON_BORDERCOL_ACTIVATED ; borderCol_activated + .dw STYLE_BUTTON_SHADOWCOL_ACTIVATED ; shadowCol_activated + + .db 2, 2 ; outerBorderSize, innerBorderSize + .dw (STYLE_BUTTON_FONT*2) ; font + .db STYLE_BUTTON_FONT_WIDTH, \ + STYLE_BUTTON_FONT_HEIGHT ; charWidth, charHeight + + +DefaultStyle_SpacyButton: + .dw STYLE_BUTTON_FGCOL_NORM ; frontCol_norm + .dw STYLE_BUTTON_BGCOL_NORM ; backCol_norm + .dw STYLE_BUTTON_BORDERCOL_NORM ; borderCol_norm + .dw STYLE_BUTTON_SHADOWCOL_NORM ; shadowCol_norm + + .dw STYLE_BUTTON_FGCOL_ACTIVATED ; frontCol_activated + .dw STYLE_BUTTON_BGCOL_ACTIVATED ; backCol_activated + .dw STYLE_BUTTON_BORDERCOL_ACTIVATED ; borderCol_activated + .dw STYLE_BUTTON_SHADOWCOL_ACTIVATED ; shadowCol_activated + + .db 8, 2 ; outerBorderSize, innerBorderSize + .dw (STYLE_BUTTON_FONT*2) ; font + .db STYLE_BUTTON_FONT_WIDTH, \ + STYLE_BUTTON_FONT_HEIGHT ; charWidth, charHeight + + diff --git a/avr/modules/lcd2/gui/base/button.asm b/avr/modules/lcd2/gui/base/button.asm index 63d0fca..a36bd6e 100644 --- a/avr/modules/lcd2/gui/base/button.asm +++ b/avr/modules/lcd2/gui/base/button.asm @@ -104,6 +104,31 @@ Button_Init: +; --------------------------------------------------------------------------- +; @routine Button_OnSetValueStyle @global +; +; @param Y address of widget +; @param X=new style + +Button_OnSetValueStyle: + std Y+WIDGET_OFFS_STYLE_LO, xl + std Y+WIDGET_OFFS_STYLE_HI, xh + bigcall OBJ_GetFirstChild + brcc Button_OnSetValueStyle_ret + push yl + push yh + mov yl, r18 + mov yh, r19 + bigcall Widget_SetStyle ; set style in child + pop yh + pop yl +Button_OnSetValueStyle_ret: + sec + ret +; @end + + + ; --------------------------------------------------------------------------- ; @routine Button_OnTouchBegin @global ; @@ -340,6 +365,7 @@ Button_DefaultSignalmap: .db 0, WIDGET_SIGNAL_LAYOUT, LOW(Button_OnLayout), HIGH(Button_OnLayout) .db WIDGET_VALUE_DEFAULT_WIDTH, WIDGET_SIGNAL_GETVALUE, LOW(Button_OnGetDefaultWidth), HIGH(Button_OnGetDefaultWidth) .db WIDGET_VALUE_DEFAULT_HEIGHT, WIDGET_SIGNAL_GETVALUE, LOW(Button_OnGetDefaultHeight), HIGH(Button_OnGetDefaultHeight) + .db WIDGET_VALUE_STYLE, WIDGET_SIGNAL_SETVALUE, LOW(Button_OnSetValueStyle), HIGH(Button_OnSetValueStyle) .db 0, 0, 0, 0 ; end of table diff --git a/avr/modules/lcd2/gui/base/cwidget.asm b/avr/modules/lcd2/gui/base/cwidget.asm index f13aa2f..49f4768 100644 --- a/avr/modules/lcd2/gui/base/cwidget.asm +++ b/avr/modules/lcd2/gui/base/cwidget.asm @@ -239,14 +239,17 @@ cWidgetMkChildWidget_typeOk: ; set style (if any) adiw zh:zl, CWIDGETCFG_OFFS_WIDGET_STYLE_LO - lpm r16, Z+ - lpm r17, Z + lpm xl, Z+ + lpm xh, Z sbiw zh:zl, (CWIDGETCFG_OFFS_WIDGET_STYLE_LO+1) - mov r18, r16 - or r18, r17 + mov r18, xl + or r18, xh breq cWidgetMkChildWidget_setminmax - std Y+WIDGET_OFFS_STYLE_LO, r16 - std Y+WIDGET_OFFS_STYLE_HI, r17 + push zl + push zh + bigcall Widget_SetStyle + pop zh + pop zl cWidgetMkChildWidget_setminmax: adiw zh:zl, CWIDGETCFG_OFFS_WIDGET_FLAGS lpm r16, Z diff --git a/avr/modules/lcd2/gui/base/mainwindow.asm b/avr/modules/lcd2/gui/base/mainwindow.asm index 25353ac..c361d99 100644 --- a/avr/modules/lcd2/gui/base/mainwindow.asm +++ b/avr/modules/lcd2/gui/base/mainwindow.asm @@ -239,9 +239,9 @@ mainWindowCreateContentWidget: bigcall VLayout_new brcc mainWindowCreateContentWidget_done ; set style for title widget - ldi r16, LOW(MainWindow_ContentStyle*2) + ldi r16, LOW(DefaultStyle_Window*2) std Y+WIDGET_OFFS_STYLE_LO, r16 - ldi r16, HIGH(MainWindow_ContentStyle*2) + ldi r16, HIGH(DefaultStyle_Window*2) std Y+WIDGET_OFFS_STYLE_HI, r16 mainWindowCreateContentWidget_done: pop yh @@ -269,57 +269,38 @@ MainWindow_DefaultSignalmap: MainWindow_DefaultStyle: - .dw DISPLAY_COLOR_BLACK ; frontCol_norm - .dw DISPLAY_COLOR_LIGHTGREY ; backCol_norm - .dw DISPLAY_COLOR_BLACK ; borderCol_norm - .dw DISPLAY_COLOR_WHITE ; shadowCol_norm + .dw STYLE_WIN_FGCOL_NORM ; frontCol_norm + .dw STYLE_WIN_BGCOL_NORM ; backCol_norm + .dw STYLE_WIN_BORDERCOL_NORM ; borderCol_norm + .dw STYLE_WIN_SHADOWCOL_NORM ; shadowCol_norm - .dw DISPLAY_COLOR_WHITE ; frontCol_activated - .dw DISPLAY_COLOR_NAVY ; backCol_activated - .dw DISPLAY_COLOR_BLACK ; borderCol_activated - .dw DISPLAY_COLOR_WHITE ; shadowCol_activated - - .db 0, 0 ; outerBorderSize, innerBorderSize - .dw ili9341Font12x16_1*2 ; font - .db 12, 16 ; charWidth, charHeight + .dw STYLE_WIN_FGCOL_ACTIVATED ; frontCol_activated + .dw STYLE_WIN_BGCOL_ACTIVATED ; backCol_activated + .dw STYLE_WIN_BORDERCOL_ACTIVATED ; borderCol_activated + .dw STYLE_WIN_SHADOWCOL_ACTIVATED ; shadowCol_activated + + .db 0, 0 ; outerBorderSize, innerBorderSize + .dw (STYLE_WIN_FONT*2) ; font + .db STYLE_WIN_FONT_WIDTH, \ + STYLE_WIN_FONT_HEIGHT ; charWidth, charHeight MainWindow_TitleStyle: - .dw STYLE_WIN_TITLE_FOREGROUND ; frontCol_norm - .dw STYLE_WIN_TITLE_BACKGROUND ; backCol_norm - .dw DISPLAY_COLOR_BLACK ; borderCol_norm - .dw DISPLAY_COLOR_WHITE ; shadowCol_norm + .dw STYLE_TITLE_FGCOL ; frontCol_norm + .dw STYLE_TITLE_BGCOL ; backCol_norm + .dw STYLE_TITLE_BORDERCOL ; borderCol_norm + .dw STYLE_TITLE_SHADOWCOL ; shadowCol_norm - .dw DISPLAY_COLOR_WHITE ; frontCol_activated - .dw DISPLAY_COLOR_NAVY ; backCol_activated - .dw DISPLAY_COLOR_BLACK ; borderCol_activated - .dw DISPLAY_COLOR_WHITE ; shadowCol_activated + .dw STYLE_TITLE_FGCOL ; frontCol_activated + .dw STYLE_TITLE_BGCOL ; backCol_activated + .dw STYLE_TITLE_BORDERCOL ; borderCol_activated + .dw STYLE_TITLE_SHADOWCOL ; shadowCol_activated .db 2, 1 ; outerBorderSize, innerBorderSize - .dw ili9341Font12x16_1*2 ; font - .db 12, 16 ; charWidth, charHeight - - - -; this is the defining style for most windows because normally -; the style of the parent will be propagated to newly created child widgets. - -MainWindow_ContentStyle: - .dw DISPLAY_COLOR_BLACK ; frontCol_norm - .dw DISPLAY_COLOR_LIGHTGREY ; backCol_norm - .dw DISPLAY_COLOR_BLACK ; borderCol_norm - .dw DISPLAY_COLOR_WHITE ; shadowCol_norm - - .dw DISPLAY_COLOR_WHITE ; frontCol_activated - .dw DISPLAY_COLOR_NAVY ; backCol_activated - .dw DISPLAY_COLOR_BLACK ; borderCol_activated - .dw DISPLAY_COLOR_WHITE ; shadowCol_activated - - .db 2, 1 ; outerBorderSize, innerBorderSize - .dw ili9341Font12x16_1*2 ; font - .db 12, 16 ; charWidth, charHeight - + .dw (STYLE_TITLE_FONT*2) ; font + .db STYLE_TITLE_FONT_WIDTH, \ + STYLE_TITLE_FONT_HEIGHT ; charWidth, charHeight