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

📄 windowshow.c

📁 在优龙fs2410开发板上做的电子琴
💻 C
字号:
/*
*********************************************************************************************************
*                                   Samsung ARM S3C2410 Software Frame
*
*                          			(c) Copyright 2008-2010, LastRitter
*                                           All Rights Reserved
*
* File : 
* By   : LastRitter
*********************************************************************************************************
*/
#include "SystemTool.h"	   

extern window sta_Window[];

#define SW_FRAME_FRONT	(EG_BLACK)
#define SW_FRAME_BACK	(EG_BLUE|EG_GREEN)
#define SW_CLOSE_BACK	(EG_RED)
#define SW_TITLE_BACK	(EG_BLUE)


/*
*********************************************************************************************************
*                                               
*
* Description:
* 
* Arguments  : 
*
* Returns    :1--in;0--not in. 
*
* Note(s)    :  
*               
*********************************************************************************************************
*/
uint16 SW_IsInThisWindow(uint16 uiHandle,uint16 uiX,uint16 uiY)
{
	uint16 uiX0,uiY0,uiX1,uiY1;
	
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//Check param.
	if(uiHandle==0||uiHandle>=SW_WINDOW_MAX)
	{
		UART_TextOut("Error Handle !(SW_IsInThisWindow)\n");
		return 0;
	}

//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
	uiX0=sta_Window[uiHandle].uiX;
	uiY0=sta_Window[uiHandle].uiY;
	uiX1=sta_Window[uiHandle].uiWidth+uiX0;
	uiY1=sta_Window[uiHandle].uiHigh +uiY0;

//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
	if(uiX>=uiX0&&uiY>=uiY0&&uiX<=uiX1&&uiY<=uiY1)
		return 1;
	else
		return 0;
}

/*
*********************************************************************************************************
*                                               
*
* Description:
* 
* Arguments  : 
*
* Returns    : 1--Covered;0--Not covered.
*
* Note(s)    :  
*               
*********************************************************************************************************
*/
uint16 SW_IsCovered(uint16 uiAbove,uint16 uiUnder)
{
	uint16 uiX0,uiY0,uiX1,uiY1;

//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//Check param.
	if(uiAbove==0||uiAbove>=SW_WINDOW_MAX||uiUnder==0||uiUnder>=SW_WINDOW_MAX)
	{
		UART_TextOut("Error Handle !(SW_IsCovered)\n");
		return 0;
	}

//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
	uiX0=sta_Window[uiAbove].uiX;
	uiY0=sta_Window[uiAbove].uiY;
	uiX1=sta_Window[uiAbove].uiWidth+uiX0;
	uiY1=sta_Window[uiAbove].uiHigh +uiY0;

    if(SW_IsInThisWindow(uiUnder,uiX0,uiY0))
    	return 1;
    if(SW_IsInThisWindow(uiUnder,uiX0,uiY1))
    	return 1;
    if(SW_IsInThisWindow(uiUnder,uiX1,uiY0))
    	return 1;
    if(SW_IsInThisWindow(uiUnder,uiX1,uiY1))
    	return 1;
    
    return 0;
}

/*
*********************************************************************************************************
*                                               
*
* Description:
* 
* Arguments  : 
*
* Returns    : 1--Covered;0--Not covered.
*
* Note(s)    :  
*               
*********************************************************************************************************
*/
uint16 SW_GetEffectArea(uint16 uiHandle,paintarea *pstArea)
{
	uint16 uiX0=sta_Window[uiHandle].uiX;
	uint16 uiY0=sta_Window[uiHandle].uiY;
	uint16 uiX1=sta_Window[uiHandle].uiX+sta_Window[uiHandle].uiWidth;
	uint16 uiY1=sta_Window[uiHandle].uiY+sta_Window[uiHandle].uiHigh;

//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//Check param.
	if(uiHandle==0||uiHandle>=SW_WINDOW_MAX||sta_Window[uiHandle].uiHandle!=uiHandle)
	{
		UART_TextOut("Error Handle !(SW_GetEffectArea)\n");
		return 1;
	}
	
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
	switch(sta_Window[uiHandle].uiStyple)
	{
		case SW_STYPLE_FULL:
			pstArea->uiX0=0;
			pstArea->uiY0=0;
			pstArea->uiX1=SW_XMAX;
			pstArea->uiY1=SW_YMAX;
			break;
		case SW_STYPLE_MAIN:
			pstArea->uiX0=0;
			pstArea->uiY0=0;
			pstArea->uiX1=SW_DESK_XMAX;
			pstArea->uiY1=SW_DESK_YMAX;
			break;
		case SW_STYPLE_CUSTOM:
			pstArea->uiX0=uiX0;
			pstArea->uiY0=uiY0;
			pstArea->uiX1=uiX1;
			pstArea->uiY1=uiY1;
			break;
		case SW_STYPLE_TASKBAR:
			pstArea->uiX0=uiX0+SW_DEF_FRAME_WIDTH;
			pstArea->uiY0=uiY0+SW_DEF_FRAME_WIDTH;
			pstArea->uiX1=uiX1-SW_DEF_FRAME_WIDTH;
			pstArea->uiY1=uiY1-SW_DEF_FRAME_WIDTH;
			break;
		case SW_STYPLE_NORMAL:
			pstArea->uiX0=uiX0+SW_DEF_FRAME_WIDTH;
			pstArea->uiY0=uiY0+SW_DEF_TITLE_HIGH+SW_DEF_FRAME_WIDTH-1;
			pstArea->uiX1=uiX1-SW_DEF_FRAME_WIDTH;
			pstArea->uiY1=uiY1-SW_DEF_FRAME_WIDTH;
			break;
		default:break;
	}
	return 0;
}

/*
*********************************************************************************************************
*                                               
*
* Description:
* 
* Arguments  : 
*
* Returns    : 
*
* Note(s)    :  
*               
*********************************************************************************************************
*/
static SW_PaintNormal(uint16 uiHandle)
{
	uint16 uiX0=sta_Window[uiHandle].uiX;
	uint16 uiY0=sta_Window[uiHandle].uiY;
	uint16 uiX1=uiX0+sta_Window[uiHandle].uiWidth;
	uint16 uiY1=uiY0+sta_Window[uiHandle].uiHigh;
	char * scTitle=sta_Window[uiHandle].scTitle;
	char * pscTemp;
	
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//Check param.
/*	if(uiX0>=SW_XMAX||uiY0>=SW_YMAX||uiX1>SW_XMAX||uiY1>SW_YMAX);
	{
		UART_TextOut("Param is out of range!(SW_PaintNormal)\n");
		return 1;
	} */
	
//******************************************************************************************************
//Frame back ground.
	if(EG_RectFill(uiX0,uiY0,uiX1,uiY1,sta_Window[uiHandle].stBack))
		return 1;

//Title back ground.
	if(EG_RectFill(uiX0					,uiY0,
				uiX1-SW_DEF_CLOSE_WIDTH	,uiY0+SW_DEF_TITLE_HIGH,SW_TITLE_BACK))
		return 1;

//Close button back ground.
	if(EG_RectFill(uiX1-SW_DEF_CLOSE_WIDTH	,uiY0+1,
				uiX1					,uiY0+SW_DEF_TITLE_HIGH,SW_CLOSE_BACK))
		return 1;
				
	if(EG_Rect(uiX0		,uiY0	,uiX1	,uiY1	,SW_FRAME_FRONT))return 1;
	if(EG_Rect(uiX0+1	,uiY0+1	,uiX1-1	,uiY1-1	,SW_FRAME_FRONT))return 1;
	if(EG_Rect(uiX0+2	,uiY0+2	,uiX1-2	,uiY1-2	,SW_FRAME_FRONT))return 1;

//******************************************************************************************************
//Title
	if(EG_LineEx(uiX0,uiY0+SW_DEF_TITLE_HIGH,uiX1,uiY0+SW_DEF_TITLE_HIGH,
			SW_DEF_FRAME_WIDTH,SW_FRAME_FRONT))
		return 1;

	EG_SetFontColour(SW_FRAME_FRONT);
	EG_SetFontBkColour(SW_FRAME_BACK);

	pscTemp=EG_TextOutCut(uiX0+SW_DEF_FRAME_WIDTH+SW_DEF_FONT_YSPACE,
			uiY0+SW_DEF_FRAME_WIDTH+SW_DEF_FONT_YSPACE,
			(uiX1-uiX0-SW_DEF_CLOSE_WIDTH-SW_DEF_FONT_WIDTH)/SW_DEF_FONT_WIDTH*2,scTitle);
	if(pscTemp)
	{
		EG_TextOutEx(uiX1-SW_DEF_CLOSE_WIDTH-25,
				(uiY0+SW_DEF_FRAME_WIDTH+SW_DEF_FONT_YSPACE),"...");
    }
    
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//Close Button
	if(EG_LineEx(uiX1-SW_DEF_CLOSE_WIDTH,uiY0,
				uiX1-SW_DEF_CLOSE_WIDTH,uiY0+SW_DEF_TITLE_HIGH,
				SW_DEF_FRAME_WIDTH,SW_FRAME_FRONT))
		return 1;
	if(EG_LineEx(uiX1-SW_DEF_CLOSE_WIDTH	,uiY0+1,
				uiX1						,uiY0+SW_DEF_TITLE_HIGH,
				SW_DEF_FRAME_WIDTH-1,SW_FRAME_FRONT))
		return 1;
	if(EG_LineEx(uiX1						,uiY0+1,
				uiX1-SW_DEF_CLOSE_WIDTH		,uiY0+SW_DEF_TITLE_HIGH,
				SW_DEF_FRAME_WIDTH-1,SW_FRAME_FRONT))
		return 1;
			
	return 0;
}

/*
*********************************************************************************************************
*                                               
*
* Description:
* 
* Arguments  : 
*
* Returns    : 
*
* Note(s)    :  
*               
*********************************************************************************************************
*/
static uint16 SW_PaintSpeical(uint16 uiHandle)
{
	uint16 uiX0=sta_Window[uiHandle].uiX;
	uint16 uiY0=sta_Window[uiHandle].uiY;
	uint16 uiX1=uiX0+sta_Window[uiHandle].uiWidth;
	uint16 uiY1=uiY0+sta_Window[uiHandle].uiHigh;
	
	uint16 uiStyple	=sta_Window[uiHandle].uiStyple;
	colour stFront	=sta_Window[uiHandle].stFront;
	colour stBack	=sta_Window[uiHandle].stBack;
	
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//Check param.
/*	if(uiX0>SW_XMAX||uiY0>SW_YMAX||uiX1>SW_XMAX||uiY1>SW_YMAX);
	{
		UART_TextOut("%d %d %d %d \n",uiX0,uiY0,uiX1,uiY1);
		UART_TextOut("Param is out of range!(SW_PaintSpeical)\n");
		return 1;
	} */
	
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
	switch(uiStyple)
	{
		case SW_STYPLE_FULL:
		case SW_STYPLE_MAIN:
		case SW_STYPLE_ADJUST:
			EG_ScreenFill(stBack);
			break;
		case SW_STYPLE_CUSTOM:
			EG_RectFill(uiX0,uiY0,uiX1,uiY1,stBack);
			break;
		case SW_STYPLE_TASKBAR:
			EG_RectFill(uiX0,uiY0,uiX1,uiY1,stBack);
			EG_Rect(uiX0	,uiY0	,uiX1	,uiY1	,stFront);
			EG_Rect(uiX0+1	,uiY0+1	,uiX1-1	,uiY1-1	,stFront);
			EG_Rect(uiX0+2	,uiY0+2	,uiX1-2	,uiY1-2	,stFront);
			break;
		default:break;
	}
	
	return 0;
}

/*
*********************************************************************************************************
*                                               
*
* Description:
* 
* Arguments  : 
*
* Returns    : 
*
* Note(s)    :  
*               
*********************************************************************************************************
*/
static uint16 SW_PaintCustom(uint16 uiHandle)
{
	sta_Window[uiHandle].CallBack(uiHandle,0,0,SW_WINDOW_PAINT);
	return 0;
}

/*
*********************************************************************************************************
*                                               
*
* Description:
* 
* Arguments  : 
*
* Returns    : 
*
* Note(s)    :  
*               
*********************************************************************************************************
*/
static uint16 SW_PaintWindow(uint16 uiHandle)
{
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
	if(sta_Window[uiHandle].uiStyple==SW_STYPLE_NORMAL)
	{
		if(SW_PaintNormal(uiHandle))
			return 1;
	}
	else
	{
		if(SW_PaintSpeical(uiHandle))
			return 1;
	}
//******************************************************************************************************
//Set colour
	EG_SetFontColour(sta_Window[uiHandle].stFront);
	EG_SetFontBkColour(sta_Window[uiHandle].stBack);

	return SW_PaintCustom(uiHandle);
}

/*
*********************************************************************************************************
*                                               
*
* Description:
* 
* Arguments  : 
*
* Returns    : 
*
* Note(s)    :  
*               
*********************************************************************************************************
*/
uint16 SW_ShowWindow(uint16 uiHandle)
{
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//Check param.
	if(uiHandle==0||uiHandle>=SW_WINDOW_MAX||sta_Window[uiHandle].uiHandle!=uiHandle)
	{
		UART_TextOut("Error Handle !(SW_ShowWindow)\n");
		return 1;
	}
		
	sta_Window[uiHandle].uiState=SW_STATE_SHOW;
	
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
	SW_MoveToTop(uiHandle);
	
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
	return SW_PaintWindow(uiHandle);	
}

/*
*********************************************************************************************************
*                                               
*
* Description:
* 
* Arguments  : 
*
* Returns    : 
*
* Note(s)    :  
*               
*********************************************************************************************************
*/
uint16 SW_HideWindow(uint16 uiHandle)
{
	uint16 uiCount;
	uint16 uiHandleTemp;
	
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
	SW_MoveToBottom(uiHandle);

	uiHandleTemp=sta_Window[SW_WINDOW_TAIL].uiAbove;

//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
	EG_StartVS();
	EG_CopyToVS();
	for(uiCount=1;uiCount<SW_WINDOW_MAX;uiCount++)
	{
		if(sta_Window[uiHandleTemp].uiHandle)
		{
//			if(SW_IsCovered(uiHandle,uiHandleTemp))
			{
				SW_PaintWindow(uiHandleTemp);
			}
		}
		uiHandleTemp=sta_Window[uiHandleTemp].uiAbove;
	}
	EG_CopyToVRAM();
	EG_EndVS();
	
	sta_Window[uiHandle].uiState=SW_STATE_HIDE;
	
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
	return 0;
}

/*
*********************************************************************************************************
*                                               
*
* Description:
* 
* Arguments  : 
*
* Returns    : 
*
* Note(s)    :  
*               
*********************************************************************************************************
*/
uint16 SW_RefreshWindow(void)
{
	uint16 uiCount;
	uint16 uiHandleTemp;
	
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
	uiHandleTemp=sta_Window[SW_WINDOW_TAIL].uiAbove;

	EG_StartVS();
	EG_CopyToVS();
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
	for(uiCount=1;uiCount<SW_WINDOW_MAX;uiCount++)
	{
		if(sta_Window[uiHandleTemp].uiHandle)
		{
			SW_PaintWindow(uiHandleTemp);
		}
		uiHandleTemp=sta_Window[uiHandleTemp].uiAbove;
	}
	
	EG_CopyToVRAM();
	EG_EndVS();
	
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
	return 0;
}

⌨️ 快捷键说明

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