?? osd2_initial.c
字號:
//---------------------------------------------------------------------------
// Terawins Inc. Company Confidential Strictly Private
//
// $Archive: OSD2CSL.c $
// $Revision: 0.01 $
// $Author: Kevin Hsu $
// $Date: 2006/10/12 $
//
// --------------------------------------------------------------------------
// >>>>>>>>>>>>>>>>>>>>>>>>> COPYRIGHT NOTICE <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
// --------------------------------------------------------------------------
// Copyright 2002(c) Terawins Inc.
// --------------------------------------------------------------------------
#include "Common.h"
#include "Global.h"
#include "ICControl.h"
#include "System.h"
#include "TWICreg.h"
#include "OSD2_Define.h"
//#include "ICON2BP12X18.H"
#include "Icon4BP12x12.H"
#include "Icon4BP12x122.H"
//#include "Icon4BP12x123.H"
#include "UIDraw.h"
uCHAR code *FontsStart;
void OSD2Init(void);
void OSD2LoadColor(void);
void OSD2Load4BPFont(void);
void OSD2Load2BPFont(void);
void OSD2Load1BPFont(void);
uCHAR code OSD2BGNDLutData[6]={
//0x01,0x02,0x03,0x05,0x06,0x07 //6 background remap colors
0xFA,0xFB,0xFC,0xFD,0xFE,0xFF,
};
void OSD2InItClearMenu(uCHAR MenuIndex)
{
uCHAR i;
if(MenuIndex == MENU1)
{
for(i=0; i<Menu1Height; i++)
{
OSD2SetRamAddr(Menu1StrAdr+(Menu1Width+4)*i);
//~Set RAtt_V~//
if(i==0)
OSD2SetRamData(0x4000|Menu1StartY);
else
OSD2SetRamData(0xE001);
//~Set RAtt_H~//
OSD2SetRamData(0x6000|Menu1StartX);
//~Set RAtt_A~//
OSD2SetRamData(0xD000|0x0003);
//~Set RAtt_C~//
OSD2SetRamData(0x0000|(Menu1Width));
m_wBuff[0]=0;
while(m_wBuff[0]<Menu1Width)
{
OSD2SetRamData(0x0000|((uWORD)(0&0x0F)<<9)|(OSD2SPACE));//osd2_blank
m_wBuff[0]++;
}
}
}
else if(MenuIndex == MENU2)
{
for(i=0; i<Menu2Height; i++)
{
OSD2SetRamAddr(Menu2StrAdr+(Menu2Width+4)*i);
//~Set RAtt_V~//
if(i==0)
OSD2SetRamData(0x4000|Menu2StartY);
else
OSD2SetRamData(0xE001);
//~Set RAtt_H~//
OSD2SetRamData(0x6000|Menu2StartX);
//~Set RAtt_A~//
OSD2SetRamData(0xD000|0x0003);
//~Set RAtt_C~//
OSD2SetRamData(0x0000|(Menu2Width));
m_wBuff[0]=0;
while(m_wBuff[0]<Menu2Width)
{
OSD2SetRamData(0x0000|((uWORD)(0&0x0F)<<9)|(35));
m_wBuff[0]++;
}
}
}
}
void OSD2Init(void)
{
//~Set Font Size.~//
if(FontWidth==OSD2FONTWIDTH12)
OSD2CfgWr(OSD_CHAR_FONT_SIZE,(0x00)|FontHeight);
if(FontWidth==OSD2FONTWIDTH16)
OSD2CfgWr(OSD_CHAR_FONT_SIZE,(0x20)|FontHeight);
//~Set Char2BP Font Index Base.~//
OSD2CfgWr(OSD_CHAR2BP_FONT_INDEX,Font2BPIndexStr);
//~Set Char4BP Font Index Base.~//
OSD2CfgWr(OSD_CHAR4BP_FONT_INDEX,Font4BPIndexStr);
//~Set Char2BP Font Memory Base Address.~//
OSD2CfgWr(OSD_CHAR2BP_FONT_MEMADD_L,Font2BPDataStrAdr&0x00FF);
OSD2CfgWr(OSD_CHAR2BP_FONT_MEMADD_M,Font2BPDataStrAdr>>8);
//~Set Char4BP Font Memory Base Address.~//
OSD2CfgWr(OSD_CHAR4BP_FONT_MEMADD_L,Font4BPDataStrAdr&0x00FF);
OSD2CfgWr(OSD_CHAR4BP_FONT_MEMADD_M,Font4BPDataStrAdr>>8);
//~Set Globa Alpha Blending Control.~//
OSD2CfgWr(OSD_GLOBAL_ALPHA_BLENDING,0x00);
//~Set Border/Shadow/Char1BP Color High Bits Offset.~//
OSD2CfgWr(OSD_BSH_COLOR_HIGHBIT,0x20);
//Clear Ram
OSD2SetRamAddr(0);
for(m_wBuff[1]=0; m_wBuff[1]<8192; m_wBuff[1]++)
{
IC_WritByte(TWIC_P0,OSD2_RAM_DL,0);
IC_WritByte(TWIC_P0,OSD2_RAM_DL,0);
}
//~Menue-1 Setting. ~//
OSD2CfgWr(OSD_MENU1_ENABLE,0x00);
OSD2CfgWr(OSD_MENU1_START_ADR_L,Menu1StrAdr&0x00FF);
OSD2CfgWr(OSD_MENU1_START_ADR_M,Menu1StrAdr>>8);
OSD2CfgWr(OSD_MENU1_END_ADR_L,Menu1EndAdr&0x00FF);
OSD2CfgWr(OSD_MENU1_END_ADR_M,Menu1EndAdr>>8);
OSD2InItClearMenu(MENU1);
//~Menue-2 Setting. ~//
OSD2CfgWr(OSD_MENU2_ENABLE,0x00);
OSD2CfgWr(OSD_MENU2_START_ADR_L,Menu2StrAdr&0x00FF);
OSD2CfgWr(OSD_MENU2_START_ADR_M,Menu2StrAdr>>8);
OSD2CfgWr(OSD_MENU2_END_ADR_L,Menu2EndAdr&0x00FF);
OSD2CfgWr(OSD_MENU2_END_ADR_M,Menu2EndAdr>>8);
OSD2InItClearMenu(MENU2);
//~Load Color Table.~//
#ifdef ICON2BP
OSD2LoadColor();
FontsStart = font0_000;
OSD2Load1BPFont();
#endif //ICON2BP
#ifdef ICON4BP
OSD2LoadColor();
FontsStart = font4BP0_000;
OSD2Load4BPFont();
OSD2Load4BPFont2();
#endif //ICON4BP
IC_WritByte(TWIC_P0,OSD2_CFG_INDEX,0x09);
for(m_wBuff[0] =0;m_wBuff[0]<18;m_wBuff[0]++)
{
IC_WritByte(TWIC_P0,OSD2_CFG_DATA,0);
}
//Fill pattern
OSD2CfgWr(0x30,0x4B);
OSD2CfgWr(0x31,0x80);
OSD2CfgWr(0x32,6);
OSD2CfgWr(0x33,12);
OSD2CfgWr(0x35,00);
OSD2CfgWr(0x38,0x0C);
OSD2CfgWr(0x3C,0xE7);
OSD2CfgWr(0x3E,0xE9);
for(m_wBuff[1]=0; m_wBuff[1]<(FontHeight); m_wBuff[1]++)
{
m_wBuff[2] = m_wBuff[1]*6;
OSD2CfgWr(0x37,font4BP0_Pat[m_wBuff[2] ]);
OSD2CfgWr(0x37,font4BP0_Pat[m_wBuff[2]+1]);
OSD2CfgWr(0x37,font4BP0_Pat[m_wBuff[2]+2]);
OSD2CfgWr(0x37,font4BP0_Pat[m_wBuff[2]+3]);
OSD2CfgWr(0x37,font4BP0_Pat[m_wBuff[2]+4]);
OSD2CfgWr(0x37,font4BP0_Pat[m_wBuff[2]+5]);
}
}
// void OSD2LoadBGNDColor(uCHAR* BGNDTBL)
// {
// uCHAR i;
// OSD2CfgWr(OSD_COLOR_LUT_ADR_PORT,0x88);//0x110--OSD2BGND Color Remap LUT
// IC_WritByte(TWIC_P0,OSD2_CFG_INDEX,0x09);
//
// for(i = 0; i < 6;i++)
// {
// IC_WritByte(TWIC_P0,OSD2_CFG_DATA,*BGNDTBL);
// }
// }
void OSD2LoadColor()
{
//~ Load Main Color Look Up Table.~//
#ifdef ICON4BP
OSD2CfgWr(OSD_COLOR_LUT_ADR_PORT,0x00);
IC_WritByte(TWIC_P0,OSD2_CFG_INDEX,0x09);
for(m_wBuff[0] =0;m_wBuff[0]<COLORTBLNUM;m_wBuff[0]++)
{
IC_WritByte(TWIC_P0,OSD2_CFG_DATA,Icon4BPColorTable[m_wBuff[0]]);
}
OSD2CfgWr(OSD_COLOR_LUT_ADR_PORT,0x80);//0x100--Char2BP Color Remap LUT
IC_WritByte(TWIC_P0,OSD2_CFG_INDEX,0x09);
for(m_wBuff[0]=0;m_wBuff[0]<16;m_wBuff[0]++)
{
IC_WritByte(TWIC_P0,OSD2_CFG_DATA,0);
IC_WritByte(TWIC_P0,OSD2_CFG_DATA,0);
IC_WritByte(TWIC_P0,OSD2_CFG_DATA,0);
}
OSD2CfgWr(OSD_COLOR_LUT_ADR_PORT,0x88);//0x110--OSD2BGND Color Remap LUT
IC_WritByte(TWIC_P0,OSD2_CFG_INDEX,0x09);
for(m_wBuff[0] = 0; m_wBuff[0] < 6;m_wBuff[0]++)
{
IC_WritByte(TWIC_P0,OSD2_CFG_DATA,OSD2BGNDLutData[m_wBuff[0]]);
}
#endif //ICON4BP
#ifdef ICON2BP
//~Load Char2BP Color Remap LUT.~//
OSD2CfgWr(OSD_COLOR_LUT_ADR_PORT,0x80);
IC_WritByte(TWIC_P0,OSD2_CFG_INDEX,0x09);
for(m_wBuff[0]=0;m_wBuff[0]<16;m_wBuff[0]++)
{
IC_WritByte(TWIC_P0,OSD2_CFG_DATA,IndexColorTable[m_wBuff[0]*3+2]);
IC_WritByte(TWIC_P0,OSD2_CFG_DATA,IndexColorTable[m_wBuff[0]*3+1]);
IC_WritByte(TWIC_P0,OSD2_CFG_DATA,IndexColorTable[m_wBuff[0]*3]);
}
#endif //ICON2BP
}
#ifdef ICON2BP
void OSD2Load2BPFont(void)
{
OSD2SetRamAddr(Font2BPDataStrAdr);
if(FontWidth==OSD2FONTWIDTH12)
{
for(m_wBuff[1]=0;m_wBuff[1]<Font2BPNum;m_wBuff[1]++)
{
for(m_wBuff[0]=0; m_wBuff[0]<(FontHeight); m_wBuff[0]+=2)
{
m_wBuff[2] = (m_wBuff[1]* FontHeight+m_wBuff[0])*3;
IC_WritByte(TWIC_P0,OSD2_RAM_DL,FontsStart[m_wBuff[2]+1]);
IC_WritByte(TWIC_P0,OSD2_RAM_DL,FontsStart[m_wBuff[2]]);
IC_WritByte(TWIC_P0,OSD2_RAM_DL,FontsStart[m_wBuff[2]+3]);
IC_WritByte(TWIC_P0,OSD2_RAM_DL,FontsStart[m_wBuff[2]+2]);
IC_WritByte(TWIC_P0,OSD2_RAM_DL,FontsStart[m_wBuff[2]+5]);
IC_WritByte(TWIC_P0,OSD2_RAM_DL,FontsStart[m_wBuff[2]+4]);
}
}
}
}
#endif //ICON2BP
void OSD2Load4BPFont(void)
{
OSD2SetRamAddr(Font4BPDataStrAdr);
if(FontWidth==OSD2FONTWIDTH12)
{
for(m_wBuff[0]=0;m_wBuff[0]<60;m_wBuff[0]++)
{
for(m_wBuff[1]=0; m_wBuff[1]<(FontHeight); m_wBuff[1]++)
{
m_wBuff[2] = (m_wBuff[0]* FontHeight+m_wBuff[1])*6;
IC_WritByte(TWIC_P0,OSD2_RAM_DL,FontsStart[m_wBuff[2] +1]);
IC_WritByte(TWIC_P0,OSD2_RAM_DL,FontsStart[m_wBuff[2]]);
IC_WritByte(TWIC_P0,OSD2_RAM_DL,FontsStart[m_wBuff[2] +3]);
IC_WritByte(TWIC_P0,OSD2_RAM_DL,FontsStart[m_wBuff[2] +2]);
IC_WritByte(TWIC_P0,OSD2_RAM_DL,FontsStart[m_wBuff[2] +5]);
IC_WritByte(TWIC_P0,OSD2_RAM_DL,FontsStart[m_wBuff[2] +4]);
}
}
}
else if(FontWidth==OSD2FONTWIDTH16)
{
for(m_wBuff[0]=0;m_wBuff[0]<Font4BPNum;m_wBuff[0]++)
{
for(m_wBuff[1]=0; m_wBuff[1]<(FontHeight); m_wBuff[1]++)
{
m_wBuff[2] = (m_wBuff[0]* FontHeight+m_wBuff[1])*8;
IC_WritByte(TWIC_P0,OSD2_RAM_DL,FontsStart[m_wBuff[2] +1]);
IC_WritByte(TWIC_P0,OSD2_RAM_DL,FontsStart[m_wBuff[2]]);
IC_WritByte(TWIC_P0,OSD2_RAM_DL,FontsStart[m_wBuff[2] +3]);
IC_WritByte(TWIC_P0,OSD2_RAM_DL,FontsStart[m_wBuff[2] +2]);
IC_WritByte(TWIC_P0,OSD2_RAM_DL,FontsStart[m_wBuff[2] +5]);
IC_WritByte(TWIC_P0,OSD2_RAM_DL,FontsStart[m_wBuff[2] +4]);
IC_WritByte(TWIC_P0,OSD2_RAM_DL,FontsStart[m_wBuff[2] +7]);
IC_WritByte(TWIC_P0,OSD2_RAM_DL,FontsStart[m_wBuff[2] +6]);
}
}
}
}
/*void OSD2PatternFillInit(uCHAR code * pPattern,uCHAR ColorDepth, uCHAR Height, uCHAR Width)
{
OSD2CfgWr(OSD_PT_CTRL,ColorDepth);
OSD2CfgWr(OSD_PT_LUT_BASEADD,0x80);
OSD2CfgWr(OSD_PT_HSIZE,Height);
OSD2CfgWr(OSD_PT_VSIZE,Width);
OSD2CfgWr(OSD_PT_ALPBL_CTRL,00);
m_wBuff[2] = (Height*Width)/((ColorDepth&0x0C)>>2);
OSD2CfgWr(OSD_PT_CTRL,(ColorDepth|0x01));
for(m_wBuff[1]=0; m_wBuff[1]<m_wBuff[2]; m_wBuff[1]++)
{
OSD2CfgWr(OSD_PT_RAM_WRITE_PORT,pPattern[m_wBuff[1]]);
}
} */
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -