📄 checkbox.txt
字号:
; generated by ARM C/C++ Compiler with , RVCT4.0 [Build 524] for uVision
; commandline ArmCC [--split_sections --debug -c --asm --interleave -o.\Obj\checkbox.o --depend=.\Obj\checkbox.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\CHECKBOX.c]
THUMB
AREA ||i.CHECKBOX_CreateEx||, CODE, READONLY, ALIGN=2
CHECKBOX_CreateEx PROC
;;;277 */
;;;278 CHECKBOX_Handle CHECKBOX_CreateEx(int x0, int y0, int xsize, int ysize, WM_HWIN hParent,
000000 e92d5fff PUSH {r0-r12,lr}
;;;279 int WinFlags, int ExFlags, int Id)
;;;280 {
;;;281 CHECKBOX_Handle hObj;
;;;282 GUI_USE_PARA(ExFlags);
;;;283 WM_LOCK();
;;;284 /* Calculate size if needed */
;;;285 if ((xsize == 0) || (ysize == 0)) {
000004 e9dda60e LDRD r10,r6,[sp,#0x38]
;;;286 int EffectSize;
;;;287 EffectSize = WIDGET_GetDefaultEffect()->EffectSize;
;;;288 if (xsize == 0) {
;;;289 xsize = CHECKBOX__DefaultProps.apBm[0]->XSize + 2 * EffectSize;
000008 4f20 LDR r7,|L1.140|
00000a f8ddb044 LDR r11,[sp,#0x44] ;285
00000e 4680 MOV r8,r0 ;280
000010 4689 MOV r9,r1 ;280
000012 0014 MOVS r4,r2 ;280
000014 461d MOV r5,r3 ;280
000016 d000 BEQ |L1.26|
000018 b965 CBNZ r5,|L1.52|
|L1.26|
00001a f7fffffe BL WIDGET_GetDefaultEffect
00001e 6940 LDR r0,[r0,#0x14] ;287
000020 b91c CBNZ r4,|L1.42|
000022 69b9 LDR r1,[r7,#0x18] ; CHECKBOX__DefaultProps
000024 8809 LDRH r1,[r1,#0]
000026 eb010440 ADD r4,r1,r0,LSL #1
|L1.42|
;;;290 }
;;;291 if (ysize == 0) {
00002a b91d CBNZ r5,|L1.52|
;;;292 ysize = CHECKBOX__DefaultProps.apBm[0]->YSize + 2 * EffectSize;
00002c 69b9 LDR r1,[r7,#0x18] ; CHECKBOX__DefaultProps
00002e 8849 LDRH r1,[r1,#2]
000030 eb010540 ADD r5,r1,r0,LSL #1
|L1.52|
;;;293 }
;;;294 }
;;;295 #if WM_SUPPORT_TRANSPARENCY
;;;296 if (CHECKBOX__DefaultProps.BkColor == GUI_INVALID_COLOR) {
000034 68f8 LDR r0,[r7,#0xc] ; CHECKBOX__DefaultProps
000036 f06f4170 MVN r1,#0xf0000000
00003a 4288 CMP r0,r1
00003c d101 BNE |L1.66|
;;;297 WinFlags |= WM_CF_HASTRANS;
00003e f0460601 ORR r6,r6,#1
|L1.66|
;;;298 }
;;;299 #endif
;;;300 /* Create the window */
;;;301 hObj = WM_CreateWindowAsChild(x0, y0, xsize, ysize, hParent, WinFlags, _CHECKBOX_Callback,
000042 b2b1 UXTH r1,r6
000044 2334 MOVS r3,#0x34
000046 4a12 LDR r2,|L1.144|
000048 e9cda100 STRD r10,r1,[sp,#0]
00004c e9cd2302 STRD r2,r3,[sp,#8]
000050 462b MOV r3,r5
000052 4622 MOV r2,r4
000054 4649 MOV r1,r9
000056 4640 MOV r0,r8
000058 f7fffffe BL WM_CreateWindowAsChild
00005c 0004 MOVS r4,r0
;;;302 sizeof(CHECKBOX_Obj) - sizeof(WM_Obj));
;;;303 if (hObj) {
00005e d010 BEQ |L1.130|
;;;304 CHECKBOX_Obj* pObj = CHECKBOX_H2P(hObj);
000060 4620 MOV r0,r4
000062 f7fffffe BL GUI_ALLOC_h2p
000066 4605 MOV r5,r0
;;;305 /* init widget specific variables */
;;;306 WIDGET__Init(&pObj->Widget, Id, WIDGET_STATE_FOCUSSABLE);
000068 2210 MOVS r2,#0x10
00006a 4659 MOV r1,r11
00006c f7fffffe BL WIDGET__Init
;;;307 CHECKBOX_INIT_ID(pObj);
;;;308 /* init member variables */
;;;309 pObj->Props = CHECKBOX__DefaultProps;
000070 2228 MOVS r2,#0x28
000072 4906 LDR r1,|L1.140|
000074 f1050028 ADD r0,r5,#0x28
000078 f7fffffe BL __aeabi_memcpy4
;;;310 pObj->NumStates = 2; /* Default behaviour is 2 states: checked and unchecked */
00007c 2102 MOVS r1,#2
00007e f8851050 STRB r1,[r5,#0x50]
|L1.130|
;;;311 } else {
;;;312 GUI_DEBUG_ERROROUT_IF(hObj==0, "CHECKBOX_Create failed")
;;;313 }
;;;314 WM_UNLOCK();
;;;315 return hObj;
000082 4620 MOV r0,r4
;;;316 }
000084 b004 ADD sp,sp,#0x10
000086 e8bd9ff0 POP {r4-r12,pc}
;;;317
ENDP
00008a 0000 DCW 0x0000
|L1.140|
DCD ||.data||
|L1.144|
DCD _CHECKBOX_Callback
AREA ||i._CHECKBOX_Callback||, CODE, READONLY, ALIGN=1
_CHECKBOX_Callback PROC
;;;239 */
;;;240 static void _CHECKBOX_Callback (WM_MESSAGE *pMsg) {
000000 e92d47f0 PUSH {r4-r10,lr}
;;;241 CHECKBOX_Handle hObj;
;;;242 CHECKBOX_Obj* pObj;
;;;243 hObj = pMsg->hWin;
000004 f9b09004 LDRSH r9,[r0,#4]
000008 4605 MOV r5,r0 ;240
;;;244 pObj = CHECKBOX_H2P(hObj);
00000a 4648 MOV r0,r9
00000c f7fffffe BL GUI_ALLOC_h2p
000010 4604 MOV r4,r0
;;;245 /* Let widget handle the standard messages */
;;;246 if (WIDGET_HandleActive(hObj, pMsg) == 0) {
000012 4629 MOV r1,r5
000014 4648 MOV r0,r9
000016 f7fffffe BL WIDGET_HandleActive
00001a 2800 CMP r0,#0
00001c d057 BEQ |L2.206|
;;;247 return;
;;;248 }
;;;249 switch (pMsg->MsgId) {
00001e 6828 LDR r0,[r5,#0]
000020 280c CMP r0,#0xc
000022 d021 BEQ |L2.104|
000024 280e CMP r0,#0xe
000026 d007 BEQ |L2.56|
000028 280f CMP r0,#0xf
00002a d14b BNE |L2.196|
;;;250 case WM_KEY:
;;;251 _OnKey(hObj, pObj, pMsg);
;;;252 break;
;;;253 case WM_PAINT:
;;;254 GUI_DEBUG_LOG("CHECKBOX: _Callback(WM_PAINT)\n");
;;;255 _Paint(pObj, hObj);
00002c 4649 MOV r1,r9
00002e 4620 MOV r0,r4
000030 e8bd47f0 POP {r4-r10,lr}
000034 f7ffbffe B.W _Paint
|L2.56|
000038 4648 MOV r0,r9
00003a f7fffffe BL WM__IsEnabled
00003e b390 CBZ r0,|L2.166|
000040 68a8 LDR r0,[r5,#8]
000042 6841 LDR r1,[r0,#4]
000044 2900 CMP r1,#0
000046 dd3d BLE |L2.196|
000048 6800 LDR r0,[r0,#0]
00004a 2820 CMP r0,#0x20
00004c d13a BNE |L2.196|
00004e 3450 ADDS r4,r4,#0x50
000050 7860 LDRB r0,[r4,#1]
000052 7821 LDRB r1,[r4,#0]
000054 1c40 ADDS r0,r0,#1
000056 fbb0f2f1 UDIV r2,r0,r1
00005a fb010012 MLS r0,r1,r2,r0
00005e 7060 STRB r0,[r4,#1]
000060 4648 MOV r0,r9
000062 f7fffffe BL WM_InvalidateWindow
000066 e02d B |L2.196|
|L2.104|
000068 68a8 LDR r0,[r5,#8]
00006a 2600 MOVS r6,#0
00006c 4637 MOV r7,r6
00006e 4680 MOV r8,r0
000070 b1e8 CBZ r0,|L2.174|
000072 4648 MOV r0,r9
000074 f7fffffe BL WM_HasCaptured
000078 b9d0 CBNZ r0,|L2.176|
00007a f8980008 LDRB r0,[r8,#8]
00007e b198 CBZ r0,|L2.168|
000080 2101 MOVS r1,#1
000082 4648 MOV r0,r9
000084 f7fffffe BL WM_SetCapture
000088 3450 ADDS r4,r4,#0x50
00008a 7860 LDRB r0,[r4,#1]
00008c 7821 LDRB r1,[r4,#0]
00008e 1c40 ADDS r0,r0,#1
000090 fbb0f2f1 UDIV r2,r0,r1
000094 fb010012 MLS r0,r1,r2,r0
000098 7060 STRB r0,[r4,#1]
00009a 3c50 SUBS r4,r4,#0x50
00009c 4648 MOV r0,r9
00009e f7fffffe BL WM_InvalidateWindow
0000a2 2601 MOVS r6,#1
0000a4 e004 B |L2.176|
|L2.166|
0000a6 e00d B |L2.196|
|L2.168|
0000a8 2701 MOVS r7,#1
0000aa 2602 MOVS r6,#2
0000ac e000 B |L2.176|
|L2.174|
0000ae 2603 MOVS r6,#3
|L2.176|
0000b0 4631 MOV r1,r6
0000b2 4648 MOV r0,r9
0000b4 f7fffffe BL WM_NotifyParent
0000b8 2f01 CMP r7,#1
0000ba d103 BNE |L2.196|
0000bc f9b40024 LDRSH r0,[r4,#0x24]
0000c0 f7fffffe BL GUI_StoreKey
|L2.196|
;;;256 return;
;;;257 case WM_TOUCH:
;;;258 _OnTouch(hObj, pObj, pMsg);
;;;259 break;
;;;260 }
;;;261 WM_DefaultProc(pMsg);
0000c4 4628 MOV r0,r5
0000c6 e8bd47f0 POP {r4-r10,lr}
0000ca f7ffbffe B.W WM_DefaultProc
|L2.206|
;;;262 }
0000ce e8bd87f0 POP {r4-r10,pc}
;;;263
ENDP
AREA ||i._Paint||, CODE, READONLY, ALIGN=1
_Paint PROC
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -