📄 gui_drawbitmapmag.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_drawbitmapmag.o --depend=.\Obj\gui_drawbitmapmag.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_DrawBitmapMag.c]
THUMB
AREA ||i.GUI_DrawBitmapMag||, CODE, READONLY, ALIGN=2
GUI_DrawBitmapMag PROC
;;;32 */
;;;33 void GUI_DrawBitmapMag(const GUI_BITMAP GUI_UNI_PTR *pBitmap, int x0, int y0, int xMul, int yMul) {
000000 e92d4ff0 PUSH {r4-r11,lr}
;;;34 GUI_DRAWMODE PrevDraw;
;;;35 int xSize, ySize;
;;;36 const GUI_LOGPALETTE GUI_UNI_PTR * pPal;
;;;37 const LCD_PIXELINDEX* pTrans;
;;;38 GUI_LOCK();
;;;39 pPal = pBitmap->pPal;
;;;40 xSize = pBitmap->XSize;
;;;41 ySize = pBitmap->YSize;
;;;42 pTrans = LCD_GetpPalConvTable(pPal);
000004 68c5 LDR r5,[r0,#0xc]
000006 4604 MOV r4,r0 ;33
000008 f8b09000 LDRH r9,[r0,#0] ;40
00000c f8b0a002 LDRH r10,[r0,#2] ;41
000010 b089 SUB sp,sp,#0x24 ;33
000012 460f MOV r7,r1 ;33
000014 4690 MOV r8,r2 ;33
000016 469b MOV r11,r3 ;33
000018 4628 MOV r0,r5
00001a f7fffffe BL LCD_GetpPalConvTable
00001e 0006 MOVS r6,r0
000020 f04f0100 MOV r1,#0 ;37
;;;43 if (!pTrans) {
000024 d104 BNE |L1.48|
;;;44 pTrans = (pBitmap->BitsPerPixel != 1) ? NULL : &LCD_BKCOLORINDEX;
000026 88e0 LDRH r0,[r4,#6]
000028 460e MOV r6,r1
00002a 2801 CMP r0,#1
00002c d100 BNE |L1.48|
00002e 4e24 LDR r6,|L1.192|
|L1.48|
;;;45 }
;;;46 PrevDraw = GUI_SetDrawMode((pPal && pPal->HasTrans) ? GUI_DRAWMODE_TRANS : 0);
000030 b115 CBZ r5,|L1.56|
000032 7928 LDRB r0,[r5,#4]
000034 b100 CBZ r0,|L1.56|
000036 2102 MOVS r1,#2
|L1.56|
000038 4608 MOV r0,r1
00003a f7fffffe BL GUI_SetDrawMode
;;;47 #if (GUI_WINSUPPORT)
;;;48 WM_ADDORG(x0,y0);
00003e 9008 STR r0,[sp,#0x20]
000040 481f LDR r0,|L1.192|
;;;49 {
;;;50 GUI_RECT r;
;;;51 r.x0 = x0;
;;;52 r.x1 = x0 + xSize * xMul -1;
;;;53 r.y0 = y0;
;;;54 r.y1 = y0 + ySize * yMul -1;
000042 9a12 LDR r2,[sp,#0x48]
000044 6c01 LDR r1,[r0,#0x40] ;48 ; GUI_Context
000046 440f ADD r7,r7,r1 ;48
000048 6c41 LDR r1,[r0,#0x44] ;48 ; GUI_Context
00004a 1e78 SUBS r0,r7,#1 ;52
00004c fb09000b MLA r0,r9,r11,r0 ;52
000050 4488 ADD r8,r8,r1 ;48
000052 f8ad001c STRH r0,[sp,#0x1c] ;52
000056 f1a80001 SUB r0,r8,#1
00005a fb0a0002 MLA r0,r10,r2,r0
00005e f8ad7018 STRH r7,[sp,#0x18] ;51
000062 f8ad001e STRH r0,[sp,#0x1e]
000066 f8ad801a STRH r8,[sp,#0x1a] ;53
;;;55 WM_ITERATE_START(&r);
00006a a806 ADD r0,sp,#0x18
00006c f7fffffe BL WM__InitIVRSearch
000070 e01e B |L1.176|
|L1.114|
;;;56 #endif
;;;57 if (pBitmap->pMethods) {
000072 6925 LDR r5,[r4,#0x10]
000074 b165 CBZ r5,|L1.144|
;;;58 #if GUI_COMPILER_SUPPORTS_FP /* Do not support this on VERY simple chips and compilers */
;;;59 pBitmap->pMethods->pfDraw(x0, y0, pBitmap->XSize ,pBitmap->YSize, (U8 const *)pBitmap->pData, pBitmap->pPal, xMul, yMul);
000076 9b12 LDR r3,[sp,#0x48]
000078 e9d40102 LDRD r0,r1,[r4,#8]
00007c e88d0803 STM sp,{r0,r1,r11}
000080 9303 STR r3,[sp,#0xc]
000082 682d LDR r5,[r5,#0]
000084 8863 LDRH r3,[r4,#2]
000086 8822 LDRH r2,[r4,#0]
000088 4641 MOV r1,r8
00008a 4638 MOV r0,r7
00008c 47a8 BLX r5
00008e e00d B |L1.172|
|L1.144|
;;;60 #endif
;;;61 } else {
;;;62 LCD_DrawBitmap(x0, y0, xSize, ySize, xMul, yMul
000090 88e0 LDRH r0,[r4,#6]
000092 88a1 LDRH r1,[r4,#4]
000094 68a2 LDR r2,[r4,#8]
000096 ab02 ADD r3,sp,#8
000098 c347 STM r3!,{r0-r2,r6}
00009a 9b12 LDR r3,[sp,#0x48]
00009c 464a MOV r2,r9
00009e e9cdb300 STRD r11,r3,[sp,#0]
0000a2 4653 MOV r3,r10
0000a4 4641 MOV r1,r8
0000a6 4638 MOV r0,r7
0000a8 f7fffffe BL LCD_DrawBitmap
|L1.172|
;;;63 ,pBitmap->BitsPerPixel, pBitmap->BytesPerLine
;;;64 ,pBitmap->pData, pTrans);
;;;65 }
;;;66 #if (GUI_WINSUPPORT)
;;;67 WM_ITERATE_END();
0000ac f7fffffe BL WM__GetNextIVR
|L1.176|
0000b0 2800 CMP r0,#0
0000b2 d1de BNE |L1.114|
;;;68 }
;;;69 #endif
;;;70 GUI_SetDrawMode(PrevDraw);
0000b4 9808 LDR r0,[sp,#0x20]
0000b6 b009 ADD sp,sp,#0x24
0000b8 e8bd4ff0 POP {r4-r11,lr}
0000bc f7ffbffe B.W GUI_SetDrawMode
;;;71 GUI_UNLOCK();
;;;72 }
;;;73
ENDP
|L1.192|
DCD GUI_Context
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -