gui_drawbitmap.txt
来自「STM32F103ZET6+UCOSII+UCGUI源码」· 文本 代码 · 共 157 行
TXT
157 行
; generated by ARM C/C++ Compiler with , RVCT4.0 [Build 524] for uVision
; commandline ArmCC [--split_sections --debug -c --asm --interleave -o.\Obj\gui_drawbitmap.o --depend=.\Obj\gui_drawbitmap.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_DrawBitmap.c]
THUMB
AREA ||i.GL_DrawBitmap||, CODE, READONLY, ALIGN=2
GL_DrawBitmap PROC
;;;38 */
;;;39 void GL_DrawBitmap(const GUI_BITMAP GUI_UNI_PTR * pBitmap, int x0, int y0) {
000000 e92d41f0 PUSH {r4-r8,lr}
000004 4604 MOV r4,r0
;;;40 GUI_DRAWMODE PrevDraw;
;;;41 const GUI_LOGPALETTE GUI_UNI_PTR * pPal;
;;;42 pPal = pBitmap->pPal;
;;;43 PrevDraw = GUI_SetDrawMode(0); /* No Get... at this point */
000006 68c7 LDR r7,[r0,#0xc]
000008 b086 SUB sp,sp,#0x18 ;39
00000a 460e MOV r6,r1 ;39
00000c 4690 MOV r8,r2 ;39
00000e 2000 MOVS r0,#0
000010 f7fffffe BL GUI_SetDrawMode
000014 4605 MOV r5,r0
;;;44 GUI_SetDrawMode((pPal && pPal->HasTrans) ? (PrevDraw|GUI_DRAWMODE_TRANS) : PrevDraw &(~GUI_DRAWMODE_TRANS));
000016 f0200002 BIC r0,r0,#2
00001a b11f CBZ r7,|L1.36|
00001c 7939 LDRB r1,[r7,#4]
00001e b109 CBZ r1,|L1.36|
000020 f0450002 ORR r0,r5,#2
|L1.36|
000024 f7fffffe BL GUI_SetDrawMode
;;;45 if (pBitmap->pMethods) {
000028 6927 LDR r7,[r4,#0x10]
00002a b167 CBZ r7,|L1.70|
;;;46 #if GUI_COMPILER_SUPPORTS_FP /* Do not support this on VERY simple chips and compilers */
;;;47 pBitmap->pMethods->pfDraw(x0, y0, pBitmap->XSize ,pBitmap->YSize, (U8 const *)pBitmap->pData, pBitmap->pPal, 1, 1);
00002c e9d40102 LDRD r0,r1,[r4,#8]
000030 2301 MOVS r3,#1
000032 e88d000b STM sp,{r0,r1,r3}
000036 9303 STR r3,[sp,#0xc]
000038 8863 LDRH r3,[r4,#2]
00003a 8822 LDRH r2,[r4,#0]
00003c 683c LDR r4,[r7,#0]
00003e 4641 MOV r1,r8
000040 4630 MOV r0,r6
000042 47a0 BLX r4
000044 e017 B |L1.118|
|L1.70|
;;;48 #endif
;;;49 } else {
;;;50 const LCD_PIXELINDEX* pTrans;
;;;51 pTrans = LCD_GetpPalConvTable(pBitmap->pPal);
000046 68e0 LDR r0,[r4,#0xc]
000048 f7fffffe BL LCD_GetpPalConvTable
;;;52 if (!pTrans) {
00004c b920 CBNZ r0,|L1.88|
;;;53 pTrans = (pBitmap->BitsPerPixel != 1) ? NULL : &LCD_BKCOLORINDEX;
00004e 88e1 LDRH r1,[r4,#6]
000050 2000 MOVS r0,#0
000052 2901 CMP r1,#1
000054 d100 BNE |L1.88|
000056 480b LDR r0,|L1.132|
|L1.88|
;;;54 }
;;;55 LCD_DrawBitmap( x0,y0
000058 88a1 LDRH r1,[r4,#4]
00005a 4603 MOV r3,r0
00005c 88e0 LDRH r0,[r4,#6]
00005e 68a2 LDR r2,[r4,#8]
000060 af02 ADD r7,sp,#8
000062 c70f STM r7!,{r0-r3}
000064 2301 MOVS r3,#1
000066 9300 STR r3,[sp,#0]
000068 9301 STR r3,[sp,#4]
00006a 8863 LDRH r3,[r4,#2]
00006c 8822 LDRH r2,[r4,#0]
00006e 4641 MOV r1,r8
000070 4630 MOV r0,r6
000072 f7fffffe BL LCD_DrawBitmap
|L1.118|
;;;56 ,pBitmap->XSize ,pBitmap->YSize
;;;57 ,1,1
;;;58 ,pBitmap->BitsPerPixel
;;;59 ,pBitmap->BytesPerLine
;;;60 ,pBitmap->pData
;;;61 ,pTrans);
;;;62 }
;;;63 GUI_SetDrawMode(PrevDraw);
000076 4628 MOV r0,r5
000078 b006 ADD sp,sp,#0x18
00007a e8bd41f0 POP {r4-r8,lr}
00007e f7ffbffe B.W GUI_SetDrawMode
;;;64 }
;;;65
ENDP
000082 0000 DCW 0x0000
|L1.132|
DCD GUI_Context
AREA ||i.GUI_DrawBitmap||, CODE, READONLY, ALIGN=2
GUI_DrawBitmap PROC
;;;69 */
;;;70 void GUI_DrawBitmap(const GUI_BITMAP GUI_UNI_PTR * pBitmap, int x0, int y0) {
000000 b57c PUSH {r2-r6,lr}
000002 4605 MOV r5,r0
;;;71 #if (GUI_WINSUPPORT)
;;;72 GUI_RECT r;
;;;73 #endif
;;;74 GUI_LOCK();
;;;75 #if (GUI_WINSUPPORT)
;;;76 WM_ADDORG(x0,y0);
000004 4810 LDR r0,|L2.72|
000006 6c03 LDR r3,[r0,#0x40] ; GUI_Context
000008 6c40 LDR r0,[r0,#0x44] ; GUI_Context
00000a 185e ADDS r6,r3,r1
00000c 1884 ADDS r4,r0,r2
;;;77 r.x1 = (r.x0 = x0) + pBitmap->XSize-1;
00000e 8829 LDRH r1,[r5,#0]
000010 1e70 SUBS r0,r6,#1
000012 4408 ADD r0,r0,r1
000014 f8ad0004 STRH r0,[sp,#4]
000018 f8ad6000 STRH r6,[sp,#0]
;;;78 r.y1 = (r.y0 = y0) + pBitmap->YSize-1;
00001c 8869 LDRH r1,[r5,#2]
00001e 1e60 SUBS r0,r4,#1
000020 4408 ADD r0,r0,r1
000022 f8ad0006 STRH r0,[sp,#6]
000026 f8ad4002 STRH r4,[sp,#2]
;;;79 WM_ITERATE_START(&r) {
00002a 4668 MOV r0,sp
00002c f7fffffe BL WM__InitIVRSearch
000030 e006 B |L2.64|
|L2.50|
;;;80 #endif
;;;81 GL_DrawBitmap(pBitmap, x0, y0);
000032 4622 MOV r2,r4
000034 4631 MOV r1,r6
000036 4628 MOV r0,r5
000038 f7fffffe BL GL_DrawBitmap
;;;82 #if (GUI_WINSUPPORT)
;;;83 } WM_ITERATE_END();
00003c f7fffffe BL WM__GetNextIVR
|L2.64|
000040 2800 CMP r0,#0
000042 d1f6 BNE |L2.50|
;;;84 #endif
;;;85 GUI_UNLOCK();
;;;86 }
000044 bd7c POP {r2-r6,pc}
;;;87
ENDP
000046 0000 DCW 0x0000
|L2.72|
DCD GUI_Context
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?