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

📄 mainwindow.c

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

#define SW_ICON_MOVE_WIDTH	(64)
#define SW_ICON_MOVE_HIGH	(16)
#define SW_ICON_MOVE_OFFSET	(SW_ICON_MOVE_WIDTH/2+4)
#define SW_ICON_MOVE_XMIN	((SW_DESK_XMAX-SW_ICON_MOVE_WIDTH)/2)
#define SW_ICON_MOVE_YMIN	(SW_DESK_YMAX-SW_ICON_MOVE_HIGH-4)
#define SW_ICON_MOVE_XMAX	((SW_DESK_XMAX+SW_ICON_MOVE_WIDTH)/2)
#define SW_ICON_MOVE_YMAX	(SW_DESK_YMAX-4)
#define SW_ICON_MOVE_LEFT	(SW_ICON_MAX)
#define SW_ICON_MOVE_RIGHT	(SW_ICON_MAX+1)
#define SW_ICON_NO_CLICK	(SW_ICON_MAX+2)

//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
deskicon sta_Icon[SW_ICON_MAX];

uint16 ui_MainWindow=SW_DEF_HANDLE;

//******************************************************************************************************
void SW_ShowIcon(uint8 *pucBitMap,char *pscTitle,uint16 uiPosition);

/*
*********************************************************************************************************
*                                               
*
* Description:
* 
* Arguments  : 
*
* Returns    : 
*
* Note(s)    :  
*               
*********************************************************************************************************
*/
static void SW_ShowMoveButton(void)
{
	EG_EllipseFill( SW_ICON_MOVE_XMIN-SW_ICON_MOVE_OFFSET,SW_ICON_MOVE_YMIN,
					SW_ICON_MOVE_XMAX-SW_ICON_MOVE_OFFSET,SW_ICON_MOVE_YMAX,EG_RED|EG_BLUE);
	EG_Ellipse( SW_ICON_MOVE_XMIN-SW_ICON_MOVE_OFFSET,SW_ICON_MOVE_YMIN,
				SW_ICON_MOVE_XMAX-SW_ICON_MOVE_OFFSET,SW_ICON_MOVE_YMAX,EG_BLACK);
	EG_EllipseFill( SW_ICON_MOVE_XMIN+SW_ICON_MOVE_OFFSET,SW_ICON_MOVE_YMIN,
					SW_ICON_MOVE_XMAX+SW_ICON_MOVE_OFFSET,SW_ICON_MOVE_YMAX,EG_RED|EG_BLUE);
	EG_Ellipse( SW_ICON_MOVE_XMIN+SW_ICON_MOVE_OFFSET,SW_ICON_MOVE_YMIN,
				SW_ICON_MOVE_XMAX+SW_ICON_MOVE_OFFSET,SW_ICON_MOVE_YMAX,EG_BLACK);
	
	EG_SetFontColour(EG_BLUE|EG_GREEN);
	EG_TextOutEx(SW_ICON_MOVE_XMIN-SW_ICON_MOVE_OFFSET+2,(SW_ICON_MOVE_YMAX-SW_ICON_MOVE_HIGH+2),
				"   Up      Down");
}

/*
*********************************************************************************************************
*                                               
*
* Description:
* 
* Arguments  : 
*
* Returns    : 
*
* Note(s)    :  
*               
*********************************************************************************************************
*/
extern unsigned char uca_MyAppPic[];

static void SW_ShowMain(uint16 uiHandle)
{
	paintarea stArea;
	uint16 uiRow,uiColumn,uiX0,uiY0;
	uint16 uiIcon;
	
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
	if(SW_GetEffectArea(uiHandle,&stArea))
	{
		UART_TextOut("Get effect area error.(SW_ShowIcon)\n");
		return;
	}
	
	uiX0=stArea.uiX0;
	uiY0=(stArea.uiY1-SW_ICON_HIGH*SW_ICON_ROW_MAX)/2;
		
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
	EG_PaintBmp(50,40,205,160,uca_MyAppPic);
	
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
	for(uiRow=0;uiRow<SW_ICON_ROW_MAX;uiRow++)
		for(uiColumn=0;uiColumn<SW_ICON_COLUMN_MAX;uiColumn++)
		{
			uiIcon=uiRow*SW_ICON_COLUMN_MAX+uiColumn;
			if(sta_Icon[uiIcon].pscTitle!=NULL)
			{
				SW_ShowIcon(sta_Icon[uiIcon].pucBitMap,sta_Icon[uiIcon].pscTitle,uiIcon);
			}
		}
		
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
	SW_ShowMoveButton();
}

/*
*********************************************************************************************************
*                                               
*
* Description:
* 
* Arguments  : 
*
* Returns    : 
*
* Note(s)    :  
*               
*********************************************************************************************************
*/
static uint16 SW_GetIconClick(uint16 uiHandle,uint16 uiX,uint16 uiY)
{
	uint16 uiRow,uiColumn,uiIcon;
	uint16 uiX0,uiY0;
	paintarea stArea;
	
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
	if(SW_GetEffectArea(uiHandle,&stArea))
	{
		UART_TextOut("Get effect area error.(SW_RunIcon)\n");
		return SW_ICON_MAX;
	}

//******************************************************************************************************
	uiX0=stArea.uiX0;
	uiY0=(stArea.uiY1-SW_ICON_HIGH*SW_ICON_ROW_MAX)/2;

	for(uiRow=0;uiRow<SW_ICON_ROW_MAX;uiRow++)
	{
		for(uiColumn=0;uiColumn<SW_ICON_COLUMN_MAX;uiColumn++)
		{
			if( uiX>(uiX0+SW_ICOM_BMP_XMIN+uiColumn*SW_ICON_WIDTH)&&
				uiY>(uiY0+SW_ICON_BMP_YMIN+uiRow*SW_ICON_HIGH)&&
				uiX<(uiX0+SW_ICON_BMP_XMAX+uiColumn*SW_ICON_WIDTH)&&
				uiY<(uiY0+SW_ICON_BMP_YMAX+uiRow*SW_ICON_HIGH))
			{
				uiIcon=uiRow*SW_ICON_COLUMN_MAX+uiColumn;
				if(sta_Icon[uiIcon].pscTitle!=NULL&&
						sta_Icon[uiIcon].uiState!=SW_ICON_STATE_RUN)
				{
					return uiIcon;
				}
				return SW_ICON_NO_CLICK;
			}
		}
	}
	
	if( uiX>(SW_ICON_MOVE_XMIN-SW_ICON_MOVE_OFFSET)&&uiY>(SW_ICON_MOVE_YMIN)&&
		uiX<(SW_ICON_MOVE_XMAX-SW_ICON_MOVE_OFFSET)&&uiY<(SW_ICON_MOVE_YMAX))
		return SW_ICON_MOVE_LEFT;
	
	if( uiX>(SW_ICON_MOVE_XMIN+SW_ICON_MOVE_OFFSET)&&uiY>(SW_ICON_MOVE_YMIN)&&
		uiX<(SW_ICON_MOVE_XMAX+SW_ICON_MOVE_OFFSET)&&uiY<(SW_ICON_MOVE_YMAX))
		return SW_ICON_MOVE_RIGHT;
	
//******************************************************************************************************
	return SW_ICON_NO_CLICK;
}

/*
*********************************************************************************************************
*                                               
*
* Description:
* 
* Arguments  : 
*
* Returns    : 
*
* Note(s)    :  
*               
*********************************************************************************************************
*/
static void SW_RunIcon(uint16 uiHandle,uint16 uiX,uint16 uiY)
{
	uint16 uiIcon=SW_GetIconClick(uiHandle,uiX,uiY);
	
	if(uiIcon<SW_ICON_MAX)
	{
		sta_Icon[uiIcon].uiState=SW_ICON_STATE_RUN;
		SW_OpenApp(uiIcon);
    }
    else
    {
    	if(uiIcon==SW_ICON_MOVE_LEFT)
    		UART_TextOut("Icon move to left.\n");
    	if(uiIcon==SW_ICON_MOVE_RIGHT)
    		UART_TextOut("Icon move to right.\n");
    }
}

/*
*********************************************************************************************************
*                                               
*
* Description:
* 
* Arguments  : 
*
* Returns    : 
*
* Note(s)    :  
*               
*********************************************************************************************************
*/
static void SW_MainWindowCB(uint16 uiHandle,uint16 uiX,uint16 uiY,uint16 uiState)
{
	switch(uiState)
	{
		case SW_WINDOW_PAINT:SW_ShowMain(uiHandle);break;
		case SW_TS_DOWN		:SW_RunIcon(uiHandle,uiX,uiY);break;
		case SW_TS_HOLD		:break;
		default:break;
	}
}

/*
*********************************************************************************************************
*                                               
*
* Description:
* 
* Arguments  : 
*
* Returns    : 
*
* Note(s)    :  
*               
*********************************************************************************************************
*/
uint16 SW_MainWindow(void)
{
	uint16 uiCount;
	window stWindow;
	
	for(uiCount=0;uiCount<SW_ICON_MAX;uiCount++)
	{
		sta_Icon[uiCount].pucBitMap=NULL;
		sta_Icon[uiCount].pscTitle=NULL;
		sta_Icon[uiCount].uiState=SW_ICON_STATE_STOP;
	}
	
//******************************************************************************************************
	SW_StructInit(&stWindow);
	
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
	stWindow.uiX=0;
	stWindow.uiY=0;
	stWindow.uiWidth=SW_XMAX;
	stWindow.uiHigh=SW_YMAX;

	stWindow.scTitle="Main Window";
	stWindow.uiStyple=SW_STYPLE_MAIN;
	stWindow.stFront=EG_BLACK;
	stWindow.stBack=EG_GREEN;
	
	stWindow.CallBack=SW_MainWindowCB;
	
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
	ui_MainWindow=SW_CreateWindow(&stWindow);
	if(ui_MainWindow==0)
	{
		UART_TextOut("Can not create Main Window.(SW_MainWindow)\n");
		return 1;
	}

//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
	if(SW_ShowWindow(ui_MainWindow))
	{
		UART_TextOut("Can not show Main Window.(SW_MainWindow)\n");
		return 1;
	}
	
	return 0;
}

⌨️ 快捷键说明

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