gui2: more work. SensorWatch doesn't fully work, yet (also red background).
This commit is contained in:
@@ -683,7 +683,9 @@ guiAppSendTouchEvents_done:
|
||||
|
||||
guiAppSendRootMsgEvents:
|
||||
ldi r16, OBJECT_SIGNAL_RECVMSG
|
||||
clr r17
|
||||
adiw xh:xl, NETMSG_OFFS_CMD
|
||||
ld r17, X
|
||||
sbiw xh:xl, NETMSG_OFFS_CMD
|
||||
ldi r20, (1<<OBJECT_OPTS_MSGRECV_BIT)
|
||||
ldi r21, (1<<OBJECT_OPTS_MSGRECV_BIT)
|
||||
rcall guiAppSendRootEventsIfOpts
|
||||
@@ -762,9 +764,10 @@ GuiApp_DefaultSignalmap:
|
||||
; header
|
||||
.dw Object_DefaultSignalmap*2 ; next table to use
|
||||
; entries
|
||||
.db 0, OBJECT_SIGNAL_TIMER, LOW(GuiApp_OnTimer), HIGH(GuiApp_OnTimer)
|
||||
.db 0, WIDGET_SIGNAL_TOUCH, LOW(GuiApp_OnTouch), HIGH(GuiApp_OnTouch)
|
||||
.db 0, OBJECT_SIGNAL_DESTROY, LOW(GuiApp_OnDestroy), HIGH(GuiApp_OnDestroy)
|
||||
.db 0, OBJECT_SIGNAL_TIMER, LOW(GuiApp_OnTimer), HIGH(GuiApp_OnTimer)
|
||||
.db 0, OBJECT_SIGNAL_RECVMSG, LOW(GuiApp_OnMsgReceived), HIGH(GuiApp_OnMsgReceived)
|
||||
.db 0, WIDGET_SIGNAL_TOUCH, LOW(GuiApp_OnTouch), HIGH(GuiApp_OnTouch)
|
||||
.db 0, OBJECT_SIGNAL_DESTROY, LOW(GuiApp_OnDestroy), HIGH(GuiApp_OnDestroy)
|
||||
.db 0, 0, 0, 0 ; end of table
|
||||
|
||||
|
||||
|
||||
@@ -22,6 +22,9 @@
|
||||
.equ IMAGEVIEW_SIZE = IMAGEVIEW_OFFS_BEGIN+4
|
||||
|
||||
|
||||
.equ IMAGEVIEW_VALUE_BGCOL = WIDGET_VALUE_NEXTFREE+0
|
||||
.equ IMAGEVIEW_VALUE_NEXTFREE = WIDGET_VALUE_NEXTFREE+1
|
||||
|
||||
|
||||
|
||||
; ***************************************************************************
|
||||
@@ -113,27 +116,6 @@ ImageView_SetRessourceId:
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine ImageView_SetBgCol @global
|
||||
;
|
||||
; @param Y address of widget
|
||||
; @param X color
|
||||
; @clobbers r16
|
||||
|
||||
ImageView_SetBgCol:
|
||||
std Y+IMAGEVIEW_OFFS_BGCOLOR_LO, xl
|
||||
std Y+IMAGEVIEW_OFFS_BGCOLOR_HI, xh
|
||||
ldd r16, Y+OBJECT_OFFS_FLAGS
|
||||
ori r16, (1<<WIDGET_FLAGS_DIRTY_BIT)
|
||||
std Y+OBJECT_OFFS_FLAGS, r16
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine ImageView_OnDraw @global
|
||||
;
|
||||
@@ -252,6 +234,26 @@ imageViewDraw_ret:
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine ImageView_OnSetBgCol @global
|
||||
;
|
||||
; @param Y address of widget
|
||||
; @param X new background color
|
||||
; @clobbers any, !Y
|
||||
|
||||
ImageView_OnSetBgCol:
|
||||
std Y+IMAGEVIEW_OFFS_BGCOLOR_LO, xl
|
||||
std Y+IMAGEVIEW_OFFS_BGCOLOR_HI, xh
|
||||
ldd r16, Y+OBJECT_OFFS_FLAGS
|
||||
ori r16, (1<<WIDGET_FLAGS_DIRTY_BIT)
|
||||
std Y+OBJECT_OFFS_FLAGS, r16
|
||||
sec
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine imageViewGetRessource
|
||||
;
|
||||
@@ -342,6 +344,7 @@ ImageView_DefaultSignalmap:
|
||||
.db 0, WIDGET_SIGNAL_DRAW, LOW(ImageView_OnDraw), HIGH(ImageView_OnDraw)
|
||||
.db WIDGET_VALUE_DEFAULT_WIDTH, WIDGET_SIGNAL_GETVALUE, LOW(ImageView_OnGetDefaultWidth), HIGH(ImageView_OnGetDefaultWidth)
|
||||
.db WIDGET_VALUE_DEFAULT_HEIGHT, WIDGET_SIGNAL_GETVALUE, LOW(ImageView_OnGetDefaultHeight), HIGH(ImageView_OnGetDefaultHeight)
|
||||
.db IMAGEVIEW_VALUE_BGCOL, WIDGET_SIGNAL_SETVALUE, LOW(ImageView_OnSetBgCol), HIGH(ImageView_OnSetBgCol)
|
||||
|
||||
.db 0, 0, 0, 0 ; end of table
|
||||
|
||||
|
||||
@@ -19,6 +19,11 @@
|
||||
.equ MAINWINDOW_SIZE = MAINWINDOW_OFFS_BEGIN+0
|
||||
|
||||
|
||||
; index of sub-windows
|
||||
.equ MAINWINDOW_CHILDIDX_TITLE = 0
|
||||
.equ MAINWINDOW_CHILDIDX_CONTENT = 1
|
||||
|
||||
|
||||
|
||||
; ***************************************************************************
|
||||
; code
|
||||
@@ -108,7 +113,7 @@ MainWindow_Init:
|
||||
; @clobbers r16
|
||||
|
||||
MainWindow_GetContentWidget:
|
||||
ldi r16, 1 ; idx 0=title, 1=content
|
||||
ldi r16, MAINWINDOW_CHILDIDX_CONTENT
|
||||
bigcall OBJ_GetChildAt
|
||||
ret
|
||||
; @end
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
|
||||
|
||||
.equ VLABEL_VALUE = WIDGET_VALUE_NEXTFREE+0
|
||||
.equ VLABEL_VALUE_NEXTFREE = VLABEL_VALUE+1
|
||||
.equ VLABEL_VALUE_NEXTFREE = WIDGET_VALUE_NEXTFREE+1
|
||||
|
||||
|
||||
|
||||
@@ -93,6 +93,7 @@ ValueLabel_Init:
|
||||
; @routine ValueLabel_OnSetValue @global
|
||||
;
|
||||
; @param Y address of widget
|
||||
; @param X new value
|
||||
; @return CFLAG set if signal handled
|
||||
; @clobbers r17
|
||||
|
||||
@@ -103,6 +104,7 @@ ValueLabel_OnSetValue:
|
||||
ldd r17, Y+OBJECT_OFFS_FLAGS
|
||||
ori r17, (1<<WIDGET_FLAGS_DIRTY_BIT)
|
||||
std Y+OBJECT_OFFS_FLAGS, r17
|
||||
|
||||
sec
|
||||
ret
|
||||
; @end
|
||||
@@ -209,13 +211,17 @@ valueLabelWriteValue:
|
||||
; @clobbers r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25
|
||||
|
||||
valueLabelAlignTextXY:
|
||||
rcall valueLabelCalcTextWidth ; X=ptr to text in SDRAM, R13:R12=text width (r16, r17, r18)
|
||||
rcall Widget_PackContentX ; R5:R4=X (r17, r18, r19, r20, r21)
|
||||
|
||||
rcall Widget_GetCharHeight ; R16=char height
|
||||
mov r12, r16
|
||||
clr r13
|
||||
rcall Widget_PackContentY ; R7:R6=Y (r17, r18, r19, r20, r21)
|
||||
rcall valueLabelCalcTextWidth ; X=ptr to text in SDRAM, R13:R12=text width (r16, r17, r18)
|
||||
push xl
|
||||
push xh
|
||||
rcall Widget_PackContentX ; R5:R4=X (r17, r18, r19, r20, r21)
|
||||
|
||||
rcall Widget_GetCharHeight ; R16=char height
|
||||
mov r12, r16
|
||||
clr r13
|
||||
rcall Widget_PackContentY ; R7:R6=Y (r17, r18, r19, r20, r21)
|
||||
pop xh
|
||||
pop xl
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
@@ -338,6 +338,22 @@ Widget_GetDefaultHeight_ret:
|
||||
; @end
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine Widget_SetValue @global
|
||||
;
|
||||
; @param Y address of widget
|
||||
; @param r17 value id
|
||||
; @param X value to set
|
||||
; @return CFLAG set if value set, cleared on error
|
||||
; @clobbers any, !Y
|
||||
|
||||
Widget_SetValue:
|
||||
ldi r16, WIDGET_SIGNAL_SETVALUE
|
||||
bigcall OBJ_HandleSignal
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine Widget_IsPointInRect @global
|
||||
@@ -723,9 +739,9 @@ Widget_Clear:
|
||||
tst r16
|
||||
breq Widget_Clear_l1
|
||||
; DEBUG
|
||||
ldi r16, LOW(DISPLAY_COLOR_RED)
|
||||
ldi r16, LOW(DISPLAY_COLOR_MAGENTA)
|
||||
mov r2, r16
|
||||
ldi r16, HIGH(DISPLAY_COLOR_RED)
|
||||
ldi r16, HIGH(DISPLAY_COLOR_MAGENTA)
|
||||
mov r3, r16
|
||||
bigcall Display_FillRect
|
||||
ret
|
||||
|
||||
Reference in New Issue
Block a user