📄 button.txt
字号:
BUTTON_SetState PROC
;;;420 */
;;;421 void BUTTON_SetState(BUTTON_Handle hObj, int State) {
000000 f7ffbffe B.W WIDGET_SetState
;;;422 WIDGET_SetState(hObj, State);
;;;423 }
;;;424
ENDP
AREA ||i.BUTTON_SetText||, CODE, READONLY, ALIGN=1
BUTTON_SetText PROC
;;;356 */
;;;357 void BUTTON_SetText(BUTTON_Handle hObj, const char* s) {
000000 b570 PUSH {r4-r6,lr}
000002 0004 MOVS r4,r0
000004 460d MOV r5,r1
;;;358 if (hObj) {
000006 d00d BEQ |L8.36|
;;;359 BUTTON_Obj* pObj;
;;;360 WM_LOCK();
;;;361 pObj = BUTTON_H2P(hObj);
000008 4620 MOV r0,r4
00000a f7fffffe BL GUI_ALLOC_h2p
;;;362 if (GUI__SetText(&pObj->hpText, s)) {
00000e 4629 MOV r1,r5
000010 3048 ADDS r0,r0,#0x48
000012 f7fffffe BL GUI__SetText
000016 2800 CMP r0,#0
000018 d004 BEQ |L8.36|
;;;363 BUTTON_Invalidate(hObj);
00001a 4620 MOV r0,r4
00001c e8bd4070 POP {r4-r6,lr}
000020 f7ffbffe B.W WM_InvalidateWindow
|L8.36|
;;;364 }
;;;365 WM_UNLOCK();
;;;366 }
;;;367 }
000024 bd70 POP {r4-r6,pc}
;;;368
ENDP
AREA ||i.BUTTON_SetTextColor||, CODE, READONLY, ALIGN=1
BUTTON_SetTextColor PROC
;;;404 */
;;;405 void BUTTON_SetTextColor(BUTTON_Handle hObj,unsigned int Index, GUI_COLOR Color) {
000000 b570 PUSH {r4-r6,lr}
000002 0004 MOVS r4,r0
000004 460d MOV r5,r1
000006 4616 MOV r6,r2
;;;406 if (hObj && (Index <= 2)) {
000008 d00c BEQ |L9.36|
00000a 2d02 CMP r5,#2
00000c d80a BHI |L9.36|
;;;407 BUTTON_Obj* pObj;
;;;408 WM_LOCK();
;;;409 pObj = BUTTON_H2P(hObj);
00000e 4620 MOV r0,r4
000010 f7fffffe BL GUI_ALLOC_h2p
;;;410 BUTTON_ASSERT_IS_VALID_PTR(pObj);
;;;411 pObj->Props.aTextColor[Index] = Color;
000014 eb000085 ADD r0,r0,r5,LSL #2
;;;412 BUTTON_Invalidate(hObj);
000018 6346 STR r6,[r0,#0x34]
00001a 4620 MOV r0,r4
00001c e8bd4070 POP {r4-r6,lr}
000020 f7ffbffe B.W WM_InvalidateWindow
|L9.36|
;;;413 WM_UNLOCK();
;;;414 }
;;;415 }
000024 bd70 POP {r4-r6,pc}
;;;416
ENDP
AREA ||i._ButtonReleased||, CODE, READONLY, ALIGN=1
_ButtonReleased PROC
;;;202 */
;;;203 static void _ButtonReleased(BUTTON_Handle hObj, BUTTON_Obj* pObj, int Notification) {
000000 b570 PUSH {r4-r6,lr}
000002 460c MOV r4,r1
000004 4606 MOV r6,r0
000006 4615 MOV r5,r2
;;;204 WIDGET_AndState(hObj, BUTTON_STATE_PRESSED);
000008 f44f7180 MOV r1,#0x100
00000c f7fffffe BL WIDGET_AndState
;;;205 if (pObj->Widget.Win.Status & WM_SF_ISVIS) {
000010 8ba0 LDRH r0,[r4,#0x1c]
000012 0780 LSLS r0,r0,#30
000014 d503 BPL |L10.30|
;;;206 WM_NotifyParent(hObj, Notification);
000016 4629 MOV r1,r5
000018 4630 MOV r0,r6
00001a f7fffffe BL WM_NotifyParent
|L10.30|
;;;207 }
;;;208 if (Notification == WM_NOTIFICATION_RELEASED) {
00001e 2d02 CMP r5,#2
000020 d105 BNE |L10.46|
;;;209 GUI_DEBUG_LOG("BUTTON: Hit\n");
;;;210 GUI_StoreKey(pObj->Widget.Id);
000022 f9b40024 LDRSH r0,[r4,#0x24]
000026 e8bd4070 POP {r4-r6,lr}
00002a f7ffbffe B.W GUI_StoreKey
|L10.46|
;;;211 }
;;;212 }
00002e bd70 POP {r4-r6,pc}
;;;213
ENDP
AREA ||i._Paint||, CODE, READONLY, ALIGN=1
_Paint PROC
;;;109 */
;;;110 static void _Paint(BUTTON_Obj* pObj, BUTTON_Handle hObj) {
000000 e92d43f0 PUSH {r4-r9,lr}
000004 4604 MOV r4,r0
;;;111 const char* s = NULL;
;;;112 unsigned int Index;
;;;113 int State, PressedState, ColorIndex;
;;;114 GUI_RECT rClient, rInside;
;;;115 State = pObj->Widget.State;
000006 8ce6 LDRH r6,[r4,#0x26]
000008 b087 SUB sp,sp,#0x1c ;110
00000a 4608 MOV r0,r1 ;110
00000c f04f0900 MOV r9,#0 ;111
;;;116 PressedState = (State & BUTTON_STATE_PRESSED) ? 1 : 0;
000010 f3c62500 UBFX r5,r6,#8,#1
;;;117 ColorIndex = (WM__IsEnabled(hObj)) ? PressedState : 2;
000014 f7fffffe BL WM__IsEnabled
000018 b108 CBZ r0,|L11.30|
00001a 462f MOV r7,r5
00001c e000 B |L11.32|
|L11.30|
00001e 2702 MOVS r7,#2
|L11.32|
;;;118 GUI_SetFont(pObj->Props.pFont);
000020 6c20 LDR r0,[r4,#0x40]
000022 f7fffffe BL GUI_SetFont
;;;119 GUI_DEBUG_LOG("BUTTON: Paint(..)\n");
;;;120 if (pObj->hpText) {
000026 f9b40048 LDRSH r0,[r4,#0x48]
00002a b110 CBZ r0,|L11.50|
;;;121 s = (const char*) GUI_ALLOC_h2p(pObj->hpText);
00002c f7fffffe BL GUI_ALLOC_h2p
000030 4681 MOV r9,r0
|L11.50|
;;;122 }
;;;123 GUI_GetClientRect(&rClient);
000032 a805 ADD r0,sp,#0x14
000034 f7fffffe BL GUI_GetClientRect
;;;124 /* Start drawing */
;;;125 rInside = rClient;
000038 e9dd0105 LDRD r0,r1,[sp,#0x14]
;;;126 /* Draw the 3D effect (if configured) */
;;;127 #if BUTTON_USE_3D
;;;128 {
;;;129 int EffectSize;
;;;130 if ((PressedState) == 0) {
00003c e9cd0103 STRD r0,r1,[sp,#0xc]
000040 b92d CBNZ r5,|L11.78|
;;;131 pObj->Widget.pEffect->pfDrawUp(); /* _WIDGET_EFFECT_3D_DrawUp(); */
000042 6a20 LDR r0,[r4,#0x20]
000044 6800 LDR r0,[r0,#0]
000046 4780 BLX r0
;;;132 EffectSize = pObj->Widget.pEffect->EffectSize;
000048 6a20 LDR r0,[r4,#0x20]
00004a 6942 LDR r2,[r0,#0x14]
00004c e00d B |L11.106|
|L11.78|
;;;133 } else {
;;;134 LCD_SetColor(0x000000);
00004e 2000 MOVS r0,#0
000050 f7fffffe BL LCD_SetColor
;;;135 GUI_DrawRect(rClient.y0, rClient.x0, rClient.x1, rClient.y1);
000054 f9bd301a LDRSH r3,[sp,#0x1a]
000058 f9bd2018 LDRSH r2,[sp,#0x18]
00005c f9bd1014 LDRSH r1,[sp,#0x14]
000060 f9bd0016 LDRSH r0,[sp,#0x16]
000064 f7fffffe BL GUI_DrawRect
;;;136 EffectSize = 1;
000068 2201 MOVS r2,#1
|L11.106|
;;;137 }
;;;138 GUI__ReduceRect(&rInside, &rInside, EffectSize);
00006a a903 ADD r1,sp,#0xc
00006c a803 ADD r0,sp,#0xc
00006e f7fffffe BL GUI__ReduceRect
;;;139 }
;;;140 #endif
;;;141 /* Draw background */
;;;142 LCD_SetBkColor (pObj->Props.aBkColor[ColorIndex]);
000072 eb040087 ADD r0,r4,r7,LSL #2
000076 4680 MOV r8,r0
000078 6a80 LDR r0,[r0,#0x28]
00007a f7fffffe BL LCD_SetBkColor
;;;143 LCD_SetColor (pObj->Props.aTextColor[ColorIndex]);
00007e f8d80034 LDR r0,[r8,#0x34]
000082 f7fffffe BL LCD_SetColor
;;;144 WM_SetUserClipRect(&rInside);
000086 a803 ADD r0,sp,#0xc
000088 f7fffffe BL WM_SetUserClipRect
;;;145 GUI_Clear();
00008c f7fffffe BL GUI_Clear
;;;146 /* Draw bitmap.
;;;147 If we have only one, we will use it.
;;;148 If we have to we will use the second one (Index 1) for the pressed state
;;;149 */
;;;150 if (ColorIndex < 2) {
000090 2f02 CMP r7,#2
000092 da06 BGE |L11.162|
;;;151 Index = (pObj->ahDrawObj[BUTTON_BI_PRESSED] && PressedState) ? BUTTON_BI_PRESSED : BUTTON_BI_UNPRESSED;
000094 f8b4104c LDRH r1,[r4,#0x4c]
000098 2000 MOVS r0,#0
00009a b131 CBZ r1,|L11.170|
00009c b12d CBZ r5,|L11.170|
00009e 2001 MOVS r0,#1
0000a0 e003 B |L11.170|
|L11.162|
;;;152 } else {
;;;153 Index = pObj->ahDrawObj[BUTTON_BI_DISABLED] ? BUTTON_BI_DISABLED : BUTTON_BI_UNPRESSED;
0000a2 f8b4004e LDRH r0,[r4,#0x4e]
0000a6 b100 CBZ r0,|L11.170|
0000a8 2002 MOVS r0,#2
|L11.170|
;;;154 }
;;;155 GUI_DRAW__Draw(pObj->ahDrawObj[Index], 0, 0);
0000aa eb040040 ADD r0,r4,r0,LSL #1
0000ae 2200 MOVS r2,#0
0000b0 f9b0004a LDRSH r0,[r0,#0x4a]
0000b4 4611 MOV r1,r2
0000b6 f7fffffe BL GUI_DRAW__Draw
;;;156 /* Draw the actual button (background and text) */
;;;157 {
;;;158 GUI_RECT r;
;;;159 r = rInside;
0000ba e9dd0103 LDRD r0,r1,[sp,#0xc]
;;;160 #if BUTTON_USE_3D
;;;161 if (PressedState) {
0000be e9cd0101 STRD r0,r1,[sp,#4]
0000c2 b125 CBZ r5,|L11.206|
;;;162 GUI_MoveRect(&r, BUTTON_3D_MOVE_X,BUTTON_3D_MOVE_Y);
0000c4 2201 MOVS r2,#1
0000c6 4611 MOV r1,r2
0000c8 a801 ADD r0,sp,#4
0000ca f7fffffe BL GUI_MoveRect
|L11.206|
;;;163 }
;;;164 #endif
;;;165 GUI_SetTextMode(GUI_TM_TRANS);
0000ce 2002 MOVS r0,#2
0000d0 f7fffffe BL GUI_SetTextMode
;;;166 GUI_DispStringInRect(s, &r, pObj->Props.Align);
0000d4 f9b42044 LDRSH r2,[r4,#0x44]
0000d8 a901 ADD r1,sp,#4
0000da 4648 MOV r0,r9
0000dc f7fffffe BL GUI_DispStringInRect
;;;167 }
;;;168 /* Draw focus */
;;;169 if (State & BUTTON_STATE_FOCUS) {
0000e0 07f0 LSLS r0,r6,#31
0000e2 d006 BEQ |L11.242|
;;;170 LCD_SetColor(GUI_BLACK);
0000e4 2000 MOVS r0,#0
0000e6 f7fffffe BL LCD_SetColor
;;;171 GUI_DrawFocusRect(&rClient, 2);
0000ea 2102 MOVS r1,#2
0000ec a805 ADD r0,sp,#0x14
0000ee f7fffffe BL GUI_DrawFocusRect
|L11.242|
;;;172 }
;;;173 WM_SetUserClipRect(NULL);
0000f2 2000 MOVS r0,#0
0000f4 f7fffffe BL WM_SetUserClipRect
;;;174 }
0000f8 b007 ADD sp,sp,#0x1c
0000fa e8bd83f0 POP {r4-r9,pc}
;;;175
ENDP
AREA ||.data||, DATA, ALIGN=2
BUTTON__DefaultProps
DCD 0x00aaaaaa
DCD 0x00ffffff
DCD 0x00d3d3d3
DCD 0x00000000
DCD 0x00000000
DCD 0x00404040
DCD GUI_Font13_1
00001c 000e DCW 0x000e
00001e 0000 DCB 0x00,0x00
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -