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

📄 wm__updatechildpositions.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__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 + -