📄 multiedit.txt
字号:
0000b0 b2c0 UXTB r0,r0
0000b2 f0400002 ORR r0,r0,#2
0000b6 b2c0 UXTB r0,r0
0000b8 f0400004 ORR r0,r0,#4
0000bc 7020 STRB r0,[r4,#0]
|L18.190|
;;;1486 _InvalidateNumChars(pObj);
;;;1487 _InvalidateNumLines(pObj);
;;;1488 _InvalidateTextSizeX(pObj);
;;;1489 }
;;;1490 }
;;;1491 WM_UNLOCK();
;;;1492 }
;;;1493 }
0000be e8bd87f0 POP {r4-r10,pc}
;;;1494
ENDP
AREA ||i.MULTIEDIT_SetTextColor||, CODE, READONLY, ALIGN=1
MULTIEDIT_SetTextColor PROC
;;;1685 */
;;;1686 void MULTIEDIT_SetTextColor(MULTIEDIT_HANDLE hObj, unsigned Index, GUI_COLOR color) {
000000 b570 PUSH {r4-r6,lr}
000002 0004 MOVS r4,r0
000004 460d MOV r5,r1
000006 4616 MOV r6,r2
;;;1687 if (hObj && (Index < NUM_DISP_MODES)) {
000008 d00c BEQ |L19.36|
00000a 2d02 CMP r5,#2
00000c d20a BCS |L19.36|
;;;1688 MULTIEDIT_OBJ* pObj;
;;;1689 WM_LOCK();
;;;1690 pObj = MULTIEDIT_H2P(hObj);
00000e 4620 MOV r0,r4
000010 f7fffffe BL GUI_ALLOC_h2p
;;;1691 pObj->aColor[Index] = color;
000014 eb000085 ADD r0,r0,r5,LSL #2
;;;1692 WM_Invalidate(hObj);
000018 6306 STR r6,[r0,#0x30]
00001a 4620 MOV r0,r4
00001c e8bd4070 POP {r4-r6,lr}
000020 f7ffbffe B.W WM_InvalidateWindow
|L19.36|
;;;1693 WM_UNLOCK();
;;;1694 }
;;;1695 }
000024 bd70 POP {r4-r6,pc}
;;;1696
ENDP
AREA ||i.MULTIEDIT_SetWrapChar||, CODE, READONLY, ALIGN=1
MULTIEDIT_SetWrapChar PROC
;;;1553 */
;;;1554 void MULTIEDIT_SetWrapChar(MULTIEDIT_HANDLE hObj) {
000000 2102 MOVS r1,#2
;;;1555 _SetWrapMode(hObj, GUI_WRAPMODE_CHAR);
000002 f7ffbffe B.W _SetWrapMode
;;;1556 }
;;;1557
ENDP
AREA ||i.MULTIEDIT_SetWrapNone||, CODE, READONLY, ALIGN=1
MULTIEDIT_SetWrapNone PROC
;;;1561 */
;;;1562 void MULTIEDIT_SetWrapNone(MULTIEDIT_HANDLE hObj) {
000000 2100 MOVS r1,#0
;;;1563 _SetWrapMode(hObj, GUI_WRAPMODE_NONE);
000002 f7ffbffe B.W _SetWrapMode
;;;1564 }
;;;1565
ENDP
AREA ||i.MULTIEDIT_SetWrapWord||, CODE, READONLY, ALIGN=1
MULTIEDIT_SetWrapWord PROC
;;;1545 */
;;;1546 void MULTIEDIT_SetWrapWord(MULTIEDIT_HANDLE hObj) {
000000 2101 MOVS r1,#1
;;;1547 _SetWrapMode(hObj, GUI_WRAPMODE_WORD);
000002 f7ffbffe B.W _SetWrapMode
;;;1548 }
;;;1549
ENDP
AREA ||i._AddKey||, CODE, READONLY, ALIGN=1
_AddKey PROC
;;;1200 */
;;;1201 static int _AddKey(MULTIEDIT_HANDLE hObj, U16 Key) {
000000 e92d41fc PUSH {r2-r8,lr}
000004 4607 MOV r7,r0
000006 460e MOV r6,r1
;;;1202 int r = 0; /* Key has not been consumed */
000008 2500 MOVS r5,#0
;;;1203 MULTIEDIT_OBJ* pObj;
;;;1204 pObj = MULTIEDIT_H2P(hObj);
00000a f7fffffe BL GUI_ALLOC_h2p
00000e 4604 MOV r4,r0
;;;1205 switch (Key) {
000010 2e13 CMP r6,#0x13
000012 d036 BEQ |L23.130|
000014 dc1f BGT |L23.86|
000016 2e10 CMP r6,#0x10
000018 d041 BEQ |L23.158|
00001a dc17 BGT |L23.76|
00001c 2e08 CMP r6,#8
00001e d059 BEQ |L23.212|
000020 2e0d CMP r6,#0xd
000022 d117 BNE |L23.84|
;;;1206 case GUI_KEY_UP:
;;;1207 _MoveCursorUp(hObj, pObj);
;;;1208 r = 1; /* Key has been consumed */
;;;1209 break;
;;;1210 case GUI_KEY_DOWN:
;;;1211 _MoveCursorDown(hObj, pObj);
;;;1212 r = 1; /* Key has been consumed */
;;;1213 break;
;;;1214 case GUI_KEY_RIGHT:
;;;1215 _SetCursorPos(hObj, pObj, pObj->CursorPosChar + 1);
;;;1216 r = 1; /* Key has been consumed */
;;;1217 break;
;;;1218 case GUI_KEY_LEFT:
;;;1219 _SetCursorPos(hObj, pObj, pObj->CursorPosChar - 1);
;;;1220 r = 1; /* Key has been consumed */
;;;1221 break;
;;;1222 case GUI_KEY_END:
;;;1223 _MoveCursor2LineEnd(hObj, pObj);
;;;1224 r = 1; /* Key has been consumed */
;;;1225 break;
;;;1226 case GUI_KEY_HOME:
;;;1227 _MoveCursor2LinePos1(hObj, pObj);
;;;1228 r = 1; /* Key has been consumed */
;;;1229 break;
;;;1230 case GUI_KEY_BACKSPACE:
;;;1231 if (!(pObj->Flags & MULTIEDIT_SF_READONLY)) {
;;;1232 if (pObj->CursorPosChar > pObj->NumCharsPrompt) {
;;;1233 _SetCursorPos(hObj, pObj, pObj->CursorPosChar - 1);
;;;1234 _DeleteChar(hObj, pObj);
;;;1235 }
;;;1236 r = 1; /* Key has been consumed */
;;;1237 }
;;;1238 break;
;;;1239 case GUI_KEY_DELETE:
;;;1240 if (!(pObj->Flags & MULTIEDIT_SF_READONLY)) {
;;;1241 _DeleteChar(hObj, pObj);
;;;1242 r = 1; /* Key has been consumed */
;;;1243 }
;;;1244 break;
;;;1245 case GUI_KEY_INSERT:
;;;1246 if (!(pObj->Flags & MULTIEDIT_CF_INSERT)) {
;;;1247 pObj->Flags |= MULTIEDIT_CF_INSERT;
;;;1248 } else {
;;;1249 pObj->Flags &= ~MULTIEDIT_CF_INSERT;
;;;1250 }
;;;1251 r = 1; /* Key has been consumed */
;;;1252 break;
;;;1253 case GUI_KEY_ENTER:
;;;1254 if (pObj->Flags & MULTIEDIT_SF_READONLY) {
000024 f8940074 LDRB r0,[r4,#0x74]
000028 07c0 LSLS r0,r0,#31
00002a d10a BNE |L23.66|
;;;1255 _MoveCursor2NextLine(hObj, pObj);
;;;1256 } else {
;;;1257 if (_InsertChar(hObj, pObj, (U8)('\n'))) {
00002c 220a MOVS r2,#0xa
00002e 4621 MOV r1,r4
000030 4638 MOV r0,r7
000032 f7fffffe BL _InsertChar
000036 2800 CMP r0,#0
000038 d007 BEQ |L23.74|
;;;1258 if (pObj->Flags & MULTIEDIT_SF_PASSWORD) {
00003a f8940074 LDRB r0,[r4,#0x74]
00003e 0680 LSLS r0,r0,#26
000040 d471 BMI |L23.294|
|L23.66|
;;;1259 _SetCursorPos(hObj, pObj, pObj->CursorPosChar + 1);
;;;1260 } else {
;;;1261 _MoveCursor2NextLine(hObj, pObj);
000042 4621 MOV r1,r4
000044 4638 MOV r0,r7
000046 f7fffffe BL _MoveCursor2NextLine
|L23.74|
00004a e086 B |L23.346|
|L23.76|
00004c 2e11 CMP r6,#0x11 ;1205
00004e d00c BEQ |L23.106|
000050 2e12 CMP r6,#0x12 ;1205
000052 d07e BEQ |L23.338|
|L23.84|
000054 e068 B |L23.296|
|L23.86|
000056 f1a60017 SUB r0,r6,#0x17 ;1205
00005a 2808 CMP r0,#8 ;1205
00005c d264 BCS |L23.296|
00005e e8dff000 TBB [pc,r0] ;1205
000062 2c22 DCB 0x2c,0x22
000064 63637d63 DCB 0x63,0x63,0x7d,0x63
000068 5148 DCB 0x51,0x48
|L23.106|
00006a 466b MOV r3,sp ;1205
00006c aa01 ADD r2,sp,#4 ;1205
00006e 4621 MOV r1,r4 ;1205
000070 4638 MOV r0,r7 ;1205
000072 f7fffffe BL _GetCursorXY
000076 6f20 LDR r0,[r4,#0x70] ;1205
000078 f7fffffe BL GUI_GetYDistOfFont
00007c 9900 LDR r1,[sp,#0] ;1205
00007e 1a0b SUBS r3,r1,r0 ;1205
000080 e00a B |L23.152|
|L23.130|
000082 466b MOV r3,sp ;1209
000084 aa01 ADD r2,sp,#4 ;1209
000086 4621 MOV r1,r4 ;1209
000088 4638 MOV r0,r7 ;1209
00008a f7fffffe BL _GetCursorXY
00008e 6f20 LDR r0,[r4,#0x70] ;1209
000090 f7fffffe BL GUI_GetYDistOfFont
000094 9900 LDR r1,[sp,#0] ;1209
000096 1843 ADDS r3,r0,r1 ;1209
|L23.152|
000098 9300 STR r3,[sp,#0] ;1209
00009a 9a01 LDR r2,[sp,#4] ;1209
00009c e015 B |L23.202|
|L23.158|
00009e f8b42048 LDRH r2,[r4,#0x48] ;1219
0000a2 1e52 SUBS r2,r2,#1 ;1219
0000a4 e03a B |L23.284|
0000a6 466b MOV r3,sp ;1221
0000a8 aa01 ADD r2,sp,#4 ;1221
0000aa 4621 MOV r1,r4 ;1221
0000ac 4638 MOV r0,r7 ;1221
0000ae f7fffffe BL _GetCursorXY
0000b2 f64772ff MOV r2,#0x7fff ;1221
0000b6 9b00 LDR r3,[sp,#0] ;1225
0000b8 e007 B |L23.202|
0000ba 466b MOV r3,sp ;1225
0000bc aa01 ADD r2,sp,#4 ;1225
0000be 4621 MOV r1,r4 ;1225
0000c0 4638 MOV r0,r7 ;1225
0000c2 f7fffffe BL _GetCursorXY
0000c6 9b00 LDR r3,[sp,#0] ;1225
0000c8 2200 MOVS r2,#0 ;1225
|L23.202|
0000ca 4621 MOV r1,r4 ;1225
0000cc 4638 MOV r0,r7 ;1225
0000ce f7fffffe BL _SetCursorXY
0000d2 e042 B |L23.346|
|L23.212|
0000d4 f8940074 LDRB r0,[r4,#0x74] ;1231
0000d8 07c0 LSLS r0,r0,#31 ;1231
0000da d13f BNE |L23.348|
0000dc f8b42048 LDRH r2,[r4,#0x48] ;1232
0000e0 8fe0 LDRH r0,[r4,#0x3e] ;1232
0000e2 4282 CMP r2,r0 ;1232
0000e4 d939 BLS |L23.346|
0000e6 1e52 SUBS r2,r2,#1 ;1233
0000e8 4621 MOV r1,r4 ;1233
0000ea 4638 MOV r0,r7 ;1233
0000ec f7fffffe BL _SetCursorPos
0000f0 e003 B |L23.250|
0000f2 f8940074 LDRB r0,[r4,#0x74] ;1240
0000f6 07c0 LSLS r0,r0,#31 ;1240
0000f8 d130 BNE |L23.348|
|L23.250|
0000fa 4621 MOV r1,r4 ;1241
0000fc 4638 MOV r0,r7 ;1241
0000fe f7fffffe BL _DeleteChar
000102 e02a B |L23.346|
000104 f8940074 LDRB r0,[r4,#0x74] ;1246
000108 0741 LSLS r1,r0,#29 ;1246
00010a d402 BMI |L23.274|
00010c f0400004 ORR r0,r0,#4 ;1247
000110 e001 B |L23.278|
|L23.274|
000112 f0200004 BIC r0,r0,#4 ;1249
|L23.278|
000116 f8840074 STRB r0,[r4,#0x74] ;1249
00011a e01e B |L23.346|
|L23.284|
00011c 4621 MOV r1,r4 ;1259
00011e 4638 MOV r0,r7 ;1259
000120 f7fffffe BL _SetCursorPos
000124 e019 B |L23.346|
|L23.294|
000126 e014 B |L23.338|
|L23.296|
;;;1262 }
;;;1263 }
;;;1264 }
;;;1265 r = 1; /* Key has been consumed */
;;;1266 break;
;;;1267 case GUI_KEY_ESCAPE:
;;;1268 break;
;;;1269 default:
;;;1270 if (!(pObj->Flags & MULTIEDIT_SF_READONLY) && (Key >= 0x20)) {
000128 f8940074 LDRB r0,[r4,#0x74]
00012c 07c0 LSLS r0,r0,#31
00012e d115 BNE |L23.348|
000130 2e20 CMP r6,#0x20
000132 d313 BCC |L23.348|
;;;1271 if (_IsOverwriteAtThisChar(hObj, pObj)) {
000134 4621 MOV r1,r4
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -