📄 gui.c
字号:
return ErrCode;
}
ST_ErrorCode_t OSD_Term(void)
{
ST_ErrorCode_t ErrCode = ST_NO_ERROR;
//ErrCode = STLAYER_DisableViewPort(LAYER_Handle[LAYER_OSD]);
ErrCode =STLAYER_CloseViewPort(LAYER_ViewPortHandle[LAYER_OSD]);
STTBX_Print(("STLAYER_CloseViewPort = %s\n",GetErrorText(ErrCode)));
return (ErrCode);
}
ST_ErrorCode_t OSD_Reinit(int Mode)
{
#if 0
ST_ErrorCode_t ErrCode = ST_NO_ERROR;
STLAYER_GlobalAlpha_t GloabalAlpha;
STLAYER_LayerParams_t LayerParams;
STLAYER_GetLayerParams(LAYER_Handle[LAYER_OSD], &LayerParams);
if (Mode == 0)
{
LayerVpParams.InputRectangle.PositionX = 0;
LayerVpParams.InputRectangle.PositionY = 0;
LayerVpParams.InputRectangle.Width = RegionWidth;
LayerVpParams.InputRectangle.Height = RegionHeight;
LayerVpParams.OutputRectangle.PositionX = 0;
LayerVpParams.OutputRectangle.PositionY = 0;
LayerVpParams.OutputRectangle.Width = RegionWidth;
LayerVpParams.OutputRectangle.Height = RegionHeight;
}
else
{
LayerVpParams.InputRectangle.PositionX = 0;
LayerVpParams.InputRectangle.PositionY = 0;
LayerVpParams.InputRectangle.Width = RegionWidth;
LayerVpParams.InputRectangle.Height = 480;
LayerVpParams.OutputRectangle.PositionX = 0;
LayerVpParams.OutputRectangle.PositionY = 0;
LayerVpParams.OutputRectangle.Width = RegionWidth;
LayerVpParams.OutputRectangle.Height = 480;
}
Source.SourceType = STLAYER_GRAPHIC_BITMAP;
Source.Palette_p = &Palette;
Source.Data.BitMap_p = &Bitmap;
LayerVpParams.Source_p = &Source;
ErrCode = STLAYER_OpenViewPort(LAYER_Handle[LAYER_OSD],&LayerVpParams, &LAYER_ViewPortHandle[LAYER_OSD]);
if ( ErrCode != ST_NO_ERROR)
{
STTBX_Report((STTBX_REPORT_LEVEL_ERROR,"STLAYER_OpenViewPort()=%s",GetErrorText(ErrCode)));
return ErrCode;
}
ErrCode = STLAYER_GetViewPortSource(LAYER_ViewPortHandle[LAYER_OSD],&VPSource);
if(ErrCode!=ST_NO_ERROR)
{
STTBX_Print(("STLAYER_GetViewPortSource Failed!Error: %s\n",GetErrorText(ErrCode)));
}
STTBX_Print(("STLAYER_GetViewPortSource OK! VPSource = 0x%x\n",&VPSource));
GloabalAlpha.A0 = 128;
GloabalAlpha.A1 = 128;
ErrCode = STLAYER_SetViewPortAlpha(LAYER_ViewPortHandle[LAYER_OSD], &GloabalAlpha);
if ( ErrCode != ST_NO_ERROR)
{
STTBX_Report((STTBX_REPORT_LEVEL_ERROR,"STLAYER_OpenViewPort()=%s",GetErrorText(ErrCode)));
return ErrCode;
}
ErrCode=STLAYER_EnableViewPort(LAYER_ViewPortHandle[LAYER_OSD]);
if ( ErrCode != ST_NO_ERROR)
{
STTBX_Report((STTBX_REPORT_LEVEL_ERROR,"STLAYER_EnableViewPort()=%s",GetErrorText(ErrCode)));
return ErrCode;
}
#endif
}
ST_ErrorCode_t EMC_CreateViewPort(STLAYER_ViewPortSource_t *VP_Source,STLAYER_ViewPortParams_t *VP_Params,int X,int Y,int Width,int Height,STOSD_Color_t fillColor)
{
int i;
ST_ErrorCode_t ErrCode = ST_NO_ERROR;
STLAYER_GlobalAlpha_t GloabalAlpha;
STAVMEM_AllocBlockParams_t AllocBlockParams;
STAVMEM_BlockHandle_t BitmapHandle=0;
STAVMEM_BlockHandle_t PaletteHandle=0;
STGXOBJ_Color_t OSD_Color;
U32 PaletteLength;
/*Source Variable Initisalisation */
Source.SourceType = STLAYER_GRAPHIC_BITMAP;
Source.Palette_p = &Palette;
Source.Data.BitMap_p = &Bitmap;
VP_Params->Source_p = &Source;
Bitmap.ColorType = STGXOBJ_COLOR_TYPE_CLUT8;
/*Create 256 Palette*/
PaletteLength = 256;
Palette.PaletteType = STGXOBJ_PALETTE_TYPE_DEVICE_INDEPENDENT;
Palette.ColorType = STGXOBJ_COLOR_TYPE_ARGB8888;
Palette.ColorDepth = 8;
AllocBlockParams.Size = PaletteLength * 4;
AllocBlockParams.Alignment = 16;
AllocBlockParams.PartitionHandle = AvmemPartitionHandle[0];
AllocBlockParams.AllocMode = STAVMEM_ALLOC_MODE_BOTTOM_TOP;
AllocBlockParams.NumberOfForbiddenRanges = 0;
AllocBlockParams.ForbiddenRangeArray_p = (STAVMEM_MemoryRange_t *)0;
AllocBlockParams.NumberOfForbiddenBorders = 0;
AllocBlockParams.ForbiddenBorderArray_p = (void **)0;
ErrCode = STAVMEM_AllocBlock ((const STAVMEM_AllocBlockParams_t *)
&AllocBlockParams,
(STAVMEM_BlockHandle_t *) &(PaletteHandle));
if (ErrCode != ST_NO_ERROR)
{
sttbx_Print("\n----STAVMEM_AllocBlock for PaletteHandle ERROR!!\n");
return(ErrCode);
}
ErrCode = STAVMEM_GetBlockAddress( PaletteHandle, (void **)&(Palette.Data_p));
if (ErrCode != ST_NO_ERROR)
{
sttbx_Print("\n----STAVMEM_GetBlockAddress for PaletteHandle ERROR!!\n");
return(ErrCode);
}
sttbx_Print("\np addr = 0x%x\n",&(Palette.Data_p));
/* fill Palette */
OSD_Color.Type = STGXOBJ_COLOR_TYPE_ARGB8888;
for (i=0; i < 256; i++)
{
OSD_Color.Value.ARGB8888.Alpha = (i == 0?0: cTransparent);
OSD_Color.Value.ARGB8888.R = (U8)Palette_RGB_LG[i*3];
OSD_Color.Value.ARGB8888.G = (U8)Palette_RGB_LG[i*3+1];
OSD_Color.Value.ARGB8888.B =(U8)Palette_RGB_LG[i*3+2];
STGXOBJ_SetPaletteColor(&Palette,i,&OSD_Color);
}
/* Creation Bitmap */
Bitmap.BitmapType = STGXOBJ_BITMAP_TYPE_RASTER_PROGRESSIVE;
Bitmap.Width = Width;
Bitmap.Height = Height;
Bitmap.BigNotLittle = TRUE;
Bitmap.SubByteFormat = STGXOBJ_SUBBYTE_FORMAT_RPIX_MSB;
Bitmap.Offset = 0;
Bitmap.PreMultipliedColor = FALSE;
Bitmap.ColorSpaceConversion = STGXOBJ_ITU_R_BT601;
Bitmap.AspectRatio = STGXOBJ_ASPECT_RATIO_4TO3;
if (Bitmap.Width % 8 == 0 /*(Bitmap.Width * 8) % 8 == 0*/ )
{
Bitmap.Pitch = (Bitmap.Width * 8)/8;
}
else
{
Bitmap.Pitch = (Bitmap.Width * 8)/8 + 1;
}
AllocBlockParams.Alignment = 1;
sttbx_Print("\nBitmap.Pitch = %d\n",Bitmap.Pitch);
Bitmap.Size1 = Bitmap.Pitch * Bitmap.Height;
AllocBlockParams.Size = Bitmap.Size1;
sttbx_Print("\n----AllocBlockParams.Size 4 bitmap is %d\n",AllocBlockParams.Size);
ErrCode = STAVMEM_AllocBlock ((const STAVMEM_AllocBlockParams_t *)
&AllocBlockParams,(STAVMEM_BlockHandle_t *)
&(BitmapHandle));
if (ErrCode != ST_NO_ERROR)
{
return(ErrCode);
}
ErrCode = STAVMEM_GetBlockAddress( BitmapHandle, (void **)&(Bitmap.Data1_p));
if (ErrCode != ST_NO_ERROR)
{
return(ErrCode);
}
sttbx_Print("\nd addr = 0x%x ,offset1 = 0x%x\n",&(Bitmap.Data1_p),((char *)Bitmap.Data1_p+1));
/* fill bitmap */
memset(Bitmap.Data1_p,fillColor.Value.PaletteEntry,Bitmap.Pitch*Bitmap.Height);
/*create viewport*/
VP_Params->InputRectangle.PositionX = 0;
VP_Params->InputRectangle.PositionY = 0;
VP_Params->InputRectangle.Width = Width;
VP_Params->InputRectangle.Height = Height;
VP_Params->OutputRectangle.PositionX = X;
VP_Params->OutputRectangle.PositionY = Y;
VP_Params->OutputRectangle.Width = Width;
VP_Params->OutputRectangle.Height = Height;
ErrCode = STLAYER_OpenViewPort(LAYER_Handle[LAYER_OSD],VP_Params, /*&VP_Handle*/&LAYER_ViewPortHandle[LAYER_OSD]);
if ( ErrCode != ST_NO_ERROR)
{
STTBX_Report((STTBX_REPORT_LEVEL_ERROR,"STLAYER_OpenViewPort()=%s",GetErrorText(ErrCode)));
return ErrCode;
}
ErrCode = STLAYER_GetViewPortSource(LAYER_ViewPortHandle[LAYER_OSD]/*VP_Handle*/,VP_Source);
if(ErrCode!=ST_NO_ERROR)
{
STTBX_Print(("STLAYER_GetViewPortSource Failed!Error: %s\n",GetErrorText(ErrCode)));
}
STTBX_Print(("STLAYER_GetViewPortSource OK! VPSource = 0x%x\n",VP_Source));
GloabalAlpha.A0 = 128;
GloabalAlpha.A1 = 128;
ErrCode = STLAYER_SetViewPortAlpha(LAYER_ViewPortHandle[LAYER_OSD]/*VP_Handle*/, &GloabalAlpha);
if ( ErrCode != ST_NO_ERROR)
{
STTBX_Report((STTBX_REPORT_LEVEL_ERROR,"STLAYER_OpenViewPort()=%s",GetErrorText(ErrCode)));
return ErrCode;
}
ErrCode=STLAYER_EnableViewPort(LAYER_ViewPortHandle[LAYER_OSD]/*VP_Handle*/);
if ( ErrCode != ST_NO_ERROR)
{
STTBX_Report((STTBX_REPORT_LEVEL_ERROR,"STLAYER_EnableViewPort()=%s",GetErrorText(ErrCode)));
return ErrCode;
}
return ErrCode;
}
void EMC_HideAllRegions(void)
{
int width = VPSource.Data.BitMap_p->Width;
int height = VPSource.Data.BitMap_p->Height;
/*The following line is very important,if not,the screen will flash*/
STLAYER_DisableViewPort(LAYER_ViewPortHandle[LAYER_OSD]);/*Added by Allen,03-06-2006*/
memset(VPSource.Data.BitMap_p->Data1_p,0,width*height);
}
void EMC_ShowRegion(void)
{
STLAYER_EnableViewPort(LAYER_ViewPortHandle[LAYER_OSD]);
}
void changeTransparent(char cTransparent)
{
#if 0
int i,value;
if(cTransparent == 0)
return;
for(i = 1;i<256;i++)
{
Palette_YUV_LG[i].MixWeight = cTransparent;/*半透明,63:不透明*/
//if(i == whitecolor.Value.PaletteEntry || i == blackcolor.Value.PaletteEntry)
//Palette_YUV_LG[i].MixWeight = 0x3f;
}
//Palette_YUV_LG[88].MixWeight = 63;
STOSD_SetRegionPalette(Handle_ProviewWindow,Palette_YUV_LG);
STOSD_SetRegionPalette(Handle_InfoPanel,Palette_YUV_LG);
#endif
int i;
STGXOBJ_Color_t OSD_Color;
OSD_Color.Type = STGXOBJ_COLOR_TYPE_ARGB8888;
for (i=0; i < 256; i++)
{
OSD_Color.Value.ARGB8888.Alpha = (i == 0?0: cTransparent);
OSD_Color.Value.ARGB8888.R = (U8)Palette_RGB_LG[i*3];
OSD_Color.Value.ARGB8888.G = (U8)Palette_RGB_LG[i*3+1];
OSD_Color.Value.ARGB8888.B =(U8)Palette_RGB_LG[i*3+2];
STGXOBJ_SetPaletteColor(&Palette,i,&OSD_Color);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -