📄 framewin__updatebuttons.txt
字号:
; generated by ARM C/C++ Compiler with , RVCT4.0 [Build 524] for uVision
; commandline ArmCC [--split_sections --debug -c --asm --interleave -o.\Obj\framewin__updatebuttons.o --depend=.\Obj\framewin__updatebuttons.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\Widget\FRAMEWIN__UpdateButtons.c]
THUMB
AREA ||i.FRAMEWIN__UpdateButtons||, CODE, READONLY, ALIGN=1
FRAMEWIN__UpdateButtons PROC
;;;40 */
;;;41 void FRAMEWIN__UpdateButtons(FRAMEWIN_Obj* pObj, int OldHeight) {
000000 e92d4ff3 PUSH {r0,r1,r4-r11,lr}
000004 b083 SUB sp,sp,#0xc
000006 4605 MOV r5,r0
;;;42 int TitleHeight = FRAMEWIN__CalcTitleHeight(pObj);
000008 f7fffffe BL FRAMEWIN__CalcTitleHeight
;;;43 int Diff = TitleHeight - OldHeight;
00000c 9904 LDR r1,[sp,#0x10]
00000e 1a40 SUBS r0,r0,r1
;;;44 if (Diff) {
000010 9002 STR r0,[sp,#8]
000012 d05c BEQ |L1.206|
;;;45 WM_HWIN hLeft;
;;;46 WM_HWIN hRight;
;;;47 WM_HWIN hChild;
;;;48 WM_Obj* pChild;
;;;49 GUI_RECT r;
;;;50 int xLeft, xRight, n;
;;;51 n = 0;
000014 f04f0900 MOV r9,#0
|L1.24|
;;;52 do {
;;;53 hLeft = hRight = 0;
000018 2600 MOVS r6,#0
;;;54 xLeft = GUI_XMAX;
00001a f6407aff MOV r10,#0xfff
00001e 4637 MOV r7,r6 ;53
;;;55 xRight = GUI_XMIN;
000020 f1ca0b00 RSB r11,r10,#0
;;;56 for (hChild = pObj->Widget.Win.hFirstChild; hChild; hChild = pChild->hNext) {
000024 f9b54018 LDRSH r4,[r5,#0x18]
000028 e030 B |L1.140|
|L1.42|
;;;57 pChild = WM_H2P(hChild);
00002a 4620 MOV r0,r4
00002c f7fffffe BL GUI_ALLOC_h2p
000030 4680 MOV r8,r0
;;;58 r = pChild->Rect;
000032 c803 LDM r0,{r0,r1}
;;;59 GUI_MoveRect(&r, -pObj->Widget.Win.Rect.x0, -pObj->Widget.Win.Rect.y0);
000034 e9cd0100 STRD r0,r1,[sp,#0]
000038 f9b50002 LDRSH r0,[r5,#2]
00003c 4242 RSBS r2,r0,#0
00003e f9b50000 LDRSH r0,[r5,#0]
000042 4241 RSBS r1,r0,#0
000044 4668 MOV r0,sp
000046 f7fffffe BL GUI_MoveRect
;;;60 if ((r.y0 == pObj->Props.BorderSize) && ((r.y1 - r.y0 + 1) == OldHeight)) {
00004a f9bd0002 LDRSH r0,[sp,#2]
00004e f9b51042 LDRSH r1,[r5,#0x42]
000052 4288 CMP r0,r1
000054 d118 BNE |L1.136|
000056 f9bd1006 LDRSH r1,[sp,#6]
00005a 1a08 SUBS r0,r1,r0
00005c 9904 LDR r1,[sp,#0x10]
00005e 1c40 ADDS r0,r0,#1
000060 4288 CMP r0,r1
000062 d111 BNE |L1.136|
;;;61 if (pChild->Status & WM_SF_ANCHOR_RIGHT) {
000064 f8b8001c LDRH r0,[r8,#0x1c]
000068 0600 LSLS r0,r0,#24
00006a d507 BPL |L1.124|
;;;62 if (r.x1 > xRight) {
00006c f9bd0004 LDRSH r0,[sp,#4]
000070 4558 CMP r0,r11
000072 dd09 BLE |L1.136|
;;;63 hRight = hChild;
000074 4627 MOV r7,r4
;;;64 xRight = r.x0;
000076 f9bdb000 LDRSH r11,[sp,#0]
00007a e005 B |L1.136|
|L1.124|
;;;65 }
;;;66 } else {
;;;67 if (r.x0 < xLeft) {
00007c f9bd0000 LDRSH r0,[sp,#0]
000080 4550 CMP r0,r10
000082 da01 BGE |L1.136|
;;;68 hLeft = hChild;
000084 4626 MOV r6,r4
;;;69 xLeft = r.x0;
000086 4682 MOV r10,r0
|L1.136|
000088 f9b8401a LDRSH r4,[r8,#0x1a] ;56
|L1.140|
00008c 2c00 CMP r4,#0 ;56
00008e d1cc BNE |L1.42|
;;;70 }
;;;71 }
;;;72 }
;;;73 }
;;;74 if (hLeft) {
000090 b15e CBZ r6,|L1.170|
;;;75 WM_ResizeWindow(hLeft, Diff, Diff);
000092 9a02 LDR r2,[sp,#8]
000094 4630 MOV r0,r6
000096 4611 MOV r1,r2
000098 f7fffffe BL WM_ResizeWindow
;;;76 WM_MoveWindow(hLeft, n * Diff, 0);
00009c 9802 LDR r0,[sp,#8]
00009e 2200 MOVS r2,#0
0000a0 fb09f100 MUL r1,r9,r0
0000a4 4630 MOV r0,r6
0000a6 f7fffffe BL WM_MoveWindow
|L1.170|
;;;77 }
;;;78 if (hRight) {
0000aa b167 CBZ r7,|L1.198|
;;;79 WM_ResizeWindow(hRight, Diff, Diff);
0000ac 9a02 LDR r2,[sp,#8]
0000ae 4638 MOV r0,r7
0000b0 4611 MOV r1,r2
0000b2 f7fffffe BL WM_ResizeWindow
;;;80 WM_MoveWindow(hRight, -(n * Diff), 0);
0000b6 9902 LDR r1,[sp,#8]
0000b8 2200 MOVS r2,#0
0000ba fb09f001 MUL r0,r9,r1
0000be 4241 RSBS r1,r0,#0
0000c0 4638 MOV r0,r7
0000c2 f7fffffe BL WM_MoveWindow
|L1.198|
;;;81 }
;;;82 n++;
0000c6 f1090901 ADD r9,r9,#1
;;;83 } while (hLeft || hRight);
0000ca 433e ORRS r6,r6,r7
0000cc d1a4 BNE |L1.24|
|L1.206|
;;;84 }
;;;85 }
0000ce b005 ADD sp,sp,#0x14
0000d0 e8bd8ff0 POP {r4-r11,pc}
;;;86
ENDP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -