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