📄 fsguishowfont.c
字号:
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 + -