📄 guidev_banding.txt
字号:
; generated by ARM C/C++ Compiler with , RVCT4.0 [Build 524] for uVision
; commandline ArmCC [--split_sections --debug -c --asm --interleave -o.\Obj\guidev_banding.o --depend=.\Obj\guidev_banding.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\MemDev\GUIDEV_Banding.c]
THUMB
AREA ||i.GUI_MEMDEV_Draw||, CODE, READONLY, ALIGN=1
GUI_MEMDEV_Draw PROC
;;;75 */
;;;76 int GUI_MEMDEV_Draw(GUI_RECT* pRect, GUI_CALLBACK_VOID_P* pfDraw, void* pData, int NumLines, int Flags) {
000000 e92d4ff8 PUSH {r3-r11,lr}
;;;77 int x0, y0, x1, y1, xsize, ysize;
;;;78 GUI_MEMDEV_Handle hMD;
;;;79 if (pRect) {
000004 f8dda028 LDR r10,[sp,#0x28]
000008 0004 MOVS r4,r0 ;76
00000a 4688 MOV r8,r1 ;76
00000c 4693 MOV r11,r2 ;76
00000e 461f MOV r7,r3 ;76
000010 d021 BEQ |L1.86|
;;;80 x0 = (pRect->x0 < 0) ? 0 : pRect->x0;
000012 2600 MOVS r6,#0
000014 f9b41000 LDRSH r1,[r4,#0]
000018 4630 MOV r0,r6
00001a 2900 CMP r1,#0
00001c db00 BLT |L1.32|
00001e 4608 MOV r0,r1
|L1.32|
000020 4681 MOV r9,r0
;;;81 y0 = (pRect->y0 < 0) ? 0 : pRect->y0;
000022 f9b40002 LDRSH r0,[r4,#2]
000026 2800 CMP r0,#0
000028 db00 BLT |L1.44|
00002a 4606 MOV r6,r0
|L1.44|
;;;82 #if GUI_NUM_LAYERS == 1
;;;83 x1 = _Min(pRect->x1, LCD_GET_XSIZE() - 1);
00002c f7fffffe BL LCD_GetXSize
000030 1e41 SUBS r1,r0,#1
000032 f9b40004 LDRSH r0,[r4,#4]
000036 f7fffffe BL _Min
00003a 4605 MOV r5,r0
;;;84 y1 = _Min(pRect->y1, LCD_GET_YSIZE() - 1);
00003c f7fffffe BL LCD_GetYSize
000040 1e41 SUBS r1,r0,#1
000042 f9b40006 LDRSH r0,[r4,#6]
000046 f7fffffe BL _Min
;;;85 #else
;;;86 x1 = _Min(pRect->x1, LCD_GetXSizeEx(GUI_Context.SelLayer) - 1);
;;;87 y1 = _Min(pRect->y1, LCD_GetYSizeEx(GUI_Context.SelLayer) - 1);
;;;88 #endif
;;;89 xsize = x1 - x0 + 1;
00004a eba50409 SUB r4,r5,r9
00004e 1c64 ADDS r4,r4,#1
;;;90 ysize = y1 - y0 + 1;
000050 1b85 SUBS r5,r0,r6
000052 1c6d ADDS r5,r5,#1
000054 e008 B |L1.104|
|L1.86|
;;;91 } else {
;;;92 x0 = 0;
000056 f04f0900 MOV r9,#0
;;;93 y0 = 0;
00005a 464e MOV r6,r9
;;;94 #if GUI_NUM_LAYERS == 1
;;;95 xsize = LCD_GET_XSIZE();
00005c f7fffffe BL LCD_GetXSize
000060 4604 MOV r4,r0
;;;96 ysize = LCD_GET_YSIZE();
000062 f7fffffe BL LCD_GetYSize
000066 4605 MOV r5,r0
|L1.104|
;;;97 #else
;;;98 xsize = LCD_GetXSizeEx(GUI_Context.SelLayer);
;;;99 ysize = LCD_GetYSizeEx(GUI_Context.SelLayer);
;;;100 #endif
;;;101 }
;;;102 if (NumLines == 0) {
000068 b907 CBNZ r7,|L1.108|
;;;103 NumLines = -ysize; /* Request <ysize> lines ... Less is o.k. */
00006a 426f RSBS r7,r5,#0
|L1.108|
;;;104 }
;;;105 if ((xsize <= 0) || (ysize <= 0))
00006c 2c00 CMP r4,#0
00006e dd01 BLE |L1.116|
000070 2d00 CMP r5,#0
000072 dc02 BGT |L1.122|
|L1.116|
;;;106 return 0; /* Nothing to do ... */
000074 2000 MOVS r0,#0
|L1.118|
;;;107 /* Create memory device */
;;;108 hMD = GUI_MEMDEV_CreateEx(x0, y0, xsize, NumLines, Flags);
;;;109 if (!hMD) {
;;;110 GUI_DEBUG_ERROROUT("GUI_MEMDEV_Draw() Not enough memory ..."); /* Not enough memory ! */
;;;111 pfDraw(pData);
;;;112 return 1;
;;;113 }
;;;114 NumLines = GUI_MEMDEV_GetYSize(hMD);
;;;115 GUI_MEMDEV_Select(hMD);
;;;116 /* Start drawing ... */
;;;117 {
;;;118 int i;
;;;119 for (i = 0; i < ysize; i += NumLines) {
;;;120 int RemLines = ysize - i;
;;;121 if (RemLines < NumLines) {
;;;122 GUI_MEMDEV_ReduceYSize(hMD, RemLines);
;;;123 }
;;;124 if (i) {
;;;125 GUI_MEMDEV_SetOrg(hMD, x0, y0 + i);
;;;126 GUI_MEMDEV_Clear(hMD);
;;;127 }
;;;128 pfDraw(pData);
;;;129 GUI_MEMDEV_CopyToLCD(hMD);
;;;130 }
;;;131 }
;;;132 GUI_MEMDEV_Delete(hMD);
;;;133 GUI_MEMDEV_Select(0);
;;;134 return 0; /* Success ! */
;;;135 }
000076 e8bd8ff8 POP {r3-r11,pc}
|L1.122|
00007a 463b MOV r3,r7 ;108
00007c 4622 MOV r2,r4 ;108
00007e 4631 MOV r1,r6 ;108
000080 4648 MOV r0,r9 ;108
000082 f8cda000 STR r10,[sp,#0] ;108
000086 f7fffffe BL GUI_MEMDEV_CreateEx
00008a ea5f0a00 MOVS r10,r0 ;108
00008e d104 BNE |L1.154|
000090 4658 MOV r0,r11 ;111
000092 4641 MOV r1,r8 ;111
000094 4788 BLX r1 ;111
000096 2001 MOVS r0,#1 ;112
000098 e7ed B |L1.118|
|L1.154|
00009a 4650 MOV r0,r10 ;114
00009c f7fffffe BL GUI_MEMDEV_GetYSize
0000a0 4607 MOV r7,r0 ;114
0000a2 4650 MOV r0,r10 ;115
0000a4 f7fffffe BL GUI_MEMDEV_Select
0000a8 2400 MOVS r4,#0 ;119
0000aa e015 B |L1.216|
|L1.172|
0000ac 1b29 SUBS r1,r5,r4 ;120
0000ae 42b9 CMP r1,r7 ;121
0000b0 da02 BGE |L1.184|
0000b2 4650 MOV r0,r10 ;122
0000b4 f7fffffe BL GUI_MEMDEV_ReduceYSize
|L1.184|
0000b8 b13c CBZ r4,|L1.202|
0000ba 1932 ADDS r2,r6,r4 ;125
0000bc 4649 MOV r1,r9 ;125
0000be 4650 MOV r0,r10 ;125
0000c0 f7fffffe BL GUI_MEMDEV_SetOrg
0000c4 4650 MOV r0,r10 ;126
0000c6 f7fffffe BL GUI_MEMDEV_Clear
|L1.202|
0000ca 4658 MOV r0,r11 ;128
0000cc 4641 MOV r1,r8 ;128
0000ce 4788 BLX r1 ;128
0000d0 4650 MOV r0,r10 ;129
0000d2 f7fffffe BL GUI_MEMDEV_CopyToLCD
0000d6 443c ADD r4,r4,r7 ;119
|L1.216|
0000d8 42ac CMP r4,r5 ;119
0000da dbe7 BLT |L1.172|
0000dc 4650 MOV r0,r10 ;132
0000de f7fffffe BL GUI_MEMDEV_Delete
0000e2 2000 MOVS r0,#0 ;133
0000e4 f7fffffe BL GUI_MEMDEV_Select
0000e8 e7c4 B |L1.116|
;;;136
ENDP
AREA ||i._Min||, CODE, READONLY, ALIGN=1
_Min PROC
;;;53 */
;;;54 static int _Min(int v0, int v1) {
000000 4288 CMP r0,r1
;;;55 if (v0 <= v1) {
000002 dd00 BLE |L2.6|
;;;56 return v0;
;;;57 }
;;;58 return v1;
000004 4608 MOV r0,r1
|L2.6|
;;;59 }
000006 4770 BX lr
;;;60
ENDP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -