📄 widget.txt
字号:
; generated by ARM C/C++ Compiler with , RVCT4.0 [Build 524] for uVision
; commandline ArmCC [--split_sections --debug -c --asm --interleave -o.\Obj\widget.o --depend=.\Obj\widget.d --device=DARMSTM --apcs=interwork -O3 -I..\..\include -I..\..\..\FWLib\library\inc -I..\..\..\USBLib\library\inc -I..\..\Config -I..\..\GUI\Core -I..\..\GUI\Font -I..\..\GUI\ConvertColor -I..\..\GUI\AntiAlias -I..\..\GUI\ConvertMono -I..\..\GUI\JPEG -I..\..\GUI\MemDev -I..\..\GUI\MultiLayer -I..\..\GUI\Widget -I..\..\GUI\WM -IC:\Keil\ARM\INC\ST\STM32F10x ..\..\GUI\Widget\WIDGET.c]
THUMB
AREA ||i.WIDGET_AndState||, CODE, READONLY, ALIGN=1
WIDGET_AndState PROC
;;;255 */
;;;256 void WIDGET_AndState(WM_HWIN hObj, int Mask) {
000000 b570 PUSH {r4-r6,lr}
000002 0004 MOVS r4,r0
000004 460d MOV r5,r1
;;;257 U16 StateNew;
;;;258 if (hObj) {
000006 d00d BEQ |L1.36|
;;;259 WIDGET* pWidget;
;;;260 WM_LOCK();
;;;261 pWidget = WIDGET_H2P(hObj);
000008 4620 MOV r0,r4
00000a f7fffffe BL GUI_ALLOC_h2p
;;;262 StateNew = pWidget->State & (~Mask);
00000e 8cc2 LDRH r2,[r0,#0x26]
000010 ea220105 BIC r1,r2,r5
;;;263 if (pWidget->State != StateNew) {
000014 428a CMP r2,r1
000016 d005 BEQ |L1.36|
;;;264 pWidget->State = StateNew;
000018 84c1 STRH r1,[r0,#0x26]
;;;265 WM_Invalidate(hObj);
00001a 4620 MOV r0,r4
00001c e8bd4070 POP {r4-r6,lr}
000020 f7ffbffe B.W WM_InvalidateWindow
|L1.36|
;;;266 }
;;;267 WM_UNLOCK();
;;;268 }
;;;269 }
000024 bd70 POP {r4-r6,pc}
;;;270
ENDP
AREA ||i.WIDGET_GetDefaultEffect||, CODE, READONLY, ALIGN=2
WIDGET_GetDefaultEffect PROC
;;;463 */
;;;464 const WIDGET_EFFECT* WIDGET_GetDefaultEffect(void) {
000000 4801 LDR r0,|L2.8|
;;;465 return _pEffectDefault;
000002 6800 LDR r0,[r0,#0] ; _pEffectDefault
;;;466 }
000004 4770 BX lr
;;;467
ENDP
000006 0000 DCW 0x0000
|L2.8|
DCD ||.data||
AREA ||i.WIDGET_GetState||, CODE, READONLY, ALIGN=1
WIDGET_GetState PROC
;;;215 */
;;;216 int WIDGET_GetState(WM_HWIN hObj) {
000000 b510 PUSH {r4,lr}
000002 0001 MOVS r1,r0
;;;217 int Ret = 0;
000004 f04f0000 MOV r0,#0
;;;218 WIDGET * pWidget;
;;;219 if (hObj) {
000008 d003 BEQ |L3.18|
;;;220 WM_LOCK();
;;;221 pWidget = WIDGET_H2P(hObj);
00000a 4608 MOV r0,r1
00000c f7fffffe BL GUI_ALLOC_h2p
;;;222 Ret = pWidget->State;
000010 8cc0 LDRH r0,[r0,#0x26]
|L3.18|
;;;223 WM_UNLOCK();
;;;224 }
;;;225 return Ret;
;;;226 }
000012 bd10 POP {r4,pc}
;;;227
ENDP
AREA ||i.WIDGET_HandleActive||, CODE, READONLY, ALIGN=1
WIDGET_HandleActive PROC
;;;285 */
;;;286 int WIDGET_HandleActive(WM_HWIN hObj, WM_MESSAGE* pMsg) {
000000 b538 PUSH {r3-r5,lr}
000002 4605 MOV r5,r0
000004 460c MOV r4,r1
;;;287 int Diff, Notification;
;;;288 WIDGET* pWidget = WIDGET_H2P(hObj);
000006 f7fffffe BL GUI_ALLOC_h2p
;;;289 switch (pMsg->MsgId) {
00000a 6821 LDR r1,[r4,#0]
00000c 2916 CMP r1,#0x16
00000e d038 BEQ |L4.130|
000010 dc0a BGT |L4.40|
000012 290d CMP r1,#0xd
000014 d02c BEQ |L4.112|
000016 2911 CMP r1,#0x11
000018 d020 BEQ |L4.92|
00001a 2914 CMP r1,#0x14
00001c d04f BEQ |L4.190|
00001e 2915 CMP r1,#0x15
000020 d153 BNE |L4.202|
;;;290 case WM_WIDGET_SET_EFFECT:
;;;291 Diff = pWidget->pEffect->EffectSize;
;;;292 pWidget->pEffect = (const WIDGET_EFFECT*)pMsg->Data.p;
;;;293 Diff -= pWidget->pEffect->EffectSize;
;;;294 _UpdateChildPostions(hObj, Diff);
;;;295 WM_InvalidateWindow(hObj);
;;;296 return 0; /* Message handled -> Return */
;;;297 case WM_GET_ID:
;;;298 pMsg->Data.v = pWidget->Id;
000022 f9b00024 LDRSH r0,[r0,#0x24]
;;;299 return 0; /* Message handled -> Return */
000026 e044 B |L4.178|
|L4.40|
000028 291f CMP r1,#0x1f ;289
00002a d02d BEQ |L4.136|
00002c 2920 CMP r1,#0x20 ;289
00002e d042 BEQ |L4.182|
000030 f5b17f40 CMP r1,#0x300 ;289
000034 d149 BNE |L4.202|
000036 6a01 LDR r1,[r0,#0x20] ;291
000038 694a LDR r2,[r1,#0x14] ;292
00003a 68a1 LDR r1,[r4,#8] ;292
00003c 6201 STR r1,[r0,#0x20] ;293
00003e 6948 LDR r0,[r1,#0x14] ;293
000040 1a14 SUBS r4,r2,r0 ;293
000042 4628 MOV r0,r5 ;293
000044 f7fffffe BL GUI_ALLOC_h2p
000048 4261 RSBS r1,r4,#0 ;293
00004a 4623 MOV r3,r4 ;293
00004c 460a MOV r2,r1 ;293
00004e 9400 STR r4,[sp,#0] ;293
000050 f7fffffe BL WM__UpdateChildPositions
000054 4628 MOV r0,r5 ;295
000056 f7fffffe BL WM_InvalidateWindow
00005a e033 B |L4.196|
|L4.92|
;;;300 case WM_PID_STATE_CHANGED:
;;;301 if (pWidget->State & WIDGET_STATE_FOCUSSABLE) {
00005c 8cc0 LDRH r0,[r0,#0x26]
00005e 06c0 LSLS r0,r0,#27
000060 d533 BPL |L4.202|
;;;302 const WM_PID_STATE_CHANGED_INFO * pInfo = (const WM_PID_STATE_CHANGED_INFO*)pMsg->Data.p;
;;;303 if (pInfo->State) {
000062 68a0 LDR r0,[r4,#8]
000064 7a00 LDRB r0,[r0,#8]
000066 b378 CBZ r0,|L4.200|
;;;304 WM_SetFocus(hObj);
000068 4628 MOV r0,r5
00006a f7fffffe BL WM_SetFocus
00006e e02c B |L4.202|
|L4.112|
;;;305 }
;;;306 }
;;;307 break;
;;;308 case WM_TOUCH_CHILD:
;;;309 /* A descendent (child) has been touched or released.
;;;310 If it has been touched, we need to get to top.
;;;311 */
;;;312 {
;;;313 const WM_MESSAGE * pMsgOrg;
;;;314 const GUI_PID_STATE * pState;
;;;315 pMsgOrg = (const WM_MESSAGE*)pMsg->Data.p; /* The original touch message */
;;;316 pState = (const GUI_PID_STATE*)pMsgOrg->Data.p;
000070 68a0 LDR r0,[r4,#8]
000072 6880 LDR r0,[r0,#8]
;;;317 if (pState) { /* Message may not have a valid pointer (moved out) ! */
000074 b340 CBZ r0,|L4.200|
;;;318 if (pState->Pressed) {
000076 7a00 LDRB r0,[r0,#8]
000078 b330 CBZ r0,|L4.200|
;;;319 WM_BringToTop(hObj);
00007a 4628 MOV r0,r5
00007c f7fffffe BL WM_BringToTop
;;;320 return 0; /* Message handled -> Return */
000080 e020 B |L4.196|
|L4.130|
;;;321 }
;;;322 }
;;;323 }
;;;324 break;
;;;325 case WM_SET_ID:
;;;326 pWidget->Id = pMsg->Data.v;
000082 68a1 LDR r1,[r4,#8]
000084 8481 STRH r1,[r0,#0x24]
;;;327 return 0; /* Message handled -> Return */
000086 e01d B |L4.196|
|L4.136|
;;;328 case WM_SET_FOCUS:
;;;329 if (pMsg->Data.v == 1) {
000088 68a1 LDR r1,[r4,#8]
;;;330 WIDGET_SetState(hObj, pWidget->State | WIDGET_STATE_FOCUS);
00008a 8cc0 LDRH r0,[r0,#0x26]
00008c 2901 CMP r1,#1 ;329
00008e d106 BNE |L4.158|
000090 f0400101 ORR r1,r0,#1
000094 4628 MOV r0,r5
000096 f7fffffe BL WIDGET_SetState
;;;331 Notification = WM_NOTIFICATION_GOT_FOCUS;
00009a 2108 MOVS r1,#8
00009c e005 B |L4.170|
|L4.158|
;;;332 } else {
;;;333 WIDGET_SetState(hObj, pWidget->State & ~WIDGET_STATE_FOCUS);
00009e f0200101 BIC r1,r0,#1
0000a2 4628 MOV r0,r5
0000a4 f7fffffe BL WIDGET_SetState
;;;334 Notification = WM_NOTIFICATION_LOST_FOCUS;
0000a8 2109 MOVS r1,#9
|L4.170|
;;;335 }
;;;336 WM_NotifyParent(hObj, Notification);
0000aa 4628 MOV r0,r5
0000ac f7fffffe BL WM_NotifyParent
;;;337 pMsg->Data.v = 0; /* Focus change accepted */
0000b0 2000 MOVS r0,#0
|L4.178|
0000b2 60a0 STR r0,[r4,#8] ;298
0000b4 e006 B |L4.196|
|L4.182|
;;;338 return 0;
;;;339 case WM_GET_ACCEPT_FOCUS:
;;;340 pMsg->Data.v = (pWidget->State & WIDGET_STATE_FOCUSSABLE) ? 1 : 0; /* Can handle focus */
0000b6 8cc0 LDRH r0,[r0,#0x26]
0000b8 f3c01000 UBFX r0,r0,#4,#1
;;;341 return 0; /* Message handled */
0000bc e7f9 B |L4.178|
|L4.190|
;;;342 case WM_GET_INSIDE_RECT:
;;;343 WIDGET__GetInsideRect(pWidget, (GUI_RECT*)pMsg->Data.p);
0000be 68a1 LDR r1,[r4,#8]
0000c0 f7fffffe BL WIDGET__GetInsideRect
|L4.196|
;;;344 return 0; /* Message handled */
0000c4 2000 MOVS r0,#0
|L4.198|
;;;345 }
;;;346 return 1; /* Message NOT handled */
;;;347 }
0000c6 bd38 POP {r3-r5,pc}
|L4.200|
0000c8 e7ff B |L4.202|
|L4.202|
0000ca 2001 MOVS r0,#1 ;346
0000cc e7fb B |L4.198|
;;;348
ENDP
AREA ||i.WIDGET_OrState||, CODE, READONLY, ALIGN=1
WIDGET_OrState PROC
;;;231 */
;;;232 void WIDGET_OrState(WM_HWIN hObj, int State) {
000000 b570 PUSH {r4-r6,lr}
000002 0005 MOVS r5,r0
000004 460c MOV r4,r1
;;;233 if (hObj) {
000006 d00d BEQ |L5.36|
;;;234 WIDGET* pWidget;
;;;235 WM_LOCK();
;;;236 pWidget = WIDGET_H2P(hObj);
000008 4628 MOV r0,r5
00000a f7fffffe BL GUI_ALLOC_h2p
;;;237 if (State != (pWidget->State & State)) {
00000e 8cc1 LDRH r1,[r0,#0x26]
000010 ea340201 BICS r2,r4,r1
000014 d006 BEQ |L5.36|
;;;238 pWidget->State |= State;
000016 4321 ORRS r1,r1,r4
000018 84c1 STRH r1,[r0,#0x26]
;;;239 WM_Invalidate(hObj);
00001a 4628 MOV r0,r5
00001c e8bd4070 POP {r4-r6,lr}
000020 f7ffbffe B.W WM_InvalidateWindow
|L5.36|
;;;240 }
;;;241 WM_UNLOCK();
;;;242 }
;;;243 }
000024 bd70 POP {r4-r6,pc}
;;;244
ENDP
AREA ||i.WIDGET_SetDefaultEffect||, CODE, READONLY, ALIGN=2
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -