📄 framewin.txt
字号:
|L10.274|
000112 60a8 STR r0,[r5,#8] ;298
000114 e7b0 B |L10.120|
|L10.278|
000116 2100 MOVS r1,#0 ;300
000118 4630 MOV r0,r6 ;300
00011a f7fffffe BL FRAMEWIN_SetActive
00011e e7ab B |L10.120|
000120 e000 B |L10.292|
|L10.290|
000122 e027 B |L10.372|
|L10.292|
000124 f8b4005c LDRH r0,[r4,#0x5c] ;307
000128 0700 LSLS r0,r0,#28 ;307
00012a d427 BMI |L10.380|
00012c 68a8 LDR r0,[r5,#8] ;311
00012e 6880 LDR r0,[r0,#8] ;311
000130 b1f8 CBZ r0,|L10.370|
000132 7a00 LDRB r0,[r0,#8] ;313
000134 b1e8 CBZ r0,|L10.370|
000136 4630 MOV r0,r6 ;314
000138 f7fffffe BL WM_SetFocus
00013c e01e B |L10.380|
|L10.318|
00013e 68af LDR r7,[r5,#8] ;314
000140 b1bf CBZ r7,|L10.370|
000142 f9b70002 LDRSH r0,[r7,#2] ;314
000146 4631 MOV r1,r6 ;314
000148 f7fffffe BL WM__IsAncestorOrSelf
00014c b120 CBZ r0,|L10.344|
00014e 2101 MOVS r1,#1 ;314
000150 4630 MOV r0,r6 ;314
000152 f7fffffe BL _SetActive
000156 e011 B |L10.380|
|L10.344|
000158 2100 MOVS r1,#0 ;314
00015a 4630 MOV r0,r6 ;314
00015c f7fffffe BL _SetActive
000160 f9b70000 LDRSH r0,[r7,#0] ;314
000164 4631 MOV r1,r6 ;314
000166 f7fffffe BL WM__IsAncestor
00016a b110 CBZ r0,|L10.370|
00016c 8838 LDRH r0,[r7,#0] ;314
00016e f8a4005e STRH r0,[r4,#0x5e] ;314
|L10.370|
000172 e003 B |L10.380|
|L10.372|
000174 f1040050 ADD r0,r4,#0x50 ;324
000178 f7fffffe BL GUI_ALLOC_FreePtr
|L10.380|
00017c 4629 MOV r1,r5 ;328
00017e 4630 MOV r0,r6 ;328
000180 f7fffffe BL WIDGET_HandleActive
000184 2800 CMP r0,#0 ;328
000186 d087 BEQ |L10.152|
000188 4628 MOV r0,r5 ;331
00018a f7fffffe BL WM_DefaultProc
00018e e773 B |L10.120|
;;;333
ENDP
|L10.400|
DCD ||.data||
AREA ||i._Paint||, CODE, READONLY, ALIGN=2
_Paint PROC
;;;160 */
;;;161 static void _Paint(FRAMEWIN_Obj* pObj) {
000000 e92d4ff0 PUSH {r4-r11,lr}
000004 b08b SUB sp,sp,#0x2c
000006 4604 MOV r4,r0
;;;162 WM_HWIN hWin = WM_GetActiveWindow();
000008 f7fffffe BL WM_GetActiveWindow
00000c 4606 MOV r6,r0
;;;163 const char* pText = NULL;
00000e f04f0b00 MOV r11,#0
;;;164 int xsize = WM_GetWindowSizeX(hWin);
000012 f7fffffe BL WM_GetWindowSizeX
000016 4605 MOV r5,r0
;;;165 int ysize = WM_GetWindowSizeY(hWin);
000018 4630 MOV r0,r6
00001a f7fffffe BL WM_GetWindowSizeY
00001e 4606 MOV r6,r0
;;;166 int BorderSize = pObj->Props.BorderSize;
000020 f9b48042 LDRSH r8,[r4,#0x42]
;;;167 int y0, Index;
;;;168 POSITIONS Pos;
;;;169 GUI_RECT r, rText;
;;;170
;;;171 /* Perform computations */
;;;172 FRAMEWIN__CalcPositions(pObj, &Pos);
000024 a905 ADD r1,sp,#0x14
000026 4620 MOV r0,r4
000028 f7fffffe BL FRAMEWIN__CalcPositions
;;;173 Index = (pObj->Flags & FRAMEWIN_SF_ACTIVE) ? 1 : 0;
00002c f8b4005c LDRH r0,[r4,#0x5c]
000030 f3c007c0 UBFX r7,r0,#3,#1
;;;174
;;;175 if (pObj->hText) {
000034 f9b40050 LDRSH r0,[r4,#0x50]
000038 b110 CBZ r0,|L11.64|
;;;176 pText = (const char*) GUI_ALLOC_h2p(pObj->hText);
00003a f7fffffe BL GUI_ALLOC_h2p
00003e 4683 MOV r11,r0
|L11.64|
;;;177 }
;;;178 r.x0 = Pos.rClient.x0;
000040 f8bd0018 LDRH r0,[sp,#0x18]
000044 f8ad000c STRH r0,[sp,#0xc]
;;;179 r.x1 = Pos.rClient.x1;
000048 f8bd001c LDRH r0,[sp,#0x1c]
00004c f8ad0010 STRH r0,[sp,#0x10]
;;;180 r.y0 = Pos.rTitleText.y0;
000050 f8bd0022 LDRH r0,[sp,#0x22]
000054 f8ad000e STRH r0,[sp,#0xe]
;;;181 r.y1 = Pos.rTitleText.y1;
;;;182 Pos.rTitleText.y0++;
000058 1c40 ADDS r0,r0,#1
00005a f8ad0022 STRH r0,[sp,#0x22]
;;;183 Pos.rTitleText.x0++;
00005e f8bd0020 LDRH r0,[sp,#0x20]
000062 f8bd1026 LDRH r1,[sp,#0x26] ;181
000066 1c40 ADDS r0,r0,#1
000068 f8ad1012 STRH r1,[sp,#0x12] ;181
00006c f8ad0020 STRH r0,[sp,#0x20]
;;;184 Pos.rTitleText.x1--;
000070 f8bd0024 LDRH r0,[sp,#0x24]
000074 1e40 SUBS r0,r0,#1
000076 f8ad0024 STRH r0,[sp,#0x24]
;;;185 GUI_SetFont(pObj->Props.pFont);
00007a 6aa0 LDR r0,[r4,#0x28]
00007c f7fffffe BL GUI_SetFont
;;;186 GUI__CalcTextRect(pText, &Pos.rTitleText, &rText, pObj->TextAlign);
000080 f9b4305a LDRSH r3,[r4,#0x5a]
000084 a908 ADD r1,sp,#0x20
000086 aa01 ADD r2,sp,#4
000088 4658 MOV r0,r11
00008a 910a STR r1,[sp,#0x28]
00008c f7fffffe BL GUI__CalcTextRect
;;;187 y0 = Pos.TitleHeight + BorderSize;
000090 f9bd0014 LDRSH r0,[sp,#0x14]
000094 eb000a08 ADD r10,r0,r8
;;;188
;;;189 /* Perform drawing operations */
;;;190 WM_ITERATE_START(NULL) {
000098 2000 MOVS r0,#0
00009a f7fffffe BL WM__InitIVRSearch
00009e 2800 CMP r0,#0
0000a0 d044 BEQ |L11.300|
;;;191 /* Draw Title */
;;;192 LCD_SetBkColor(pObj->Props.aBarColor[Index]);
;;;193 LCD_SetColor(pObj->Props.aTextColor[Index]);
;;;194 WIDGET__FillStringInRect(pText, &r, &Pos.rTitleText, &rText);
;;;195 /* Draw Frame */
;;;196 LCD_SetColor(FRAMEWIN_FRAMECOLOR_DEFAULT);
;;;197 GUI_FillRect(0, 0, xsize-1, BorderSize-1);
;;;198 GUI_FillRect(0, 0, Pos.rClient.x0-1, ysize-1);
;;;199 GUI_FillRect(Pos.rClient.x1+1, 0, xsize-1, ysize-1);
;;;200 GUI_FillRect(0, Pos.rClient.y1+1, xsize-1, ysize-1);
;;;201 GUI_FillRect(0, y0, xsize - 1, y0 + pObj->Props.IBorderSize - 1);
0000a2 f1aa0901 SUB r9,r10,#1
0000a6 eb040787 ADD r7,r4,r7,LSL #2 ;192
|L11.170|
0000aa 6af8 LDR r0,[r7,#0x2c] ;192
0000ac f7fffffe BL LCD_SetBkColor
0000b0 6b78 LDR r0,[r7,#0x34] ;193
0000b2 f7fffffe BL LCD_SetColor
0000b6 ab01 ADD r3,sp,#4 ;194
0000b8 a903 ADD r1,sp,#0xc ;194
0000ba 4658 MOV r0,r11 ;194
0000bc 9a0a LDR r2,[sp,#0x28] ;194
0000be f7fffffe BL WIDGET__FillStringInRect
0000c2 481c LDR r0,|L11.308|
0000c4 f7fffffe BL LCD_SetColor
0000c8 2100 MOVS r1,#0 ;197
0000ca f1a80301 SUB r3,r8,#1 ;197
0000ce 1e6a SUBS r2,r5,#1 ;197
0000d0 4608 MOV r0,r1 ;197
0000d2 f7fffffe BL GUI_FillRect
0000d6 f9bd2018 LDRSH r2,[sp,#0x18] ;198
0000da 2100 MOVS r1,#0 ;198
0000dc 1e52 SUBS r2,r2,#1 ;198
0000de 1e73 SUBS r3,r6,#1 ;198
0000e0 4608 MOV r0,r1 ;198
0000e2 f7fffffe BL GUI_FillRect
0000e6 f9bd001c LDRSH r0,[sp,#0x1c] ;199
0000ea 1e73 SUBS r3,r6,#1 ;199
0000ec 1c40 ADDS r0,r0,#1 ;199
0000ee 1e6a SUBS r2,r5,#1 ;199
0000f0 2100 MOVS r1,#0 ;199
0000f2 f7fffffe BL GUI_FillRect
0000f6 f9bd101e LDRSH r1,[sp,#0x1e] ;200
0000fa 1e73 SUBS r3,r6,#1 ;200
0000fc 1c49 ADDS r1,r1,#1 ;200
0000fe 1e6a SUBS r2,r5,#1 ;200
000100 2000 MOVS r0,#0 ;200
000102 f7fffffe BL GUI_FillRect
000106 f9b40044 LDRSH r0,[r4,#0x44]
00010a 1e6a SUBS r2,r5,#1
00010c eb000309 ADD r3,r0,r9
000110 4651 MOV r1,r10
000112 2000 MOVS r0,#0
000114 f7fffffe BL GUI_FillRect
;;;202 /* Draw the 3D effect (if configured) */
;;;203 if (pObj->Props.BorderSize >= 2) {
000118 f9b40042 LDRSH r0,[r4,#0x42]
00011c 2802 CMP r0,#2
00011e db01 BLT |L11.292|
;;;204 WIDGET_EFFECT_3D_DrawUp(); /* pObj->Widget.pEffect->pfDrawUp(); */
000120 f7fffffe BL WIDGET_EFFECT_3D_DrawUp
|L11.292|
;;;205 }
;;;206
;;;207 } WM_ITERATE_END();
000124 f7fffffe BL WM__GetNextIVR
000128 2800 CMP r0,#0
00012a d1be BNE |L11.170|
|L11.300|
;;;208
;;;209
;;;210 }
00012c b00b ADD sp,sp,#0x2c
00012e e8bd8ff0 POP {r4-r11,pc}
;;;211
ENDP
000132 0000 DCW 0x0000
|L11.308|
DCD 0x00aaaaaa
AREA ||i._SetActive||, CODE, READONLY, ALIGN=1
_SetActive PROC
;;;123 */
;;;124 static void _SetActive(FRAMEWIN_Handle hObj, int State) {
000000 b570 PUSH {r4-r6,lr}
000002 4604 MOV r4,r0
000004 460d MOV r5,r1
;;;125 FRAMEWIN_Obj* pObj;
;;;126 pObj = FRAMEWIN_H2P(hObj);
000006 f7fffffe BL GUI_ALLOC_h2p
;;;127 if (State && !(pObj->Flags & FRAMEWIN_SF_ACTIVE)) {
00000a f8b0105c LDRH r1,[r0,#0x5c]
00000e 070a LSLS r2,r1,#28
000010 b125 CBZ r5,|L12.28|
000012 2a00 CMP r2,#0
000014 db0d BLT |L12.50|
;;;128 pObj->Flags |= FRAMEWIN_CF_ACTIVE;
000016 f0410108 ORR r1,r1,#8
;;;129 FRAMEWIN_Invalidate(hObj);
00001a e003 B |L12.36|
|L12.28|
;;;130 } else if (!State && (pObj->Flags & FRAMEWIN_SF_ACTIVE)) {
00001c 2a00 CMP r2,#0
00001e da08 BGE |L12.50|
;;;131 pObj->Flags &= ~FRAMEWIN_CF_ACTIVE;
000020 f0210108 BIC r1,r1,#8
|L12.36|
000024 f8a0105c STRH r1,[r0,#0x5c]
;;;132 FRAMEWIN_Invalidate(hObj);
000028 4620 MOV r0,r4
00002a e8bd4070 POP {r4-r6,lr}
00002e f7ffbffe B.W WM_InvalidateWindow
|L12.50|
;;;133 }
;;;134 }
000032 bd70 POP {r4-r6,pc}
;;;135
ENDP
AREA ||.data||, DATA, ALIGN=2
FRAMEWIN__MinVisibility
000000 0005 DCW 0x0005
000002 0000 DCB 0x00,0x00
FRAMEWIN__DefaultProps
DCD GUI_Font8_1
DCD 0x00404040
DCD 0x00ff0000
DCD 0x00ffffff
DCD 0x00ffffff
DCD 0x00c0c0c0
00001c 00000003 DCW 0x0000,0x0003
000020 0001 DCW 0x0001
000022 0000 DCB 0x00,0x00
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -