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

📄 guiaachar.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\guiaachar.o --depend=.\Obj\guiaachar.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\AntiAlias\GUIAAChar.c]
                          THUMB

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

                  Draw PROC
;;;55     */
;;;56     static void Draw(int x0, int y0, int XSize, int YSize, int BytesPerLine, const U8*pData) {
000000  e92d5fff          PUSH     {r0-r12,lr}
000004  460f              MOV      r7,r1
;;;57         int x, y;
;;;58         tSetPixelAA* pfSetPixelAA;
;;;59         pfSetPixelAA = (GUI_Context.TextMode & GUI_TM_TRANS)
;;;60                      ? LCD_SetPixelAA : LCD_SetPixelAA_NoTrans;
000006  4930              LDR      r1,|L1.200|
000008  4606              MOV      r6,r0                 ;56
00000a  8d49              LDRH     r1,[r1,#0x2a]  ; GUI_Context
00000c  482d              LDR      r0,|L1.196|
00000e  f8ddb03c          LDR      r11,[sp,#0x3c]
000012  0789              LSLS     r1,r1,#30
000014  d400              BMI      |L1.24|
000016  482d              LDR      r0,|L1.204|
                  |L1.24|
;;;61     	  for (y=0; y<YSize; y++) {
000018  2500              MOVS     r5,#0
00001a  4682              MOV      r10,r0                ;60
00001c  e04c              B        |L1.184|
                  |L1.30|
;;;62       	  const U8* pData0 = pData;
;;;63     	    const U8* pData1 = pData+BytesPerLine;
00001e  990e              LDR      r1,[sp,#0x38]
000020  46d8              MOV      r8,r11                ;62
000022  eb0b0901          ADD      r9,r11,r1
;;;64       	  for (x=0; x<XSize; x++) {
000026  2400              MOVS     r4,#0
000028  e03f              B        |L1.170|
                  |L1.42|
;;;65             int PixelCnt=0;
;;;66             int Mask0 = Bit2Mask0[x&3];
;;;67             int Mask1 = Bit2Mask1[x&3];
00002a  4b29              LDR      r3,|L1.208|
00002c  f0040203          AND      r2,r4,#3              ;66
000030  4927              LDR      r1,|L1.208|
000032  1d1b              ADDS     r3,r3,#4
000034  5c89              LDRB     r1,[r1,r2]            ;66
000036  f813c002          LDRB     r12,[r3,r2]
;;;68     			  if ((*pData0) & Mask0)
00003a  f8982000          LDRB     r2,[r8,#0]
00003e  2000              MOVS     r0,#0                 ;65
000040  420a              TST      r2,r1
000042  d000              BEQ      |L1.70|
;;;69     			    PixelCnt++;
000044  2001              MOVS     r0,#1
                  |L1.70|
;;;70     			  if ((*pData0) & Mask1)
000046  ea120f0c          TST      r2,r12
00004a  d000              BEQ      |L1.78|
;;;71     			    PixelCnt++;
00004c  1c40              ADDS     r0,r0,#1
                  |L1.78|
;;;72     			  if ((*pData1) & Mask0)
00004e  f8992000          LDRB     r2,[r9,#0]
000052  420a              TST      r2,r1
000054  d000              BEQ      |L1.88|
;;;73     			    PixelCnt++;
000056  1c40              ADDS     r0,r0,#1
                  |L1.88|
;;;74     			  if ((*pData1) & Mask1)
000058  ea120f0c          TST      r2,r12
00005c  d000              BEQ      |L1.96|
;;;75     			    PixelCnt++;
00005e  1c40              ADDS     r0,r0,#1
                  |L1.96|
;;;76             if ((x&3) ==3) {
000060  43e1              MVNS     r1,r4
000062  0789              LSLS     r1,r1,#30
000064  d103              BNE      |L1.110|
;;;77               pData0++;
000066  f1080801          ADD      r8,r8,#1
;;;78               pData1++;
00006a  f1090901          ADD      r9,r9,#1
                  |L1.110|
;;;79     			  }
;;;80             switch (PixelCnt) {
00006e  2801              CMP      r0,#1
000070  d016              BEQ      |L1.160|
000072  2802              CMP      r0,#2
000074  d00e              BEQ      |L1.148|
000076  2803              CMP      r0,#3
000078  d008              BEQ      |L1.140|
00007a  2804              CMP      r0,#4
00007c  d114              BNE      |L1.168|
;;;81             case 4: LCD_HL_DrawPixel(x0+x,y0+y);      break;
00007e  4a12              LDR      r2,|L1.200|
000080  1979              ADDS     r1,r7,r5
000082  6d92              LDR      r2,[r2,#0x58]  ; GUI_Context
000084  1930              ADDS     r0,r6,r4
000086  6852              LDR      r2,[r2,#4]
000088  4790              BLX      r2
00008a  e00d              B        |L1.168|
                  |L1.140|
;;;82             case 3: (*pfSetPixelAA) (x0+x,y0+y, 12); break;
00008c  1979              ADDS     r1,r7,r5
00008e  1930              ADDS     r0,r6,r4
000090  220c              MOVS     r2,#0xc
000092  e002              B        |L1.154|
                  |L1.148|
;;;83             case 2: (*pfSetPixelAA) (x0+x,y0+y, 8);  break;
000094  1979              ADDS     r1,r7,r5
000096  1930              ADDS     r0,r6,r4
000098  2208              MOVS     r2,#8
                  |L1.154|
00009a  4653              MOV      r3,r10                ;82
00009c  4798              BLX      r3                    ;82
00009e  e003              B        |L1.168|
                  |L1.160|
;;;84             case 1: (*pfSetPixelAA) (x0+x,y0+y, 4);  break;
0000a0  1979              ADDS     r1,r7,r5
0000a2  1930              ADDS     r0,r6,r4
0000a4  2204              MOVS     r2,#4
0000a6  e7f8              B        |L1.154|
                  |L1.168|
0000a8  1c64              ADDS     r4,r4,#1              ;64
                  |L1.170|
0000aa  9802              LDR      r0,[sp,#8]            ;64
0000ac  4284              CMP      r4,r0                 ;64
0000ae  dbbc              BLT      |L1.42|
;;;85     			  }
;;;86       	  }
;;;87           pData+=2*BytesPerLine;
0000b0  990e              LDR      r1,[sp,#0x38]
0000b2  1c6d              ADDS     r5,r5,#1              ;61
0000b4  eb0b0b41          ADD      r11,r11,r1,LSL #1
                  |L1.184|
0000b8  9803              LDR      r0,[sp,#0xc]          ;61
0000ba  4285              CMP      r5,r0                 ;61
0000bc  dbaf              BLT      |L1.30|
;;;88     	  }
;;;89     }
0000be  e8bd9fff          POP      {r0-r12,pc}
;;;90     
                          ENDP

0000c2  0000              DCW      0x0000
                  |L1.196|
                          DCD      LCD_SetPixelAA
                  |L1.200|
                          DCD      GUI_Context
                  |L1.204|
                          DCD      LCD_SetPixelAA_NoTrans
                  |L1.208|
                          DCD      ||.constdata||

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

                  GUIPROPAA_DispChar PROC
;;;112    */
;;;113    void GUIPROPAA_DispChar(U16P c) {
000000  e92d41fc          PUSH     {r2-r8,lr}
;;;114      int BytesPerLine;
;;;115      GUI_DRAWMODE DrawMode = GUI_Context.TextMode;
000004  4d16              LDR      r5,|L2.96|
000006  4604              MOV      r4,r0                 ;113
;;;116      const GUI_FONT_PROP* pProp = GUIPROP_FindChar(GUI_Context.pAFont->p.pProp, c);
000008  69a8              LDR      r0,[r5,#0x18]  ; GUI_Context
00000a  f9b5602a          LDRSH    r6,[r5,#0x2a]         ;115  ; GUI_Context
00000e  6980              LDR      r0,[r0,#0x18]
000010  4621              MOV      r1,r4
000012  f7fffffe          BL       GUIPROP_FindChar
;;;117      if (pProp) {
000016  2800              CMP      r0,#0
000018  d020              BEQ      |L2.92|
;;;118        GUI_DRAWMODE OldDrawMode;
;;;119        const GUI_CHARINFO* pCharInfo = pProp->paCharInfo+(c-pProp->First);
00001a  6841              LDR      r1,[r0,#4]
00001c  8800              LDRH     r0,[r0,#0]
00001e  1a20              SUBS     r0,r4,r0
000020  eb0104c0          ADD      r4,r1,r0,LSL #3
;;;120        BytesPerLine = pCharInfo->BytesPerLine;
000024  78a7              LDRB     r7,[r4,#2]
;;;121        OldDrawMode  = LCD_SetDrawMode(DrawMode);
000026  4630              MOV      r0,r6
000028  f7fffffe          BL       LCD_SetDrawMode
;;;122        Draw  ( GUI_Context.DispPosX, GUI_Context.DispPosY,
00002c  6863              LDR      r3,[r4,#4]
00002e  4606              MOV      r6,r0                 ;121
000030  e9cd7300          STRD     r7,r3,[sp,#0]
000034  69a8              LDR      r0,[r5,#0x18]  ; GUI_Context
000036  f9b51024          LDRSH    r1,[r5,#0x24]  ; GUI_Context
00003a  7d03              LDRB     r3,[r0,#0x14]
00003c  7820              LDRB     r0,[r4,#0]
00003e  1c40              ADDS     r0,r0,#1
000040  0842              LSRS     r2,r0,#1
000042  f9b50022          LDRSH    r0,[r5,#0x22]  ; GUI_Context
000046  f7fffffe          BL       Draw
;;;123                           (pCharInfo->XSize+1)/2,
;;;124                           GUI_Context.pAFont->YSize,
;;;125                           BytesPerLine,
;;;126                           (U8 const*) pCharInfo->pData
;;;127                           );
;;;128        LCD_SetDrawMode(OldDrawMode); /* Restore draw mode */
00004a  4630              MOV      r0,r6
00004c  f7fffffe          BL       LCD_SetDrawMode
;;;129        GUI_Context.DispPosX += (pCharInfo->XDist+1)/2;
000050  7860              LDRB     r0,[r4,#1]
000052  8c69              LDRH     r1,[r5,#0x22]  ; GUI_Context
000054  1c40              ADDS     r0,r0,#1
000056  eb010050          ADD      r0,r1,r0,LSR #1
00005a  8468              STRH     r0,[r5,#0x22]
                  |L2.92|
;;;130      }
;;;131    }
00005c  e8bd81fc          POP      {r2-r8,pc}
;;;132    
                          ENDP

                  |L2.96|
                          DCD      GUI_Context

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

                  GUIPROPAA_GetCharDistX PROC
;;;136    */
;;;137    int GUIPROPAA_GetCharDistX(U16P c) {
000000  b510              PUSH     {r4,lr}
000002  4604              MOV      r4,r0
;;;138      int r;
;;;139      const GUI_FONT_PROP* pProp = GUIPROP_FindChar(GUI_Context.pAFont->p.pProp, c);
000004  4808              LDR      r0,|L3.40|
000006  4621              MOV      r1,r4
000008  6980              LDR      r0,[r0,#0x18]  ; GUI_Context
00000a  6980              LDR      r0,[r0,#0x18]
00000c  f7fffffe          BL       GUIPROP_FindChar
;;;140      r = (pProp) ? (pProp->paCharInfo+(c-pProp->First))->XSize : 0;
000010  b120              CBZ      r0,|L3.28|
000012  6841              LDR      r1,[r0,#4]
000014  8800              LDRH     r0,[r0,#0]
000016  1a20              SUBS     r0,r4,r0
000018  f8110030          LDRB     r0,[r1,r0,LSL #3]
                  |L3.28|
;;;141      return (r+1)/2;
00001c  1c40              ADDS     r0,r0,#1
00001e  eb0070d0          ADD      r0,r0,r0,LSR #31
000022  1040              ASRS     r0,r0,#1
;;;142    }
000024  bd10              POP      {r4,pc}
;;;143    
                          ENDP

000026  0000              DCW      0x0000
                  |L3.40|
                          DCD      GUI_Context

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

                  GUIPROPAA_GetFontInfo PROC
;;;147    */
;;;148    void GUIPROPAA_GetFontInfo(const GUI_FONT * pFont, GUI_FONTINFO* pfi) {
000000  2005              MOVS     r0,#5
;;;149      GUI_USE_PARA(pFont);
;;;150      pfi->Flags = GUI_FONTINFO_FLAG_PROP | GUI_FONTINFO_FLAG_AA;
000002  8008              STRH     r0,[r1,#0]
;;;151    }
000004  4770              BX       lr
;;;152    
                          ENDP


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

                  GUIPROPAA_IsInFont PROC
;;;156    */
;;;157    char GUIPROPAA_IsInFont(const GUI_FONT * pFont, U16 c) {
000000  b510              PUSH     {r4,lr}
;;;158      const GUI_FONT_PROP* pProp = GUIPROP_FindChar(pFont->p.pProp, c);
000002  6980              LDR      r0,[r0,#0x18]
000004  f7fffffe          BL       GUIPROP_FindChar
;;;159      return (pProp==NULL) ? 0 : 1;
000008  2800              CMP      r0,#0
00000a  d000              BEQ      |L5.14|
00000c  2001              MOVS     r0,#1
                  |L5.14|
;;;160    }
00000e  bd10              POP      {r4,pc}
;;;161    
                          ENDP


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

                  GUIPROP_FindChar PROC
;;;94     */
;;;95     static const GUI_FONT_PROP* GUIPROP_FindChar(const GUI_FONT_PROP* pProp, U16P c) {
000000  4806              LDR      r0,|L6.28|
;;;96       for (pProp = GUI_Context.pAFont->p.pProp; pProp; pProp=(const GUI_FONT_PROP*) pProp->pNext) {
000002  6980              LDR      r0,[r0,#0x18]  ; GUI_Context
000004  6980              LDR      r0,[r0,#0x18]
000006  e006              B        |L6.22|
                  |L6.8|
;;;97         if ((c>=pProp->First) && (c<=pProp->Last))
000008  8802              LDRH     r2,[r0,#0]
00000a  428a              CMP      r2,r1
00000c  d802              BHI      |L6.20|
00000e  8842              LDRH     r2,[r0,#2]
000010  428a              CMP      r2,r1
000012  d202              BCS      |L6.26|
                  |L6.20|
000014  6880              LDR      r0,[r0,#8]            ;96
                  |L6.22|
000016  2800              CMP      r0,#0                 ;96
000018  d1f6              BNE      |L6.8|
                  |L6.26|
;;;98           break;
;;;99       }
;;;100      return pProp;
;;;101    }
00001a  4770              BX       lr
;;;102    
                          ENDP

                  |L6.28|
                          DCD      GUI_Context

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

                  Bit2Mask0
000000  80200802          DCB      0x80,0x20,0x08,0x02
                  Bit2Mask1
000004  40100401          DCB      0x40,0x10,0x04,0x01

⌨️ 快捷键说明

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