📄 editdec.txt
字号:
; generated by ARM C/C++ Compiler with , RVCT4.0 [Build 524] for uVision
; commandline ArmCC [--split_sections --debug -c --asm --interleave -o.\Obj\editdec.o --depend=.\Obj\editdec.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\EDITDec.c]
THUMB
AREA ||i.EDIT_SetDecMode||, CODE, READONLY, ALIGN=2
EDIT_SetDecMode PROC
;;;284 */
;;;285 void EDIT_SetDecMode(EDIT_Handle hEdit, I32 Value, I32 Min, I32 Max, int Shift, U8 Flags) {
000000 e92d47f0 PUSH {r4-r10,lr}
;;;286 EDIT_Obj* pObj;
;;;287 WM_LOCK();
;;;288 if (hEdit) {
000004 e9dd7908 LDRD r7,r9,[sp,#0x20]
000008 ea5f0a00 MOVS r10,r0 ;285
00000c 460d MOV r5,r1 ;285
00000e 4616 MOV r6,r2 ;285
000010 4698 MOV r8,r3 ;285
000012 d025 BEQ |L1.96|
;;;289 pObj = EDIT_H2P(hEdit);
000014 4650 MOV r0,r10
000016 f7fffffe BL GUI_ALLOC_h2p
;;;290 pObj->pfAddKeyEx = _AddKeyDec;
00001a 4912 LDR r1,|L1.100|
;;;291 pObj->pfUpdateBuffer= _UpdateBuffer;
00001c 64c1 STR r1,[r0,#0x4c]
00001e 4912 LDR r1,|L1.104|
;;;292 pObj->CurrentValue = Value;
;;;293 pObj->CursorPos = 0;
000020 63c5 STR r5,[r0,#0x3c]
000022 6501 STR r1,[r0,#0x50]
;;;294 pObj->Min = Min;
;;;295 pObj->Max = Max;
;;;296 pObj->NumDecs = Shift;
000024 e9c0680c STRD r6,r8,[r0,#0x30]
000028 2100 MOVS r1,#0 ;293
00002a 6401 STR r1,[r0,#0x40]
00002c f8807038 STRB r7,[r0,#0x38]
;;;297 pObj->Flags = Flags;
000030 f880904a STRB r9,[r0,#0x4a]
;;;298 pObj->EditMode = GUI_EDIT_MODE_OVERWRITE;
000034 2101 MOVS r1,#1
000036 4604 MOV r4,r0 ;289
000038 f8801048 STRB r1,[r0,#0x48]
;;;299 _UpdateBuffer(hEdit);
00003c 4650 MOV r0,r10
00003e f7fffffe BL _UpdateBuffer
;;;300 if (EDIT__GetCurrentChar(pObj) == '.') {
000042 4620 MOV r0,r4
000044 f7fffffe BL EDIT__GetCurrentChar
000048 282e CMP r0,#0x2e
00004a d104 BNE |L1.86|
;;;301 EDIT__SetCursorPos(pObj, pObj->CursorPos + 1);
00004c 6c21 LDR r1,[r4,#0x40]
00004e 4620 MOV r0,r4
000050 1c49 ADDS r1,r1,#1
000052 f7fffffe BL EDIT__SetCursorPos
|L1.86|
;;;302 }
;;;303 WM_Invalidate(hEdit);
000056 4650 MOV r0,r10
000058 e8bd47f0 POP {r4-r10,lr}
00005c f7ffbffe B.W WM_InvalidateWindow
|L1.96|
;;;304 }
;;;305 WM_UNLOCK();
;;;306 }
000060 e8bd87f0 POP {r4-r10,pc}
;;;307
ENDP
|L1.100|
DCD _AddKeyDec
|L1.104|
DCD _UpdateBuffer
AREA ||i._AddKeyDec||, CODE, READONLY, ALIGN=2
_AddKeyDec PROC
;;;185 */
;;;186 static void _AddKeyDec(EDIT_Handle hObj, int Key) {
000000 e92d5ff3 PUSH {r0,r1,r4-r12,lr}
000004 460c MOV r4,r1
;;;187 char c;
;;;188 EDIT_Obj * pObj;
;;;189 pObj = EDIT_H2P(hObj); /* The GUI needs not to be locked here. This function is called only from EDIT_AddKey which has already locked the GUI */
000006 9800 LDR r0,[sp,#0]
000008 f7fffffe BL GUI_ALLOC_h2p
00000c 0006 MOVS r6,r0
;;;190 if (pObj) {
00000e d029 BEQ |L2.100|
;;;191 switch (Key) {
000010 2c13 CMP r4,#0x13
000012 d02a BEQ |L2.106|
000014 dc06 BGT |L2.36|
000016 2c10 CMP r4,#0x10
000018 d03a BEQ |L2.144|
00001a 2c11 CMP r4,#0x11
00001c d016 BEQ |L2.76|
00001e 2c12 CMP r4,#0x12
000020 d14a BNE |L2.184|
000022 e031 B |L2.136|
|L2.36|
000024 2c2b CMP r4,#0x2b
000026 d009 BEQ |L2.60|
000028 2c2d CMP r4,#0x2d
00002a d145 BNE |L2.184|
;;;192 case '+':
;;;193 if (pObj->CursorPos == 0) {
;;;194 _MakePositive(pObj, hObj);
;;;195 _IncrementCursor(pObj);
;;;196 }
;;;197 break;
;;;198 case '-':
;;;199 if (pObj->CursorPos == 0) {
00002c 6c30 LDR r0,[r6,#0x40]
00002e 2800 CMP r0,#0
000030 d118 BNE |L2.100|
;;;200 _MakeNegative(pObj, hObj);
000032 4630 MOV r0,r6
000034 9900 LDR r1,[sp,#0]
000036 f7fffffe BL _MakeNegative
;;;201 _IncrementCursor(pObj);
00003a e025 B |L2.136|
|L2.60|
00003c 6c30 LDR r0,[r6,#0x40] ;193
00003e 2800 CMP r0,#0 ;193
000040 d178 BNE |L2.308|
000042 4630 MOV r0,r6 ;194
000044 9900 LDR r1,[sp,#0] ;194
000046 f7fffffe BL _MakePositive
00004a e01d B |L2.136|
|L2.76|
;;;202 }
;;;203 break;
;;;204 #if EDIT_DEC_DIGITONLY
;;;205 case GUI_KEY_UP:
;;;206 c = EDIT__GetCurrentChar(pObj);
;;;207 if ((c == '-') || (c == '+')) {
;;;208 _SwapSign(pObj, hObj);
;;;209 } else {
;;;210 int Digit = GetCurrentDigit(pObj) + 1;
;;;211 if (Digit > 9)
;;;212 Digit = 0;
;;;213 _EditDec(Digit, pObj, hObj);
;;;214 }
;;;215 break;
;;;216 case GUI_KEY_DOWN:
;;;217 c = EDIT__GetCurrentChar(pObj);
;;;218 if ((c == '-') || (c == '+')) {
;;;219 _SwapSign(pObj, hObj);
;;;220 } else {
;;;221 int Digit = GetCurrentDigit(pObj) - 1;
;;;222 if (Digit < 0)
;;;223 Digit = 9;
;;;224 _EditDec(Digit, pObj, hObj);
;;;225 }
;;;226 break;
;;;227 #else
;;;228 case GUI_KEY_UP:
;;;229 c = EDIT__GetCurrentChar(pObj);
00004c 4630 MOV r0,r6
00004e f7fffffe BL EDIT__GetCurrentChar
000052 b2c0 UXTB r0,r0
;;;230 if ((c == '-') || (c == '+')) {
000054 282d CMP r0,#0x2d
000056 d001 BEQ |L2.92|
000058 282b CMP r0,#0x2b
00005a d104 BNE |L2.102|
|L2.92|
;;;231 _SwapSign(pObj, hObj);
00005c 4630 MOV r0,r6
00005e 9900 LDR r1,[sp,#0]
000060 f7fffffe BL _SwapSign
|L2.100|
000064 e066 B |L2.308|
|L2.102|
;;;232 } else {
;;;233 _AddPosition(pObj, hObj, 1);
000066 2201 MOVS r2,#1
000068 e009 B |L2.126|
|L2.106|
;;;234 }
;;;235 break;
;;;236 case GUI_KEY_DOWN:
;;;237 c = EDIT__GetCurrentChar(pObj);
00006a 4630 MOV r0,r6
00006c f7fffffe BL EDIT__GetCurrentChar
000070 b2c0 UXTB r0,r0
;;;238 if ((c == '-') || (c == '+')) {
000072 282d CMP r0,#0x2d
000074 d0f2 BEQ |L2.92|
000076 282b CMP r0,#0x2b
000078 d0f0 BEQ |L2.92|
;;;239 _SwapSign(pObj, hObj);
;;;240 } else {
;;;241 _AddPosition(pObj, hObj, -1);
00007a f04f32ff MOV r2,#0xffffffff
|L2.126|
00007e 4630 MOV r0,r6 ;233
000080 9900 LDR r1,[sp,#0] ;233
000082 f7fffffe BL _AddPosition
000086 e055 B |L2.308|
|L2.136|
;;;242 }
;;;243 break;
;;;244 #endif
;;;245 case GUI_KEY_RIGHT:
;;;246 _IncrementCursor(pObj);
000088 4630 MOV r0,r6
00008a f7fffffe BL _IncrementCursor
;;;247 break;
00008e e051 B |L2.308|
|L2.144|
;;;248 case GUI_KEY_LEFT:
;;;249 EDIT__SetCursorPos(pObj, pObj->CursorPos - 1);
000090 6c31 LDR r1,[r6,#0x40]
000092 4630 MOV r0,r6
000094 1e49 SUBS r1,r1,#1
000096 f7fffffe BL EDIT__SetCursorPos
;;;250 if (EDIT__GetCurrentChar(pObj) == '.') {
00009a 4630 MOV r0,r6
00009c f7fffffe BL EDIT__GetCurrentChar
0000a0 282e CMP r0,#0x2e
0000a2 d147 BNE |L2.308|
;;;251 if (pObj->CursorPos > 0) {
0000a4 6c31 LDR r1,[r6,#0x40]
0000a6 2900 CMP r1,#0
0000a8 dd01 BLE |L2.174|
;;;252 EDIT__SetCursorPos(pObj, pObj->CursorPos - 1);
0000aa 1e49 SUBS r1,r1,#1
0000ac e000 B |L2.176|
|L2.174|
;;;253 } else {
;;;254 EDIT__SetCursorPos(pObj, pObj->CursorPos + 1);
0000ae 1c49 ADDS r1,r1,#1
|L2.176|
0000b0 4630 MOV r0,r6
0000b2 f7fffffe BL EDIT__SetCursorPos
0000b6 e03d B |L2.308|
|L2.184|
;;;255 }
;;;256 }
;;;257 break;
;;;258 default:
;;;259 {
;;;260 char c = EDIT__GetCurrentChar(pObj);
0000b8 4630 MOV r0,r6
0000ba f7fffffe BL EDIT__GetCurrentChar
0000be b2c0 UXTB r0,r0
;;;261 if ((c != '-') && (c != '+')) {
0000c0 282d CMP r0,#0x2d
0000c2 d037 BEQ |L2.308|
0000c4 282b CMP r0,#0x2b
0000c6 d035 BEQ |L2.308|
;;;262 int Digit = _DecChar2Int(Key);
0000c8 4620 MOV r0,r4
0000ca f7fffffe BL _DecChar2Int
0000ce f1b00800 SUBS r8,r0,#0
;;;263 if (Digit >= 0) {
0000d2 db2f BLT |L2.308|
0000d4 2400 MOVS r4,#0
0000d6 4625 MOV r5,r4
0000d8 f9b60028 LDRSH r0,[r6,#0x28]
0000dc f7fffffe BL GUI_ALLOC_h2p
0000e0 4682 MOV r10,r0
0000e2 2700 MOVS r7,#0
0000e4 f8dfb058 LDR r11,|L2.320|
0000e8 e01b B |L2.290|
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -