📄 gui_jpeg.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_jpeg.o --depend=.\Obj\gui_jpeg.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\JPEG\GUI_JPEG.c]
THUMB
AREA ||i.GUI_JPEG_Draw||, CODE, READONLY, ALIGN=2
GUI_JPEG_Draw PROC
;;;355 */
;;;356 int GUI_JPEG_Draw(const void * pFileData, int DataSize, int x0, int y0) {
000000 e92d4fff PUSH {r0-r11,lr}
000004 f5ad7d19 SUB sp,sp,#0x264
000008 4615 MOV r5,r2
00000a 461c MOV r4,r3
;;;357 #if (GUI_WINSUPPORT)
;;;358 GUI_RECT r;
;;;359 #endif
;;;360 int Ret = 0;
00000c f04f0b00 MOV r11,#0
;;;361 GUI_HMEM hBuffer = 0;
000010 46d9 MOV r9,r11
;;;362 struct jpeg_decompress_struct cinfo;
;;;363 struct jpeg_error_mgr jerr;
;;;364 GUI_LOCK();
;;;365 _Init(&jerr, &cinfo, pFileData, DataSize);
000012 a922 ADD r1,sp,#0x88
000014 a801 ADD r0,sp,#4
000016 9b9a LDR r3,[sp,#0x268]
000018 9a99 LDR r2,[sp,#0x264]
00001a f7fffffe BL _Init
;;;366 #if (GUI_WINSUPPORT)
;;;367 WM_ADDORG(x0,y0);
00001e 4844 LDR r0,|L1.304|
000020 6c01 LDR r1,[r0,#0x40] ; GUI_Context
000022 6c40 LDR r0,[r0,#0x44] ; GUI_Context
000024 194f ADDS r7,r1,r5
000026 eb000804 ADD r8,r0,r4
;;;368 r.x1 = (r.x0 = x0) + cinfo.image_width - 1;
00002a 9929 LDR r1,[sp,#0xa4]
00002c 1e78 SUBS r0,r7,#1
00002e 4408 ADD r0,r0,r1
000030 f8ad025c STRH r0,[sp,#0x25c]
;;;369 r.y1 = (r.y0 = y0) + cinfo.image_height - 1;
000034 992a LDR r1,[sp,#0xa8]
000036 f1a80001 SUB r0,r8,#1
00003a 4408 ADD r0,r0,r1
00003c f8ad7258 STRH r7,[sp,#0x258] ;368
000040 f8ad025e STRH r0,[sp,#0x25e]
000044 f8ad825a STRH r8,[sp,#0x25a]
;;;370 WM_ITERATE_START(&r) {
000048 a896 ADD r0,sp,#0x258
00004a f7fffffe BL WM__InitIVRSearch
00004e 2800 CMP r0,#0
000050 d065 BEQ |L1.286|
000052 e008 B |L1.102|
|L1.84|
;;;371 #endif
;;;372 if (hBuffer) {
000054 f1b90f00 CMP r9,#0
000058 d005 BEQ |L1.102|
;;;373 _Init(&jerr, &cinfo, pFileData, DataSize);
00005a a922 ADD r1,sp,#0x88
00005c a801 ADD r0,sp,#4
00005e 9b9a LDR r3,[sp,#0x268]
000060 9a99 LDR r2,[sp,#0x264]
000062 f7fffffe BL _Init
|L1.102|
;;;374 }
;;;375 /* 4. Set up parameters for decompression (optional ...) */
;;;376 /* 5. jpeg_start_decompress(...); Should normally return quickly */
;;;377 jpeg_start_decompress(&cinfo);
000066 a822 ADD r0,sp,#0x88
000068 f7fffffe BL jpeg_start_decompress
;;;378 /* 6. while (scan lines remain to be read) */
;;;379 /* jpeg_read_scanlines(...); */
;;;380 if (!hBuffer) {
00006c f1b90f00 CMP r9,#0
000070 d147 BNE |L1.258|
;;;381 hBuffer = GUI_ALLOC_AllocNoInit(cinfo.image_width * 3);
000072 9829 LDR r0,[sp,#0xa4]
000074 eb000040 ADD r0,r0,r0,LSL #1
000078 b200 SXTH r0,r0
00007a f7fffffe BL GUI_ALLOC_AllocNoInit
00007e 4681 MOV r9,r0
000080 e03f B |L1.258|
|L1.130|
;;;382 }
;;;383 while (cinfo.output_scanline < cinfo.output_height) {
;;;384 U8* p;
;;;385 p = (U8*)GUI_ALLOC_h2p(hBuffer);
000082 4648 MOV r0,r9
000084 f7fffffe BL GUI_ALLOC_h2p
;;;386 jpeg_read_scanlines(&cinfo, &p, 1);
000088 9000 STR r0,[sp,#0]
00008a 2201 MOVS r2,#1
00008c 4669 MOV r1,sp
00008e a822 ADD r0,sp,#0x88
000090 f7fffffe BL jpeg_read_scanlines
;;;387 if (cinfo.jpeg_color_space == JCS_GRAYSCALE) {
000094 f89d00b0 LDRB r0,[sp,#0xb0]
000098 2801 CMP r0,#1
00009a d118 BNE |L1.206|
;;;388 _WritePixelsGray(p, x0, y0 + cinfo.output_scanline, cinfo.image_width);
00009c 9845 LDR r0,[sp,#0x114]
00009e 463d MOV r5,r7
0000a0 eb000a08 ADD r10,r0,r8
0000a4 9e29 LDR r6,[sp,#0xa4]
0000a6 9c00 LDR r4,[sp,#0]
0000a8 e00e B |L1.200|
0000aa bf00 NOP
|L1.172|
0000ac f8140b01 LDRB r0,[r4],#1
0000b0 eb002100 ADD r1,r0,r0,LSL #8
0000b4 eb014000 ADD r0,r1,r0,LSL #16
0000b8 f7fffffe BL LCD_SetColor
0000bc 4628 MOV r0,r5
0000be 1c6d ADDS r5,r5,#1
0000c0 4651 MOV r1,r10
0000c2 f7fffffe BL LCD_DrawPixel
0000c6 1e76 SUBS r6,r6,#1
|L1.200|
0000c8 2e00 CMP r6,#0
0000ca d1ef BNE |L1.172|
0000cc e019 B |L1.258|
|L1.206|
;;;389 } else {
;;;390 _WritePixelsRGB(p, x0, y0 + cinfo.output_scanline, cinfo.image_width);
0000ce 9845 LDR r0,[sp,#0x114]
0000d0 463c MOV r4,r7
0000d2 eb000a08 ADD r10,r0,r8
0000d6 9e00 LDR r6,[sp,#0]
0000d8 9d29 LDR r5,[sp,#0xa4]
0000da e010 B |L1.254|
|L1.220|
0000dc 7830 LDRB r0,[r6,#0]
0000de 7871 LDRB r1,[r6,#1]
0000e0 f8162f02 LDRB r2,[r6,#2]!
0000e4 ea402001 ORR r0,r0,r1,LSL #8
0000e8 1c76 ADDS r6,r6,#1
0000ea ea404002 ORR r0,r0,r2,LSL #16
0000ee f7fffffe BL LCD_SetColor
0000f2 4620 MOV r0,r4
0000f4 1c64 ADDS r4,r4,#1
0000f6 4651 MOV r1,r10
0000f8 f7fffffe BL LCD_DrawPixel
0000fc 1e6d SUBS r5,r5,#1
|L1.254|
0000fe 2d00 CMP r5,#0
000100 d1ec BNE |L1.220|
|L1.258|
000102 993f LDR r1,[sp,#0xfc] ;383
000104 9845 LDR r0,[sp,#0x114] ;383
000106 4288 CMP r0,r1 ;383
000108 d3bb BCC |L1.130|
;;;391 }
;;;392 }
;;;393 /* 7. jpeg_finish_decompress(...); */
;;;394 /* Complete the decompression cycle. This causes working memory associated */
;;;395 /* with the JPEG object to be released. */
;;;396 jpeg_finish_decompress(&cinfo);
00010a a822 ADD r0,sp,#0x88
00010c f7fffffe BL jpeg_finish_decompress
;;;397 /* 8. Release the JPEG decompression object. */
;;;398 jpeg_destroy_decompress(&cinfo);
000110 a822 ADD r0,sp,#0x88
000112 f7fffffe BL jpeg_destroy_decompress
;;;399 #if (GUI_WINSUPPORT)
;;;400 } WM_ITERATE_END();
000116 f7fffffe BL WM__GetNextIVR
00011a 2800 CMP r0,#0
00011c d19a BNE |L1.84|
|L1.286|
;;;401 #endif
;;;402 GUI_ALLOC_Free(hBuffer);
00011e 4648 MOV r0,r9
000120 f7fffffe BL GUI_ALLOC_Free
;;;403 GUI_UNLOCK();
;;;404 return Ret;
000124 4658 MOV r0,r11
;;;405 }
000126 f50d7d1d ADD sp,sp,#0x274
00012a e8bd8ff0 POP {r4-r11,pc}
;;;406
ENDP
00012e 0000 DCW 0x0000
|L1.304|
DCD GUI_Context
AREA ||i.GUI_JPEG_GetInfo||, CODE, READONLY, ALIGN=1
GUI_JPEG_GetInfo PROC
;;;335 */
;;;336 int GUI_JPEG_GetInfo(const void * pFileData, int DataSize, GUI_JPEG_INFO* pInfo) {
000000 b510 PUSH {r4,lr}
000002 f5ad7d16 SUB sp,sp,#0x258
000006 4614 MOV r4,r2
;;;337 struct jpeg_decompress_struct cinfo;
;;;338 struct jpeg_error_mgr jerr;
;;;339 _Init(&jerr, &cinfo, pFileData, DataSize);
000008 460b MOV r3,r1
00000a 4602 MOV r2,r0
00000c a922 ADD r1,sp,#0x88
00000e a801 ADD r0,sp,#4
000010 f7fffffe BL _Init
;;;340 /*
;;;341 * Release the JPEG decompression object.
;;;342 */
;;;343 jpeg_destroy_decompress(&cinfo);
000014 a822 ADD r0,sp,#0x88
000016 f7fffffe BL jpeg_destroy_decompress
;;;344 if (pInfo) {
00001a b11c CBZ r4,|L2.36|
;;;345 pInfo->XSize = cinfo.image_width;
00001c 9829 LDR r0,[sp,#0xa4]
;;;346 pInfo->YSize = cinfo.image_height;
00001e 6020 STR r0,[r4,#0]
000020 982a LDR r0,[sp,#0xa8]
000022 6060 STR r0,[r4,#4]
|L2.36|
;;;347 }
;;;348 return 0;
000024 2000 MOVS r0,#0
;;;349 }
000026 f50d7d16 ADD sp,sp,#0x258
00002a bd10 POP {r4,pc}
;;;350
ENDP
AREA ||i._FillInputBuffer||, CODE, READONLY, ALIGN=2
_FillInputBuffer PROC
;;;104
;;;105 static boolean _FillInputBuffer(j_decompress_ptr cinfo) {
000000 b570 PUSH {r4-r6,lr}
;;;106 SOURCE_MANAGER* pSrc = (SOURCE_MANAGER*) cinfo->src;
;;;107 size_t nbytes;
;;;108 int RemBytes = pSrc->FileSize - pSrc->Off;
000002 6984 LDR r4,[r0,#0x18]
000004 4605 MOV r5,r0 ;105
000006 e9d40208 LDRD r0,r2,[r4,#0x20]
00000a 1a81 SUBS r1,r0,r2
;;;109 if (RemBytes > 0) {
00000c 2900 CMP r1,#0
00000e dd0a BLE |L3.38|
;;;110 nbytes = (RemBytes > INPUT_BUF_SIZE) ? INPUT_BUF_SIZE : RemBytes;
000010 f44f5080 MOV r0,#0x1000
000014 4281 CMP r1,r0
000016 dc00 BGT |L3.26|
000018 4608 MOV r0,r1
|L3.26|
;;;111 pSrc->pub.next_input_byte = pSrc->pFileData + pSrc->Off;
00001a 69e1 LDR r1,[r4,#0x1c]
00001c 4411 ADD r1,r1,r2
;;;112 pSrc->Off += nbytes;
00001e 6021 STR r1,[r4,#0]
000020 1811 ADDS r1,r2,r0
000022 6261 STR r1,[r4,#0x24]
000024 e014 B |L3.80|
|L3.38|
;;;113 } else {
;;;114 if (pSrc->start_of_file) /* Treat empty input file as fatal error */
000026 6aa0 LDR r0,[r4,#0x28]
000028 b130 CBZ r0,|L3.56|
;;;115 ERREXIT(cinfo, JERR_INPUT_EMPTY);
00002a 6829 LDR r1,[r5,#0]
00002c 202a MOVS r0,#0x2a
00002e 6148 STR r0,[r1,#0x14]
000030 6828 LDR r0,[r5,#0]
000032 6801 LDR r1,[r0,#0]
000034 4628 MOV r0,r5
000036 4788 BLX r1
|L3.56|
;;;116 WARNMS(cinfo, JWRN_JPEG_EOF);
000038 6829 LDR r1,[r5,#0]
00003a 2078 MOVS r0,#0x78
00003c 6148 STR r0,[r1,#0x14]
00003e 6828 LDR r0,[r5,#0]
000040 f04f31ff MOV r1,#0xffffffff
000044 6842 LDR r2,[r0,#4]
000046 4628 MOV r0,r5
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -