📄 framewin.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.o --depend=.\Obj\framewin.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.c]
THUMB
AREA ||i.FRAMEWIN_CreateEx||, CODE, READONLY, ALIGN=2
FRAMEWIN_CreateEx PROC
;;;506 */
;;;507 FRAMEWIN_Handle FRAMEWIN_CreateEx(int x0, int y0, int xsize, int ysize, WM_HWIN hParent,
000000 e92d4ff0 PUSH {r4-r11,lr}
;;;508 int WinFlags, int ExFlags, int Id, const char* pTitle, WM_CALLBACK* cb)
;;;509 {
000004 b089 SUB sp,sp,#0x24
000006 4605 MOV r5,r0
000008 460e MOV r6,r1
;;;510 FRAMEWIN_Handle hObj;
;;;511 /* Create the window */
;;;512 WinFlags |= WM_CF_LATE_CLIP; /* Always use late clipping since widget is optimized for it. */
00000a a812 ADD r0,sp,#0x48
00000c e8900e03 LDM r0,{r0,r1,r9-r11}
000010 4617 MOV r7,r2 ;509
000012 469c MOV r12,r3 ;509
000014 f4415480 ORR r4,r1,#0x1000
;;;513 hObj = WM_CreateWindowAsChild(x0, y0, xsize, ysize, hParent, WinFlags, _FRAMEWIN_Callback,
000018 2348 MOVS r3,#0x48
00001a 4a29 LDR r2,|L1.192|
00001c b2a1 UXTH r1,r4
00001e f8dd805c LDR r8,[sp,#0x5c]
000022 e88d000f STM sp,{r0-r3}
000026 4663 MOV r3,r12
000028 463a MOV r2,r7
00002a 4631 MOV r1,r6
00002c 4628 MOV r0,r5
00002e f7fffffe BL WM_CreateWindowAsChild
000032 0006 MOVS r6,r0
;;;514 sizeof(FRAMEWIN_Obj) - sizeof(WM_Obj));
;;;515 if (hObj) {
000034 d03f BEQ |L1.182|
;;;516 FRAMEWIN_Obj* pObj;
;;;517 POSITIONS Pos;
;;;518 GUI_LOCK();
;;;519 pObj = FRAMEWIN_H2P(hObj);
000036 4630 MOV r0,r6
000038 f7fffffe BL GUI_ALLOC_h2p
00003c 4605 MOV r5,r0
;;;520 /* init widget specific variables */
;;;521 WIDGET__Init(&pObj->Widget, Id, WIDGET_STATE_FOCUSSABLE | FRAMEWIN_SF_TITLEVIS);
00003e 2230 MOVS r2,#0x30
000040 4651 MOV r1,r10
000042 f7fffffe BL WIDGET__Init
;;;522 /* init member variables */
;;;523 pObj->Props = FRAMEWIN__DefaultProps;
000046 2220 MOVS r2,#0x20
000048 491e LDR r1,|L1.196|
00004a f1050028 ADD r0,r5,#0x28
00004e f7fffffe BL __aeabi_memcpy4
;;;524 pObj->TextAlign = GUI_TA_LEFT;
000052 2000 MOVS r0,#0
000054 3548 ADDS r5,r5,#0x48
000056 8268 STRH r0,[r5,#0x12]
;;;525 pObj->cb = cb;
;;;526 pObj->Flags = ExFlags;
000058 f8c58000 STR r8,[r5,#0]
00005c f8a59014 STRH r9,[r5,#0x14]
;;;527 pObj->hFocussedChild = 0;
000060 82e8 STRH r0,[r5,#0x16]
;;;528 pObj->hMenu = 0;
000062 80e8 STRH r0,[r5,#6]
;;;529 pObj->pFirstHook = NULL;
000064 61e8 STR r0,[r5,#0x1c]
000066 3d48 SUBS r5,r5,#0x48
;;;530 FRAMEWIN__CalcPositions(pObj, &Pos);
000068 a904 ADD r1,sp,#0x10
00006a 4628 MOV r0,r5
00006c f7fffffe BL FRAMEWIN__CalcPositions
;;;531 pObj->hClient = WM_CreateWindowAsChild(Pos.rClient.x0,Pos.rClient.y0,
000070 f2417182 MOV r1,#0x1782
000074 e9cd6100 STRD r6,r1,[sp,#0]
000078 2300 MOVS r3,#0
00007a 4a13 LDR r2,|L1.200|
00007c e9cd2302 STRD r2,r3,[sp,#8]
000080 f9bd001a LDRSH r0,[sp,#0x1a]
000084 f9bd1016 LDRSH r1,[sp,#0x16]
000088 f9bd2018 LDRSH r2,[sp,#0x18]
00008c 1a43 SUBS r3,r0,r1
00008e f9bd0014 LDRSH r0,[sp,#0x14]
000092 1c5b ADDS r3,r3,#1
000094 1a12 SUBS r2,r2,r0
000096 1c52 ADDS r2,r2,#1
000098 f7fffffe BL WM_CreateWindowAsChild
00009c f8a5004c STRH r0,[r5,#0x4c]
;;;532 Pos.rClient.x1 - Pos.rClient.x0 +1,
;;;533 Pos.rClient.y1 - Pos.rClient.y0 +1,
;;;534 hObj,
;;;535 WM_CF_ANCHOR_RIGHT | WM_CF_ANCHOR_LEFT | WM_CF_ANCHOR_TOP | WM_CF_ANCHOR_BOTTOM | WM_CF_SHOW | WM_CF_LATE_CLIP,
;;;536 FRAMEWIN__cbClient, 0);
;;;537 /* Normally we disable memory devices for the frame window:
;;;538 * The frame window does not flicker, and not using memory devices is usually faster.
;;;539 * You can still use memory by explicitly specifying the flag
;;;540 */
;;;541 if ((WinFlags & (WM_CF_MEMDEV | (WM_CF_MEMDEV_ON_REDRAW))) == 0) {
0000a0 f2420004 MOV r0,#0x2004
0000a4 4204 TST r4,r0
0000a6 d102 BNE |L1.174|
;;;542 WM_DisableMemdev(hObj);
0000a8 4630 MOV r0,r6
0000aa f7fffffe BL WM_DisableMemdev
|L1.174|
;;;543 }
;;;544 FRAMEWIN_SetText(hObj, pTitle);
0000ae 4659 MOV r1,r11
0000b0 4630 MOV r0,r6
0000b2 f7fffffe BL FRAMEWIN_SetText
|L1.182|
;;;545 GUI_UNLOCK();
;;;546 }
;;;547 return hObj;
0000b6 4630 MOV r0,r6
;;;548 }
0000b8 b009 ADD sp,sp,#0x24
0000ba e8bd8ff0 POP {r4-r11,pc}
;;;549
ENDP
0000be 0000 DCW 0x0000
|L1.192|
DCD _FRAMEWIN_Callback
|L1.196|
DCD ||.data||+0x4
|L1.200|
DCD FRAMEWIN__cbClient
AREA ||i.FRAMEWIN_SetActive||, CODE, READONLY, ALIGN=1
FRAMEWIN_SetActive PROC
;;;610 */
;;;611 void FRAMEWIN_SetActive(FRAMEWIN_Handle hObj, int State) {
000000 2800 CMP r0,#0
;;;612 if (hObj) {
000002 d001 BEQ |L2.8|
;;;613 WM_LOCK();
;;;614 _SetActive(hObj, State);
000004 f7ffbffe B.W _SetActive
|L2.8|
;;;615 WM_UNLOCK();
;;;616 }
;;;617 }
000008 4770 BX lr
;;;618
ENDP
AREA ||i.FRAMEWIN_SetMoveable||, CODE, READONLY, ALIGN=1
FRAMEWIN_SetMoveable PROC
;;;592 */
;;;593 void FRAMEWIN_SetMoveable(FRAMEWIN_Handle hObj, int State) {
000000 b510 PUSH {r4,lr}
000002 460c MOV r4,r1
;;;594 if (hObj) {
000004 2800 CMP r0,#0
000006 d00a BEQ |L3.30|
;;;595 FRAMEWIN_Obj* pObj;
;;;596 GUI_LOCK();
;;;597 pObj = FRAMEWIN_H2P(hObj);
000008 f7fffffe BL GUI_ALLOC_h2p
;;;598 if (State) {
;;;599 pObj->Flags |= FRAMEWIN_CF_MOVEABLE;
00000c f8301f5c LDRH r1,[r0,#0x5c]!
000010 b114 CBZ r4,|L3.24|
000012 f0410110 ORR r1,r1,#0x10
000016 e001 B |L3.28|
|L3.24|
;;;600 } else {
;;;601 pObj->Flags &= ~FRAMEWIN_CF_MOVEABLE;
000018 f0210110 BIC r1,r1,#0x10
|L3.28|
00001c 8001 STRH r1,[r0,#0]
|L3.30|
;;;602 }
;;;603 GUI_UNLOCK();
;;;604 }
;;;605 }
00001e bd10 POP {r4,pc}
;;;606
ENDP
AREA ||i.FRAMEWIN_SetText||, CODE, READONLY, ALIGN=1
FRAMEWIN_SetText PROC
;;;559 */
;;;560 void FRAMEWIN_SetText(FRAMEWIN_Handle hObj, const char* s) {
000000 b570 PUSH {r4-r6,lr}
000002 0004 MOVS r4,r0
000004 460d MOV r5,r1
;;;561 if (hObj) {
000006 d00d BEQ |L4.36|
;;;562 FRAMEWIN_Obj* pObj;
;;;563 GUI_LOCK();
;;;564 pObj = FRAMEWIN_H2P(hObj);
000008 4620 MOV r0,r4
00000a f7fffffe BL GUI_ALLOC_h2p
;;;565 if (GUI__SetText(&pObj->hText, s)) {
00000e 4629 MOV r1,r5
000010 3050 ADDS r0,r0,#0x50
000012 f7fffffe BL GUI__SetText
000016 2800 CMP r0,#0
000018 d004 BEQ |L4.36|
;;;566 FRAMEWIN_Invalidate(hObj);
00001a 4620 MOV r0,r4
00001c e8bd4070 POP {r4-r6,lr}
000020 f7ffbffe B.W WM_InvalidateWindow
|L4.36|
;;;567 }
;;;568 GUI_UNLOCK();
;;;569 }
;;;570 }
000024 bd70 POP {r4-r6,pc}
;;;571
ENDP
AREA ||i.FRAMEWIN_SetTextAlign||, CODE, READONLY, ALIGN=1
FRAMEWIN_SetTextAlign PROC
;;;575 */
;;;576 void FRAMEWIN_SetTextAlign(FRAMEWIN_Handle hObj, int Align) {
000000 b570 PUSH {r4-r6,lr}
000002 0005 MOVS r5,r0
000004 460c MOV r4,r1
;;;577 if (hObj) {
000006 d00d BEQ |L5.36|
;;;578 FRAMEWIN_Obj* pObj;
;;;579 GUI_LOCK();
;;;580 pObj = FRAMEWIN_H2P(hObj);
000008 4628 MOV r0,r5
00000a f7fffffe BL GUI_ALLOC_h2p
;;;581 if (pObj->TextAlign != Align) {
00000e f9b0105a LDRSH r1,[r0,#0x5a]
000012 42a1 CMP r1,r4
000014 d006 BEQ |L5.36|
;;;582 pObj->TextAlign = Align;
000016 f8a0405a STRH r4,[r0,#0x5a]
;;;583 FRAMEWIN_Invalidate(hObj);
00001a 4628 MOV r0,r5
00001c e8bd4070 POP {r4-r6,lr}
000020 f7ffbffe B.W WM_InvalidateWindow
|L5.36|
;;;584 }
;;;585 GUI_UNLOCK();
;;;586 }
;;;587 }
000024 bd70 POP {r4-r6,pc}
;;;588
ENDP
AREA ||i.FRAMEWIN__CalcPositions||, CODE, READONLY, ALIGN=1
FRAMEWIN__CalcPositions PROC
;;;424 */
;;;425 void FRAMEWIN__CalcPositions(FRAMEWIN_Obj* pObj, POSITIONS* pPos) {
000000 e92d5ff0 PUSH {r4-r12,lr}
;;;426 WM_HWIN hChild;
;;;427 WM_Obj* pChild;
;;;428 int TitleHeight;
;;;429 int MenuHeight = 0;
000004 f04f0800 MOV r8,#0
000008 4605 MOV r5,r0 ;425
00000a 460c MOV r4,r1 ;425
;;;430 int IBorderSize = 0;
00000c 46c1 MOV r9,r8
;;;431 int BorderSize;
;;;432 int xsize, ysize;
;;;433 int x0, x1, y0;
;;;434 BorderSize = pObj->Props.BorderSize;
00000e f9b06042 LDRSH r6,[r0,#0x42]
;;;435 xsize = WM__GetWindowSizeX(&pObj->Widget.Win);
000012 f7fffffe BL WM__GetWindowSizeX
000016 4683 MOV r11,r0
;;;436 ysize = WM__GetWindowSizeY(&pObj->Widget.Win);
000018 4628 MOV r0,r5
00001a f7fffffe BL WM__GetWindowSizeY
00001e 4682 MOV r10,r0
;;;437 if (pObj->Widget.State & FRAMEWIN_SF_TITLEVIS) {
000020 8ce8 LDRH r0,[r5,#0x26]
000022 0680 LSLS r0,r0,#26
000024 d501 BPL |L6.42|
;;;438 IBorderSize = pObj->Props.IBorderSize;
000026 f9b59044 LDRSH r9,[r5,#0x44]
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -