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

📄 fsguishowfont.c

📁 dvd里面的一个文件系统的代码
💻 C
📖 第 1 页 / 共 2 页
字号:
    draw_offset.draw_dimension.x_length = pFonttem[0];
    FSGUI_DrawFontBmp(video_buf, &start, (pFonttem+2), &size, &draw_offset, &color, 2);
	uiWidth = pFonttem[0] - 8 + 2*FONT_OUTLINE_WIDTH;
	#endif
#else

    size.x_length = uiWidth;
    size.y_length = uiHeight;
	draw_offset.draw_start.y = 0;
	draw_offset.draw_dimension.y_length = uiHeight;
    color.font_color.ui_y    = uiY;
    color.font_color.ui_cbcr = uiCbCr;
	#ifdef FONT_WIDTH_ADJUSTMENT       
	extern UINT8 RWid, LWid;
	CalcuteFontActualWidth((UINT8*)pDestFont, uiWidth, uiHeight, uiWidth, OSD_FORMAT_2COLOR);	
    draw_offset.draw_start.x = LWid;
    draw_offset.draw_dimension.x_length = (RWid-LWid+1);
    FSGUI_DrawFontBmp(video_buf, &start, pDestFont, &size, &draw_offset, &color, 1);
	uiWidth = (RWid-LWid+1);
	#else
    draw_offset.draw_start.x = 0;
    draw_offset.draw_dimension.x_length = uiWidth;
    FSGUI_DrawFontBmp(video_buf, &start, pDestFont, &size, &draw_offset, &color, 1);
	#endif

#endif
#if  !defined(SUPPORT_NATIVE_FSNAME)&& !defined (ADJUST_SPACE_BETWEEN_FONT)//qiutao add here for ipod
    return uiWidth;    
#else
    return uiRealWidth;
#endif
}

// **************************************************************************************** //
typedef struct
{
    UINT16 uiCharFitHeight;
    UINT16 uiMaxStringLength;
} FSGUI_FONT_DRAW_LIMITATION;

void FSGUI_ShowString_Ex( BYTE video_buf, UINT16 x, UINT16 y, const UINT8 *pStr, BYTE uiY, UINT16 uiCbCr, FSGUI_FONT_DRAW_LIMITATION* pLimit )
{
    #ifdef SUPPORT_DVB_PREVIEW_9FRAMES
    extern UINT8 dvb_preview_state;
	if( dvb_preview_state )
		video_buf = 2;
    #endif

    UINT16 uiCount              = 0;
    UINT16 uiCharFitHeight      = 0;
    UINT16 uiMaxStringLength    = 0xFFFF;
    if( pLimit )
    {
        uiCharFitHeight     = pLimit->uiCharFitHeight;
        uiMaxStringLength   = pLimit->uiMaxStringLength;
    }

    UINT8 uiWidth, uiHeight;    
    langGetFontSize( &uiWidth, &uiHeight );

 
   

	while( *pStr )
	{
        const UINT8* pBmp       = NULL;
        UINT32 uiRtnVal         = langGetCharacterBmp( pStr, &pBmp );
        ENUM_FONT_TYPE enType   = langGetFontType();
        
        
        if( ( uiRtnVal != FONT_NOT_IN_RANGE ) 
            #ifdef SUPPORT_NATIVE_FSNAME //denghg modify 2006-6-10 15:53
            && ( enType >= FONT_CP_1250 && enType <= FONT_CP_1258 )
            #else
            &&  enType <= FONT_CP_950_COMMON 
            #endif
		#ifdef CD_RIPPING_GUI_MULTILANGUAGE//denghangao 070201
            && (Get_UseFontType() == 1)
		#endif            
          )
        
        {
            
            
            uiCount += FSGUI_PreDrawBmp( video_buf, pBmp, x + uiCount, y, uiWidth, uiHeight, uiY, uiCbCr, uiCharFitHeight, ENUM_DOWN_SAMPLING_ALL );

            if( uiRtnVal == FONT_ONE_BYTE )
                pStr++;
            else
                pStr += 2;            
        }
        else
        {
		    BYTE    c   = *pStr;
		#ifdef	GPS_MP3_UI	//suxin add, 2005-09-20
            if ( ((c > 10) && (c < 32)) || (c > 126) )
            {
                c = '_';
            }
			if((c >= 1) && (c <= 10))
			{
				if( ( pBmp = get_font_entry( 3, c ) ) )
					uiCount += FSGUI_PreDrawBmp( video_buf, pBmp + 3, x + uiCount, y, pBmp[0], pBmp[1], uiY, uiCbCr, uiCharFitHeight, ENUM_DOWN_SAMPLING_RIGHT_UP_CORNER );
			}
			else
			{
				if( ( pBmp = get_font_entry( 0, c ) ) )
                	uiCount += FSGUI_PreDrawBmp( video_buf, pBmp + 3, x + uiCount, y, pBmp[0], pBmp[1], uiY, uiCbCr, uiCharFitHeight, ENUM_DOWN_SAMPLING_RIGHT_UP_CORNER );
			}
		#else	//GPS_MP3_UI
#ifdef  CD_RIPPING_GUI_MULTILANGUAGE   //denghg add 2007-1-26 15:34 
            if (Get_UseFontType() == 0)
            {
                
                if (c == '\r')
                {
                    pStr++; 
                    c = *pStr; 
                }   
                
                if ((pBmp = get_font_entry(0, c)))
                {
                    uiCount += FSGUI_PreDrawBmp(video_buf, pBmp + 3, x + uiCount, y, pBmp[0], pBmp[1], uiY, uiCbCr, uiCharFitHeight, ENUM_DOWN_SAMPLING_RIGHT_UP_CORNER );
                }
                else
                {
                    c = '_';
                    
                    if ((pBmp = get_font_entry(0, c)))
                    {
                        uiCount += FSGUI_PreDrawBmp(video_buf, pBmp + 3, x + uiCount, y, pBmp[0], pBmp[1], uiY, uiCbCr, uiCharFitHeight, ENUM_DOWN_SAMPLING_RIGHT_UP_CORNER );
                    }
                         
                }      
            }
            else
			#endif //CD_RIPPING_GUI_MULTILANGUAGE           
            {
            if ( (c < 32) || (c > 126) )
            {
                c = '_';
            }
            #ifdef USE_DVD_NEW_SMALL_FONT //lyc add for New DVD Small Font 2007-01-17
            if( ( pBmp = get_font_entry( 0, c ) ) )
            {
                int ySize = 0;
                if( (pBmp != NULL) && (pBmp[1] <= 0x12) )
                    ySize =  y + 4;
                else
                    ySize = y;
                uiCount += FSGUI_PreDrawBmp( video_buf, pBmp + 3, x + uiCount, ySize, pBmp[0], pBmp[1], uiY, uiCbCr, uiCharFitHeight, ENUM_DOWN_SAMPLING_RIGHT_UP_CORNER );
            }
            #else
            if( ( pBmp = get_font_entry( 0, c ) ) )
                uiCount += FSGUI_PreDrawBmp( video_buf, pBmp + 3, x + uiCount, y, pBmp[0], pBmp[1], uiY, uiCbCr, uiCharFitHeight, ENUM_DOWN_SAMPLING_RIGHT_UP_CORNER );
            #endif
            }
		#endif	//GPS_MP3_UI
            pStr++;
        }
		if( uiCount > uiMaxStringLength )
			break;
	}
}

// **************************************************************************************** //
#include "vpp.h"
#include "avd.h"
#include "fsNAV.h"

#define SMALL_GUI_ROW_HEIGHT    12
#define LARGE_GUI_ROW_HEIGHT    24

#define SMALL_GUI_LONG_ROW_WIDTH	350
#define SMALL_GUI_SHORT_ROW_WIDTH	105

#define LAEGE_GUI_ROW_WIDTH		540

static void FSGUI_Pre_ShowString_Ex( BYTE video_buf, int x, int y, const UINT8 *s, BYTE uiY, UINT16 uiCbCr )
{
	extern int is_show_path_info_string;
    FSGUI_FONT_DRAW_LIMITATION stLimit;
    if((getVPP_PictureWidth() <= 352) || IsAVDPreview() || (pFsJpeg->g_nJpegMode == JPEG_THUMBNAIL_MODE))
    {
		if(is_show_path_info_string || (pFsJpeg->g_nJpegMode == JPEG_THUMBNAIL_MODE))
		{
	    	stLimit.uiMaxStringLength = SMALL_GUI_LONG_ROW_WIDTH;
			is_show_path_info_string  = 0;
		}
		else
		{
	   	    stLimit.uiMaxStringLength = SMALL_GUI_SHORT_ROW_WIDTH;			
		}
		stLimit.uiCharFitHeight   = SMALL_GUI_ROW_HEIGHT;
    }
    else
    {
        stLimit.uiCharFitHeight     = LARGE_GUI_ROW_HEIGHT;
        stLimit.uiMaxStringLength   = LAEGE_GUI_ROW_WIDTH;        
    }

    FSGUI_ShowString_Ex( video_buf, x, y, s, uiY, uiCbCr, &stLimit );    
}

// **************************************************************************************** //
void FSGUI_ShowString( int x, int y, const UINT8 *s, BYTE uiY, UINT16 uiCbCr )
{
    FSGUI_Pre_ShowString_Ex( 0, x, y, s, uiY, uiCbCr );
}



#ifdef SUPPORT_iPOD_DOCKING//qiutao 070118

void IPODGUI_ShowString( int x, int y, const UINT8 *s, BYTE uiY, UINT16 uiCbCr )
{
    IPODGUI_Pre_ShowString_Ex( 0, x, y, s, uiY, uiCbCr );
}


static void IPODGUI_Pre_ShowString_Ex( BYTE video_buf, int x, int y, const UINT8 *s, BYTE uiY, UINT16 uiCbCr )
{
	extern int is_show_path_info_string;
    FSGUI_FONT_DRAW_LIMITATION stLimit;
    if((getVPP_PictureWidth() <= 352) || IsAVDPreview() || (pFsJpeg->g_nJpegMode == JPEG_THUMBNAIL_MODE))
    {
		if(is_show_path_info_string || (pFsJpeg->g_nJpegMode == JPEG_THUMBNAIL_MODE))
		{
	    	stLimit.uiMaxStringLength = SMALL_GUI_LONG_ROW_WIDTH;
			is_show_path_info_string  = 0;
		}
		else
		{
	   	    stLimit.uiMaxStringLength = SMALL_GUI_SHORT_ROW_WIDTH;			
		}
		stLimit.uiCharFitHeight   = SMALL_GUI_ROW_HEIGHT;
    }
    else
    {
        stLimit.uiCharFitHeight     = LARGE_GUI_ROW_HEIGHT;
        stLimit.uiMaxStringLength   = LAEGE_GUI_ROW_WIDTH;   
    }

    IPODGUI_ShowString_Ex( video_buf, x, y, s, uiY, uiCbCr, &stLimit );    
}

void IPODGUI_ShowString_Ex( BYTE video_buf, UINT16 x, UINT16 y, const UINT8 *pStr, BYTE uiY, UINT16 uiCbCr, FSGUI_FONT_DRAW_LIMITATION* pLimit )
{


    UINT16 uiCount              = 0;
    UINT16 uiCharFitHeight      = 0;
    UINT16 uiMaxStringLength    = 0xFFFF;
    if( pLimit )
    {
        uiCharFitHeight     = pLimit->uiCharFitHeight;
        uiMaxStringLength   = pLimit->uiMaxStringLength;
    }

    UINT8 uiWidth, uiHeight;    
    langGetFontSize( &uiWidth, &uiHeight );

	while( *pStr )
	{
        const UINT8* pBmp       = NULL;
        //UINT32 uiRtnVal         = GetDrawFontBmp( pStr, &pBmp );       
        UINT32 uiRtnVal         = langGetCharacterBmp( pStr, &pBmp );
        ENUM_FONT_TYPE enType   = langGetFontType();
           
        if( ( uiRtnVal != FONT_NOT_IN_RANGE ) && ( enType <= FONT_ISO_8859_9))      
        {                   
            if( uiRtnVal == FONT_ONE_BYTE )
                pStr++;
            else
                pStr += 2;  
            
            uiCount += FSGUI_PreDrawBmp( video_buf, pBmp, x + uiCount, y, uiWidth, uiHeight, uiY, uiCbCr, uiCharFitHeight, ENUM_DOWN_SAMPLING_ALL );
        }
        else
        {
		    BYTE    c   = *pStr;

            if ( (c < 32) || (c > 126) )
            {
                c = '_';
            }

            if( ( pBmp = get_font_entry( 0, c ) ) )
                uiCount += FSGUI_PreDrawBmp( video_buf, pBmp + 3, x + uiCount, y, pBmp[0], pBmp[1], uiY, uiCbCr, uiCharFitHeight, ENUM_DOWN_SAMPLING_RIGHT_UP_CORNER );

            pStr++;
        }       
		if( uiCount > uiMaxStringLength )
			break;
	}
}

void  IPODGUI_ShowMonoIcon(const UINT8 *pBmp, int x, int y, BYTE iY, UINT16 iCbCr)
{
    coordinate start;
    dimension size;
    DrawDimension draw_offset;    
    VppColor color;

    UINT16 uiWidth = pBmp[0];    
    UINT16 uiHeight = pBmp[1];
    
    start.x = x;
    start.y = y;
    
    size.x_length = uiWidth;
    size.y_length = uiHeight;
    
    draw_offset.draw_start.y = 0;    
    draw_offset.draw_start.x = 0;
    
    color.font_color.ui_y    = iY;
    color.font_color.ui_cbcr = iCbCr;
    
    draw_offset.draw_dimension.y_length = uiHeight;
    draw_offset.draw_dimension.x_length = uiWidth;
    
    FSGUI_DrawFontBmp(0, &start, pBmp + 3, &size, &draw_offset, &color, 1);

}
#endif
// **************************************************************************************** //
void FSGUI_ShowChar( BYTE video_buf, int x, int y, BYTE c, BYTE uiY, UINT16 uiCbCr )
{
    char aBuf[2] = { c, 0 };
    FSGUI_Pre_ShowString_Ex( video_buf, x, y, aBuf, uiY, uiCbCr );
}

// **************************************************************************************** //
    #ifdef FS_BMP_GUI
/*
    Function:In order to show little string in Sunplus New GUI
    Creator:Feeling
*/
void FSGUI_ShowLittleString( int x, int y, const char *s, BYTE uiY, UINT16 uiCbCr )
{
    FSGUI_FONT_DRAW_LIMITATION stLimit;
    stLimit.uiCharFitHeight     = SMALL_GUI_ROW_HEIGHT;
    stLimit.uiMaxStringLength   = 540;   
    FSGUI_ShowString_Ex( 0, x, y, s, uiY, uiCbCr, &stLimit );
}
    #endif

// **************************************************************************************** //

#ifdef FSGUI_FONTFRAME
//suxin add 2005-10-09 for display frame_font.
extern void FrameBuf_DrawFontFrame( BYTE video_buf, const BYTE* bmp, coordinate *start, UINT32 FontColor, UINT32 FrameColor)
{
    UINT32  uiPixelCnt = 0;
    UINT32  i, j;
    UINT8	  uiHeight,uiWidth;
    uiHeight = bmp[1];
    uiWidth = bmp[0];
    bmp = bmp + 2;
	
	for( j = 0; j < uiHeight; j++ )
	{
	    for( i = 0; i < uiWidth; i++ )
	    {
	        UINT8 uiBitVal = ( bmp[ uiPixelCnt / 4 ] >> ( (3 - ( uiPixelCnt % 4 ))*2 ) ) & 0x03;
	        
	        if( uiBitVal )
	        {
	            UINT16 uiCoordX = start->x + i;
	            UINT16 uiCoordY = start->y+ j;
                   UINT32 uiFrmLAddr = 0, uiFrmCAddr = 0;
                
                if( video_buf == 0 )
                {
                    uiFrmLAddr  = REF0_LUMA;
                    uiFrmCAddr  = REF0_CHROMA;
                }
                else if( video_buf == 1 )
                {
                    uiFrmLAddr  = REF1_LUMA;
                    uiFrmCAddr  = REF1_CHROMA;
                }
                else if( video_buf == 2 )
                {
                    uiFrmLAddr  = BIDIR_LUMA;
                    uiFrmCAddr  = BIDIR_CHROMA;
                }
                
                UINT8*  pFrmLAddr = (UINT8*) ( SDRAM_BASE + ( uiFrmLAddr << 10 ) + OFFSET_Y(uiCoordY) + SFF(uiCoordX) );
                UINT16* pFrmCAddr = (UINT16*)( SDRAM_BASE + ( uiFrmCAddr << 10 ) + OFFSET_C( (uiCoordY) >> 1 ) + 2 *( SFF(uiCoordX) >> 1 ) );
			if(uiBitVal == 0x03)
                	{	UINT8 r,g,b;
				r=FontColor>>16;
				g=FontColor>>8;
				b=FontColor;
                		*pFrmLAddr  = (((71*(r) + 141*g + 27*b + 0x1000)&0xFF00)>>8);
                		*pFrmCAddr  = (((127*(r)-106*(g)-21*(b)+0x8000)&0xFF00)|((((-43)*(r)-85*(g)+127*(b)+0x8000)>>8)&0xFF));
			}
			else
			{
				UINT8 r,g,b;
				r=FrameColor>>16;
				g=FrameColor>>8;
				b=FrameColor;
				*pFrmLAddr  =(((71*(r) + 141*g + 27*b + 0x1000)&0xFF00)>>8);
                		*pFrmCAddr  = (((127*(r)-106*(g)-21*(b)+0x8000)&0xFF00)|((((-43)*(r)-85*(g)+127*(b)+0x8000)>>8)&0xFF));
			}
	        }

	        uiPixelCnt++;
	    }
    }
}
#endif
#endif

⌨️ 快捷键说明

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