📄 dropdown.txt
字号:
; generated by ARM C/C++ Compiler with , RVCT4.0 [Build 524] for uVision
; commandline ArmCC [--split_sections --debug -c --asm --interleave -o.\Obj\dropdown.o --depend=.\Obj\dropdown.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\DROPDOWN.c]
THUMB
AREA ||i.DROPDOWN_AddKey||, CODE, READONLY, ALIGN=1
DROPDOWN_AddKey PROC
;;;464 */
;;;465 void DROPDOWN_AddKey(DROPDOWN_Handle hObj, int Key) {
000000 e92d41f0 PUSH {r4-r8,lr}
000004 0006 MOVS r6,r0
;;;466 if (hObj) {
000006 d02c BEQ |L1.98|
;;;467 WM_LOCK();
;;;468 switch (Key) {
000008 2911 CMP r1,#0x11
00000a d006 BEQ |L1.26|
00000c 2913 CMP r1,#0x13
00000e d109 BNE |L1.36|
;;;469 case GUI_KEY_DOWN:
;;;470 DROPDOWN_IncSel(hObj);
000010 4630 MOV r0,r6
000012 e8bd41f0 POP {r4-r8,lr}
000016 f7ffbffe B.W DROPDOWN_IncSel
|L1.26|
;;;471 break;
;;;472 case GUI_KEY_UP:
;;;473 DROPDOWN_DecSel(hObj);
00001a 4630 MOV r0,r6
00001c e8bd41f0 POP {r4-r8,lr}
000020 f7ffbffe B.W DROPDOWN_DecSel
|L1.36|
;;;474 break;
;;;475 default:
;;;476 _SelectByKey(hObj, Key);
000024 460c MOV r4,r1
000026 4630 MOV r0,r6
000028 f7fffffe BL GUI_ALLOC_h2p
00002c 4607 MOV r7,r0
00002e 4620 MOV r0,r4
000030 f7fffffe BL _Tolower
000034 4605 MOV r5,r0
000036 2400 MOVS r4,#0
000038 e010 B |L1.92|
|L1.58|
00003a 4621 MOV r1,r4
00003c 4638 MOV r0,r7
00003e f7fffffe BL _GetpItem
000042 7800 LDRB r0,[r0,#0]
000044 f7fffffe BL _Tolower
000048 b2c0 UXTB r0,r0
00004a 42a8 CMP r0,r5
00004c d105 BNE |L1.90|
00004e 4621 MOV r1,r4
000050 4630 MOV r0,r6
000052 e8bd41f0 POP {r4-r8,lr}
000056 f7ffbffe B.W DROPDOWN_SetSel
|L1.90|
00005a 1c64 ADDS r4,r4,#1
|L1.92|
00005c 8df8 LDRH r0,[r7,#0x2e]
00005e 42a0 CMP r0,r4
000060 dceb BGT |L1.58|
|L1.98|
;;;477 break;
;;;478 }
;;;479 WM_UNLOCK();
;;;480 }
;;;481 }
000062 e8bd81f0 POP {r4-r8,pc}
;;;482
ENDP
AREA ||i.DROPDOWN_AddString||, CODE, READONLY, ALIGN=1
DROPDOWN_AddString PROC
;;;486 */
;;;487 void DROPDOWN_AddString(DROPDOWN_Handle hObj, const char* s) {
000000 b570 PUSH {r4-r6,lr}
000002 0004 MOVS r4,r0
000004 460d MOV r5,r1
;;;488 DROPDOWN_Obj* pObj;
;;;489 if (hObj && s) {
000006 d013 BEQ |L2.48|
000008 2d00 CMP r5,#0
00000a d011 BEQ |L2.48|
;;;490 WM_LOCK();
;;;491 pObj = DROPDOWN_H2P(hObj);
00000c 4620 MOV r0,r4
00000e f7fffffe BL GUI_ALLOC_h2p
000012 4606 MOV r6,r0
;;;492 GUI_ARRAY_AddItem(&pObj->Handles, s, strlen(s) + 1);
000014 4628 MOV r0,r5
000016 f7fffffe BL strlen
00001a 1c42 ADDS r2,r0,#1
00001c 4629 MOV r1,r5
00001e f106002e ADD r0,r6,#0x2e
000022 f7fffffe BL GUI_ARRAY_AddItem
;;;493 DROPDOWN_Invalidate(hObj);
000026 4620 MOV r0,r4
000028 e8bd4070 POP {r4-r6,lr}
00002c f7ffbffe B.W WM_InvalidateWindow
|L2.48|
;;;494 WM_UNLOCK();
;;;495 }
;;;496 }
000030 bd70 POP {r4-r6,pc}
;;;497
ENDP
AREA ||i.DROPDOWN_Collapse||, CODE, READONLY, ALIGN=1
DROPDOWN_Collapse PROC
;;;392 */
;;;393 void DROPDOWN_Collapse(DROPDOWN_Handle hObj) {
000000 b510 PUSH {r4,lr}
;;;394 DROPDOWN_Obj* pObj;
;;;395 if (hObj) {
000002 2800 CMP r0,#0
000004 d00b BEQ |L3.30|
;;;396 WM_LOCK();
;;;397 pObj = DROPDOWN_H2P(hObj);
000006 f7fffffe BL GUI_ALLOC_h2p
00000a 4604 MOV r4,r0
;;;398 if (pObj->hListWin) {
00000c f9b00060 LDRSH r0,[r0,#0x60]
000010 2800 CMP r0,#0
000012 d004 BEQ |L3.30|
;;;399 WM_DeleteWindow(pObj->hListWin);
000014 f7fffffe BL WM_DeleteWindow
;;;400 pObj->hListWin = 0;
000018 2000 MOVS r0,#0
00001a f8a40060 STRH r0,[r4,#0x60]
|L3.30|
;;;401 }
;;;402 WM_UNLOCK();
;;;403 }
;;;404 }
00001e bd10 POP {r4,pc}
;;;405
ENDP
AREA ||i.DROPDOWN_CreateEx||, CODE, READONLY, ALIGN=2
DROPDOWN_CreateEx PROC
;;;356 */
;;;357 DROPDOWN_Handle DROPDOWN_CreateEx(int x0, int y0, int xsize, int ysize, WM_HWIN hParent,
000000 e92d41ff PUSH {r0-r8,lr}
;;;358 int WinFlags, int ExFlags, int Id)
;;;359 {
000004 4606 MOV r6,r0
000006 460f MOV r7,r1
;;;360 DROPDOWN_Handle hObj;
;;;361 hObj = WM_CreateWindowAsChild(x0, y0, xsize, -1, hParent, WinFlags, _DROPDOWN_Callback,
000008 a80a ADD r0,sp,#0x28
00000a e8900123 LDM r0,{r0,r1,r5,r8}
00000e 4694 MOV r12,r2 ;359
000010 461c MOV r4,r3 ;359
000012 2348 MOVS r3,#0x48
000014 4a14 LDR r2,|L4.104|
000016 b289 UXTH r1,r1
000018 e88d000f STM sp,{r0-r3}
00001c f04f33ff MOV r3,#0xffffffff
000020 4662 MOV r2,r12
000022 4639 MOV r1,r7
000024 4630 MOV r0,r6
000026 f7fffffe BL WM_CreateWindowAsChild
00002a 0007 MOVS r7,r0
;;;362 sizeof(DROPDOWN_Obj) - sizeof(WM_Obj));
;;;363 if (hObj) {
00002c d017 BEQ |L4.94|
;;;364 DROPDOWN_Obj* pObj;
;;;365 WM_LOCK();
;;;366 pObj = DROPDOWN_H2P(hObj);
00002e 4638 MOV r0,r7
000030 f7fffffe BL GUI_ALLOC_h2p
000034 4606 MOV r6,r0
;;;367 /* Init sub-classes */
;;;368 GUI_ARRAY_CREATE(&pObj->Handles);
;;;369 /* init widget specific variables */
;;;370 WIDGET__Init(&pObj->Widget, Id, WIDGET_STATE_FOCUSSABLE);
000036 2210 MOVS r2,#0x10
000038 4641 MOV r1,r8
00003a f7fffffe BL WIDGET__Init
;;;371 pObj->Flags = ExFlags;
00003e f8865062 STRB r5,[r6,#0x62]
;;;372 pObj->Props = DROPDOWN__DefaultProps;
000042 2220 MOVS r2,#0x20
000044 4909 LDR r1,|L4.108|
000046 f1060040 ADD r0,r6,#0x40
00004a f7fffffe BL __aeabi_memcpy4
;;;373 pObj->ScrollbarWidth = 0;
00004e 2100 MOVS r1,#0
000050 f8861066 STRB r1,[r6,#0x66]
;;;374 INIT_ID(pObj);
;;;375 pObj->ySizeEx = ysize;
000054 8574 STRH r4,[r6,#0x2a]
;;;376 DROPDOWN__AdjustHeight(hObj, pObj);
000056 4631 MOV r1,r6
000058 4638 MOV r0,r7
00005a f7fffffe BL DROPDOWN__AdjustHeight
|L4.94|
;;;377 WM_UNLOCK();
;;;378 }
;;;379 return hObj;
00005e 4638 MOV r0,r7
;;;380 }
000060 b004 ADD sp,sp,#0x10
000062 e8bd81f0 POP {r4-r8,pc}
;;;381
ENDP
000066 0000 DCW 0x0000
|L4.104|
DCD _DROPDOWN_Callback
|L4.108|
DCD ||.data||
AREA ||i.DROPDOWN_DecSel||, CODE, READONLY, ALIGN=1
DROPDOWN_DecSel PROC
;;;620 */
;;;621 void DROPDOWN_DecSel(DROPDOWN_Handle hObj) {
000000 b510 PUSH {r4,lr}
000002 4604 MOV r4,r0
;;;622 int Sel = DROPDOWN_GetSel(hObj);
000004 f7fffffe BL DROPDOWN_GetSel
;;;623 if (Sel)
000008 b100 CBZ r0,|L5.12|
;;;624 Sel--;
00000a 1e40 SUBS r0,r0,#1
|L5.12|
;;;625 DROPDOWN_SetSel(hObj, Sel);
00000c 4601 MOV r1,r0
00000e 4620 MOV r0,r4
000010 e8bd4010 POP {r4,lr}
000014 f7ffbffe B.W DROPDOWN_SetSel
;;;626 }
;;;627
ENDP
AREA ||i.DROPDOWN_Expand||, CODE, READONLY, ALIGN=2
DROPDOWN_Expand PROC
;;;409 */
;;;410 void DROPDOWN_Expand(DROPDOWN_Handle hObj) {
000000 e92d43f0 PUSH {r4-r9,lr}
000004 b085 SUB sp,sp,#0x14
000006 ea5f0800 MOVS r8,r0
;;;411 int xSize, ySize, i, NumItems;
;;;412 WM_HWIN hLst;
;;;413 GUI_RECT r;
;;;414 WM_HWIN hParent;
;;;415 WM_Obj* pParent;
;;;416 DROPDOWN_Obj* pObj;
;;;417 if (hObj) {
00000a d07e BEQ |L6.266|
;;;418 WM_LOCK();
;;;419 pObj = DROPDOWN_H2P(hObj);
00000c 4640 MOV r0,r8
00000e f7fffffe BL GUI_ALLOC_h2p
000012 4604 MOV r4,r0
;;;420 if (pObj->hListWin == 0) {
000014 f8b00060 LDRH r0,[r0,#0x60]
000018 2800 CMP r0,#0
00001a d176 BNE |L6.266|
;;;421 hParent = WM_GetParent(hObj);
00001c 4640 MOV r0,r8
00001e f7fffffe BL WM_GetParent
;;;422 pParent = WM_H2P(hParent);
000022 f7fffffe BL GUI_ALLOC_h2p
000026 4606 MOV r6,r0
;;;423 xSize = WM__GetWindowSizeX(&pObj->Widget.Win);
000028 4620 MOV r0,r4
00002a f7fffffe BL WM__GetWindowSizeX
00002e 4681 MOV r9,r0
;;;424 ySize = pObj->ySizeEx;
000030 f9b4502a LDRSH r5,[r4,#0x2a]
;;;425 NumItems = _GetNumItems(pObj);
000034 8de7 LDRH r7,[r4,#0x2e]
;;;426 /* Get coordinates of window in client coordiantes of parent */
;;;427 r = pObj->Widget.Win.Rect;
000036 e9d40100 LDRD r0,r1,[r4,#0]
;;;428 GUI_MoveRect(&r, -pParent->Rect.x0, -pParent->Rect.y0);
00003a e9cd0103 STRD r0,r1,[sp,#0xc]
00003e f9b60002 LDRSH r0,[r6,#2]
000042 4242 RSBS r2,r0,#0
000044 f9b60000 LDRSH r0,[r6,#0]
000048 4241 RSBS r1,r0,#0
00004a a803 ADD r0,sp,#0xc
00004c f7fffffe BL GUI_MoveRect
;;;429 if (pObj->Flags & DROPDOWN_CF_UP) {
000050 f8940062 LDRB r0,[r4,#0x62]
000054 0780 LSLS r0,r0,#30
000056 d503 BPL |L6.96|
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -