📄 edit.txt
字号:
; generated by ARM C/C++ Compiler with , RVCT4.0 [Build 524] for uVision
; commandline ArmCC [--split_sections --debug -c --asm --interleave -o.\Obj\edit.o --depend=.\Obj\edit.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\EDIT.c]
THUMB
AREA ||i.EDIT_AddKey||, CODE, READONLY, ALIGN=1
EDIT_AddKey PROC
;;;538 */
;;;539 void EDIT_AddKey(EDIT_Handle hObj, int Key) {
000000 b570 PUSH {r4-r6,lr}
000002 0006 MOVS r6,r0
000004 460d MOV r5,r1
;;;540 if (hObj) {
000006 d07c BEQ |L1.258|
;;;541 EDIT_Obj* pObj;
;;;542 WM_LOCK();
;;;543 pObj = EDIT_H2P(hObj);
000008 4630 MOV r0,r6
00000a f7fffffe BL GUI_ALLOC_h2p
00000e 0004 MOVS r4,r0
;;;544 if (pObj) {
000010 d077 BEQ |L1.258|
;;;545 if (pObj->pfAddKeyEx) {
000012 6ce2 LDR r2,[r4,#0x4c]
000014 b11a CBZ r2,|L1.30|
;;;546 pObj->pfAddKeyEx(hObj, Key);
000016 4629 MOV r1,r5
000018 4630 MOV r0,r6
00001a 4790 BLX r2
00001c e06c B |L1.248|
|L1.30|
;;;547 } else {
;;;548 switch (Key) {
00001e 2d12 CMP r5,#0x12
000020 d066 BEQ |L1.240|
000022 dc19 BGT |L1.88|
000024 2d08 CMP r5,#8
000026 d03d BEQ |L1.164|
000028 2d0d CMP r5,#0xd
00002a d065 BEQ |L1.248|
00002c 2d10 CMP r5,#0x10
00002e d033 BEQ |L1.152|
000030 2d11 CMP r5,#0x11
000032 d14e BNE |L1.210|
;;;549 case GUI_KEY_UP:
;;;550 if (pObj->hpText) {
000034 f9b40028 LDRSH r0,[r4,#0x28]
000038 2800 CMP r0,#0
00003a d05d BEQ |L1.248|
;;;551 char* pText;
;;;552 U16 Char;
;;;553 pText = (char*) GUI_ALLOC_h2p(pObj->hpText);
00003c f7fffffe BL GUI_ALLOC_h2p
000040 4605 MOV r5,r0
;;;554 pText += GUI_UC__NumChars2NumBytes(pText, pObj->CursorPos);
000042 6c21 LDR r1,[r4,#0x40]
000044 f7fffffe BL GUI_UC__NumChars2NumBytes
000048 1944 ADDS r4,r0,r5
;;;555 Char = GUI_UC_GetCharCode(pText);
00004a 4620 MOV r0,r4
00004c f7fffffe BL GUI_UC_GetCharCode
;;;556 if (Char < 0x7f) {
000050 287f CMP r0,#0x7f
000052 d251 BCS |L1.248|
;;;557 *pText = Char + 1;
000054 1c40 ADDS r0,r0,#1
;;;558 WM_NotifyParent(hObj, WM_NOTIFICATION_VALUE_CHANGED);
000056 e019 B |L1.140|
|L1.88|
000058 2d13 CMP r5,#0x13 ;548
00005a d006 BEQ |L1.106|
00005c 2d1b CMP r5,#0x1b ;548
00005e d04b BEQ |L1.248|
000060 2d1d CMP r5,#0x1d ;548
000062 d029 BEQ |L1.184|
000064 2d1e CMP r5,#0x1e ;548
000066 d134 BNE |L1.210|
000068 e021 B |L1.174|
|L1.106|
;;;559 }
;;;560 }
;;;561 break;
;;;562 case GUI_KEY_DOWN:
;;;563 if (pObj->hpText) {
00006a f9b40028 LDRSH r0,[r4,#0x28]
00006e 2800 CMP r0,#0
000070 d042 BEQ |L1.248|
;;;564 char* pText;
;;;565 U16 Char;
;;;566 pText = (char*) GUI_ALLOC_h2p(pObj->hpText);
000072 f7fffffe BL GUI_ALLOC_h2p
000076 4605 MOV r5,r0
;;;567 pText += GUI_UC__NumChars2NumBytes(pText, pObj->CursorPos);
000078 6c21 LDR r1,[r4,#0x40]
00007a f7fffffe BL GUI_UC__NumChars2NumBytes
00007e 1944 ADDS r4,r0,r5
;;;568 Char = GUI_UC_GetCharCode(pText);
000080 4620 MOV r0,r4
000082 f7fffffe BL GUI_UC_GetCharCode
;;;569 if (Char > 0x20) {
000086 2820 CMP r0,#0x20
000088 d936 BLS |L1.248|
;;;570 *pText = Char - 1;
00008a 1e40 SUBS r0,r0,#1
|L1.140|
00008c 7020 STRB r0,[r4,#0]
;;;571 WM_NotifyParent(hObj, WM_NOTIFICATION_VALUE_CHANGED);
00008e 2105 MOVS r1,#5
000090 4630 MOV r0,r6
000092 f7fffffe BL WM_NotifyParent
000096 e02f B |L1.248|
|L1.152|
;;;572 }
;;;573 }
;;;574 break;
;;;575 case GUI_KEY_RIGHT:
;;;576 EDIT__SetCursorPos(pObj, pObj->CursorPos + 1);
;;;577 break;
;;;578 case GUI_KEY_LEFT:
;;;579 EDIT__SetCursorPos(pObj, pObj->CursorPos - 1);
000098 6c21 LDR r1,[r4,#0x40]
00009a 1e49 SUBS r1,r1,#1
|L1.156|
00009c 4620 MOV r0,r4
00009e f7fffffe BL EDIT__SetCursorPos
0000a2 e029 B |L1.248|
|L1.164|
;;;580 break;
;;;581 case GUI_KEY_BACKSPACE:
;;;582 EDIT__SetCursorPos(pObj, pObj->CursorPos - 1);
0000a4 6c21 LDR r1,[r4,#0x40]
0000a6 4620 MOV r0,r4
0000a8 1e49 SUBS r1,r1,#1
0000aa f7fffffe BL EDIT__SetCursorPos
|L1.174|
;;;583 _DeleteChar(hObj, pObj);
;;;584 break;
;;;585 case GUI_KEY_DELETE:
;;;586 _DeleteChar(hObj, pObj);
0000ae 4621 MOV r1,r4
0000b0 4630 MOV r0,r6
0000b2 f7fffffe BL _DeleteChar
;;;587 break;
0000b6 e01f B |L1.248|
|L1.184|
;;;588 case GUI_KEY_INSERT:
;;;589 if (pObj->EditMode == GUI_EDIT_MODE_OVERWRITE) {
0000b8 f8940048 LDRB r0,[r4,#0x48]
0000bc 2801 CMP r0,#1
0000be d103 BNE |L1.200|
;;;590 pObj->EditMode = GUI_EDIT_MODE_INSERT;
0000c0 2000 MOVS r0,#0
0000c2 f8840048 STRB r0,[r4,#0x48]
0000c6 e017 B |L1.248|
|L1.200|
;;;591 } else {
;;;592 pObj->EditMode = GUI_EDIT_MODE_OVERWRITE;
0000c8 2001 MOVS r0,#1
0000ca f8840048 STRB r0,[r4,#0x48]
;;;593 EDIT__SetCursorPos(pObj, pObj->CursorPos);
0000ce 6c21 LDR r1,[r4,#0x40]
0000d0 e7e4 B |L1.156|
|L1.210|
;;;594 }
;;;595 break;
;;;596 case GUI_KEY_ENTER:
;;;597 case GUI_KEY_ESCAPE:
;;;598 break;
;;;599 default:
;;;600 if (Key >= 0x20) {
0000d2 2d20 CMP r5,#0x20
0000d4 db10 BLT |L1.248|
;;;601 if (pObj->EditMode != GUI_EDIT_MODE_INSERT) {
0000d6 f8940048 LDRB r0,[r4,#0x48]
0000da b118 CBZ r0,|L1.228|
;;;602 _DeleteChar(hObj, pObj);
0000dc 4621 MOV r1,r4
0000de 4630 MOV r0,r6
0000e0 f7fffffe BL _DeleteChar
|L1.228|
;;;603 }
;;;604 if (_InsertChar(hObj, pObj, Key)) {
0000e4 b2aa UXTH r2,r5
0000e6 4621 MOV r1,r4
0000e8 4630 MOV r0,r6
0000ea f7fffffe BL _InsertChar
0000ee b118 CBZ r0,|L1.248|
|L1.240|
;;;605 EDIT__SetCursorPos(pObj, pObj->CursorPos + 1);
0000f0 6c21 LDR r1,[r4,#0x40]
0000f2 1c49 ADDS r1,r1,#1
0000f4 e7d2 B |L1.156|
0000f6 e004 B |L1.258|
|L1.248|
;;;606 }
;;;607 }
;;;608 }
;;;609 }
;;;610 EDIT_Invalidate(hObj);
0000f8 4630 MOV r0,r6
0000fa e8bd4070 POP {r4-r6,lr}
0000fe f7ffbffe B.W WM_InvalidateWindow
|L1.258|
;;;611 }
;;;612 WM_UNLOCK();
;;;613 }
;;;614 }
000102 bd70 POP {r4-r6,pc}
;;;615
ENDP
AREA ||i.EDIT_CreateEx||, CODE, READONLY, ALIGN=2
EDIT_CreateEx PROC
;;;496 */
;;;497 EDIT_Handle EDIT_CreateEx(int x0, int y0, int xsize, int ysize, WM_HWIN hParent, int WinFlags, int ExFlags,
000000 e92d41ff PUSH {r0-r8,lr}
;;;498 int Id, int MaxLen)
;;;499 {
000004 4605 MOV r5,r0
000006 460e MOV r6,r1
;;;500 EDIT_Handle hObj;
;;;501 GUI_USE_PARA(ExFlags);
;;;502 /* Alloc memory for obj */
;;;503 WinFlags |= WM_CF_LATE_CLIP; /* Always use late clipping since widget is optimized for it. */
000008 e9dd010a LDRD r0,r1,[sp,#0x28]
00000c b289 UXTH r1,r1
;;;504 hObj = WM_CreateWindowAsChild(x0, y0, xsize, ysize, hParent, WM_CF_SHOW | WinFlags, EDIT__Callback,
00000e e9dd840d LDRD r8,r4,[sp,#0x34]
000012 4617 MOV r7,r2 ;499
000014 469c MOV r12,r3 ;499
000016 f4415180 ORR r1,r1,#0x1000
00001a 2354 MOVS r3,#0x54
00001c 4a19 LDR r2,|L2.132|
00001e f0410102 ORR r1,r1,#2
000022 e88d000f STM sp,{r0-r3}
000026 4663 MOV r3,r12
000028 463a MOV r2,r7
00002a 4631 MOV r1,r6
00002c 4628 MOV r0,r5
00002e f7fffffe BL WM_CreateWindowAsChild
000032 0006 MOVS r6,r0
;;;505 sizeof(EDIT_Obj) - sizeof(WM_Obj));
;;;506 if (hObj) {
000034 d021 BEQ |L2.122|
;;;507 EDIT_Obj* pObj;
;;;508 WM_LOCK();
;;;509 pObj = (EDIT_Obj*)GUI_ALLOC_h2p(hObj);
000036 4630 MOV r0,r6
000038 f7fffffe BL GUI_ALLOC_h2p
00003c 4605 MOV r5,r0
;;;510 /* init widget specific variables */
;;;511 WIDGET__Init(&pObj->Widget, Id, WIDGET_STATE_FOCUSSABLE);
00003e 2210 MOVS r2,#0x10
000040 4641 MOV r1,r8
000042 f7fffffe BL WIDGET__Init
;;;512 /* init member variables */
;;;513 INIT_ID(pObj);
;;;514 pObj->Props = EDIT__DefaultProps;
000046 221c MOVS r2,#0x1c
000048 490f LDR r1,|L2.136|
00004a f1050054 ADD r0,r5,#0x54
00004e f7fffffe BL __aeabi_memcpy4
;;;515 pObj->XSizeCursor = 1;
000052 2101 MOVS r1,#1
000054 f8851049 STRB r1,[r5,#0x49]
;;;516 pObj->MaxLen = (MaxLen == 0) ? 8 : MaxLen;
000058 2008 MOVS r0,#8
00005a b104 CBZ r4,|L2.94|
00005c 4620 MOV r0,r4
|L2.94|
00005e b201 SXTH r1,r0
000060 8569 STRH r1,[r5,#0x2a]
;;;517 pObj->BufferSize = 0;
000062 2000 MOVS r0,#0
000064 85a8 STRH r0,[r5,#0x2c]
;;;518 pObj->hpText = 0;
000066 8528 STRH r0,[r5,#0x28]
;;;519 if (_IncrementBuffer(pObj, pObj->MaxLen + 1) == 0) {
000068 1c49 ADDS r1,r1,#1
00006a 4628 MOV r0,r5
00006c f7fffffe BL _IncrementBuffer
000070 b918 CBNZ r0,|L2.122|
;;;520 GUI_DEBUG_ERROROUT("EDIT_Create failed to alloc buffer");
;;;521 EDIT_Delete(hObj);
000072 4630 MOV r0,r6
000074 f7fffffe BL WM_DeleteWindow
;;;522 hObj = 0;
000078 2600 MOVS r6,#0
|L2.122|
;;;523 }
;;;524 WM_UNLOCK();
;;;525 }
;;;526 return hObj;
00007a 4630 MOV r0,r6
;;;527 }
00007c b004 ADD sp,sp,#0x10
00007e e8bd81f0 POP {r4-r8,pc}
;;;528
ENDP
000082 0000 DCW 0x0000
|L2.132|
DCD EDIT__Callback
|L2.136|
DCD ||.data||
AREA ||i.EDIT_GetText||, CODE, READONLY, ALIGN=1
EDIT_GetText PROC
;;;717 */
;;;718 void EDIT_GetText(EDIT_Handle hObj, char* sDest, int MaxLen) {
000000 e92d41f0 PUSH {r4-r8,lr}
000004 000c MOVS r4,r1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -