📄 button.txt
字号:
; generated by ARM C/C++ Compiler with , RVCT4.0 [Build 524] for uVision
; commandline ArmCC [--split_sections --debug -c --asm --interleave -o.\Obj\button.o --depend=.\Obj\button.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\BUTTON.c]
THUMB
AREA ||i.BUTTON_Callback||, CODE, READONLY, ALIGN=1
BUTTON_Callback PROC
;;;265 */
;;;266 void BUTTON_Callback(WM_MESSAGE *pMsg) {
000000 b570 PUSH {r4-r6,lr}
;;;267 BUTTON_Handle hObj = pMsg->hWin;
000002 f9b06004 LDRSH r6,[r0,#4]
000006 4605 MOV r5,r0 ;266
;;;268 BUTTON_Obj* pObj = BUTTON_H2P(hObj);
000008 4630 MOV r0,r6
00000a f7fffffe BL GUI_ALLOC_h2p
00000e 4604 MOV r4,r0
;;;269 /* Let widget handle the standard messages */
;;;270 if (WIDGET_HandleActive(hObj, pMsg) == 0) {
000010 4629 MOV r1,r5
000012 4630 MOV r0,r6
000014 f7fffffe BL WIDGET_HandleActive
000018 2800 CMP r0,#0
00001a d040 BEQ |L1.158|
;;;271 return;
;;;272 }
;;;273 switch (pMsg->MsgId) {
00001c 6828 LDR r0,[r5,#0]
00001e 280b CMP r0,#0xb
000020 d02c BEQ |L1.124|
000022 280c CMP r0,#0xc
000024 d007 BEQ |L1.54|
000026 280f CMP r0,#0xf
000028 d134 BNE |L1.148|
;;;274 #if BUTTON_REACT_ON_LEVEL
;;;275 case WM_PID_STATE_CHANGED:
;;;276 _OnPidStateChange(hObj, pObj, pMsg);
;;;277 return; /* Message handled. Do not call WM_DefaultProc, because the window may have been destroyed */
;;;278 #endif
;;;279 case WM_TOUCH:
;;;280 _OnTouch(hObj, pObj, pMsg);
;;;281 return; /* Message handled. Do not call WM_DefaultProc, because the window may have been destroyed */
;;;282 case WM_PAINT:
;;;283 GUI_DEBUG_LOG("BUTTON: _BUTTON_Callback(WM_PAINT)\n");
;;;284 _Paint(pObj, hObj);
00002a 4631 MOV r1,r6
00002c 4620 MOV r0,r4
00002e e8bd4070 POP {r4-r6,lr}
000032 f7ffbffe B.W _Paint
|L1.54|
000036 68a8 LDR r0,[r5,#8]
000038 b1c8 CBZ r0,|L1.110|
00003a 7a00 LDRB r0,[r0,#8]
00003c 2800 CMP r0,#0
00003e 8ce0 LDRH r0,[r4,#0x26]
000040 ea4f50c0 LSL r0,r0,#23
000044 d00f BEQ |L1.102|
000046 2800 CMP r0,#0
000048 db29 BLT |L1.158|
00004a f44f7180 MOV r1,#0x100
00004e 4630 MOV r0,r6
000050 f7fffffe BL WIDGET_OrState
000054 8ba0 LDRH r0,[r4,#0x1c]
000056 0780 LSLS r0,r0,#30
000058 d521 BPL |L1.158|
00005a 4630 MOV r0,r6
00005c e8bd4070 POP {r4-r6,lr}
000060 2101 MOVS r1,#1
000062 f7ffbffe B.W WM_NotifyParent
|L1.102|
000066 2800 CMP r0,#0
000068 da19 BGE |L1.158|
00006a 2202 MOVS r2,#2
00006c e000 B |L1.112|
|L1.110|
00006e 2203 MOVS r2,#3
|L1.112|
000070 4621 MOV r1,r4
000072 4630 MOV r0,r6
000074 e8bd4070 POP {r4-r6,lr}
000078 f7ffbffe B.W _ButtonReleased
|L1.124|
00007c f1040048 ADD r0,r4,#0x48
000080 f7fffffe BL GUI_ALLOC_FreePtr
000084 f104004a ADD r0,r4,#0x4a
000088 f7fffffe BL GUI_ALLOC_FreePtr
00008c f104004c ADD r0,r4,#0x4c
000090 f7fffffe BL GUI_ALLOC_FreePtr
|L1.148|
;;;285 return;
;;;286 case WM_DELETE:
;;;287 GUI_DEBUG_LOG("BUTTON: _BUTTON_Callback(WM_DELETE)\n");
;;;288 _Delete(pObj);
;;;289 break; /* No return here ... WM_DefaultProc needs to be called */
;;;290 #if 0 /* TBD: Button should react to space & Enter */
;;;291 case WM_KEY:
;;;292 {
;;;293 int PressedCnt = ((WM_KEY_INFO*)(pMsg->Data.p))->PressedCnt;
;;;294 int Key = ((WM_KEY_INFO*)(pMsg->Data.p))->Key;
;;;295 if (PressedCnt > 0) { /* Key pressed? */
;;;296 switch (Key) {
;;;297 case ' ':
;;;298 _ButtonPressed(hObj, pObj);
;;;299 return;
;;;300 }
;;;301 } else {
;;;302 switch (Key) {
;;;303 case ' ':
;;;304 _ButtonReleased(hObj, pObj, WM_NOTIFICATION_RELEASED);
;;;305 return;
;;;306 }
;;;307 }
;;;308 }
;;;309 break;
;;;310 #endif
;;;311 }
;;;312 WM_DefaultProc(pMsg);
000094 4628 MOV r0,r5
000096 e8bd4070 POP {r4-r6,lr}
00009a f7ffbffe B.W WM_DefaultProc
|L1.158|
;;;313 }
00009e bd70 POP {r4-r6,pc}
;;;314
ENDP
AREA ||i.BUTTON_CreateEx||, CODE, READONLY, ALIGN=2
BUTTON_CreateEx PROC
;;;324 */
;;;325 BUTTON_Handle BUTTON_CreateEx(int x0, int y0, int xsize, int ysize, WM_HWIN hParent, int WinFlags, int ExFlags, int Id) {
000000 e92d41ff PUSH {r0-r8,lr}
000004 4604 MOV r4,r0
000006 460d MOV r5,r1
;;;326 BUTTON_Handle hObj;
;;;327 GUI_USE_PARA(ExFlags);
;;;328 /* Create the window */
;;;329 WM_LOCK();
;;;330 hObj = WM_CreateWindowAsChild(x0, y0, xsize, ysize, hParent, WinFlags, BUTTON_Callback,
000008 e9dd010a LDRD r0,r1,[sp,#0x28]
00000c 4616 MOV r6,r2 ;325
00000e 461f MOV r7,r3 ;325
000010 2330 MOVS r3,#0x30
000012 4a10 LDR r2,|L2.84|
000014 b289 UXTH r1,r1
000016 f8dd8034 LDR r8,[sp,#0x34]
00001a e88d000f STM sp,{r0-r3}
00001e 463b MOV r3,r7
000020 4632 MOV r2,r6
000022 4629 MOV r1,r5
000024 4620 MOV r0,r4
000026 f7fffffe BL WM_CreateWindowAsChild
00002a 0004 MOVS r4,r0
;;;331 sizeof(BUTTON_Obj) - sizeof(WM_Obj));
;;;332 if (hObj) {
00002c d00d BEQ |L2.74|
;;;333 BUTTON_Obj* pObj = BUTTON_H2P(hObj);
00002e 4620 MOV r0,r4
000030 f7fffffe BL GUI_ALLOC_h2p
000034 4605 MOV r5,r0
;;;334 /* init widget specific variables */
;;;335 WIDGET__Init(&pObj->Widget, Id, WIDGET_STATE_FOCUSSABLE);
000036 2210 MOVS r2,#0x10
000038 4641 MOV r1,r8
00003a f7fffffe BL WIDGET__Init
;;;336 /* init member variables */
;;;337 BUTTON_INIT_ID(pObj);
;;;338 pObj->Props = BUTTON__DefaultProps;
00003e 2220 MOVS r2,#0x20
000040 4905 LDR r1,|L2.88|
000042 f1050028 ADD r0,r5,#0x28
000046 f7fffffe BL __aeabi_memcpy4
|L2.74|
;;;339 } else {
;;;340 GUI_DEBUG_ERROROUT_IF(hObj==0, "BUTTON_Create failed")
;;;341 }
;;;342 WM_UNLOCK();
;;;343 return hObj;
00004a 4620 MOV r0,r4
;;;344 }
00004c b004 ADD sp,sp,#0x10
00004e e8bd81f0 POP {r4-r8,pc}
;;;345
ENDP
000052 0000 DCW 0x0000
|L2.84|
DCD BUTTON_Callback
|L2.88|
DCD ||.data||
AREA ||i.BUTTON_SetBkColor||, CODE, READONLY, ALIGN=1
BUTTON_SetBkColor PROC
;;;388 */
;;;389 void BUTTON_SetBkColor(BUTTON_Handle hObj,unsigned int Index, GUI_COLOR Color) {
000000 b570 PUSH {r4-r6,lr}
000002 0004 MOVS r4,r0
000004 460d MOV r5,r1
000006 4616 MOV r6,r2
;;;390 if (hObj && (Index <= 2)) {
000008 d00c BEQ |L3.36|
00000a 2d02 CMP r5,#2
00000c d80a BHI |L3.36|
;;;391 BUTTON_Obj* pObj;
;;;392 WM_LOCK();
;;;393 pObj = BUTTON_H2P(hObj);
00000e 4620 MOV r0,r4
000010 f7fffffe BL GUI_ALLOC_h2p
;;;394 BUTTON_ASSERT_IS_VALID_PTR(pObj);
;;;395 pObj->Props.aBkColor[Index] = Color;
000014 eb000085 ADD r0,r0,r5,LSL #2
;;;396 BUTTON_Invalidate(hObj);
000018 6286 STR r6,[r0,#0x28]
00001a 4620 MOV r0,r4
00001c e8bd4070 POP {r4-r6,lr}
000020 f7ffbffe B.W WM_InvalidateWindow
|L3.36|
;;;397 WM_UNLOCK();
;;;398 }
;;;399 }
000024 bd70 POP {r4-r6,pc}
;;;400
ENDP
AREA ||i.BUTTON_SetFocussable||, CODE, READONLY, ALIGN=1
BUTTON_SetFocussable PROC
;;;440 */
;;;441 void BUTTON_SetFocussable(BUTTON_Handle hObj, int State) {
000000 2900 CMP r1,#0
;;;442 if (State) {
;;;443 WIDGET_OrState(hObj, WIDGET_STATE_FOCUSSABLE);
000002 f04f0110 MOV r1,#0x10
000006 d001 BEQ |L4.12|
000008 f7ffbffe B.W WIDGET_OrState
|L4.12|
;;;444 } else {
;;;445 WIDGET_AndState(hObj, WIDGET_STATE_FOCUSSABLE);
00000c f7ffbffe B.W WIDGET_AndState
;;;446 }
;;;447 }
;;;448
ENDP
AREA ||i.BUTTON_SetFont||, CODE, READONLY, ALIGN=1
BUTTON_SetFont PROC
;;;372 */
;;;373 void BUTTON_SetFont(BUTTON_Handle hObj, const GUI_FONT GUI_UNI_PTR * pfont) {
000000 b570 PUSH {r4-r6,lr}
000002 0004 MOVS r4,r0
000004 460d MOV r5,r1
;;;374 if (hObj) {
000006 d008 BEQ |L5.26|
;;;375 BUTTON_Obj* pObj;
;;;376 WM_LOCK();
;;;377 pObj = BUTTON_H2P(hObj);
000008 4620 MOV r0,r4
00000a f7fffffe BL GUI_ALLOC_h2p
;;;378 BUTTON_ASSERT_IS_VALID_PTR(pObj);
;;;379 pObj->Props.pFont = pfont;
;;;380 BUTTON_Invalidate(hObj);
00000e 6405 STR r5,[r0,#0x40]
000010 4620 MOV r0,r4
000012 e8bd4070 POP {r4-r6,lr}
000016 f7ffbffe B.W WM_InvalidateWindow
|L5.26|
;;;381 WM_UNLOCK();
;;;382 }
;;;383 }
00001a bd70 POP {r4-r6,pc}
;;;384
ENDP
AREA ||i.BUTTON_SetPressed||, CODE, READONLY, ALIGN=1
BUTTON_SetPressed PROC
;;;428 */
;;;429 void BUTTON_SetPressed(BUTTON_Handle hObj, int State) {
000000 f44f7280 MOV r2,#0x100
;;;430 if (State) {
000004 2900 CMP r1,#0
;;;431 WIDGET_OrState(hObj, BUTTON_STATE_PRESSED);
000006 4611 MOV r1,r2
000008 d001 BEQ |L6.14|
00000a f7ffbffe B.W WIDGET_OrState
|L6.14|
;;;432 } else {
;;;433 WIDGET_AndState(hObj, BUTTON_STATE_PRESSED);
00000e f7ffbffe B.W WIDGET_AndState
;;;434 }
;;;435 }
;;;436
ENDP
AREA ||i.BUTTON_SetState||, CODE, READONLY, ALIGN=1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -