📄 edit.txt
字号:
000016 42a8 CMP r0,r5
000018 d01c BEQ |L8.84|
;;;796 if (MaxLen < pObj->MaxLen) {
00001a dd0f BLE |L8.60|
;;;797 if (pObj->hpText) {
00001c f9b40028 LDRSH r0,[r4,#0x28]
000020 b160 CBZ r0,|L8.60|
;;;798 char* pText;
;;;799 int NumChars;
;;;800 pText = (char*) GUI_ALLOC_h2p(pObj->hpText);
000022 f7fffffe BL GUI_ALLOC_h2p
000026 4607 MOV r7,r0
;;;801 NumChars = GUI__GetNumChars(pText);
000028 f7fffffe BL GUI__GetNumChars
;;;802 if (NumChars > MaxLen) {
00002c 42a8 CMP r0,r5
00002e dd05 BLE |L8.60|
;;;803 int NumBytes;
;;;804 NumBytes = GUI_UC__NumChars2NumBytes(pText, MaxLen);
000030 4629 MOV r1,r5
000032 4638 MOV r0,r7
000034 f7fffffe BL GUI_UC__NumChars2NumBytes
;;;805 *(pText + NumBytes) = 0;
000038 2100 MOVS r1,#0
00003a 5439 STRB r1,[r7,r0]
|L8.60|
;;;806 }
;;;807 }
;;;808 }
;;;809 _IncrementBuffer(pObj, MaxLen - pObj->BufferSize + 1);
00003c 8da0 LDRH r0,[r4,#0x2c]
00003e 1a29 SUBS r1,r5,r0
000040 1c49 ADDS r1,r1,#1
000042 4620 MOV r0,r4
000044 f7fffffe BL _IncrementBuffer
;;;810 pObj->MaxLen = MaxLen;
000048 8565 STRH r5,[r4,#0x2a]
;;;811 EDIT_Invalidate(hObj);
00004a 4630 MOV r0,r6
00004c e8bd41f0 POP {r4-r8,lr}
000050 f7ffbffe B.W WM_InvalidateWindow
|L8.84|
;;;812 }
;;;813 WM_UNLOCK();
;;;814 }
;;;815 }
000054 e8bd81f0 POP {r4-r8,pc}
;;;816
ENDP
AREA ||i.EDIT_SetText||, CODE, READONLY, ALIGN=1
EDIT_SetText PROC
;;;674 */
;;;675 void EDIT_SetText(EDIT_Handle hObj, const char* s) {
000000 e92d41f0 PUSH {r4-r8,lr}
000004 ea5f0800 MOVS r8,r0
000008 460e MOV r6,r1
;;;676 if (hObj) {
00000a d041 BEQ |L9.144|
;;;677 EDIT_Obj* pObj;
;;;678 WM_LOCK();
;;;679 pObj = EDIT_H2P(hObj);
00000c 4640 MOV r0,r8
00000e f7fffffe BL GUI_ALLOC_h2p
000012 4604 MOV r4,r0
;;;680 if (s) {
000014 b37e CBZ r6,|L9.118|
;;;681 int NumBytesNew, NumBytesOld = 0;
;;;682 int NumCharsNew;
;;;683 if (pObj->hpText) {
000016 f9b40028 LDRSH r0,[r4,#0x28]
00001a 2500 MOVS r5,#0 ;681
00001c b120 CBZ r0,|L9.40|
;;;684 char* pText;
;;;685 pText = (char*) GUI_ALLOC_h2p(pObj->hpText);
00001e f7fffffe BL GUI_ALLOC_h2p
;;;686 NumBytesOld = strlen(pText) + 1;
000022 f7fffffe BL strlen
000026 1c45 ADDS r5,r0,#1
|L9.40|
;;;687 }
;;;688 NumCharsNew = GUI__GetNumChars(s);
000028 4630 MOV r0,r6
00002a f7fffffe BL GUI__GetNumChars
;;;689 if (NumCharsNew > pObj->MaxLen) {
00002e f9b4102a LDRSH r1,[r4,#0x2a]
000032 4281 CMP r1,r0
000034 da00 BGE |L9.56|
000036 4608 MOV r0,r1
|L9.56|
;;;690 NumCharsNew = pObj->MaxLen;
;;;691 }
;;;692 NumBytesNew = GUI_UC__NumChars2NumBytes(s, NumCharsNew) + 1;
000038 4601 MOV r1,r0
00003a 4630 MOV r0,r6
00003c f7fffffe BL GUI_UC__NumChars2NumBytes
000040 1c47 ADDS r7,r0,#1
;;;693 if (_IsSpaceInBuffer(pObj, NumBytesNew - NumBytesOld)) {
000042 1b79 SUBS r1,r7,r5
000044 4620 MOV r0,r4
000046 f7fffffe BL _IsSpaceInBuffer
00004a b1e0 CBZ r0,|L9.134|
;;;694 char* pText;
;;;695 pText = (char*) GUI_ALLOC_h2p(pObj->hpText);
00004c f9b40028 LDRSH r0,[r4,#0x28]
000050 f7fffffe BL GUI_ALLOC_h2p
;;;696 memcpy(pText, s, NumBytesNew);
000054 463a MOV r2,r7
000056 4631 MOV r1,r6
000058 f7fffffe BL __aeabi_memcpy
;;;697 pObj->CursorPos = NumBytesNew - 1;
00005c 1e7f SUBS r7,r7,#1
;;;698 if (pObj->CursorPos == pObj->MaxLen) {
00005e 6427 STR r7,[r4,#0x40]
000060 f9b4002a LDRSH r0,[r4,#0x2a]
000064 4287 CMP r7,r0
000066 d10e BNE |L9.134|
;;;699 if (pObj->EditMode == GUI_EDIT_MODE_OVERWRITE) {
000068 f8940048 LDRB r0,[r4,#0x48]
00006c 2801 CMP r0,#1
00006e d10a BNE |L9.134|
;;;700 pObj->CursorPos--;
000070 1e7f SUBS r7,r7,#1
000072 6427 STR r7,[r4,#0x40]
000074 e007 B |L9.134|
|L9.118|
000076 e7ff B |L9.120|
|L9.120|
;;;701 }
;;;702 }
;;;703 }
;;;704 } else {
;;;705 GUI_ALLOC_FreePtr(&pObj->hpText);
000078 f1040028 ADD r0,r4,#0x28
00007c f7fffffe BL GUI_ALLOC_FreePtr
;;;706 pObj->BufferSize = 0;
000080 2000 MOVS r0,#0
000082 85a0 STRH r0,[r4,#0x2c]
;;;707 pObj->CursorPos = 0;
000084 6420 STR r0,[r4,#0x40]
|L9.134|
;;;708 }
;;;709 EDIT_Invalidate(hObj);
000086 4640 MOV r0,r8
000088 e8bd41f0 POP {r4-r8,lr}
00008c f7ffbffe B.W WM_InvalidateWindow
|L9.144|
;;;710 WM_UNLOCK();
;;;711 }
;;;712 }
000090 e8bd81f0 POP {r4-r8,pc}
;;;713
ENDP
AREA ||i.EDIT_SetTextAlign||, CODE, READONLY, ALIGN=1
EDIT_SetTextAlign PROC
;;;820 */
;;;821 void EDIT_SetTextAlign(EDIT_Handle hObj, int Align) {
000000 b570 PUSH {r4-r6,lr}
000002 0004 MOVS r4,r0
000004 460d MOV r5,r1
;;;822 EDIT_Obj* pObj;
;;;823 if (hObj == 0)
000006 d00a BEQ |L10.30|
;;;824 return;
;;;825 WM_LOCK();
;;;826 pObj = EDIT_H2P(hObj);
000008 4620 MOV r0,r4
00000a f7fffffe BL GUI_ALLOC_h2p
;;;827 if (pObj) {
00000e 2800 CMP r0,#0
000010 d005 BEQ |L10.30|
;;;828 pObj->Props.Align = Align;
;;;829 EDIT_Invalidate(hObj);
000012 6545 STR r5,[r0,#0x54]
000014 4620 MOV r0,r4
000016 e8bd4070 POP {r4-r6,lr}
00001a f7ffbffe B.W WM_InvalidateWindow
|L10.30|
;;;830 }
;;;831 WM_UNLOCK();
;;;832 }
00001e bd70 POP {r4-r6,pc}
;;;833
ENDP
AREA ||i.EDIT_SetTextColor||, CODE, READONLY, ALIGN=1
EDIT_SetTextColor PROC
;;;655 */
;;;656 void EDIT_SetTextColor(EDIT_Handle hObj, unsigned int Index, GUI_COLOR color) {
000000 b570 PUSH {r4-r6,lr}
000002 0005 MOVS r5,r0
000004 460c MOV r4,r1
000006 4616 MOV r6,r2
;;;657 EDIT_Obj* pObj;
;;;658 if (hObj == 0)
000008 d00e BEQ |L11.40|
;;;659 return;
;;;660 WM_LOCK();
;;;661 pObj = EDIT_H2P(hObj);
00000a 4628 MOV r0,r5
00000c f7fffffe BL GUI_ALLOC_h2p
;;;662 if (pObj) {
000010 2800 CMP r0,#0
000012 d009 BEQ |L11.40|
;;;663 if (Index < GUI_COUNTOF(pObj->Props.aTextColor)) {
000014 2c02 CMP r4,#2
000016 d207 BCS |L11.40|
;;;664 pObj->Props.aTextColor[Index] = color;
000018 eb000084 ADD r0,r0,r4,LSL #2
;;;665 EDIT_Invalidate(hObj);
00001c 6606 STR r6,[r0,#0x60]
00001e 4628 MOV r0,r5
000020 e8bd4070 POP {r4-r6,lr}
000024 f7ffbffe B.W WM_InvalidateWindow
|L11.40|
;;;666 }
;;;667 }
;;;668 WM_UNLOCK();
;;;669 }
000028 bd70 POP {r4-r6,pc}
;;;670
ENDP
AREA ||i.EDIT_SetValue||, CODE, READONLY, ALIGN=1
EDIT_SetValue PROC
;;;761 */
;;;762 void EDIT_SetValue(EDIT_Handle hObj, I32 Value) {
000000 b570 PUSH {r4-r6,lr}
000002 0005 MOVS r5,r0
000004 460c MOV r4,r1
;;;763 EDIT_Obj* pObj;
;;;764 if (hObj) {
000006 d01b BEQ |L12.64|
;;;765 WM_LOCK();
;;;766 pObj = EDIT_H2P(hObj);
000008 4628 MOV r0,r5
00000a f7fffffe BL GUI_ALLOC_h2p
;;;767 /* Put in min/max range */
;;;768 if (Value < pObj->Min) {
00000e 6b01 LDR r1,[r0,#0x30]
000010 42a1 CMP r1,r4
000012 dd00 BLE |L12.22|
;;;769 Value = pObj->Min;
000014 460c MOV r4,r1
|L12.22|
;;;770 }
;;;771 if (Value > pObj->Max) {
000016 6b41 LDR r1,[r0,#0x34]
000018 42a1 CMP r1,r4
00001a da00 BGE |L12.30|
;;;772 Value = pObj->Max;
00001c 460c MOV r4,r1
|L12.30|
;;;773 }
;;;774 if (pObj->CurrentValue != (U32)Value) {
00001e 6bc1 LDR r1,[r0,#0x3c]
000020 42a1 CMP r1,r4
000022 d00d BEQ |L12.64|
;;;775 pObj->CurrentValue = Value;
;;;776 if (pObj->pfUpdateBuffer) {
000024 63c4 STR r4,[r0,#0x3c]
000026 6d01 LDR r1,[r0,#0x50]
000028 b109 CBZ r1,|L12.46|
;;;777 pObj->pfUpdateBuffer(hObj);
00002a 4628 MOV r0,r5
00002c 4788 BLX r1
|L12.46|
;;;778 }
;;;779 WM_InvalidateWindow(hObj);
00002e 4628 MOV r0,r5
000030 f7fffffe BL WM_InvalidateWindow
;;;780 WM_NotifyParent(hObj, WM_NOTIFICATION_VALUE_CHANGED);
000034 4628 MOV r0,r5
000036 e8bd4070 POP {r4-r6,lr}
00003a 2105 MOVS r1,#5
00003c f7ffbffe B.W WM_NotifyParent
|L12.64|
;;;781 }
;;;782 WM_UNLOCK();
;;;783 }
;;;784 }
000040 bd70 POP {r4-r6,pc}
;;;785
ENDP
AREA ||i.EDIT__Callback||, CODE, READONLY, ALIGN=1
EDIT__Callback PROC
;;;447 */
;;;448 static void EDIT__Callback (WM_MESSAGE * pMsg) {
000000 e92d41f0 PUSH {r4-r8,lr}
;;;449 int IsEnabled;
;;;450 EDIT_Handle hObj = (EDIT_Handle) pMsg->hWin;
000004 f9b07004 LDRSH r7,[r0,#4]
000008 4604 MOV r4,r0 ;448
;;;451 EDIT_Obj* pObj = (EDIT_Obj*) GUI_ALLOC_h2p(hObj);
00000a 4638 MOV r0,r7
00000c f7fffffe BL GUI_ALLOC_h2p
000010 4605 MOV r5,r0
;;;452 IsEnabled = WM__IsEnabled(hObj);
000012 4638 MOV r0,r7
000014 f7fffffe BL WM__IsEnabled
000018 4606 MOV r6,r0
;;;453 /* Let widget handle the standard messages */
;;;454 if (WIDGET_HandleActive(hObj, pMsg) == 0) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -