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

📄 guidev_16.txt

📁 STM32F103ZET6+UCOSII+UCGUI源码
💻 TXT
📖 第 1 页 / 共 5 页
字号:
;;;342          pixels = *++p;
;;;343        }
;;;344        /* Draw incomplete bytes to the right of center area */
;;;345        if (xsize) {
;;;346          if (pixels >>= 4) {
;;;347            *pDest = *(pTrans + pixels);
;;;348            if (pUsage) {
;;;349              GUI_USAGE_AddPixel(pUsage, x, y);
;;;350            }
;;;351          }
;;;352        }
;;;353        break;
;;;354      case LCD_DRAWMODE_XOR:;
;;;355      PixelLoopXor:
;;;356        if (PixelCnt > xsize)
;;;357          PixelCnt = xsize;
;;;358        xsize -= PixelCnt;
;;;359        do {
;;;360          if ((pixels & 0xc0)) {
;;;361            *pDest ^= 255;
;;;362          }
;;;363          pDest++;
;;;364          pixels <<= 4;
;;;365        } while (--PixelCnt);
;;;366        if (xsize) {
;;;367          PixelCnt = 2;
;;;368          pixels = *(++p);
;;;369          goto PixelLoopXor;
;;;370        }
;;;371        break;
;;;372      }
;;;373    }
0000a6  e8bd9ff0          POP      {r4-r12,pc}
                  |L3.170|
0000aa  0928              LSRS     r0,r5,#4              ;326
0000ac  d00d              BEQ      |L3.202|
0000ae  0928              LSRS     r0,r5,#4              ;327
0000b0  f8380010          LDRH     r0,[r8,r0,LSL #1]     ;327
0000b4  8020              STRH     r0,[r4,#0]            ;327
0000b6  f1b90f00          CMP      r9,#0                 ;328
0000ba  d006              BEQ      |L3.202|
0000bc  f8d90008          LDR      r0,[r9,#8]            ;329
0000c0  465a              MOV      r2,r11                ;329
0000c2  6803              LDR      r3,[r0,#0]            ;329
0000c4  4651              MOV      r1,r10                ;329
0000c6  4648              MOV      r0,r9                 ;329
0000c8  4798              BLX      r3                    ;329
                  |L3.202|
0000ca  f015000f          ANDS     r0,r5,#0xf            ;333
0000ce  d00d              BEQ      |L3.236|
0000d0  f8380010          LDRH     r0,[r8,r0,LSL #1]     ;334
0000d4  8060              STRH     r0,[r4,#2]            ;334
0000d6  f1b90f00          CMP      r9,#0                 ;335
0000da  d007              BEQ      |L3.236|
0000dc  f8d90008          LDR      r0,[r9,#8]            ;336
0000e0  465a              MOV      r2,r11                ;336
0000e2  6803              LDR      r3,[r0,#0]            ;336
0000e4  f10a0101          ADD      r1,r10,#1             ;336
0000e8  4648              MOV      r0,r9                 ;336
0000ea  4798              BLX      r3                    ;336
                  |L3.236|
0000ec  1d24              ADDS     r4,r4,#4              ;339
0000ee  f10a0a02          ADD      r10,r10,#2            ;340
0000f2  1eb6              SUBS     r6,r6,#2              ;341
                  |L3.244|
0000f4  f8175f01          LDRB     r5,[r7,#1]!           ;321
                  |L3.248|
0000f8  2e02              CMP      r6,#2                 ;324
0000fa  dad6              BGE      |L3.170|
0000fc  2e00              CMP      r6,#0                 ;345
0000fe  d0d2              BEQ      |L3.166|
000100  0928              LSRS     r0,r5,#4              ;346
000102  d0d0              BEQ      |L3.166|
000104  f8380010          LDRH     r0,[r8,r0,LSL #1]     ;347
000108  8020              STRH     r0,[r4,#0]            ;347
00010a  f1b90f00          CMP      r9,#0                 ;348
00010e  d0ca              BEQ      |L3.166|
000110  f8d90008          LDR      r0,[r9,#8]            ;349
000114  465a              MOV      r2,r11                ;349
000116  6803              LDR      r3,[r0,#0]            ;349
000118  4651              MOV      r1,r10                ;349
00011a  4648              MOV      r0,r9                 ;349
00011c  e8bd5ff0          POP      {r4-r12,lr}           ;349
000120  4718              BX       r3                    ;349
000122  e7ff              B        |L3.292|
                  |L3.292|
000124  42b0              CMP      r0,r6                 ;356
000126  dd00              BLE      |L3.298|
000128  b2f0              UXTB     r0,r6                 ;357
                  |L3.298|
00012a  1a36              SUBS     r6,r6,r0              ;358
                  |L3.300|
00012c  09a9              LSRS     r1,r5,#6              ;360
00012e  d003              BEQ      |L3.312|
000130  8821              LDRH     r1,[r4,#0]            ;361
000132  f08101ff          EOR      r1,r1,#0xff           ;361
000136  8021              STRH     r1,[r4,#0]            ;361
                  |L3.312|
000138  0729              LSLS     r1,r5,#28             ;363
00013a  1ca4              ADDS     r4,r4,#2              ;363
00013c  0e0d              LSRS     r5,r1,#24             ;364
00013e  1e40              SUBS     r0,r0,#1              ;365
000140  f01000ff          ANDS     r0,r0,#0xff           ;365
000144  d1f2              BNE      |L3.300|
000146  2e00              CMP      r6,#0                 ;366
000148  d0ad              BEQ      |L3.166|
00014a  2002              MOVS     r0,#2                 ;367
00014c  f8175f01          LDRB     r5,[r7,#1]!           ;368
000150  e7e8              B        |L3.292|
;;;374    
                          ENDP

000152  0000              DCW      0x0000
                  |L3.340|
                          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  4605              MOV      r5,r0
;;;454      int i;
;;;455      GUI_MEMDEV* pDev   = GUI_MEMDEV_H2P(GUI_Context.hDevData);
000008  488b              LDR      r0,|L4.568|
00000a  e9dd8b16          LDRD     r8,r11,[sp,#0x58]
00000e  468a              MOV      r10,r1                ;453
000010  f9b0004c          LDRSH    r0,[r0,#0x4c]  ; GUI_Context
000014  9e14              LDR      r6,[sp,#0x50]
000016  f7fffffe          BL       GUI_ALLOC_h2p
00001a  4681              MOV      r9,r0
;;;456      GUI_USAGE*  pUsage = (pDev->hUsage) ? GUI_USAGE_H2P(pDev->hUsage) : 0;
00001c  f9b00018          LDRSH    r0,[r0,#0x18]
000020  b108              CBZ      r0,|L4.38|
000022  f7fffffe          BL       GUI_ALLOC_h2p
                  |L4.38|
000026  0004              MOVS     r4,r0
;;;457      unsigned    BytesPerLineDest;
;;;458      PIXELINDEX* pDest;
;;;459      BytesPerLineDest = pDev->BytesPerLine;
;;;460      x0 += Diff;
000028  eb05000b          ADD      r0,r5,r11
00002c  f8d9100c          LDR      r1,[r9,#0xc]
;;;461      /* Mark all affected pixels dirty unless transparency is set */
;;;462      if (pUsage) {
000030  e9cd1006          STRD     r1,r0,[sp,#0x18]
000034  d00b              BEQ      |L4.78|
;;;463        if ((GUI_Context.DrawMode & LCD_DRAWMODE_TRANS) == 0) {
000036  4880              LDR      r0,|L4.568|
000038  7b00              LDRB     r0,[r0,#0xc]  ; GUI_Context
00003a  0780              LSLS     r0,r0,#30
00003c  d407              BMI      |L4.78|
;;;464          GUI_USAGE_AddRect(pUsage, x0, y0 , xsize, ysize);
00003e  9b0a              LDR      r3,[sp,#0x28]
000040  9300              STR      r3,[sp,#0]
000042  4652              MOV      r2,r10
000044  4620              MOV      r0,r4
000046  9b09              LDR      r3,[sp,#0x24]
000048  9907              LDR      r1,[sp,#0x1c]
00004a  f7fffffe          BL       GUI_USAGE_AddRect
                  |L4.78|
;;;465        }
;;;466      }
;;;467      pDest = _XY2PTR(x0, y0);
00004e  4651              MOV      r1,r10
000050  9807              LDR      r0,[sp,#0x1c]
000052  f7fffffe          BL       _XY2PTR
000056  4607              MOV      r7,r0
;;;468    #if BITSPERPIXEL == 16
;;;469      /* handle 16 bpp bitmaps in high color modes, but only without palette */
;;;470      if (BitsPerPixel == 16) {
000058  2e10              CMP      r6,#0x10
00005a  d13a              BNE      |L4.210|
;;;471        for (i = 0; i < ysize; i++) {
00005c  2000              MOVS     r0,#0
00005e  e031              B        |L4.196|
                  |L4.96|
;;;472          _DrawBitLine16BPP_DDB(pUsage, x0, i + y0, (const U16*)pData, xsize, pDest);
000060  9807              LDR      r0,[sp,#0x1c]
000062  9004              STR      r0,[sp,#0x10]
000064  eb0b000a          ADD      r0,r11,r10
000068  9005              STR      r0,[sp,#0x14]
00006a  4873              LDR      r0,|L4.568|
00006c  f8dd9024          LDR      r9,[sp,#0x24]
000070  7b00              LDRB     r0,[r0,#0xc]  ; GUI_Context
000072  4646              MOV      r6,r8
000074  463d              MOV      r5,r7
000076  f0100003          ANDS     r0,r0,#3
00007a  d002              BEQ      |L4.130|
00007c  2802              CMP      r0,#2
00007e  d11b              BNE      |L4.184|
000080  e006              B        |L4.144|
                  |L4.130|
000082  ea4f0249          LSL      r2,r9,#1
000086  4631              MOV      r1,r6
000088  4628              MOV      r0,r5
00008a  f7fffffe          BL       __aeabi_memcpy
00008e  e013              B        |L4.184|
                  |L4.144|
000090  8830              LDRH     r0,[r6,#0]
000092  b138              CBZ      r0,|L4.164|
000094  8028              STRH     r0,[r5,#0]
000096  b12c              CBZ      r4,|L4.164|
000098  68a0              LDR      r0,[r4,#8]
00009a  e9dd1204          LDRD     r1,r2,[sp,#0x10]
00009e  6803              LDR      r3,[r0,#0]
0000a0  4620              MOV      r0,r4
0000a2  4798              BLX      r3
                  |L4.164|
0000a4  9804              LDR      r0,[sp,#0x10]
0000a6  1cad              ADDS     r5,r5,#2
0000a8  1c40              ADDS     r0,r0,#1
0000aa  9004              STR      r0,[sp,#0x10]
0000ac  1cb6              ADDS     r6,r6,#2
0000ae  f1a90001          SUB      r0,r9,#1
0000b2  ea5f0900          MOVS     r9,r0
0000b6  d1eb              BNE      |L4.144|
                  |L4.184|
;;;473          pData += BytesPerLine;
;;;474          pDest = (PIXELINDEX*)((U8*)pDest + BytesPerLineDest); 
0000b8  9806              LDR      r0,[sp,#0x18]
0000ba  9915              LDR      r1,[sp,#0x54]         ;473
0000bc  4407              ADD      r7,r7,r0
0000be  4488              ADD      r8,r8,r1              ;473
0000c0  f10b0001          ADD      r0,r11,#1             ;471
                  |L4.196|
0000c4  990a              LDR      r1,[sp,#0x28]         ;471
0000c6  4683              MOV      r11,r0                ;471
0000c8  4288              CMP      r0,r1                 ;471
0000ca  dbc9              BLT      |L4.96|
                  |L4.204|
;;;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) {
;;;481        for (i = 0; i < ysize; i++) {
;;;482          if (pTrans) {
;;;483            _DrawBitLine8BPP(pUsage, x0, i + y0, pData, xsize, pTrans, pDest);
;;;484          } else {
;;;485            _DrawBitLine8BPP_DDB(pUsage, x0, i + y0, pData, xsize, pDest);
;;;486          }
;;;487          pData += BytesPerLine;
;;;488          pDest = (PIXELINDEX*)((U8*)pDest + BytesPerLineDest); 
;;;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    }
0000cc  b00b              ADD      sp,sp,#0x2c
0000ce  e8bd8ff0          POP      {r4-r11,pc}
                  |L4.210|
0000d2  2e08              CMP      r6,#8                 ;480
0000d4  d170              BNE      |L4.440|
0000d6  2000              MOVS     r0,#0                 ;481
0000d8  e068              B        |L4.428|
                  |L4.218|
0000da  9818              LDR      r0,[sp,#0x60]         ;482
0000dc  2800              CMP      r0,#0                 ;482
0000de  9807              LDR      r0,[sp,#0x1c]         ;483
0000e0  9004              STR      r0,[sp,#0x10]         ;482
0000e2  d034              BEQ      |L4.334|
0000e4  eb0b000a          ADD      r0,r11,r10            ;483
0000e8  9005              STR      r0,[sp,#0x14]         ;483
0000ea  4853              LDR      r0,|L4.568|
0000ec  f8dd9024          LDR      r9,[sp,#0x24]         ;483
0000f0  7b00              LDRB     r0,[r0,#0xc]          ;483  ; GUI_Context

⌨️ 快捷键说明

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