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

📄 guidev_writealpha.txt

📁 STM32F103ZET6+UCOSII+UCGUI源码
💻 TXT
字号:
; generated by ARM C/C++ Compiler with , RVCT4.0 [Build 524] for uVision
; commandline ArmCC [--split_sections --debug -c --asm --interleave -o.\Obj\guidev_writealpha.o --depend=.\Obj\guidev_writealpha.d --device=DARMSTM --apcs=interwork -O3 -I..\..\include -I..\..\..\FWLib\library\inc -I..\..\..\USBLib\library\inc -I..\..\Config -I..\..\GUI\Core -I..\..\GUI\Font -I..\..\GUI\ConvertColor -I..\..\GUI\AntiAlias -I..\..\GUI\ConvertMono -I..\..\GUI\JPEG -I..\..\GUI\MemDev -I..\..\GUI\MultiLayer -I..\..\GUI\Widget -I..\..\GUI\WM -IC:\Keil\ARM\INC\ST\STM32F10x ..\..\GUI\MemDev\GUIDEV_WriteAlpha.c]
                          THUMB

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

                  GUI_MEMDEV_WriteAlpha PROC
;;;121    */
;;;122    void GUI_MEMDEV_WriteAlpha(GUI_MEMDEV_Handle hMem, int Alpha) {
000000  4a01              LDR      r2,|L1.8|
;;;123      GUI_MEMDEV_WriteAlphaAt(hMem, Alpha, GUI_POS_AUTO, GUI_POS_AUTO);
000002  4613              MOV      r3,r2
000004  f7ffbffe          B.W      GUI_MEMDEV_WriteAlphaAt
;;;124    }
;;;125    
                          ENDP

                  |L1.8|
                          DCD      0xfffff001

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

                  GUI_MEMDEV_WriteAlphaAt PROC
;;;92     */
;;;93     void GUI_MEMDEV_WriteAlphaAt(GUI_MEMDEV_Handle hMem, int Alpha, int x, int y) {
000000  e92d41fc          PUSH     {r2-r8,lr}
000004  0006              MOVS     r6,r0
000006  460f              MOV      r7,r1
000008  4614              MOV      r4,r2
00000a  461d              MOV      r5,r3
;;;94       if (hMem) {
00000c  d026              BEQ      |L2.92|
;;;95         GUI_MEMDEV* pDevData;
;;;96         #if (GUI_WINSUPPORT)
;;;97           GUI_RECT r;
;;;98         #endif
;;;99         GUI_LOCK();
;;;100        pDevData = (GUI_MEMDEV*) GUI_ALLOC_h2p(hMem);  /* Convert to pointer */
00000e  4630              MOV      r0,r6
000010  f7fffffe          BL       GUI_ALLOC_h2p
;;;101        if (x == GUI_POS_AUTO) {
000014  f64071ff          MOV      r1,#0xfff
000018  1909              ADDS     r1,r1,r4
00001a  d103              BNE      |L2.36|
;;;102          x = pDevData->x0;
00001c  f9b04000          LDRSH    r4,[r0,#0]
;;;103          y = pDevData->y0;
000020  f9b05002          LDRSH    r5,[r0,#2]
                  |L2.36|
;;;104        }
;;;105        #if (GUI_WINSUPPORT)
;;;106          r.x1 = (r.x0 = x) + pDevData->XSize-1;
000024  8881              LDRH     r1,[r0,#4]
000026  1e62              SUBS     r2,r4,#1
000028  4411              ADD      r1,r1,r2
00002a  f8ad4000          STRH     r4,[sp,#0]
00002e  f8ad1004          STRH     r1,[sp,#4]
;;;107          r.y1 = (r.y0 = y) + pDevData->YSize-1;;
000032  88c1              LDRH     r1,[r0,#6]
000034  1e68              SUBS     r0,r5,#1
000036  4408              ADD      r0,r0,r1
000038  f8ad0006          STRH     r0,[sp,#6]
00003c  f8ad5002          STRH     r5,[sp,#2]
;;;108          WM_ITERATE_START(&r) {
000040  4668              MOV      r0,sp
000042  f7fffffe          BL       WM__InitIVRSearch
000046  e007              B        |L2.88|
                  |L2.72|
;;;109          _WriteAlphaToActiveAt(hMem, Alpha, x,y);
000048  462b              MOV      r3,r5
00004a  4622              MOV      r2,r4
00004c  4639              MOV      r1,r7
00004e  4630              MOV      r0,r6
000050  f7fffffe          BL       _WriteAlphaToActiveAt
;;;110          } WM_ITERATE_END();
000054  f7fffffe          BL       WM__GetNextIVR
                  |L2.88|
000058  2800              CMP      r0,#0
00005a  d1f5              BNE      |L2.72|
                  |L2.92|
;;;111        #else
;;;112          _WriteAlphaToActiveAt(hMem, Alpha, x,y);
;;;113        #endif
;;;114        GUI_UNLOCK();
;;;115      }
;;;116    }
00005c  e8bd81fc          POP      {r2-r8,pc}
;;;117    
                          ENDP


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

                  _WriteAlphaToActiveAt PROC
;;;39     */
;;;40     static void _WriteAlphaToActiveAt(GUI_MEMDEV_Handle hMem, int Intens, int x, int y) {
000000  e92d4fff          PUSH     {r0-r11,lr}
000004  b083              SUB      sp,sp,#0xc
;;;41       /* Make sure the memory handle is valid */
;;;42       if (hMem) {
000006  2800              CMP      r0,#0
000008  d04c              BEQ      |L3.164|
;;;43         GUI_MEMDEV * pDev = GUI_MEMDEV_H2P(hMem);
00000a  f7fffffe          BL       GUI_ALLOC_h2p
00000e  4681              MOV      r9,r0
;;;44         GUI_USAGE_h hUsage = pDev->hUsage; 
000010  f9b00018          LDRSH    r0,[r0,#0x18]
;;;45         GUI_USAGE*  pUsage;
;;;46         int YSize = pDev->YSize;
000014  f9b91006          LDRSH    r1,[r9,#6]
;;;47         int yi;
;;;48         if (hUsage) {
000018  9102              STR      r1,[sp,#8]
00001a  2800              CMP      r0,#0
00001c  d042              BEQ      |L3.164|
;;;49           pUsage = GUI_USAGE_H2P(hUsage);
00001e  f7fffffe          BL       GUI_ALLOC_h2p
000022  4682              MOV      r10,r0
;;;50           for (yi = 0; yi < YSize; yi++) {
000024  2600              MOVS     r6,#0
000026  e03a              B        |L3.158|
                  |L3.40|
;;;51             int xOff = 0;
000028  2000              MOVS     r0,#0
;;;52             int XSize;
;;;53             XSize = GUI_USAGE_GetNextDirty(pUsage, &xOff, yi);
;;;54             /* Draw the partial line which needs to be drawn */
;;;55             for (; XSize; ) {
00002a  9001              STR      r0,[sp,#4]
00002c  e02d              B        |L3.138|
                  |L3.46|
;;;56               U8* pData;
;;;57               pData = (U8*)GUI_MEMDEV__XY2PTREx(pDev, xOff, yi);
00002e  4632              MOV      r2,r6
000030  4648              MOV      r0,r9
000032  9901              LDR      r1,[sp,#4]
000034  f7fffffe          BL       GUI_MEMDEV__XY2PTREx
000038  4604              MOV      r4,r0
;;;58               do {
;;;59                 LCD_COLOR Color, BkColor;
;;;60                 int xPos, yPos, Index;
;;;61                 if (pDev->BitsPerPixel == 8) {
;;;62                   Index = *pData++;
;;;63                 } else {
;;;64                   Index = *(U16*)pData;
;;;65                   pData += 2;
;;;66                 }
;;;67                 Color   = LCD_Index2Color(Index);
;;;68                 xPos    = xOff + x;
;;;69                 yPos    = yi +y;
00003a  9806              LDR      r0,[sp,#0x18]
00003c  eb160700          ADDS.W   r7,r6,r0
                  |L3.64|
000040  f8d90010          LDR      r0,[r9,#0x10]         ;61
000044  2808              CMP      r0,#8                 ;61
000046  d102              BNE      |L3.78|
000048  f8140b01          LDRB     r0,[r4],#1            ;62
00004c  e001              B        |L3.82|
                  |L3.78|
00004e  f8340b02          LDRH     r0,[r4],#2            ;64
                  |L3.82|
000052  f7fffffe          BL       LCD_Index2Color
000056  4683              MOV      r11,r0                ;67
000058  9905              LDR      r1,[sp,#0x14]         ;68
00005a  9801              LDR      r0,[sp,#4]            ;68
00005c  eb000801          ADD      r8,r0,r1              ;68
;;;70                 BkColor = LCD_GetPixelColor(xPos, yPos);
000060  4639              MOV      r1,r7
000062  4640              MOV      r0,r8
000064  f7fffffe          BL       LCD_GetPixelColor
000068  4601              MOV      r1,r0
;;;71                 Color   = LCD_MixColors256(Color, BkColor, Intens);
00006a  4658              MOV      r0,r11
00006c  9a04              LDR      r2,[sp,#0x10]
00006e  f7fffffe          BL       LCD_MixColors256
;;;72                 Index   = LCD_Color2Index(Color);
000072  f7fffffe          BL       LCD_Color2Index
000076  4602              MOV      r2,r0
;;;73                 LCD_SetPixelIndex(xPos, yPos, Index);
000078  4639              MOV      r1,r7
00007a  4640              MOV      r0,r8
00007c  f7fffffe          BL       LCD_SetPixelIndex
;;;74                 xOff++;
000080  9801              LDR      r0,[sp,#4]
000082  1c40              ADDS     r0,r0,#1
;;;75               } while (--XSize);
000084  9001              STR      r0,[sp,#4]
000086  1e6d              SUBS     r5,r5,#1
000088  d1da              BNE      |L3.64|
                  |L3.138|
;;;76               XSize = GUI_USAGE_GetNextDirty(pUsage, &xOff, yi);
00008a  f8da0008          LDR      r0,[r10,#8]
00008e  4632              MOV      r2,r6
000090  6943              LDR      r3,[r0,#0x14]
000092  a901              ADD      r1,sp,#4
000094  4650              MOV      r0,r10
000096  4798              BLX      r3
000098  0005              MOVS     r5,r0
00009a  d1c8              BNE      |L3.46|
00009c  1c76              ADDS     r6,r6,#1              ;50
                  |L3.158|
00009e  9802              LDR      r0,[sp,#8]            ;50
0000a0  4286              CMP      r6,r0                 ;50
0000a2  dbc1              BLT      |L3.40|
                  |L3.164|
;;;77             }
;;;78           }
;;;79         }
;;;80       }
;;;81     }
0000a4  b007              ADD      sp,sp,#0x1c
0000a6  e8bd8ff0          POP      {r4-r11,pc}
;;;82     
                          ENDP

⌨️ 快捷键说明

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