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

📄 gui.c

📁 关于嵌入式PCB板UI的程序
💻 C
📖 第 1 页 / 共 2 页
字号:
	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 + -