📄 multipage.txt
字号:
; generated by ARM C/C++ Compiler with , RVCT4.0 [Build 524] for uVision
; commandline ArmCC [--split_sections --debug -c --asm --interleave -o.\Obj\multipage.o --depend=.\Obj\multipage.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 ..\..\GUI\Widget\MULTIPAGE.c]
THUMB
AREA ||i.MULTIPAGE_AddPage||, CODE, READONLY, ALIGN=1
MULTIPAGE_AddPage PROC
;;;646 */
;;;647 void MULTIPAGE_AddPage(MULTIPAGE_Handle hObj, WM_HWIN hWin ,const char* pText) {
000000 e92d5ffc PUSH {r2-r12,lr}
000004 ea5f0b00 MOVS r11,r0
000008 460f MOV r7,r1
00000a 4691 MOV r9,r2
;;;648 MULTIPAGE_Obj* pObj;
;;;649 GUI_USE_PARA(hWin);
;;;650 if (hObj) {
00000c d05b BEQ |L1.198|
;;;651 WM_LOCK();
;;;652 pObj = MULTIPAGE_H2P(hObj);
00000e 4658 MOV r0,r11
000010 f7fffffe BL GUI_ALLOC_h2p
000014 4605 MOV r5,r0
;;;653 MULTIPAGE_ASSERT_IS_VALID_PTR(pObj);
;;;654 if (!hWin) {
000016 bb1f CBNZ r7,|L1.96|
;;;655 /* If we get no handle we must find it. To do this, we search */
;;;656 /* all children until we found one that has not yet become a page. */
;;;657 MULTIPAGE_PAGE* pPage;
;;;658 WM_HWIN hChild;
;;;659 WM_Obj* pChild;
;;;660 WM_Obj* pClient = WM_H2P(pObj->hClient);
000018 f9b50028 LDRSH r0,[r5,#0x28]
00001c f7fffffe BL GUI_ALLOC_h2p
;;;661 int i;
;;;662 for (hChild = pClient->hFirstChild; hChild && !hWin; hChild = pChild->hNext) {
000020 f9b06018 LDRSH r6,[r0,#0x18]
;;;663 pChild = WM_H2P(hChild);
;;;664 hWin = hChild;
;;;665 for (i = 0; i < pObj->Handles.NumItems; i++) {
;;;666 pPage = (MULTIPAGE_PAGE*) GUI_ARRAY_GetpItem(&pObj->Handles, i);
000024 f1050a2a ADD r10,r5,#0x2a
000028 e016 B |L1.88|
|L1.42|
00002a 4630 MOV r0,r6 ;663
00002c f7fffffe BL GUI_ALLOC_h2p
000030 4680 MOV r8,r0 ;663
000032 4637 MOV r7,r6 ;664
000034 2400 MOVS r4,#0 ;665
000036 e00a B |L1.78|
|L1.56|
000038 4621 MOV r1,r4
00003a 4650 MOV r0,r10
00003c f7fffffe BL GUI_ARRAY_GetpItem
;;;667 if (pPage->hWin == hChild) {
000040 f9b00000 LDRSH r0,[r0,#0]
000044 42b0 CMP r0,r6
000046 d101 BNE |L1.76|
;;;668 hWin = 0;
000048 2700 MOVS r7,#0
;;;669 break;
00004a e003 B |L1.84|
|L1.76|
00004c 1c64 ADDS r4,r4,#1 ;665
|L1.78|
00004e 8d68 LDRH r0,[r5,#0x2a] ;665
000050 42a0 CMP r0,r4 ;665
000052 dcf1 BGT |L1.56|
|L1.84|
000054 f9b8601a LDRSH r6,[r8,#0x1a] ;662
|L1.88|
000058 b156 CBZ r6,|L1.112|
00005a 2f00 CMP r7,#0 ;662
00005c d0e5 BEQ |L1.42|
00005e e009 B |L1.116|
|L1.96|
;;;670 }
;;;671 }
;;;672 }
;;;673 } else {
;;;674 /* If we get a handle we must ensure that it was attached to the multipage */
;;;675 WM_AttachWindowAt(hWin, pObj->hClient, 0, 0);
000060 2300 MOVS r3,#0
000062 f9b51028 LDRSH r1,[r5,#0x28]
000066 461a MOV r2,r3
000068 4638 MOV r0,r7
00006a f7fffffe BL WM_AttachWindowAt
00006e e001 B |L1.116|
|L1.112|
;;;676 }
;;;677 if (hWin) {
000070 2f00 CMP r7,#0
000072 d028 BEQ |L1.198|
|L1.116|
;;;678 MULTIPAGE_PAGE Page;
;;;679 char NullByte = 0;
000074 2000 MOVS r0,#0
;;;680 if (!pText) {
000076 9000 STR r0,[sp,#0]
000078 f1b90f00 CMP r9,#0
00007c d100 BNE |L1.128|
;;;681 pText = &NullByte;
00007e 46e9 MOV r9,sp
|L1.128|
;;;682 }
;;;683 Page.hWin = hWin;
000080 f8ad7004 STRH r7,[sp,#4]
;;;684 Page.Status = MULTIPAGE_STATE_ENABLED;
000084 2001 MOVS r0,#1
000086 f88d0006 STRB r0,[sp,#6]
;;;685 if (GUI_ARRAY_AddItem(&pObj->Handles, &Page, sizeof(MULTIPAGE_PAGE) + strlen(pText)) == 0) {
00008a 4648 MOV r0,r9
00008c f7fffffe BL strlen
000090 1d02 ADDS r2,r0,#4
000092 f105002a ADD r0,r5,#0x2a
000096 a901 ADD r1,sp,#4
000098 4604 MOV r4,r0
00009a f7fffffe BL GUI_ARRAY_AddItem
00009e b968 CBNZ r0,|L1.188|
;;;686 MULTIPAGE_PAGE* pPage;
;;;687 pPage = (MULTIPAGE_PAGE*) GUI_ARRAY_GetpItem(&pObj->Handles, pObj->Handles.NumItems - 1);
0000a0 8d69 LDRH r1,[r5,#0x2a]
0000a2 4620 MOV r0,r4
0000a4 1e49 SUBS r1,r1,#1
0000a6 f7fffffe BL GUI_ARRAY_GetpItem
0000aa 4604 MOV r4,r0
;;;688 memcpy(&pPage->acText, pText, strlen(pText) + 1);
0000ac 4648 MOV r0,r9
0000ae f7fffffe BL strlen
0000b2 1c42 ADDS r2,r0,#1
0000b4 4649 MOV r1,r9
0000b6 1ce0 ADDS r0,r4,#3
0000b8 f7fffffe BL __aeabi_memcpy
|L1.188|
;;;689 }
;;;690 MULTIPAGE_SelectPage(hObj, pObj->Handles.NumItems - 1);
0000bc 8d69 LDRH r1,[r5,#0x2a]
0000be 4658 MOV r0,r11
0000c0 1e49 SUBS r1,r1,#1
0000c2 f7fffffe BL MULTIPAGE_SelectPage
|L1.198|
;;;691 }
;;;692 WM_UNLOCK();
;;;693 }
;;;694 }
0000c6 e8bd9ffc POP {r2-r12,pc}
;;;695
ENDP
AREA ||i.MULTIPAGE_CreateEx||, CODE, READONLY, ALIGN=2
MULTIPAGE_CreateEx PROC
;;;593 */
;;;594 MULTIPAGE_Handle MULTIPAGE_CreateEx(int x0, int y0, int xsize, int ysize, WM_HWIN hParent,
000000 e92d41f0 PUSH {r4-r8,lr}
;;;595 int WinFlags, int ExFlags, int Id)
;;;596 {
000004 b086 SUB sp,sp,#0x18
000006 4604 MOV r4,r0
000008 460d MOV r5,r1
;;;597 MULTIPAGE_Handle hObj;
;;;598 GUI_USE_PARA(ExFlags);
;;;599 /* Create the window */
;;;600 hObj = WM_CreateWindowAsChild(x0, y0, xsize, ysize, hParent, WinFlags | WM_CF_HASTRANS, &_Callback,
00000a e9dd010c LDRD r0,r1,[sp,#0x30]
00000e 4616 MOV r6,r2 ;596
000010 461f MOV r7,r3 ;596
000012 b289 UXTH r1,r1
000014 2330 MOVS r3,#0x30
000016 4a29 LDR r2,|L2.188|
000018 f0410101 ORR r1,r1,#1
00001c f8dd803c LDR r8,[sp,#0x3c]
000020 e88d000f STM sp,{r0-r3}
000024 463b MOV r3,r7
000026 4632 MOV r2,r6
000028 4629 MOV r1,r5
00002a 4620 MOV r0,r4
00002c f7fffffe BL WM_CreateWindowAsChild
000030 0006 MOVS r6,r0
;;;601 sizeof(MULTIPAGE_Obj) - sizeof(WM_Obj));
;;;602 if (hObj) {
000032 d03e BEQ |L2.178|
;;;603 MULTIPAGE_Obj* pObj;
;;;604 GUI_RECT rClient;
;;;605 int Flags;
;;;606 WM_LOCK();
;;;607 pObj = MULTIPAGE_H2P(hObj);
000034 4630 MOV r0,r6
000036 f7fffffe BL GUI_ALLOC_h2p
00003a 4604 MOV r4,r0
;;;608 /* Init sub-classes */
;;;609 GUI_ARRAY_CREATE(&pObj->Handles);
;;;610 /* init widget specific variables */
;;;611 WIDGET__Init(&pObj->Widget, Id, WIDGET_STATE_FOCUSSABLE);
00003c 2210 MOVS r2,#0x10
00003e 4641 MOV r1,r8
000040 f7fffffe BL WIDGET__Init
;;;612 /* init member variables */
;;;613 MULTIPAGE_INIT_ID(pObj);
;;;614 pObj->aBkColor[0] = MULTIPAGE__DefaultBkColor[0];
000044 491e LDR r1,|L2.192|
;;;615 pObj->aBkColor[1] = MULTIPAGE__DefaultBkColor[1];
;;;616 pObj->aTextColor[0] = MULTIPAGE__DefaultTextColor[0];
;;;617 pObj->aTextColor[1] = MULTIPAGE__DefaultTextColor[1];
;;;618 pObj->Font = MULTIPAGE__pDefaultFont;
;;;619 pObj->Align = MULTIPAGE__DefaultAlign;
;;;620 pObj->Selection = 0xffff;
;;;621 pObj->ScrollState = 0;
;;;622 pObj->Widget.State = 0;
;;;623 _CalcClientRect(pObj, &rClient);
000046 4620 MOV r0,r4
000048 680a LDR r2,[r1,#0] ;614 ; MULTIPAGE__DefaultBkColor
00004a 6422 STR r2,[r4,#0x40] ;615
00004c 6849 LDR r1,[r1,#4] ;615 ; MULTIPAGE__DefaultBkColor
00004e 6461 STR r1,[r4,#0x44] ;616
000050 491b LDR r1,|L2.192|
000052 3108 ADDS r1,r1,#8 ;616
000054 680a LDR r2,[r1,#0] ;616 ; MULTIPAGE__DefaultTextColor
000056 64a2 STR r2,[r4,#0x48] ;617
000058 6849 LDR r1,[r1,#4] ;617 ; MULTIPAGE__DefaultTextColor
00005a 64e1 STR r1,[r4,#0x4c] ;618
00005c 4918 LDR r1,|L2.192|
00005e 3908 SUBS r1,r1,#8 ;618
000060 680a LDR r2,[r1,#0] ;618 ; MULTIPAGE__pDefaultFont
000062 63e2 STR r2,[r4,#0x3c] ;619
000064 6849 LDR r1,[r1,#4] ;619 ; MULTIPAGE__DefaultAlign
000066 63a1 STR r1,[r4,#0x38] ;620
000068 f64f71ff MOV r1,#0xffff ;620
00006c 6321 STR r1,[r4,#0x30] ;621
00006e 2100 MOVS r1,#0 ;621
000070 6361 STR r1,[r4,#0x34] ;622
000072 84e1 STRH r1,[r4,#0x26] ;622
000074 a904 ADD r1,sp,#0x10
000076 f7fffffe BL _CalcClientRect
;;;624 Flags = WM_CF_SHOW | WM_CF_ANCHOR_LEFT | WM_CF_ANCHOR_RIGHT | WM_CF_ANCHOR_TOP | WM_CF_ANCHOR_BOTTOM;
00007a f2407182 MOV r1,#0x782
;;;625 pObj->hClient = WM_CreateWindowAsChild(rClient.x0, rClient.y0,
00007e e9cd6100 STRD r6,r1,[sp,#0]
000082 2300 MOVS r3,#0
000084 4a0f LDR r2,|L2.196|
000086 e9cd2302 STRD r2,r3,[sp,#8]
00008a f9bd0016 LDRSH r0,[sp,#0x16]
00008e f9bd1012 LDRSH r1,[sp,#0x12]
000092 f9bd5010 LDRSH r5,[sp,#0x10]
000096 f9bd2014 LDRSH r2,[sp,#0x14]
00009a 1a43 SUBS r3,r0,r1
00009c 1b52 SUBS r2,r2,r5
00009e 1c5b ADDS r3,r3,#1
0000a0 4628 MOV r0,r5
0000a2 1c52 ADDS r2,r2,#1
0000a4 f7fffffe BL WM_CreateWindowAsChild
0000a8 8520 STRH r0,[r4,#0x28]
;;;626 rClient.x1 - rClient.x0 + 1,
;;;627 rClient.y1 - rClient.y0 + 1,
;;;628 hObj, Flags, &_ClientCallback, 0);
;;;629 _UpdatePositions(hObj, pObj);
0000aa 4621 MOV r1,r4
0000ac 4630 MOV r0,r6
0000ae f7fffffe BL _UpdatePositions
|L2.178|
;;;630 WM_UNLOCK();
;;;631 } else {
;;;632 GUI_DEBUG_ERROROUT_IF(hObj==0, "MULTIPAGE_Create failed")
;;;633 }
;;;634 return hObj;
0000b2 4630 MOV r0,r6
;;;635 }
0000b4 b006 ADD sp,sp,#0x18
0000b6 e8bd81f0 POP {r4-r8,pc}
;;;636
ENDP
0000ba 0000 DCW 0x0000
|L2.188|
DCD _Callback
|L2.192|
DCD ||.data||+0x8
|L2.196|
DCD _ClientCallback
AREA ||i.MULTIPAGE_DeletePage||, CODE, READONLY, ALIGN=1
MULTIPAGE_DeletePage PROC
;;;699 */
;;;700 void MULTIPAGE_DeletePage(MULTIPAGE_Handle hObj, unsigned Index, int Delete) {
000000 e92d47f0 PUSH {r4-r10,lr}
000004 0006 MOVS r6,r0
000006 460d MOV r5,r1
000008 4617 MOV r7,r2
;;;701 if (hObj) {
00000a d035 BEQ |L3.120|
;;;702 MULTIPAGE_Obj* pObj;
;;;703 WM_LOCK();
;;;704 pObj = MULTIPAGE_H2P(hObj);
00000c 4630 MOV r0,r6
00000e f7fffffe BL GUI_ALLOC_h2p
000012 0004 MOVS r4,r0
;;;705 MULTIPAGE_ASSERT_IS_VALID_PTR(pObj);
;;;706 if (pObj) {
000014 d030 BEQ |L3.120|
;;;707 if ((int)Index < pObj->Handles.NumItems) {
000016 8d60 LDRH r0,[r4,#0x2a]
000018 42a8 CMP r0,r5
00001a dd2d BLE |L3.120|
;;;708 WM_HWIN hWin;
;;;709 MULTIPAGE_PAGE* pPage;
;;;710 pPage = (MULTIPAGE_PAGE*) GUI_ARRAY_GetpItem(&pObj->Handles, Index);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -