📄 lcd_rotate180.txt
字号:
; generated by ARM C/C++ Compiler with , RVCT4.0 [Build 524] for uVision
; commandline ArmCC [--split_sections --debug -c --asm --interleave -o.\Obj\lcd_rotate180.o --depend=.\Obj\lcd_rotate180.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\LCD_Rotate180.c]
THUMB
AREA ||i._DrawBitLine1BPP||, CODE, READONLY, ALIGN=2
_DrawBitLine1BPP PROC
;;;37 */
;;;38 static void _DrawBitLine1BPP(int x, int y, U8 const GUI_UNI_PTR *p, int Diff, int xsize, const LCD_PIXELINDEX*pTrans) {
000000 e92d5fff PUSH {r0-r12,lr}
;;;39 LCD_PIXELINDEX Index0 = *(pTrans+0);
000004 e9dd710e LDRD r7,r1,[sp,#0x38]
000008 f8b18000 LDRH r8,[r1,#0]
;;;40 LCD_PIXELINDEX Index1 = *(pTrans+1);
00000c f8b19002 LDRH r9,[r1,#2]
000010 461c MOV r4,r3 ;38
;;;41 x -= Diff;
;;;42 switch (GUI_Context.DrawMode & (LCD_DRAWMODE_TRANS | LCD_DRAWMODE_XOR)) {
000012 492d LDR r1,|L1.200|
000014 1b06 SUBS r6,r0,r4 ;41
000016 4615 MOV r5,r2 ;38
000018 7b08 LDRB r0,[r1,#0xc] ; GUI_Context
;;;43 case 0:
;;;44 do {
;;;45 LCDDEV_L0_SetPixelIndex(x--, y, (*p & (0x80 >> Diff)) ? Index1 : Index0);
00001a 2280 MOVS r2,#0x80
00001c f0100003 ANDS r0,r0,#3 ;42
000020 d006 BEQ |L1.48|
000022 2801 CMP r0,#1 ;42
000024 d032 BEQ |L1.140|
000026 2802 CMP r0,#2 ;42
000028 d119 BNE |L1.94|
00002a 4690 MOV r8,r2
00002c 468a MOV r10,r1 ;42
;;;46 if (++Diff == 8) {
;;;47 Diff = 0;
;;;48 p++;
;;;49 }
;;;50 } while (--xsize);
;;;51 break;
;;;52 case LCD_DRAWMODE_TRANS:
;;;53 do {
00002e e018 B |L1.98|
|L1.48|
000030 4693 MOV r11,r2 ;45
000032 468a MOV r10,r1 ;42
|L1.52|
000034 7828 LDRB r0,[r5,#0] ;45
000036 fa2bf104 LSR r1,r11,r4 ;45
00003a 464a MOV r2,r9 ;45
00003c 4208 TST r0,r1 ;45
00003e d100 BNE |L1.66|
000040 4642 MOV r2,r8 ;45
|L1.66|
000042 f8da1048 LDR r1,[r10,#0x48] ;45 ; GUI_Context
000046 4630 MOV r0,r6 ;45
000048 6a4b LDR r3,[r1,#0x24] ;45
00004a 1e76 SUBS r6,r6,#1 ;45
00004c 9901 LDR r1,[sp,#4] ;45
00004e 4798 BLX r3 ;45
000050 1c64 ADDS r4,r4,#1 ;46
000052 2c08 CMP r4,#8 ;46
000054 d101 BNE |L1.90|
000056 2400 MOVS r4,#0 ;47
000058 1c6d ADDS r5,r5,#1 ;48
|L1.90|
00005a 1e7f SUBS r7,r7,#1 ;50
00005c d1ea BNE |L1.52|
|L1.94|
;;;54 if (*p & (0x80 >> Diff))
;;;55 LCDDEV_L0_SetPixelIndex(x, y, Index1);
;;;56 x--;
;;;57 if (++Diff == 8) {
;;;58 Diff = 0;
;;;59 p++;
;;;60 }
;;;61 } while (--xsize);
;;;62 break;
;;;63 case LCD_DRAWMODE_XOR:;
;;;64 do {
;;;65 if (*p & (0x80 >> Diff)) {
;;;66 int Pixel = LCD_L0_GetPixelIndex(x, y);
;;;67 LCDDEV_L0_SetPixelIndex(x, y, LCD_NUM_COLORS - 1 - Pixel);
;;;68 }
;;;69 x--;
;;;70 if (++Diff == 8) {
;;;71 Diff = 0;
;;;72 p++;
;;;73 }
;;;74 } while (--xsize);
;;;75 break;
;;;76 }
;;;77 }
00005e e8bd9fff POP {r0-r12,pc}
|L1.98|
000062 7828 LDRB r0,[r5,#0] ;54
000064 fa28f104 LSR r1,r8,r4 ;54
000068 4208 TST r0,r1 ;54
00006a d006 BEQ |L1.122|
00006c f8da0048 LDR r0,[r10,#0x48] ;55 ; GUI_Context
000070 464a MOV r2,r9 ;55
000072 6a43 LDR r3,[r0,#0x24] ;55
000074 4630 MOV r0,r6 ;55
000076 9901 LDR r1,[sp,#4] ;55
000078 4798 BLX r3 ;55
|L1.122|
00007a 1e76 SUBS r6,r6,#1 ;56
00007c 1c64 ADDS r4,r4,#1 ;57
00007e 2c08 CMP r4,#8 ;57
000080 d101 BNE |L1.134|
000082 2400 MOVS r4,#0 ;58
000084 1c6d ADDS r5,r5,#1 ;59
|L1.134|
000086 1e7f SUBS r7,r7,#1 ;61
000088 d1eb BNE |L1.98|
00008a e7e8 B |L1.94|
|L1.140|
00008c 4691 MOV r9,r2 ;45
00008e 4688 MOV r8,r1 ;42
000090 f64f7aff MOV r10,#0xffff ;67
|L1.148|
000094 7829 LDRB r1,[r5,#0] ;65
000096 fa29f004 LSR r0,r9,r4 ;65
00009a 4201 TST r1,r0 ;65
00009c d00b BEQ |L1.182|
00009e 4630 MOV r0,r6 ;66
0000a0 9901 LDR r1,[sp,#4] ;66
0000a2 f7fffffe BL LCD_L0_GetPixelIndex
0000a6 ebaa0200 SUB r2,r10,r0 ;67
0000aa f8d80048 LDR r0,[r8,#0x48] ;67 ; GUI_Context
0000ae 9901 LDR r1,[sp,#4] ;67
0000b0 6a43 LDR r3,[r0,#0x24] ;67
0000b2 4630 MOV r0,r6 ;67
0000b4 4798 BLX r3 ;67
|L1.182|
0000b6 1e76 SUBS r6,r6,#1 ;69
0000b8 1c64 ADDS r4,r4,#1 ;70
0000ba 2c08 CMP r4,#8 ;70
0000bc d101 BNE |L1.194|
0000be 2400 MOVS r4,#0 ;71
0000c0 1c6d ADDS r5,r5,#1 ;72
|L1.194|
0000c2 1e7f SUBS r7,r7,#1 ;74
0000c4 d1e6 BNE |L1.148|
0000c6 e7ca B |L1.94|
;;;78
ENDP
|L1.200|
DCD GUI_Context
AREA ||i._DrawBitmap180||, CODE, READONLY, ALIGN=2
_DrawBitmap180 PROC
;;;155 */
;;;156 static void _DrawBitmap180(int x0, int y0, int xsize, int ysize, int xMul, int yMul,
000000 e92d4fff PUSH {r0-r11,lr}
;;;157 int BitsPerPixel, int BytesPerLine,
;;;158 const U8 GUI_UNI_PTR * pPixel, const LCD_PIXELINDEX* pTrans)
;;;159 {
000004 b087 SUB sp,sp,#0x1c
;;;160 U8 Data = 0;
;;;161 int x1, y1;
;;;162 /* Handle the optional Y-magnification */
;;;163 y1 = y0 + ysize - 1;
000006 9908 LDR r1,[sp,#0x20]
000008 469a MOV r10,r3 ;159
00000a 18c8 ADDS r0,r1,r3
00000c 1e40 SUBS r0,r0,#1
;;;164 x1 = x0 + xsize - 1;
00000e 9005 STR r0,[sp,#0x14]
000010 9907 LDR r1,[sp,#0x1c]
000012 9809 LDR r0,[sp,#0x24]
000014 2500 MOVS r5,#0 ;160
000016 4408 ADD r0,r0,r1
000018 1e40 SUBS r0,r0,#1
;;;165 /* Rotate positions */
;;;166 _TransformPoint180(&x0, &y0);
00001a 9006 STR r0,[sp,#0x18]
00001c f8ddb058 LDR r11,[sp,#0x58] ;163
000020 9e18 LDR r6,[sp,#0x60] ;163
000022 a908 ADD r1,sp,#0x20
000024 a807 ADD r0,sp,#0x1c
000026 f7fffffe BL _TransformPoint180
;;;167 _TransformPoint180(&x1, &y1);
00002a a905 ADD r1,sp,#0x14
00002c a806 ADD r0,sp,#0x18
00002e f7fffffe BL _TransformPoint180
;;;168 /* Handle BITMAP without magnification */
;;;169 if ((xMul == 1) && (yMul == 1)) {
000032 9814 LDR r0,[sp,#0x50]
000034 2801 CMP r0,#1
000036 d154 BNE |L2.226|
000038 9815 LDR r0,[sp,#0x54]
00003a 2801 CMP r0,#1
00003c d151 BNE |L2.226|
;;;170 int Diff;
;;;171 /* Clip top */
;;;172 if (y0 > GUI_Context.ClipRect.y1) {
00003e 4a55 LDR r2,|L2.404|
000040 9908 LDR r1,[sp,#0x20]
000042 f9b2000a LDRSH r0,[r2,#0xa] ; GUI_Context
000046 4288 CMP r0,r1
000048 da06 BGE |L2.88|
;;;173 int Diff = y0 - GUI_Context.ClipRect.y1;
00004a 1a09 SUBS r1,r1,r0
;;;174 y0 = GUI_Context.ClipRect.y1;
;;;175 pPixel += Diff * BytesPerLine;
00004c 9008 STR r0,[sp,#0x20]
00004e 9817 LDR r0,[sp,#0x5c]
;;;176 ysize -= Diff;
000050 ebaa0a01 SUB r10,r10,r1
000054 fb016600 MLA r6,r1,r0,r6 ;175
|L2.88|
;;;177 }
;;;178 /* Clip bottom */
;;;179 if (y1 < GUI_Context.ClipRect.y0) {
000058 f9b20006 LDRSH r0,[r2,#6] ; GUI_Context
00005c 9905 LDR r1,[sp,#0x14]
00005e 4288 CMP r0,r1
000060 dd02 BLE |L2.104|
;;;180 int Diff = GUI_Context.ClipRect.y0 - y1;
000062 1a40 SUBS r0,r0,r1
;;;181 ysize -= Diff;
000064 ebaa0a00 SUB r10,r10,r0
|L2.104|
;;;182 }
;;;183 if (ysize <= 0) {
000068 f1ba0f00 CMP r10,#0
00006c dd36 BLE |L2.220|
;;;184 return;
;;;185 }
;;;186 /* Clip right side */
;;;187 if (x1 < GUI_Context.ClipRect.x0) {
00006e f9b20004 LDRSH r0,[r2,#4] ; GUI_Context
000072 9906 LDR r1,[sp,#0x18]
000074 4288 CMP r0,r1
000076 dd03 BLE |L2.128|
;;;188 int Diff = GUI_Context.ClipRect.x0 - x1;
000078 1a40 SUBS r0,r0,r1
;;;189 xsize -= Diff;
00007a 9909 LDR r1,[sp,#0x24]
00007c 1a08 SUBS r0,r1,r0
00007e 9009 STR r0,[sp,#0x24]
|L2.128|
;;;190 }
;;;191 /* Clip left side */
;;;192 Diff = 0;
;;;193 if (x0 > GUI_Context.ClipRect.x1) {
000080 f9b21008 LDRSH r1,[r2,#8] ; GUI_Context
000084 9807 LDR r0,[sp,#0x1c]
000086 2500 MOVS r5,#0 ;192
000088 4281 CMP r1,r0
00008a da0e BGE |L2.170|
;;;194 Diff = x0 - GUI_Context.ClipRect.x1;
00008c 1a45 SUBS r5,r0,r1
;;;195 xsize -= Diff;
00008e 9909 LDR r1,[sp,#0x24]
000090 1b49 SUBS r1,r1,r5
;;;196 switch (BitsPerPixel) {
000092 9109 STR r1,[sp,#0x24]
000094 f1bb0f01 CMP r11,#1
000098 d107 BNE |L2.170|
;;;197 case 1:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -