⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 guidev_8.txt

📁 STM32F103ZET6+UCOSII+UCGUI源码
💻 TXT
📖 第 1 页 / 共 4 页
字号:
00014e  e7e9              B        |L3.292|
;;;374    
                          ENDP

                  |L3.336|
                          DCD      GUI_Context

                          AREA ||i._DrawBitmap||, CODE, READONLY, ALIGN=2

                  _DrawBitmap PROC
;;;449    */
;;;450    static void _DrawBitmap(int x0, int y0, int xsize, int ysize,
000000  e92d4fff          PUSH     {r0-r11,lr}
;;;451                            int BitsPerPixel, int BytesPerLine,
;;;452                            const U8 GUI_UNI_PTR * pData, int Diff, const LCD_PIXELINDEX* pTrans)
;;;453    {
000004  b087              SUB      sp,sp,#0x1c
000006  4604              MOV      r4,r0
;;;454      int i;
;;;455      GUI_MEMDEV* pDev   = GUI_MEMDEV_H2P(GUI_Context.hDevData);
000008  4861              LDR      r0,|L4.400|
00000a  e9dd7b17          LDRD     r7,r11,[sp,#0x5c]
00000e  f9b0004c          LDRSH    r0,[r0,#0x4c]  ; GUI_Context
000012  f8dd9058          LDR      r9,[sp,#0x58]
000016  9d14              LDR      r5,[sp,#0x50]
000018  f7fffffe          BL       GUI_ALLOC_h2p
00001c  4682              MOV      r10,r0
;;;456      GUI_USAGE*  pUsage = (pDev->hUsage) ? GUI_USAGE_H2P(pDev->hUsage) : 0;
00001e  f9b00018          LDRSH    r0,[r0,#0x18]
000022  b108              CBZ      r0,|L4.40|
000024  f7fffffe          BL       GUI_ALLOC_h2p
                  |L4.40|
000028  0006              MOVS     r6,r0
;;;457      unsigned    BytesPerLineDest;
;;;458      PIXELINDEX* pDest;
;;;459      BytesPerLineDest = pDev->BytesPerLine;
;;;460      x0 += Diff;
00002a  eb040007          ADD      r0,r4,r7
00002e  f8da100c          LDR      r1,[r10,#0xc]
;;;461      /* Mark all affected pixels dirty unless transparency is set */
;;;462      if (pUsage) {
000032  e9cd1006          STRD     r1,r0,[sp,#0x18]
000036  d00a              BEQ      |L4.78|
;;;463        if ((GUI_Context.DrawMode & LCD_DRAWMODE_TRANS) == 0) {
000038  4855              LDR      r0,|L4.400|
00003a  7b00              LDRB     r0,[r0,#0xc]  ; GUI_Context
00003c  0780              LSLS     r0,r0,#30
00003e  d406              BMI      |L4.78|
;;;464          GUI_USAGE_AddRect(pUsage, x0, y0 , xsize, ysize);
000040  9b0a              LDR      r3,[sp,#0x28]
000042  9300              STR      r3,[sp,#0]
000044  a907              ADD      r1,sp,#0x1c
000046  c90e              LDM      r1,{r1-r3}
000048  4630              MOV      r0,r6
00004a  f7fffffe          BL       GUI_USAGE_AddRect
                  |L4.78|
;;;465        }
;;;466      }
;;;467      pDest = _XY2PTR(x0, y0);
00004e  e9dd0107          LDRD     r0,r1,[sp,#0x1c]
000052  f7fffffe          BL       _XY2PTR
000056  4680              MOV      r8,r0
;;;468    #if BITSPERPIXEL == 16
;;;469      /* handle 16 bpp bitmaps in high color modes, but only without palette */
;;;470      if (BitsPerPixel == 16) {
;;;471        for (i = 0; i < ysize; i++) {
;;;472          _DrawBitLine16BPP_DDB(pUsage, x0, i + y0, (const U16*)pData, xsize, pDest);
;;;473          pData += BytesPerLine;
;;;474          pDest = (PIXELINDEX*)((U8*)pDest + BytesPerLineDest); 
;;;475        }
;;;476        return;
;;;477      }
;;;478    #endif
;;;479      /* Handle 8 bpp bitmaps seperately as we have different routine bitmaps with or without palette */
;;;480      if (BitsPerPixel == 8) {
000058  2d08              CMP      r5,#8
00005a  d15b              BNE      |L4.276|
;;;481        for (i = 0; i < ysize; i++) {
00005c  2000              MOVS     r0,#0
00005e  e052              B        |L4.262|
                  |L4.96|
;;;482          if (pTrans) {
;;;483            _DrawBitLine8BPP(pUsage, x0, i + y0, pData, xsize, pTrans, pDest);
000060  9807              LDR      r0,[sp,#0x1c]
000062  9908              LDR      r1,[sp,#0x20]
000064  9004              STR      r0,[sp,#0x10]
000066  eb0a0001          ADD      r0,r10,r1
00006a  9005              STR      r0,[sp,#0x14]
00006c  4848              LDR      r0,|L4.400|
00006e  9f09              LDR      r7,[sp,#0x24]         ;482
000070  7b00              LDRB     r0,[r0,#0xc]          ;482  ; GUI_Context
000072  f1bb0f00          CMP      r11,#0                ;482
000076  464c              MOV      r4,r9
000078  4645              MOV      r5,r8
00007a  f0000003          AND      r0,r0,#3
00007e  d021              BEQ      |L4.196|
000080  b110              CBZ      r0,|L4.136|
000082  2802              CMP      r0,#2                 ;482
000084  d139              BNE      |L4.250|
000086  e009              B        |L4.156|
                  |L4.136|
000088  f8141b01          LDRB     r1,[r4],#1            ;482
00008c  4628              MOV      r0,r5                 ;482
00008e  1c6d              ADDS     r5,r5,#1              ;482
000090  f83b1011          LDRH     r1,[r11,r1,LSL #1]    ;482
000094  7001              STRB     r1,[r0,#0]            ;482
000096  1e7f              SUBS     r7,r7,#1              ;482
000098  d1f6              BNE      |L4.136|
00009a  e02e              B        |L4.250|
                  |L4.156|
00009c  7820              LDRB     r0,[r4,#0]            ;482
00009e  b148              CBZ      r0,|L4.180|
0000a0  f83b0010          LDRH     r0,[r11,r0,LSL #1]    ;482
0000a4  7028              STRB     r0,[r5,#0]            ;482
0000a6  b12e              CBZ      r6,|L4.180|
0000a8  68b0              LDR      r0,[r6,#8]            ;482
0000aa  e9dd1204          LDRD     r1,r2,[sp,#0x10]      ;482
0000ae  6803              LDR      r3,[r0,#0]            ;482
0000b0  4630              MOV      r0,r6                 ;482
0000b2  4798              BLX      r3                    ;482
                  |L4.180|
0000b4  9804              LDR      r0,[sp,#0x10]         ;482
0000b6  1c6d              ADDS     r5,r5,#1              ;482
0000b8  1c40              ADDS     r0,r0,#1              ;482
0000ba  1c64              ADDS     r4,r4,#1              ;482
0000bc  9004              STR      r0,[sp,#0x10]         ;482
0000be  1e7f              SUBS     r7,r7,#1              ;482
0000c0  d1ec              BNE      |L4.156|
0000c2  e01a              B        |L4.250|
                  |L4.196|
0000c4  b110              CBZ      r0,|L4.204|
0000c6  2802              CMP      r0,#2                 ;482
0000c8  d117              BNE      |L4.250|
0000ca  e005              B        |L4.216|
                  |L4.204|
0000cc  463a              MOV      r2,r7                 ;482
0000ce  4621              MOV      r1,r4                 ;482
0000d0  4628              MOV      r0,r5                 ;482
0000d2  f7fffffe          BL       __aeabi_memcpy
0000d6  e010              B        |L4.250|
                  |L4.216|
0000d8  7820              LDRB     r0,[r4,#0]            ;482
0000da  b138              CBZ      r0,|L4.236|
0000dc  7028              STRB     r0,[r5,#0]            ;482
0000de  b12e              CBZ      r6,|L4.236|
0000e0  68b0              LDR      r0,[r6,#8]            ;482
0000e2  e9dd1204          LDRD     r1,r2,[sp,#0x10]      ;482
0000e6  6803              LDR      r3,[r0,#0]            ;482
0000e8  4630              MOV      r0,r6                 ;482
0000ea  4798              BLX      r3                    ;482
                  |L4.236|
0000ec  9804              LDR      r0,[sp,#0x10]         ;482
0000ee  1c6d              ADDS     r5,r5,#1              ;482
0000f0  1c40              ADDS     r0,r0,#1              ;482
0000f2  1c64              ADDS     r4,r4,#1              ;482
0000f4  9004              STR      r0,[sp,#0x10]         ;482
0000f6  1e7f              SUBS     r7,r7,#1              ;482
0000f8  d1ee              BNE      |L4.216|
                  |L4.250|
;;;484          } else {
;;;485            _DrawBitLine8BPP_DDB(pUsage, x0, i + y0, pData, xsize, pDest);
;;;486          }
;;;487          pData += BytesPerLine;
0000fa  9915              LDR      r1,[sp,#0x54]
0000fc  f10a0001          ADD      r0,r10,#1             ;481
000100  4489              ADD      r9,r9,r1
;;;488          pDest = (PIXELINDEX*)((U8*)pDest + BytesPerLineDest); 
000102  9906              LDR      r1,[sp,#0x18]
000104  4488              ADD      r8,r8,r1
                  |L4.262|
000106  990a              LDR      r1,[sp,#0x28]         ;481
000108  4682              MOV      r10,r0                ;481
00010a  4288              CMP      r0,r1                 ;481
00010c  dba8              BLT      |L4.96|
                  |L4.270|
;;;489        }
;;;490        return;
;;;491      }
;;;492      /* Use aID for bitmaps without palette */
;;;493      if (!pTrans) {
;;;494        pTrans = aID;
;;;495      }
;;;496      for (i = 0; i < ysize; i++) {
;;;497        switch (BitsPerPixel) {
;;;498        case 1:
;;;499          _DrawBitLine1BPP(pUsage, x0, i + y0, pData, Diff, xsize, pTrans, pDev, pDest);
;;;500          break;
;;;501        case 2:
;;;502          _DrawBitLine2BPP(pUsage, x0, i + y0, pData, Diff, xsize, pTrans, pDest);
;;;503          break;
;;;504        case 4:
;;;505          _DrawBitLine4BPP(pUsage, x0, i + y0, pData, Diff, xsize, pTrans, pDest);
;;;506          break;
;;;507        }
;;;508        pData += BytesPerLine;
;;;509        pDest = (PIXELINDEX*)((U8*)pDest + BytesPerLineDest); 
;;;510      }
;;;511    }
00010e  b00b              ADD      sp,sp,#0x2c
000110  e8bd8ff0          POP      {r4-r11,pc}
                  |L4.276|
000114  f1bb0f00          CMP      r11,#0                ;493
000118  d101              BNE      |L4.286|
00011a  f8dfb078          LDR      r11,|L4.404|
                  |L4.286|
00011e  2400              MOVS     r4,#0                 ;496
000120  e016              B        |L4.336|
                  |L4.290|
000122  2d01              CMP      r5,#1                 ;497
000124  d018              BEQ      |L4.344|
000126  2d02              CMP      r5,#2                 ;497
000128  d025              BEQ      |L4.374|
00012a  2d04              CMP      r5,#4                 ;497
00012c  d10b              BNE      |L4.326|
00012e  e9cdb802          STRD     r11,r8,[sp,#8]        ;505
000132  9909              LDR      r1,[sp,#0x24]         ;505
000134  9808              LDR      r0,[sp,#0x20]         ;505
000136  e9cd7100          STRD     r7,r1,[sp,#0]         ;505
00013a  1822              ADDS     r2,r4,r0              ;505
00013c  464b              MOV      r3,r9                 ;505
00013e  4630              MOV      r0,r6                 ;505
000140  9907              LDR      r1,[sp,#0x1c]         ;505
000142  f7fffffe          BL       _DrawBitLine4BPP
                  |L4.326|
000146  9915              LDR      r1,[sp,#0x54]         ;508
000148  1c64              ADDS     r4,r4,#1              ;496
00014a  4489              ADD      r9,r9,r1              ;508
00014c  9906              LDR      r1,[sp,#0x18]         ;509
00014e  4488              ADD      r8,r8,r1              ;509
                  |L4.336|
000150  980a              LDR      r0,[sp,#0x28]         ;496
000152  4284              CMP      r4,r0                 ;496
000154  dbe5              BLT      |L4.290|
000156  e7da              B        |L4.270|
                  |L4.344|
000158  9809              LDR      r0,[sp,#0x24]         ;499
00015a  e9cdba02          STRD     r11,r10,[sp,#8]       ;499
00015e  e9cd7000          STRD     r7,r0,[sp,#0]         ;499
000162  9808              LDR      r0,[sp,#0x20]         ;499
000164  f8cd8010          STR      r8,[sp,#0x10]         ;499
000168  1822              ADDS     r2,r4,r0              ;499
00016a  464b              MOV      r3,r9                 ;499
00016c  4630              MOV      r0,r6                 ;499
00016e  9907              LDR      r1,[sp,#0x1c]         ;499
000170  f7fffffe          BL       _DrawBitLine1BPP
000174  e7e7              B        |L4.326|
                  |L4.374|
000176  e9cdb802          STRD     r11,r8,[sp,#8]        ;502
00017a  9909              LDR      r1,[sp,#0x24]         ;502
00017c  9808              LDR      r0,[sp,#0x20]         ;502
00017e  e9cd7100          STRD     r7,r1,[sp,#0]         ;502
000182  1822              ADDS     r2,r4,r0              ;502
000184  464b              MOV      r3,r9                 ;502
000186  4630              MOV      r0,r6                 ;502
000188  9907              LDR      r1,[sp,#0x1c]         ;502
00018a  f7fffffe          BL       _DrawBitLine2BPP
00018e  e7da              B        |L4.326|
;;;512    
                          ENDP

                  |L4.400|
                          DCD      GUI_Context
                  |L4.404|
                          DCD      ||.constdata||

                          AREA ||i._DrawHLine||, CODE, READONLY, ALIGN=1

                  _DrawHLine PROC
;;;557    */
;;;558    static void _DrawHLine(int x0, int y, int x1) {
000000  460b              MOV      r3,r1
;;;559      _FillRect(x0, y, x1, y);
000002  f7ffbffe          B.W      _FillRect
;;;560    }
;;;561    
                          ENDP


                          AREA ||i._DrawVLine||, CODE, READONLY, ALIGN=2

                  _DrawVLine PROC
;;;565    */
;;;566    static void _DrawVLine(int x , int y0, int y1) {
000000  e92d4ff7          PUSH     {r0-r2,r4-r11,lr}
;;;567      GUI_MEMDEV* pDev   = GUI_MEMDEV_H2P(GUI_Context.hDevData);
000004  f8df809c          LDR      r8,|L6.164|
000008  460d              MOV      r5,r1                 ;566
00000a  4692              MOV      r10,r2                ;566
00000c  f9b8004c          LDRSH    r0,[r8,#0x4c]  ; GUI_Context
000010  f7fffffe          BL       GUI_ALLOC_h2p
;;;568      GUI_USAGE_h hUsage = pDev->hUsage; 
000014  f9b09018          LDRSH    r9,[r0,#0x18]
000018  4606              MOV      r6,r0                 ;567
;;;569      GUI_USAGE*  pUsage = hUsage ? GUI_USAGE_H2P(hUsage) : NULL;
00001a  ea5f0009          MOVS     r0,r9
00001e  d001              BEQ      |L6.36|
000020  f7fffffe          BL       GUI_ALLOC_h2p
                  |L6.36|
000024  4683              MOV      r11,r0
;;;570      PIXELINDEX* pData  = _XY2PTR(x, y0);
000026  4629              MOV      r1,r5
000028  9800              LDR      r0,[sp,#0]
00002a  f7fffffe          BL       _XY2PTR
00002e  4604              MOV      r4,r0
;;;571      unsigned BytesPerLine = pDev->BytesPerLine;
;;;572    
;;;573      if (GUI_Context.DrawMode & LCD_DRAWMODE_XOR) {
000030  f898000c          LDRB     r0,[r8,#0xc]  ; GUI_Context
000034  68f7              LDR      r7,[r6,#0xc]
000036  07c0              LSLS     r0,r0,#31
000038  d016              BEQ      |L6.104|
;;;574        PIXELINDEX IndexMask;
;;;575        IndexMask = pDev->pfGetIndexMask();
00003a  6a70              LDR      r0,[r6,#0x24]
00003c  4780              BLX      r0
00003e  b2c7              UXTB     r7,r0
                  |L6.64|
;;;576        do {
;;;577          if (hUsage) {
000040  f1b90f00          CMP      r9,#0
000044  d006              BEQ      |L6.84|
;;;578            GUI_USAGE_AddPixel(pUsage, x, y0);
000046  f8db0008          LDR      r0,[r11,#8]
00004a  462a              MOV      r2,r5
00004c  6803              LDR      r3,[r0,#0]
00004e  4658              MOV      r0,r11
000050  9900              LDR      r1,[sp,#0]
000052  4798              BLX      r3
                  |L6.84|
;;;579          }
;;;580          *pData = *pData ^ IndexMask;
000054  7820              LDRB     r0,[r4,#0]
;;;581          pData = (PIXELINDEX*)((U8*)pData + pDev->BytesPerLine); /* Same as "pData += pDev->BytesPerLine >> 1;", Just more efficient */
;;;582        } while (++y0 <= y1);
000056  1c6d              ADDS     r5,r5,#1
000058  4078              EORS     r0,r0,r7              ;580
00005a  7020              STRB     r0,[r4,#0]            ;580
00005c  68f0              LDR      r0,[r6,#0xc]
00005e  4555              CMP      r5,r10
000060  4404              ADD      r4,r4,r0              ;581
000062  dded              BLE      |L6.64|
                  |L6.100|
;;;583      } else {
;;;584        if (hUsage) {
;;;585          do {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -