📄 multipage.txt
字号:
;;;361 static void _DrawTextItem(MULTIPAGE_Obj* pObj, const char* pText, unsigned Index,
000000 e92d47fc PUSH {r2-r10,lr}
;;;362 const GUI_RECT* pRect, int x0, int w, int ColorIndex) {
;;;363 GUI_RECT r;
;;;364 r = *pRect;
000004 e9dd890b LDRD r8,r9,[sp,#0x2c]
000008 4604 MOV r4,r0 ;362
00000a 468a MOV r10,r1 ;362
00000c 4615 MOV r5,r2 ;362
00000e 461e MOV r6,r3 ;362
000010 2208 MOVS r2,#8
000012 4619 MOV r1,r3
000014 4668 MOV r0,sp
000016 9f0a LDR r7,[sp,#0x28]
000018 f7fffffe BL __aeabi_memcpy
;;;365 r.x0 += x0;
00001c f8bd0000 LDRH r0,[sp,#0]
;;;366 r.x1 = r.x0 + w;
;;;367 WIDGET__EFFECT_DrawUpRect(&pObj->Widget, &r);
000020 4669 MOV r1,sp
000022 4438 ADD r0,r0,r7 ;365
000024 f8ad0000 STRH r0,[sp,#0] ;365
000028 4440 ADD r0,r0,r8 ;366
00002a f8ad0004 STRH r0,[sp,#4] ;366
00002e 4620 MOV r0,r4
000030 f7fffffe BL WIDGET__EFFECT_DrawUpRect
;;;368 GUI__ReduceRect(&r, &r, pObj->Widget.pEffect->EffectSize);
000034 6a20 LDR r0,[r4,#0x20]
000036 4669 MOV r1,sp
000038 6942 LDR r2,[r0,#0x14]
00003a 4668 MOV r0,sp
00003c f7fffffe BL GUI__ReduceRect
;;;369 if (pObj->Selection == Index) {
000040 6b20 LDR r0,[r4,#0x30]
000042 42a8 CMP r0,r5
000044 d145 BNE |L20.210|
;;;370 if (pObj->Align & MULTIPAGE_ALIGN_BOTTOM) {
000046 6ba1 LDR r1,[r4,#0x38]
;;;371 r.y0 -= pObj->Widget.pEffect->EffectSize + 1;
;;;372 if (pObj->Widget.pEffect->EffectSize > 1) {
;;;373 LCD_SetColor(GUI_WHITE);
;;;374 GUI_DrawVLine(r.x0 - 1, r.y0, r.y0 + 1);
;;;375 LCD_SetColor(0x555555);
000048 4d2f LDR r5,|L20.264|
00004a f06f407f MVN r0,#0xff000000 ;373
00004e 0749 LSLS r1,r1,#29 ;370
000050 d51c BPL |L20.140|
000052 6a22 LDR r2,[r4,#0x20] ;371
000054 f8bd1002 LDRH r1,[sp,#2] ;371
000058 6952 LDR r2,[r2,#0x14] ;371
00005a 1a89 SUBS r1,r1,r2 ;371
00005c 1e49 SUBS r1,r1,#1 ;371
00005e f8ad1002 STRH r1,[sp,#2] ;371
000062 6a21 LDR r1,[r4,#0x20] ;372
000064 6949 LDR r1,[r1,#0x14] ;372
000066 2901 CMP r1,#1 ;372
000068 dd33 BLE |L20.210|
00006a f7fffffe BL LCD_SetColor
00006e f9bd1002 LDRSH r1,[sp,#2] ;374
000072 f9bd0000 LDRSH r0,[sp,#0] ;374
000076 1c4a ADDS r2,r1,#1 ;374
000078 1e40 SUBS r0,r0,#1 ;374
00007a f7fffffe BL GUI_DrawVLine
00007e 4628 MOV r0,r5
000080 f7fffffe BL LCD_SetColor
;;;376 GUI_DrawVLine(r.x1 + 1, r.y0, r.y0 + 1);
000084 f9bd1002 LDRSH r1,[sp,#2]
000088 1c4a ADDS r2,r1,#1
00008a e01d B |L20.200|
|L20.140|
;;;377 }
;;;378 } else {
;;;379 r.y1 += pObj->Widget.pEffect->EffectSize + 1;
00008c 6a22 LDR r2,[r4,#0x20]
00008e f8bd1006 LDRH r1,[sp,#6]
000092 6952 LDR r2,[r2,#0x14]
000094 4411 ADD r1,r1,r2
000096 1c49 ADDS r1,r1,#1
000098 f8ad1006 STRH r1,[sp,#6]
;;;380 if (pObj->Widget.pEffect->EffectSize > 1) {
00009c 6a21 LDR r1,[r4,#0x20]
00009e 6949 LDR r1,[r1,#0x14]
0000a0 2901 CMP r1,#1
0000a2 dd16 BLE |L20.210|
;;;381 LCD_SetColor(GUI_WHITE);
0000a4 f7fffffe BL LCD_SetColor
;;;382 GUI_DrawVLine(r.x0 - 1, r.y1 - 2, r.y1 - 1);
0000a8 f9bd1006 LDRSH r1,[sp,#6]
0000ac f9bd0000 LDRSH r0,[sp,#0]
0000b0 1e4a SUBS r2,r1,#1
0000b2 1e89 SUBS r1,r1,#2
0000b4 1e40 SUBS r0,r0,#1
0000b6 f7fffffe BL GUI_DrawVLine
;;;383 LCD_SetColor(0x555555);
0000ba 4628 MOV r0,r5
0000bc f7fffffe BL LCD_SetColor
;;;384 GUI_DrawVLine(r.x1 + 1, r.y1 - 2, r.y1 - 1);
0000c0 f9bd1006 LDRSH r1,[sp,#6]
0000c4 1e4a SUBS r2,r1,#1
0000c6 1e89 SUBS r1,r1,#2
|L20.200|
0000c8 f9bd0004 LDRSH r0,[sp,#4]
0000cc 1c40 ADDS r0,r0,#1
0000ce f7fffffe BL GUI_DrawVLine
|L20.210|
;;;385 }
;;;386 }
;;;387 }
;;;388 LCD_SetColor(pObj->aBkColor[ColorIndex]);
0000d2 eb040589 ADD r5,r4,r9,LSL #2
0000d6 6c28 LDR r0,[r5,#0x40]
0000d8 f7fffffe BL LCD_SetColor
;;;389 WIDGET__FillRectEx(&pObj->Widget, &r);
0000dc 4669 MOV r1,sp
0000de 4620 MOV r0,r4
0000e0 f7fffffe BL WIDGET__FillRectEx
;;;390 LCD_SetBkColor(pObj->aBkColor[ColorIndex]);
0000e4 6c28 LDR r0,[r5,#0x40]
0000e6 f7fffffe BL LCD_SetBkColor
;;;391 LCD_SetColor(pObj->aTextColor[ColorIndex]);
0000ea 6ca8 LDR r0,[r5,#0x48]
0000ec f7fffffe BL LCD_SetColor
;;;392 GUI_DispStringAt(pText, r.x0 + 4, pRect->y0 + 3);
0000f0 f9b62002 LDRSH r2,[r6,#2]
0000f4 f9bd1000 LDRSH r1,[sp,#0]
0000f8 1cd2 ADDS r2,r2,#3
0000fa 1d09 ADDS r1,r1,#4
0000fc 4650 MOV r0,r10
0000fe f7fffffe BL GUI_DispStringAt
;;;393 }
000102 e8bd87fc POP {r2-r10,pc}
;;;394
ENDP
000106 0000 DCW 0x0000
|L20.264|
DCD 0x00555555
AREA ||i._GetEnable||, CODE, READONLY, ALIGN=1
_GetEnable PROC
;;;203 */
;;;204 static int _GetEnable(MULTIPAGE_Obj* pObj, unsigned Index) {
000000 b510 PUSH {r4,lr}
000002 4602 MOV r2,r0
;;;205 int r = 0;
;;;206 if ((int)Index < pObj->Handles.NumItems) {
000004 8d53 LDRH r3,[r2,#0x2a]
000006 2000 MOVS r0,#0 ;205
000008 428b CMP r3,r1
00000a dd06 BLE |L21.26|
;;;207 MULTIPAGE_PAGE* pPage;
;;;208 pPage = (MULTIPAGE_PAGE*) GUI_ARRAY_GetpItem(&pObj->Handles, Index);
00000c f102002a ADD r0,r2,#0x2a
000010 f7fffffe BL GUI_ARRAY_GetpItem
;;;209 r = (pPage->Status & MULTIPAGE_STATE_ENABLED) ? 1 : 0;
000014 7880 LDRB r0,[r0,#2]
000016 f0000001 AND r0,r0,#1
|L21.26|
;;;210 }
;;;211 return r;
;;;212 }
00001a bd10 POP {r4,pc}
;;;213
ENDP
AREA ||i._GetPagePosX||, CODE, READONLY, ALIGN=1
_GetPagePosX PROC
;;;266 */
;;;267 static int _GetPagePosX(MULTIPAGE_Obj* pObj, unsigned Index) {
000000 e92d41f0 PUSH {r4-r8,lr}
;;;268 unsigned i, r = 0;
000004 2500 MOVS r5,#0
000006 4607 MOV r7,r0 ;267
000008 460e MOV r6,r1 ;267
;;;269 for (i = 0; i < Index; i++) {
00000a 462c MOV r4,r5
00000c e005 B |L22.26|
|L22.14|
;;;270 r += _GetPageSizeX(pObj, i);
00000e 4621 MOV r1,r4
000010 4638 MOV r0,r7
000012 f7fffffe BL _GetPageSizeX
000016 4405 ADD r5,r5,r0
000018 1c64 ADDS r4,r4,#1 ;269
|L22.26|
00001a 42b4 CMP r4,r6 ;269
00001c d3f7 BCC |L22.14|
;;;271 }
;;;272 return r;
00001e 4628 MOV r0,r5
;;;273 }
000020 e8bd81f0 POP {r4-r8,pc}
;;;274
ENDP
AREA ||i._GetPageSizeX||, CODE, READONLY, ALIGN=1
_GetPageSizeX PROC
;;;249 */
;;;250 static int _GetPageSizeX(MULTIPAGE_Obj* pObj, unsigned Index) {
000000 b570 PUSH {r4-r6,lr}
000002 4604 MOV r4,r0
000004 460d MOV r5,r1
;;;251 int r = 0;
;;;252 if ((int)Index < pObj->Handles.NumItems) {
000006 8d61 LDRH r1,[r4,#0x2a]
000008 2000 MOVS r0,#0 ;251
00000a 42a9 CMP r1,r5
00000c dd0b BLE |L23.38|
;;;253 MULTIPAGE_PAGE* pPage;
;;;254 GUI_SetFont(pObj->Font);
00000e 6be0 LDR r0,[r4,#0x3c]
000010 f7fffffe BL GUI_SetFont
;;;255 pPage = (MULTIPAGE_PAGE*) GUI_ARRAY_GetpItem(&pObj->Handles, Index);
000014 4629 MOV r1,r5
000016 f104002a ADD r0,r4,#0x2a
00001a f7fffffe BL GUI_ARRAY_GetpItem
;;;256 r = GUI_GetStringDistX(&pPage->acText) + 10;
00001e 1cc0 ADDS r0,r0,#3
000020 f7fffffe BL GUI_GetStringDistX
000024 300a ADDS r0,r0,#0xa
|L23.38|
;;;257 }
;;;258 return r;
;;;259 }
000026 bd70 POP {r4-r6,pc}
;;;260
ENDP
AREA ||i._GetTextRect||, CODE, READONLY, ALIGN=1
_GetTextRect PROC
;;;288 */
;;;289 static void _GetTextRect(MULTIPAGE_Obj* pObj, GUI_RECT* pRect) {
000000 e92d41fc PUSH {r2-r8,lr}
000004 4605 MOV r5,r0
000006 460c MOV r4,r1
;;;290 GUI_RECT rBorder;
;;;291 int Width, Height;
;;;292 Height = GUI_GetYSizeOfFont(pObj->Font) + 6;
000008 6bc0 LDR r0,[r0,#0x3c]
00000a f7fffffe BL GUI_GetYSizeOfFont
00000e 1d87 ADDS r7,r0,#6
;;;293 _CalcBorderRect(pObj, &rBorder);
000010 4669 MOV r1,sp
000012 4628 MOV r0,r5
000014 f7fffffe BL _CalcBorderRect
;;;294 /* Calculate Y-Position of text item */
;;;295 if (pObj->Align & MULTIPAGE_ALIGN_BOTTOM) {
000018 6ba8 LDR r0,[r5,#0x38]
;;;296 pRect->y0 = rBorder.y1;
;;;297 } else {
;;;298 pRect->y0 = 0;
00001a f04f0600 MOV r6,#0
00001e 0740 LSLS r0,r0,#29 ;295
000020 d503 BPL |L24.42|
000022 f8bd0006 LDRH r0,[sp,#6] ;296
000026 8060 STRH r0,[r4,#2] ;296
000028 e000 B |L24.44|
|L24.42|
00002a 8066 STRH r6,[r4,#2]
|L24.44|
;;;299 }
;;;300 pRect->y1 = pRect->y0 + Height;
00002c 8860 LDRH r0,[r4,#2]
00002e 4438 ADD r0,r0,r7
000030 80e0 STRH r0,[r4,#6]
;;;301 /* Calculate width of text items */
;;;302 if (pObj->Widget.State & MULTIPAGE_STATE_SCROLLMODE) {
000032 8ce8 LDRH r0,[r5,#0x26]
000034 05c0 LSLS r0,r0,#23
000036 d507 BPL |L24.72|
;;;303 Width = rBorder.x1 - ((Height * 3) >> 1) - 3;
000038 f9bd0004 LDRSH r0,[sp,#4]
00003c eb070147 ADD r1,r7,r7,LSL #1
000040 eba00061 SUB r0,r0,r1,ASR #1
000044 1ec0 SUBS r0,r0,#3
000046 e002 B |L24.78|
|L24.72|
;;;304 } else {
;;;305 Width = _GetTextWidth(pObj);
000048 4628 MOV r0,r5
00004a f7fffffe BL _GetTextWidth
|L24.78|
;;;306 }
;;;307 /* Calculate X-Position of text item */
;;;308 if (pObj->Align & MULTIPAGE_ALIGN_RIGHT) {
00004e 6ba9 LDR r1,[r5,#0x38]
000050 07c9 LSLS r1,r1,#31
000052 d006 BEQ |L24.98|
;;;309 pRect->x0 = rBorder.x1 - Width;
000054 f8bd1004 LDRH r1,[sp,#4]
000058 1a08 SUBS r0,r1,r0
00005a 8020 STRH r0,[r4,#0]
;;;310 pRect->x1 = rBorder.x1;
00005c f8bd0004 LDRH r0,[sp,#4]
000060 e000 B |L24.100|
|L24.98|
;;;311 } else {
;;;312 pRect->x0 = 0;
000062 8026 STRH r6,[r4,#0]
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -