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

📄 wm_validate.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_validate.o --depend=.\Obj\wm_validate.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_Validate.c]
                          THUMB

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

                  WM_ValidateRect PROC
;;;79     */
;;;80     void WM_ValidateRect(WM_HWIN hWin, const GUI_RECT*pRect) {
000000  b570              PUSH     {r4-r6,lr}
000002  460d              MOV      r5,r1
;;;81       WM_Obj* pWin;
;;;82       if (hWin) {
000004  2800              CMP      r0,#0
000006  d01a              BEQ      |L1.62|
;;;83         WM_LOCK();
;;;84         pWin = WM_HANDLE2PTR(hWin);
000008  f7fffffe          BL       GUI_ALLOC_h2p
00000c  4604              MOV      r4,r0
;;;85         if (pWin->Status & WM_SF_INVALID) {
00000e  8b80              LDRH     r0,[r0,#0x1c]
000010  0680              LSLS     r0,r0,#26
000012  d514              BPL      |L1.62|
;;;86           if (pRect) {
000014  b15d              CBZ      r5,|L1.46|
;;;87             _SubRect(&pWin->InvalidRect, &pWin->InvalidRect, pRect);
000016  f1040108          ADD      r1,r4,#8
00001a  462a              MOV      r2,r5
00001c  460d              MOV      r5,r1
00001e  4608              MOV      r0,r1
000020  f7fffffe          BL       _SubRect
000024  4628              MOV      r0,r5
;;;88             if (WM__RectIsNZ(&pWin->InvalidRect))
000026  f7fffffe          BL       WM__RectIsNZ
00002a  2800              CMP      r0,#0
00002c  d107              BNE      |L1.62|
                  |L1.46|
;;;89               goto Done;
;;;90           }
;;;91           pWin->Status &= ~WM_SF_INVALID;
00002e  8ba1              LDRH     r1,[r4,#0x1c]
;;;92           WM__NumInvalidWindows--;
000030  4803              LDR      r0,|L1.64|
000032  f0210120          BIC      r1,r1,#0x20           ;91
000036  83a1              STRH     r1,[r4,#0x1c]         ;91
000038  8801              LDRH     r1,[r0,#0]  ; WM__NumInvalidWindows
00003a  1e49              SUBS     r1,r1,#1
00003c  8001              STRH     r1,[r0,#0]
                  |L1.62|
;;;93         }
;;;94       Done:
;;;95         WM_UNLOCK();
;;;96       }
;;;97     }
00003e  bd70              POP      {r4-r6,pc}
;;;98     
                          ENDP

                  |L1.64|
                          DCD      WM__NumInvalidWindows

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

                  _SubRect PROC
;;;49     */
;;;50     static void _SubRect(GUI_RECT* pDest, const GUI_RECT* pr0, const GUI_RECT* pr1) {
000000  b570              PUSH     {r4-r6,lr}
000002  0006              MOVS     r6,r0
000004  460c              MOV      r4,r1
000006  4615              MOV      r5,r2
;;;51       if ((pDest == NULL) || (pr0 == NULL))
000008  d040              BEQ      |L2.140|
00000a  2c00              CMP      r4,#0
00000c  d03e              BEQ      |L2.140|
;;;52         return;
;;;53       *pDest = *pr0;	 
00000e  2208              MOVS     r2,#8
000010  4621              MOV      r1,r4
000012  4630              MOV      r0,r6
000014  f7fffffe          BL       __aeabi_memcpy
;;;54       if (pr1 == NULL)
000018  2d00              CMP      r5,#0
00001a  d037              BEQ      |L2.140|
;;;55         return;
;;;56       /* Check left/right sides */
;;;57       if (  (pr1->y0 <= pr0->y0)
00001c  f9b50002          LDRSH    r0,[r5,#2]
000020  f9b41002          LDRSH    r1,[r4,#2]
000024  4288              CMP      r0,r1
000026  dc15              BGT      |L2.84|
;;;58           &&(pr1->y1 >= pr0->y1)) {
000028  f9b50006          LDRSH    r0,[r5,#6]
00002c  f9b41006          LDRSH    r1,[r4,#6]
000030  4288              CMP      r0,r1
000032  db0f              BLT      |L2.84|
;;;59         pDest->x0 = Max(pr0->x0, pr1->x1);
000034  f9b40000          LDRSH    r0,[r4,#0]
000038  f9b51004          LDRSH    r1,[r5,#4]
00003c  4288              CMP      r0,r1
00003e  dc00              BGT      |L2.66|
000040  4608              MOV      r0,r1
                  |L2.66|
000042  8030              STRH     r0,[r6,#0]
;;;60         pDest->x1 = Min(pr0->x1, pr1->x0);
000044  f9b40004          LDRSH    r0,[r4,#4]
000048  f9b51000          LDRSH    r1,[r5,#0]
00004c  4288              CMP      r0,r1
00004e  dd00              BLE      |L2.82|
000050  4608              MOV      r0,r1
                  |L2.82|
000052  80b0              STRH     r0,[r6,#4]
                  |L2.84|
;;;61       }
;;;62       /* Check top/bottom sides */
;;;63       if (  (pr1->x0 <= pr0->x0)
000054  f9b50000          LDRSH    r0,[r5,#0]
000058  f9b41000          LDRSH    r1,[r4,#0]
00005c  4288              CMP      r0,r1
00005e  dc15              BGT      |L2.140|
;;;64           &&(pr1->x1 >= pr0->x1)) {
000060  f9b50004          LDRSH    r0,[r5,#4]
000064  f9b41004          LDRSH    r1,[r4,#4]
000068  4288              CMP      r0,r1
00006a  db0f              BLT      |L2.140|
;;;65         pDest->y0 = Max(pr0->y0, pr1->y1);
00006c  f9b40002          LDRSH    r0,[r4,#2]
000070  f9b51006          LDRSH    r1,[r5,#6]
000074  4288              CMP      r0,r1
000076  dc00              BGT      |L2.122|
000078  4608              MOV      r0,r1
                  |L2.122|
00007a  8070              STRH     r0,[r6,#2]
;;;66         pDest->y1 = Min(pr0->y1, pr1->y0);
00007c  f9b40006          LDRSH    r0,[r4,#6]
000080  f9b51002          LDRSH    r1,[r5,#2]
000084  4288              CMP      r0,r1
000086  dd00              BLE      |L2.138|
000088  4608              MOV      r0,r1
                  |L2.138|
00008a  80f0              STRH     r0,[r6,#6]
                  |L2.140|
;;;67       }
;;;68     }
00008c  bd70              POP      {r4-r6,pc}
;;;69     
                          ENDP

⌨️ 快捷键说明

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