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

📄 tile.c

📁 LCD显示驱动控制程序
💻 C
字号:
//******************************************************************
//
//          Copyright (C) 2003. GENESIS MICROCHIP INC.
//  All rights reserved.  No part of this program may be reproduced.
//
//  Genesis Microchip Inc., 165 Commerce Valley Dr. West
//          Thornhill, Ontario, Canada, L3T 7V8
//	Genesis Microchip Corp., 2150 Gold Street
//			Alviso, CA 95002	USA
//
//================================================================
//
// MODULE:      Tile.c
//
// USAGE:       
//
//******************************************************************************
#include "inc\all.h"
#include "..\OsdLib\extOsdLib.h"

//******************************************************************
//			G L O B A L   V A R I A B L E S
//******************************************************************
ST_OSD_TILE_CTRL ROM * xdata g_CurrentTiles[MAX_TILE_NUMBER];


// PDR #6755
#if (TILE_SUPPORT == 0) 
extern ST_OSD_DIALOG_CTRL ROM * xdata g_CurrentDialog;
#endif


//******************************************************************
//			L O C A L  D E F I N E S
//******************************************************************
//extern BYTE ROM * ROM OsdDialogs[];


//******************************************************************
//			C O D E
//******************************************************************

#ifdef Action_AllocateTile_WB_Used
//******************************************************************
// FUNCTION     :   AllocateTile
// USAGE        :   Setting OSD rectangle parameters
// DESCRIPTION  :   Setting addresses of CCF and fonts, position of 
//					rectangle and background for selected rectangle
// INPUT        :   none
// OUTPUT       :   None
// GLOBALS      :   
// USED_REGS    :   
//******************************************************************
void AllocateTile (void)
{
		
	ST_OSD_TILE_CTRL ROM * Sp_Tile;

	gm_GetActionOperand();
	Sp_Tile = (ST_OSD_TILE_CTRL ROM *)ActionOp;

	#ifdef DEBUG_OSD
		gm_Print("Allocate Tile %d", Sp_Tile->TileId);
	#endif


	SelectRectangle(Sp_Tile->TileId);

	OsdC_RectSetup (Sp_Tile->XSize,
 					Sp_Tile->YSize,
				    Sp_Tile->ChrTbl1Bpp * 2,
				 	Sp_Tile->ChrTbl2Bpp *2,
				 	Sp_Tile->Address *2);


	g_CurrentTiles[Sp_Tile->TileId] = Sp_Tile;

	SetTilePosition(Sp_Tile->TileId);
/*
this is not working AlekseyK PDR#5565
	OsdC_CCFFill (Sp_Tile->Address,
 				Sp_Tile->XSize * Sp_Tile->YSize,
			    CABPP (SPACE_INDEX, Sp_Tile->ColorAttrib, 1));
*/

// AlekseyK PDR#5565
	OsdC_FillRect(	0, 
				  	0, 
				  	Sp_Tile->XSize, 
				  	Sp_Tile->YSize, 
				  	SPACE_INDEX,
		    		Sp_Tile->ColorAttrib);

}
#endif // Action_AllocateTile_WB_Used

#ifdef Action_DeallocateTile_WB_Used
//******************************************************************
// FUNCTION     :   DeallocateTile
// USAGE        :   remove tile information
// DESCRIPTION  :   Removed tile information from g_CurrentTile[]
//
// INPUT        :   none
// OUTPUT       :   None
// GLOBALS      :   
// USED_REGS    :   
//******************************************************************
void DeallocateTile (void)
{
	ST_OSD_TILE_CTRL ROM * Sp_Tile;

	gm_GetActionOperand();
	Sp_Tile = (ST_OSD_TILE_CTRL ROM *)ActionOp;
	g_CurrentTiles[Sp_Tile->TileId] = 0;
}
#endif // Action_DeallocateTile_WB_Used


#ifdef Action_ShowTile_WB_Used
//******************************************************************
// FUNCTION     :   ShowTile
// USAGE        :   Enable OSD rectangle
// DESCRIPTION  :   Select current rectangle and enable selected rect
// INPUT        :   none
// OUTPUT       :   None
// GLOBALS      :   
// USED_REGS    :   
//******************************************************************
void ShowTile (void)
{
	ST_OSD_TILE_CTRL ROM * Sp_Tile;

	gm_GetActionOperand();
	Sp_Tile = (ST_OSD_TILE_CTRL ROM *)ActionOp;

	#ifdef DEBUG_OSD
		gm_Print("Show Tile %d", Sp_Tile->TileId);
	#endif

	SelectRectangle(Sp_Tile->TileId);	
	OsdC_Show();
}
#endif // Action_ShowTile_WB_Used



#ifdef Action_HideTile_WB_Used
//******************************************************************
// FUNCTION     :   HideTile
// USAGE        :   Disable OSD rectangle
// DESCRIPTION  :   Select current rectangle and disable selected rect
// INPUT        :   none
// OUTPUT       :   None
// GLOBALS      :   
// USED_REGS    :   
//******************************************************************
void HideTile (void)
{

	ST_OSD_TILE_CTRL ROM * Sp_Tile;

	gm_GetActionOperand();
	Sp_Tile = (ST_OSD_TILE_CTRL ROM *)ActionOp;

	#ifdef DEBUG_OSD
		gm_Print("Hide Tile %d", Sp_Tile->TileId);
	#endif

	SelectRectangle(Sp_Tile->TileId);	
	OsdC_Hide();

}
#endif // Action_HideTile_WB_Used



//******************************************************************
// FUNCTION     :   SetTilePosition
// USAGE        :   Position OSD rectangle on screen
// DESCRIPTION  :   Positions the OSD rectangle on the screen
// INPUT        :   Number of tile
// OUTPUT       :   None
// GLOBALS      :   
// USED_REGS    :   
//******************************************************************
void SetTilePosition (BYTE TileId)
{
	ST_OSD_TILE_CTRL ROM * Sp_Tile = g_CurrentTiles[TileId];

// PDR #6755
#if (TILE_SUPPORT != 0)
	if(Sp_Tile)
	{
		SelectRectangle(TileId);
		#ifdef DEBUG_OSD
			gm_Print("SetTilePosition %d", TileId);
		#endif
		if(UserPrefOSDStretch == 0)
			OsdC_PositionOsd (UserPrefHPosOSD,
							200 - UserPrefVPosOSD,
							((ST_OSD_DIALOG_CTRL ROM *)OsdDialogs[Sp_Tile->DialogId])->XSize,
							((ST_OSD_DIALOG_CTRL ROM *)OsdDialogs[Sp_Tile->DialogId])->YSize,
							Sp_Tile->XPos,
							Sp_Tile->YPos,
							0);
		else//pkb1201
			OsdC_PositionOsd (UserPrefHPosOSD,
							200 - UserPrefVPosOSD,
							(((ST_OSD_DIALOG_CTRL ROM *)OsdDialogs[Sp_Tile->DialogId])->XSize)*2,
							(((ST_OSD_DIALOG_CTRL ROM *)OsdDialogs[Sp_Tile->DialogId])->YSize)*2,
							Sp_Tile->XPos,
							Sp_Tile->YPos,
							3);
		
/*		
		OsdC_PositionOsd (UserPrefHPosOSD,
							UserPrefVPosOSD,
							((ST_OSD_DIALOG_CTRL ROM *)OsdDialogs[Sp_Tile->DialogId])->XSize,
							((ST_OSD_DIALOG_CTRL ROM *)OsdDialogs[Sp_Tile->DialogId])->YSize,
							Sp_Tile->XPos,
							Sp_Tile->YPos,
							0);
*/							
	}
#else
	{
		SelectRectangle(TileId);
		#ifdef DEBUG_OSD
			gm_Print("SetTilePosition %d", TileId);
		#endif
		OsdC_PositionOsd (UserPrefHPosOSD,
							UserPrefVPosOSD,
							g_CurrentDialog->XSize,
							g_CurrentDialog->YSize,
							0,
							0,
							0);
	}

#endif
}

⌨️ 快捷键说明

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