📄 multiedit.txt
字号:
000028 d018 BEQ |L14.92|
;;;1779 char* pText;
;;;1780 int Offset;
;;;1781 pText = (char*) GUI_ALLOC_h2p(pObj->hText);
00002a f7fffffe BL GUI_ALLOC_h2p
00002e 4605 MOV r5,r0
;;;1782 Offset = GUI_UC__NumChars2NumBytes(pText, MaxNumChars);
000030 4639 MOV r1,r7
000032 f7fffffe BL GUI_UC__NumChars2NumBytes
;;;1783 if (Offset < pObj->BufferSize) {
000036 f8b41044 LDRH r1,[r4,#0x44]
00003a 4281 CMP r1,r0
00003c dd0e BLE |L14.92|
;;;1784 pText += Offset;
;;;1785 *pText = 0;
00003e 2200 MOVS r2,#0
000040 542a STRB r2,[r5,r0]
;;;1786 _SetCursorPos(hObj, pObj, Offset);
000042 4602 MOV r2,r0
000044 4621 MOV r1,r4
000046 4630 MOV r0,r6
000048 f7fffffe BL _SetCursorPos
;;;1787 _InvalidateTextArea(hObj);
00004c 4630 MOV r0,r6
00004e f7fffffe BL _InvalidateTextArea
000052 f8140f75 LDRB r0,[r4,#0x75]!
000056 f0400001 ORR r0,r0,#1
00005a 7020 STRB r0,[r4,#0]
|L14.92|
;;;1788 _InvalidateNumChars(pObj);
;;;1789 }
;;;1790 }
;;;1791 WM_UNLOCK();
;;;1792 }
;;;1793 }
00005c e8bd81f0 POP {r4-r8,pc}
;;;1794
ENDP
AREA ||i.MULTIEDIT_SetPasswordMode||, CODE, READONLY, ALIGN=1
MULTIEDIT_SetPasswordMode PROC
;;;1585 */
;;;1586 void MULTIEDIT_SetPasswordMode(MULTIEDIT_HANDLE hObj, int OnOff) {
000000 b570 PUSH {r4-r6,lr}
000002 0005 MOVS r5,r0
000004 460e MOV r6,r1
;;;1587 if (hObj) {
000006 d014 BEQ |L15.50|
;;;1588 MULTIEDIT_OBJ* pObj;
;;;1589 WM_LOCK();
;;;1590 pObj = MULTIEDIT_H2P(hObj);
000008 4628 MOV r0,r5
00000a f7fffffe BL GUI_ALLOC_h2p
00000e 4604 MOV r4,r0
;;;1591 _SetFlag(hObj, OnOff, MULTIEDIT_SF_PASSWORD);
000010 2220 MOVS r2,#0x20
000012 4631 MOV r1,r6
000014 4628 MOV r0,r5
000016 f7fffffe BL _SetFlag
00001a f8940075 LDRB r0,[r4,#0x75]
00001e f0400108 ORR r1,r0,#8
000022 b2c8 UXTB r0,r1
000024 f0400102 ORR r1,r0,#2
000028 b2c8 UXTB r0,r1
00002a f0400104 ORR r1,r0,#4
00002e f8841075 STRB r1,[r4,#0x75]
|L15.50|
;;;1592 _InvalidateCursorXY(pObj);
;;;1593 _InvalidateNumLines(pObj);
;;;1594 _InvalidateTextSizeX(pObj);
;;;1595 WM_UNLOCK();
;;;1596 }
;;;1597 }
000032 bd70 POP {r4-r6,pc}
;;;1598
ENDP
AREA ||i.MULTIEDIT_SetPrompt||, CODE, READONLY, ALIGN=1
MULTIEDIT_SetPrompt PROC
;;;1700 */
;;;1701 void MULTIEDIT_SetPrompt(MULTIEDIT_HANDLE hObj, const char* pPrompt) {
000000 e92d47f0 PUSH {r4-r10,lr}
000004 ea5f0a00 MOVS r10,r0
000008 4689 MOV r9,r1
;;;1702 if (hObj) {
00000a d054 BEQ |L16.182|
;;;1703 MULTIEDIT_OBJ* pObj;
;;;1704 int NumCharsNew = 0, NumCharsOld = 0;
00000c 2500 MOVS r5,#0
00000e 462e MOV r6,r5
;;;1705 int NumBytesNew = 0, NumBytesOld = 0;
000010 462f MOV r7,r5
000012 46a8 MOV r8,r5
;;;1706 char* pText;
;;;1707 WM_LOCK();
;;;1708 pObj = MULTIEDIT_H2P(hObj);
000014 4650 MOV r0,r10
000016 f7fffffe BL GUI_ALLOC_h2p
00001a 4604 MOV r4,r0
;;;1709 if (pObj->hText) {
00001c f9b00038 LDRSH r0,[r0,#0x38]
000020 b130 CBZ r0,|L16.48|
;;;1710 pText = (char*) GUI_ALLOC_h2p(pObj->hText);
000022 f7fffffe BL GUI_ALLOC_h2p
;;;1711 NumCharsOld = pObj->NumCharsPrompt;
000026 8fe6 LDRH r6,[r4,#0x3e]
;;;1712 NumBytesOld = GUI_UC__NumChars2NumBytes(pText, NumCharsOld);
000028 4631 MOV r1,r6
00002a f7fffffe BL GUI_UC__NumChars2NumBytes
00002e 4680 MOV r8,r0
|L16.48|
;;;1713 }
;;;1714 if (pPrompt) {
000030 f1b90f00 CMP r9,#0
000034 d008 BEQ |L16.72|
;;;1715 NumCharsNew = GUI__GetNumChars(pPrompt);
000036 4648 MOV r0,r9
000038 f7fffffe BL GUI__GetNumChars
00003c 4605 MOV r5,r0
;;;1716 NumBytesNew = GUI_UC__NumChars2NumBytes(pPrompt, NumCharsNew);
00003e 4601 MOV r1,r0
000040 4648 MOV r0,r9
000042 f7fffffe BL GUI_UC__NumChars2NumBytes
000046 4607 MOV r7,r0
|L16.72|
;;;1717 }
;;;1718 if (_IsCharsAvailable(pObj, NumCharsNew - NumCharsOld)) {
000048 1ba9 SUBS r1,r5,r6
00004a 4620 MOV r0,r4
00004c f7fffffe BL _IsCharsAvailable
000050 2800 CMP r0,#0
000052 d030 BEQ |L16.182|
;;;1719 if (_IsSpaceInBuffer(pObj, NumBytesNew - NumBytesOld)) {
000054 eba70108 SUB r1,r7,r8
000058 4620 MOV r0,r4
00005a f7fffffe BL _IsSpaceInBuffer
00005e 2800 CMP r0,#0
000060 d029 BEQ |L16.182|
;;;1720 pText = (char*) GUI_ALLOC_h2p(pObj->hText);
000062 f9b40038 LDRSH r0,[r4,#0x38]
000066 f7fffffe BL GUI_ALLOC_h2p
00006a 4606 MOV r6,r0
;;;1721 memmove(pText + NumBytesNew, pText + NumBytesOld, strlen(pText + NumBytesOld) + 1);
00006c 4480 ADD r8,r8,r0
00006e 4640 MOV r0,r8
000070 f7fffffe BL strlen
000074 1c42 ADDS r2,r0,#1
000076 19f0 ADDS r0,r6,r7
000078 4641 MOV r1,r8
00007a f7fffffe BL __aeabi_memmove
;;;1722 if (pPrompt) {
00007e f1b90f00 CMP r9,#0
000082 d004 BEQ |L16.142|
;;;1723 memcpy(pText, pPrompt, NumBytesNew);
000084 463a MOV r2,r7
000086 4649 MOV r1,r9
000088 4630 MOV r0,r6
00008a f7fffffe BL __aeabi_memcpy
|L16.142|
;;;1724 }
;;;1725 pObj->NumCharsPrompt = NumCharsNew;
00008e 87e5 STRH r5,[r4,#0x3e]
;;;1726 _SetCursorPos(hObj, pObj, NumCharsNew);
000090 462a MOV r2,r5
000092 4621 MOV r1,r4
000094 4650 MOV r0,r10
000096 f7fffffe BL _SetCursorPos
;;;1727 _InvalidateTextArea(hObj);
00009a 4650 MOV r0,r10
00009c f7fffffe BL _InvalidateTextArea
0000a0 f8140f75 LDRB r0,[r4,#0x75]!
0000a4 f0400001 ORR r0,r0,#1
0000a8 b2c0 UXTB r0,r0
0000aa f0400002 ORR r0,r0,#2
0000ae b2c0 UXTB r0,r0
0000b0 f0400004 ORR r0,r0,#4
0000b4 7020 STRB r0,[r4,#0]
|L16.182|
;;;1728 _InvalidateNumChars(pObj);
;;;1729 _InvalidateNumLines(pObj);
;;;1730 _InvalidateTextSizeX(pObj);
;;;1731 }
;;;1732 }
;;;1733 WM_UNLOCK();
;;;1734 }
;;;1735 }
0000b6 e8bd87f0 POP {r4-r10,pc}
;;;1736
ENDP
AREA ||i.MULTIEDIT_SetReadOnly||, CODE, READONLY, ALIGN=1
MULTIEDIT_SetReadOnly PROC
;;;1577 */
;;;1578 void MULTIEDIT_SetReadOnly(MULTIEDIT_HANDLE hObj, int OnOff) {
000000 2201 MOVS r2,#1
;;;1579 _SetFlag(hObj, OnOff, MULTIEDIT_SF_READONLY);
000002 f7ffbffe B.W _SetFlag
;;;1580 }
;;;1581
ENDP
AREA ||i.MULTIEDIT_SetText||, CODE, READONLY, ALIGN=1
MULTIEDIT_SetText PROC
;;;1456 */
;;;1457 void MULTIEDIT_SetText(MULTIEDIT_HANDLE hObj, const char* pNew) {
000000 e92d47f0 PUSH {r4-r10,lr}
000004 ea5f0a00 MOVS r10,r0
000008 4688 MOV r8,r1
;;;1458 if (hObj) {
00000a d058 BEQ |L18.190|
;;;1459 MULTIEDIT_OBJ* pObj;
;;;1460 int NumCharsNew = 0, NumCharsOld = 0;
00000c 2500 MOVS r5,#0
00000e 462e MOV r6,r5
;;;1461 int NumBytesNew = 0, NumBytesOld = 0;
000010 46a9 MOV r9,r5
000012 462f MOV r7,r5
;;;1462 char* pText;
;;;1463 WM_LOCK();
;;;1464 pObj = MULTIEDIT_H2P(hObj);
000014 4650 MOV r0,r10
000016 f7fffffe BL GUI_ALLOC_h2p
00001a 4604 MOV r4,r0
;;;1465 if (pObj->hText) {
00001c f9b00038 LDRSH r0,[r0,#0x38]
000020 b178 CBZ r0,|L18.66|
;;;1466 pText = (char*) GUI_ALLOC_h2p(pObj->hText);
000022 f7fffffe BL GUI_ALLOC_h2p
000026 4606 MOV r6,r0
;;;1467 pText += GUI_UC__NumChars2NumBytes(pText, pObj->NumCharsPrompt);
000028 8fe1 LDRH r1,[r4,#0x3e]
00002a f7fffffe BL GUI_UC__NumChars2NumBytes
00002e 1987 ADDS r7,r0,r6
;;;1468 NumCharsOld = GUI__GetNumChars(pText);
000030 4638 MOV r0,r7
000032 f7fffffe BL GUI__GetNumChars
000036 4606 MOV r6,r0
;;;1469 NumBytesOld = GUI_UC__NumChars2NumBytes(pText, NumCharsOld);
000038 4601 MOV r1,r0
00003a 4638 MOV r0,r7
00003c f7fffffe BL GUI_UC__NumChars2NumBytes
000040 4607 MOV r7,r0
|L18.66|
;;;1470 }
;;;1471 if (pNew) {
000042 f1b80f00 CMP r8,#0
000046 d008 BEQ |L18.90|
;;;1472 NumCharsNew = GUI__GetNumChars(pNew);
000048 4640 MOV r0,r8
00004a f7fffffe BL GUI__GetNumChars
00004e 4605 MOV r5,r0
;;;1473 NumBytesNew = GUI_UC__NumChars2NumBytes(pNew, NumCharsNew);
000050 4601 MOV r1,r0
000052 4640 MOV r0,r8
000054 f7fffffe BL GUI_UC__NumChars2NumBytes
000058 4681 MOV r9,r0
|L18.90|
;;;1474 }
;;;1475 if (_IsCharsAvailable(pObj, NumCharsNew - NumCharsOld)) {
00005a 1ba9 SUBS r1,r5,r6
00005c 4620 MOV r0,r4
00005e f7fffffe BL _IsCharsAvailable
000062 2800 CMP r0,#0
000064 d02b BEQ |L18.190|
;;;1476 if (_IsSpaceInBuffer(pObj, NumBytesNew - NumBytesOld)) {
000066 eba90107 SUB r1,r9,r7
00006a 4620 MOV r0,r4
00006c f7fffffe BL _IsSpaceInBuffer
000070 2800 CMP r0,#0
000072 d024 BEQ |L18.190|
;;;1477 pText = (char*) GUI_ALLOC_h2p(pObj->hText);
000074 f9b40038 LDRSH r0,[r4,#0x38]
000078 f7fffffe BL GUI_ALLOC_h2p
00007c 4605 MOV r5,r0
;;;1478 pText += GUI_UC__NumChars2NumBytes(pText, pObj->NumCharsPrompt);
00007e 8fe1 LDRH r1,[r4,#0x3e]
000080 f7fffffe BL GUI_UC__NumChars2NumBytes
000084 4428 ADD r0,r0,r5
;;;1479 if (pNew) {
000086 f1b80f00 CMP r8,#0
00008a d003 BEQ |L18.148|
;;;1480 strcpy(pText, pNew);
00008c 4641 MOV r1,r8
00008e f7fffffe BL strcpy
000092 e001 B |L18.152|
|L18.148|
;;;1481 } else {
;;;1482 *pText = 0;
000094 2100 MOVS r1,#0
000096 7001 STRB r1,[r0,#0]
|L18.152|
;;;1483 }
;;;1484 _SetCursorPos(hObj, pObj, pObj->NumCharsPrompt);
000098 8fe2 LDRH r2,[r4,#0x3e]
00009a 4621 MOV r1,r4
00009c 4650 MOV r0,r10
00009e f7fffffe BL _SetCursorPos
;;;1485 _InvalidateTextArea(hObj);
0000a2 4650 MOV r0,r10
0000a4 f7fffffe BL _InvalidateTextArea
0000a8 f8140f75 LDRB r0,[r4,#0x75]!
0000ac f0400001 ORR r0,r0,#1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -