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

📄 gfx_demo.c

📁 Sample code for use on smp 863x processor.
💻 C
📖 第 1 页 / 共 3 页
字号:
	static RMuint8 alpha; 	static RMuint32 color;	static RMbool done;		switch(state){				       	case 0:/*copy the bitmap on both pictures */		x = 3, y = 5, i;		x_inc = 2; 		y_inc = 1; 		size_inc  = 3; 		alpha_inc = 2;		size = 0;		state = 0;		alpha= 0xff; 		color = 0x0000ff;		done = FALSE;		X_surface.SurfaceID = GFX_SURFACE_ID_X;		X_surface.Tiled = FALSE;		YZ_surface.StartAddress = bitmap_addr;		YZ_surface.TotalWidth = bitmap_profile.Width;		YZ_surface.Tiled = FALSE;		format.MainMode = bitmap_profile.ColorMode; 		format.SubMode = bitmap_profile.ColorFormat;		format.SamplingMode = bitmap_profile.SamplingMode;		format.ColorSpace = bitmap_profile.ColorSpace;		format.SurfaceID = GFX_SURFACE_ID_NX;		SEND_GFX_COMMAND(RMGFXEnginePropertyID_ColorFormat, &format, sizeof(format));		format.SurfaceID = GFX_SURFACE_ID_Z;		YZ_surface.SurfaceID = GFX_SURFACE_ID_Z;		SEND_GFX_COMMAND(RMGFXEnginePropertyID_ColorFormat, &format, sizeof(format));		SEND_GFX_COMMAND(RMGFXEnginePropertyID_Surface, &YZ_surface, sizeof(YZ_surface));		format.SurfaceID = GFX_SURFACE_ID_Y;		YZ_surface.SurfaceID = GFX_SURFACE_ID_Y;		SEND_GFX_COMMAND(RMGFXEnginePropertyID_ColorFormat, &format, sizeof(format));		SEND_GFX_COMMAND(RMGFXEnginePropertyID_Surface, &YZ_surface, sizeof(YZ_surface));					circle_move.AlphaX = 0;		circle_move.AlphaY = 0;		circle_move.SrcWidth = 32;					circle_move.SrcHeight = 32;		circle_move.DstWidth = 64;		circle_move.DstHeight = 64;		circle_move.Merge = TRUE;		move.AlphaX = 0;		move.AlphaY = 0;		move.Merge = FALSE;						sc_blend.SaturateAlpha = 0;		last_x[0] = last_x[1] = 0;		last_y[0] = last_y[1] = 0;	case 1:		move.Width = bitmap_profile.Width;		move.Height = bitmap_profile.Height;		move.SrcX = move.DstX = move.SrcY = move.DstY = 0;		SEND_GFX_COMMAND( RMGFXEnginePropertyID_MoveRectangle, &move, sizeof(move));		state++;		break;	case 2: /*setup X */		format.MainMode = bitmap_profile.ColorMode;		format.SubMode = bitmap_profile.ColorFormat;		format.SamplingMode = bitmap_profile.SamplingMode;		format.ColorSpace = bitmap_profile.ColorSpace;		format.SurfaceID = GFX_SURFACE_ID_X;		SEND_GFX_COMMAND( RMGFXEnginePropertyID_ColorFormat, &format, sizeof(format));		X_surface.TotalWidth = bitmap_profile.Width;		alpha = 0x04;		state++;	case 3: /*the sc_blend fade out*/		X_surface.StartAddress = pic_luma;		SEND_GFX_COMMAND( RMGFXEnginePropertyID_Surface, &X_surface, sizeof(X_surface));		size += size_inc; 		sc_blend.Width =  RMmin(size, bitmap_profile.Width);		sc_blend.SrcY = sc_blend.DstY =  0;		sc_blend.Height = bitmap_profile.Height/4;		for (i = 0; i < 4; i++){			if(i & 0x1){				sc_blend.SrcX = RMmax(0,(RMint32)(bitmap_profile.Width-size));				sc_blend.DstX = RMmax(0,(RMint32)(bitmap_profile.Width-size));				sc_blend.Color = (alpha<<24)|0x1010ff;			} else {				sc_blend.SrcX = 0;				sc_blend.DstX = 0;				sc_blend.Color = (alpha<<24)|0xffeeee;			}									SEND_GFX_COMMAND( RMGFXEnginePropertyID_SingleColorBlendRectangles, &sc_blend, sizeof(sc_blend));			sc_blend.SrcY += bitmap_profile.Height/4;			sc_blend.DstY += bitmap_profile.Height/4;		}		if (size > bitmap_profile.Width){			alpha ++;		}							if (alpha == 0x40){			size_inc = 8;			alpha = 0xff;			size = 0;			state++;		}								break;	case 4:		YZ_surface.StartAddress = elephant_glyph.OutAddr;		YZ_surface.TotalWidth = 64;		YZ_surface.SurfaceID = GFX_SURFACE_ID_Y;		SEND_GFX_COMMAND( RMGFXEnginePropertyID_Surface, &YZ_surface, sizeof(YZ_surface));		format.MainMode = EMhwlibColorMode_LUT_1BPP;		format.SubMode = EMhwlibColorFormat_32BPP;		format.SamplingMode = EMhwlibSamplingMode_444;		format.ColorSpace = EMhwlibColorSpace_RGB_0_255;		format.SurfaceID = GFX_SURFACE_ID_Y;		SEND_GFX_COMMAND( RMGFXEnginePropertyID_ColorFormat, &format, sizeof(format));		color_palette_1bpp.SurfaceID = GFX_SURFACE_ID_Y;		size = 512;		state++;	case 5:		if(size + 100 >= 4096){			if(done){				size = 0;				state++;				break;			}			else				done = TRUE;		}		else			size += 50;							elephant_glyph.ScaleFactor =  (size * 0x100)/4096;		move.Width = (size*128)/4096;		move.Height = (size*128)/4096;		if(move.Width > YZ_surface.TotalWidth){			YZ_surface.TotalWidth += 64;			SEND_GFX_COMMAND( RMGFXEnginePropertyID_Surface, &YZ_surface, sizeof(YZ_surface));		}		SEND_GFX_COMMAND( RMGFXEnginePropertyID_GlyphMask, &elephant_glyph, sizeof(elephant_glyph));		i = 0;		for (y = 0; y <= bitmap_profile.Height - 128; y += 128){			if((i++) & 0x1){				color_palette_1bpp.Palette[0]= 0xff1010ff;				color_palette_1bpp.Palette[1]= 0xffff8010;			}			else {				color_palette_1bpp.Palette[0]= 0xffffeeee;				color_palette_1bpp.Palette[1]= 0xff3080ff;			}			SEND_GFX_COMMAND( RMGFXEnginePropertyID_Palette_1BPP, &color_palette_1bpp, sizeof(color_palette_1bpp));									for (x = 0; x <= bitmap_profile.Width - 128; x += 128){				move.DstX = x + (128 - move.Width)/2 ;				move.DstY = y + (128 - move.Height)/2;				SEND_GFX_COMMAND( RMGFXEnginePropertyID_ReplaceRectangle, &move, sizeof(move));			}		}		break;	case 6: 			format.MainMode = bitmap_profile.ColorMode;		format.SubMode = bitmap_profile.ColorFormat;		format.SamplingMode = bitmap_profile.SamplingMode;		format.ColorSpace = bitmap_profile.ColorSpace;		format.SurfaceID = GFX_SURFACE_ID_Y;		SEND_GFX_COMMAND( RMGFXEnginePropertyID_ColorFormat, &format, sizeof(format));							YZ_surface.TotalWidth = bitmap_profile.Width;		YZ_surface.StartAddress = bitmap_addr;		YZ_surface.SurfaceID = GFX_SURFACE_ID_Y;		SEND_GFX_COMMAND( RMGFXEnginePropertyID_Surface, &YZ_surface, sizeof(YZ_surface));		state++;	case 7:		/*bring the bitmap back vertically*/		size += size_inc;		move.Width = bitmap_profile.Width/8;		move.Height = size;		move.DstX = 0;		move.SrcX = 0;		for ( i=0; i< 8; i++){			if((i & 0x1)){				move.DstY = bitmap_profile.Height - size;				move.SrcY = 0;			}			else{				move.DstY = 0;				move.SrcY = bitmap_profile.Height - size;			}			SEND_GFX_COMMAND( RMGFXEnginePropertyID_MoveRectangle, &move, sizeof(move));			move.DstX += bitmap_profile.Width/8;			move.SrcX += bitmap_profile.Width/8;		}		if (size + size_inc > bitmap_profile.Height){			state++;		}		break;	case 8:	case 9:		move.Width = bitmap_profile.Width;		move.Height = bitmap_profile.Height;		move.SrcX = move.DstX = move.SrcY = move.DstY = 0;		SEND_GFX_COMMAND( RMGFXEnginePropertyID_MoveRectangle, &move, sizeof(move));		state++;		break;						case 10:		move.Width = move.Height = 64;		blend.DstX = blend.Src2X = bitmap_profile.Width - logo_profile.Width - 30;		blend.DstY =  blend.Src2Y = 30;		blend.Src1X = 0;		blend.Src1Y = 0;		blend.SaturateAlpha = FALSE;		blend.Width = logo_profile.Width;		blend.Height = logo_profile.Height;		alpha_inc = 2;		x = 5;		y = 12;		YZ_surface.StartAddress = bitmap_addr;		YZ_surface.TotalWidth = bitmap_profile.Width;		YZ_surface.SurfaceID = GFX_SURFACE_ID_Z;		SEND_GFX_COMMAND( RMGFXEnginePropertyID_Surface, &YZ_surface, sizeof(YZ_surface));		format.MainMode = bitmap_profile.ColorMode;		format.SubMode = bitmap_profile.ColorFormat;		format.SamplingMode = bitmap_profile.SamplingMode;		format.ColorSpace = bitmap_profile.ColorSpace;		format.SurfaceID = GFX_SURFACE_ID_Z;		SEND_GFX_COMMAND( RMGFXEnginePropertyID_ColorFormat, &format, sizeof(format));		state++;	case 11: 		YZ_surface.StartAddress = bitmap_addr;		YZ_surface.TotalWidth = bitmap_profile.Width;		YZ_surface.SurfaceID = GFX_SURFACE_ID_Y;		SEND_GFX_COMMAND( RMGFXEnginePropertyID_Surface, &YZ_surface, sizeof(YZ_surface));		format.MainMode = bitmap_profile.ColorMode;		format.SubMode = bitmap_profile.ColorFormat;		format.SamplingMode = bitmap_profile.SamplingMode;		format.ColorSpace = bitmap_profile.ColorSpace;		format.SurfaceID = GFX_SURFACE_ID_Y;		SEND_GFX_COMMAND( RMGFXEnginePropertyID_ColorFormat, &format, sizeof(format));		move.SrcX = move.DstX = last_x[pic_index];		move.SrcY = move.DstY = last_y[pic_index];		SEND_GFX_COMMAND( RMGFXEnginePropertyID_MoveRectangle, &move, sizeof(move));		format.MainMode = bitmap_profile.ColorMode;		format.SubMode = bitmap_profile.ColorFormat;		format.SamplingMode = bitmap_profile.SamplingMode;		format.ColorSpace = bitmap_profile.ColorSpace;		format.SurfaceID = GFX_SURFACE_ID_X;		SEND_GFX_COMMAND( RMGFXEnginePropertyID_ColorFormat, &format, sizeof(format));		X_surface.StartAddress = bitmap_addr;		X_surface.TotalWidth = bitmap_profile.Width;		SEND_GFX_COMMAND( RMGFXEnginePropertyID_Surface, &X_surface, sizeof(X_surface));		YZ_surface.StartAddress = logo_addr;		YZ_surface.TotalWidth = logo_profile.Width;		YZ_surface.SurfaceID = GFX_SURFACE_ID_Y;		SEND_GFX_COMMAND( RMGFXEnginePropertyID_Surface, &YZ_surface, sizeof(YZ_surface));		format.MainMode = logo_profile.ColorMode;		format.SubMode = logo_profile.ColorFormat;		format.SamplingMode = logo_profile.SamplingMode;		format.ColorSpace = logo_profile.ColorSpace;		format.SurfaceID = GFX_SURFACE_ID_Y;		SEND_GFX_COMMAND( RMGFXEnginePropertyID_ColorFormat, &format, sizeof(format));		color_palette.SurfaceID = GFX_SURFACE_ID_Y;		color_palette.Palette[2]= (0xff<<24) | (alpha<<16)|(alpha<<8)|alpha/4;		color_palette.Palette[1]= 0x0;		color_palette.Palette[0]= (alpha<<24) | color;		alpha -= ( alpha > alpha_inc) ? alpha_inc:0;		SEND_GFX_COMMAND( RMGFXEnginePropertyID_Palette_2BPP, &color_palette, sizeof(color_palette));		SEND_GFX_COMMAND( RMGFXEnginePropertyID_BlendRectangles, &blend, sizeof(blend));		YZ_surface.StartAddress = bitmap_addr;		YZ_surface.TotalWidth = bitmap_profile.Width;		YZ_surface.SurfaceID = GFX_SURFACE_ID_Z;		SEND_GFX_COMMAND( RMGFXEnginePropertyID_Surface, &YZ_surface, sizeof(YZ_surface));		format.MainMode = bitmap_profile.ColorMode;		format.SubMode = bitmap_profile.ColorFormat;		format.SamplingMode = bitmap_profile.SamplingMode;		format.ColorSpace = bitmap_profile.ColorSpace;		format.SurfaceID = GFX_SURFACE_ID_Z;		SEND_GFX_COMMAND( RMGFXEnginePropertyID_ColorFormat, &format, sizeof(format));							X_surface.StartAddress = circle_addr;		X_surface.TotalWidth = circle_profile.Width;		SEND_GFX_COMMAND( RMGFXEnginePropertyID_Surface, &X_surface, sizeof(X_surface));		alpha_format.AlphaFormat = GFX_ALPHA_FORMAT_LUT_1BPA;		SEND_GFX_COMMAND( RMGFXEnginePropertyID_AlphaFormat, &alpha_format, sizeof(alpha_format ));							alpha_palette.Alpha0 = 0x00;		alpha_palette.Alpha1 = 0xff;		alpha_palette.SurfaceID = GFX_SURFACE_ID_X;		SEND_GFX_COMMAND( RMGFXEnginePropertyID_AlphaPalette, &alpha_palette, sizeof(alpha_palette));								x += x_inc;		y += y_inc;		if ((x >= (bitmap_profile.Width - circle_move.DstWidth - x_inc)) || (x <=1)){			color += 0x886010;			color &= 0xffffff;			alpha = 0xff;			x_inc *= -1;		}		if ((y >= (bitmap_profile.Height - circle_move.DstHeight - y_inc)) || (y <=1)){			color += 0x102066;			color &= 0xffffff;			alpha = 0xff;			y_inc *= -1;		}		circle_move.DstX = last_x[pic_index] = (x % (bitmap_profile.Width-64));		circle_move.DstY = last_y[pic_index] = (y % (bitmap_profile.Height-64));		circle_move.SrcX = circle_move.DstX + 16;		circle_move.SrcY = circle_move.DstY + 16;		SEND_GFX_COMMAND( RMGFXEnginePropertyID_ReplaceAndScaleRectangle, &circle_move, sizeof(circle_move));		break;											}}int main(int argc, char *argv[]){	struct DCC *pDCC = NULL;	struct DCCVideoSource *pVideoSource;	struct dh_context dh_info = {0,};	struct GFXEngine_Open_type gfx_profile;	RMuint32 close_profile;	RMuint32 pic_luma_addr[2], pic_addr[2], pic_index = 0, surface_addr;			RMstatus err;	init_display_options(&disp_opt);	init_video_options(&video_opt);	init_playback_options(&play_opt);	disp_opt.dh_info = &dh_info;	parse_cmdline(argc, argv);	err = RUACreateInstance(&pRUA, play_opt.chip_num);	if (RMFAILED(err)) {		fprintf(stderr, "Error creating RUA instance! %d\n", err);		return err;	}

⌨️ 快捷键说明

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