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

📄 multipage.txt

📁 STM32F103ZET6+UCOSII+UCGUI源码
💻 TXT
📖 第 1 页 / 共 5 页
字号:
                          AREA ||i.MULTIPAGE_SetAlign||, CODE, READONLY, ALIGN=1

                  MULTIPAGE_SetAlign PROC
;;;887    */
;;;888    void MULTIPAGE_SetAlign(MULTIPAGE_Handle hObj, unsigned Align) {
000000  b57c              PUSH     {r2-r6,lr}
000002  0005              MOVS     r5,r0
000004  460e              MOV      r6,r1
;;;889      MULTIPAGE_Obj* pObj;
;;;890      GUI_RECT rClient;
;;;891      if (hObj) {
000006  d01b              BEQ      |L10.64|
;;;892        WM_LOCK();
;;;893        pObj = MULTIPAGE_H2P(hObj);
000008  4628              MOV      r0,r5
00000a  f7fffffe          BL       GUI_ALLOC_h2p
00000e  0004              MOVS     r4,r0
;;;894        MULTIPAGE_ASSERT_IS_VALID_PTR(pObj);
;;;895        if (pObj) {
000010  d016              BEQ      |L10.64|
;;;896          pObj->Align = Align;
;;;897          _CalcClientRect(pObj, &rClient);
000012  4669              MOV      r1,sp
000014  4620              MOV      r0,r4
000016  63a6              STR      r6,[r4,#0x38]
000018  f7fffffe          BL       _CalcClientRect
;;;898          WM_MoveTo(pObj->hClient, rClient.x0 + pObj->Widget.Win.Rect.x0,
00001c  f9bd0002          LDRSH    r0,[sp,#2]
000020  f9b41002          LDRSH    r1,[r4,#2]
000024  1842              ADDS     r2,r0,r1
000026  f9bd0000          LDRSH    r0,[sp,#0]
00002a  f9b41000          LDRSH    r1,[r4,#0]
00002e  4401              ADD      r1,r1,r0
000030  f9b40028          LDRSH    r0,[r4,#0x28]
000034  f7fffffe          BL       WM_MoveTo
;;;899                                   rClient.y0 + pObj->Widget.Win.Rect.y0);
;;;900          _UpdatePositions(hObj, pObj);
000038  4621              MOV      r1,r4
00003a  4628              MOV      r0,r5
00003c  f7fffffe          BL       _UpdatePositions
                  |L10.64|
;;;901        }
;;;902        WM_UNLOCK();
;;;903      }
;;;904    }
000040  bd7c              POP      {r2-r6,pc}
;;;905    
                          ENDP


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

                  MULTIPAGE_SetBkColor PROC
;;;833    */
;;;834    void MULTIPAGE_SetBkColor(MULTIPAGE_Handle hObj, GUI_COLOR Color, unsigned Index) {
000000  b570              PUSH     {r4-r6,lr}
000002  0005              MOVS     r5,r0
000004  460e              MOV      r6,r1
000006  4614              MOV      r4,r2
;;;835      MULTIPAGE_Obj* pObj;
;;;836      if (hObj && ((int)Index < MULTIPAGE_NUMCOLORS)) {
000008  d00e              BEQ      |L11.40|
00000a  2c02              CMP      r4,#2
00000c  da0c              BGE      |L11.40|
;;;837        WM_LOCK();
;;;838        pObj = MULTIPAGE_H2P(hObj);
00000e  4628              MOV      r0,r5
000010  f7fffffe          BL       GUI_ALLOC_h2p
;;;839        MULTIPAGE_ASSERT_IS_VALID_PTR(pObj);
;;;840        if (pObj) {
000014  2800              CMP      r0,#0
000016  d007              BEQ      |L11.40|
;;;841          pObj->aBkColor[Index] = Color;
000018  eb000084          ADD      r0,r0,r4,LSL #2
;;;842          WM_InvalidateWindow(hObj);
00001c  6406              STR      r6,[r0,#0x40]
00001e  4628              MOV      r0,r5
000020  e8bd4070          POP      {r4-r6,lr}
000024  f7ffbffe          B.W      WM_InvalidateWindow
                  |L11.40|
;;;843        }
;;;844        WM_UNLOCK();
;;;845      }
;;;846    }
000028  bd70              POP      {r4-r6,pc}
;;;847    
                          ENDP


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

                  MULTIPAGE_SetFont PROC
;;;869    */
;;;870    void MULTIPAGE_SetFont(MULTIPAGE_Handle hObj, const GUI_FONT GUI_UNI_PTR * pFont) {
000000  b570              PUSH     {r4-r6,lr}
000002  0005              MOVS     r5,r0
000004  460c              MOV      r4,r1
;;;871      MULTIPAGE_Obj* pObj;
;;;872      if (hObj && pFont) {
000006  d00d              BEQ      |L12.36|
000008  2c00              CMP      r4,#0
00000a  d00b              BEQ      |L12.36|
;;;873        WM_LOCK();
;;;874        pObj = MULTIPAGE_H2P(hObj);
00000c  4628              MOV      r0,r5
00000e  f7fffffe          BL       GUI_ALLOC_h2p
;;;875        MULTIPAGE_ASSERT_IS_VALID_PTR(pObj);
;;;876        if (pObj) {
000012  2800              CMP      r0,#0
000014  d006              BEQ      |L12.36|
;;;877          pObj->Font = pFont;
;;;878          _UpdatePositions(hObj, pObj);
000016  4601              MOV      r1,r0
000018  63c4              STR      r4,[r0,#0x3c]
00001a  4628              MOV      r0,r5
00001c  e8bd4070          POP      {r4-r6,lr}
000020  f7ffbffe          B.W      _UpdatePositions
                  |L12.36|
;;;879        }
;;;880        WM_UNLOCK();
;;;881      }
;;;882    }
000024  bd70              POP      {r4-r6,pc}
;;;883    
                          ENDP


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

                  MULTIPAGE_SetText PROC
;;;805    */
;;;806    void MULTIPAGE_SetText(MULTIPAGE_Handle hObj, const char* pText, unsigned Index) {
000000  e92d43f8          PUSH     {r3-r9,lr}
000004  0005              MOVS     r5,r0
000006  460e              MOV      r6,r1
000008  4690              MOV      r8,r2
;;;807      MULTIPAGE_Obj* pObj;
;;;808      if (hObj && pText) {
00000a  d031              BEQ      |L13.112|
00000c  2e00              CMP      r6,#0
00000e  d02f              BEQ      |L13.112|
;;;809        WM_LOCK();
;;;810        pObj = MULTIPAGE_H2P(hObj);
000010  4628              MOV      r0,r5
000012  f7fffffe          BL       GUI_ALLOC_h2p
000016  0004              MOVS     r4,r0
;;;811        MULTIPAGE_ASSERT_IS_VALID_PTR(pObj);
;;;812        if (pObj) {
000018  d02a              BEQ      |L13.112|
;;;813          if ((int)Index < pObj->Handles.NumItems) {
00001a  8d61              LDRH     r1,[r4,#0x2a]
00001c  4541              CMP      r1,r8
00001e  dd27              BLE      |L13.112|
;;;814            MULTIPAGE_PAGE* pPage;
;;;815            MULTIPAGE_PAGE Page;
;;;816            pPage = (MULTIPAGE_PAGE*) GUI_ARRAY_GetpItem(&pObj->Handles, Index);
000020  f104002a          ADD      r0,r4,#0x2a
000024  4641              MOV      r1,r8
000026  4607              MOV      r7,r0
000028  f7fffffe          BL       GUI_ARRAY_GetpItem
;;;817            Page.hWin   = pPage->hWin;
00002c  8801              LDRH     r1,[r0,#0]
00002e  f8ad1000          STRH     r1,[sp,#0]
;;;818            Page.Status = pPage->Status;
000032  7880              LDRB     r0,[r0,#2]
000034  f88d0002          STRB     r0,[sp,#2]
;;;819            if (GUI_ARRAY_SetItem(&pObj->Handles, Index, &Page, sizeof(MULTIPAGE_PAGE) + strlen(pText))) {
000038  4630              MOV      r0,r6
00003a  f7fffffe          BL       strlen
00003e  1d03              ADDS     r3,r0,#4
000040  466a              MOV      r2,sp
000042  4641              MOV      r1,r8
000044  4638              MOV      r0,r7
000046  f7fffffe          BL       GUI_ARRAY_SetItem
00004a  2800              CMP      r0,#0
00004c  d010              BEQ      |L13.112|
;;;820              pPage = (MULTIPAGE_PAGE*) GUI_ARRAY_GetpItem(&pObj->Handles, Index);
00004e  4641              MOV      r1,r8
000050  4638              MOV      r0,r7
000052  f7fffffe          BL       GUI_ARRAY_GetpItem
000056  4607              MOV      r7,r0
;;;821              memcpy(&pPage->acText, pText, strlen(pText) + 1);          
000058  4630              MOV      r0,r6
00005a  f7fffffe          BL       strlen
00005e  1c42              ADDS     r2,r0,#1
000060  4631              MOV      r1,r6
000062  1cf8              ADDS     r0,r7,#3
000064  f7fffffe          BL       __aeabi_memcpy
;;;822              _UpdatePositions(hObj, pObj);
000068  4621              MOV      r1,r4
00006a  4628              MOV      r0,r5
00006c  f7fffffe          BL       _UpdatePositions
                  |L13.112|
;;;823            }
;;;824          }
;;;825        }
;;;826        WM_UNLOCK();
;;;827      }
;;;828    }
000070  e8bd83f8          POP      {r3-r9,pc}
;;;829    
                          ENDP


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

                  MULTIPAGE_SetTextColor PROC
;;;851    */
;;;852    void MULTIPAGE_SetTextColor(MULTIPAGE_Handle hObj, GUI_COLOR Color, unsigned Index) {
000000  b570              PUSH     {r4-r6,lr}
000002  0005              MOVS     r5,r0
000004  460e              MOV      r6,r1
000006  4614              MOV      r4,r2
;;;853      MULTIPAGE_Obj* pObj;
;;;854      if (hObj && ((int)Index < MULTIPAGE_NUMCOLORS)) {
000008  d00e              BEQ      |L14.40|
00000a  2c02              CMP      r4,#2
00000c  da0c              BGE      |L14.40|
;;;855        WM_LOCK();
;;;856        pObj = MULTIPAGE_H2P(hObj);
00000e  4628              MOV      r0,r5
000010  f7fffffe          BL       GUI_ALLOC_h2p
;;;857        MULTIPAGE_ASSERT_IS_VALID_PTR(pObj);
;;;858        if (pObj) {
000014  2800              CMP      r0,#0
000016  d007              BEQ      |L14.40|
;;;859          pObj->aTextColor[Index] = Color;
000018  eb000084          ADD      r0,r0,r4,LSL #2
;;;860          WM_InvalidateWindow(hObj);
00001c  6486              STR      r6,[r0,#0x48]
00001e  4628              MOV      r0,r5
000020  e8bd4070          POP      {r4-r6,lr}
000024  f7ffbffe          B.W      WM_InvalidateWindow
                  |L14.40|
;;;861        }
;;;862        WM_UNLOCK();
;;;863      }
;;;864    }
000028  bd70              POP      {r4-r6,pc}
;;;865    
                          ENDP


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

                  _CalcBorderRect PROC
;;;234    */
;;;235    static void _CalcBorderRect(MULTIPAGE_Obj* pObj, GUI_RECT* pRect) {
000000  b570              PUSH     {r4-r6,lr}
000002  4605              MOV      r5,r0
000004  460c              MOV      r4,r1
;;;236      WM__GetClientRectWin(&pObj->Widget.Win, pRect);
000006  f7fffffe          BL       WM__GetClientRectWin
;;;237      if (pObj->Align & MULTIPAGE_ALIGN_BOTTOM) {
00000a  6ba8              LDR      r0,[r5,#0x38]
00000c  0740              LSLS     r0,r0,#29
00000e  6be8              LDR      r0,[r5,#0x3c]
000010  d506              BPL      |L15.32|
;;;238        pRect->y1 -= GUI_GetYSizeOfFont(pObj->Font) + 6;
000012  f7fffffe          BL       GUI_GetYSizeOfFont
000016  88e1              LDRH     r1,[r4,#6]
000018  1a08              SUBS     r0,r1,r0
00001a  1f80              SUBS     r0,r0,#6
00001c  80e0              STRH     r0,[r4,#6]
;;;239      } else {
;;;240        pRect->y0 += GUI_GetYSizeOfFont(pObj->Font) + 6;
;;;241      }
;;;242    }
00001e  bd70              POP      {r4-r6,pc}
                  |L15.32|
000020  f7fffffe          BL       GUI_GetYSizeOfFont
000024  8861              LDRH     r1,[r4,#2]            ;240
000026  1d80              ADDS     r0,r0,#6              ;240
000028  4408              ADD      r0,r0,r1              ;240
00002a  8060              STRH     r0,[r4,#2]            ;240
00002c  bd70              POP      {r4-r6,pc}
;;;243    
                          ENDP


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

                  _CalcClientRect PROC
;;;219    */
;;;220    static void _CalcClientRect(MULTIPAGE_Obj* pObj, GUI_RECT* pRect) {
000000  b570              PUSH     {r4-r6,lr}
000002  4605              MOV      r5,r0
000004  460c              MOV      r4,r1
;;;221      WIDGET__GetInsideRect(&pObj->Widget, pRect);
000006  f7fffffe          BL       WIDGET__GetInsideRect
;;;222      if (pObj->Align & MULTIPAGE_ALIGN_BOTTOM) {
00000a  6ba8              LDR      r0,[r5,#0x38]
00000c  0740              LSLS     r0,r0,#29
00000e  6be8              LDR      r0,[r5,#0x3c]
000010  d506              BPL      |L16.32|
;;;223        pRect->y1 -= GUI_GetYSizeOfFont(pObj->Font) + 6;
000012  f7fffffe          BL       GUI_GetYSizeOfFont
000016  88e1              LDRH     r1,[r4,#6]
000018  1a08              SUBS     r0,r1,r0
00001a  1f80              SUBS     r0,r0,#6
00001c  80e0              STRH     r0,[r4,#6]
;;;224      } else {
;;;225        pRect->y0 += GUI_GetYSizeOfFont(pObj->Font) + 6;
;;;226      }
;;;227    }
00001e  bd70              POP      {r4-r6,pc}
                  |L16.32|

⌨️ 快捷键说明

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