📄 widget_buttonround.txt
字号:
; generated by ARM/Thumb C/C++ Compiler with , RVCT3.1 [Build 934] for uVision
; commandline ArmCC [--split_sections --debug -c --asm --interleave -o.\Obj\widget_buttonround.o --depend=.\Obj\widget_buttonround.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 -D__MICROLIB ..\..\source\widget_buttonround.c]
THUMB
AREA ||i._OnPaint||, CODE, READONLY, ALIGN=2
_OnPaint PROC
;;;65 */
;;;66 static void _OnPaint(BUTTON_Handle hObj) {
000000 b570 PUSH {r4-r6,lr}
000002 b090 SUB sp,sp,#0x40
000004 4606 MOV r6,r0
;;;67 int Index;
;;;68 char ac[50];
;;;69 GUI_RECT Rect;
;;;70 BUTTON_Obj * pObj;
;;;71 pObj = BUTTON_H2P(hObj);
000006 f7fff7ff BL GUI_ALLOC_h2p
;;;72 Index = (WIDGET_GetState(hObj) & BUTTON_STATE_PRESSED) ? 1 : 0;
00000a 4630 MOV r0,r6
00000c f7fff7ff BL WIDGET_GetState
000010 f3c0f3c0 UBFX r5,r0,#8,#1
;;;73 WM_GetClientRect(&Rect);
000014 a801 ADD r0,sp,#4
000016 f7fff7ff BL WM_GetClientRect
;;;74 /* Draw filled ellipse with button background color */
;;;75 GUI_SetColor(BUTTON_GetBkColor(hObj, Index));
00001a 4629 MOV r1,r5
00001c 4630 MOV r0,r6
00001e f7fff7ff BL BUTTON_GetBkColor
000022 f7fff7ff BL GUI_SetColor
;;;76 GUI_FillEllipse(Rect.x1 / 2, Rect.y1 / 2, Rect.x1 / 2, Rect.y1 / 2);
000026 f9bdf9bd LDRSH r0,[sp,#8]
00002a f9bdf9bd LDRSH r1,[sp,#0xa]
00002e eb00eb00 ADD r0,r0,r0,LSR #31
000032 eb01eb01 ADD r1,r1,r1,LSR #31
000036 104b ASRS r3,r1,#1
000038 1042 ASRS r2,r0,#1
00003a 1049 ASRS r1,r1,#1
00003c 1040 ASRS r0,r0,#1
00003e f7fff7ff BL GUI_FillEllipse
;;;77 /* Draw black shape */
;;;78 GUI_SetColor(GUI_BLACK);
000042 2000 MOVS r0,#0
000044 f7fff7ff BL GUI_SetColor
;;;79 GUI_DrawEllipse(Rect.x1 / 2, Rect.y1 / 2, Rect.x1 / 2, Rect.y1 / 2);
000048 f9bdf9bd LDRSH r1,[sp,#8]
00004c f9bdf9bd LDRSH r0,[sp,#0xa]
000050 eb01eb01 ADD r4,r1,r1,LSR #31
000054 eb00eb00 ADD r0,r0,r0,LSR #31
000058 1043 ASRS r3,r0,#1
00005a 1041 ASRS r1,r0,#1
00005c 1062 ASRS r2,r4,#1
00005e 1060 ASRS r0,r4,#1
000060 f7fff7ff BL GUI_DrawEllipse
;;;80 /* Draw button text with widget attributes */
;;;81 GUI_SetColor(BUTTON_GetTextColor(hObj, Index));
000064 4629 MOV r1,r5
000066 4630 MOV r0,r6
000068 f7fff7ff BL BUTTON_GetTextColor
00006c f7fff7ff BL GUI_SetColor
;;;82 GUI_SetBkColor(BUTTON_GetBkColor(hObj, Index));
000070 4629 MOV r1,r5
000072 4630 MOV r0,r6
000074 f7fff7ff BL BUTTON_GetBkColor
000078 f7fff7ff BL GUI_SetBkColor
;;;83 GUI_SetFont(BUTTON_GetFont(hObj));
00007c 4630 MOV r0,r6
00007e f7fff7ff BL BUTTON_GetFont
000082 f7fff7ff BL GUI_SetFont
;;;84 BUTTON_GetText(hObj, ac, sizeof(ac));
000086 2232 MOVS r2,#0x32
000088 a903 ADD r1,sp,#0xc
00008a 4630 MOV r0,r6
00008c f7fff7ff BL BUTTON_GetText
;;;85 if (_Pressed) {
000090 4808 LDR r0,|L1.180|
000092 68c0 LDR r0,[r0,#0xc] ; _Pressed
000094 b138 CBZ r0,|L1.166|
;;;86 strcpy(ac + strlen(ac), "\npressed");
000096 a803 ADD r0,sp,#0xc
000098 f7fff7ff BL strlen
00009c a903 ADD r1,sp,#0xc
00009e 4408 ADD r0,r0,r1
0000a0 a105 ADR r1,|L1.184|
0000a2 f7fff7ff BL strcpy
|L1.166|
;;;87 }
;;;88 GUI_DispStringInRect(ac, &Rect, GUI_TA_HCENTER | GUI_TA_VCENTER);
0000a6 220e MOVS r2,#0xe
0000a8 a901 ADD r1,sp,#4
0000aa a803 ADD r0,sp,#0xc
0000ac f7fff7ff BL GUI_DispStringInRect
;;;89 }
0000b0 b010 ADD sp,sp,#0x40
0000b2 bd70 POP {r4-r6,pc}
;;;90
ENDP
|L1.180|
0000b4 00000000 DCD ||.data||
|L1.184|
0000b8 0a707265 DCB "\n\160\162\145"
0000bc 73736564 DCB "ssed"
0000c0 00000000 DCB "\0\0\0\0"
AREA ||i._cbButton||, CODE, READONLY, ALIGN=2
_cbButton PROC
;;;100 */
;;;101 static void _cbButton(WM_MESSAGE *pMsg) {
000000 b570 PUSH {r4-r6,lr}
000002 4604 MOV r4,r0
;;;102 switch (pMsg->MsgId) {
000004 6800 LDR r0,[r0,#0]
000006 4d0c LDR r5,|L2.56|
000008 280f CMP r0,#0xf
00000a d104 BNE |L2.22|
;;;103 case WM_PAINT:
;;;104 _OnPaint(pMsg->hWin);
00000c f9b4f9b4 LDRSH r0,[r4,#4]
000010 f7fff7ff BL _OnPaint
;;;105 break;
000014 e002 B |L2.28|
|L2.22|
;;;106 default:
;;;107 _pcbCallback(pMsg); /* The original callback */
000016 6829 LDR r1,[r5,#0] ; _pcbCallback
000018 4620 MOV r0,r4
00001a 4788 BLX r1
|L2.28|
;;;108 break;
;;;109 }
;;;110 if (pMsg->MsgId == WM_TOUCH) {
00001c 6820 LDR r0,[r4,#0]
00001e 280c CMP r0,#0xc
000020 d109 BNE |L2.54|
;;;111 if (BUTTON_IsPressed(pMsg->hWin)) {
000022 f9b4f9b4 LDRSH r0,[r4,#4]
000026 f7fff7ff BL BUTTON_IsPressed
00002a b118 CBZ r0,|L2.52|
;;;112 if (!_Pressed) {
00002c 68e8 LDR r0,[r5,#0xc] ; _Pressed
00002e 2800 CMP r0,#0
000030 d101 BNE |L2.54|
;;;113 _Pressed = 1;
000032 2001 MOVS r0,#1
|L2.52|
000034 60e8 STR r0,[r5,#0xc] ; _Pressed
|L2.54|
;;;114 }
;;;115 } else {
;;;116 _Pressed = 0;
;;;117 }
;;;118 }
;;;119 }
000036 bd70 POP {r4-r6,pc}
;;;120
ENDP
|L2.56|
000038 00000000 DCD ||.data||
AREA ||i._cbDialog||, CODE, READONLY, ALIGN=2
_cbDialog PROC
;;;126 */
;;;127 static void _cbDialog(WM_MESSAGE *pMsg) {
000000 e92de92d PUSH {r4-r8,lr}
000004 4605 MOV r5,r0
;;;128 int NCode, Id;
;;;129 WM_HWIN hDlg;
;;;130 BUTTON_Handle hButton;
;;;131 hDlg = pMsg->hWin;
000006 f9b0f9b0 LDRSH r6,[r0,#4]
;;;132 switch (pMsg->MsgId) {
00000a 6800 LDR r0,[r0,#0]
00000c 280e CMP r0,#0xe
00000e d043 BEQ |L3.152|
000010 280f CMP r0,#0xf
000012 d01e BEQ |L3.82|
000014 f44ff44f MOV r7,#0x170
000018 281e CMP r0,#0x1e
00001a d035 BEQ |L3.136|
00001c 2826 CMP r0,#0x26
00001e d17c BNE |L3.282|
;;;133 case WM_PAINT:
;;;134 WM_DefaultProc(pMsg); /* Handle dialog items */
;;;135 /* After drawing the dialog items add some user drawn items to the window */
;;;136 GUI_SetPenSize(10);
;;;137 GUI_SetColor(GUI_GREEN);
;;;138 GUI_DrawLine( 95, 5, 185, 95);
;;;139 GUI_SetColor(GUI_RED);
;;;140 GUI_DrawLine( 95, 95, 185, 5);
;;;141 break;
;;;142 case WM_INIT_DIALOG:
;;;143 hButton = WM_GetDialogItem(hDlg, GUI_ID_BUTTON0);
;;;144 WM_SetHasTrans(hButton); /* Set transparency flag for button */
;;;145 break;
;;;146 case WM_KEY:
;;;147 switch (((WM_KEY_INFO*)(pMsg->Data.p))->Key) {
;;;148 case GUI_KEY_ESCAPE:
;;;149 GUI_EndDialog(hDlg, 1);
;;;150 break;
;;;151 case GUI_KEY_ENTER:
;;;152 GUI_EndDialog(hDlg, 0);
;;;153 break;
;;;154 }
;;;155 break;
;;;156 case WM_NOTIFY_PARENT:
;;;157 Id = WM_GetId(pMsg->hWinSrc); /* Id of widget */
000020 f9b5f9b5 LDRSH r0,[r5,#6]
000024 f7fff7ff BL WM_GetId
000028 4604 MOV r4,r0
;;;158 NCode = pMsg->Data.v; /* Notification code */
;;;159 switch (NCode) {
00002a 68a8 LDR r0,[r5,#8]
00002c 2802 CMP r0,#2
00002e d159 BNE |L3.228|
;;;160 case WM_NOTIFICATION_RELEASED: /* React only if released */
;;;161 hButton = WM_GetDialogItem(hDlg, GUI_ID_BUTTON0);
000030 4639 MOV r1,r7
000032 4630 MOV r0,r6
000034 f7fff7ff BL WM_GetDialogItem
000038 4607 MOV r7,r0
00003a 4d4a LDR r5,|L3.356|
;;;162 if (Id == GUI_ID_BUTTON1) { /* Toggle callback */
00003c f5a4f5a4 SUB r0,r4,#0x100
000040 3871 SUBS r0,r0,#0x71
000042 d140 BNE |L3.198|
;;;163 if (_pcbCallback) {
000044 6829 LDR r1,[r5,#0] ; _pcbCallback
000046 b379 CBZ r1,|L3.168|
;;;164 WM_SetCallback(hButton, _pcbCallback);
000048 4638 MOV r0,r7
00004a f7fff7ff BL WM_SetCallback
;;;165 _pcbCallback = 0;
00004e 2000 MOVS r0,#0
000050 e035 B |L3.190|
|L3.82|
000052 4628 MOV r0,r5 ;134
000054 f7fff7ff BL WM_DefaultProc
000058 200a MOVS r0,#0xa ;136
00005a f7fff7ff BL GUI_SetPenSize
00005e f44ff44f MOV r0,#0xff00 ;137
000062 f7fff7ff BL GUI_SetColor
000066 235f MOVS r3,#0x5f ;138
000068 22b9 MOVS r2,#0xb9 ;138
00006a 2105 MOVS r1,#5 ;138
00006c 4618 MOV r0,r3 ;138
00006e f7fff7ff BL GUI_DrawLine
000072 20ff MOVS r0,#0xff ;139
000074 f7fff7ff BL GUI_SetColor
000078 e8bde8bd POP {r4-r8,lr} ;140
00007c 2305 MOVS r3,#5 ;140
00007e 22b9 MOVS r2,#0xb9 ;140
000080 215f MOVS r1,#0x5f ;140
000082 4608 MOV r0,r1 ;140
000084 f7fff7ff B.W GUI_DrawLine
|L3.136|
000088 4639 MOV r1,r7 ;143
00008a 4630 MOV r0,r6 ;143
00008c f7fff7ff BL WM_GetDialogItem
000090 e8bde8bd POP {r4-r8,lr} ;144
000094 f7fff7ff B.W WM_SetHasTrans
|L3.152|
000098 68a8 LDR r0,[r5,#8] ;147
00009a 6800 LDR r0,[r0,#0] ;147
00009c 280d CMP r0,#0xd ;147
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -