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

📄 multipage.txt

📁 STM32F103ZET6+UCOSII+UCGUI源码
💻 TXT
📖 第 1 页 / 共 5 页
字号:
; generated by ARM C/C++ Compiler with , RVCT4.0 [Build 524] for uVision
; commandline ArmCC [--split_sections --debug -c --asm --interleave -o.\Obj\multipage.o --depend=.\Obj\multipage.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\MULTIPAGE.c]
                          THUMB

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

                  MULTIPAGE_AddPage PROC
;;;646    */
;;;647    void MULTIPAGE_AddPage(MULTIPAGE_Handle hObj, WM_HWIN hWin ,const char* pText) {
000000  e92d5ffc          PUSH     {r2-r12,lr}
000004  ea5f0b00          MOVS     r11,r0
000008  460f              MOV      r7,r1
00000a  4691              MOV      r9,r2
;;;648      MULTIPAGE_Obj* pObj;
;;;649      GUI_USE_PARA(hWin);
;;;650      if (hObj) {
00000c  d05b              BEQ      |L1.198|
;;;651        WM_LOCK();
;;;652        pObj = MULTIPAGE_H2P(hObj);
00000e  4658              MOV      r0,r11
000010  f7fffffe          BL       GUI_ALLOC_h2p
000014  4605              MOV      r5,r0
;;;653        MULTIPAGE_ASSERT_IS_VALID_PTR(pObj);
;;;654        if (!hWin) {
000016  bb1f              CBNZ     r7,|L1.96|
;;;655          /* If we get no handle we must find it. To do this, we search      */
;;;656          /* all children until we found one that has not yet become a page. */
;;;657          MULTIPAGE_PAGE* pPage;
;;;658          WM_HWIN hChild;
;;;659          WM_Obj* pChild;
;;;660          WM_Obj* pClient = WM_H2P(pObj->hClient);
000018  f9b50028          LDRSH    r0,[r5,#0x28]
00001c  f7fffffe          BL       GUI_ALLOC_h2p
;;;661          int i;
;;;662          for (hChild = pClient->hFirstChild; hChild && !hWin; hChild = pChild->hNext) {
000020  f9b06018          LDRSH    r6,[r0,#0x18]
;;;663            pChild = WM_H2P(hChild);
;;;664            hWin = hChild;
;;;665            for (i = 0; i < pObj->Handles.NumItems; i++) {
;;;666              pPage = (MULTIPAGE_PAGE*) GUI_ARRAY_GetpItem(&pObj->Handles, i);
000024  f1050a2a          ADD      r10,r5,#0x2a
000028  e016              B        |L1.88|
                  |L1.42|
00002a  4630              MOV      r0,r6                 ;663
00002c  f7fffffe          BL       GUI_ALLOC_h2p
000030  4680              MOV      r8,r0                 ;663
000032  4637              MOV      r7,r6                 ;664
000034  2400              MOVS     r4,#0                 ;665
000036  e00a              B        |L1.78|
                  |L1.56|
000038  4621              MOV      r1,r4
00003a  4650              MOV      r0,r10
00003c  f7fffffe          BL       GUI_ARRAY_GetpItem
;;;667              if (pPage->hWin == hChild) {
000040  f9b00000          LDRSH    r0,[r0,#0]
000044  42b0              CMP      r0,r6
000046  d101              BNE      |L1.76|
;;;668                hWin = 0;
000048  2700              MOVS     r7,#0
;;;669                break;
00004a  e003              B        |L1.84|
                  |L1.76|
00004c  1c64              ADDS     r4,r4,#1              ;665
                  |L1.78|
00004e  8d68              LDRH     r0,[r5,#0x2a]         ;665
000050  42a0              CMP      r0,r4                 ;665
000052  dcf1              BGT      |L1.56|
                  |L1.84|
000054  f9b8601a          LDRSH    r6,[r8,#0x1a]         ;662
                  |L1.88|
000058  b156              CBZ      r6,|L1.112|
00005a  2f00              CMP      r7,#0                 ;662
00005c  d0e5              BEQ      |L1.42|
00005e  e009              B        |L1.116|
                  |L1.96|
;;;670              }
;;;671            }
;;;672          }
;;;673        } else {
;;;674          /* If we get a handle we must ensure that it was attached to the multipage */
;;;675          WM_AttachWindowAt(hWin, pObj->hClient, 0, 0);
000060  2300              MOVS     r3,#0
000062  f9b51028          LDRSH    r1,[r5,#0x28]
000066  461a              MOV      r2,r3
000068  4638              MOV      r0,r7
00006a  f7fffffe          BL       WM_AttachWindowAt
00006e  e001              B        |L1.116|
                  |L1.112|
;;;676        }
;;;677        if (hWin) {
000070  2f00              CMP      r7,#0
000072  d028              BEQ      |L1.198|
                  |L1.116|
;;;678          MULTIPAGE_PAGE Page;
;;;679          char NullByte = 0;
000074  2000              MOVS     r0,#0
;;;680          if (!pText) {
000076  9000              STR      r0,[sp,#0]
000078  f1b90f00          CMP      r9,#0
00007c  d100              BNE      |L1.128|
;;;681            pText = &NullByte;
00007e  46e9              MOV      r9,sp
                  |L1.128|
;;;682          }
;;;683          Page.hWin   = hWin;
000080  f8ad7004          STRH     r7,[sp,#4]
;;;684          Page.Status = MULTIPAGE_STATE_ENABLED;
000084  2001              MOVS     r0,#1
000086  f88d0006          STRB     r0,[sp,#6]
;;;685          if (GUI_ARRAY_AddItem(&pObj->Handles, &Page, sizeof(MULTIPAGE_PAGE) + strlen(pText)) == 0) {
00008a  4648              MOV      r0,r9
00008c  f7fffffe          BL       strlen
000090  1d02              ADDS     r2,r0,#4
000092  f105002a          ADD      r0,r5,#0x2a
000096  a901              ADD      r1,sp,#4
000098  4604              MOV      r4,r0
00009a  f7fffffe          BL       GUI_ARRAY_AddItem
00009e  b968              CBNZ     r0,|L1.188|
;;;686            MULTIPAGE_PAGE* pPage;
;;;687            pPage = (MULTIPAGE_PAGE*) GUI_ARRAY_GetpItem(&pObj->Handles, pObj->Handles.NumItems - 1);
0000a0  8d69              LDRH     r1,[r5,#0x2a]
0000a2  4620              MOV      r0,r4
0000a4  1e49              SUBS     r1,r1,#1
0000a6  f7fffffe          BL       GUI_ARRAY_GetpItem
0000aa  4604              MOV      r4,r0
;;;688            memcpy(&pPage->acText, pText, strlen(pText) + 1);
0000ac  4648              MOV      r0,r9
0000ae  f7fffffe          BL       strlen
0000b2  1c42              ADDS     r2,r0,#1
0000b4  4649              MOV      r1,r9
0000b6  1ce0              ADDS     r0,r4,#3
0000b8  f7fffffe          BL       __aeabi_memcpy
                  |L1.188|
;;;689          }
;;;690          MULTIPAGE_SelectPage(hObj, pObj->Handles.NumItems - 1);
0000bc  8d69              LDRH     r1,[r5,#0x2a]
0000be  4658              MOV      r0,r11
0000c0  1e49              SUBS     r1,r1,#1
0000c2  f7fffffe          BL       MULTIPAGE_SelectPage
                  |L1.198|
;;;691        }
;;;692        WM_UNLOCK();
;;;693      }
;;;694    }
0000c6  e8bd9ffc          POP      {r2-r12,pc}
;;;695    
                          ENDP


                          AREA ||i.MULTIPAGE_CreateEx||, CODE, READONLY, ALIGN=2

                  MULTIPAGE_CreateEx PROC
;;;593    */
;;;594    MULTIPAGE_Handle MULTIPAGE_CreateEx(int x0, int y0, int xsize, int ysize, WM_HWIN hParent,
000000  e92d41f0          PUSH     {r4-r8,lr}
;;;595                                        int WinFlags, int ExFlags, int Id)
;;;596    {
000004  b086              SUB      sp,sp,#0x18
000006  4604              MOV      r4,r0
000008  460d              MOV      r5,r1
;;;597      MULTIPAGE_Handle hObj;
;;;598      GUI_USE_PARA(ExFlags);
;;;599      /* Create the window */
;;;600      hObj = WM_CreateWindowAsChild(x0, y0, xsize, ysize, hParent, WinFlags | WM_CF_HASTRANS, &_Callback,
00000a  e9dd010c          LDRD     r0,r1,[sp,#0x30]
00000e  4616              MOV      r6,r2                 ;596
000010  461f              MOV      r7,r3                 ;596
000012  b289              UXTH     r1,r1
000014  2330              MOVS     r3,#0x30
000016  4a29              LDR      r2,|L2.188|
000018  f0410101          ORR      r1,r1,#1
00001c  f8dd803c          LDR      r8,[sp,#0x3c]
000020  e88d000f          STM      sp,{r0-r3}
000024  463b              MOV      r3,r7
000026  4632              MOV      r2,r6
000028  4629              MOV      r1,r5
00002a  4620              MOV      r0,r4
00002c  f7fffffe          BL       WM_CreateWindowAsChild
000030  0006              MOVS     r6,r0
;;;601                                    sizeof(MULTIPAGE_Obj) - sizeof(WM_Obj));
;;;602      if (hObj) {
000032  d03e              BEQ      |L2.178|
;;;603        MULTIPAGE_Obj* pObj;
;;;604        GUI_RECT rClient;
;;;605        int Flags;
;;;606        WM_LOCK();
;;;607        pObj = MULTIPAGE_H2P(hObj);
000034  4630              MOV      r0,r6
000036  f7fffffe          BL       GUI_ALLOC_h2p
00003a  4604              MOV      r4,r0
;;;608        /* Init sub-classes */
;;;609        GUI_ARRAY_CREATE(&pObj->Handles);
;;;610        /* init widget specific variables */
;;;611        WIDGET__Init(&pObj->Widget, Id, WIDGET_STATE_FOCUSSABLE);
00003c  2210              MOVS     r2,#0x10
00003e  4641              MOV      r1,r8
000040  f7fffffe          BL       WIDGET__Init
;;;612        /* init member variables */
;;;613        MULTIPAGE_INIT_ID(pObj);
;;;614        pObj->aBkColor[0]     = MULTIPAGE__DefaultBkColor[0];
000044  491e              LDR      r1,|L2.192|
;;;615        pObj->aBkColor[1]     = MULTIPAGE__DefaultBkColor[1];
;;;616        pObj->aTextColor[0]   = MULTIPAGE__DefaultTextColor[0];
;;;617        pObj->aTextColor[1]   = MULTIPAGE__DefaultTextColor[1];
;;;618        pObj->Font            = MULTIPAGE__pDefaultFont;
;;;619        pObj->Align           = MULTIPAGE__DefaultAlign;
;;;620        pObj->Selection       = 0xffff;
;;;621        pObj->ScrollState     = 0;
;;;622        pObj->Widget.State    = 0;
;;;623        _CalcClientRect(pObj, &rClient);
000046  4620              MOV      r0,r4
000048  680a              LDR      r2,[r1,#0]            ;614  ; MULTIPAGE__DefaultBkColor
00004a  6422              STR      r2,[r4,#0x40]         ;615
00004c  6849              LDR      r1,[r1,#4]            ;615  ; MULTIPAGE__DefaultBkColor
00004e  6461              STR      r1,[r4,#0x44]         ;616
000050  491b              LDR      r1,|L2.192|
000052  3108              ADDS     r1,r1,#8              ;616
000054  680a              LDR      r2,[r1,#0]            ;616  ; MULTIPAGE__DefaultTextColor
000056  64a2              STR      r2,[r4,#0x48]         ;617
000058  6849              LDR      r1,[r1,#4]            ;617  ; MULTIPAGE__DefaultTextColor
00005a  64e1              STR      r1,[r4,#0x4c]         ;618
00005c  4918              LDR      r1,|L2.192|
00005e  3908              SUBS     r1,r1,#8              ;618
000060  680a              LDR      r2,[r1,#0]            ;618  ; MULTIPAGE__pDefaultFont
000062  63e2              STR      r2,[r4,#0x3c]         ;619
000064  6849              LDR      r1,[r1,#4]            ;619  ; MULTIPAGE__DefaultAlign
000066  63a1              STR      r1,[r4,#0x38]         ;620
000068  f64f71ff          MOV      r1,#0xffff            ;620
00006c  6321              STR      r1,[r4,#0x30]         ;621
00006e  2100              MOVS     r1,#0                 ;621
000070  6361              STR      r1,[r4,#0x34]         ;622
000072  84e1              STRH     r1,[r4,#0x26]         ;622
000074  a904              ADD      r1,sp,#0x10
000076  f7fffffe          BL       _CalcClientRect
;;;624        Flags = WM_CF_SHOW | WM_CF_ANCHOR_LEFT | WM_CF_ANCHOR_RIGHT | WM_CF_ANCHOR_TOP | WM_CF_ANCHOR_BOTTOM;
00007a  f2407182          MOV      r1,#0x782
;;;625        pObj->hClient = WM_CreateWindowAsChild(rClient.x0, rClient.y0,
00007e  e9cd6100          STRD     r6,r1,[sp,#0]
000082  2300              MOVS     r3,#0
000084  4a0f              LDR      r2,|L2.196|
000086  e9cd2302          STRD     r2,r3,[sp,#8]
00008a  f9bd0016          LDRSH    r0,[sp,#0x16]
00008e  f9bd1012          LDRSH    r1,[sp,#0x12]
000092  f9bd5010          LDRSH    r5,[sp,#0x10]
000096  f9bd2014          LDRSH    r2,[sp,#0x14]
00009a  1a43              SUBS     r3,r0,r1
00009c  1b52              SUBS     r2,r2,r5
00009e  1c5b              ADDS     r3,r3,#1
0000a0  4628              MOV      r0,r5
0000a2  1c52              ADDS     r2,r2,#1
0000a4  f7fffffe          BL       WM_CreateWindowAsChild
0000a8  8520              STRH     r0,[r4,#0x28]
;;;626                                               rClient.x1 - rClient.x0 + 1,
;;;627                                               rClient.y1 - rClient.y0 + 1,
;;;628                                               hObj, Flags, &_ClientCallback, 0);
;;;629        _UpdatePositions(hObj, pObj);
0000aa  4621              MOV      r1,r4
0000ac  4630              MOV      r0,r6
0000ae  f7fffffe          BL       _UpdatePositions
                  |L2.178|
;;;630        WM_UNLOCK();
;;;631      } else {
;;;632        GUI_DEBUG_ERROROUT_IF(hObj==0, "MULTIPAGE_Create failed")
;;;633      }
;;;634      return hObj;
0000b2  4630              MOV      r0,r6
;;;635    }
0000b4  b006              ADD      sp,sp,#0x18
0000b6  e8bd81f0          POP      {r4-r8,pc}
;;;636    
                          ENDP

0000ba  0000              DCW      0x0000
                  |L2.188|
                          DCD      _Callback
                  |L2.192|
                          DCD      ||.data||+0x8
                  |L2.196|
                          DCD      _ClientCallback

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

                  MULTIPAGE_DeletePage PROC
;;;699    */
;;;700    void MULTIPAGE_DeletePage(MULTIPAGE_Handle hObj, unsigned Index, int Delete) {
000000  e92d47f0          PUSH     {r4-r10,lr}
000004  0006              MOVS     r6,r0
000006  460d              MOV      r5,r1
000008  4617              MOV      r7,r2
;;;701      if (hObj) {
00000a  d035              BEQ      |L3.120|
;;;702        MULTIPAGE_Obj* pObj;
;;;703        WM_LOCK();
;;;704        pObj = MULTIPAGE_H2P(hObj);
00000c  4630              MOV      r0,r6
00000e  f7fffffe          BL       GUI_ALLOC_h2p
000012  0004              MOVS     r4,r0
;;;705        MULTIPAGE_ASSERT_IS_VALID_PTR(pObj);
;;;706        if (pObj) {
000014  d030              BEQ      |L3.120|
;;;707          if ((int)Index < pObj->Handles.NumItems) {
000016  8d60              LDRH     r0,[r4,#0x2a]
000018  42a8              CMP      r0,r5
00001a  dd2d              BLE      |L3.120|
;;;708            WM_HWIN hWin;
;;;709            MULTIPAGE_PAGE* pPage;
;;;710            pPage = (MULTIPAGE_PAGE*) GUI_ARRAY_GetpItem(&pObj->Handles, Index);

⌨️ 快捷键说明

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