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

📄 framewin.txt

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

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

                  FRAMEWIN_CreateEx PROC
;;;506    */
;;;507    FRAMEWIN_Handle FRAMEWIN_CreateEx(int x0, int y0, int xsize, int ysize, WM_HWIN hParent,
000000  e92d4ff0          PUSH     {r4-r11,lr}
;;;508                                      int WinFlags, int ExFlags, int Id, const char* pTitle, WM_CALLBACK* cb)
;;;509    {
000004  b089              SUB      sp,sp,#0x24
000006  4605              MOV      r5,r0
000008  460e              MOV      r6,r1
;;;510      FRAMEWIN_Handle hObj;
;;;511      /* Create the window */
;;;512      WinFlags |= WM_CF_LATE_CLIP;    /* Always use late clipping since widget is optimized for it. */
00000a  a812              ADD      r0,sp,#0x48
00000c  e8900e03          LDM      r0,{r0,r1,r9-r11}
000010  4617              MOV      r7,r2                 ;509
000012  469c              MOV      r12,r3                ;509
000014  f4415480          ORR      r4,r1,#0x1000
;;;513      hObj = WM_CreateWindowAsChild(x0, y0, xsize, ysize, hParent, WinFlags, _FRAMEWIN_Callback,
000018  2348              MOVS     r3,#0x48
00001a  4a29              LDR      r2,|L1.192|
00001c  b2a1              UXTH     r1,r4
00001e  f8dd805c          LDR      r8,[sp,#0x5c]
000022  e88d000f          STM      sp,{r0-r3}
000026  4663              MOV      r3,r12
000028  463a              MOV      r2,r7
00002a  4631              MOV      r1,r6
00002c  4628              MOV      r0,r5
00002e  f7fffffe          BL       WM_CreateWindowAsChild
000032  0006              MOVS     r6,r0
;;;514                                    sizeof(FRAMEWIN_Obj) - sizeof(WM_Obj));
;;;515      if (hObj) {
000034  d03f              BEQ      |L1.182|
;;;516        FRAMEWIN_Obj* pObj;
;;;517        POSITIONS Pos;
;;;518        GUI_LOCK();
;;;519        pObj = FRAMEWIN_H2P(hObj);
000036  4630              MOV      r0,r6
000038  f7fffffe          BL       GUI_ALLOC_h2p
00003c  4605              MOV      r5,r0
;;;520        /* init widget specific variables */
;;;521        WIDGET__Init(&pObj->Widget, Id, WIDGET_STATE_FOCUSSABLE | FRAMEWIN_SF_TITLEVIS);
00003e  2230              MOVS     r2,#0x30
000040  4651              MOV      r1,r10
000042  f7fffffe          BL       WIDGET__Init
;;;522        /* init member variables */
;;;523        pObj->Props = FRAMEWIN__DefaultProps;
000046  2220              MOVS     r2,#0x20
000048  491e              LDR      r1,|L1.196|
00004a  f1050028          ADD      r0,r5,#0x28
00004e  f7fffffe          BL       __aeabi_memcpy4
;;;524        pObj->TextAlign      = GUI_TA_LEFT;
000052  2000              MOVS     r0,#0
000054  3548              ADDS     r5,r5,#0x48
000056  8268              STRH     r0,[r5,#0x12]
;;;525        pObj->cb             = cb;
;;;526        pObj->Flags          = ExFlags;
000058  f8c58000          STR      r8,[r5,#0]
00005c  f8a59014          STRH     r9,[r5,#0x14]
;;;527        pObj->hFocussedChild = 0;
000060  82e8              STRH     r0,[r5,#0x16]
;;;528        pObj->hMenu          = 0;
000062  80e8              STRH     r0,[r5,#6]
;;;529        pObj->pFirstHook     = NULL;
000064  61e8              STR      r0,[r5,#0x1c]
000066  3d48              SUBS     r5,r5,#0x48
;;;530        FRAMEWIN__CalcPositions(pObj, &Pos);
000068  a904              ADD      r1,sp,#0x10
00006a  4628              MOV      r0,r5
00006c  f7fffffe          BL       FRAMEWIN__CalcPositions
;;;531        pObj->hClient = WM_CreateWindowAsChild(Pos.rClient.x0,Pos.rClient.y0,
000070  f2417182          MOV      r1,#0x1782
000074  e9cd6100          STRD     r6,r1,[sp,#0]
000078  2300              MOVS     r3,#0
00007a  4a13              LDR      r2,|L1.200|
00007c  e9cd2302          STRD     r2,r3,[sp,#8]
000080  f9bd001a          LDRSH    r0,[sp,#0x1a]
000084  f9bd1016          LDRSH    r1,[sp,#0x16]
000088  f9bd2018          LDRSH    r2,[sp,#0x18]
00008c  1a43              SUBS     r3,r0,r1
00008e  f9bd0014          LDRSH    r0,[sp,#0x14]
000092  1c5b              ADDS     r3,r3,#1
000094  1a12              SUBS     r2,r2,r0
000096  1c52              ADDS     r2,r2,#1
000098  f7fffffe          BL       WM_CreateWindowAsChild
00009c  f8a5004c          STRH     r0,[r5,#0x4c]
;;;532                                               Pos.rClient.x1 - Pos.rClient.x0 +1,
;;;533                                               Pos.rClient.y1 - Pos.rClient.y0 +1,
;;;534                                               hObj, 
;;;535                                               WM_CF_ANCHOR_RIGHT | WM_CF_ANCHOR_LEFT | WM_CF_ANCHOR_TOP | WM_CF_ANCHOR_BOTTOM | WM_CF_SHOW | WM_CF_LATE_CLIP, 
;;;536                                               FRAMEWIN__cbClient, 0);
;;;537        /* Normally we disable memory devices for the frame window:
;;;538         * The frame window does not flicker, and not using memory devices is usually faster.
;;;539         * You can still use memory by explicitly specifying the flag
;;;540         */
;;;541        if ((WinFlags & (WM_CF_MEMDEV | (WM_CF_MEMDEV_ON_REDRAW))) == 0) {
0000a0  f2420004          MOV      r0,#0x2004
0000a4  4204              TST      r4,r0
0000a6  d102              BNE      |L1.174|
;;;542          WM_DisableMemdev(hObj);
0000a8  4630              MOV      r0,r6
0000aa  f7fffffe          BL       WM_DisableMemdev
                  |L1.174|
;;;543        }
;;;544        FRAMEWIN_SetText(hObj, pTitle);
0000ae  4659              MOV      r1,r11
0000b0  4630              MOV      r0,r6
0000b2  f7fffffe          BL       FRAMEWIN_SetText
                  |L1.182|
;;;545        GUI_UNLOCK();
;;;546      }
;;;547      return hObj;
0000b6  4630              MOV      r0,r6
;;;548    }
0000b8  b009              ADD      sp,sp,#0x24
0000ba  e8bd8ff0          POP      {r4-r11,pc}
;;;549    
                          ENDP

0000be  0000              DCW      0x0000
                  |L1.192|
                          DCD      _FRAMEWIN_Callback
                  |L1.196|
                          DCD      ||.data||+0x4
                  |L1.200|
                          DCD      FRAMEWIN__cbClient

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

                  FRAMEWIN_SetActive PROC
;;;610    */
;;;611    void FRAMEWIN_SetActive(FRAMEWIN_Handle hObj, int State) {
000000  2800              CMP      r0,#0
;;;612      if (hObj) {
000002  d001              BEQ      |L2.8|
;;;613        WM_LOCK();
;;;614        _SetActive(hObj, State);
000004  f7ffbffe          B.W      _SetActive
                  |L2.8|
;;;615        WM_UNLOCK();
;;;616      }
;;;617    }
000008  4770              BX       lr
;;;618    
                          ENDP


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

                  FRAMEWIN_SetMoveable PROC
;;;592    */
;;;593    void FRAMEWIN_SetMoveable(FRAMEWIN_Handle hObj, int State) {
000000  b510              PUSH     {r4,lr}
000002  460c              MOV      r4,r1
;;;594      if (hObj) {
000004  2800              CMP      r0,#0
000006  d00a              BEQ      |L3.30|
;;;595        FRAMEWIN_Obj* pObj;
;;;596        GUI_LOCK();
;;;597        pObj = FRAMEWIN_H2P(hObj);
000008  f7fffffe          BL       GUI_ALLOC_h2p
;;;598        if (State) {
;;;599          pObj->Flags |= FRAMEWIN_CF_MOVEABLE;
00000c  f8301f5c          LDRH     r1,[r0,#0x5c]!
000010  b114              CBZ      r4,|L3.24|
000012  f0410110          ORR      r1,r1,#0x10
000016  e001              B        |L3.28|
                  |L3.24|
;;;600        } else {
;;;601          pObj->Flags &= ~FRAMEWIN_CF_MOVEABLE;
000018  f0210110          BIC      r1,r1,#0x10
                  |L3.28|
00001c  8001              STRH     r1,[r0,#0]
                  |L3.30|
;;;602        }
;;;603        GUI_UNLOCK();
;;;604      }
;;;605    }
00001e  bd10              POP      {r4,pc}
;;;606    
                          ENDP


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

                  FRAMEWIN_SetText PROC
;;;559    */
;;;560    void FRAMEWIN_SetText(FRAMEWIN_Handle hObj, const char* s) {
000000  b570              PUSH     {r4-r6,lr}
000002  0004              MOVS     r4,r0
000004  460d              MOV      r5,r1
;;;561      if (hObj) {
000006  d00d              BEQ      |L4.36|
;;;562        FRAMEWIN_Obj* pObj;
;;;563        GUI_LOCK();
;;;564        pObj = FRAMEWIN_H2P(hObj);
000008  4620              MOV      r0,r4
00000a  f7fffffe          BL       GUI_ALLOC_h2p
;;;565        if (GUI__SetText(&pObj->hText, s)) {
00000e  4629              MOV      r1,r5
000010  3050              ADDS     r0,r0,#0x50
000012  f7fffffe          BL       GUI__SetText
000016  2800              CMP      r0,#0
000018  d004              BEQ      |L4.36|
;;;566          FRAMEWIN_Invalidate(hObj);
00001a  4620              MOV      r0,r4
00001c  e8bd4070          POP      {r4-r6,lr}
000020  f7ffbffe          B.W      WM_InvalidateWindow
                  |L4.36|
;;;567        }
;;;568        GUI_UNLOCK();
;;;569      }
;;;570    }
000024  bd70              POP      {r4-r6,pc}
;;;571    
                          ENDP


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

                  FRAMEWIN_SetTextAlign PROC
;;;575    */
;;;576    void FRAMEWIN_SetTextAlign(FRAMEWIN_Handle hObj, int Align) {
000000  b570              PUSH     {r4-r6,lr}
000002  0005              MOVS     r5,r0
000004  460c              MOV      r4,r1
;;;577      if (hObj) {
000006  d00d              BEQ      |L5.36|
;;;578        FRAMEWIN_Obj* pObj;
;;;579        GUI_LOCK();
;;;580        pObj = FRAMEWIN_H2P(hObj);
000008  4628              MOV      r0,r5
00000a  f7fffffe          BL       GUI_ALLOC_h2p
;;;581        if (pObj->TextAlign != Align) {
00000e  f9b0105a          LDRSH    r1,[r0,#0x5a]
000012  42a1              CMP      r1,r4
000014  d006              BEQ      |L5.36|
;;;582          pObj->TextAlign = Align;
000016  f8a0405a          STRH     r4,[r0,#0x5a]
;;;583          FRAMEWIN_Invalidate(hObj);
00001a  4628              MOV      r0,r5
00001c  e8bd4070          POP      {r4-r6,lr}
000020  f7ffbffe          B.W      WM_InvalidateWindow
                  |L5.36|
;;;584        }
;;;585        GUI_UNLOCK();
;;;586      }
;;;587    }
000024  bd70              POP      {r4-r6,pc}
;;;588    
                          ENDP


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

                  FRAMEWIN__CalcPositions PROC
;;;424    */
;;;425    void FRAMEWIN__CalcPositions(FRAMEWIN_Obj* pObj, POSITIONS* pPos) {
000000  e92d5ff0          PUSH     {r4-r12,lr}
;;;426      WM_HWIN hChild;
;;;427      WM_Obj* pChild;
;;;428      int TitleHeight;
;;;429      int MenuHeight = 0;
000004  f04f0800          MOV      r8,#0
000008  4605              MOV      r5,r0                 ;425
00000a  460c              MOV      r4,r1                 ;425
;;;430      int IBorderSize = 0;
00000c  46c1              MOV      r9,r8
;;;431      int BorderSize;
;;;432      int xsize, ysize;
;;;433      int x0, x1, y0;
;;;434      BorderSize = pObj->Props.BorderSize;
00000e  f9b06042          LDRSH    r6,[r0,#0x42]
;;;435      xsize = WM__GetWindowSizeX(&pObj->Widget.Win);
000012  f7fffffe          BL       WM__GetWindowSizeX
000016  4683              MOV      r11,r0
;;;436      ysize = WM__GetWindowSizeY(&pObj->Widget.Win);
000018  4628              MOV      r0,r5
00001a  f7fffffe          BL       WM__GetWindowSizeY
00001e  4682              MOV      r10,r0
;;;437      if (pObj->Widget.State & FRAMEWIN_SF_TITLEVIS) {
000020  8ce8              LDRH     r0,[r5,#0x26]
000022  0680              LSLS     r0,r0,#26
000024  d501              BPL      |L6.42|
;;;438        IBorderSize = pObj->Props.IBorderSize;
000026  f9b59044          LDRSH    r9,[r5,#0x44]

⌨️ 快捷键说明

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