⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 glib.c

📁 S3C2410平台下的LCD固件程序
💻 C
📖 第 1 页 / 共 2 页
字号:
*           UINT32T y   --  y coordinate
*           UINT32T c   --  color value          
* ret:		none
* modify:
* comment:		
*********************************************************************************************/
void _PutTft1Bit_800600(UINT32T x,UINT32T y,UINT32T c)
{
    if(x<SCR_XSIZE_TFT_800600 && y<SCR_YSIZE_TFT_800600)
        frameBuffer1BitTft800600[(y)][(x)/32]=( frameBuffer1BitTft800600[(y)][x/32]
	& ~(0x80000000>>((x)%32)*1) ) | ( (c&0x00000001)<< ((32-1-((x)%32))*1) );
}

/*********************************************************************************************
* name:		_PutTft8Bit_800600()
* func:		put pixel to 8bpp 800*6000 TFT
* para:		UINT32T x   --  x coordinate
*           UINT32T y   --  y coordinate
*           UINT32T c   --  color value          
* ret:		none
* modify:
* comment:		
*********************************************************************************************/
void _PutTft8Bit_800600(UINT32T x,UINT32T y,UINT32T c)
{
    if(x<SCR_XSIZE_TFT_800600 && y<SCR_YSIZE_TFT_800600)
        frameBuffer8BitTft800600[(y)][(x)/4]=( frameBuffer8BitTft800600[(y)][x/4]
        & ~(0xff000000>>((x)%4)*8) ) | ( (c&0x000000ff)<<((4-1-((x)%4))*8) );
}

/*********************************************************************************************
* name:		_PutTft16Bit_800600()
* func:		put pixel to 16bpp 800*6000 TFT
* para:		UINT32T x   --  x coordinate
*           UINT32T y   --  y coordinate
*           UINT32T c   --  color value          
* ret:		none
* modify:
* comment:		
*********************************************************************************************/
void _PutTft16Bit_800600(UINT32T x,UINT32T y,UINT32T c)
{
    if(x<SCR_XSIZE_TFT_800600 && y<SCR_YSIZE_TFT_800600)
        frameBuffer16BitTft800600[(y)][(x)/2]=( frameBuffer16BitTft800600[(y)][x/2]
        & ~(0xffff0000>>((x)%2)*16) ) | ( (c&0x0000ffff)<<((2-1-((x)%2))*16) );
}

/*********************************************************************************************
* name:		Glib_Rectangle()
* func:		describe a Rectangle
* para:		int x1      --  x coordinate 1
*           int y1      --  y coordinate 1
*           int x2      --  x coordinate 2
*           int y2      --  y coordinate 2
*           int color   --  color value          
* ret:		none
* modify:
* comment:		
*********************************************************************************************/
void Glib_Rectangle(int x1,int y1,int x2,int y2,int color)
{
    Glib_Line(x1,y1,x2,y1,color);
    Glib_Line(x2,y1,x2,y2,color);
    Glib_Line(x1,y2,x2,y2,color);
    Glib_Line(x1,y1,x1,y2,color);
}


/*********************************************************************************************
* name:		Glib_FilledRectangle()
* func:		describe a FilledRectangle
* para:		int x1      --  x coordinate 1
*           int y1      --  y coordinate 1
*           int x2      --  x coordinate 2
*           int y2      --  y coordinate 2
*           int color   --  color value          
* ret:		none
* modify:
* comment:		
*********************************************************************************************/
void Glib_FilledRectangle(int x1,int y1,int x2,int y2,int color)
{
    int i;

    for(i=y1;i<=y2;i++)
	Glib_Line(x1,i,x2,i,color);
}

/*********************************************************************************************
* name:		Glib_Line()
* func:		describe a Line
* para:		int x1      --  x coordinate 1
*           int y1      --  y coordinate 1
*           int x2      --  x coordinate 2
*           int y2      --  y coordinate 2
*           int color   --  color value          
* ret:		none
* modify:
* comment:		
*********************************************************************************************/
void Glib_Line(int x1,int y1,int x2,int y2,int color)
{
	int dx,dy,e;
	dx=x2-x1; 
	dy=y2-y1;
    
	if(dx>=0)
	{
		if(dy >= 0) // dy>=0
		{
			if(dx>=dy) // 1/8 octant
			{
				e=dy-dx/2;
				while(x1<=x2)
				{
					PutPixel(x1,y1,color);
					if(e>0){y1+=1;e-=dx;}	
					x1+=1;
					e+=dy;
				}
			}
			else		// 2/8 octant
			{
				e=dx-dy/2;
				while(y1<=y2)
				{
					PutPixel(x1,y1,color);
					if(e>0){x1+=1;e-=dy;}	
					y1+=1;
					e+=dx;
				}
			}
		}
		else		   // dy<0
		{
			dy=-dy;   // dy=abs(dy)

			if(dx>=dy) // 8/8 octant
			{
				e=dy-dx/2;
				while(x1<=x2)
				{
					PutPixel(x1,y1,color);
					if(e>0){y1-=1;e-=dx;}	
					x1+=1;
					e+=dy;
				}
			}
			else		// 7/8 octant
			{
				e=dx-dy/2;
				while(y1>=y2)
				{
					PutPixel(x1,y1,color);
					if(e>0){x1+=1;e-=dy;}	
					y1-=1;
					e+=dx;
				}
			}
		}	
	}
	else //dx<0
	{
		dx=-dx;		//dx=abs(dx)
		if(dy >= 0) // dy>=0
		{
			if(dx>=dy) // 4/8 octant
			{
				e=dy-dx/2;
				while(x1>=x2)
				{
					PutPixel(x1,y1,color);
					if(e>0){y1+=1;e-=dx;}	
					x1-=1;
					e+=dy;
				}
			}
			else		// 3/8 octant
			{
				e=dx-dy/2;
				while(y1<=y2)
				{
					PutPixel(x1,y1,color);
					if(e>0){x1-=1;e-=dy;}	
					y1+=1;
					e+=dx;
				}
			}
		}
		else		   // dy<0
		{
			dy=-dy;   // dy=abs(dy)

			if(dx>=dy) // 5/8 octant
			{
				e=dy-dx/2;
				while(x1>=x2)
				{
					PutPixel(x1,y1,color);
					if(e>0){y1-=1;e-=dx;}	
					x1-=1;
					e+=dy;
				}
			}
			else		// 6/8 octant
			{
				e=dx-dy/2;
				while(y1>=y2)
				{
					PutPixel(x1,y1,color);
					if(e>0){x1-=1;e-=dy;}	
					y1-=1;
					e+=dx;
				}
			}
		}	
	}
}


/*********************************************************************************************
* name:		Glib_ClearScr()
* func:		Clear screen with color value c
* para:		UINT32T c   --  color value 
*           int type    --  lcd display type         
* ret:		none
* modify:
* comment:		
*********************************************************************************************/
void Glib_ClearScr(UINT32T c, int type)
{	
    //Very inefficient function.
    int i,j;
    //if((type==MODE_TFT_1BIT_800600)|(type==MODE_TFT_8BIT_800600)|(type==MODE_TFT_16BIT_800600))
    if((type&0x4000)&&(type&0x400))
	for(j=0;j<SCR_YSIZE_TFT_800600;j++)
            for(i=0;i<SCR_XSIZE_TFT_800600;i++)
		        PutPixel(i,j,c);
    //else if((type==MODE_TFT_1BIT_640480)|(type==MODE_TFT_8BIT_640480)|(type==MODE_TFT_16BIT_640480))
    else if((type&0x4000)&&(type&0x200))
	for(j=0;j<SCR_YSIZE_TFT_640480;j++)
            for(i=0;i<SCR_XSIZE_TFT_640480;i++)
		        PutPixel(i,j,c);
    //else if((type==MODE_TFT_1BIT_240320)|(type==MODE_TFT_8BIT_240320)|(type==MODE_TFT_16BIT_240320))
    else if((type&0x4000)&&(type&0x100))
	for(j=0;j<SCR_YSIZE_TFT_240320;j++)
            for(i=0;i<SCR_XSIZE_TFT_240320;i++)
		        PutPixel(i,j,c);
    else if(type&0x2000)
        for(j=0;j<SCR_YSIZE_CSTN;j++)
    	    for(i=0;i<SCR_XSIZE_CSTN;i++)
		        PutPixel(i,j,c);
    else
        for(j=0;j<SCR_YSIZE_STN;j++)
    	    for(i=0;i<SCR_XSIZE_STN;i++)
		        PutPixel(i,j,c);
}

/*********************************************************************************************
* name:		BitmapViewCstn8Bit
* func:		display a 8bpp bitmap  on TFT LCD
* para:		UINT8T *pBuffer --  bitmap data pointer          
* ret:		none
* modify:
* comment:		
*********************************************************************************************/

void BitmapViewTft8Bit_640480(UINT8T *pBuffer)
{
    
}
void BitmapViewTft16Bit_640480(UINT8T *pBuffer)
{
    
    UINT32T i, j,t=0;
	UINT32T *pView = (UINT32T*)frameBuffer16BitTft640480;

	for (i = 0; i < LCD_YSIZE_TFT_640480; i++)
	{
	   
	   
	   for (j = 0; j < LCD_XSIZE_TFT_640480/2 ; j++)
	    {
	      
	      pView[j] = ((*(pBuffer+3)) << 24) + ((*(pBuffer+2)) << 16) + ((*(pBuffer+1)) << 8) + (*(pBuffer));
		 
		  pBuffer += 4;
	    
	      	   }
	    pView+=LCD_XSIZE_TFT_640480;
	}

    
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -