📄 wm_validate.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 + -