/****************************************************************************** Copyright (c) 2004 Digital STREAM Technology Inc. All Rights Reserved FILE NAME GFN_Base.h VERSION Version 0.4 DESCRIPTION This file is header file for Font Manager module in Graphics Lib. AUTHOR S/W 3 team Jongki-Jeong HISTORY NAME DATE REMARKS Jong-ki Jeong 05-25-2004 Created initial version 0.01 Jong-ki Jeong 05-25-2004 add gfn_open_page_print add gfn_open_page_uprint add gfn_close_page_print add gfn_get_page_info add gfn_page_move_down add gfn_page_move_up add GFN_INSIDE Jinsook Kim 06-24-2004 modify GFN_INSIDE ¿¡ UT_FC fc Ãß°¡ Jinsook Kim 06-25-2004 Updated version : 0.01->0.1 Jinsook Kim 08-18-2004 Updated version : 0.1->0.2 Jinsook Kim 09-17-2004 modify FN_CACHE [jum3, jum1 ¿¡ ´ëÇÑ member Ãß°¡] Jong-ki Jeong 03-14-2005 font mode, user font °ü·Ã ±¸Á¶Ã¼ ¹× ÇÔ¼öÃß°¡ Jinsook Kim 03-30-2005 Updated version : 0.2->0.3 Jinsook Kim 04-21-2005 Updated version : 0.3->0.4 REMARK ***************************************************************************/ #ifndef GFN_BASE_H #define GFN_BASE_H #include "GFN_Service.h" #include "JUNGLE/JungleSupport.h" #ifdef __cplusplus extern "C" { #endif typedef struct { UINT8 ascii_w[128-32+1]; //min ascii 32 , max ascii 128 UINT8 ascii_h[128-32+1]; UINT8 ofs_y[128-32+1]; SINT32 max_char_h; SINT32 max_char_w; SINT32 min_ofs_y; SINT32 line_height; SINT32 jum3_width; //[...]ÀÇ ÃѱæÀÌ SINT32 jum3_height; //[...]ÀÇ ³ôÀÌ SINT32 jum1_width; //[.]ÀÇ ³ÐÀÌ SINT32 jum1_hor_pitch; //[.]ÀÇ horizontal pitch SINT32 jum1_ox; //[.]ÀÇ image.bbox.ox }FN_CACHE; //size ¿¡ ´ëÇÑ cache typedef struct { UINT16 *data; SINT16 sx; SINT16 sy; }FN_LINE_DATA; typedef enum { FN_PAGE_NONE = 0, // virtual port °¡ »ç¿ëµÇÁö¾Ê´Â»óÅÂÀÓ FN_PAGE_INIT = 1, FN_PAGE_USING = 2, }FN_PAGE_STAT; typedef enum { FN_PAGE_NORMAL = 0, FN_PAGE_AROUND = 1, }FN_PAGE_TYPE; #define GFN_CACHE(cv) (&(((GFN_INSIDE *)(cv)->font_inside)->cache[(cv)->font_mode%GFN_NUM_MODE])) typedef struct { FN_CACHE cache[GFN_NUM_MODE]; //size ¸¦ ´ã°í ÀÖ´Â cache /* #define MIN_CHAR_WIDTH 10 #define MAX_CHAR_WIDTH 44 SINT8 max_char_width[MAX_CHAR_WIDTH-MIN_CHAR_WIDTH+1]; SINT8 max_char_height[MAX_CHAR_WIDTH-MIN_CHAR_WIDTH+1]; SINT8 max_char_jum3_size[MAX_CHAR_WIDTH-MIN_CHAR_WIDTH+1]; */ SINT32 last_x; //canvas ¿¡ ±ÛÀÚ¸¦ ¾´ÈÄ ´ÙÀ½ x ÁÂÇ¥ /* GFN_OpenVirPrint µîÀÇ ÇÔ¼ö³»¿¡¼­ »ç¿ë */ GFN_FONT_ATTR bak_attr; GFN_FONT_ATTR page_font_attr; FN_LINE_DATA *line_datas; //¶óÀεéÀÇ text ¹è¿­ FN_PAGE_STAT page_text_used; //»ç¿ëµÇ°íÀÖ´Â ¿©ºÎ PAge ÇÔ¼ö¸¦ »ç¿ëÇÑµÚ Ç×»ó NONE À¸·Î clear µÈ´Ù. FN_PAGE_STAT page_text_used_backup; //»ç¿ëµÇ°íÀÖ´Â ¿©ºÎ FN_PAGE_TYPE type; //page scroll À» ¾î¶²½ÄÀ¸·Î Áö¿øÇϴ°¡ GRP_RECT page_text_r; //page pixel Å©±â¿Í ½ÃÀÛ ÁÂÇ¥ SINT32 text_total_line; //total ¶óÀÎ ¼ö SINT32 top_line_index; //page ¿¡¼­ Á¦ÀÏ Ã¹¶óÀÎ SINT32 line_per_page; //page ´ç line ¼ö SINT32 curr_pos_index; //ÇöÀç Ä¿¼­°¡ ÀÖ´Ù°í °¡Á¤ÇßÀ»¶§ pos index UINT16 *alloc_string; //ascii code µéÀ» unicode ·Î º¯È¯ÇÑ pointer UT_FC fc; }GFN_INSIDE; //³»ºÎ¾È¿¡¼­ »ç¿ëµÇ´Â ROOTINE /********************* debug ºÎºÐ ********************************/ //int g_Trace_FontDebug=3; //4=value check, 3=enter/exit, 2=warning, 1=error //int gfn_printf(int level, char *fmt, ...) ; int gfn_printf(char *fmt, ...) ; /******* jungle engine ********************************************************/ void JG_init( void ) ; void JG_free (CANVAS *cv) ; void JG_get_max_char_size(CANVAS *cv, SINT32 *max_width ,SINT32 *max_height) ; void JG_set_attr(CANVAS *cv ) ; void JG_get_uchar_size(CANVAS *cv, SINT32 *width, SINT32 *height, SINT32 *ofs_y, UINT16 ch) ; SINT32 JG_put_char(CANVAS *cv, SINT32 pos_x, SINT32 pos_y, UINT16 ch) ; SINT32 JG_get_real_char_size(CANVAS *cv, SINT32 *char_x, SINT32 *char_y, SINT32 *char_w, SINT32 *char_h, UINT16 ch) ; void JG_open(CANVAS *cv) ; /******* user bitmap font *****************************************************/ void BIT_get_max_char_size(CANVAS *cv , SINT32 *max_width ,SINT32 *max_height ) ; void BIT_set_attr(CANVAS *cv ) ; void BIT_get_uchar_size(CANVAS *cv,SINT32 *width, SINT32 *height, SINT32 *ofs_y, UINT16 ch) ; SINT32 BIT_font_register( CANVAS *cv , void *finfo_ptr ) ; SINT32 BIT_get_real_char_size(CANVAS *cv,SINT32 *char_x, SINT32 *char_y, SINT32 *char_w, SINT32 *char_h, UINT16 ch) ; SINT32 BIT_put_char(CANVAS *cv, SINT32 sx, SINT32 sy, UINT16 ch) ; void BIT_free(CANVAS *cv) ; /******* dst bitmap font ******************************************************/ void DST_get_max_char_size(CANVAS *cv , SINT32 *max_width ,SINT32 *max_height ) ; void DST_set_attr(CANVAS *cv) ; void DST_get_uchar_size(CANVAS *cv,SINT32 *width, SINT32 *height, SINT32 *ofs_y, UINT16 ch) ; SINT32 DST_font_register(CANVAS *cv, void *dst_hfinfo_ptr, void *user_efinfo_ptr) ; SINT32 DST_put_char(CANVAS *cv, SINT32 sx, SINT32 sy, UINT16 ch) ; void DST_free(CANVAS *cv) ; /******* common functions *****************************************************/ void make_multi_string(SINT8 *string) ; SINT32 get_num_line(SINT8 *string) ; SINT32 get_line_string(SINT8 *src_string, SINT8 *tar_string, int line_num) ; SINT32 line_str_len(SINT8 *src_string) ; int u_get_line_string(UINT16 *src_string, UINT16 *tar_string, int line_num) ; int u_get_num_line(UINT16 *string) ; int u_line_str_len(UINT16 *src_string) ; int u_strcpy(UINT16 *tar, UINT16 *src) ; int u_strlen(UINT16 *usp) ; void gfn_init(CANVAS *cv, UINT32 font_nation) ; void gfn_set_font_nation(CANVAS *cv, GRP_NATION f_nation) ; void gfn_set_attr(CANVAS *cv) ; void gfn_get_max_char_size(CANVAS *cv, SINT32 *max_width, SINT32 *max_height ) ; SINT32 gfn_get_real_char_size(CANVAS *cv, SINT32 *char_x, SINT32 *char_y, SINT32 *char_w, SINT32 *char_h, UINT16 ch) ; SINT32 gfn_put_uchar(CANVAS *cv, SINT32 sx, SINT32 sy, UINT16 ch) ; void gfn_free(CANVAS *cv); void gfn_get_uchar_size( CANVAS *cv, SINT32 *width , SINT32 *height, SINT32 *ofs_y,UINT16 ch) ; SINT32 gfn_put_string(CANVAS *cv, SINT32 x, SINT32 y, SINT32 w, SINT32 h, SINT8 *str) ; SINT32 gfn_put_ustring(CANVAS *cv, SINT32 x, SINT32 y, SINT32 w, SINT32 h, UINT16 *unicode) ; SINT32 gfn_put_string_xy(CANVAS *cv,SINT32 *sx,SINT32 *sy, SINT8 *string) ; SINT32 gfn_put_ustring_xy(CANVAS *cv,SINT32 *sx,SINT32 *sy, UINT16 *unicode, SINT32 max_len,SINT32 str_w) ; SINT32 gfn_get_ustr_size(CANVAS *cv,SINT32 *w, SINT32 *h, UINT16 *unicode, SINT32 *ofs_y, SINT32 max_len ) ; void gfn_get_str_size(CANVAS *cv,SINT32 *w, SINT32 *h, SINT8 *string ) ; SINT32 gfn_put_line_ustring(CANVAS *cv, SINT32 *sx, SINT32 *sy, SINT32 width, UINT16 *str_ptr, SINT32 max_len) ; SINT32 gfn_put_line_string(CANVAS *cv, SINT32 *sx, SINT32 *sy, SINT32 width,SINT8 *string, SINT32 max_len) ; void gfn_open_page_print(CANVAS *cv, SINT32 sx, SINT32 sy, SINT32 w, SINT32 h ,SINT8 *str ) ; void gfn_open_page_uprint(CANVAS *cv, SINT32 sx, SINT32 sy, SINT32 w, SINT32 h ,UINT16 *str ) ; void gfn_page_move_down(CANVAS *cv ) ; void gfn_page_move_up(CANVAS *cv ) ; void gfn_get_page_info(CANVAS *cv, int *total_line ,int *line_per_page, int *top_index,int *curr_pos_index) ; void gfn_close_page_print(CANVAS *cv) ; void gfn_reset_cache(CANVAS *cv) ; SINT32 gfn_get_line_height(CANVAS *cv) ; int KSX2Unicode(unsigned char *in_str, unsigned short *out_str, char bConvert) ; int Ascii2Unicode(unsigned char *in_str, unsigned short *out_str) ; #ifdef __cplusplus } #endif #endif //-----------------------------------------end of file