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

📄 guidev_16.txt

📁 STM32F103ZET6+UCOSII+UCGUI源码
💻 TXT
📖 第 1 页 / 共 5 页
字号:
;;;516    */
;;;517    static void _FillRect(int x0, int y0, int x1, int y1) {
000000  e92d4ff8          PUSH     {r3-r11,lr}
000004  4604              MOV      r4,r0
;;;518      unsigned BytesPerLine;
;;;519      int Len;
;;;520      GUI_MEMDEV* pDev   = GUI_MEMDEV_H2P(GUI_Context.hDevData);
000006  4820              LDR      r0,|L7.136|
000008  460f              MOV      r7,r1                 ;517
00000a  4615              MOV      r5,r2                 ;517
00000c  469a              MOV      r10,r3                ;517
00000e  f9b0004c          LDRSH    r0,[r0,#0x4c]  ; GUI_Context
000012  f7fffffe          BL       GUI_ALLOC_h2p
000016  4680              MOV      r8,r0
;;;521      PIXELINDEX* pData  = _XY2PTR(x0, y0);
000018  4639              MOV      r1,r7
00001a  4620              MOV      r0,r4
00001c  f7fffffe          BL       _XY2PTR
000020  4606              MOV      r6,r0
;;;522      BytesPerLine = pDev->BytesPerLine;
;;;523      Len = x1 - x0 + 1;
000022  1b28              SUBS     r0,r5,r4
000024  f1000901          ADD      r9,r0,#1
;;;524      /* Mark rectangle as modified */
;;;525      if (pDev->hUsage) {
000028  f9b80018          LDRSH    r0,[r8,#0x18]
00002c  f8d8b00c          LDR      r11,[r8,#0xc]
000030  b328              CBZ      r0,|L7.126|
;;;526        GUI_USAGE_AddRect(GUI_USAGE_H2P(pDev->hUsage), x0, y0, Len, y1 - y0 + 1);
000032  f7fffffe          BL       GUI_ALLOC_h2p
000036  ebaa0307          SUB      r3,r10,r7
00003a  1c5b              ADDS     r3,r3,#1
00003c  9300              STR      r3,[sp,#0]
00003e  464b              MOV      r3,r9
000040  463a              MOV      r2,r7
000042  4621              MOV      r1,r4
000044  f7fffffe          BL       GUI_USAGE_AddRect
000048  e019              B        |L7.126|
                  |L7.74|
;;;527      }
;;;528      /* Do the drawing */
;;;529      for (; y0 <= y1; y0++) {
;;;530        if (GUI_Context.DrawMode & LCD_DRAWMODE_XOR) {
00004a  480f              LDR      r0,|L7.136|
00004c  7b01              LDRB     r1,[r0,#0xc]  ; GUI_Context
00004e  07c9              LSLS     r1,r1,#31
000050  d00e              BEQ      |L7.112|
;;;531          int RemPixels;
;;;532          PIXELINDEX* pDest;
;;;533          PIXELINDEX IndexMask;
;;;534          RemPixels = Len;
;;;535          pDest  = pData;
;;;536          IndexMask = pDev->pfGetIndexMask();
000052  f8d80024          LDR      r0,[r8,#0x24]
000056  464d              MOV      r5,r9                 ;534
000058  4634              MOV      r4,r6                 ;535
00005a  4780              BLX      r0
00005c  b281              UXTH     r1,r0
                  |L7.94|
;;;537          do {
;;;538            *pDest = *pDest ^ IndexMask;
00005e  8820              LDRH     r0,[r4,#0]
;;;539            pDest++;
000060  4622              MOV      r2,r4
000062  1ca4              ADDS     r4,r4,#2
000064  ea800001          EOR      r0,r0,r1              ;538
;;;540          } while (--RemPixels);
000068  1e6d              SUBS     r5,r5,#1
00006a  8010              STRH     r0,[r2,#0]            ;538
00006c  d1f7              BNE      |L7.94|
00006e  e004              B        |L7.122|
                  |L7.112|
;;;541        } else {  /* Fill */
;;;542          #if BITSPERPIXEL == 8
;;;543            GUI_MEMSET(pData, LCD_COLORINDEX, Len);
;;;544          #elif BITSPERPIXEL == 16
;;;545            GUI__memset16(pData, LCD_COLORINDEX, Len);
000070  8841              LDRH     r1,[r0,#2]  ; GUI_Context
000072  464a              MOV      r2,r9
000074  4630              MOV      r0,r6
000076  f7fffffe          BL       GUI__memset16
                  |L7.122|
;;;546          #else
;;;547            #error Unsupported
;;;548          #endif
;;;549        }
;;;550        pData = (PIXELINDEX*)((U8*)pData + BytesPerLine); 
00007a  445e              ADD      r6,r6,r11
00007c  1c7f              ADDS     r7,r7,#1              ;529
                  |L7.126|
00007e  4557              CMP      r7,r10                ;529
000080  dde3              BLE      |L7.74|
;;;551      }
;;;552    }
000082  e8bd8ff8          POP      {r3-r11,pc}
;;;553    
                          ENDP

000086  0000              DCW      0x0000
                  |L7.136|
                          DCD      GUI_Context

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

                  _GetPixelIndex PROC
;;;634    */
;;;635    static unsigned int _GetPixelIndex(int x, int y) {
000000  b510              PUSH     {r4,lr}
;;;636      PIXELINDEX* pData = _XY2PTR(x, y);
000002  f7fffffe          BL       _XY2PTR
;;;637      return *pData;
000006  8800              LDRH     r0,[r0,#0]
;;;638    }
000008  bd10              POP      {r4,pc}
;;;639    
                          ENDP


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

                  _SetPixelIndex PROC
;;;604    */
;;;605    static void _SetPixelIndex(int x, int y, int Index) {
000000  e92d41f0          PUSH     {r4-r8,lr}
000004  4606              MOV      r6,r0
;;;606      GUI_MEMDEV* pDev = GUI_MEMDEV_H2P(GUI_Context.hDevData);
000006  4810              LDR      r0,|L9.72|
000008  460f              MOV      r7,r1                 ;605
00000a  4615              MOV      r5,r2                 ;605
00000c  f9b0004c          LDRSH    r0,[r0,#0x4c]  ; GUI_Context
000010  f7fffffe          BL       GUI_ALLOC_h2p
;;;607      GUI_USAGE_h hUsage = pDev->hUsage; 
000014  f9b04018          LDRSH    r4,[r0,#0x18]
;;;608      PIXELINDEX* pData = _XY2PTR(x, y);
000018  4639              MOV      r1,r7
00001a  4630              MOV      r0,r6
00001c  f7fffffe          BL       _XY2PTR
;;;609      *pData = Index;
000020  8005              STRH     r5,[r0,#0]
;;;610      if (hUsage) {
000022  2c00              CMP      r4,#0
000024  d00e              BEQ      |L9.68|
;;;611        GUI_USAGE_AddPixel(GUI_USAGE_H2P(hUsage), x, y);
000026  4620              MOV      r0,r4
000028  f7fffffe          BL       GUI_ALLOC_h2p
00002c  4605              MOV      r5,r0
00002e  4620              MOV      r0,r4
000030  f7fffffe          BL       GUI_ALLOC_h2p
000034  6880              LDR      r0,[r0,#8]
000036  463a              MOV      r2,r7
000038  6803              LDR      r3,[r0,#0]
00003a  4631              MOV      r1,r6
00003c  4628              MOV      r0,r5
00003e  e8bd41f0          POP      {r4-r8,lr}
000042  4718              BX       r3
                  |L9.68|
;;;612      }
;;;613    }
000044  e8bd81f0          POP      {r4-r8,pc}
;;;614    
                          ENDP

                  |L9.72|
                          DCD      GUI_Context

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

                  _XY2PTR PROC
;;;73     */
;;;74     static PIXELINDEX* _XY2PTR(int x, int y) {
000000  b570              PUSH     {r4-r6,lr}
000002  4604              MOV      r4,r0
;;;75       GUI_MEMDEV* pDev = GUI_MEMDEV_H2P(GUI_Context.hDevData);
000004  480a              LDR      r0,|L10.48|
000006  460d              MOV      r5,r1                 ;74
000008  f9b0004c          LDRSH    r0,[r0,#0x4c]  ; GUI_Context
00000c  f7fffffe          BL       GUI_ALLOC_h2p
;;;76       U8 *pData = (U8*)(pDev + 1);
;;;77       #if GUI_DEBUG_LEVEL >= GUI_DEBUG_LEVEL_CHECK_ALL
;;;78         if ((x >= pDev->x0+pDev->XSize) | (x<pDev->x0) | (y >= pDev->y0+pDev->YSize) | (y<pDev->y0)) {
;;;79           GUI_DEBUG_ERROROUT2("_XY2PTR: parameters out of bounds",x,y);
;;;80         }
;;;81       #endif
;;;82       pData += (GUI_ALLOC_DATATYPE_U)(y - pDev->y0) * (GUI_ALLOC_DATATYPE_U)pDev->BytesPerLine;
000010  8842              LDRH     r2,[r0,#2]
000012  68c3              LDR      r3,[r0,#0xc]
000014  f100012c          ADD      r1,r0,#0x2c           ;76
000018  1aaa              SUBS     r2,r5,r2
00001a  b292              UXTH     r2,r2
00001c  b29b              UXTH     r3,r3
00001e  fb021103          MLA      r1,r2,r3,r1
;;;83       return ((PIXELINDEX*)pData) + x - pDev->x0;
000022  f9b00000          LDRSH    r0,[r0,#0]
000026  eb010144          ADD      r1,r1,r4,LSL #1
00002a  eba10040          SUB      r0,r1,r0,LSL #1
;;;84     }
00002e  bd70              POP      {r4-r6,pc}
;;;85     
                          ENDP

                  |L10.48|
                          DCD      GUI_Context

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

                  _XorPixel PROC
;;;618    */
;;;619    static void _XorPixel(int x, int y) {
000000  e92d41f0          PUSH     {r4-r8,lr}
000004  4607              MOV      r7,r0
;;;620      PIXELINDEX IndexMask;
;;;621      GUI_MEMDEV* pDev = GUI_MEMDEV_H2P(GUI_Context.hDevData);
000006  4813              LDR      r0,|L11.84|
000008  4688              MOV      r8,r1                 ;619
00000a  f9b0004c          LDRSH    r0,[r0,#0x4c]  ; GUI_Context
00000e  f7fffffe          BL       GUI_ALLOC_h2p
000012  4604              MOV      r4,r0
;;;622      GUI_USAGE_h hUsage = pDev->hUsage; 
000014  f9b05018          LDRSH    r5,[r0,#0x18]
;;;623      PIXELINDEX* pData = _XY2PTR(x, y);
000018  4641              MOV      r1,r8
00001a  4638              MOV      r0,r7
00001c  f7fffffe          BL       _XY2PTR
000020  4606              MOV      r6,r0
;;;624      IndexMask = pDev->pfGetIndexMask();
000022  6a60              LDR      r0,[r4,#0x24]
000024  4780              BLX      r0
;;;625      *pData = *pData ^ IndexMask;
000026  8831              LDRH     r1,[r6,#0]
000028  4041              EORS     r1,r1,r0
00002a  8031              STRH     r1,[r6,#0]
;;;626      if (hUsage) {
00002c  2d00              CMP      r5,#0
00002e  d00e              BEQ      |L11.78|
;;;627        GUI_USAGE_AddPixel(GUI_USAGE_H2P(hUsage), x, y);
000030  4628              MOV      r0,r5
000032  f7fffffe          BL       GUI_ALLOC_h2p
000036  4604              MOV      r4,r0
000038  4628              MOV      r0,r5
00003a  f7fffffe          BL       GUI_ALLOC_h2p
00003e  6880              LDR      r0,[r0,#8]
000040  4642              MOV      r2,r8
000042  6803              LDR      r3,[r0,#0]
000044  4639              MOV      r1,r7
000046  4620              MOV      r0,r4
000048  e8bd41f0          POP      {r4-r8,lr}
00004c  4718              BX       r3
                  |L11.78|
;;;628      }
;;;629    }
00004e  e8bd81f0          POP      {r4-r8,pc}
;;;630    
                          ENDP

000052  0000              DCW      0x0000
                  |L11.84|
                          DCD      GUI_Context

                          AREA ||.constdata||, DATA, READONLY, ALIGN=1

                  aID
000000  00000001          DCW      0x0000,0x0001
000004  00020003          DCW      0x0002,0x0003
000008  00040005          DCW      0x0004,0x0005
00000c  00060007          DCW      0x0006,0x0007
000010  00080009          DCW      0x0008,0x0009
000014  000a000b          DCW      0x000a,0x000b
000018  000c000d          DCW      0x000c,0x000d
00001c  000e000f          DCW      0x000e,0x000f

                          AREA ||area_number.15||, DATA, READONLY, ALIGN=2

                          EXPORTAS ||area_number.15||, ||.constdata||
                  GUI_MEMDEV__APIList16
                          DCD      GUI_MEMDEV__Color2Index
                          DCD      GUI_MEMDEV__Index2Color
                          DCD      GUI_MEMDEV__GetIndexMask
                          DCD      _DrawBitmap
                          DCD      _DrawHLine
                          DCD      _DrawVLine
                          DCD      _FillRect
                          DCD      _GetPixelIndex
                          DCD      GUI_MEMDEV__GetRect
                          DCD      _SetPixelIndex
                          DCD      _XorPixel
                          DCD      0x00000000
                          DCD      0x00000000
                          DCD      0x00000000
                          DCD      0x00000000
                          DCD      0x00000010

⌨️ 快捷键说明

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