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

📄 gui_bmp.txt

📁 STM32F103ZET6+UCOSII+UCGUI源码
💻 TXT
📖 第 1 页 / 共 2 页
字号:
; generated by ARM C/C++ Compiler with , RVCT4.0 [Build 524] for uVision
; commandline ArmCC [--split_sections --debug -c --asm --interleave -o.\Obj\gui_bmp.o --depend=.\Obj\gui_bmp.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\Core\GUI_BMP.c]
                          THUMB

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

                  GUI_BMP_Draw PROC
;;;144    */
;;;145    int GUI_BMP_Draw(const void * pBMP, int x0, int y0) {
000000  e92d4ff7          PUSH     {r0-r2,r4-r11,lr}
000004  b086              SUB      sp,sp,#0x18
;;;146      #if (GUI_WINSUPPORT)
;;;147        GUI_RECT r;
;;;148      #endif
;;;149      int Ret = 0;
;;;150      I32 Width, Height;
;;;151      U16 BitCount, Type;
;;;152      U32 ClrUsed, Compression;
;;;153      int NumColors;
;;;154      const U8 * pSrc = (const U8 *)pBMP;
;;;155      Type        = GUI__Read16(&pSrc); /* get type from BITMAPFILEHEADER */
000006  9003              STR      r0,[sp,#0xc]
000008  468b              MOV      r11,r1                ;145
00000a  2600              MOVS     r6,#0                 ;149
00000c  a803              ADD      r0,sp,#0xc
00000e  f7fffffe          BL       GUI__Read16
000012  4607              MOV      r7,r0
;;;156      pSrc += 12;                   /* skip rest of BITMAPFILEHEADER */
;;;157      /* get values from BITMAPINFOHEADER */
;;;158      pSrc += 4;
000014  9803              LDR      r0,[sp,#0xc]
000016  3010              ADDS     r0,r0,#0x10
;;;159      Width       = GUI__Read32(&pSrc);
000018  9003              STR      r0,[sp,#0xc]
00001a  a803              ADD      r0,sp,#0xc
00001c  f7fffffe          BL       GUI__Read32
000020  4680              MOV      r8,r0
;;;160      Height      = GUI__Read32(&pSrc);
000022  a803              ADD      r0,sp,#0xc
000024  f7fffffe          BL       GUI__Read32
000028  4682              MOV      r10,r0
;;;161      pSrc += 2;
00002a  9803              LDR      r0,[sp,#0xc]
00002c  1c80              ADDS     r0,r0,#2
;;;162      BitCount    = GUI__Read16(&pSrc);
00002e  9003              STR      r0,[sp,#0xc]
000030  a803              ADD      r0,sp,#0xc
000032  f7fffffe          BL       GUI__Read16
000036  4604              MOV      r4,r0
;;;163      Compression = GUI__Read32(&pSrc);
000038  a803              ADD      r0,sp,#0xc
00003a  f7fffffe          BL       GUI__Read32
00003e  4681              MOV      r9,r0
;;;164      pSrc += 12;
000040  9803              LDR      r0,[sp,#0xc]
000042  300c              ADDS     r0,r0,#0xc
;;;165      ClrUsed     = GUI__Read32(&pSrc);
000044  9003              STR      r0,[sp,#0xc]
000046  a803              ADD      r0,sp,#0xc
000048  f7fffffe          BL       GUI__Read32
;;;166      pSrc += 4;
00004c  9903              LDR      r1,[sp,#0xc]
00004e  1d09              ADDS     r1,r1,#4
;;;167      /* calculate number of colors */
;;;168      switch (BitCount) {
;;;169        case 0:   return 1; /* biBitCount = 0 (JPEG format) not supported. Please convert image ! */
;;;170        case 1:   NumColors = 2;   break;
;;;171        case 4:   NumColors = 16;  break;
;;;172        case 8:   NumColors = 256; break;
000050  9103              STR      r1,[sp,#0xc]
000052  f44f7180          MOV      r1,#0x100
000056  2c04              CMP      r4,#4                 ;168
000058  d00b              BEQ      |L1.114|
00005a  dc04              BGT      |L1.102|
00005c  b1ec              CBZ      r4,|L1.154|
00005e  2c01              CMP      r4,#1                 ;168
000060  d11b              BNE      |L1.154|
000062  2502              MOVS     r5,#2                 ;170
000064  e008              B        |L1.120|
                  |L1.102|
000066  2c08              CMP      r4,#8                 ;168
000068  d005              BEQ      |L1.118|
00006a  2c18              CMP      r4,#0x18              ;168
00006c  d115              BNE      |L1.154|
;;;173        case 24:  NumColors = 0;   break;
00006e  2500              MOVS     r5,#0
000070  e006              B        |L1.128|
                  |L1.114|
000072  2510              MOVS     r5,#0x10              ;171
000074  e000              B        |L1.120|
                  |L1.118|
000076  460d              MOV      r5,r1                 ;172
                  |L1.120|
;;;174        default:
;;;175          return 1; /* biBitCount should be 1, 4, 8 or 24 */
;;;176      }
;;;177      if (NumColors && ClrUsed) {
000078  b100              CBZ      r0,|L1.124|
;;;178        NumColors = ClrUsed;
00007a  4605              MOV      r5,r0
                  |L1.124|
;;;179      }
;;;180      /* check validity of bmp */
;;;181      if ((NumColors > LCD_MAX_LOG_COLORS) ||
00007c  428d              CMP      r5,r1
00007e  dc0c              BGT      |L1.154|
                  |L1.128|
;;;182          (Type != 0x4d42)                 || /* 'BM' */
000080  f5a7409a          SUB      r0,r7,#0x4d00
000084  3842              SUBS     r0,r0,#0x42
000086  d108              BNE      |L1.154|
;;;183          (Compression)                    || /* only uncompressed bitmaps */
000088  f1b90f00          CMP      r9,#0
00008c  d105              BNE      |L1.154|
;;;184          (Width  > 1024)                  ||
00008e  f44f6180          MOV      r1,#0x400
000092  4588              CMP      r8,r1
000094  dc01              BGT      |L1.154|
;;;185          (Height > 1024)) {
000096  458a              CMP      r10,r1
000098  dd03              BLE      |L1.162|
                  |L1.154|
;;;186        return 1;
00009a  2001              MOVS     r0,#1
                  |L1.156|
;;;187      }
;;;188      /* start output */
;;;189      GUI_LOCK();
;;;190      #if (GUI_WINSUPPORT)
;;;191        WM_ADDORG(x0,y0);
;;;192        r.x1 = (r.x0 = x0) + Width - 1;
;;;193        r.y1 = (r.y0 = y0) + Height - 1;
;;;194        WM_ITERATE_START(&r) {
;;;195      #endif
;;;196      /* Show bitmap */
;;;197      switch (BitCount) {
;;;198        case 1:
;;;199        case 4:
;;;200        case 8:
;;;201          Ret = _DrawBitmap_Pal(pSrc, x0, y0, Width, Height, BitCount, NumColors);
;;;202          break;
;;;203        case 24:
;;;204          Ret = _DrawBitmap_24bpp(pSrc, x0, y0, Width, Height);
;;;205          break;
;;;206      }
;;;207      #if (GUI_WINSUPPORT)
;;;208        } WM_ITERATE_END();
;;;209      #endif
;;;210      GUI_UNLOCK();
;;;211      return Ret;
;;;212    }
00009c  b009              ADD      sp,sp,#0x24
00009e  e8bd8ff0          POP      {r4-r11,pc}
                  |L1.162|
0000a2  491e              LDR      r1,|L1.284|
0000a4  6c0a              LDR      r2,[r1,#0x40]         ;191  ; GUI_Context
0000a6  6c48              LDR      r0,[r1,#0x44]         ;191  ; GUI_Context
0000a8  9908              LDR      r1,[sp,#0x20]         ;191
0000aa  eb02070b          ADD      r7,r2,r11             ;191
0000ae  eb000901          ADD      r9,r0,r1              ;191
0000b2  eb070008          ADD      r0,r7,r8              ;192
0000b6  1e40              SUBS     r0,r0,#1              ;192
0000b8  f8ad0014          STRH     r0,[sp,#0x14]         ;192
0000bc  eb09000a          ADD      r0,r9,r10             ;193
0000c0  1e40              SUBS     r0,r0,#1              ;193
0000c2  f8ad7010          STRH     r7,[sp,#0x10]         ;192
0000c6  f8ad0016          STRH     r0,[sp,#0x16]         ;193
0000ca  f8ad9012          STRH     r9,[sp,#0x12]         ;193
0000ce  a804              ADD      r0,sp,#0x10           ;194
0000d0  f7fffffe          BL       WM__InitIVRSearch
0000d4  e01d              B        |L1.274|
                  |L1.214|
0000d6  2c01              CMP      r4,#1                 ;197
0000d8  d00f              BEQ      |L1.250|
0000da  2c04              CMP      r4,#4                 ;197
0000dc  d00d              BEQ      |L1.250|
0000de  2c08              CMP      r4,#8                 ;197
0000e0  d00b              BEQ      |L1.250|
0000e2  2c18              CMP      r4,#0x18              ;197
0000e4  d113              BNE      |L1.270|
0000e6  4643              MOV      r3,r8                 ;204
0000e8  464a              MOV      r2,r9                 ;204
0000ea  4639              MOV      r1,r7                 ;204
0000ec  f8cda000          STR      r10,[sp,#0]           ;204
0000f0  9803              LDR      r0,[sp,#0xc]          ;204
0000f2  f7fffffe          BL       _DrawBitmap_24bpp
                  |L1.246|
0000f6  4606              MOV      r6,r0                 ;201
0000f8  e009              B        |L1.270|
                  |L1.250|
0000fa  e9cda400          STRD     r10,r4,[sp,#0]        ;201
0000fe  4643              MOV      r3,r8                 ;201
000100  464a              MOV      r2,r9                 ;201
000102  4639              MOV      r1,r7                 ;201
000104  9502              STR      r5,[sp,#8]            ;201
000106  9803              LDR      r0,[sp,#0xc]          ;201
000108  f7fffffe          BL       _DrawBitmap_Pal
00010c  e7f3              B        |L1.246|
                  |L1.270|
00010e  f7fffffe          BL       WM__GetNextIVR
                  |L1.274|
000112  2800              CMP      r0,#0                 ;208
000114  d1df              BNE      |L1.214|
000116  4630              MOV      r0,r6                 ;211
000118  e7c0              B        |L1.156|
;;;213    
                          ENDP

00011a  0000              DCW      0x0000
                  |L1.284|
                          DCD      GUI_Context

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

                  GUI_BMP_GetXSize PROC
;;;118    */
;;;119    int GUI_BMP_GetXSize(const void * pBMP) {
000000  b508              PUSH     {r3,lr}
;;;120      const U8 * pSrc = (const U8 *)pBMP;
;;;121      if (!pBMP) {
000002  9000              STR      r0,[sp,#0]
000004  2800              CMP      r0,#0
000006  d004              BEQ      |L2.18|
;;;122        return 0;
;;;123      }
;;;124      pSrc += 18;                   /* skip rest of BITMAPFILEHEADER */
000008  3012              ADDS     r0,r0,#0x12
;;;125      return GUI__Read32(&pSrc);
00000a  9000              STR      r0,[sp,#0]
00000c  4668              MOV      r0,sp
00000e  f7fffffe          BL       GUI__Read32
                  |L2.18|
;;;126    }
000012  bd08              POP      {r3,pc}
;;;127    
                          ENDP


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

                  GUI_BMP_GetYSize PROC
;;;131    */
;;;132    int GUI_BMP_GetYSize(const void * pBMP) {
000000  b508              PUSH     {r3,lr}
;;;133      const U8 * pSrc = (const U8 *)pBMP;
;;;134      if (!pBMP) {
000002  9000              STR      r0,[sp,#0]
000004  2800              CMP      r0,#0
000006  d007              BEQ      |L3.24|
;;;135        return 0;
;;;136      }
;;;137      pSrc += 22;
000008  3016              ADDS     r0,r0,#0x16
;;;138      return labs((int)GUI__Read32(&pSrc));
00000a  9000              STR      r0,[sp,#0]
00000c  4668              MOV      r0,sp
00000e  f7fffffe          BL       GUI__Read32

⌨️ 快捷键说明

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