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

📄 guidev_writeex.txt

📁 STM32F103ZET6+UCOSII+UCGUI源码
💻 TXT
📖 第 1 页 / 共 3 页
字号:
000060  4601              MOV      r1,r0
;;;68           Color2 = LCD_MixColors256(Color1, Color2, Intens);
000062  465a              MOV      r2,r11
000064  4630              MOV      r0,r6
000066  f7fffffe          BL       LCD_MixColors256
;;;69           *(pData++) = LCD_Color2Index(Color2);
00006a  f7fffffe          BL       LCD_Color2Index
00006e  f8040b01          STRB     r0,[r4],#1
                  |L5.114|
000072  1e6d              SUBS     r5,r5,#1              ;66
000074  d2f1              BCS      |L5.90|
                  |L5.118|
;;;70         }
;;;71       } else {
;;;72         U16* pData;
;;;73         pData  = (U16*) GUI_MEMDEV__XY2PTR(x0, y);
;;;74         while (Len--) {
;;;75           Color2 = LCD_Index2Color(*(pData));
;;;76           Color2 = LCD_MixColors256(Color1, Color2, Intens);
;;;77           *(pData++) = LCD_Color2Index(Color2);
;;;78         }
;;;79       }
;;;80     }
000076  e8bd9ff0          POP      {r4-r12,pc}
                  |L5.122|
00007a  f7fffffe          BL       GUI_MEMDEV__XY2PTR
00007e  4604              MOV      r4,r0                 ;73
000080  e00b              B        |L5.154|
                  |L5.130|
000082  8820              LDRH     r0,[r4,#0]            ;75
000084  f7fffffe          BL       LCD_Index2Color
000088  4601              MOV      r1,r0                 ;75
00008a  465a              MOV      r2,r11                ;76
00008c  4630              MOV      r0,r6                 ;76
00008e  f7fffffe          BL       LCD_MixColors256
000092  f7fffffe          BL       LCD_Color2Index
000096  f8240b02          STRH     r0,[r4],#2            ;77
                  |L5.154|
00009a  1e6d              SUBS     r5,r5,#1              ;74
00009c  d2f1              BCS      |L5.130|
00009e  e7ea              B        |L5.118|
;;;81     
                          ENDP

                  |L5.160|
                          DCD      GUI_Context

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

                  _WriteExToActiveAt PROC
;;;180    */
;;;181    static void _WriteExToActiveAt(GUI_MEMDEV_Handle hMem, int x, int y, int xMag, int yMag, int Alpha) {
000000  e92d4fff          PUSH     {r0-r11,lr}
000004  b08f              SUB      sp,sp,#0x3c
000006  4691              MOV      r9,r2
;;;182      GUI_MEMDEV* pDev;
;;;183      GUI_USAGE_h hUsage; 
;;;184      GUI_USAGE*  pUsage;
;;;185      U8* pData;
;;;186      int yAct, yPrev, ySize, yi;
;;;187      int BytesPerLine, bpp;
;;;188      pDev         = GUI_MEMDEV_H2P(hMem);
000008  f8dda070          LDR      r10,[sp,#0x70]
00000c  f7fffffe          BL       GUI_ALLOC_h2p
000010  4605              MOV      r5,r0
;;;189      hUsage       = pDev->hUsage;
000012  f9b00018          LDRSH    r0,[r0,#0x18]
;;;190      ySize        = pDev->YSize;
000016  f9b54006          LDRSH    r4,[r5,#6]
;;;191      BytesPerLine = pDev->BytesPerLine;
00001a  68e9              LDR      r1,[r5,#0xc]
;;;192      pData        = (U8*)(pDev + 1);
00001c  910d              STR      r1,[sp,#0x34]
00001e  f105012c          ADD      r1,r5,#0x2c
;;;193      bpp          = pDev->BitsPerPixel;
000022  910e              STR      r1,[sp,#0x38]
000024  6929              LDR      r1,[r5,#0x10]
000026  46a3              MOV      r11,r4                ;190
;;;194      yPrev = y + 1;
000028  f1090601          ADD      r6,r9,#1
;;;195      if (hUsage) {
00002c  910c              STR      r1,[sp,#0x30]
00002e  2800              CMP      r0,#0
000030  d079              BEQ      |L6.294|
;;;196        int xOff, xSize, y0;
;;;197        pUsage = GUI_USAGE_H2P(hUsage);
000032  f7fffffe          BL       GUI_ALLOC_h2p
000036  4607              MOV      r7,r0
;;;198        for (yi = 0; yi < ySize; yi++) {
000038  2400              MOVS     r4,#0
00003a  e06e              B        |L6.282|
                  |L6.60|
;;;199          yAct = y + GUI__DivideRound32(((I32)(yi) * yMag), 1000);
00003c  fb04f00a          MUL      r0,r4,r10
000040  f44f717a          MOV      r1,#0x3e8
000044  f7fffffe          BL       GUI__DivideRound32
000048  eb000809          ADD      r8,r0,r9
;;;200          if (yAct != yPrev) {
00004c  45b0              CMP      r8,r6
00004e  d063              BEQ      |L6.280|
;;;201            xOff  = 0;
000050  2000              MOVS     r0,#0
;;;202            xSize = GUI_USAGE_GetNextDirty(pUsage, &xOff, yi);
000052  900b              STR      r0,[sp,#0x2c]
000054  68b8              LDR      r0,[r7,#8]
000056  4622              MOV      r2,r4
000058  6943              LDR      r3,[r0,#0x14]
00005a  a90b              ADD      r1,sp,#0x2c
00005c  4638              MOV      r0,r7
00005e  4798              BLX      r3
;;;203            if (xSize == pDev->XSize) {
000060  f9b51004          LDRSH    r1,[r5,#4]
000064  4606              MOV      r6,r0                 ;202
000066  4281              CMP      r1,r0
000068  d153              BNE      |L6.274|
;;;204              /* If the entire line is affected, calculate the number of entire lines */
;;;205              y0 = yi;
00006a  46a0              MOV      r8,r4
;;;206              while (GUI_USAGE_GetNextDirty(pUsage, &xOff, yi + 1) == xSize) {
00006c  e000              B        |L6.112|
                  |L6.110|
;;;207                yi++;
00006e  1c64              ADDS     r4,r4,#1
                  |L6.112|
000070  68b8              LDR      r0,[r7,#8]            ;206
000072  1c62              ADDS     r2,r4,#1              ;206
000074  6943              LDR      r3,[r0,#0x14]         ;206
000076  a90b              ADD      r1,sp,#0x2c           ;206
000078  4638              MOV      r0,r7                 ;206
00007a  4798              BLX      r3                    ;206
00007c  42b0              CMP      r0,r6                 ;206
00007e  d0f6              BEQ      |L6.110|
;;;208              }
;;;209              _DrawBitmapEx(x, y, 0, y0, pDev->XSize, yi - y0 + 1, xMag, yMag, Alpha,
000080  a90c              ADD      r1,sp,#0x30
000082  c90e              LDM      r1,{r1-r3}
000084  f9b50006          LDRSH    r0,[r5,#6]
000088  e9cd2308          STRD     r2,r3,[sp,#0x20]
00008c  e9cd0106          STRD     r0,r1,[sp,#0x18]
000090  f9b53004          LDRSH    r3,[r5,#4]
000094  9a1d              LDR      r2,[sp,#0x74]
000096  9812              LDR      r0,[sp,#0x48]
000098  e9cda203          STRD     r10,r2,[sp,#0xc]
00009c  461e              MOV      r6,r3
00009e  9305              STR      r3,[sp,#0x14]
0000a0  eba40308          SUB      r3,r4,r8
0000a4  1c5b              ADDS     r3,r3,#1
0000a6  e9cd6300          STRD     r6,r3,[sp,#0]
0000aa  9002              STR      r0,[sp,#8]
0000ac  4643              MOV      r3,r8
0000ae  2200              MOVS     r2,#0
0000b0  4649              MOV      r1,r9
0000b2  9810              LDR      r0,[sp,#0x40]
0000b4  f7fffffe          BL       _DrawBitmapEx
;;;210                            pDev->XSize, pDev->YSize, bpp, BytesPerLine, pData);
;;;211              yPrev = y + GUI__DivideRound32(((I32)(yi) * yMag), 1000);
0000b8  fb04f00a          MUL      r0,r4,r10
0000bc  f44f717a          MOV      r1,#0x3e8
0000c0  f7fffffe          BL       GUI__DivideRound32
0000c4  eb000609          ADD      r6,r0,r9
0000c8  e026              B        |L6.280|
;;;212            } else {
;;;213              /* Draw the partial line which needs to be drawn */
;;;214              while (xSize) {
;;;215                _DrawBitmapEx(x, y, xOff, yi, xSize, 1, xMag, yMag, Alpha,
0000ca  bf00              NOP      
                  |L6.204|
0000cc  a90c              ADD      r1,sp,#0x30
0000ce  c90e              LDM      r1,{r1-r3}
0000d0  f9b50006          LDRSH    r0,[r5,#6]
0000d4  e9cd2308          STRD     r2,r3,[sp,#0x20]
0000d8  e9cd0106          STRD     r0,r1,[sp,#0x18]
0000dc  9a1d              LDR      r2,[sp,#0x74]
0000de  f9b53004          LDRSH    r3,[r5,#4]
0000e2  9812              LDR      r0,[sp,#0x48]
0000e4  e9cda203          STRD     r10,r2,[sp,#0xc]
0000e8  9305              STR      r3,[sp,#0x14]
0000ea  2301              MOVS     r3,#1
0000ec  e9cd6300          STRD     r6,r3,[sp,#0]
0000f0  9002              STR      r0,[sp,#8]
0000f2  4623              MOV      r3,r4
0000f4  4649              MOV      r1,r9
0000f6  9a0b              LDR      r2,[sp,#0x2c]
0000f8  9810              LDR      r0,[sp,#0x40]
0000fa  f7fffffe          BL       _DrawBitmapEx
;;;216                              pDev->XSize, pDev->YSize, bpp, BytesPerLine, pData);
;;;217                xOff += xSize;
0000fe  980b              LDR      r0,[sp,#0x2c]
;;;218                xSize = GUI_USAGE_GetNextDirty(pUsage, &xOff, yi);
000100  4622              MOV      r2,r4
000102  4430              ADD      r0,r0,r6              ;217
000104  900b              STR      r0,[sp,#0x2c]
000106  68b8              LDR      r0,[r7,#8]
000108  a90b              ADD      r1,sp,#0x2c
00010a  6943              LDR      r3,[r0,#0x14]
00010c  4638              MOV      r0,r7
00010e  4798              BLX      r3
000110  4606              MOV      r6,r0
                  |L6.274|
000112  2e00              CMP      r6,#0                 ;214
000114  d1da              BNE      |L6.204|
;;;219              }
;;;220              yPrev = yAct;
000116  4646              MOV      r6,r8
                  |L6.280|
000118  1c64              ADDS     r4,r4,#1              ;198
                  |L6.282|
00011a  455c              CMP      r4,r11                ;198
00011c  db8e              BLT      |L6.60|
                  |L6.286|
;;;221            }
;;;222          }
;;;223        }
;;;224      } else {
;;;225        _DrawBitmapEx(x, y, 0, 0, pDev->XSize, ySize, xMag, yMag, Alpha,
;;;226                      pDev->XSize, pDev->YSize, bpp, BytesPerLine, pData);
;;;227      }
;;;228    }
00011e  b013              ADD      sp,sp,#0x4c
000120  e8bd8ff0          POP      {r4-r11,pc}
000124  e7ff              B        |L6.294|
                  |L6.294|
000126  e9dd230d          LDRD     r2,r3,[sp,#0x34]      ;225
00012a  e9cd4106          STRD     r4,r1,[sp,#0x18]      ;225
00012e  e9cd2308          STRD     r2,r3,[sp,#0x20]      ;225
000132  f9b53004          LDRSH    r3,[r5,#4]            ;225
000136  9a1d              LDR      r2,[sp,#0x74]         ;225
000138  9812              LDR      r0,[sp,#0x48]         ;225
00013a  e9cda203          STRD     r10,r2,[sp,#0xc]      ;225
00013e  461d              MOV      r5,r3                 ;225
000140  e9cd5400          STRD     r5,r4,[sp,#0]         ;225
000144  9305              STR      r3,[sp,#0x14]         ;225
000146  9002              STR      r0,[sp,#8]            ;225
000148  2300              MOVS     r3,#0                 ;225
00014a  461a              MOV      r2,r3                 ;225
00014c  4649              MOV      r1,r9                 ;225
00014e  9810              LDR      r0,[sp,#0x40]         ;225
000150  f7fffffe          BL       _DrawBitmapEx
000154  e7e3              B        |L6.286|
;;;229    
                          ENDP

⌨️ 快捷键说明

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