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

📄 wm_iscompletelyvisible.txt

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

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

                  WM_IsCompletelyVisible PROC
;;;145    */
;;;146    char WM_IsCompletelyVisible(WM_HWIN hWin) {
000000  b510              PUSH     {r4,lr}
000002  0001              MOVS     r1,r0
;;;147      int r = 0;
000004  f04f0000          MOV      r0,#0
;;;148      if (hWin) {
000008  d002              BEQ      |L1.16|
;;;149        WM_LOCK();
;;;150        r = _IsCompletelyVisible(hWin);
00000a  4608              MOV      r0,r1
00000c  f7fffffe          BL       _IsCompletelyVisible
                  |L1.16|
;;;151        WM_UNLOCK();
;;;152      }
;;;153      return r;
000010  b2c0              UXTB     r0,r0
;;;154    }
000012  bd10              POP      {r4,pc}
;;;155    
                          ENDP


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

                  _IsCompletelyVisible PROC
;;;111    */
;;;112    static char _IsCompletelyVisible(WM_HWIN hWin) {
000000  b57c              PUSH     {r2-r6,lr}
000002  4605              MOV      r5,r0
;;;113      WM_Obj * pWin;
;;;114      GUI_RECT Rect;
;;;115    
;;;116      pWin = WM_H2P(hWin);
000004  f7fffffe          BL       GUI_ALLOC_h2p
000008  4604              MOV      r4,r0
;;;117      Rect = pWin->Rect;
00000a  c803              LDM      r0,{r0,r1}
;;;118      if (WM__ClipAtParentBorders(&Rect, hWin) == 0) {
00000c  e9cd0100          STRD     r0,r1,[sp,#0]
000010  4629              MOV      r1,r5
000012  4668              MOV      r0,sp
000014  f7fffffe          BL       WM__ClipAtParentBorders
000018  b338              CBZ      r0,|L2.106|
00001a  f9bd0000          LDRSH    r0,[sp,#0]
00001e  f9b41000          LDRSH    r1,[r4,#0]
000022  4288              CMP      r0,r1
000024  d121              BNE      |L2.106|
000026  f9bd0004          LDRSH    r0,[sp,#4]
00002a  f9b41004          LDRSH    r1,[r4,#4]
00002e  4288              CMP      r0,r1
000030  d11b              BNE      |L2.106|
000032  f9bd0002          LDRSH    r0,[sp,#2]
000036  f9b41002          LDRSH    r1,[r4,#2]
00003a  4288              CMP      r0,r1
00003c  d115              BNE      |L2.106|
00003e  f9bd0006          LDRSH    r0,[sp,#6]
000042  f9b41006          LDRSH    r1,[r4,#6]
000046  4288              CMP      r0,r1
000048  d10f              BNE      |L2.106|
00004a  f9b40018          LDRSH    r0,[r4,#0x18]
00004e  e007              B        |L2.96|
                  |L2.80|
000050  f9b40016          LDRSH    r0,[r4,#0x16]
000054  b158              CBZ      r0,|L2.110|
000056  f7fffffe          BL       GUI_ALLOC_h2p
00005a  4604              MOV      r4,r0
00005c  f9b0001a          LDRSH    r0,[r0,#0x1a]
                  |L2.96|
000060  4669              MOV      r1,sp
000062  f7fffffe          BL       _WindowSiblingsOverlapRect
000066  2800              CMP      r0,#0
000068  d0f2              BEQ      |L2.80|
                  |L2.106|
;;;119        return 0;                 /* Nothing is left */
;;;120      }
;;;121      /* Check if the window is still the original one */
;;;122      if (_CompareRect(&Rect, &pWin->Rect)) {
;;;123        return 0;                 /* Not completely visible */
;;;124      }
;;;125      /* Now the difficult part ...
;;;126         Find the rectangles.
;;;127      */
;;;128      if (_HasOverlap(pWin, &Rect)) {
;;;129        return 0;
00006a  2000              MOVS     r0,#0
;;;130      }
;;;131      return 1;                   /* Is completely visible */
;;;132    }
00006c  bd7c              POP      {r2-r6,pc}
                  |L2.110|
00006e  2001              MOVS     r0,#1                 ;131
000070  bd7c              POP      {r2-r6,pc}
;;;133    
                          ENDP


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

                  _WindowSiblingsOverlapRect PROC
;;;57     */
;;;58     static char _WindowSiblingsOverlapRect(WM_HWIN iWin, GUI_RECT* pRect) {
000000  b570              PUSH     {r4-r6,lr}
000002  460d              MOV      r5,r1
;;;59       WM_Obj* pWin;
;;;60       for (; iWin; iWin = pWin->hNext) { 
000004  e00f              B        |L3.38|
;;;61         int Status = (pWin = WM_H2P(iWin))->Status;
000006  bf00              NOP      
                  |L3.8|
000008  f7fffffe          BL       GUI_ALLOC_h2p
00000c  4604              MOV      r4,r0
00000e  8b80              LDRH     r0,[r0,#0x1c]
;;;62         /* Check if this window affects us at all */    
;;;63         if (Status & WM_SF_ISVIS) {
000010  0780              LSLS     r0,r0,#30
000012  d506              BPL      |L3.34|
;;;64           /* Check if this window affects us at all */    
;;;65           if (GUI_RectsIntersect(pRect, &pWin->Rect)) {
000014  4621              MOV      r1,r4
000016  4628              MOV      r0,r5
000018  f7fffffe          BL       GUI_RectsIntersect
00001c  b108              CBZ      r0,|L3.34|
;;;66             return 1;
00001e  2001              MOVS     r0,#1
;;;67           }
;;;68         }
;;;69       }
;;;70       return 0;
;;;71     }
000020  bd70              POP      {r4-r6,pc}
                  |L3.34|
000022  f9b4001a          LDRSH    r0,[r4,#0x1a]         ;60
                  |L3.38|
000026  2800              CMP      r0,#0                 ;60
000028  d1ee              BNE      |L3.8|
00002a  bd70              POP      {r4-r6,pc}
;;;72     
                          ENDP

⌨️ 快捷键说明

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