📄 header.txt
字号:
000032 f1070b04 ADD r11,r7,#4
000036 f1a90a01 SUB r10,r9,#1
00003a 9001 STR r0,[sp,#4]
00003c e016 B |L29.108|
|L29.62|
00003e 4621 MOV r1,r4
000040 9802 LDR r0,[sp,#8]
000042 f7fffffe BL GUI_ARRAY_GetpItem
000046 6800 LDR r0,[r0,#0]
000048 4405 ADD r5,r5,r0
00004a 9801 LDR r0,[sp,#4]
00004c 4285 CMP r5,r0
00004e db0c BLT |L29.106|
000050 455d CMP r5,r11
000052 dc0a BGT |L29.106|
000054 46a0 MOV r8,r4
000056 4554 CMP r4,r10
000058 da07 BGE |L29.106|
00005a 42af CMP r7,r5
00005c da05 BGE |L29.106|
00005e 1c61 ADDS r1,r4,#1
000060 9802 LDR r0,[sp,#8]
000062 f7fffffe BL GUI_ARRAY_GetpItem
000066 6800 LDR r0,[r0,#0]
000068 b110 CBZ r0,|L29.112|
|L29.106|
00006a 1c64 ADDS r4,r4,#1
|L29.108|
00006c 454c CMP r4,r9
00006e dbe6 BLT |L29.62|
|L29.112|
;;;215 int Hit = _GetItemIndex(hObj, pObj, x, y);
;;;216 /* set capture position () */
;;;217 if ((Pressed == 1) && (Hit >= 0) && (pObj->CapturePosX == -1)) {
000070 9910 LDR r1,[sp,#0x40]
000072 4640 MOV r0,r8
000074 2901 CMP r1,#1
000076 d107 BNE |L29.136|
000078 2800 CMP r0,#0
00007a db0b BLT |L29.148|
00007c 6b71 LDR r1,[r6,#0x34]
00007e 1c49 ADDS r1,r1,#1
000080 d104 BNE |L29.140|
;;;218 pObj->CapturePosX = x;
;;;219 pObj->CaptureItem = Hit;
000082 e9c6700d STRD r7,r0,[r6,#0x34]
000086 e001 B |L29.140|
|L29.136|
;;;220 }
;;;221 /* set mouse cursor and capture () */
;;;222 if (Hit >= 0) {
000088 2800 CMP r0,#0
00008a db03 BLT |L29.148|
|L29.140|
;;;223 WM_SetCapture(hObj, 1);
00008c 2101 MOVS r1,#1
00008e 9803 LDR r0,[sp,#0xc]
000090 f7fffffe BL WM_SetCapture
|L29.148|
;;;224 #if GUI_SUPPORT_CURSOR
;;;225 if (!_pOldCursor) {
;;;226 _pOldCursor = GUI_CURSOR_Select(_pDefaultCursor);
;;;227 }
;;;228 #endif
;;;229 }
;;;230 /* modify header */
;;;231 if ((pObj->CapturePosX >= 0) && (x != pObj->CapturePosX) && (Pressed == 1)) {
000094 6b70 LDR r0,[r6,#0x34]
000096 2800 CMP r0,#0
000098 db14 BLT |L29.196|
00009a 42b8 CMP r0,r7
00009c d012 BEQ |L29.196|
00009e 9810 LDR r0,[sp,#0x40]
0000a0 2801 CMP r0,#1
0000a2 d10f BNE |L29.196|
;;;232 int NewSize = HEADER_GetItemWidth(hObj, pObj->CaptureItem) + x - pObj->CapturePosX;
0000a4 6bb1 LDR r1,[r6,#0x38]
0000a6 9803 LDR r0,[sp,#0xc]
0000a8 f7fffffe BL HEADER_GetItemWidth
0000ac 6b71 LDR r1,[r6,#0x34]
0000ae 4438 ADD r0,r0,r7
0000b0 1a42 SUBS r2,r0,r1
;;;233 if (NewSize >= 0) {
0000b2 d404 BMI |L29.190|
;;;234 HEADER_SetItemWidth(hObj, pObj->CaptureItem, NewSize);
0000b4 6bb1 LDR r1,[r6,#0x38]
0000b6 9803 LDR r0,[sp,#0xc]
0000b8 f7fffffe BL HEADER_SetItemWidth
;;;235 pObj->CapturePosX = x;
0000bc 6377 STR r7,[r6,#0x34]
|L29.190|
;;;236 }
;;;237 }
;;;238 /* release capture & restore cursor */
;;;239 if (Pressed <= 0) {
;;;240 #if (GUI_SUPPORT_MOUSE)
;;;241 if (Hit == -1)
;;;242 #endif
;;;243 {
;;;244 _RestoreOldCursor();
;;;245 pObj->CapturePosX = -1;
;;;246 WM_ReleaseCapture();
;;;247 }
;;;248 }
;;;249 }
0000be b007 ADD sp,sp,#0x1c
0000c0 e8bd8ff0 POP {r4-r11,pc}
|L29.196|
0000c4 9810 LDR r0,[sp,#0x40] ;239
0000c6 2800 CMP r0,#0 ;239
0000c8 dcf9 BGT |L29.190|
0000ca f7fffffe BL _RestoreOldCursor
0000ce f04f30ff MOV r0,#0xffffffff ;245
0000d2 6370 STR r0,[r6,#0x34] ;246
0000d4 b007 ADD sp,sp,#0x1c ;246
0000d6 e8bd4ff0 POP {r4-r11,lr} ;246
0000da f7ffbffe B.W WM_ReleaseCapture
;;;250 #endif
ENDP
AREA ||i._Paint||, CODE, READONLY, ALIGN=2
_Paint PROC
;;;94 */
;;;95 static void _Paint(/*HEADER_Handle hObj, */HEADER_Obj* pObj) {
000000 e92d4ffe PUSH {r1-r11,lr}
000004 4606 MOV r6,r0
;;;96 GUI_RECT Rect;
;;;97 int i, xPos = -pObj->ScrollPos;
000006 6bc0 LDR r0,[r0,#0x3c]
000008 4245 RSBS r5,r0,#0
;;;98 int NumItems = GUI_ARRAY_GetNumItems(&pObj->Columns);
00000a f1060030 ADD r0,r6,#0x30
00000e 9002 STR r0,[sp,#8]
000010 f7fffffe BL GUI_ARRAY_GetNumItems
000014 4683 MOV r11,r0
;;;99 int EffectSize = pObj->Widget.pEffect->EffectSize;
000016 6a30 LDR r0,[r6,#0x20]
;;;100 LCD_SetBkColor(pObj->BkColor);
000018 f8d0a014 LDR r10,[r0,#0x14]
00001c 6ab0 LDR r0,[r6,#0x28]
00001e f7fffffe BL LCD_SetBkColor
;;;101 GUI_SetFont(pObj->pFont);
000022 6c30 LDR r0,[r6,#0x40]
000024 f7fffffe BL GUI_SetFont
;;;102 GUI_Clear();
000028 f7fffffe BL GUI_Clear
;;;103 for (i = 0; i < NumItems; i++) {
00002c 2000 MOVS r0,#0
00002e e082 B |L30.310|
|L30.48|
;;;104 HEADER_COLUMN * pColumn = (HEADER_COLUMN*)GUI_ARRAY_GetpItem(&pObj->Columns, i);
000030 4641 MOV r1,r8
000032 9802 LDR r0,[sp,#8]
000034 f7fffffe BL GUI_ARRAY_GetpItem
000038 4604 MOV r4,r0
;;;105 GUI_GetClientRect(&Rect);
00003a 4668 MOV r0,sp
00003c f7fffffe BL GUI_GetClientRect
;;;106 Rect.x0 = xPos;
000040 f8ad5000 STRH r5,[sp,#0]
;;;107 Rect.x1 = Rect.x0 + pColumn->Width;
000044 6820 LDR r0,[r4,#0]
000046 4428 ADD r0,r0,r5
000048 f8ad0004 STRH r0,[sp,#4]
;;;108 if (pColumn->hDrawObj) {
00004c f9b40006 LDRSH r0,[r4,#6]
000050 b3b8 CBZ r0,|L30.194|
;;;109 int xOff = 0, yOff = 0;
;;;110 switch (pColumn->Align & GUI_TA_HORIZONTAL) {
000052 88a1 LDRH r1,[r4,#4]
000054 2700 MOVS r7,#0 ;109
000056 f0010103 AND r1,r1,#3
00005a 46b9 MOV r9,r7 ;109
00005c 2901 CMP r1,#1
00005e d01f BEQ |L30.160|
000060 2902 CMP r1,#2
000062 d106 BNE |L30.114|
;;;111 case GUI_TA_RIGHT:
;;;112 xOff = (pColumn->Width - GUI_DRAW__GetXSize(pColumn->hDrawObj));
;;;113 break;
;;;114 case GUI_TA_HCENTER:
;;;115 xOff = (pColumn->Width - GUI_DRAW__GetXSize(pColumn->hDrawObj)) / 2;
000064 f7fffffe BL GUI_DRAW__GetXSize
000068 6821 LDR r1,[r4,#0]
00006a 1a08 SUBS r0,r1,r0
00006c eb0070d0 ADD r0,r0,r0,LSR #31
000070 1047 ASRS r7,r0,#1
|L30.114|
;;;116 break;
;;;117 }
;;;118 switch (pColumn->Align & GUI_TA_VERTICAL) {
000072 88a0 LDRH r0,[r4,#4]
000074 f000000c AND r0,r0,#0xc
000078 2804 CMP r0,#4
00007a d016 BEQ |L30.170|
00007c 280c CMP r0,#0xc
00007e d121 BNE |L30.196|
;;;119 case GUI_TA_BOTTOM:
;;;120 yOff = ((Rect.y1 - Rect.y0 + 1) - GUI_DRAW__GetYSize(pColumn->hDrawObj));
;;;121 break;
;;;122 case GUI_TA_VCENTER:
;;;123 yOff = ((Rect.y1 - Rect.y0 + 1) - GUI_DRAW__GetYSize(pColumn->hDrawObj)) / 2;
000080 f9b40006 LDRSH r0,[r4,#6]
000084 f7fffffe BL GUI_DRAW__GetYSize
000088 f9bd1006 LDRSH r1,[sp,#6]
00008c f9bd2002 LDRSH r2,[sp,#2]
000090 1a89 SUBS r1,r1,r2
000092 1a08 SUBS r0,r1,r0
000094 1c40 ADDS r0,r0,#1
000096 eb0070d0 ADD r0,r0,r0,LSR #31
00009a 1040 ASRS r0,r0,#1
|L30.156|
00009c 4681 MOV r9,r0 ;120
00009e e011 B |L30.196|
|L30.160|
0000a0 f7fffffe BL GUI_DRAW__GetXSize
0000a4 6821 LDR r1,[r4,#0] ;112
0000a6 1a0f SUBS r7,r1,r0 ;112
0000a8 e7e3 B |L30.114|
|L30.170|
0000aa f9b40006 LDRSH r0,[r4,#6] ;120
0000ae f7fffffe BL GUI_DRAW__GetYSize
0000b2 f9bd1006 LDRSH r1,[sp,#6] ;120
0000b6 f9bd2002 LDRSH r2,[sp,#2] ;120
0000ba 1a89 SUBS r1,r1,r2 ;120
0000bc 1a08 SUBS r0,r1,r0 ;120
0000be 1c40 ADDS r0,r0,#1 ;120
0000c0 e7ec B |L30.156|
|L30.194|
0000c2 e00b B |L30.220|
|L30.196|
;;;124 break;
;;;125 }
;;;126 WM_SetUserClipRect(&Rect);
0000c4 4668 MOV r0,sp
0000c6 f7fffffe BL WM_SetUserClipRect
;;;127 GUI_DRAW__Draw(pColumn->hDrawObj, xPos + xOff, yOff);
0000ca 19e9 ADDS r1,r5,r7
0000cc f9b40006 LDRSH r0,[r4,#6]
0000d0 464a MOV r2,r9
0000d2 f7fffffe BL GUI_DRAW__Draw
;;;128 WM_SetUserClipRect(NULL);
0000d6 2000 MOVS r0,#0
0000d8 f7fffffe BL WM_SetUserClipRect
|L30.220|
;;;129 }
;;;130 WIDGET__EFFECT_DrawUpRect(&pObj->Widget, &Rect);
0000dc 4669 MOV r1,sp
0000de 4630 MOV r0,r6
0000e0 f7fffffe BL WIDGET__EFFECT_DrawUpRect
;;;131 xPos += Rect.x1 - Rect.x0;
0000e4 f9bd0004 LDRSH r0,[sp,#4]
0000e8 f9bd1000 LDRSH r1,[sp,#0]
;;;132 Rect.x0 += EffectSize + _DefaultBorderH;
0000ec 4b1b LDR r3,|L30.348|
0000ee 1a42 SUBS r2,r0,r1 ;131
0000f0 68df LDR r7,[r3,#0xc] ; _DefaultBorderH
0000f2 4415 ADD r5,r5,r2 ;131
0000f4 eb0a0207 ADD r2,r10,r7
0000f8 4411 ADD r1,r1,r2
;;;133 Rect.x1 -= EffectSize + _DefaultBorderH;
0000fa 1a80 SUBS r0,r0,r2
0000fc f8ad1000 STRH r1,[sp,#0] ;132
000100 f8ad0004 STRH r0,[sp,#4]
;;;134 Rect.y0 += EffectSize + _DefaultBorderV;
000104 691a LDR r2,[r3,#0x10] ; _DefaultBorderV
000106 f8bd1002 LDRH r1,[sp,#2]
00010a eb0a0002 ADD r0,r10,r2
00010e 4401 ADD r1,r1,r0
000110 f8ad1002 STRH r1,[sp,#2]
;;;135 Rect.y1 -= EffectSize + _DefaultBorderV;
000114 f8bd1006 LDRH r1,[sp,#6]
000118 1a08 SUBS r0,r1,r0
00011a f8ad0006 STRH r0,[sp,#6]
;;;136 LCD_SetColor(pObj->TextColor);
00011e 6af0 LDR r0,[r6,#0x2c]
000120 f7fffffe BL LCD_SetColor
;;;137 GUI_DispStringInRect(pColumn->acText, &Rect, pColumn->Align);
000124 f9b42004 LDRSH r2,[r4,#4]
000128 4669 MOV r1,sp
00012a f1040008 ADD r0,r4,#8
00012e f7fffffe BL GUI_DispStringInRect
000132 f1080001 ADD r0,r8,#1 ;103
|L30.310|
000136 4680 MOV r8,r0 ;103
000138 4558 CMP r0,r11 ;103
00013a f6ffaf79 BLT |L30.48|
;;;138 }
;;;139 GUI_GetClientRect(&Rect);
00013e 4668 MOV r0,sp
000140 f7fffffe BL GUI_GetClientRect
;;;140 Rect.x0 = xPos;
;;;141 Rect.x1 = 0xfff;
000144 f64070ff MOV r0,#0xfff
000148 f8ad0004 STRH r0,[sp,#4]
00014c f8ad5000 STRH r5,[sp,#0] ;140
;;;142 WIDGET__EFFECT_DrawUpRect(&pObj->Widget, &Rect);
000150 4669 MOV r1,sp
000152 4630 MOV r0,r6
000154 f7fffffe BL WIDGET__EFFECT_DrawUpRect
;;;143 }
000158 e8bd8ffe POP {r1-r11,pc}
;;;144
ENDP
|L30.348|
DCD ||.data||
AREA ||i._RestoreOldCursor||, CODE, READONLY, ALIGN=2
_RestoreOldCursor PROC
;;;148 */
;;;149 static void _RestoreOldCursor(void) {
000000 4803 LDR r0,|L31.16|
;;;150 if (_pOldCursor) {
000002 6981 LDR r1,[r0,#0x18] ; _pOldCursor
000004 2900 CMP r1,#0
000006 d001 BEQ |L31.12|
;;;151 #if GUI_SUPPORT_CURSOR
;;;152 GUI_CURSOR_Select(_pOldCursor);
;;;153 #endif
;;;154 _pOldCursor = 0;
000008 2100 MOVS r1,#0
00000a 6181 STR r1,[r0,#0x18] ; _pOldCursor
|L31.12|
;;;155 }
;;;156 }
00000c 4770 BX lr
;;;157
ENDP
00000e 0000 DCW 0x0000
|L31.16|
DCD ||.data||
AREA ||.data||, DATA, ALIGN=2
_pDefaultCursor
DCD GUI_CursorHeaderM
_DefaultBkColor
DCD 0x00aaaaaa
_DefaultTextColor
DCD 0x00000000
_DefaultBorderH
DCD 0x00000002
_DefaultBorderV
DCD 0x00000000
_pDefaultFont
DCD GUI_Font13_1
_pOldCursor
DCD 0x00000000
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -