资源简介
基于c的小尺寸JPEG解码,程序源程序是日本的一个开源网站
代码片段和文件信息
#include “stm32f10x.h“
#include “jpegdecode.h“
#include “TFT.h“
#include “Systic.h“
#include
#include “integer.h“
// 以下3句宏定义在tjpgd.h中修改
static int MaskL = 0;
static int MaskR = DISP_XS - 1;
static int MaskT = 0;
static int MaskB = DISP_YS - 1;
extern BYTE whflag;
/*
u16 Covert_RGB565_to_BGR565(unsigned short inRGB)
{
u16 outBGR = 0;
u16 rgb;
b = (inRGB ) & 0x1F;
g = (inRGB>> 5) & 0x3F;
r = (inRGB>>11) & 0x1F;
outBGR = (b << 11) | (g << 5) | r;
return outBGR;
}
*/
// 在屏幕上显示图片
// 屏幕的起始地址在LCD_UPbase中保存
void STM32_disp_blt (
int left /* Left end (-32768 to 32767) */
int right /* Right end (-32768 to 32767 >=left) */
int top /* Top end (-32768 to 32767) */
int bottom /* Bottom end (-32768 to 32767 >=right) */
const uint16_t *pat /* Pattern data */
)
{
int yc xc;
u32 i;
u32 len=0;
int left2=0right2=7top2=0bottom2=7;
if (left > right || top > bottom)
{
return; // Check varidity
}
if (left > MaskR || right < MaskL || top > MaskB || bottom < MaskT)
{
return; // Check if in active area
}
yc = bottom - top + 1; // Vertical size
xc = right - left + 1;
if (top < MaskT) // Clip top of source image if it is out of active area
{
pat+= xc * (MaskT - top);
yc -= MaskT - top;
top = MaskT;
}
if (bottom > MaskB) // Clip bottom of source image if it is out of active area
{
yc -= bottom - MaskB;
bottom = MaskB;
}
if (left < MaskL) // Clip left of source image if it is out of active area
{
pat += MaskL - left;
xc -= MaskL - left;
left = MaskL;
}
if (right > MaskR) // Clip right of source image it is out of active area
{
xc -= right - MaskR;
right = MaskR;
}
// 已经计算出了要绘制的x方向pixels和y方向pixels
// 上下左右的值已经校正为,为屏幕上的绝对位置,由此可以算出屏幕缓冲区的起始位置
if(whflag==1)
{
// top2=320-bottom-1;
// bottom2=320-top-1;
// if(left2 != left)
// {
// top2+=(left-left2);
// bottom2+=(left-left2);
// left=left2;
// right=right2;
// }
// LCD_Set_Window(lefttop2rightbottom2);
// LCD_Scan_Dir(D2U_L2R);//从下到上从左到右
// LCD_SetCursor(left320-bottom);//设置光标位置
//果然解码的顺序是从上到下,从左至右的
//显示顺序用从下到上就不对了!
LCD_Set_Window(lefttoprightbottom);
LCD_Scan_Dir(U2D_L2R);//从上到下从左到右
LCD_SetCursor(lefttop);//设置光标位置
// left2=left;
// right2=right;
}
else
{
LCD_Set_Window(lefttoprightbottom);
LCD_Scan_Dir(L2R_U2D);//从左到右从上到下
LCD_SetCursor(lefttop);//设置光标位置
}
// LCD_WriteRAM
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 856 2010-04-24 23:45 integer.h
文件 5231 2012-03-21 21:37 jpegdecode.c
文件 241 2012-03-14 16:15 jpegdecode.h
文件 36309 2012-03-21 21:30 tjpgd.c
文件 3546 2012-03-14 11:29 tjpgd.h
----------- --------- ---------- ----- ----
46183 5
评论
共有 条评论