📄 multipage.txt
字号:
AREA ||i.MULTIPAGE_SetAlign||, CODE, READONLY, ALIGN=1
MULTIPAGE_SetAlign PROC
;;;887 */
;;;888 void MULTIPAGE_SetAlign(MULTIPAGE_Handle hObj, unsigned Align) {
000000 b57c PUSH {r2-r6,lr}
000002 0005 MOVS r5,r0
000004 460e MOV r6,r1
;;;889 MULTIPAGE_Obj* pObj;
;;;890 GUI_RECT rClient;
;;;891 if (hObj) {
000006 d01b BEQ |L10.64|
;;;892 WM_LOCK();
;;;893 pObj = MULTIPAGE_H2P(hObj);
000008 4628 MOV r0,r5
00000a f7fffffe BL GUI_ALLOC_h2p
00000e 0004 MOVS r4,r0
;;;894 MULTIPAGE_ASSERT_IS_VALID_PTR(pObj);
;;;895 if (pObj) {
000010 d016 BEQ |L10.64|
;;;896 pObj->Align = Align;
;;;897 _CalcClientRect(pObj, &rClient);
000012 4669 MOV r1,sp
000014 4620 MOV r0,r4
000016 63a6 STR r6,[r4,#0x38]
000018 f7fffffe BL _CalcClientRect
;;;898 WM_MoveTo(pObj->hClient, rClient.x0 + pObj->Widget.Win.Rect.x0,
00001c f9bd0002 LDRSH r0,[sp,#2]
000020 f9b41002 LDRSH r1,[r4,#2]
000024 1842 ADDS r2,r0,r1
000026 f9bd0000 LDRSH r0,[sp,#0]
00002a f9b41000 LDRSH r1,[r4,#0]
00002e 4401 ADD r1,r1,r0
000030 f9b40028 LDRSH r0,[r4,#0x28]
000034 f7fffffe BL WM_MoveTo
;;;899 rClient.y0 + pObj->Widget.Win.Rect.y0);
;;;900 _UpdatePositions(hObj, pObj);
000038 4621 MOV r1,r4
00003a 4628 MOV r0,r5
00003c f7fffffe BL _UpdatePositions
|L10.64|
;;;901 }
;;;902 WM_UNLOCK();
;;;903 }
;;;904 }
000040 bd7c POP {r2-r6,pc}
;;;905
ENDP
AREA ||i.MULTIPAGE_SetBkColor||, CODE, READONLY, ALIGN=1
MULTIPAGE_SetBkColor PROC
;;;833 */
;;;834 void MULTIPAGE_SetBkColor(MULTIPAGE_Handle hObj, GUI_COLOR Color, unsigned Index) {
000000 b570 PUSH {r4-r6,lr}
000002 0005 MOVS r5,r0
000004 460e MOV r6,r1
000006 4614 MOV r4,r2
;;;835 MULTIPAGE_Obj* pObj;
;;;836 if (hObj && ((int)Index < MULTIPAGE_NUMCOLORS)) {
000008 d00e BEQ |L11.40|
00000a 2c02 CMP r4,#2
00000c da0c BGE |L11.40|
;;;837 WM_LOCK();
;;;838 pObj = MULTIPAGE_H2P(hObj);
00000e 4628 MOV r0,r5
000010 f7fffffe BL GUI_ALLOC_h2p
;;;839 MULTIPAGE_ASSERT_IS_VALID_PTR(pObj);
;;;840 if (pObj) {
000014 2800 CMP r0,#0
000016 d007 BEQ |L11.40|
;;;841 pObj->aBkColor[Index] = Color;
000018 eb000084 ADD r0,r0,r4,LSL #2
;;;842 WM_InvalidateWindow(hObj);
00001c 6406 STR r6,[r0,#0x40]
00001e 4628 MOV r0,r5
000020 e8bd4070 POP {r4-r6,lr}
000024 f7ffbffe B.W WM_InvalidateWindow
|L11.40|
;;;843 }
;;;844 WM_UNLOCK();
;;;845 }
;;;846 }
000028 bd70 POP {r4-r6,pc}
;;;847
ENDP
AREA ||i.MULTIPAGE_SetFont||, CODE, READONLY, ALIGN=1
MULTIPAGE_SetFont PROC
;;;869 */
;;;870 void MULTIPAGE_SetFont(MULTIPAGE_Handle hObj, const GUI_FONT GUI_UNI_PTR * pFont) {
000000 b570 PUSH {r4-r6,lr}
000002 0005 MOVS r5,r0
000004 460c MOV r4,r1
;;;871 MULTIPAGE_Obj* pObj;
;;;872 if (hObj && pFont) {
000006 d00d BEQ |L12.36|
000008 2c00 CMP r4,#0
00000a d00b BEQ |L12.36|
;;;873 WM_LOCK();
;;;874 pObj = MULTIPAGE_H2P(hObj);
00000c 4628 MOV r0,r5
00000e f7fffffe BL GUI_ALLOC_h2p
;;;875 MULTIPAGE_ASSERT_IS_VALID_PTR(pObj);
;;;876 if (pObj) {
000012 2800 CMP r0,#0
000014 d006 BEQ |L12.36|
;;;877 pObj->Font = pFont;
;;;878 _UpdatePositions(hObj, pObj);
000016 4601 MOV r1,r0
000018 63c4 STR r4,[r0,#0x3c]
00001a 4628 MOV r0,r5
00001c e8bd4070 POP {r4-r6,lr}
000020 f7ffbffe B.W _UpdatePositions
|L12.36|
;;;879 }
;;;880 WM_UNLOCK();
;;;881 }
;;;882 }
000024 bd70 POP {r4-r6,pc}
;;;883
ENDP
AREA ||i.MULTIPAGE_SetText||, CODE, READONLY, ALIGN=1
MULTIPAGE_SetText PROC
;;;805 */
;;;806 void MULTIPAGE_SetText(MULTIPAGE_Handle hObj, const char* pText, unsigned Index) {
000000 e92d43f8 PUSH {r3-r9,lr}
000004 0005 MOVS r5,r0
000006 460e MOV r6,r1
000008 4690 MOV r8,r2
;;;807 MULTIPAGE_Obj* pObj;
;;;808 if (hObj && pText) {
00000a d031 BEQ |L13.112|
00000c 2e00 CMP r6,#0
00000e d02f BEQ |L13.112|
;;;809 WM_LOCK();
;;;810 pObj = MULTIPAGE_H2P(hObj);
000010 4628 MOV r0,r5
000012 f7fffffe BL GUI_ALLOC_h2p
000016 0004 MOVS r4,r0
;;;811 MULTIPAGE_ASSERT_IS_VALID_PTR(pObj);
;;;812 if (pObj) {
000018 d02a BEQ |L13.112|
;;;813 if ((int)Index < pObj->Handles.NumItems) {
00001a 8d61 LDRH r1,[r4,#0x2a]
00001c 4541 CMP r1,r8
00001e dd27 BLE |L13.112|
;;;814 MULTIPAGE_PAGE* pPage;
;;;815 MULTIPAGE_PAGE Page;
;;;816 pPage = (MULTIPAGE_PAGE*) GUI_ARRAY_GetpItem(&pObj->Handles, Index);
000020 f104002a ADD r0,r4,#0x2a
000024 4641 MOV r1,r8
000026 4607 MOV r7,r0
000028 f7fffffe BL GUI_ARRAY_GetpItem
;;;817 Page.hWin = pPage->hWin;
00002c 8801 LDRH r1,[r0,#0]
00002e f8ad1000 STRH r1,[sp,#0]
;;;818 Page.Status = pPage->Status;
000032 7880 LDRB r0,[r0,#2]
000034 f88d0002 STRB r0,[sp,#2]
;;;819 if (GUI_ARRAY_SetItem(&pObj->Handles, Index, &Page, sizeof(MULTIPAGE_PAGE) + strlen(pText))) {
000038 4630 MOV r0,r6
00003a f7fffffe BL strlen
00003e 1d03 ADDS r3,r0,#4
000040 466a MOV r2,sp
000042 4641 MOV r1,r8
000044 4638 MOV r0,r7
000046 f7fffffe BL GUI_ARRAY_SetItem
00004a 2800 CMP r0,#0
00004c d010 BEQ |L13.112|
;;;820 pPage = (MULTIPAGE_PAGE*) GUI_ARRAY_GetpItem(&pObj->Handles, Index);
00004e 4641 MOV r1,r8
000050 4638 MOV r0,r7
000052 f7fffffe BL GUI_ARRAY_GetpItem
000056 4607 MOV r7,r0
;;;821 memcpy(&pPage->acText, pText, strlen(pText) + 1);
000058 4630 MOV r0,r6
00005a f7fffffe BL strlen
00005e 1c42 ADDS r2,r0,#1
000060 4631 MOV r1,r6
000062 1cf8 ADDS r0,r7,#3
000064 f7fffffe BL __aeabi_memcpy
;;;822 _UpdatePositions(hObj, pObj);
000068 4621 MOV r1,r4
00006a 4628 MOV r0,r5
00006c f7fffffe BL _UpdatePositions
|L13.112|
;;;823 }
;;;824 }
;;;825 }
;;;826 WM_UNLOCK();
;;;827 }
;;;828 }
000070 e8bd83f8 POP {r3-r9,pc}
;;;829
ENDP
AREA ||i.MULTIPAGE_SetTextColor||, CODE, READONLY, ALIGN=1
MULTIPAGE_SetTextColor PROC
;;;851 */
;;;852 void MULTIPAGE_SetTextColor(MULTIPAGE_Handle hObj, GUI_COLOR Color, unsigned Index) {
000000 b570 PUSH {r4-r6,lr}
000002 0005 MOVS r5,r0
000004 460e MOV r6,r1
000006 4614 MOV r4,r2
;;;853 MULTIPAGE_Obj* pObj;
;;;854 if (hObj && ((int)Index < MULTIPAGE_NUMCOLORS)) {
000008 d00e BEQ |L14.40|
00000a 2c02 CMP r4,#2
00000c da0c BGE |L14.40|
;;;855 WM_LOCK();
;;;856 pObj = MULTIPAGE_H2P(hObj);
00000e 4628 MOV r0,r5
000010 f7fffffe BL GUI_ALLOC_h2p
;;;857 MULTIPAGE_ASSERT_IS_VALID_PTR(pObj);
;;;858 if (pObj) {
000014 2800 CMP r0,#0
000016 d007 BEQ |L14.40|
;;;859 pObj->aTextColor[Index] = Color;
000018 eb000084 ADD r0,r0,r4,LSL #2
;;;860 WM_InvalidateWindow(hObj);
00001c 6486 STR r6,[r0,#0x48]
00001e 4628 MOV r0,r5
000020 e8bd4070 POP {r4-r6,lr}
000024 f7ffbffe B.W WM_InvalidateWindow
|L14.40|
;;;861 }
;;;862 WM_UNLOCK();
;;;863 }
;;;864 }
000028 bd70 POP {r4-r6,pc}
;;;865
ENDP
AREA ||i._CalcBorderRect||, CODE, READONLY, ALIGN=1
_CalcBorderRect PROC
;;;234 */
;;;235 static void _CalcBorderRect(MULTIPAGE_Obj* pObj, GUI_RECT* pRect) {
000000 b570 PUSH {r4-r6,lr}
000002 4605 MOV r5,r0
000004 460c MOV r4,r1
;;;236 WM__GetClientRectWin(&pObj->Widget.Win, pRect);
000006 f7fffffe BL WM__GetClientRectWin
;;;237 if (pObj->Align & MULTIPAGE_ALIGN_BOTTOM) {
00000a 6ba8 LDR r0,[r5,#0x38]
00000c 0740 LSLS r0,r0,#29
00000e 6be8 LDR r0,[r5,#0x3c]
000010 d506 BPL |L15.32|
;;;238 pRect->y1 -= GUI_GetYSizeOfFont(pObj->Font) + 6;
000012 f7fffffe BL GUI_GetYSizeOfFont
000016 88e1 LDRH r1,[r4,#6]
000018 1a08 SUBS r0,r1,r0
00001a 1f80 SUBS r0,r0,#6
00001c 80e0 STRH r0,[r4,#6]
;;;239 } else {
;;;240 pRect->y0 += GUI_GetYSizeOfFont(pObj->Font) + 6;
;;;241 }
;;;242 }
00001e bd70 POP {r4-r6,pc}
|L15.32|
000020 f7fffffe BL GUI_GetYSizeOfFont
000024 8861 LDRH r1,[r4,#2] ;240
000026 1d80 ADDS r0,r0,#6 ;240
000028 4408 ADD r0,r0,r1 ;240
00002a 8060 STRH r0,[r4,#2] ;240
00002c bd70 POP {r4-r6,pc}
;;;243
ENDP
AREA ||i._CalcClientRect||, CODE, READONLY, ALIGN=1
_CalcClientRect PROC
;;;219 */
;;;220 static void _CalcClientRect(MULTIPAGE_Obj* pObj, GUI_RECT* pRect) {
000000 b570 PUSH {r4-r6,lr}
000002 4605 MOV r5,r0
000004 460c MOV r4,r1
;;;221 WIDGET__GetInsideRect(&pObj->Widget, pRect);
000006 f7fffffe BL WIDGET__GetInsideRect
;;;222 if (pObj->Align & MULTIPAGE_ALIGN_BOTTOM) {
00000a 6ba8 LDR r0,[r5,#0x38]
00000c 0740 LSLS r0,r0,#29
00000e 6be8 LDR r0,[r5,#0x3c]
000010 d506 BPL |L16.32|
;;;223 pRect->y1 -= GUI_GetYSizeOfFont(pObj->Font) + 6;
000012 f7fffffe BL GUI_GetYSizeOfFont
000016 88e1 LDRH r1,[r4,#6]
000018 1a08 SUBS r0,r1,r0
00001a 1f80 SUBS r0,r0,#6
00001c 80e0 STRH r0,[r4,#6]
;;;224 } else {
;;;225 pRect->y0 += GUI_GetYSizeOfFont(pObj->Font) + 6;
;;;226 }
;;;227 }
00001e bd70 POP {r4-r6,pc}
|L16.32|
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -