www.pudn.com > MTK_Training.zip > gdi_sample.c


 
gdi_handle base_layer_handle; /* created when power on */ 
gdi_handle preview_layer_handle; 
gdi_handle status_layer_handle; 
 
void ShowCategoryScreen(void) 
{ 
	gdi_layer_multi_layer_enable(); 
	 
	gdi_layer_get_base_handle(&base_layer_handle); /* use this function to get based layer if required */ 
	 
	/* preview window layer */	 
	gdi_layer_create(10, 30, 100, 90, &preview_layer_handle); 
	gdi_layer_push_and_set_active(preview_layer_handle); 
	gdi_layer_set_source_key(TRUE, GDI_COLOR_BLUE); 
	gdi_image_draw_id(20,40,IMG_PIC1_ID);//draw an image on the layer 
	gdi_layer_pop_and_restore_active(); 
	 
 
	/* status layer */	 
	gdi_layer_create(15, 40, 80, 20, &status_layer_handle);	 
	gdi_layer_push_and_set_active(status_layer_handle); 
 
	gdi_layer_set_opacity(TRUE, 200);		/* 255 is no transparent, 0 is fully transparnet */ 
	gdi_layer_set_source_key(TRUE, GDI_COLOR_BLUE);	 
	gdi_layer_pop_and_restore_active(); 
 
	RedrawCagtegoryScreen(); 
 
} 
 
void ExitCategoryScreen(void) 
{ 
	/* free all created layer */ 
	gdi_layer_free(preview_layer_handle); 
	gdi_layer_free(status_layer_handle); 
	 
	gdi_layer_multi_layer_disable(); 
} 
 
void RedrawCagtegoryScreen(void) 
{ 
	gdi_layer_lock_frame_buffer();//avoid others to blt 
	 
	RedrawFullScreen(); 
	 
	/*	Draw other pixtel's UI compmenet ... */ 
	 
	gdi_layer_unlock_frame_buffer(); 
	 
	gdi_layer_blt(	base_layer_handle,			/* layer 0 */ 
						preview_layer_handle,		/* layer 1 */ 
						status_layer_handle,			/* layer 2 */ 
						0,									/* layer 3 */ 
						0,									/* x1 */ 
						0,									/* y1 */ 
						UI_device_width-1,			/* x2 */ 
						UI_device_height-1);			/* y1 */	 
} 
 
 
void RedrawStatus(void) 
{ 
	gdi_layer_lock_frame_buffer(); 
	gdi_layer_push_and_set_active(status_layer_handle);	 
	gdi_layer_push_clip(); 
			 
 
	/* Drawing......here. */ 
	 
	 
	gdi_layer_pop_clip(); 
	gdi_layer_pop_and_restore_active(); 
	gdi_layer_unlock_frame_buffer(); 
 
	gdi_layer_blt(	base_layer_handle,			/* layer 0 */ 
						preview_layer_handle,		/* layer 1 */ 
						status_layer_handle,			/* layer 2 */ 
						0,									/* layer 3 */ 
						15,								/* x1 */ 
						40,								/* y1 */ 
						95,								/* x2 */ 
						60);								/* y1 */ 
 
} 
 
void RedrawPreviewWnd(void) 
{ 
	gdi_layer_lock_frame_buffer(); 
	gdi_layer_push_and_set_active(preview_layer_handle);	 
	gdi_layer_push_clip(); 
	 
		 
	/* Drawing......here. */ 
	 
	 
	gdi_layer_pop_clip(); 
	gdi_layer_pop_and_restore_active(); 
	gdi_layer_unlock_frame_buffer(); 
	 
	gdi_layer_blt(	base_layer_handle,			/* layer 0 */ 
						preview_layer_handle,		/* layer 1 */ 
						status_layer_handle,			/* layer 2 */ 
						0,									/* layer 3 */ 
						10,								/* x1 */ 
						30,								/* y1 */ 
						120,								/* x2 */ 
						110);								/* y1 */	 
} 
 
RedrawFullScreen() 
{ 
	gdi_layer_lock_frame_buffer(); 
		 
	RedrawStatus(); 
	RedrawPreviewWnd(); 
 
	/* Drawing......here. */ 
	 
	gdi_layer_unlock_frame_buffer(); 
	 
	gdi_layer_blt(	base_layer_handle,			/* layer 0 */ 
						preview_layer_handle,		/* layer 1 */ 
						status_layer_handle,			/* layer 2 */ 
						0,									/* layer 3 */ 
						0,									/* x1 */ 
						0,									/* y1 */ 
						UI_device_width-1,			/* x2 */ 
						UI_device_height-1);			/* y1 */ 
}