📄 framewin_buttonmin.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_buttonmin.o --depend=.\Obj\framewin_buttonmin.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_ButtonMin.c]
THUMB
AREA ||i.FRAMEWIN_AddMinButton||, CODE, READONLY, ALIGN=2
FRAMEWIN_AddMinButton PROC
;;;124 */
;;;125 WM_HWIN FRAMEWIN_AddMinButton(FRAMEWIN_Handle hObj, int Flags, int Off) {
000000 b510 PUSH {r4,lr}
;;;126 WM_HWIN hButton;
;;;127 hButton = FRAMEWIN_AddButton(hObj, Flags, Off, GUI_ID_MINIMIZE);
000002 2308 MOVS r3,#8
000004 f7fffffe BL FRAMEWIN_AddButton
000008 4604 MOV r4,r0
;;;128 BUTTON_SetSelfDraw(hButton, 0, &_Draw);
00000a 4a05 LDR r2,|L1.32|
00000c 2100 MOVS r1,#0
00000e f7fffffe BL BUTTON_SetSelfDraw
;;;129 WM_SetCallback(hButton, _cbMin);
000012 4904 LDR r1,|L1.36|
000014 4620 MOV r0,r4
000016 f7fffffe BL WM_SetCallback
;;;130 return hButton;
00001a 4620 MOV r0,r4
;;;131 }
00001c bd10 POP {r4,pc}
;;;132
ENDP
00001e 0000 DCW 0x0000
|L1.32|
DCD _Draw
|L1.36|
DCD _cbMin
AREA ||i._Draw||, CODE, READONLY, ALIGN=1
_Draw PROC
;;;101 */
;;;102 static void _Draw(void) {
000000 b510 PUSH {r4,lr}
;;;103 FRAMEWIN_Obj* pObj;
;;;104 WM_HWIN hWin;
;;;105 hWin = WM_GetActiveWindow();
000002 f7fffffe BL WM_GetActiveWindow
;;;106 hWin = WM_GetParent(hWin);
000006 f7fffffe BL WM_GetParent
;;;107 pObj = FRAMEWIN_H2P(hWin);
00000a f7fffffe BL GUI_ALLOC_h2p
;;;108 if (pObj->Flags & FRAMEWIN_SF_MINIMIZED) {
00000e f8b0005c LDRH r0,[r0,#0x5c]
000012 0640 LSLS r0,r0,#25
000014 d503 BPL |L2.30|
;;;109 _DrawRestore();
000016 e8bd4010 POP {r4,lr}
00001a f7ffbffe B.W _DrawRestore
|L2.30|
;;;110 } else {
;;;111 _DrawMin();
00001e e8bd4010 POP {r4,lr}
000022 f7ffbffe B.W _DrawMin
;;;112 }
;;;113 }
;;;114
ENDP
AREA ||i._DrawMin||, CODE, READONLY, ALIGN=2
_DrawMin PROC
;;;65 */
;;;66 static void _DrawMin(void) {
000000 b57c PUSH {r2-r6,lr}
;;;67 GUI_RECT r;
;;;68 int i, Size;
;;;69 WM_GetInsideRect(&r);
000002 4668 MOV r0,sp
000004 f7fffffe BL WM_GetInsideRect
;;;70 WM_ADDORG(r.x0, r.y0);
000008 481b LDR r0,|L3.120|
00000a f8bd1000 LDRH r1,[sp,#0]
00000e 6c02 LDR r2,[r0,#0x40] ; GUI_Context
000010 4411 ADD r1,r1,r2
000012 b209 SXTH r1,r1
000014 f8ad1000 STRH r1,[sp,#0]
000018 f8bd3002 LDRH r3,[sp,#2]
00001c 6c40 LDR r0,[r0,#0x44] ; GUI_Context
00001e 4403 ADD r3,r3,r0
000020 f8ad3002 STRH r3,[sp,#2]
;;;71 WM_ADDORG(r.x1, r.y1);
000024 f8bd3004 LDRH r3,[sp,#4]
000028 441a ADD r2,r2,r3
00002a b212 SXTH r2,r2
00002c f8ad2004 STRH r2,[sp,#4]
000030 f8bd3006 LDRH r3,[sp,#6]
000034 4418 ADD r0,r0,r3
000036 f8ad0006 STRH r0,[sp,#6]
;;;72 Size = (r.x1 - r.x0 + 1) >> 1;
00003a 1a50 SUBS r0,r2,r1
00003c 1c40 ADDS r0,r0,#1
00003e 1045 ASRS r5,r0,#1
;;;73 WM_ITERATE_START(&r); {
000040 4668 MOV r0,sp
000042 f7fffffe BL WM__InitIVRSearch
000046 e013 B |L3.112|
|L3.72|
;;;74 for (i = 1; i < Size; i++) {
000048 2401 MOVS r4,#1
00004a e00d B |L3.104|
|L3.76|
;;;75 LCD_DrawHLine(r.x0 + i, r.y1 - i - (Size >> 1), r.x1 - i);
00004c f9bd0006 LDRSH r0,[sp,#6]
000050 1b00 SUBS r0,r0,r4
000052 eba00165 SUB r1,r0,r5,ASR #1
000056 f9bd0004 LDRSH r0,[sp,#4]
00005a 1b02 SUBS r2,r0,r4
00005c f9bd0000 LDRSH r0,[sp,#0]
000060 4420 ADD r0,r0,r4
000062 f7fffffe BL LCD_DrawHLine
000066 1c64 ADDS r4,r4,#1 ;74
|L3.104|
000068 42ac CMP r4,r5 ;74
00006a dbef BLT |L3.76|
;;;76 }
;;;77 } WM_ITERATE_END();
00006c f7fffffe BL WM__GetNextIVR
|L3.112|
000070 2800 CMP r0,#0
000072 d1e9 BNE |L3.72|
;;;78 }
000074 bd7c POP {r2-r6,pc}
;;;79
ENDP
000076 0000 DCW 0x0000
|L3.120|
DCD GUI_Context
AREA ||i._DrawRestore||, CODE, READONLY, ALIGN=2
_DrawRestore PROC
;;;83 */
;;;84 static void _DrawRestore(void) {
000000 b57c PUSH {r2-r6,lr}
;;;85 GUI_RECT r;
;;;86 int i, Size;
;;;87 WM_GetInsideRect(&r);
000002 4668 MOV r0,sp
000004 f7fffffe BL WM_GetInsideRect
;;;88 WM_ADDORG(r.x0, r.y0);
000008 481b LDR r0,|L4.120|
00000a f8bd1000 LDRH r1,[sp,#0]
00000e 6c02 LDR r2,[r0,#0x40] ; GUI_Context
000010 4411 ADD r1,r1,r2
000012 b209 SXTH r1,r1
000014 f8ad1000 STRH r1,[sp,#0]
000018 f8bd3002 LDRH r3,[sp,#2]
00001c 6c40 LDR r0,[r0,#0x44] ; GUI_Context
00001e 4403 ADD r3,r3,r0
000020 f8ad3002 STRH r3,[sp,#2]
;;;89 WM_ADDORG(r.x1, r.y1);
000024 f8bd3004 LDRH r3,[sp,#4]
000028 441a ADD r2,r2,r3
00002a b212 SXTH r2,r2
00002c f8ad2004 STRH r2,[sp,#4]
000030 f8bd3006 LDRH r3,[sp,#6]
000034 4418 ADD r0,r0,r3
000036 f8ad0006 STRH r0,[sp,#6]
;;;90 Size = (r.x1 - r.x0 + 1) >> 1;
00003a 1a50 SUBS r0,r2,r1
00003c 1c40 ADDS r0,r0,#1
00003e 1045 ASRS r5,r0,#1
;;;91 WM_ITERATE_START(&r); {
000040 4668 MOV r0,sp
000042 f7fffffe BL WM__InitIVRSearch
000046 e013 B |L4.112|
|L4.72|
;;;92 for (i = 1; i < Size; i++) {
000048 2401 MOVS r4,#1
00004a e00d B |L4.104|
|L4.76|
;;;93 LCD_DrawHLine(r.x0 + i, r.y0 + i + (Size >> 1), r.x1 - i);
00004c f9bd0002 LDRSH r0,[sp,#2]
000050 eb040165 ADD r1,r4,r5,ASR #1
000054 4401 ADD r1,r1,r0
000056 f9bd0004 LDRSH r0,[sp,#4]
00005a 1b02 SUBS r2,r0,r4
00005c f9bd0000 LDRSH r0,[sp,#0]
000060 4420 ADD r0,r0,r4
000062 f7fffffe BL LCD_DrawHLine
000066 1c64 ADDS r4,r4,#1 ;92
|L4.104|
000068 42ac CMP r4,r5 ;92
00006a dbef BLT |L4.76|
;;;94 }
;;;95 } WM_ITERATE_END();
00006c f7fffffe BL WM__GetNextIVR
|L4.112|
000070 2800 CMP r0,#0
000072 d1e9 BNE |L4.72|
;;;96 }
000074 bd7c POP {r2-r6,pc}
;;;97
ENDP
000076 0000 DCW 0x0000
|L4.120|
DCD GUI_Context
AREA ||i._cbMin||, CODE, READONLY, ALIGN=1
_cbMin PROC
;;;47 */
;;;48 static void _cbMin(WM_MESSAGE* pMsg) {
000000 b510 PUSH {r4,lr}
;;;49 if (pMsg->MsgId == WM_NOTIFY_PARENT_REFLECTION) {
000002 6801 LDR r1,[r0,#0]
000004 2927 CMP r1,#0x27
000006 d111 BNE |L5.44|
;;;50 WM_HWIN hWin = pMsg->hWinSrc;
000008 f9b04006 LDRSH r4,[r0,#6]
;;;51 FRAMEWIN_Obj* pObj = FRAMEWIN_H2P(hWin);
00000c 4620 MOV r0,r4
00000e f7fffffe BL GUI_ALLOC_h2p
;;;52 if (pObj->Flags & FRAMEWIN_SF_MINIMIZED) {
000012 f8b0005c LDRH r0,[r0,#0x5c]
000016 0640 LSLS r0,r0,#25
;;;53 FRAMEWIN_Restore(hWin);
000018 4620 MOV r0,r4
00001a d503 BPL |L5.36|
00001c e8bd4010 POP {r4,lr}
000020 f7ffbffe B.W FRAMEWIN_Restore
|L5.36|
;;;54 } else {
;;;55 FRAMEWIN_Minimize(hWin);
000024 e8bd4010 POP {r4,lr}
000028 f7ffbffe B.W FRAMEWIN_Minimize
|L5.44|
;;;56 }
;;;57 return; /* We are done ! */
;;;58 }
;;;59 BUTTON_Callback(pMsg);
00002c e8bd4010 POP {r4,lr}
000030 f7ffbffe B.W BUTTON_Callback
;;;60 }
;;;61
ENDP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -