📄 guidev_8.txt
字号:
;;;586 GUI_USAGE_AddPixel(pUsage, x, y0);
;;;587 *pData = LCD_COLORINDEX;
;;;588 pData = (PIXELINDEX*)((U8*)pData + BytesPerLine); /* Same as "pData += pDev->BytesPerLine >> 1;", Just more efficient */
;;;589 } while (++y0 <= y1);
;;;590 } else {
;;;591 unsigned NumPixels;
;;;592 NumPixels = y1 - y0 + 1;
;;;593 do {
;;;594 *pData = LCD_COLORINDEX;
;;;595 pData = (PIXELINDEX*)((U8*)pData + BytesPerLine); /* Same as "pData += pDev->BytesPerLine >> 1;", Just more efficient */
;;;596 } while (--NumPixels);
;;;597 }
;;;598 }
;;;599 }
000064 e8bd8ffe POP {r1-r11,pc}
|L6.104|
000068 f1b90f00 CMP r9,#0 ;584
00006c d00f BEQ |L6.142|
00006e bf00 NOP ;586
|L6.112|
000070 f8db0008 LDR r0,[r11,#8] ;586
000074 462a MOV r2,r5 ;586
000076 6803 LDR r3,[r0,#0] ;586
000078 4658 MOV r0,r11 ;586
00007a 9900 LDR r1,[sp,#0] ;586
00007c 4798 BLX r3 ;586
00007e f8b80002 LDRH r0,[r8,#2] ;587 ; GUI_Context
000082 7020 STRB r0,[r4,#0] ;587
000084 1c6d ADDS r5,r5,#1 ;589
000086 443c ADD r4,r4,r7 ;588
000088 4555 CMP r5,r10 ;589
00008a ddf1 BLE |L6.112|
00008c e7ea B |L6.100|
|L6.142|
00008e ebaa0005 SUB r0,r10,r5 ;592
000092 1c40 ADDS r0,r0,#1 ;592
|L6.148|
000094 4622 MOV r2,r4 ;594
000096 f8b81002 LDRH r1,[r8,#2] ;594 ; GUI_Context
00009a 443c ADD r4,r4,r7 ;595
00009c 1e40 SUBS r0,r0,#1 ;596
00009e 7011 STRB r1,[r2,#0] ;594
0000a0 d1f8 BNE |L6.148|
0000a2 e7df B |L6.100|
;;;600
ENDP
|L6.164|
DCD GUI_Context
AREA ||i._FillRect||, CODE, READONLY, ALIGN=2
_FillRect PROC
;;;516 */
;;;517 static void _FillRect(int x0, int y0, int x1, int y1) {
000000 e92d4ff8 PUSH {r3-r11,lr}
000004 4604 MOV r4,r0
;;;518 unsigned BytesPerLine;
;;;519 int Len;
;;;520 GUI_MEMDEV* pDev = GUI_MEMDEV_H2P(GUI_Context.hDevData);
000006 4820 LDR r0,|L7.136|
000008 460f MOV r7,r1 ;517
00000a 4615 MOV r5,r2 ;517
00000c 469a MOV r10,r3 ;517
00000e f9b0004c LDRSH r0,[r0,#0x4c] ; GUI_Context
000012 f7fffffe BL GUI_ALLOC_h2p
000016 4680 MOV r8,r0
;;;521 PIXELINDEX* pData = _XY2PTR(x0, y0);
000018 4639 MOV r1,r7
00001a 4620 MOV r0,r4
00001c f7fffffe BL _XY2PTR
000020 4606 MOV r6,r0
;;;522 BytesPerLine = pDev->BytesPerLine;
;;;523 Len = x1 - x0 + 1;
000022 1b28 SUBS r0,r5,r4
000024 f1000901 ADD r9,r0,#1
;;;524 /* Mark rectangle as modified */
;;;525 if (pDev->hUsage) {
000028 f9b80018 LDRSH r0,[r8,#0x18]
00002c f8d8b00c LDR r11,[r8,#0xc]
000030 b330 CBZ r0,|L7.128|
;;;526 GUI_USAGE_AddRect(GUI_USAGE_H2P(pDev->hUsage), x0, y0, Len, y1 - y0 + 1);
000032 f7fffffe BL GUI_ALLOC_h2p
000036 ebaa0307 SUB r3,r10,r7
00003a 1c5b ADDS r3,r3,#1
00003c 9300 STR r3,[sp,#0]
00003e 464b MOV r3,r9
000040 463a MOV r2,r7
000042 4621 MOV r1,r4
000044 f7fffffe BL GUI_USAGE_AddRect
000048 e01a B |L7.128|
|L7.74|
;;;527 }
;;;528 /* Do the drawing */
;;;529 for (; y0 <= y1; y0++) {
;;;530 if (GUI_Context.DrawMode & LCD_DRAWMODE_XOR) {
00004a 480f LDR r0,|L7.136|
00004c 7b01 LDRB r1,[r0,#0xc] ; GUI_Context
00004e 07c9 LSLS r1,r1,#31
000050 d00e BEQ |L7.112|
;;;531 int RemPixels;
;;;532 PIXELINDEX* pDest;
;;;533 PIXELINDEX IndexMask;
;;;534 RemPixels = Len;
;;;535 pDest = pData;
;;;536 IndexMask = pDev->pfGetIndexMask();
000052 f8d80024 LDR r0,[r8,#0x24]
000056 464d MOV r5,r9 ;534
000058 4634 MOV r4,r6 ;535
00005a 4780 BLX r0
00005c b2c1 UXTB r1,r0
|L7.94|
;;;537 do {
;;;538 *pDest = *pDest ^ IndexMask;
00005e 7820 LDRB r0,[r4,#0]
;;;539 pDest++;
000060 4622 MOV r2,r4
000062 1c64 ADDS r4,r4,#1
000064 ea800001 EOR r0,r0,r1 ;538
;;;540 } while (--RemPixels);
000068 1e6d SUBS r5,r5,#1
00006a 7010 STRB r0,[r2,#0] ;538
00006c d1f7 BNE |L7.94|
00006e e005 B |L7.124|
|L7.112|
;;;541 } else { /* Fill */
;;;542 #if BITSPERPIXEL == 8
;;;543 GUI_MEMSET(pData, LCD_COLORINDEX, Len);
000070 8840 LDRH r0,[r0,#2] ; GUI_Context
000072 464a MOV r2,r9
000074 b2c1 UXTB r1,r0
000076 4630 MOV r0,r6
000078 f7fffffe BL GUI__memset
|L7.124|
;;;544 #elif BITSPERPIXEL == 16
;;;545 GUI__memset16(pData, LCD_COLORINDEX, Len);
;;;546 #else
;;;547 #error Unsupported
;;;548 #endif
;;;549 }
;;;550 pData = (PIXELINDEX*)((U8*)pData + BytesPerLine);
00007c 445e ADD r6,r6,r11
00007e 1c7f ADDS r7,r7,#1 ;529
|L7.128|
000080 4557 CMP r7,r10 ;529
000082 dde2 BLE |L7.74|
;;;551 }
;;;552 }
000084 e8bd8ff8 POP {r3-r11,pc}
;;;553
ENDP
|L7.136|
DCD GUI_Context
AREA ||i._GetPixelIndex||, CODE, READONLY, ALIGN=1
_GetPixelIndex PROC
;;;634 */
;;;635 static unsigned int _GetPixelIndex(int x, int y) {
000000 b510 PUSH {r4,lr}
;;;636 PIXELINDEX* pData = _XY2PTR(x, y);
000002 f7fffffe BL _XY2PTR
;;;637 return *pData;
000006 7800 LDRB r0,[r0,#0]
;;;638 }
000008 bd10 POP {r4,pc}
;;;639
ENDP
AREA ||i._SetPixelIndex||, CODE, READONLY, ALIGN=2
_SetPixelIndex PROC
;;;604 */
;;;605 static void _SetPixelIndex(int x, int y, int Index) {
000000 e92d41f0 PUSH {r4-r8,lr}
000004 4606 MOV r6,r0
;;;606 GUI_MEMDEV* pDev = GUI_MEMDEV_H2P(GUI_Context.hDevData);
000006 4810 LDR r0,|L9.72|
000008 460f MOV r7,r1 ;605
00000a 4615 MOV r5,r2 ;605
00000c f9b0004c LDRSH r0,[r0,#0x4c] ; GUI_Context
000010 f7fffffe BL GUI_ALLOC_h2p
;;;607 GUI_USAGE_h hUsage = pDev->hUsage;
000014 f9b04018 LDRSH r4,[r0,#0x18]
;;;608 PIXELINDEX* pData = _XY2PTR(x, y);
000018 4639 MOV r1,r7
00001a 4630 MOV r0,r6
00001c f7fffffe BL _XY2PTR
;;;609 *pData = Index;
000020 7005 STRB r5,[r0,#0]
;;;610 if (hUsage) {
000022 2c00 CMP r4,#0
000024 d00e BEQ |L9.68|
;;;611 GUI_USAGE_AddPixel(GUI_USAGE_H2P(hUsage), x, y);
000026 4620 MOV r0,r4
000028 f7fffffe BL GUI_ALLOC_h2p
00002c 4605 MOV r5,r0
00002e 4620 MOV r0,r4
000030 f7fffffe BL GUI_ALLOC_h2p
000034 6880 LDR r0,[r0,#8]
000036 463a MOV r2,r7
000038 6803 LDR r3,[r0,#0]
00003a 4631 MOV r1,r6
00003c 4628 MOV r0,r5
00003e e8bd41f0 POP {r4-r8,lr}
000042 4718 BX r3
|L9.68|
;;;612 }
;;;613 }
000044 e8bd81f0 POP {r4-r8,pc}
;;;614
ENDP
|L9.72|
DCD GUI_Context
AREA ||i._XY2PTR||, CODE, READONLY, ALIGN=2
_XY2PTR PROC
;;;73 */
;;;74 static PIXELINDEX* _XY2PTR(int x, int y) {
000000 b570 PUSH {r4-r6,lr}
000002 4604 MOV r4,r0
;;;75 GUI_MEMDEV* pDev = GUI_MEMDEV_H2P(GUI_Context.hDevData);
000004 4809 LDR r0,|L10.44|
000006 460d MOV r5,r1 ;74
000008 f9b0004c LDRSH r0,[r0,#0x4c] ; GUI_Context
00000c f7fffffe BL GUI_ALLOC_h2p
;;;76 U8 *pData = (U8*)(pDev + 1);
;;;77 #if GUI_DEBUG_LEVEL >= GUI_DEBUG_LEVEL_CHECK_ALL
;;;78 if ((x >= pDev->x0+pDev->XSize) | (x<pDev->x0) | (y >= pDev->y0+pDev->YSize) | (y<pDev->y0)) {
;;;79 GUI_DEBUG_ERROROUT2("_XY2PTR: parameters out of bounds",x,y);
;;;80 }
;;;81 #endif
;;;82 pData += (GUI_ALLOC_DATATYPE_U)(y - pDev->y0) * (GUI_ALLOC_DATATYPE_U)pDev->BytesPerLine;
000010 8842 LDRH r2,[r0,#2]
000012 68c3 LDR r3,[r0,#0xc]
000014 f100012c ADD r1,r0,#0x2c ;76
000018 1aaa SUBS r2,r5,r2
00001a b292 UXTH r2,r2
00001c b29b UXTH r3,r3
00001e fb021103 MLA r1,r2,r3,r1
;;;83 return ((PIXELINDEX*)pData) + x - pDev->x0;
000022 f9b00000 LDRSH r0,[r0,#0]
000026 4421 ADD r1,r1,r4
000028 1a08 SUBS r0,r1,r0
;;;84 }
00002a bd70 POP {r4-r6,pc}
;;;85
ENDP
|L10.44|
DCD GUI_Context
AREA ||i._XorPixel||, CODE, READONLY, ALIGN=2
_XorPixel PROC
;;;618 */
;;;619 static void _XorPixel(int x, int y) {
000000 e92d41f0 PUSH {r4-r8,lr}
000004 4607 MOV r7,r0
;;;620 PIXELINDEX IndexMask;
;;;621 GUI_MEMDEV* pDev = GUI_MEMDEV_H2P(GUI_Context.hDevData);
000006 4813 LDR r0,|L11.84|
000008 4688 MOV r8,r1 ;619
00000a f9b0004c LDRSH r0,[r0,#0x4c] ; GUI_Context
00000e f7fffffe BL GUI_ALLOC_h2p
000012 4604 MOV r4,r0
;;;622 GUI_USAGE_h hUsage = pDev->hUsage;
000014 f9b05018 LDRSH r5,[r0,#0x18]
;;;623 PIXELINDEX* pData = _XY2PTR(x, y);
000018 4641 MOV r1,r8
00001a 4638 MOV r0,r7
00001c f7fffffe BL _XY2PTR
000020 4606 MOV r6,r0
;;;624 IndexMask = pDev->pfGetIndexMask();
000022 6a60 LDR r0,[r4,#0x24]
000024 4780 BLX r0
;;;625 *pData = *pData ^ IndexMask;
000026 7831 LDRB r1,[r6,#0]
000028 4041 EORS r1,r1,r0
00002a 7031 STRB r1,[r6,#0]
;;;626 if (hUsage) {
00002c 2d00 CMP r5,#0
00002e d00e BEQ |L11.78|
;;;627 GUI_USAGE_AddPixel(GUI_USAGE_H2P(hUsage), x, y);
000030 4628 MOV r0,r5
000032 f7fffffe BL GUI_ALLOC_h2p
000036 4604 MOV r4,r0
000038 4628 MOV r0,r5
00003a f7fffffe BL GUI_ALLOC_h2p
00003e 6880 LDR r0,[r0,#8]
000040 4642 MOV r2,r8
000042 6803 LDR r3,[r0,#0]
000044 4639 MOV r1,r7
000046 4620 MOV r0,r4
000048 e8bd41f0 POP {r4-r8,lr}
00004c 4718 BX r3
|L11.78|
;;;628 }
;;;629 }
00004e e8bd81f0 POP {r4-r8,pc}
;;;630
ENDP
000052 0000 DCW 0x0000
|L11.84|
DCD GUI_Context
AREA ||.constdata||, DATA, READONLY, ALIGN=1
aID
000000 00000001 DCW 0x0000,0x0001
000004 00020003 DCW 0x0002,0x0003
000008 00040005 DCW 0x0004,0x0005
00000c 00060007 DCW 0x0006,0x0007
000010 00080009 DCW 0x0008,0x0009
000014 000a000b DCW 0x000a,0x000b
000018 000c000d DCW 0x000c,0x000d
00001c 000e000f DCW 0x000e,0x000f
AREA ||area_number.15||, DATA, READONLY, ALIGN=2
EXPORTAS ||area_number.15||, ||.constdata||
GUI_MEMDEV__APIList8
DCD GUI_MEMDEV__Color2Index
DCD GUI_MEMDEV__Index2Color
DCD GUI_MEMDEV__GetIndexMask
DCD _DrawBitmap
DCD _DrawHLine
DCD _DrawVLine
DCD _FillRect
DCD _GetPixelIndex
DCD GUI_MEMDEV__GetRect
DCD _SetPixelIndex
DCD _XorPixel
DCD 0x00000000
DCD 0x00000000
DCD 0x00000000
DCD 0x00000000
DCD 0x00000008
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -