📄 wm__updatechildpositions.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__updatechildpositions.o --depend=.\Obj\wm__updatechildpositions.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__UpdateChildPositions.c]
THUMB
AREA ||i.WM__UpdateChildPositions||, CODE, READONLY, ALIGN=2
WM__UpdateChildPositions PROC
;;;41 */
;;;42 void WM__UpdateChildPositions(WM_Obj* pObj, int dx0, int dy0, int dx1, int dy1) {
000000 e92d5fff PUSH {r0-r12,lr}
000004 460f MOV r7,r1
000006 4690 MOV r8,r2
000008 4699 MOV r9,r3
;;;43 WM_HWIN hChild;
;;;44 WM_Obj* pChild;
;;;45 int dx, dy, dw, dh;
;;;46 for (hChild = pObj->hFirstChild; hChild; hChild = pChild->hNext) {
00000a f9b00018 LDRSH r0,[r0,#0x18]
00000e f8dda038 LDR r10,[sp,#0x38]
000012 e05b B |L1.204|
|L1.20|
;;;47 int Status;
;;;48 GUI_RECT rOld, rNew;
;;;49 pChild = WM_H2P(hChild);
000014 4658 MOV r0,r11
000016 f7fffffe BL GUI_ALLOC_h2p
00001a 4605 MOV r5,r0
;;;50 /* Compute size of new rectangle */
;;;51 rOld = pChild->Rect;
;;;52 rNew = rOld;
;;;53 Status = pChild->Status & (WM_SF_ANCHOR_RIGHT | WM_SF_ANCHOR_LEFT);
00001c 8b81 LDRH r1,[r0,#0x1c]
00001e c844 LDM r0!,{r2,r6}
000020 f4017020 AND r0,r1,#0x280
;;;54 switch (Status) {
000024 2880 CMP r0,#0x80
000026 d00d BEQ |L1.68|
000028 f5b07f20 CMP r0,#0x280
;;;55 case WM_SF_ANCHOR_RIGHT: /* Right ANCHOR : Move window with right side */
;;;56 rNew.x0 += dx1;
;;;57 rNew.x1 += dx1;
;;;58 break;
;;;59 case WM_SF_ANCHOR_RIGHT | WM_SF_ANCHOR_LEFT: /* Left & Right ANCHOR: Resize window */
;;;60 rNew.x0 += dx0;
;;;61 rNew.x1 += dx1;
;;;62 break;
;;;63 default: /* Left ANCHOR: Move window with left side of parent */
;;;64 rNew.x0 += dx0;
00002c eb020307 ADD r3,r2,r7
000030 d11e BNE |L1.112|
|L1.50|
000032 4610 MOV r0,r2 ;56
000034 f363000f BFI r0,r3,#0,#16 ;56
000038 eb060309 ADD r3,r6,r9 ;57
|L1.60|
00003c 4634 MOV r4,r6 ;57
00003e f363040f BFI r4,r3,#0,#16 ;57
000042 e002 B |L1.74|
|L1.68|
000044 eb020309 ADD r3,r2,r9 ;56
000048 e7f3 B |L1.50|
|L1.74|
;;;65 rNew.x1 += dx0;
;;;66 }
;;;67 Status = pChild->Status & (WM_SF_ANCHOR_TOP | WM_SF_ANCHOR_BOTTOM);
00004a f40161a0 AND r1,r1,#0x500
;;;68 switch (Status) {
00004e f5b17f80 CMP r1,#0x100
000052 d012 BEQ |L1.122|
000054 f5b16fa0 CMP r1,#0x500
000058 d13a BNE |L1.208|
;;;69 case WM_SF_ANCHOR_BOTTOM: /* Bottom ANCHOR */
;;;70 rNew.y0 += dy1;
;;;71 rNew.y1 += dy1;
;;;72 break;
;;;73 case WM_SF_ANCHOR_BOTTOM | WM_SF_ANCHOR_TOP: /* resize window */
;;;74 rNew.y0 += dy0;
00005a eb084120 ADD r1,r8,r0,ASR #16
00005e bf00 NOP
|L1.96|
000060 f361401f BFI r0,r1,#16,#16
000064 1421 ASRS r1,r4,#16
000066 4653 MOV r3,r10 ;71
|L1.104|
000068 4419 ADD r1,r1,r3 ;71
00006a f361441f BFI r4,r1,#16,#16 ;71
00006e e007 B |L1.128|
|L1.112|
000070 4610 MOV r0,r2 ;64
000072 f363000f BFI r0,r3,#0,#16 ;64
000076 19f3 ADDS r3,r6,r7 ;65
000078 e7e0 B |L1.60|
|L1.122|
00007a eb0a4120 ADD r1,r10,r0,ASR #16 ;70
00007e e7ef B |L1.96|
|L1.128|
000080 b201 SXTH r1,r0 ;72
;;;75 rNew.y1 += dy1;
;;;76 break;
;;;77 default: /* Top ANCHOR */
;;;78 rNew.y0 += dy0;
;;;79 rNew.y1 += dy0;
;;;80 }
;;;81 /* Set new window position using Move and Resize as required */
;;;82 dx = rNew.x0 - rOld.x0;
000082 b213 SXTH r3,r2
000084 e9cd3102 STRD r3,r1,[sp,#8]
000088 1400 ASRS r0,r0,#16
;;;83 dy = rNew.y0 - rOld.y0;
00008a 1412 ASRS r2,r2,#16
00008c e9cd2000 STRD r2,r0,[sp,#0]
000090 1ac9 SUBS r1,r1,r3 ;82
000092 1a82 SUBS r2,r0,r2
;;;84 if (dx || dy) {
000094 ea510002 ORRS r0,r1,r2
000098 d002 BEQ |L1.160|
;;;85 WM_MoveWindow(hChild, dx, dy);
00009a 4658 MOV r0,r11
00009c f7fffffe BL WM_MoveWindow
|L1.160|
;;;86 }
;;;87 dw = (rNew.x1 - rNew.x0) - (rOld.x1 - rOld.x0);
0000a0 9903 LDR r1,[sp,#0xc]
0000a2 b220 SXTH r0,r4 ;85
0000a4 1a40 SUBS r0,r0,r1
0000a6 9a02 LDR r2,[sp,#8]
0000a8 b231 SXTH r1,r6
0000aa 1a89 SUBS r1,r1,r2
;;;88 dh = (rNew.y1 - rNew.y0) - (rOld.y1 - rOld.y0);
0000ac 9a01 LDR r2,[sp,#4]
0000ae 1a41 SUBS r1,r0,r1 ;87
0000b0 9b00 LDR r3,[sp,#0]
0000b2 ebc24024 RSB r0,r2,r4,ASR #16
0000b6 ebc34226 RSB r2,r3,r6,ASR #16
0000ba 1a82 SUBS r2,r0,r2
;;;89 if (dw || dh) {
0000bc ea510002 ORRS r0,r1,r2
0000c0 d002 BEQ |L1.200|
;;;90 WM_ResizeWindow(hChild, dw, dh);
0000c2 4658 MOV r0,r11
0000c4 f7fffffe BL WM_ResizeWindow
|L1.200|
0000c8 f9b5001a LDRSH r0,[r5,#0x1a] ;46
|L1.204|
0000cc 4683 MOV r11,r0 ;46
0000ce e006 B |L1.222|
|L1.208|
0000d0 eb084120 ADD r1,r8,r0,ASR #16 ;78
0000d4 f361401f BFI r0,r1,#16,#16 ;78
0000d8 1421 ASRS r1,r4,#16 ;78
0000da 4643 MOV r3,r8 ;79
0000dc e7c4 B |L1.104|
|L1.222|
0000de f1bb0f00 CMP r11,#0 ;46
0000e2 d197 BNE |L1.20|
;;;91 }
;;;92 }
;;;93 }
0000e4 e8bd9fff POP {r0-r12,pc}
;;;94
ENDP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -