📄 progbar.txt
字号:
;;;441 pObj = PROGBAR_H2P(hObj);
000008 4620 MOV r0,r4
00000a f7fffffe BL GUI_ALLOC_h2p
;;;442 pObj->TextAlign = Align;
00000e f8a05046 STRH r5,[r0,#0x46]
;;;443 WM_InvalidateWindow(hObj);
000012 4620 MOV r0,r4
000014 e8bd4070 POP {r4-r6,lr}
000018 f7ffbffe B.W WM_InvalidateWindow
|L6.28|
;;;444 WM_UNLOCK();
;;;445 }
;;;446 }
00001c bd70 POP {r4-r6,pc}
;;;447
ENDP
AREA ||i.PROGBAR_SetTextColor||, CODE, READONLY, ALIGN=1
PROGBAR_SetTextColor PROC
;;;394 */
;;;395 void PROGBAR_SetTextColor(PROGBAR_Handle hObj, unsigned int Index, GUI_COLOR color) {
000000 b570 PUSH {r4-r6,lr}
000002 0005 MOVS r5,r0
000004 460c MOV r4,r1
000006 4616 MOV r6,r2
;;;396 PROGBAR_Obj* pObj;
;;;397 if (hObj) {
000008 d00c BEQ |L7.36|
;;;398 WM_LOCK();
;;;399 pObj = PROGBAR_H2P(hObj);
00000a 4628 MOV r0,r5
00000c f7fffffe BL GUI_ALLOC_h2p
;;;400 if (Index < GUI_COUNTOF(pObj->TextColor)) {
000010 2c02 CMP r4,#2
000012 d207 BCS |L7.36|
;;;401 pObj->TextColor[Index] = color;
000014 eb000084 ADD r0,r0,r4,LSL #2
;;;402 WM_InvalidateWindow(hObj);
000018 6386 STR r6,[r0,#0x38]
00001a 4628 MOV r0,r5
00001c e8bd4070 POP {r4-r6,lr}
000020 f7ffbffe B.W WM_InvalidateWindow
|L7.36|
;;;403 }
;;;404 WM_UNLOCK();
;;;405 }
;;;406 }
000024 bd70 POP {r4-r6,pc}
;;;407
ENDP
AREA ||i.PROGBAR_SetTextPos||, CODE, READONLY, ALIGN=1
PROGBAR_SetTextPos PROC
;;;451 */
;;;452 void PROGBAR_SetTextPos(PROGBAR_Handle hObj, int XOff, int YOff) {
000000 b570 PUSH {r4-r6,lr}
000002 0004 MOVS r4,r0
000004 460d MOV r5,r1
000006 4616 MOV r6,r2
;;;453 PROGBAR_Obj* pObj;
;;;454 if (hObj) {
000008 d00a BEQ |L8.32|
;;;455 WM_LOCK();
;;;456 pObj = PROGBAR_H2P(hObj);
00000a 4620 MOV r0,r4
00000c f7fffffe BL GUI_ALLOC_h2p
;;;457 pObj->XOff = XOff;
000010 f8205f42 STRH r5,[r0,#0x42]!
;;;458 pObj->YOff = YOff;
000014 8046 STRH r6,[r0,#2]
;;;459 WM_InvalidateWindow(hObj);
000016 4620 MOV r0,r4
000018 e8bd4070 POP {r4-r6,lr}
00001c f7ffbffe B.W WM_InvalidateWindow
|L8.32|
;;;460 WM_UNLOCK();
;;;461 }
;;;462 }
000020 bd70 POP {r4-r6,pc}
;;;463
ENDP
AREA ||i.PROGBAR_SetValue||, CODE, READONLY, ALIGN=1
PROGBAR_SetValue PROC
;;;314 */
;;;315 void PROGBAR_SetValue(PROGBAR_Handle hObj, int v) {
000000 b5f0 PUSH {r4-r7,lr}
000002 b087 SUB sp,sp,#0x1c
000004 0006 MOVS r6,r0
000006 460d MOV r5,r1
;;;316 if (hObj) {
000008 d056 BEQ |L9.184|
;;;317 PROGBAR_Obj* pObj;
;;;318 WM_LOCK();
;;;319 pObj= PROGBAR_H2P(hObj);
00000a 4630 MOV r0,r6
00000c f7fffffe BL GUI_ALLOC_h2p
000010 4604 MOV r4,r0
;;;320 /* Put v into legal range */
;;;321 if (v < pObj->Min) {
000012 6c80 LDR r0,[r0,#0x48]
000014 42a8 CMP r0,r5
000016 dd00 BLE |L9.26|
;;;322 v = pObj->Min;
000018 4605 MOV r5,r0
|L9.26|
;;;323 }
;;;324 if (v > pObj->Max) {
00001a 6ce0 LDR r0,[r4,#0x4c]
00001c 42a8 CMP r0,r5
00001e da00 BGE |L9.34|
;;;325 v = pObj->Max;
000020 4605 MOV r5,r0
|L9.34|
;;;326 }
;;;327 if (pObj->v != v) {
000022 6aa1 LDR r1,[r4,#0x28]
000024 42a9 CMP r1,r5
000026 d047 BEQ |L9.184|
;;;328 GUI_RECT r;
;;;329 /* Get x values */
;;;330 if (v < pObj->v) {
000028 dd07 BLE |L9.58|
;;;331 r.x0 = _Value2X(pObj, v);
00002a 4629 MOV r1,r5
00002c 4620 MOV r0,r4
00002e f7fffffe BL _Value2X
000032 f8ad0014 STRH r0,[sp,#0x14]
;;;332 r.x1 = _Value2X(pObj, pObj->v);
000036 6aa1 LDR r1,[r4,#0x28]
000038 e005 B |L9.70|
|L9.58|
;;;333 } else {
;;;334 r.x0 = _Value2X(pObj, pObj->v);
00003a 4620 MOV r0,r4
00003c f7fffffe BL _Value2X
000040 f8ad0014 STRH r0,[sp,#0x14]
;;;335 r.x1 = _Value2X(pObj, v);
000044 4629 MOV r1,r5
|L9.70|
000046 4620 MOV r0,r4
000048 f7fffffe BL _Value2X
00004c f8ad0018 STRH r0,[sp,#0x18]
;;;336 }
;;;337 r.y0 = 0;
000050 2000 MOVS r0,#0
000052 f8ad0016 STRH r0,[sp,#0x16]
;;;338 r.y1 = 4095;
000056 f64070ff MOV r0,#0xfff
00005a f8ad001a STRH r0,[sp,#0x1a]
;;;339 if (pObj->hpText == 0) {
00005e f8b40040 LDRH r0,[r4,#0x40]
000062 bb20 CBNZ r0,|L9.174|
;;;340 const GUI_FONT GUI_UNI_PTR * pOldFont;
;;;341 char acBuffer[5];
;;;342 GUI_RECT rText;
;;;343 pOldFont = GUI_SetFont(pObj->pFont);
000064 6ae0 LDR r0,[r4,#0x2c]
000066 f7fffffe BL GUI_SetFont
00006a 4607 MOV r7,r0
;;;344 _GetTextRect(pObj, &rText, _GetText(pObj, acBuffer));
00006c a903 ADD r1,sp,#0xc
00006e 4620 MOV r0,r4
000070 f7fffffe BL _GetText
000074 4602 MOV r2,r0
000076 a901 ADD r1,sp,#4
000078 4620 MOV r0,r4
00007a f7fffffe BL _GetTextRect
;;;345 GUI_MergeRect(&r, &r, &rText);
00007e aa01 ADD r2,sp,#4
000080 a905 ADD r1,sp,#0x14
000082 a805 ADD r0,sp,#0x14
000084 f7fffffe BL GUI_MergeRect
;;;346 pObj->v = v;
;;;347 _GetTextRect(pObj, &rText, _GetText(pObj, acBuffer));
000088 a903 ADD r1,sp,#0xc
00008a 4620 MOV r0,r4
00008c 62a5 STR r5,[r4,#0x28]
00008e f7fffffe BL _GetText
000092 4602 MOV r2,r0
000094 a901 ADD r1,sp,#4
000096 4620 MOV r0,r4
000098 f7fffffe BL _GetTextRect
;;;348 GUI_MergeRect(&r, &r, &rText);
00009c aa01 ADD r2,sp,#4
00009e a905 ADD r1,sp,#0x14
0000a0 a805 ADD r0,sp,#0x14
0000a2 f7fffffe BL GUI_MergeRect
;;;349 GUI_SetFont(pOldFont);
0000a6 4638 MOV r0,r7
0000a8 f7fffffe BL GUI_SetFont
;;;350 } else {
0000ac e000 B |L9.176|
|L9.174|
;;;351 pObj->v = v;
0000ae 62a5 STR r5,[r4,#0x28]
|L9.176|
;;;352 }
;;;353 WM_InvalidateRect(hObj, &r);
0000b0 a905 ADD r1,sp,#0x14
0000b2 4630 MOV r0,r6
0000b4 f7fffffe BL WM_InvalidateRect
|L9.184|
;;;354 }
;;;355 WM_UNLOCK();
;;;356 }
;;;357 }
0000b8 b007 ADD sp,sp,#0x1c
0000ba bdf0 POP {r4-r7,pc}
;;;358
ENDP
AREA ||i._DrawPart||, CODE, READONLY, ALIGN=1
_DrawPart PROC
;;;149 */
;;;150 static void _DrawPart(const PROGBAR_Obj* pObj, int Index,
000000 e92d41f0 PUSH {r4-r8,lr}
;;;151 int xText, int yText, const char* pText) {
;;;152 LCD_SetBkColor(pObj->BarColor[Index]);
000004 eb000481 ADD r4,r0,r1,LSL #2
000008 4615 MOV r5,r2 ;151
00000a 461e MOV r6,r3 ;151
00000c 9f06 LDR r7,[sp,#0x18]
00000e 6b20 LDR r0,[r4,#0x30]
000010 f7fffffe BL LCD_SetBkColor
;;;153 LCD_SetColor(pObj->TextColor[Index]);
000014 6ba0 LDR r0,[r4,#0x38]
000016 f7fffffe BL LCD_SetColor
;;;154 GUI_Clear();
00001a f7fffffe BL GUI_Clear
;;;155 GUI_GotoXY(xText, yText);
00001e 4631 MOV r1,r6
000020 4628 MOV r0,r5
000022 f7fffffe BL GUI_GotoXY
;;;156 GUI_DispString(pText);
000026 4638 MOV r0,r7
000028 e8bd41f0 POP {r4-r8,lr}
00002c f7ffbffe B.W GUI_DispString
;;;157 }
;;;158
ENDP
AREA ||i._GetText||, CODE, READONLY, ALIGN=1
_GetText PROC
;;;162 */
;;;163 static const char* _GetText(const PROGBAR_Obj* pObj, char* pBuffer) {
000000 b513 PUSH {r0,r1,r4,lr}
;;;164 char* pText;
;;;165 if (pObj->hpText) {
000002 f9b01040 LDRSH r1,[r0,#0x40]
000006 b121 CBZ r1,|L11.18|
000008 4608 MOV r0,r1
;;;166 pText = (char*) GUI_ALLOC_h2p(pObj->hpText);
00000a f7fffffe BL GUI_ALLOC_h2p
00000e 4604 MOV r4,r0
000010 e013 B |L11.58|
|L11.18|
;;;167 } else {
;;;168 pText = pBuffer;
;;;169 GUI_AddDecMin((100 * (I32)(pObj->v - pObj->Min)) / (pObj->Max - pObj->Min), &pBuffer);
000012 6a82 LDR r2,[r0,#0x28]
000014 6c81 LDR r1,[r0,#0x48]
000016 6cc0 LDR r0,[r0,#0x4c]
000018 1a52 SUBS r2,r2,r1
00001a 2364 MOVS r3,#0x64
00001c 1a40 SUBS r0,r0,r1
00001e 435a MULS r2,r3,r2
000020 fb92f0f0 SDIV r0,r2,r0
000024 9c01 LDR r4,[sp,#4]
000026 a901 ADD r1,sp,#4
000028 f7fffffe BL GUI_AddDecMin
;;;170 *pBuffer++ = '%';
00002c 9801 LDR r0,[sp,#4]
00002e 2125 MOVS r1,#0x25
000030 f8001b01 STRB r1,[r0],#1
;;;171 *pBuffer = 0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -