📄 multiedit.txt
字号:
; generated by ARM C/C++ Compiler with , RVCT4.0 [Build 524] for uVision
; commandline ArmCC [--split_sections --debug -c --asm --interleave -o.\Obj\multiedit.o --depend=.\Obj\multiedit.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\MULTIEDIT.c]
THUMB
AREA ||i.MULTIEDIT_AddKey||, CODE, READONLY, ALIGN=1
MULTIEDIT_AddKey PROC
;;;1442 */
;;;1443 int MULTIEDIT_AddKey(MULTIEDIT_HANDLE hObj, U16 Key) {
000000 0002 MOVS r2,r0
;;;1444 int r = 0;
000002 f04f0000 MOV r0,#0
;;;1445 if (hObj) {
000006 d002 BEQ |L1.14|
;;;1446 WM_LOCK();
;;;1447 r = _AddKey(hObj, Key);
000008 4610 MOV r0,r2
00000a f7ffbffe B.W _AddKey
|L1.14|
;;;1448 WM_UNLOCK();
;;;1449 }
;;;1450 return r;
;;;1451 }
00000e 4770 BX lr
;;;1452
ENDP
AREA ||i.MULTIEDIT_CreateEx||, CODE, READONLY, ALIGN=2
MULTIEDIT_CreateEx PROC
;;;1378 */
;;;1379 MULTIEDIT_HANDLE MULTIEDIT_CreateEx(int x0, int y0, int xsize, int ysize, WM_HWIN hParent, int WinFlags, int ExFlags,
000000 e92d5fff PUSH {r0-r12,lr}
;;;1380 int Id, int BufferSize, const char* pText)
;;;1381 {
000004 4681 MOV r9,r0
;;;1382 MULTIEDIT_HANDLE hObj;
;;;1383 /* Create the window */
;;;1384 WM_LOCK();
;;;1385 if ((xsize == 0) && (ysize == 0) && (x0 == 0) && (y0 == 0)) {
000006 ea420003 ORR r0,r2,r3
00000a e9ddb70e LDRD r11,r7,[sp,#0x38]
00000e ea400009 ORR r0,r0,r9
000012 f8dd8040 LDR r8,[sp,#0x40]
000016 9e12 LDR r6,[sp,#0x48]
000018 468a MOV r10,r1 ;1381
00001a 4614 MOV r4,r2 ;1381
00001c 461d MOV r5,r3 ;1381
00001e 4308 ORRS r0,r0,r1
000020 d10f BNE |L2.66|
;;;1386 GUI_RECT Rect;
;;;1387 WM_GetClientRectEx(hParent, &Rect);
000022 a902 ADD r1,sp,#8
000024 4658 MOV r0,r11
000026 f7fffffe BL WM_GetClientRectEx
;;;1388 xsize = Rect.x1 - Rect.x0 + 1;
00002a f9bd000c LDRSH r0,[sp,#0xc]
00002e f9bd1008 LDRSH r1,[sp,#8]
000032 1a44 SUBS r4,r0,r1
;;;1389 ysize = Rect.y1 - Rect.y0 + 1;
000034 f9bd000e LDRSH r0,[sp,#0xe]
000038 f9bd100a LDRSH r1,[sp,#0xa]
00003c 1c64 ADDS r4,r4,#1 ;1388
00003e 1a45 SUBS r5,r0,r1
000040 1c6d ADDS r5,r5,#1
|L2.66|
;;;1390 }
;;;1391 hObj = WM_CreateWindowAsChild(x0, y0, xsize, ysize, hParent, WinFlags, &_MULTIEDIT_Callback,
000042 b2b9 UXTH r1,r7
000044 235c MOVS r3,#0x5c
000046 4a27 LDR r2,|L2.228|
000048 e9cdb100 STRD r11,r1,[sp,#0]
00004c e9cd2302 STRD r2,r3,[sp,#8]
000050 462b MOV r3,r5
000052 4622 MOV r2,r4
000054 4651 MOV r1,r10
000056 4648 MOV r0,r9
000058 f7fffffe BL WM_CreateWindowAsChild
00005c 0005 MOVS r5,r0
;;;1392 sizeof(MULTIEDIT_OBJ) - sizeof(WM_Obj));
;;;1393 if (hObj) {
00005e d03d BEQ |L2.220|
;;;1394 int i;
;;;1395 MULTIEDIT_OBJ* pObj = MULTIEDIT_H2P(hObj);
000060 4628 MOV r0,r5
000062 f7fffffe BL GUI_ALLOC_h2p
000066 4604 MOV r4,r0
;;;1396 /* init widget specific variables */
;;;1397 WIDGET__Init(&pObj->Widget, Id, WIDGET_STATE_FOCUSSABLE);
000068 2210 MOVS r2,#0x10
00006a 9911 LDR r1,[sp,#0x44]
00006c f7fffffe BL WIDGET__Init
;;;1398 /* init member variables */
;;;1399 MULTIEDIT_INIT_ID(pObj);
;;;1400 for (i = 0; i < NUM_DISP_MODES; i++) {
;;;1401 pObj->aBkColor[i] = _aDefaultBkColor[i];
000070 4b1d LDR r3,|L2.232|
000072 2000 MOVS r0,#0 ;1400
;;;1402 pObj->aColor[i] = _aDefaultColor[i];
000074 f1030708 ADD r7,r3,#8
|L2.120|
000078 f8532020 LDR r2,[r3,r0,LSL #2] ;1401
00007c eb040180 ADD r1,r4,r0,LSL #2 ;1401
000080 628a STR r2,[r1,#0x28]
000082 f8572020 LDR r2,[r7,r0,LSL #2]
000086 1c40 ADDS r0,r0,#1 ;1400
000088 630a STR r2,[r1,#0x30] ;1400
00008a 2802 CMP r0,#2 ;1400
00008c dbf4 BLT |L2.120|
;;;1403 }
;;;1404 pObj->pFont = _pDefaultFont;
00008e 4816 LDR r0,|L2.232|
;;;1405 pObj->Flags = ExFlags;
;;;1406 pObj->CursorPosChar = 0;
000090 3438 ADDS r4,r4,#0x38
000092 1f00 SUBS r0,r0,#4 ;1404
000094 6802 LDR r2,[r0,#0] ; _pDefaultFont
000096 2000 MOVS r0,#0
000098 63a2 STR r2,[r4,#0x38] ;1405
00009a f884803c STRB r8,[r4,#0x3c] ;1405
00009e 8220 STRH r0,[r4,#0x10]
;;;1407 pObj->CursorPosByte = 0;
;;;1408 pObj->HBorder = 1;
0000a0 2101 MOVS r1,#1
0000a2 8260 STRH r0,[r4,#0x12] ;1407
0000a4 f884103f STRB r1,[r4,#0x3f]
;;;1409 pObj->MaxNumChars = 0;
0000a8 8060 STRH r0,[r4,#2]
;;;1410 pObj->NumCharsPrompt = 0;
0000aa 80e0 STRH r0,[r4,#6]
;;;1411 pObj->BufferSize = 0;
0000ac 81a0 STRH r0,[r4,#0xc]
;;;1412 pObj->hText = 0;
0000ae f8240938 STRH r0,[r4],#-0x38
;;;1413 if (BufferSize > 0) {
0000b2 2e00 CMP r6,#0
0000b4 dd0b BLE |L2.206|
;;;1414 WM_HWIN hText;
;;;1415 if ((hText = GUI_ALLOC_AllocZero(BufferSize)) != 0) {
0000b6 b230 SXTH r0,r6
0000b8 f7fffffe BL GUI_ALLOC_AllocZero
0000bc b118 CBZ r0,|L2.198|
;;;1416 pObj->BufferSize = BufferSize;
0000be f8a46044 STRH r6,[r4,#0x44]
;;;1417 pObj->hText = hText;
0000c2 8720 STRH r0,[r4,#0x38]
0000c4 e003 B |L2.206|
|L2.198|
;;;1418 } else {
;;;1419 GUI_DEBUG_ERROROUT("MULTIEDIT_CreateEx failed to alloc buffer");
;;;1420 WM_DeleteWindow(hObj);
0000c6 4628 MOV r0,r5
0000c8 f7fffffe BL WM_DeleteWindow
;;;1421 hObj = 0;
0000cc 2500 MOVS r5,#0
|L2.206|
;;;1422 }
;;;1423 }
;;;1424 MULTIEDIT_SetText(hObj, pText);
0000ce 4628 MOV r0,r5
0000d0 9913 LDR r1,[sp,#0x4c]
0000d2 f7fffffe BL MULTIEDIT_SetText
;;;1425 _ManageScrollers(hObj);
0000d6 4628 MOV r0,r5
0000d8 f7fffffe BL _ManageScrollers
|L2.220|
;;;1426 } else {
;;;1427 GUI_DEBUG_ERROROUT_IF(hObj==0, "MULTIEDIT_CreateEx failed")
;;;1428 }
;;;1429 WM_UNLOCK();
;;;1430 return hObj;
0000dc 4628 MOV r0,r5
;;;1431 }
0000de b004 ADD sp,sp,#0x10
0000e0 e8bd9ff0 POP {r4-r12,pc}
;;;1432
ENDP
|L2.228|
DCD _MULTIEDIT_Callback
|L2.232|
DCD ||.data||+0x4
AREA ||i.MULTIEDIT_GetPrompt||, CODE, READONLY, ALIGN=1
MULTIEDIT_GetPrompt PROC
;;;1523 */
;;;1524 void MULTIEDIT_GetPrompt(MULTIEDIT_HANDLE hObj, char * sDest, int MaxLen) {
000000 e92d41f0 PUSH {r4-r8,lr}
000004 460e MOV r6,r1
000006 4615 MOV r5,r2
;;;1525 if (hObj) {
000008 2800 CMP r0,#0
00000a d017 BEQ |L3.60|
;;;1526 MULTIEDIT_OBJ * pObj;
;;;1527 WM_LOCK();
;;;1528 pObj = MULTIEDIT_H2P(hObj);
00000c f7fffffe BL GUI_ALLOC_h2p
000010 0004 MOVS r4,r0
;;;1529 if (pObj) {
000012 d013 BEQ |L3.60|
;;;1530 char* sSource = (char*)GUI_ALLOC_h2p(pObj->hText);
000014 f9b40038 LDRSH r0,[r4,#0x38]
000018 f7fffffe BL GUI_ALLOC_h2p
00001c 4607 MOV r7,r0
;;;1531 int Len = GUI_UC__NumChars2NumBytes(sSource, pObj->NumCharsPrompt);
00001e 8fe1 LDRH r1,[r4,#0x3e]
000020 f7fffffe BL GUI_UC__NumChars2NumBytes
;;;1532 if (Len > (MaxLen - 1)) {
000024 1e69 SUBS r1,r5,#1
000026 4604 MOV r4,r0 ;1531
000028 4288 CMP r0,r1
00002a dd00 BLE |L3.46|
;;;1533 Len = MaxLen - 1;
00002c 1e6c SUBS r4,r5,#1
|L3.46|
;;;1534 }
;;;1535 memcpy(sDest, sSource, Len);
00002e 4622 MOV r2,r4
000030 4639 MOV r1,r7
000032 4630 MOV r0,r6
000034 f7fffffe BL __aeabi_memcpy
;;;1536 *(sDest + Len) = 0;
000038 2000 MOVS r0,#0
00003a 5530 STRB r0,[r6,r4]
|L3.60|
;;;1537 }
;;;1538 WM_UNLOCK();
;;;1539 }
;;;1540 }
00003c e8bd81f0 POP {r4-r8,pc}
;;;1541
ENDP
AREA ||i.MULTIEDIT_GetText||, CODE, READONLY, ALIGN=1
MULTIEDIT_GetText PROC
;;;1498 */
;;;1499 void MULTIEDIT_GetText(MULTIEDIT_HANDLE hObj, char* sDest, int MaxLen) {
000000 e92d41f0 PUSH {r4-r8,lr}
000004 460f MOV r7,r1
000006 4616 MOV r6,r2
;;;1500 if (hObj) {
000008 2800 CMP r0,#0
00000a d01b BEQ |L4.68|
;;;1501 MULTIEDIT_OBJ* pObj;
;;;1502 WM_LOCK();
;;;1503 pObj = MULTIEDIT_H2P(hObj);
00000c f7fffffe BL GUI_ALLOC_h2p
000010 0004 MOVS r4,r0
;;;1504 if (pObj) {
000012 d017 BEQ |L4.68|
;;;1505 char* pText;
;;;1506 int Len;
;;;1507 pText = (char*) GUI_ALLOC_h2p(pObj->hText);
000014 f9b40038 LDRSH r0,[r4,#0x38]
000018 f7fffffe BL GUI_ALLOC_h2p
00001c 4605 MOV r5,r0
;;;1508 pText += GUI_UC__NumChars2NumBytes(pText, pObj->NumCharsPrompt);
00001e 8fe1 LDRH r1,[r4,#0x3e]
000020 f7fffffe BL GUI_UC__NumChars2NumBytes
000024 1944 ADDS r4,r0,r5
;;;1509 Len = strlen(pText);
000026 4620 MOV r0,r4
000028 f7fffffe BL strlen
;;;1510 if (Len > (MaxLen - 1)) {
00002c 1e71 SUBS r1,r6,#1
00002e 4605 MOV r5,r0 ;1509
000030 4288 CMP r0,r1
000032 dd00 BLE |L4.54|
;;;1511 Len = MaxLen - 1;
000034 1e75 SUBS r5,r6,#1
|L4.54|
;;;1512 }
;;;1513 memcpy(sDest, pText, Len);
000036 462a MOV r2,r5
000038 4621 MOV r1,r4
00003a 4638 MOV r0,r7
00003c f7fffffe BL __aeabi_memcpy
;;;1514 *(sDest + Len) = 0;
000040 2000 MOVS r0,#0
000042 5578 STRB r0,[r7,r5]
|L4.68|
;;;1515 }
;;;1516 WM_UNLOCK();
;;;1517 }
;;;1518 }
000044 e8bd81f0 POP {r4-r8,pc}
;;;1519
ENDP
AREA ||i.MULTIEDIT_GetTextSize||, CODE, READONLY, ALIGN=1
MULTIEDIT_GetTextSize PROC
;;;1803 */
;;;1804 int MULTIEDIT_GetTextSize(MULTIEDIT_HANDLE hObj) {
000000 b570 PUSH {r4-r6,lr}
;;;1805 int r = 0;
000002 2500 MOVS r5,#0
;;;1806 if (hObj) {
000004 b178 CBZ r0,|L5.38|
;;;1807 MULTIEDIT_OBJ* pObj;
;;;1808 WM_LOCK();
;;;1809 pObj = MULTIEDIT_H2P(hObj);
000006 f7fffffe BL GUI_ALLOC_h2p
00000a 4604 MOV r4,r0
;;;1810 if (pObj->hText) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -