📄 menu.txt
字号:
; generated by ARM C/C++ Compiler with , RVCT4.0 [Build 524] for uVision
; commandline ArmCC [--split_sections --debug -c --asm --interleave -o.\Obj\menu.o --depend=.\Obj\menu.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\MENU.c]
THUMB
AREA ||i.MENU_AddItem||, CODE, READONLY, ALIGN=1
MENU_AddItem PROC
;;;1138 */
;;;1139 void MENU_AddItem(MENU_Handle hObj, const MENU_ITEM_DATA* pItemData) {
000000 e92d41f0 PUSH {r4-r8,lr}
000004 0005 MOVS r5,r0
000006 460e MOV r6,r1
;;;1140 if (hObj && pItemData) {
000008 d026 BEQ |L1.88|
00000a 2e00 CMP r6,#0
00000c d024 BEQ |L1.88|
;;;1141 MENU_Obj* pObj;
;;;1142 WM_LOCK();
;;;1143 pObj = MENU_H2P(hObj);
00000e 4628 MOV r0,r5
000010 f7fffffe BL GUI_ALLOC_h2p
000014 0004 MOVS r4,r0
;;;1144 if (pObj) {
000016 d01f BEQ |L1.88|
;;;1145 if (GUI_ARRAY_AddItem(&pObj->ItemArray, NULL, 0) == 0) {
000018 2200 MOVS r2,#0
00001a f1040058 ADD r0,r4,#0x58
00001e 4611 MOV r1,r2
000020 4680 MOV r8,r0
000022 f7fffffe BL GUI_ARRAY_AddItem
000026 2800 CMP r0,#0
000028 d116 BNE |L1.88|
00002a 4640 MOV r0,r8
00002c f7fffffe BL GUI_ARRAY_GetNumItems
;;;1146 unsigned Index;
;;;1147 Index = MENU__GetNumItems(pObj) - 1;
000030 1e47 SUBS r7,r0,#1
;;;1148 if (MENU__SetItem(hObj, pObj, Index, pItemData) == 0) {
000032 4633 MOV r3,r6
000034 463a MOV r2,r7
000036 4621 MOV r1,r4
000038 4628 MOV r0,r5
00003a f7fffffe BL MENU__SetItem
00003e b928 CBNZ r0,|L1.76|
;;;1149 GUI_ARRAY_DeleteItem(&pObj->ItemArray, Index);
000040 4639 MOV r1,r7
000042 4640 MOV r0,r8
000044 e8bd41f0 POP {r4-r8,lr}
000048 f7ffbffe B.W GUI_ARRAY_DeleteItem
|L1.76|
;;;1150 } else {
;;;1151 MENU__ResizeMenu(hObj, pObj);
00004c 4621 MOV r1,r4
00004e 4628 MOV r0,r5
000050 e8bd41f0 POP {r4-r8,lr}
000054 f7ffbffe B.W MENU__ResizeMenu
|L1.88|
;;;1152 }
;;;1153 }
;;;1154 }
;;;1155 WM_UNLOCK();
;;;1156 }
;;;1157 }
000058 e8bd81f0 POP {r4-r8,pc}
;;;1158
ENDP
AREA ||i.MENU_CreateEx||, CODE, READONLY, ALIGN=2
MENU_CreateEx PROC
;;;981 */
;;;982 MENU_Handle MENU_CreateEx(int x0, int y0, int xSize, int ySize, WM_HWIN hParent, int WinFlags, int ExFlags, int Id) {
000000 e92d47ff PUSH {r0-r10,lr}
000004 4604 MOV r4,r0
000006 460e MOV r6,r1
;;;983 MENU_Handle hObj;
;;;984 /* Create the window */
;;;985 hObj = WM_CreateWindowAsChild(x0, y0, xSize, ySize, hParent, WM_CF_SHOW | WM_CF_STAYONTOP | WinFlags, &_MENU_Callback,
000008 a80c ADD r0,sp,#0x30
00000a e8900223 LDM r0,{r0,r1,r5,r9}
00000e 4617 MOV r7,r2 ;982
000010 4698 MOV r8,r3 ;982
000012 b289 UXTH r1,r1
000014 2350 MOVS r3,#0x50
000016 4a20 LDR r2,|L2.152|
000018 f041010a ORR r1,r1,#0xa
00001c e88d000f STM sp,{r0-r3}
000020 4643 MOV r3,r8
000022 463a MOV r2,r7
000024 4631 MOV r1,r6
000026 4620 MOV r0,r4
000028 f7fffffe BL WM_CreateWindowAsChild
00002c 0006 MOVS r6,r0
;;;986 sizeof(MENU_Obj) - sizeof(WM_Obj));
;;;987 if (hObj) {
00002e d02e BEQ |L2.142|
;;;988 MENU_Obj* pObj;
;;;989 WM_LOCK();
;;;990 pObj = (MENU_Obj*)GUI_ALLOC_h2p(hObj);
000030 4630 MOV r0,r6
000032 f7fffffe BL GUI_ALLOC_h2p
000036 4604 MOV r4,r0
;;;991 /* Init sub-classes */
;;;992 GUI_ARRAY_CREATE(&pObj->ItemArray);
;;;993 /* init widget specific variables */
;;;994 WIDGET__Init(&pObj->Widget, Id, WIDGET_STATE_FOCUSSABLE);
000038 2210 MOVS r2,#0x10
00003a 4649 MOV r1,r9
00003c f7fffffe BL WIDGET__Init
;;;995 /* init member variables */
;;;996 if (ExFlags & MENU_SF_OPEN_ON_POINTEROVER) {
000040 07a8 LSLS r0,r5,#30
000042 d502 BPL |L2.74|
;;;997 ExFlags |= MENU_SF_ACTIVE;
000044 f0450540 ORR r5,r5,#0x40
000048 e001 B |L2.78|
|L2.74|
;;;998 } else {
;;;999 ExFlags &= ~(MENU_SF_ACTIVE);
00004a f0250540 BIC r5,r5,#0x40
|L2.78|
;;;1000 }
;;;1001 pObj->Props = MENU__DefaultProps;
00004e 2230 MOVS r2,#0x30
000050 4912 LDR r1,|L2.156|
000052 f1040028 ADD r0,r4,#0x28
000056 f7fffffe BL __aeabi_memcpy4
;;;1002 pObj->Flags = ExFlags;
;;;1003 pObj->Width = ((xSize > 0) ? xSize : 0);
00005a 2100 MOVS r1,#0
00005c f8a4505e STRH r5,[r4,#0x5e] ;1002
000060 4608 MOV r0,r1
000062 2f00 CMP r7,#0
000064 dd00 BLE |L2.104|
000066 4638 MOV r0,r7
|L2.104|
;;;1004 pObj->Height = ((ySize > 0) ? ySize : 0);
000068 6660 STR r0,[r4,#0x64]
00006a 4608 MOV r0,r1
00006c f1b80f00 CMP r8,#0
000070 dd00 BLE |L2.116|
000072 4640 MOV r0,r8
|L2.116|
000074 345c ADDS r4,r4,#0x5c
;;;1005 pObj->Sel = -1;
000076 60e0 STR r0,[r4,#0xc]
000078 f04f30ff MOV r0,#0xffffffff
;;;1006 pObj->hOwner = 0;
00007c 6120 STR r0,[r4,#0x10]
;;;1007 pObj->IsSubmenuActive = 0;
;;;1008 WIDGET_SetEffect(hObj, MENU__pDefaultEffect);
00007e 4807 LDR r0,|L2.156|
000080 8021 STRH r1,[r4,#0] ;1006
000082 7121 STRB r1,[r4,#4] ;1007
000084 1f00 SUBS r0,r0,#4
000086 6801 LDR r1,[r0,#0] ; MENU__pDefaultEffect
000088 4630 MOV r0,r6
00008a f7fffffe BL WIDGET_SetEffect
|L2.142|
;;;1009 INIT_ID(pObj);
;;;1010 WM_UNLOCK();
;;;1011 } else {
;;;1012 GUI_DEBUG_ERROROUT_IF(hObj==0, "MENU_CreateEx failed")
;;;1013 }
;;;1014 return hObj;
00008e 4630 MOV r0,r6
;;;1015 }
000090 b004 ADD sp,sp,#0x10
000092 e8bd87f0 POP {r4-r10,pc}
;;;1016
ENDP
000096 0000 DCW 0x0000
|L2.152|
DCD _MENU_Callback
|L2.156|
DCD ||.data||+0x4
AREA ||i.MENU_SetOwner||, CODE, READONLY, ALIGN=1
MENU_SetOwner PROC
;;;1162 */
;;;1163 void MENU_SetOwner(MENU_Handle hObj, WM_HWIN hOwner) {
000000 b510 PUSH {r4,lr}
000002 460c MOV r4,r1
;;;1164 if (hObj) {
000004 2800 CMP r0,#0
000006 d005 BEQ |L3.20|
;;;1165 MENU_Obj* pObj;
;;;1166 WM_LOCK();
;;;1167 pObj = MENU_H2P(hObj);
000008 f7fffffe BL GUI_ALLOC_h2p
;;;1168 if (pObj) {
00000c 2800 CMP r0,#0
00000e d001 BEQ |L3.20|
;;;1169 pObj->hOwner = hOwner;
000010 f8a0405c STRH r4,[r0,#0x5c]
|L3.20|
;;;1170 }
;;;1171 WM_UNLOCK();
;;;1172 }
;;;1173 }
000014 bd10 POP {r4,pc}
;;;1174
ENDP
AREA ||i.MENU__GetNumItems||, CODE, READONLY, ALIGN=1
MENU__GetNumItems PROC
;;;1026 */
;;;1027 unsigned MENU__GetNumItems(MENU_Obj* pObj) {
000000 3058 ADDS r0,r0,#0x58
;;;1028 return GUI_ARRAY_GetNumItems(&pObj->ItemArray);
000002 f7ffbffe B.W GUI_ARRAY_GetNumItems
;;;1029 }
;;;1030
ENDP
AREA ||i.MENU__InvalidateItem||, CODE, READONLY, ALIGN=1
MENU__InvalidateItem PROC
;;;1034 */
;;;1035 void MENU__InvalidateItem(MENU_Handle hObj, const MENU_Obj* pObj, unsigned Index) {
000000 f7ffbffe B.W WM_InvalidateWindow
;;;1036 GUI_USE_PARA(pObj);
;;;1037 GUI_USE_PARA(Index);
;;;1038 WM_InvalidateWindow(hObj); /* Can be optimized, no need to invalidate all items */
;;;1039 }
;;;1040
ENDP
AREA ||i.MENU__RecalcTextWidthOfItems||, CODE, READONLY, ALIGN=1
MENU__RecalcTextWidthOfItems PROC
;;;1044 */
;;;1045 void MENU__RecalcTextWidthOfItems(MENU_Obj* pObj) {
000000 e92d41f0 PUSH {r4-r8,lr}
000004 4604 MOV r4,r0
000006 3058 ADDS r0,r0,#0x58
000008 4680 MOV r8,r0
00000a f7fffffe BL GUI_ARRAY_GetNumItems
;;;1046 const GUI_FONT GUI_UNI_PTR* pOldFont;
;;;1047 MENU_ITEM* pItem;
;;;1048 unsigned i, NumItems;
;;;1049 NumItems = MENU__GetNumItems(pObj);
00000e 4606 MOV r6,r0
;;;1050 pOldFont = GUI_SetFont(pObj->Props.pFont);
000010 6d60 LDR r0,[r4,#0x54]
000012 f7fffffe BL GUI_SetFont
000016 4607 MOV r7,r0
;;;1051 for (i = 0; i < NumItems; i++) {
000018 2400 MOVS r4,#0
00001a e009 B |L6.48|
|L6.28|
;;;1052 pItem = (MENU_ITEM*)GUI_ARRAY_GetpItem(&pObj->ItemArray, i);
00001c 4621 MOV r1,r4
00001e 4640 MOV r0,r8
000020 f7fffffe BL GUI_ARRAY_GetpItem
000024 4605 MOV r5,r0
;;;1053 pItem->TextWidth = GUI_GetStringDistX(pItem->acText);
000026 300c ADDS r0,r0,#0xc
000028 f7fffffe BL GUI_GetStringDistX
00002c 1c64 ADDS r4,r4,#1 ;1051
00002e 60a8 STR r0,[r5,#8] ;1051
|L6.48|
000030 42b4 CMP r4,r6 ;1051
000032 d3f3 BCC |L6.28|
;;;1054 }
;;;1055 GUI_SetFont(pOldFont);
000034 4638 MOV r0,r7
000036 e8bd41f0 POP {r4-r8,lr}
00003a f7ffbffe B.W GUI_SetFont
;;;1056 }
;;;1057
ENDP
AREA ||i.MENU__ResizeMenu||, CODE, READONLY, ALIGN=1
MENU__ResizeMenu PROC
;;;1061 */
;;;1062 void MENU__ResizeMenu(MENU_Handle hObj, MENU_Obj* pObj) {
000000 b570 PUSH {r4-r6,lr}
000002 4605 MOV r5,r0
000004 6e48 LDR r0,[r1,#0x64]
000006 460c MOV r4,r1
000008 b918 CBNZ r0,|L7.18|
00000a 4621 MOV r1,r4
00000c 4628 MOV r0,r5
00000e f7fffffe BL _CalcMenuSizeX
|L7.18|
;;;1063 int xSize, ySize;
;;;1064 xSize = _CalcWindowSizeX(hObj, pObj);
000012 4606 MOV r6,r0
000014 6ea0 LDR r0,[r4,#0x68]
000016 b918 CBNZ r0,|L7.32|
000018 4621 MOV r1,r4
00001a 4628 MOV r0,r5
00001c f7fffffe BL _CalcMenuSizeY
|L7.32|
;;;1065 ySize = _CalcWindowSizeY(hObj, pObj);
;;;1066 WM_SetSize(hObj, xSize, ySize);
000020 4602 MOV r2,r0
000022 4631 MOV r1,r6
000024 4628 MOV r0,r5
000026 f7fffffe BL WM_SetSize
;;;1067 WM_InvalidateWindow(hObj);
00002a 4628 MOV r0,r5
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -