📄 gui_bmp.txt
字号:
; 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 + -