/****************************************************************************** Copyright (c) 2004 Digital STREAM Technology Inc. All Rights Reserved FILE NAME GRP_Base.h VERSION Version 0.4 DESCRIPTION This file is for 2'D draw module be to used in Application . AUTHOR S/W 3 Team Jongki Jeong. HISTORY NAME DATE REMARKS Jongki jeong 03-09-2004 Created initial version 0.01 Jinsook Kim 06-11-2004 modify draw_3d_effect 3d ±×¸±¶§ lt_line °ú rb_line ºñ±³Çؼ­ °ËÁ¤»ö¿¡ °¡±î¿î»öÀ» °¡Áø ¶óÀÎÀÌ Èò»ö¿¡ °¡±î¿î»öÀ» °¡Áø ¶óÀÎÀ» °¨½Î°Ô ±×¸®µµ·Ï Ãß°¡ Jinsook Kim 06-25-2004 Updated version : 0.01->0.1 Jinsook Kim 08-18-2004 Updated version : 0.1->0.2 Jong-ki Jeong 03-14-2005 CANVAS MODE °ü·Ã ±¸Á¶Ã¼ ¹× ÇÔ¼öÃß°¡ Jinsook Kim 03-30-2005 Updated version : 0.2->0.3 Jinsook Kim 04-21-2005 Updated version : 0.3->0.4 REMARK ******************************************************************************/ #ifndef GRP_BASE_H #define GRP_BASE_H #ifdef __cplusplus extern "C" { #endif //#ifndef __GFX_OSD_H__ //#include "..\..\drv\lgdt1111\gfx\gfx_osd.h" //#endif #if 0//SUPPORT_LGDT1111 #ifndef __API_GFXOSD_H__ #include "..\..\include\api_gfxosd.h" #endif #endif//SUPPORT_LGDT1111 #if 0 // add sjpark, compile error, 090908 #include"bgfx.h" #endif #include"GRP_DDI.h" typedef struct { GRP_RECT r; CANVAS *cv; }BAKUP_ROI; typedef struct { GRP_RECT r ; int h_scale; int v_scale; }GRP_OSD_INFO; /***************************************************************************/ /******************* GRP_Draw.cpp ****************************************/ /***************************************************************************/ void draw_box(CANVAS *cv ,SINT32 x, SINT32 y, SINT32 w, SINT32 h, UINT32 pal_index) ; #define draw_boxR(cv, r, col) draw_box( cv,(SINT32)((r)->x), (SINT32)((r)->y), (SINT32)((r)->w),(SINT32)((r)->h), (UINT32)col) void draw_ellipse (CANVAS *cv, SINT32 xcenter,SINT32 ycenter, SINT32 radx, SINT32 rady, UINT32 pal_index) ; void draw_line (CANVAS *cv , SINT32 x1, SINT32 y1, SINT32 x2, SINT32 y2 , UINT32 pal_index ) ; void draw_h_line(CANVAS *cv ,SINT32 x, SINT32 y, SINT32 w, UINT32 color) ; void draw_rect(CANVAS *cv ,SINT32 x, SINT32 y, SINT32 w, SINT32 h, UINT32 lt_color, UINT32 rb_color) ; void draw_rect_ex(CANVAS *cv ,SINT32 x, SINT32 y, SINT32 w, SINT32 h, UINT32 color, SINT32 line_num, SINT32 line_gap) ; void draw_v_line(CANVAS *cv ,SINT32 x, SINT32 y, SINT32 h, UINT32 color) ; void get_rect(GRP_RECT *r, SINT32 x, SINT32 y, SINT32 w, SINT32 h) ; void scroll_hide_ltrt( CANVAS *cv, GRP_RECT *roi, int move_w, GRP_DIRECTION direction, int ms_time) ; void scroll_hide_updown( CANVAS *cv, GRP_RECT *roi, int move_h, GRP_DIRECTION direction, int ms_time) ; void scroll_onestep_ltrt( CANVAS *cv, GRP_RECT *roi, int move_w, GRP_DIRECTION direction, UINT32 fill_color ) ; void scroll_onestep_updown( CANVAS *cv, GRP_RECT *roi, int move_h, GRP_DIRECTION direction, UINT32 fill_color ) ; void scroll_show_ltrt( CANVAS *cv,GRP_RECT *roi, int move_w, GRP_DIRECTION direction, int ms_time) ; void scroll_show_updown( CANVAS *cv,GRP_RECT *roi, int move_h, GRP_DIRECTION direction, int ms_time) ; void scroll_show_ltrt2(CANVAS *des_cv , CANVAS *src_cv, GRP_RECT *des_roi,GRP_RECT *src_roi, int move_w, GRP_DIRECTION direction, int ms_time) ; void scroll_show_updown2(CANVAS *des_cv , CANVAS *src_cv, GRP_RECT *des_roi,GRP_RECT *src_roi,int move_h, GRP_DIRECTION direction, int ms_time) ; void draw_shadow_effect(CANVAS *cv, GRP_RECT *r, SINT32 shadow_thick ) ; void draw_3d_effect(CANVAS *cv, GRP_RECT *r, int _3d_thick, int _3d_type, SINT32 shadow_thick, UINT32 thick_colors[6]) ; void draw_oellipse(CANVAS *cv, SINT32 xcenter,SINT32 ycenter, SINT32 radx, SINT32 rady, UINT32 opal_index, UINT32 ipal_index) ; void draw_fellipse(CANVAS *cv, SINT32 xcenter, SINT32 ycenter, SINT32 radx, SINT32 rady, UINT32 pal_index) ; /***************************************************************************/ /******************* GRP_Bitmap.cpp ****************************************/ /***************************************************************************/ SINT32 copy_image(CANVAS *cv, SINT32 x, SINT32 y ,SINT32 w , SINT32 h, GRP_BBLK *bblk) ; #define copy_imageR(cv, r, bblk) copy_image( cv,(SINT32)((r)->x), (SINT32)((r)->y), (SINT32)((r)->w),(SINT32)((r)->h), bblk) SINT32 draw_bitmap(CANVAS *cv,SINT32 x , SINT32 y, GRP_LOGO *bit_info ) ; SINT32 draw_2color_bitmap(CANVAS *cv, SINT32 x , SINT32 y, GRP_BBLK *bblk, UINT32 pal_index) ; SINT32 draw_compressed_image(CANVAS *cv, SINT32 x , SINT32 y, GRP_BBLK *bblk) ; SINT32 draw_compressed_2color_image(CANVAS *cv, SINT32 x , SINT32 y, GRP_BBLK *bblk,UINT32 pal_index) ; void draw_edge_window( CANVAS *cv, GRP_RECT *out,GRP_RECT *in, GRP_EDGE_FRAME *frame, UINT32 fill_color) ; void draw_ltrt_window( CANVAS *cv, GRP_RECT *out,GRP_RECT *in, GRP_LTRT_FRAME *frame, UINT32 fill_color) ; void draw_rect_window( CANVAS *cv, GRP_RECT *out,GRP_RECT *in, GRP_RECT_FRAME *frame, UINT32 fill_color) ; void draw_topbot_window( CANVAS *cv, GRP_RECT *out,GRP_RECT *in, GRP_TOPBOT_FRAME *frame, UINT32 fill_color) ; void *get_image(CANVAS *cv, SINT32 x ,SINT32 y , SINT32 w,SINT32 h) ; SINT32 put_image( CANVAS *cv, SINT32 x ,SINT32 y , void *bit_block ) ; void scroll( CANVAS *cv, GRP_RECT *des ,GRP_RECT *src,GRP_DIRECTION direction,UINT32 fill_color ) ; /***************************************************************************/ /******************* GRP_Canvas.cpp ****************************************/ /***************************************************************************/ GRP_CANVAS_ACCESS get_canvas_mode(void) ; void canvas_initialize(UINT32 plane, GRP_PIXEL_FORMAT pixel_fmt) ; void set_canvas_mode(GRP_CANVAS_ACCESS access_mode ) ; void plane_open(GRP_RESOLUTION osd_resolution) ; void palne_close(void) ; CANVAS *canvas_search(UINT32 plain) ; CANVAS *get_last_canvas(void) ; SINT32 get_plane_index(CANVAS *cv) ; void set_correct_ratio(GRP_RESOLUTION resolution, float coord_x, float coord_y) ; void recoordinate(GRP_RESOLUTION resolution, SINT32 *x , SINT32 *y ) ; void set_ref_coordinate( GRP_RESOLUTION resolution ); void get_ref_coordinate( GRP_RESOLUTION *resolution ); void plane_close(void) ; void canvas_terminate(void) ; /***************************************************************************/ /******************* GRP_DDI.cpp *******************************************/ /***************************************************************************/ //#define gddi_get_pixel32(cv,x,y) ReadTLPhysMemory( ((UINT32 *) cv->pixel_map->baseAddr)+((y)-cv->pixel_map->y)* cv->pixel_map->w+((x)-cv->pixel_map->x)) #define INDEXTO32(lut) ( (((0xFF*((UINT32)(lut)->blend))>>7) <<24UL)|((UINT32)(lut)->r <<16UL)|((UINT32)(lut)->g <<8UL)|((UINT32)(lut)->b) ) //#define gddi_set_pixel32(cv,px,py,color) WriteTLPhysMemory( ((UINT32 *)cv->pixel_map->baseAddr)+((py)-cv->pixel_map->y)* cv->pixel_map->w+((px)-cv->pixel_map->x), color) /* do not use multi-line comment. //not used : #define gddi_get_pixel(cv,x,y) TLGDL_getPixelIndexed(cv->pixel_map , x , y) //#define gddi_get_pixel(cv,x,y) ReadTLPhysMemoryByte( ((UINT8 *) cv->pixel_map->baseAddr)+((y)-cv->pixel_map->y)* cv->pixel_map->w+((x)-cv->pixel_map->x)) //not used : #define gddi_set_pixel(cv,x,y,color) TLGDL_setPixelIndexed(cv->pixel_map ,x, y, color) //#define gddi_set_pixel(cv,px,py,color) WriteTLPhysMemoryByte( ((UINT8 *)cv->pixel_map->baseAddr)+((py)-cv->pixel_map->y)* cv->pixel_map->w+((px)-cv->pixel_map->x), color) //ReadTLPhysMemoryByte( ((UINT8 *) cv->pixel_map->baseAddr)+((y)-cv->pixel_map->y)* cv->pixel_map->w+((x)-cv->pixel_map->x)); \ //WriteTLPhysMemoryByte( ((UINT8 *)cv->pixel_map->baseAddr)+((py)-cv->pixel_map->y)* cv->pixel_map->w+((px)-cv->pixel_map->x), color); \ //((UINT8 *)(cv)->pixel_map->baseAddr)+((y)-cv->pixel_map->y)* (cv)->pixel_map->w+((x)-(cv)->pixel_map->x) */ #define gddi_get_pixel(cv,px,py) DHL_GetXY(px, py) /* { \ if((cv)->pixel_fmt==GRP_INDEX8) \ dhl_get_xy(px, py)\ //bgfx_get_pixel(&cv->pixel_map->surf,px,py);\ //API_GFXOSD_GetPixel(cv->pixel_map->frame, px, py);\ //ReadTLPhysMemoryByte( ((UINT8 *)((cv)->pixel_map->baseAddr + (cv)->pixel_map->pitch * ((py)+(cv)->y) - (cv)->pixel_map->y))) + ((px)+(cv)->x) - (cv)->pixel_map->x) ); \ else if((cv)->pixel_fmt==GRP_INDEX4) \ bgfx_get_pixel(&cv->pixel_map->surf,px,py);\ else if((cv)->pixel_fmt==GRP_RGB32 || (cv)->pixel_fmt==GRP_INDEX8TORGB32) \ bgfx_get_pixel(&cv->buf_map->surf,px,py);\ //API_GFXOSD_GetPixel(cv->pixel_map->frame, px, py);\ //ReadTLPhysMemory( (cv)->pixel_map->baseAddr + (((py)+(cv)->y) - (cv)->pixel_map->y) * (cv)->pixel_map->pitch + (((px)+(cv)->x) - (cv)->pixel_map->x) ); \ } */ //#define gddi_set_pixel(cv,px,py,color) API_GFXOSD_SetPixel(1/*cv->pixel_map->frame*/, px, py, (color)) void gddi_set_pixel(CANVAS *cv, SINT32 px, SINT32 py, UINT32 color); /* \ { \ if((cv)->pixel_fmt==GRP_INDEX8) \ API_GFXOSD_SetPixel(cv->buf_map->frame, px, py, (color));\ //WriteTLPhysMemoryByte( ((UINT8 *)((cv)->pixel_map->baseAddr + (cv)->pixel_map->pitch * (((py)+(cv)->y) - (cv)->pixel_map->y))) + (((px)+(cv)->x) - (cv)->pixel_map->x), (UINT8)((color) & 0xFF) ); \ else if((cv)->pixel_fmt==GRP_RGB32) \ API_GFXOSD_SetPixel(cv->pixel_map->frame, px, py, (color));\ //WriteTLPhysMemory( (cv)->pixel_map->baseAddr + (((py)+(cv)->y) - (cv)->pixel_map->y) * (cv)->pixel_map->pitch + (((px)+(cv)->x) - (cv)->pixel_map->x), (color)); \ else if((cv)->pixel_fmt==GRP_INDEX8TORGB32) \ API_GFXOSD_SetPixel(cv->pixel_map->frame, px, py, (color));\ //WriteTLPhysMemory( (cv)->pixel_map->baseAddr + (((py)+(cv)->y) - (cv)->pixel_map->y) * (cv)->pixel_map->pitch + (((px)+(cv)->x) - (cv)->pixel_map->x), INDEXTO32(&((cv)->palette->rgbs[(UINT8)((color) & 0xFF)])) ); \ } */ #define gddi_get_pixel8(cv,px,py) DHL_GetXY(px, py) //bgfx_get_pixel(&cv->pixel_map->surf,px,py) //API_GFXOSD_GetPixel((int)(cv->pixel_map->frame), px, py) //ReadTLPhysMemoryByte( ((UINT8 *)((cv)->pixel_map->baseAddr + (cv)->pixel_map->pitch * (((py)+(cv)->y) - (cv)->pixel_map->y))) + (((px)+(cv)->x) - (cv)->pixel_map->x) ) #define gddi_set_pixel4(cv,px,py,color) DHL_SetXY(px, py, color) //bgfx_set_pixel(&cv->pixel_map->surf,px,py,color&0x0F) #define gddi_set_pixel8(cv,px,py,color) DHL_GetXY(px, py) //bgfx_set_pixel(&cv->pixel_map->surf,px,py,color&0xFF) //API_GFXOSD_SetPixel(1/*cv->pixel_map->frame*/, px, py, color) //WriteTLPhysMemoryByte( ((UINT8 *)((cv)->pixel_map->baseAddr + (cv)->pixel_map->pitch * (((py)+(cv)->y) - (cv)->pixel_map->y))) + (((px)+(cv)->x) - (cv)->pixel_map->x), (UINT8)((color) & 0xFF) ) #define gddi_get_pixel32(cv,px,py) DHL_GetXY(px, py) //bgfx_get_pixel(&cv->pixel_map->surf,px,py) //API_GFXOSD_GetPixel((int)(cv->pixel_map->frame), px, py) //ReadTLPhysMemory( (cv)->pixel_map->baseAddr + (((py)+(cv)->y) - (cv)->pixel_map->y) * (cv)->pixel_map->pitch + (((px)+(cv)->x) - (cv)->pixel_map->x) ) #define gddi_set_pixel32(cv,px,py,color) DHL_SetXY(px, py, color) //bgfx_set_pixel(&cv->pixel_map->surf,px,py,color) //API_GFXOSD_SetPixel(1/*cv->pixel_map->frame*/, px, py, color) //WriteTLPhysMemory( (cv)->pixel_map->baseAddr + (((py)+(cv)->y) - (cv)->pixel_map->y) * (cv)->pixel_map->pitch + (((px)+(cv)->x) - (cv)->pixel_map->x), (color)) #define gddi_set_pixel8to32(cv,px,py,color) DHL_SetXY(px, py, color) //bgfx_set_pixel(&cv->pixel_map->surf,px,py,color) //API_GFXOSD_SetPixel(1/*cv->pixel_map->frame*/, px, py, color) //WriteTLPhysMemory( (cv)->pixel_map->baseAddr + (((py)+(cv)->y) - (cv)->pixel_map->y) * (cv)->pixel_map->pitch + (((px)+(cv)->x) - (cv)->pixel_map->x), INDEXTO32(&((cv)->palette->rgbs[(UINT8)((color) & 0xFF)])) ) void gddi_box( CANVAS *cv, int x, int y, int w, int h, UINT32 bak_color ) ; void gddi_img_free(void **p) ; void gddi_clear_plain(CANVAS *cv, int plane, int x, int y, int w, int h, UINT32 fill_color) ; void gddi_copy_blt( CANVAS *src_cv, CANVAS *des_cv, GRP_RECT *src_roi,GRP_RECT *des_roi ) ; void gddi_create_mouse( CANVAS *cv ) ; UINT32 gddi_curr_mstime(void) ; void gddi_delete_topology(void) ; void get_direction_key( UINT32 *up_key, UINT32 *down_key, UINT32 *sel_key, UINT32 *left_key ,UINT32 *right_key) ; void gddi_free(void **p ) ; CANVAS *gddi_get_temp_canvas(CANVAS *cv , int w, int h) ; void gddi_free_temp_canvas( CANVAS **cv ) ; int gddi_get_key(void) ; void *gddi_get_image(CANVAS *cv, int x, int y, int w, int h) ; #define gddi_get_imageR(cv,r) gddi_get_image(cv,(SINT32)((r)->x), (SINT32)((r)->y), (SINT32)((r)->w),(SINT32)((r)->h)) void gddi_used_scale_topology(GRP_RESOLUTION resolution, int h_scale, int v_scale) ; void gddi_initialize_planes(CANVAS *statr_cv, int num_plane) ; void *gddi_malloc(int size ) ; SINT32 gddi_put_image(CANVAS *cv, SINT32 x ,SINT32 y , void *bblk) ; void gddi_refresh_plane(CANVAS *cv, GRP_RECT *r) ; void gddi_recoordinate(GRP_RESOLUTION resolution,int *x , int *y) ; UINT32 gddi_RGBtoYCbCr(GRP_RGB *rgb) ; void gddi_update_blend_range (CANVAS *cv, UINT8 blend_value ,UINT32 from,UINT32 to ) ; void gddi_update_palette_range (CANVAS *cv, GRP_RGB *palette ,UINT32 from,UINT32 to ) ; DHL_OS_SEMA_ID gddi_create_mutex_sema(SINT8 *string) ; DHL_OS_SEMA_ID gddi_create_mutex_sema(SINT8 *string) ; DHL_OS_MSGQ_ID gddi_create_message_queue(const char *name,int message_size) ; OS_TASK_ID gddi_spawn_task(OS_TASKFUNCTION func, const char *name, UINT32 priority, UINT32 param) ; void gddi_delete_sema(DHL_OS_SEMA_ID sema) ; int gddi_take_sema(DHL_OS_SEMA_ID sema) ; int gddi_give_sema(DHL_OS_SEMA_ID sema) ; int gddi_take_sema_nowait(DHL_OS_SEMA_ID sema) ; int gddi_take_sema_wait(DHL_OS_SEMA_ID sema, int milli_second ) ; int gdi_get_tick_per_second(void) ; int gdi_send_message(DHL_OS_MSGQ_ID event_id, UINT32 *message ,int message_size) ; void gddi_delay( int milli_second ) ; UINT32 gddi_get_tick_count(void) ; int gddi_receive_messge(DHL_OS_MSGQ_ID message_id, UINT32 *messge , int message_size , int msg_len ) ; void gddi_comm_request(void) ; void gddi_comm_response(void) ; void gddi_free(void **p) ; void gddi_update_blend_range_percentage(CANVAS *cv, UINT8 blend_percentage, UINT32 from, UINT32 to) ; /********************* debug ¿ë **********************************************/ void print_rect(SINT8 *str, GRP_RECT *r) ; int coord_err_check(SINT8 *func_name , CANVAS *cv, SINT32 x, SINT32 y, SINT32 w, SINT32 h) ; int pixelfmt_coord_err_check(SINT8 *func_name , CANVAS *cv, SINT32 x, SINT32 y, SINT32 w, SINT32 h) ; int bblk_err_check(SINT8 *func_name , void *bblk) ; int zero_size_check(SINT8 *func_name , int w , int h ) ; #ifdef __cplusplus } #endif #endif //-----------------------------------------end of file