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

📄 taskdock.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[];

extern uint16 ui_TaskBar;
static uint16 ui_DockNum=0;
static uint16 ui_DockFirst=0;

//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
uint16 ui_Dock[SW_DOCK_MAX];

/*
*********************************************************************************************************
*                                               
*
* Description:
* 
* Arguments  : 
*
* Returns    : 
*
* Note(s)    :  
*               
*********************************************************************************************************
*/
uint16 SW_AddDock(uint16 uiHandle)
{
	uint16 uiCount;
	
	for(uiCount=0;uiCount<SW_DOCK_MAX;uiCount++)
	{
		if(ui_Dock[uiCount]==SW_DEF_HANDLE)
		{
			ui_Dock[uiCount]=uiHandle;
			ui_DockNum++;
			
			if(ui_DockNum>(ui_DockFirst+SW_DOCK_SHOW_MAX))
				ui_DockFirst++;
				
			SW_ShowWindow(ui_TaskBar);
			return 0;
		}
	}
	
	return 1;
}


/*
*********************************************************************************************************
*                                               
*
* Description:
* 
* Arguments  : 
*
* Returns    : 
*
* Note(s)    :  
*               
*********************************************************************************************************
*/
uint16 SW_DeleteDock(uint16 uiHandle)
{
	uint16 uiCount,uiCount2;
	
	for(uiCount=0;uiCount<SW_DOCK_MAX;uiCount++)
	{
		if(ui_Dock[uiCount]==uiHandle)
		{
			if(uiCount<(SW_DOCK_MAX-1))
			{
				for(uiCount2=uiCount;uiCount2<(SW_DOCK_MAX-1);uiCount2++)
					ui_Dock[uiCount2]=ui_Dock[uiCount2+1];
			}
			ui_Dock[SW_DOCK_MAX-1]=SW_DEF_HANDLE;
			ui_DockNum--;
			
			if(ui_DockFirst)
				ui_DockFirst--;
			SW_ShowWindow(ui_TaskBar);
			return 0;
		}
	}
	
	return 1;
}

/*
*********************************************************************************************************
*                                               
*
* Description:
* 
* Arguments  : 
*
* Returns    : 
*
* Note(s)    :  
*               
*********************************************************************************************************
*/
void SW_ShowBar(uint16 uiHandle)
{
	uint16 uiCount,uiHandleTemp,uiX0;
	paintarea stArea;
		
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
	SW_GetEffectArea(uiHandle,&stArea);
	
//******************************************************************************************************
	if(ui_DockFirst)
		EG_TextOutEx(stArea.uiX1-SW_DOCK_MOVE_WIDTH*2+2,stArea.uiY0,"←");
	if(ui_DockNum>(ui_DockFirst+SW_DOCK_SHOW_MAX))
		EG_TextOutEx(stArea.uiX1-SW_DOCK_MOVE_WIDTH+2,stArea.uiY0,"→");
		
	EG_LineEx(stArea.uiX1-SW_DOCK_MOVE_WIDTH*2,stArea.uiY0,
			stArea.uiX1-SW_DOCK_MOVE_WIDTH*2,stArea.uiY1,
			SW_DEF_FRAME_WIDTH,SW_TASKBAR_FRONT);
	EG_LineEx(stArea.uiX1-SW_DOCK_MOVE_WIDTH+2,stArea.uiY0,
			stArea.uiX1-SW_DOCK_MOVE_WIDTH+2,stArea.uiY1,
			SW_DEF_FRAME_WIDTH,SW_TASKBAR_FRONT);
	
//******************************************************************************************************
	for(uiCount=ui_DockFirst;uiCount<(ui_DockFirst+SW_DOCK_SHOW_MAX);uiCount++)
	{
		uiHandleTemp=ui_Dock[uiCount];
		if(uiHandleTemp!=SW_DEF_HANDLE)
		{
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
			uiX0=stArea.uiX0+SW_DOCK_WIDTH*(uiCount-ui_DockFirst);
			
			EG_SetFontColour(SW_TASKBAR_FRONT);
			EG_TextOutCut(uiX0+SW_DEF_FONT_WIDTH/4,stArea.uiY0,10,
					sta_Window[uiHandleTemp].scTitle);

			uiX0+=SW_DOCK_WIDTH;
			EG_LineEx(uiX0,stArea.uiY0,uiX0,stArea.uiY1,
					SW_DEF_FRAME_WIDTH,SW_TASKBAR_FRONT);
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
		}
	}
}

/*
*********************************************************************************************************
*                                               
*
* Description:
* 
* Arguments  : 
*
* Returns    : 
*
* Note(s)    :  
*               
*********************************************************************************************************
*/
static void SW_MoveDock(uint16 uiDirection)
{
	if(uiDirection==SW_DOCK_MOVE_LEFT)
	{
		if(ui_DockFirst)
		{
			ui_DockFirst--;
			SW_ShowWindow(ui_TaskBar);
//			UART_TextOut("Dock Move to left %d\n",ui_DockFirst);
		}
	}
	else
	{
		if(ui_DockNum>(ui_DockFirst+SW_DOCK_SHOW_MAX))
		{
			ui_DockFirst++;
			SW_ShowWindow(ui_TaskBar);
//			UART_TextOut("Dock Move to right %d\n",ui_DockFirst);
		}
	}
}

/*
*********************************************************************************************************
*                                               
*
* Description:
* 
* Arguments  : 
*
* Returns    : 
*
* Note(s)    :  
*               
*********************************************************************************************************
*/
static uint16 SW_GetClickDock(uint16 uiHandle,uint16 uiX)
{
	uint16 uiCount;
	paintarea stArea;
	
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
	SW_GetEffectArea(uiHandle,&stArea);
	
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
	for(uiCount=0;uiCount<SW_DOCK_SHOW_MAX;uiCount++)
		if(uiX<((uiCount+1)*SW_DOCK_WIDTH))
			return uiCount;
	
	if(uiX<(SW_XMAX-SW_DOCK_MOVE_WIDTH))
		return SW_DOCK_MOVE_LEFT;
	
	return SW_DOCK_MOVE_RIGHT;
}

/*
*********************************************************************************************************
*                                               
*
* Description:
* 
* Arguments  : 
*
* Returns    : 
*
* Note(s)    :  
*               
*********************************************************************************************************
*/
void SW_ShowDock(uint16 uiHandle,uint16 uiX)
{
	uint16 uiDock,uiDockHandle;

//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
	uiDock=SW_GetClickDock(uiHandle,uiX);
	
	if(uiDock>=SW_DOCK_SHOW_MAX)
	{
		SW_MoveDock(uiDock);
		return;
	}
	
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
	uiDockHandle=ui_Dock[ui_DockFirst+uiDock];
	
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
	if(sta_Window[uiDockHandle].uiHandle==SW_DEF_HANDLE)
		return;

//******************************************************************************************************
	if(sta_Window[ui_TaskBar].uiUnder!=uiDockHandle)
		SW_ShowWindow(uiDockHandle);
	else
		SW_HideWindow(uiDockHandle);
}

⌨️ 快捷键说明

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