📄 guidev_16.txt
字号:
;;;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 b328 CBZ r0,|L7.126|
;;;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 e019 B |L7.126|
|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 b281 UXTH r1,r0
|L7.94|
;;;537 do {
;;;538 *pDest = *pDest ^ IndexMask;
00005e 8820 LDRH r0,[r4,#0]
;;;539 pDest++;
000060 4622 MOV r2,r4
000062 1ca4 ADDS r4,r4,#2
000064 ea800001 EOR r0,r0,r1 ;538
;;;540 } while (--RemPixels);
000068 1e6d SUBS r5,r5,#1
00006a 8010 STRH r0,[r2,#0] ;538
00006c d1f7 BNE |L7.94|
00006e e004 B |L7.122|
|L7.112|
;;;541 } else { /* Fill */
;;;542 #if BITSPERPIXEL == 8
;;;543 GUI_MEMSET(pData, LCD_COLORINDEX, Len);
;;;544 #elif BITSPERPIXEL == 16
;;;545 GUI__memset16(pData, LCD_COLORINDEX, Len);
000070 8841 LDRH r1,[r0,#2] ; GUI_Context
000072 464a MOV r2,r9
000074 4630 MOV r0,r6
000076 f7fffffe BL GUI__memset16
|L7.122|
;;;546 #else
;;;547 #error Unsupported
;;;548 #endif
;;;549 }
;;;550 pData = (PIXELINDEX*)((U8*)pData + BytesPerLine);
00007a 445e ADD r6,r6,r11
00007c 1c7f ADDS r7,r7,#1 ;529
|L7.126|
00007e 4557 CMP r7,r10 ;529
000080 dde3 BLE |L7.74|
;;;551 }
;;;552 }
000082 e8bd8ff8 POP {r3-r11,pc}
;;;553
ENDP
000086 0000 DCW 0x0000
|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 8800 LDRH 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 8005 STRH 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 480a LDR r0,|L10.48|
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 eb010144 ADD r1,r1,r4,LSL #1
00002a eba10040 SUB r0,r1,r0,LSL #1
;;;84 }
00002e bd70 POP {r4-r6,pc}
;;;85
ENDP
|L10.48|
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 8831 LDRH r1,[r6,#0]
000028 4041 EORS r1,r1,r0
00002a 8031 STRH 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__APIList16
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 0x00000010
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -