📄 guidev_writeex.txt
字号:
00003e f04f0c00 MOV r12,#0
000042 f04f35ff MOV r5,#0xffffffff ;97
;;;99 for (xi = 0; xi < xSize; xi++) {
000046 46e0 MOV r8,r12
000048 fb03fb02 MUL r11,r3,r2
00004c e051 B |L4.242|
|L4.78|
;;;100 xiMag += xMagAbs;
00004e 9902 LDR r1,[sp,#8]
000050 440e ADD r6,r6,r1
;;;101 if (xiMag >= 1000) {
000052 f5b67f7a CMP r6,#0x3e8
000056 db4a BLT |L4.238|
;;;102 if (x <= xMax) {
000058 9901 LDR r1,[sp,#4]
00005a 428c CMP r4,r1
00005c dc6a BGT |L4.308|
;;;103 xAct = (xMag > 0) ? xi : xSize - xi - 1;
00005e 9a11 LDR r2,[sp,#0x44]
000060 4641 MOV r1,r8
000062 2a00 CMP r2,#0
000064 dc03 BGT |L4.110|
000066 9910 LDR r1,[sp,#0x40]
000068 eba10108 SUB r1,r1,r8
00006c 1e49 SUBS r1,r1,#1
|L4.110|
;;;104 Index = _GetPixelIndex(pData, xOff + xAct, yOff, bpp, BytesPerLine);
00006e 9a05 LDR r2,[sp,#0x14]
000070 9b15 LDR r3,[sp,#0x54]
000072 4411 ADD r1,r1,r2
000074 9a13 LDR r2,[sp,#0x4c]
000076 2a08 CMP r2,#8
000078 465a MOV r2,r11
00007a d102 BNE |L4.130|
00007c 4419 ADD r1,r1,r3
00007e 5c51 LDRB r1,[r2,r1]
000080 e002 B |L4.136|
|L4.130|
000082 eb030141 ADD r1,r3,r1,LSL #1
000086 5a51 LDRH r1,[r2,r1]
|L4.136|
000088 fa1ffa81 UXTH r10,r1
;;;105 if ((Index != IndexPrev) || (xStart == -1)) {
00008c 4582 CMP r10,r0
;;;106 if ((xStart != -1) && (x > xMin)) {
00008e f1050101 ADD r1,r5,#1
000092 d101 BNE |L4.152|
000094 bb21 CBNZ r1,|L4.224|
000096 e01f B |L4.216|
|L4.152|
000098 b1f1 CBZ r1,|L4.216|
00009a 454c CMP r4,r9
00009c dd1c BLE |L4.216|
;;;107 /* Clear cache */
;;;108 if (xStart < xMin) {
00009e 454d CMP r5,r9
0000a0 da00 BGE |L4.164|
;;;109 xStart = xMin;
0000a2 464d MOV r5,r9
|L4.164|
;;;110 }
;;;111 LCD_SetColorIndex(IndexPrev);
0000a4 f7fffffe BL LCD_SetColorIndex
;;;112 if (Alpha == 256 || !GUI_Context.hDevData) {
0000a8 9812 LDR r0,[sp,#0x48]
0000aa f5b07f80 CMP r0,#0x100
0000ae d003 BEQ |L4.184|
0000b0 4828 LDR r0,|L4.340|
0000b2 f8b0004c LDRH r0,[r0,#0x4c] ; GUI_Context
0000b6 b940 CBNZ r0,|L4.202|
|L4.184|
;;;113 LCDDEV_L0_DrawHLine(x0 + xStart, y0, x0 + x - 1);
0000b8 4926 LDR r1,|L4.340|
0000ba 193a ADDS r2,r7,r4
0000bc 6c89 LDR r1,[r1,#0x48] ; GUI_Context
0000be 1e52 SUBS r2,r2,#1
0000c0 690b LDR r3,[r1,#0x10]
0000c2 1978 ADDS r0,r7,r5
0000c4 9904 LDR r1,[sp,#0x10]
0000c6 4798 BLX r3
0000c8 e006 B |L4.216|
|L4.202|
;;;114 } else {
;;;115 _DrawHLineAlpha(x0 + xStart, y0, x0 + x - 1, Alpha);
0000ca 193a ADDS r2,r7,r4
0000cc 1e52 SUBS r2,r2,#1
0000ce 1978 ADDS r0,r7,r5
0000d0 9b12 LDR r3,[sp,#0x48]
0000d2 9904 LDR r1,[sp,#0x10]
0000d4 f7fffffe BL _DrawHLineAlpha
|L4.216|
;;;116 }
;;;117 }
;;;118 IndexPrev = Index;
0000d8 4650 MOV r0,r10
;;;119 xStart = x;
0000da 4625 MOV r5,r4
;;;120 Cached = 1;
0000dc f04f0c01 MOV r12,#1
|L4.224|
0000e0 f44f717a MOV r1,#0x3e8 ;95
|L4.228|
;;;121 }
;;;122 do {
;;;123 x++;
0000e4 1c64 ADDS r4,r4,#1
;;;124 xiMag -= 1000;
0000e6 f5a6767a SUB r6,r6,#0x3e8
;;;125 } while (xiMag >= 1000);
0000ea 428e CMP r6,r1
0000ec dafa BGE |L4.228|
|L4.238|
0000ee f1080801 ADD r8,r8,#1 ;99
|L4.242|
0000f2 9a10 LDR r2,[sp,#0x40] ;99
0000f4 4590 CMP r8,r2 ;99
0000f6 dbaa BLT |L4.78|
|L4.248|
;;;126 } else {
;;;127 x = xMax + 1;
;;;128 break;
;;;129 }
;;;130 }
;;;131 }
;;;132 if (Cached && (x > xMin)) {
0000f8 f1bc0f00 CMP r12,#0
0000fc d026 BEQ |L4.332|
0000fe 454c CMP r4,r9
000100 dd24 BLE |L4.332|
;;;133 /* Clear cache */
;;;134 if (xStart < xMin) {
000102 454d CMP r5,r9
000104 da00 BGE |L4.264|
;;;135 xStart = xMin;
000106 464d MOV r5,r9
|L4.264|
;;;136 }
;;;137 LCD_SetColorIndex(Index);
000108 4650 MOV r0,r10
00010a f7fffffe BL LCD_SetColorIndex
;;;138 if (Alpha == 256 || !GUI_Context.hDevData) {
00010e 9812 LDR r0,[sp,#0x48]
000110 f5b07f80 CMP r0,#0x100
000114 d003 BEQ |L4.286|
000116 480f LDR r0,|L4.340|
000118 f8b0004c LDRH r0,[r0,#0x4c] ; GUI_Context
00011c b960 CBNZ r0,|L4.312|
|L4.286|
;;;139 LCDDEV_L0_DrawHLine(x0 + xStart, y0, x0 + x - 1);
00011e 490d LDR r1,|L4.340|
000120 193a ADDS r2,r7,r4
000122 6c89 LDR r1,[r1,#0x48] ; GUI_Context
000124 1e52 SUBS r2,r2,#1
000126 690b LDR r3,[r1,#0x10]
000128 9904 LDR r1,[sp,#0x10]
00012a 1978 ADDS r0,r7,r5
00012c b007 ADD sp,sp,#0x1c
00012e e8bd4ff0 POP {r4-r11,lr}
000132 4718 BX r3
|L4.308|
000134 1c4c ADDS r4,r1,#1 ;127
000136 e7df B |L4.248|
|L4.312|
;;;140 } else {
;;;141 _DrawHLineAlpha(x0 + xStart, y0, x0 + x - 1, Alpha);
000138 193a ADDS r2,r7,r4
00013a 1e52 SUBS r2,r2,#1
00013c 9b12 LDR r3,[sp,#0x48]
00013e 9904 LDR r1,[sp,#0x10]
000140 1978 ADDS r0,r7,r5
000142 b007 ADD sp,sp,#0x1c
000144 e8bd4ff0 POP {r4-r11,lr}
000148 f7ffbffe B.W _DrawHLineAlpha
|L4.332|
;;;142 }
;;;143 }
;;;144 }
00014c b007 ADD sp,sp,#0x1c
00014e e8bd8ff0 POP {r4-r11,pc}
;;;145
ENDP
000152 0000 DCW 0x0000
|L4.340|
DCD GUI_Context
AREA ||i._DrawHLineAlpha||, CODE, READONLY, ALIGN=2
_DrawHLineAlpha PROC
;;;53 */
;;;54 static void _DrawHLineAlpha(int x0, int y, int x1, int Intens) {
000000 e92d5ff0 PUSH {r4-r12,lr}
;;;55 GUI_MEMDEV* pDev = GUI_MEMDEV_H2P(GUI_Context.hDevData);
000004 4f26 LDR r7,|L5.160|
000006 4681 MOV r9,r0 ;54
000008 468a MOV r10,r1 ;54
00000a 4615 MOV r5,r2 ;54
00000c 469b MOV r11,r3 ;54
00000e f9b7004c LDRSH r0,[r7,#0x4c] ; GUI_Context
000012 f7fffffe BL GUI_ALLOC_h2p
;;;56 GUI_USAGE_h hUsage = pDev->hUsage;
000016 f9b06018 LDRSH r6,[r0,#0x18]
;;;57 LCD_COLOR Color1, Color2;
;;;58 int Len = x1 - x0 + 1;
00001a eba50509 SUB r5,r5,r9
00001e 4604 MOV r4,r0 ;55
000020 1c6d ADDS r5,r5,#1
;;;59 if (hUsage) {
000022 b16e CBZ r6,|L5.64|
;;;60 GUI_USAGE_AddHLine(GUI_USAGE_H2P(hUsage), x0, y, Len);
000024 4630 MOV r0,r6
000026 f7fffffe BL GUI_ALLOC_h2p
00002a 4680 MOV r8,r0
00002c 4630 MOV r0,r6
00002e f7fffffe BL GUI_ALLOC_h2p
000032 6880 LDR r0,[r0,#8]
000034 462b MOV r3,r5
000036 6846 LDR r6,[r0,#4]
000038 4652 MOV r2,r10
00003a 4649 MOV r1,r9
00003c 4640 MOV r0,r8
00003e 47b0 BLX r6
|L5.64|
;;;61 }
;;;62 Color1 = LCD_Index2Color(LCD_COLORINDEX);
000040 8878 LDRH r0,[r7,#2] ; GUI_Context
000042 f7fffffe BL LCD_Index2Color
000046 4606 MOV r6,r0
;;;63 if (pDev->BitsPerPixel == 8) {
000048 6920 LDR r0,[r4,#0x10]
;;;64 U8* pData;
;;;65 pData = (U8*) GUI_MEMDEV__XY2PTR(x0, y);
00004a 4651 MOV r1,r10
00004c 2808 CMP r0,#8 ;63
00004e 4648 MOV r0,r9
000050 d113 BNE |L5.122|
000052 f7fffffe BL GUI_MEMDEV__XY2PTR
000056 4604 MOV r4,r0
;;;66 while (Len--) {
000058 e00b B |L5.114|
|L5.90|
;;;67 Color2 = LCD_Index2Color(*(pData));
00005a 7820 LDRB r0,[r4,#0]
00005c f7fffffe BL LCD_Index2Color
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -