⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 multiedit.txt

📁 STM32F103ZET6+UCOSII+UCGUI源码
💻 TXT
📖 第 1 页 / 共 5 页
字号:
000136  4638              MOV      r0,r7
000138  f7fffffe          BL       _IsOverwriteAtThisChar
00013c  b118              CBZ      r0,|L23.326|
;;;1272           _DeleteChar(hObj, pObj);
00013e  4621              MOV      r1,r4
000140  4638              MOV      r0,r7
000142  f7fffffe          BL       _DeleteChar
                  |L23.326|
;;;1273         }
;;;1274         if (_InsertChar(hObj, pObj, Key)) {
000146  4632              MOV      r2,r6
000148  4621              MOV      r1,r4
00014a  4638              MOV      r0,r7
00014c  f7fffffe          BL       _InsertChar
000150  b118              CBZ      r0,|L23.346|
                  |L23.338|
;;;1275           _SetCursorPos(hObj, pObj, pObj->CursorPosChar + 1);
000152  f8b42048          LDRH     r2,[r4,#0x48]
000156  1c52              ADDS     r2,r2,#1
000158  e7e0              B        |L23.284|
                  |L23.346|
;;;1276         }
;;;1277         r = 1;               /* Key has been consumed */
00015a  2501              MOVS     r5,#1
                  |L23.348|
;;;1278       }
;;;1279     }
;;;1280     _InvalidateTextArea(hObj);
00015c  4638              MOV      r0,r7
00015e  f7fffffe          BL       _InvalidateTextArea
;;;1281     return r;
000162  4628              MOV      r0,r5
;;;1282   }
000164  e8bd81fc          POP      {r2-r8,pc}
;;;1283   
                          ENDP


                          AREA ||i._CalcNextValidCursorPos||, CODE, READONLY, ALIGN=1

                  _CalcNextValidCursorPos PROC
;;;693    */
;;;694    static int _CalcNextValidCursorPos(MULTIEDIT_HANDLE hObj, MULTIEDIT_OBJ* pObj, int CursorPosChar, int * pCursorPosByte, int * pCursorLine) {
000000  e92d5fff          PUSH     {r0-r12,lr}
;;;695      if (pObj->hText) {
000004  f9b10038          LDRSH    r0,[r1,#0x38]
000008  f8dd9038          LDR      r9,[sp,#0x38]
00000c  460d              MOV      r5,r1                 ;694
00000e  4614              MOV      r4,r2                 ;694
000010  461f              MOV      r7,r3                 ;694
000012  2800              CMP      r0,#0
000014  d050              BEQ      |L24.184|
;;;696        char *pNextLine, *pCursor, *pText;
;;;697        int CursorLine, NumChars, CursorPosByte;
;;;698        pText    = (char*) GUI_ALLOC_h2p(pObj->hText);
000016  f7fffffe          BL       GUI_ALLOC_h2p
00001a  4683              MOV      r11,r0
;;;699        NumChars = _GetNumChars(pObj);
00001c  4628              MOV      r0,r5
00001e  f7fffffe          BL       _GetNumChars
;;;700        /* Set offset in valid range */
;;;701        if (CursorPosChar < pObj->NumCharsPrompt) {
000022  8fe9              LDRH     r1,[r5,#0x3e]
000024  42a1              CMP      r1,r4
000026  dd00              BLE      |L24.42|
;;;702          CursorPosChar = pObj->NumCharsPrompt;
000028  460c              MOV      r4,r1
                  |L24.42|
;;;703        }
;;;704        if (CursorPosChar > NumChars) {
00002a  4284              CMP      r4,r0
00002c  dd00              BLE      |L24.48|
;;;705          CursorPosChar = NumChars;
00002e  4604              MOV      r4,r0
                  |L24.48|
;;;706        }
;;;707        CursorPosByte = GUI_UC__NumChars2NumBytes(pText, CursorPosChar);
000030  4621              MOV      r1,r4
000032  4658              MOV      r0,r11
000034  f7fffffe          BL       GUI_UC__NumChars2NumBytes
000038  4682              MOV      r10,r0
;;;708        CursorLine    = _GetCursorLine(hObj, pObj, pText, CursorPosChar);
00003a  4623              MOV      r3,r4
00003c  465a              MOV      r2,r11
00003e  4629              MOV      r1,r5
000040  9800              LDR      r0,[sp,#0]
000042  f7fffffe          BL       _GetCursorLine
000046  4606              MOV      r6,r0
;;;709        pCursor       = pText + CursorPosByte;
;;;710        pNextLine     = _GetpLine(hObj, pObj, CursorLine);
000048  4602              MOV      r2,r0
00004a  eb0b080a          ADD      r8,r11,r10            ;709
00004e  4629              MOV      r1,r5
000050  9800              LDR      r0,[sp,#0]
000052  f7fffffe          BL       _GetpLine
;;;711        if (pNextLine > pCursor) {
000056  4540              CMP      r0,r8
000058  d925              BLS      |L24.166|
;;;712          if (pObj->CursorPosChar < CursorPosChar) {
00005a  f8b51048          LDRH     r1,[r5,#0x48]
00005e  42a1              CMP      r1,r4
000060  db0f              BLT      |L24.130|
;;;713            pCursor = pNextLine;
;;;714          } else {
;;;715            char *pPrevLine;
;;;716            int NumChars;
;;;717            pPrevLine  = _GetpLine(hObj, pObj, CursorLine - 1);
000062  1e72              SUBS     r2,r6,#1
000064  4629              MOV      r1,r5
000066  9800              LDR      r0,[sp,#0]
000068  f7fffffe          BL       _GetpLine
00006c  4604              MOV      r4,r0
;;;718            NumChars   = _WrapGetNumCharsDisp(hObj, pObj, pPrevLine);
00006e  4602              MOV      r2,r0
000070  4629              MOV      r1,r5
000072  9800              LDR      r0,[sp,#0]
000074  f7fffffe          BL       _WrapGetNumCharsDisp
;;;719            pPrevLine += GUI_UC__NumChars2NumBytes(pPrevLine, NumChars);
000078  4601              MOV      r1,r0
00007a  4620              MOV      r0,r4
00007c  f7fffffe          BL       GUI_UC__NumChars2NumBytes
000080  4420              ADD      r0,r0,r4
                  |L24.130|
;;;720            pCursor = pPrevLine;
;;;721          }
;;;722          CursorPosChar = GUI_UC__NumBytes2NumChars(pText, pCursor - pText);
000082  eba0010b          SUB      r1,r0,r11
000086  4658              MOV      r0,r11
000088  f7fffffe          BL       GUI_UC__NumBytes2NumChars
00008c  4604              MOV      r4,r0
;;;723          CursorPosByte = GUI_UC__NumChars2NumBytes(pText, CursorPosChar);
00008e  4601              MOV      r1,r0
000090  4658              MOV      r0,r11
000092  f7fffffe          BL       GUI_UC__NumChars2NumBytes
000096  4682              MOV      r10,r0
;;;724          CursorLine    = _GetCursorLine(hObj, pObj, pText, CursorPosChar);
000098  4623              MOV      r3,r4
00009a  465a              MOV      r2,r11
00009c  4629              MOV      r1,r5
00009e  9800              LDR      r0,[sp,#0]
0000a0  f7fffffe          BL       _GetCursorLine
0000a4  4606              MOV      r6,r0
                  |L24.166|
;;;725        }
;;;726        if (pCursorPosByte) {
0000a6  b10f              CBZ      r7,|L24.172|
;;;727          *pCursorPosByte = CursorPosByte;
0000a8  f8c7a000          STR      r10,[r7,#0]
                  |L24.172|
;;;728        }
;;;729        if (pCursorLine) {
0000ac  f1b90f00          CMP      r9,#0
0000b0  d001              BEQ      |L24.182|
;;;730          *pCursorLine = CursorLine;
0000b2  f8c96000          STR      r6,[r9,#0]
                  |L24.182|
;;;731        }
;;;732        return CursorPosChar;
0000b6  4620              MOV      r0,r4
                  |L24.184|
;;;733      }
;;;734      return 0;
;;;735    }
0000b8  b004              ADD      sp,sp,#0x10
0000ba  e8bd9ff0          POP      {r4-r12,pc}
;;;736    
                          ENDP


                          AREA ||i._CalcScrollParas||, CODE, READONLY, ALIGN=1

                  _CalcScrollParas PROC
;;;572    */
;;;573    static void _CalcScrollParas(MULTIEDIT_HANDLE hObj) {
000000  b570              PUSH     {r4-r6,lr}
000002  4605              MOV      r5,r0
;;;574      MULTIEDIT_OBJ* pObj = MULTIEDIT_H2P(hObj);
000004  f7fffffe          BL       GUI_ALLOC_h2p
000008  4604              MOV      r4,r0
;;;575      /* Calc vertical scroll parameters */
;;;576      pObj->ScrollStateV.NumItems = _GetNumLines(hObj, pObj);
00000a  4601              MOV      r1,r0
00000c  4628              MOV      r0,r5
00000e  f7fffffe          BL       _GetNumLines
;;;577      pObj->ScrollStateV.PageSize = _GetNumVisLines(hObj, pObj);
000012  65a0              STR      r0,[r4,#0x58]
000014  4621              MOV      r1,r4
000016  4628              MOV      r0,r5
000018  f7fffffe          BL       _GetNumVisLines
;;;578      /* Calc horizontal scroll parameters */
;;;579      pObj->ScrollStateH.NumItems = _GetTextSizeX(hObj, pObj);
00001c  6620              STR      r0,[r4,#0x60]
00001e  4621              MOV      r1,r4
000020  4628              MOV      r0,r5
000022  f7fffffe          BL       _GetTextSizeX
;;;580      pObj->ScrollStateH.PageSize = _GetXSize(hObj, pObj);
000026  6660              STR      r0,[r4,#0x64]
000028  4621              MOV      r1,r4
00002a  4628              MOV      r0,r5
00002c  f7fffffe          BL       _GetXSize
;;;581      _CalcScrollPos(hObj, pObj);
000030  66e0              STR      r0,[r4,#0x6c]
000032  4621              MOV      r1,r4
000034  4628              MOV      r0,r5
000036  e8bd4070          POP      {r4-r6,lr}
00003a  f7ffbffe          B.W      _CalcScrollPos
;;;582    }
;;;583    
                          ENDP


                          AREA ||i._CalcScrollPos||, CODE, READONLY, ALIGN=1

                  _CalcScrollPos PROC
;;;462    */
;;;463    static void _CalcScrollPos(MULTIEDIT_HANDLE hObj, MULTIEDIT_OBJ* pObj) {
000000  b57c              PUSH     {r2-r6,lr}
000002  4605              MOV      r5,r0
000004  460c              MOV      r4,r1
;;;464      int xCursor, yCursor;
;;;465      _GetCursorXY(hObj, pObj, &xCursor, &yCursor);
000006  466b              MOV      r3,sp
000008  aa01              ADD      r2,sp,#4
00000a  f7fffffe          BL       _GetCursorXY
;;;466      yCursor /= GUI_GetYDistOfFont(pObj->pFont);
00000e  6f20              LDR      r0,[r4,#0x70]
000010  f7fffffe          BL       GUI_GetYDistOfFont
000014  9900              LDR      r1,[sp,#0]
;;;467      WM_CheckScrollPos(&pObj->ScrollStateV, yCursor, 0, 0);       /* Vertical */
000016  2300              MOVS     r3,#0
000018  fb91f1f0          SDIV     r1,r1,r0              ;466
00001c  461a              MOV      r2,r3
00001e  f1040058          ADD      r0,r4,#0x58
000022  9100              STR      r1,[sp,#0]
000024  f7fffffe          BL       WM_CheckScrollPos
;;;468      WM_CheckScrollPos(&pObj->ScrollStateH, xCursor, 30, 30);     /* Horizontal */
000028  231e              MOVS     r3,#0x1e
00002a  461a              MOV      r2,r3
00002c  f1040064          ADD      r0,r4,#0x64
000030  9901              LDR      r1,[sp,#4]
000032  f7fffffe          BL       WM_CheckScrollPos
;;;469      _SetScrollState(hObj);
000036  4628              MOV      r0,r5
000038  f7fffffe          BL       _SetScrollState
;;;470    }
00003c  bd7c              POP      {r2-r6,pc}
;;;471    
                          ENDP


                          AREA ||i._ClearCache||, CODE, READONLY, ALIGN=1

                  _ClearCache PROC
;;;368    */
;;;369    static void _ClearCache(MULTIEDIT_OBJ* pObj) {
000000  2100              MOVS     r1,#0
;;;370      pObj->CacheLineNumber = 0;
000002  3050              ADDS     r0,r0,#0x50
000004  8041              STRH     r1,[r0,#2]
;;;371      pObj->CacheLinePosByte = 0;
000006  8001              STRH     r1,[r0,#0]
;;;372      pObj->CacheFirstVisibleByte = 0;
000008  80c1              STRH     r1,[r0,#6]
;;;373      pObj->CacheFirstVisibleLine = 0;
00000a  8081              STRH     r1,[r0,#4]
;;;374    }
00000c  4770              BX       lr
;;;375    
                          ENDP


                          AREA ||i._DeleteChar||, CODE, READONLY, ALIGN=1

                  _DeleteChar PROC
;;;1020   */
;;;1021   static void _DeleteChar(MULTIEDIT_HANDLE hObj, MULTIEDIT_OBJ* pObj) {
000000  e92d47f0          PUSH     {r4-r10,lr}
000004  4681              MOV      r9,r0
;;;1022     if (pObj->hText) {
000006  f9b10038          LDRSH    r0,[r1,#0x38]
00000a  460c              MOV      r4,r1                 ;1021
00000c  2800              CMP      r0,#0
00000e  d053              BEQ      |L28.184|
;;;1023       unsigned CursorOffset;
;;;1024       char* s;
;;;1025       s = (char*) GUI_ALLOC_h2p(pObj->hText);
000010  f7fffffe          BL       GUI_ALLOC_h2p
000014  4680              MOV      r8,r0
;;;1026       CursorOffset = pObj->CursorPosByte;
000016  f8b4504a          LDRH     r5,[r4,#0x4a]
;;;1027       if (CursorOffset < strlen(s)) {
00001a  f7fffffe          BL       strlen
00001e  42a8              CMP      r0,r5
000020  d94a              BLS      |L28.184|
;;;1028         char *pCursor, *pLine, *pEndLine;
;;;1029         int CursorLine, NumChars, NumBytes;
;;;1030         pCursor    = s + CursorOffset;
000022  eb080605          ADD      r6,r8,r5
;;;1031         CursorLine = pObj->CursorLine;
000026  f8b42046          LDRH     r2,[r4,#0x46]
;;;1032         pLine      = _GetpLine(hObj, pObj, CursorLine);
00002a  4621              MOV      r1,r4
00002c  4648              MOV      r0,r9
00002e  f7fffffe          BL       _GetpLine
000032  4607              MOV      r7,r0
;;;1033         NumChars   = _WrapGetNumCharsDisp(hObj, pObj, pLine);
000034  4602              MOV      r2,r0
000036  4621              MOV      r1,r4
000

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -