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

📄 multipage.txt

📁 STM32F103ZET6+UCOSII+UCGUI源码
💻 TXT
📖 第 1 页 / 共 5 页
字号:
;;;361    static void _DrawTextItem(MULTIPAGE_Obj* pObj, const char* pText, unsigned Index,
000000  e92d47fc          PUSH     {r2-r10,lr}
;;;362                              const GUI_RECT* pRect, int x0, int w, int ColorIndex) {
;;;363      GUI_RECT r;
;;;364      r = *pRect;
000004  e9dd890b          LDRD     r8,r9,[sp,#0x2c]
000008  4604              MOV      r4,r0                 ;362
00000a  468a              MOV      r10,r1                ;362
00000c  4615              MOV      r5,r2                 ;362
00000e  461e              MOV      r6,r3                 ;362
000010  2208              MOVS     r2,#8
000012  4619              MOV      r1,r3
000014  4668              MOV      r0,sp
000016  9f0a              LDR      r7,[sp,#0x28]
000018  f7fffffe          BL       __aeabi_memcpy
;;;365      r.x0 += x0;
00001c  f8bd0000          LDRH     r0,[sp,#0]
;;;366      r.x1  = r.x0 + w;
;;;367      WIDGET__EFFECT_DrawUpRect(&pObj->Widget, &r);
000020  4669              MOV      r1,sp
000022  4438              ADD      r0,r0,r7              ;365
000024  f8ad0000          STRH     r0,[sp,#0]            ;365
000028  4440              ADD      r0,r0,r8              ;366
00002a  f8ad0004          STRH     r0,[sp,#4]            ;366
00002e  4620              MOV      r0,r4
000030  f7fffffe          BL       WIDGET__EFFECT_DrawUpRect
;;;368      GUI__ReduceRect(&r, &r, pObj->Widget.pEffect->EffectSize);
000034  6a20              LDR      r0,[r4,#0x20]
000036  4669              MOV      r1,sp
000038  6942              LDR      r2,[r0,#0x14]
00003a  4668              MOV      r0,sp
00003c  f7fffffe          BL       GUI__ReduceRect
;;;369      if (pObj->Selection == Index) {
000040  6b20              LDR      r0,[r4,#0x30]
000042  42a8              CMP      r0,r5
000044  d145              BNE      |L20.210|
;;;370        if (pObj->Align & MULTIPAGE_ALIGN_BOTTOM) {
000046  6ba1              LDR      r1,[r4,#0x38]
;;;371          r.y0 -= pObj->Widget.pEffect->EffectSize + 1;
;;;372    	    if (pObj->Widget.pEffect->EffectSize > 1) {
;;;373    		    LCD_SetColor(GUI_WHITE);
;;;374    		    GUI_DrawVLine(r.x0 - 1, r.y0, r.y0 + 1);
;;;375    		    LCD_SetColor(0x555555);
000048  4d2f              LDR      r5,|L20.264|
00004a  f06f407f          MVN      r0,#0xff000000        ;373
00004e  0749              LSLS     r1,r1,#29             ;370
000050  d51c              BPL      |L20.140|
000052  6a22              LDR      r2,[r4,#0x20]         ;371
000054  f8bd1002          LDRH     r1,[sp,#2]            ;371
000058  6952              LDR      r2,[r2,#0x14]         ;371
00005a  1a89              SUBS     r1,r1,r2              ;371
00005c  1e49              SUBS     r1,r1,#1              ;371
00005e  f8ad1002          STRH     r1,[sp,#2]            ;371
000062  6a21              LDR      r1,[r4,#0x20]         ;372
000064  6949              LDR      r1,[r1,#0x14]         ;372
000066  2901              CMP      r1,#1                 ;372
000068  dd33              BLE      |L20.210|
00006a  f7fffffe          BL       LCD_SetColor
00006e  f9bd1002          LDRSH    r1,[sp,#2]            ;374
000072  f9bd0000          LDRSH    r0,[sp,#0]            ;374
000076  1c4a              ADDS     r2,r1,#1              ;374
000078  1e40              SUBS     r0,r0,#1              ;374
00007a  f7fffffe          BL       GUI_DrawVLine
00007e  4628              MOV      r0,r5
000080  f7fffffe          BL       LCD_SetColor
;;;376    		    GUI_DrawVLine(r.x1 + 1, r.y0, r.y0 + 1);
000084  f9bd1002          LDRSH    r1,[sp,#2]
000088  1c4a              ADDS     r2,r1,#1
00008a  e01d              B        |L20.200|
                  |L20.140|
;;;377    	    }
;;;378        } else {
;;;379          r.y1 += pObj->Widget.pEffect->EffectSize + 1;
00008c  6a22              LDR      r2,[r4,#0x20]
00008e  f8bd1006          LDRH     r1,[sp,#6]
000092  6952              LDR      r2,[r2,#0x14]
000094  4411              ADD      r1,r1,r2
000096  1c49              ADDS     r1,r1,#1
000098  f8ad1006          STRH     r1,[sp,#6]
;;;380    	    if (pObj->Widget.pEffect->EffectSize > 1) {
00009c  6a21              LDR      r1,[r4,#0x20]
00009e  6949              LDR      r1,[r1,#0x14]
0000a0  2901              CMP      r1,#1
0000a2  dd16              BLE      |L20.210|
;;;381    		    LCD_SetColor(GUI_WHITE);
0000a4  f7fffffe          BL       LCD_SetColor
;;;382    		    GUI_DrawVLine(r.x0 - 1, r.y1 - 2, r.y1 - 1);
0000a8  f9bd1006          LDRSH    r1,[sp,#6]
0000ac  f9bd0000          LDRSH    r0,[sp,#0]
0000b0  1e4a              SUBS     r2,r1,#1
0000b2  1e89              SUBS     r1,r1,#2
0000b4  1e40              SUBS     r0,r0,#1
0000b6  f7fffffe          BL       GUI_DrawVLine
;;;383    		    LCD_SetColor(0x555555);
0000ba  4628              MOV      r0,r5
0000bc  f7fffffe          BL       LCD_SetColor
;;;384    		    GUI_DrawVLine(r.x1 + 1, r.y1 - 2, r.y1 - 1);
0000c0  f9bd1006          LDRSH    r1,[sp,#6]
0000c4  1e4a              SUBS     r2,r1,#1
0000c6  1e89              SUBS     r1,r1,#2
                  |L20.200|
0000c8  f9bd0004          LDRSH    r0,[sp,#4]
0000cc  1c40              ADDS     r0,r0,#1
0000ce  f7fffffe          BL       GUI_DrawVLine
                  |L20.210|
;;;385    	    }
;;;386        }
;;;387      }
;;;388      LCD_SetColor(pObj->aBkColor[ColorIndex]);
0000d2  eb040589          ADD      r5,r4,r9,LSL #2
0000d6  6c28              LDR      r0,[r5,#0x40]
0000d8  f7fffffe          BL       LCD_SetColor
;;;389      WIDGET__FillRectEx(&pObj->Widget, &r);
0000dc  4669              MOV      r1,sp
0000de  4620              MOV      r0,r4
0000e0  f7fffffe          BL       WIDGET__FillRectEx
;;;390      LCD_SetBkColor(pObj->aBkColor[ColorIndex]);
0000e4  6c28              LDR      r0,[r5,#0x40]
0000e6  f7fffffe          BL       LCD_SetBkColor
;;;391      LCD_SetColor(pObj->aTextColor[ColorIndex]);
0000ea  6ca8              LDR      r0,[r5,#0x48]
0000ec  f7fffffe          BL       LCD_SetColor
;;;392      GUI_DispStringAt(pText, r.x0 + 4, pRect->y0 + 3);
0000f0  f9b62002          LDRSH    r2,[r6,#2]
0000f4  f9bd1000          LDRSH    r1,[sp,#0]
0000f8  1cd2              ADDS     r2,r2,#3
0000fa  1d09              ADDS     r1,r1,#4
0000fc  4650              MOV      r0,r10
0000fe  f7fffffe          BL       GUI_DispStringAt
;;;393    }
000102  e8bd87fc          POP      {r2-r10,pc}
;;;394    
                          ENDP

000106  0000              DCW      0x0000
                  |L20.264|
                          DCD      0x00555555

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

                  _GetEnable PROC
;;;203    */
;;;204    static int _GetEnable(MULTIPAGE_Obj* pObj, unsigned Index) {
000000  b510              PUSH     {r4,lr}
000002  4602              MOV      r2,r0
;;;205      int r = 0;
;;;206      if ((int)Index < pObj->Handles.NumItems) {
000004  8d53              LDRH     r3,[r2,#0x2a]
000006  2000              MOVS     r0,#0                 ;205
000008  428b              CMP      r3,r1
00000a  dd06              BLE      |L21.26|
;;;207        MULTIPAGE_PAGE* pPage;
;;;208        pPage = (MULTIPAGE_PAGE*) GUI_ARRAY_GetpItem(&pObj->Handles, Index);
00000c  f102002a          ADD      r0,r2,#0x2a
000010  f7fffffe          BL       GUI_ARRAY_GetpItem
;;;209        r = (pPage->Status & MULTIPAGE_STATE_ENABLED) ? 1 : 0;
000014  7880              LDRB     r0,[r0,#2]
000016  f0000001          AND      r0,r0,#1
                  |L21.26|
;;;210      }
;;;211      return r;
;;;212    }
00001a  bd10              POP      {r4,pc}
;;;213    
                          ENDP


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

                  _GetPagePosX PROC
;;;266    */
;;;267    static int _GetPagePosX(MULTIPAGE_Obj* pObj, unsigned Index) {
000000  e92d41f0          PUSH     {r4-r8,lr}
;;;268      unsigned i, r = 0;
000004  2500              MOVS     r5,#0
000006  4607              MOV      r7,r0                 ;267
000008  460e              MOV      r6,r1                 ;267
;;;269      for (i = 0; i < Index; i++) {
00000a  462c              MOV      r4,r5
00000c  e005              B        |L22.26|
                  |L22.14|
;;;270        r += _GetPageSizeX(pObj, i);
00000e  4621              MOV      r1,r4
000010  4638              MOV      r0,r7
000012  f7fffffe          BL       _GetPageSizeX
000016  4405              ADD      r5,r5,r0
000018  1c64              ADDS     r4,r4,#1              ;269
                  |L22.26|
00001a  42b4              CMP      r4,r6                 ;269
00001c  d3f7              BCC      |L22.14|
;;;271      }
;;;272      return r;
00001e  4628              MOV      r0,r5
;;;273    }
000020  e8bd81f0          POP      {r4-r8,pc}
;;;274    
                          ENDP


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

                  _GetPageSizeX PROC
;;;249    */
;;;250    static int _GetPageSizeX(MULTIPAGE_Obj* pObj, unsigned Index) {
000000  b570              PUSH     {r4-r6,lr}
000002  4604              MOV      r4,r0
000004  460d              MOV      r5,r1
;;;251      int r = 0;
;;;252      if ((int)Index < pObj->Handles.NumItems) {
000006  8d61              LDRH     r1,[r4,#0x2a]
000008  2000              MOVS     r0,#0                 ;251
00000a  42a9              CMP      r1,r5
00000c  dd0b              BLE      |L23.38|
;;;253        MULTIPAGE_PAGE* pPage;
;;;254        GUI_SetFont(pObj->Font);
00000e  6be0              LDR      r0,[r4,#0x3c]
000010  f7fffffe          BL       GUI_SetFont
;;;255        pPage = (MULTIPAGE_PAGE*) GUI_ARRAY_GetpItem(&pObj->Handles, Index);
000014  4629              MOV      r1,r5
000016  f104002a          ADD      r0,r4,#0x2a
00001a  f7fffffe          BL       GUI_ARRAY_GetpItem
;;;256        r = GUI_GetStringDistX(&pPage->acText) + 10;
00001e  1cc0              ADDS     r0,r0,#3
000020  f7fffffe          BL       GUI_GetStringDistX
000024  300a              ADDS     r0,r0,#0xa
                  |L23.38|
;;;257      }
;;;258      return r;
;;;259    }
000026  bd70              POP      {r4-r6,pc}
;;;260    
                          ENDP


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

                  _GetTextRect PROC
;;;288    */
;;;289    static void _GetTextRect(MULTIPAGE_Obj* pObj, GUI_RECT* pRect) {
000000  e92d41fc          PUSH     {r2-r8,lr}
000004  4605              MOV      r5,r0
000006  460c              MOV      r4,r1
;;;290      GUI_RECT rBorder;
;;;291      int Width, Height;
;;;292      Height = GUI_GetYSizeOfFont(pObj->Font) + 6;
000008  6bc0              LDR      r0,[r0,#0x3c]
00000a  f7fffffe          BL       GUI_GetYSizeOfFont
00000e  1d87              ADDS     r7,r0,#6
;;;293      _CalcBorderRect(pObj, &rBorder);
000010  4669              MOV      r1,sp
000012  4628              MOV      r0,r5
000014  f7fffffe          BL       _CalcBorderRect
;;;294      /* Calculate Y-Position of text item */
;;;295      if (pObj->Align & MULTIPAGE_ALIGN_BOTTOM) {
000018  6ba8              LDR      r0,[r5,#0x38]
;;;296        pRect->y0 = rBorder.y1;
;;;297      } else {
;;;298        pRect->y0 = 0;
00001a  f04f0600          MOV      r6,#0
00001e  0740              LSLS     r0,r0,#29             ;295
000020  d503              BPL      |L24.42|
000022  f8bd0006          LDRH     r0,[sp,#6]            ;296
000026  8060              STRH     r0,[r4,#2]            ;296
000028  e000              B        |L24.44|
                  |L24.42|
00002a  8066              STRH     r6,[r4,#2]
                  |L24.44|
;;;299      }
;;;300      pRect->y1 = pRect->y0 + Height;
00002c  8860              LDRH     r0,[r4,#2]
00002e  4438              ADD      r0,r0,r7
000030  80e0              STRH     r0,[r4,#6]
;;;301      /* Calculate width of text items */
;;;302      if (pObj->Widget.State & MULTIPAGE_STATE_SCROLLMODE) {
000032  8ce8              LDRH     r0,[r5,#0x26]
000034  05c0              LSLS     r0,r0,#23
000036  d507              BPL      |L24.72|
;;;303        Width = rBorder.x1 - ((Height * 3) >> 1) - 3;
000038  f9bd0004          LDRSH    r0,[sp,#4]
00003c  eb070147          ADD      r1,r7,r7,LSL #1
000040  eba00061          SUB      r0,r0,r1,ASR #1
000044  1ec0              SUBS     r0,r0,#3
000046  e002              B        |L24.78|
                  |L24.72|
;;;304      } else {
;;;305        Width = _GetTextWidth(pObj);
000048  4628              MOV      r0,r5
00004a  f7fffffe          BL       _GetTextWidth
                  |L24.78|
;;;306      }
;;;307      /* Calculate X-Position of text item */
;;;308      if (pObj->Align & MULTIPAGE_ALIGN_RIGHT) {
00004e  6ba9              LDR      r1,[r5,#0x38]
000050  07c9              LSLS     r1,r1,#31
000052  d006              BEQ      |L24.98|
;;;309        pRect->x0 = rBorder.x1 - Width;
000054  f8bd1004          LDRH     r1,[sp,#4]
000058  1a08              SUBS     r0,r1,r0
00005a  8020              STRH     r0,[r4,#0]
;;;310        pRect->x1 = rBorder.x1;
00005c  f8bd0004          LDRH     r0,[sp,#4]
000060  e000              B        |L24.100|
                  |L24.98|
;;;311      } else {
;;;312        pRect->x0 = 0;
000062  8026              STRH     r6,[r4,#0]
                  

⌨️ 快捷键说明

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