📄 guidev_1.txt
字号:
0000e6 6a43 LDR r3,[r0,#0x24] ;389
0000e8 4628 MOV r0,r5 ;389
0000ea 4798 BLX r3 ;389
|L4.236|
0000ec 1c6d ADDS r5,r5,#1 ;389
0000ee 1c64 ADDS r4,r4,#1 ;389
0000f0 1e7f SUBS r7,r7,#1 ;389
0000f2 d1f4 BNE |L4.222|
|L4.244|
;;;391 } else {
;;;392 _DrawBitLine8BPP_DDB(pUsage, x0, i + y0, pData, xsize, pDev, pDest);
;;;393 }
;;;394 pData += BytesPerLine;
0000f4 9915 LDR r1,[sp,#0x54]
0000f6 f1090001 ADD r0,r9,#1 ;388
0000fa 4488 ADD r8,r8,r1
|L4.252|
0000fc 4681 MOV r9,r0 ;388
0000fe 4601 MOV r1,r0 ;388
000100 980a LDR r0,[sp,#0x28] ;388
000102 4281 CMP r1,r0 ;388
000104 dbb0 BLT |L4.104|
|L4.262|
;;;395 pDest = (PIXELINDEX*)((U8*)pDest + BytesPerLineDest);
;;;396 }
;;;397 return;
;;;398 }
;;;399 /* Use aID for bitmaps without palette */
;;;400 if (!pTrans) {
;;;401 pTrans = aID;
;;;402 }
;;;403 for (i = 0; i < ysize; i++) {
;;;404 switch (BitsPerPixel) {
;;;405 case 1:
;;;406 _DrawBitLine1BPP(pUsage, x0, i + y0, pData, Diff, xsize, pTrans, pDev, pDest);
;;;407 break;
;;;408 case 2:
;;;409 _DrawBitLine2BPP(pUsage, x0, i + y0, pData, Diff, xsize, pTrans, pDev, pDest);
;;;410 break;
;;;411 case 4:
;;;412 _DrawBitLine4BPP(pUsage, x0, i + y0, pData, Diff, xsize, pTrans, pDev, pDest);
;;;413 break;
;;;414 }
;;;415 pData += BytesPerLine;
;;;416 pDest = (PIXELINDEX*)((U8*)pDest + BytesPerLineDest);
;;;417 }
;;;418 }
000106 b00b ADD sp,sp,#0x2c
000108 e8bd8ff0 POP {r4-r11,pc}
|L4.268|
00010c f1ba0f00 CMP r10,#0 ;400
000110 d101 BNE |L4.278|
000112 f8dfa080 LDR r10,|L4.404|
|L4.278|
000116 2400 MOVS r4,#0 ;403
000118 e017 B |L4.330|
|L4.282|
00011a 2d01 CMP r5,#1 ;404
00011c d019 BEQ |L4.338|
00011e 2d02 CMP r5,#2 ;404
000120 d026 BEQ |L4.368|
000122 2d04 CMP r5,#4 ;404
000124 d10d BNE |L4.322|
000126 e9cda602 STRD r10,r6,[sp,#8] ;412
00012a 9809 LDR r0,[sp,#0x24] ;412
00012c 9001 STR r0,[sp,#4] ;412
00012e 9b17 LDR r3,[sp,#0x5c] ;412
000130 e9dd0106 LDRD r0,r1,[sp,#0x18] ;412
000134 9300 STR r3,[sp,#0] ;412
000136 9704 STR r7,[sp,#0x10] ;412
000138 eb04020b ADD r2,r4,r11 ;412
00013c 4643 MOV r3,r8 ;412
00013e f7fffffe BL _DrawBitLine4BPP
|L4.322|
000142 9915 LDR r1,[sp,#0x54] ;415
000144 444f ADD r7,r7,r9 ;416
000146 4488 ADD r8,r8,r1 ;415
000148 1c64 ADDS r4,r4,#1 ;403
|L4.330|
00014a 980a LDR r0,[sp,#0x28] ;403
00014c 4284 CMP r4,r0 ;403
00014e dbe4 BLT |L4.282|
000150 e7d9 B |L4.262|
|L4.338|
000152 e9cda602 STRD r10,r6,[sp,#8] ;406
000156 9809 LDR r0,[sp,#0x24] ;406
000158 9001 STR r0,[sp,#4] ;406
00015a 9b17 LDR r3,[sp,#0x5c] ;406
00015c e9dd0106 LDRD r0,r1,[sp,#0x18] ;406
000160 9300 STR r3,[sp,#0] ;406
000162 9704 STR r7,[sp,#0x10] ;406
000164 eb04020b ADD r2,r4,r11 ;406
000168 4643 MOV r3,r8 ;406
00016a f7fffffe BL _DrawBitLine1BPP
00016e e7e8 B |L4.322|
|L4.368|
000170 e9cda602 STRD r10,r6,[sp,#8] ;409
000174 9809 LDR r0,[sp,#0x24] ;409
000176 9001 STR r0,[sp,#4] ;409
000178 9b17 LDR r3,[sp,#0x5c] ;409
00017a e9dd0106 LDRD r0,r1,[sp,#0x18] ;409
00017e 9300 STR r3,[sp,#0] ;409
000180 9704 STR r7,[sp,#0x10] ;409
000182 eb04020b ADD r2,r4,r11 ;409
000186 4643 MOV r3,r8 ;409
000188 f7fffffe BL _DrawBitLine2BPP
00018c e7d9 B |L4.322|
;;;419
ENDP
00018e 0000 DCW 0x0000
|L4.400|
DCD GUI_Context
|L4.404|
DCD ||.constdata||
AREA ||i._DrawHLine||, CODE, READONLY, ALIGN=1
_DrawHLine PROC
;;;490 */
;;;491 static void _DrawHLine(int x0, int y, int x1) {
000000 460b MOV r3,r1
;;;492 _FillRect(x0, y, x1, y);
000002 f7ffbffe B.W _FillRect
;;;493 }
;;;494
ENDP
AREA ||i._DrawVLine||, CODE, READONLY, ALIGN=2
_DrawVLine PROC
;;;498 */
;;;499 static void _DrawVLine(int x , int y0, int y1) {
000000 e92d4ff8 PUSH {r3-r11,lr}
;;;500 GUI_MEMDEV* pDev = GUI_MEMDEV_H2P(GUI_Context.hDevData);
000004 f8dfa090 LDR r10,|L6.152|
000008 4683 MOV r11,r0 ;499
00000a 460e MOV r6,r1 ;499
00000c 4691 MOV r9,r2 ;499
00000e f9ba004c LDRSH r0,[r10,#0x4c] ; GUI_Context
000012 f7fffffe BL GUI_ALLOC_h2p
000016 4607 MOV r7,r0
;;;501 GUI_USAGE_h hUsage = pDev->hUsage;
000018 f9b00018 LDRSH r0,[r0,#0x18]
;;;502 GUI_USAGE* pUsage = hUsage ? GUI_USAGE_H2P(hUsage) : NULL;
00001c b108 CBZ r0,|L6.34|
00001e f7fffffe BL GUI_ALLOC_h2p
|L6.34|
000022 4605 MOV r5,r0
;;;503 U8* pData;
;;;504 int Bit, Mask;
;;;505 pData = _XY2PTR_BITOFFSET(x, y0, &Bit);
000024 466a MOV r2,sp
000026 4631 MOV r1,r6
000028 4658 MOV r0,r11
00002a f7fffffe BL _XY2PTR_BITOFFSET
00002e 4604 MOV r4,r0
;;;506 Mask = (1 << Bit);
000030 9800 LDR r0,[sp,#0]
000032 2101 MOVS r1,#1
000034 fa01f800 LSL r8,r1,r0
;;;507 if (GUI_Context.DrawMode & LCD_DRAWMODE_XOR) {
000038 f89a200c LDRB r2,[r10,#0xc] ; GUI_Context
00003c 4651 MOV r1,r10
00003e 07d2 LSLS r2,r2,#31
000040 d011 BEQ |L6.102|
|L6.66|
;;;508 do {
;;;509 *pData ^= Mask;
000042 7820 LDRB r0,[r4,#0]
000044 ea800008 EOR r0,r0,r8
000048 7020 STRB r0,[r4,#0]
;;;510 if (pUsage) {
00004a b12d CBZ r5,|L6.88|
;;;511 GUI_USAGE_AddPixel(pUsage, x, y0);
00004c 68a8 LDR r0,[r5,#8]
00004e 4632 MOV r2,r6
000050 6803 LDR r3,[r0,#0]
000052 4659 MOV r1,r11
000054 4628 MOV r0,r5
000056 4798 BLX r3
|L6.88|
;;;512 }
;;;513 pData += pDev->BytesPerLine;
;;;514 } while (++y0 <= y1);
000058 68f8 LDR r0,[r7,#0xc]
00005a 1c76 ADDS r6,r6,#1
00005c 454e CMP r6,r9
00005e 4404 ADD r4,r4,r0 ;513
000060 ddef BLE |L6.66|
|L6.98|
;;;515 } else {
;;;516 int Pixel;
;;;517 Pixel = (LCD_COLORINDEX & 1) << Bit;
;;;518 do {
;;;519 *pData &= ~Mask;
;;;520 *pData |= Pixel;
;;;521 if (pUsage) {
;;;522 GUI_USAGE_AddPixel(pUsage, x, y0);
;;;523 }
;;;524 pData += pDev->BytesPerLine;
;;;525 } while (++y0 <= y1);
;;;526 }
;;;527 }
000062 e8bd8ff8 POP {r3-r11,pc}
|L6.102|
000066 8849 LDRH r1,[r1,#2] ;517 ; GUI_Context
000068 f0010101 AND r1,r1,#1 ;517
00006c fa01fa00 LSL r10,r1,r0 ;517
|L6.112|
000070 7820 LDRB r0,[r4,#0] ;519
000072 ea200008 BIC r0,r0,r8 ;519
000076 b2c0 UXTB r0,r0 ;520
000078 ea40000a ORR r0,r0,r10 ;520
00007c 7020 STRB r0,[r4,#0] ;520
00007e b12d CBZ r5,|L6.140|
000080 68a8 LDR r0,[r5,#8] ;522
000082 4632 MOV r2,r6 ;522
000084 6803 LDR r3,[r0,#0] ;522
000086 4659 MOV r1,r11 ;522
000088 4628 MOV r0,r5 ;522
00008a 4798 BLX r3 ;522
|L6.140|
00008c 68f8 LDR r0,[r7,#0xc] ;525
00008e 1c76 ADDS r6,r6,#1 ;525
000090 454e CMP r6,r9 ;525
000092 4404 ADD r4,r4,r0 ;524
000094 ddec BLE |L6.112|
000096 e7e4 B |L6.98|
;;;528
ENDP
|L6.152|
DCD GUI_Context
AREA ||i._FillRect||, CODE, READONLY, ALIGN=2
_FillRect PROC
;;;423 */
;;;424 static void _FillRect(int x0, int y0, int x1, int y1) {
000000 e92d4fff PUSH {r0-r11,lr}
;;;425 GUI_MEMDEV* pDev = GUI_MEMDEV_H2P(GUI_Context.hDevData);
000004 484d LDR r0,|L7.316|
000006 b083 SUB sp,sp,#0xc ;424
000008 4688 MOV r8,r1 ;424
00000a 4614 MOV r4,r2 ;424
00000c 469b MOV r11,r3 ;424
00000e f9b0004c LDRSH r0,[r0,#0x4c] ; GUI_Context
000012 f7fffffe BL GUI_ALLOC_h2p
;;;426 U8* pData;
;;;427 int Bit, Len;
;;;428 int RemPixels;
;;;429 Len = x1 - x0 + 1;
000016 9903 LDR r1,[sp,#0xc]
;;;430 /* Mark rectangle as modified */
;;;431 if (pDev->hUsage) {
000018 f9b00018 LDRSH r0,[r0,#0x18]
00001c 1a61 SUBS r1,r4,r1 ;429
00001e f1010a01 ADD r10,r1,#1 ;429
;;;432 GUI_USAGE_AddRect(GUI_USAGE_H2P(pDev->hUsage), x0, y0, Len, y1 - y0 + 1);
;;;433 }
;;;434 /* Do the drawing */
;;;435 for (; y0 <= y1; y0++) {
;;;436 pData = _XY2PTR_BITOFFSET(x0, y0, &Bit);
;;;437 RemPixels = Len;
;;;438 if (GUI_Context.DrawMode & LCD_DRAWMODE_XOR) {
;;;439 if (Bit < 7) {
;;;440 while ((Bit >= 0) && RemPixels--) {
;;;441 *pData ^= 1 << (Bit--);
000022 f04f0901 MOV r9,#1
000026 2800 CMP r0,#0 ;431
000028 d00a BEQ |L7.64|
00002a f7fffffe BL GUI_ALLOC_h2p
00002e ebab0308 SUB r3,r11,r8 ;432
000032 1c5b ADDS r3,r3,#1 ;432
000034 9300 STR r3,[sp,#0] ;432
000036 4653 MOV r3,r10 ;432
000038 4642 MOV r2,r8 ;432
00003a 9903 LDR r1,[sp,#0xc] ;432
00003c f7fffffe BL GUI_USAGE_AddRect
|L7.64|
000040 e077 B |L7.306|
|L7.66|
000042 aa02 ADD r2,sp,#8 ;436
000044 4641 MOV r1,r8 ;436
000046 9803 LDR r0,[sp,#0xc] ;436
000048 f7fffffe BL _XY2PTR_BITOFFSET
00004c 4604 MOV r4,r0 ;436
00004e 483b LDR r0,|L7.316|
000050 4655 MOV r5,r10 ;437
000052 7b01 LDRB r1,[r0,#0xc] ;438 ; GUI_Context
000054 07c9 LSLS r1,r1,#31 ;438
000056 d02c BEQ |L7.178|
000058 9802 LDR r0,[sp,#8] ;439
00005a 2807 CMP r0,#7 ;439
00005c da0e BGE |L7.124|
00005e 4649 MOV r1,r9
000060 e006 B |L7.112|
|L7.98|
000062 7822 LDRB r2,[r4,#0]
000064 fa01f300 LSL r3,r1,r0
000068 405a EORS r2,r2,r3
00006a 1e40 SUBS r0,r0,#1
00006c 9002 STR r0,[sp,#8]
00006e 7022 STRB r2,[r4,#0]
|L7.112|
000070 9802 LDR r0,[sp,#8] ;440
000072 2800 CMP r0,#0 ;440
000074 db01 BLT |L7.122|
000076 1e6d SUBS r5,r5,#1 ;440
000078 d2f3 BCS |L7.98|
|L7.122|
;;;442 }
;;;443 pData++;
00007a 1c64 ADDS r4,r4,#1
|L7.124|
;;;444 }
;;;445 if (RemPixels > 0) {
00007c 2d00 CMP r5,#0
00007e dd56 BLE |L7.302|
;;;446 int NumBytes = RemPixels >> 3;
000080 10e8 ASRS r0,r5,#3
;;;447 if (NumBytes > 0) {
000082 2800 CMP r0,#0
000084 dd06 BLE |L7.148|
;;;448 RemPixels -= NumBytes << 3;
000086 eba505c0 SUB r5,r5,r0,LSL #3
00008a 2100 MOVS r1,#0 ;431
|L7.140|
;;;449 do {
;;;450 *pData ^= *pData;
00008c f8041b01 STRB r1,[r4],#1
;;;451 pData++;
;;;452 } while (--NumBytes);
000090 1e40 SUBS r0,r0,#1
000092 d1fb BNE |L7.140|
|L7.148|
;;;453 }
;;;454 Bit = 7;
000094 2007 MOVS r0,#7
000096 4649 MOV r1,r9 ;441
;;;455 while (RemPixels--) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -