📄 apiosdrender.c
字号:
// @param flag
// --#define GEFONT_FLAG_DEFAULT 0x0
// --#define GEFONT_FLAG_COMPACT 0x4
// --#define GEFONT_FLAG_VARWIDTH 0x20
// --#define GEFONT_FLAG_GAP 0x40
// @param dis \b IN: set compact or Gap distant(take indent effect) when GEFONT_FLAG_COMPACT or GEFONT_FLAG_GAP is set
// @param bShadow \bIN: TRUE/FALSE enable shadow/disable shadow
// @return TRUE/FALSE : Sucess/Fail
//-------------------------------------------------------------------------------------------------
/*BOOLEAN _MApi_Osd_TextOutNew(OsdGC *pGC,
OSD_COLOR_FMT eOSD_COLOR_FMT,
OSD_COLOR TextColor,
SystemFont eSystemFont,
Rect *r,
U8 *pMsg,
U16 len,
U8 flag,
U8 u8dis,
BOOLEAN bShadow)
{
#if 0
U16 u16WeightMax = 0;
GE_RGB_COLOR colorArray;
GE_TEXT_OUT_INFO fmt;
FONTHANDLE hFontHandle = ERR_HANDLE;
U32 u32FontType;
U8 u8I;
OSD_ALPHA_BLENDING Osd_Alpha;
if (len > MaxTextOutLen)
{
PRINTE("MApi_Osd_TextOut : Warring TextOutBuffer too small");
}
if (pGC->fmt == FMT_I8)
{
PRINTE("MApi_Osd_TextOut : GC use I8 , current Text Out function not support I8 format !");
return FALSE;
}
if (eOSD_COLOR_FMT == OSD_I8)
{
PRINTE("MApi_Osd_TextOut : Input is I8 , current Text Out function not support I8 format !");
return FALSE;
}
switch (eSystemFont)
{
case FONT_BASIC:
case FONT_BASIC_SMALL:
case FONT_BASIC_LARGE:
MApi_Osd_GCGetSysFont(pGC, eSystemFont ,&hFontHandle, &u32FontType);
if (hFontHandle == ERR_HANDLE)
{
PRINTE("MApi_Osd_TextOut : Can't get Basic Font Handle\n");
return FALSE;
}
else
{
u16WeightMax = 1;
}
break;
case FONT_NORMAL:
case FONT_NORMAL_SMALL:
case FONT_NORMAL_LARGE:
MApi_Osd_GCGetSysFont(pGC, eSystemFont ,&hFontHandle, &u32FontType);
if (hFontHandle == ERR_HANDLE)
{
PRINTE("MApi_Osd_TextOut : Can't get Normal Font Handle\n");
return FALSE;
}
else
{
u16WeightMax = 3;
}
break;
case FONT_ADVANCE:
case FONT_ADVANCE_SMALL:
case FONT_ADVANCE_LARGE:
MApi_Osd_GCGetSysFont(pGC, eSystemFont ,&hFontHandle, &u32FontType);
if (hFontHandle == ERR_HANDLE)
{
PRINTE("MApi_Osd_TextOut : Can't get Advance Font Handle\n");
return FALSE;
}
else
{
u16WeightMax = 15;
}
break;
}
AnsiToWStrIndex(pMsg, len, u32FontType, _pWstringBuf);
_OSD_Render_BeginDraw (pGC);
MDrv_GE_PE_SetNearestMode(true); // Use NearestMode to display Text if need scale.
//Set Alpha Blending & Src Alpah Info
Osd_Alpha.bEnable_Blend= TRUE;
Osd_Alpha.eBLEND_COEF = COEF_ASRC;
Osd_Alpha.eALPHA_SRC_FROM = ABL_FROM_ADST;
_MApi_Osd_SetAlphaBlending ( &Osd_Alpha );
//Set palette 0
colorArray.r = 7;
colorArray.g = 7;
colorArray.b = 7;
colorArray.a = 0;
MDrv_GE_PE_SetSrcColorKey(TRUE, CK_OP_NOT_EQUQL, GE_FMT_ARGB8888, (void *)&colorArray, (void *)&colorArray);
MDrv_GE_PE_SetIntensity(0, GE_FMT_ARGB8888, (U32 *)&colorArray);
// Display Shadow Text
if(bShadow)
{
OSD_COLOR shadow;
shadow.u32AllColorValue = MApi_Osd_GetSystemColor(pGC, COLOR_SHADOW);
// set Text shadow color
for(u8I=1; u8I<=u16WeightMax; u8I++)
{
colorArray.r = shadow.r;
colorArray.g = shadow.g;
colorArray.b = shadow.b;
colorArray.a = (255*u8I)/u16WeightMax;
MDrv_GE_PE_SetIntensity(u8I, GE_FMT_ARGB8888, (U32 *)&colorArray);
fmt.dstblk.width= r->width/len;
fmt.dstblk.height = r->height;
fmt.dstblk.x = r->left+TEXT_SHADOW;
fmt.dstblk.y = r->top+TEXT_SHADOW;
fmt.dis = u8dis;
//fmt.flag = GEFONT_FLAG_SCALE | GEFONT_FLAG_COMPACT| GEFONT_FLAG_BACKGROUND;
fmt.flag = flag;
MDrv_GE_PE_TextOut(hFontHandle, (U8*)_pWstringBuf, 2, &fmt);
}
}
// Display Real Text
//Set Text Color
for(u8I=1; u8I <= u16WeightMax;u8I++)
{
colorArray.r = TextColor.r;
colorArray.g = TextColor.g;
colorArray.b = TextColor.b;
colorArray.a = (255*u8I)/u16WeightMax;
MDrv_GE_PE_SetIntensity(u8I, GE_FMT_ARGB8888, (U32 *)&colorArray);
}
fmt.dstblk.width= r->width/len;
fmt.dstblk.height = r->height;
fmt.dstblk.x = r->left;
fmt.dstblk.y = r->top;
fmt.dis = u8dis;
//fmt.flag = GEFONT_FLAG_COMPACT | GEFONT_FLAG_BACKGROUND | GEFONT_FLAG_SCALE;
fmt.flag = flag;
MDrv_GE_PE_TextOut(hFontHandle, (U8*)_pWstringBuf, 2, &fmt);
MDrv_GE_PE_SetNearestMode(false);
MDrv_GE_PE_SetSrcColorKey(false, CK_OP_NOT_EQUQL, GE_FMT_ARGB8888, (void *)&colorArray, (void *)&colorArray);
MApi_Osd_EndDraw(pGC);
#endif
return TRUE;
}*/
//-------------------------------------------------------------------------------------------------
// MApi_Osd_TextOutConstAlpha: Text out string on screen with constant alpha
// @param pGC \b IN: the GC
// @param eOSD_COLOR_FMT \b IN: input color format
// @param TextColor \b IN: input color
// @param eSystemFont \b IN: Set Font Type
// @param r \b IN: the rectangle to textout
// @param pMsg \b IN: the output string
// @param len \b IN: the string length
// @param flag
// --#define GEFONT_FLAG_DEFAULT 0x0
// --#define GEFONT_FLAG_COMPACT 0x4
// --#define GEFONT_FLAG_VARWIDTH 0x20
// --#define GEFONT_FLAG_GAP 0x40
// @param dis \b IN: set compact or Gap distant(take indent effect) when GEFONT_FLAG_COMPACT or GEFONT_FLAG_GAP is set
// @param u8Alpha \b IN: constant alpha
// @param bShadow \bIN: TRUE/FALSE enable shadow/disable shadow
// @return TRUE/FALSE : Sucess/Fail
//-------------------------------------------------------------------------------------------------
/*BOOLEAN MApi_Osd_TextOutConstAlpha(OsdGC *pGC,
OSD_COLOR_FMT eOSD_COLOR_FMT,
OSD_COLOR TextColor,
SystemFont eSystemFont,
Rect *r,
U8 *pMsg,
U16 len,
U8 flag,
U8 u8dis,
U8 u8Alpha,
BOOLEAN bShadow)
{
#if 0
U16 u16WeightMax = 0;
GE_RGB_COLOR colorArray;
GE_TEXT_OUT_INFO fmt;
FONTHANDLE hFontHandle = ERR_HANDLE;
U32 u32FontType;
U8 u8I;
OSD_ALPHA_BLENDING Osd_Alpha;
if (len > MaxTextOutLen)
{
PRINTE("MApi_Osd_TextOut : Warring TextOutBuffer too small");
}
if (pGC->fmt == FMT_I8)
{
PRINTE("MApi_Osd_TextOut : GC use I8 , current Text Out function not support I8 format !");
return FALSE;
}
if (eOSD_COLOR_FMT == OSD_I8)
{
PRINTE("MApi_Osd_TextOut : Input is I8 , current Text Out function not support I8 format !");
return FALSE;
}
switch (eSystemFont)
{
case FONT_BASIC:
case FONT_BASIC_SMALL:
case FONT_BASIC_LARGE:
MApi_Osd_GCGetSysFont(pGC, eSystemFont ,&hFontHandle, &u32FontType);
if (hFontHandle == ERR_HANDLE)
{
PRINTE("MApi_Osd_TextOut : Can't get Basic Font Handle\n");
return FALSE;
}
else
{
u16WeightMax = 1;
}
break;
case FONT_NORMAL:
case FONT_NORMAL_SMALL:
case FONT_NORMAL_LARGE:
MApi_Osd_GCGetSysFont(pGC, eSystemFont ,&hFontHandle, &u32FontType);
if (hFontHandle == ERR_HANDLE)
{
PRINTE("MApi_Osd_TextOut : Can't get Normal Font Handle\n");
return FALSE;
}
else
{
u16WeightMax = 3;
}
break;
case FONT_ADVANCE:
case FONT_ADVANCE_SMALL:
case FONT_ADVANCE_LARGE:
MApi_Osd_GCGetSysFont(pGC, eSystemFont ,&hFontHandle, &u32FontType);
if (hFontHandle == ERR_HANDLE)
{
PRINTE("MApi_Osd_TextOut : Can't get Advance Font Handle\n");
return FALSE;
}
else
{
u16WeightMax = 15;
}
break;
}
AnsiToWStrIndex(pMsg, len, u32FontType, _pWstringBuf);
_OSD_Render_BeginDraw (pGC);
MDrv_GE_PE_SetNearestMode(true); // Use NearestMode to display Text if need scale.
//Set Alpha Blending & Src Alpah Info
Osd_Alpha.bEnable_Blend= TRUE;
Osd_Alpha.eBLEND_COEF = COEF_CONST;
Osd_Alpha.eALPHA_SRC_FROM = ABL_FROM_CONST;
Osd_Alpha.u8Constant_Alpha = u8Alpha;
_MApi_Osd_SetAlphaBlending ( &Osd_Alpha );
//Set palette 0
colorArray.r = 7;
colorArray.g = 7;
colorArray.b = 7;
colorArray.a = 0;
MDrv_GE_PE_SetSrcColorKey(TRUE, CK_OP_NOT_EQUQL, GE_FMT_ARGB8888, (void *)&colorArray, (void *)&colorArray);
MDrv_GE_PE_SetIntensity(0, GE_FMT_ARGB8888, (U32 *)&colorArray);
// Display Shadow Text
if(bShadow)
{
OSD_COLOR shadow;
shadow.u32AllColorValue = MApi_Osd_GetSystemColor(pGC, COLOR_SHADOW);
// set Text shadow color
for(u8I=1; u8I<=u16WeightMax; u8I++)
{
colorArray.r = shadow.r;
colorArray.g = shadow.g;
colorArray.b = shadow.b;
colorArray.a = (255*u8I)/u16WeightMax;
MDrv_GE_PE_SetIntensity(u8I, GE_FMT_ARGB8888, (U32 *)&colorArray);
fmt.dstblk.width= r->width/len;
fmt.dstblk.height = r->height;
fmt.dstblk.x = r->left+TEXT_SHADOW;
fmt.dstblk.y = r->top+TEXT_SHADOW;
fmt.dis = u8dis;
//fmt.flag = GEFONT_FLAG_SCALE | GEFONT_FLAG_COMPACT| GEFONT_FLAG_BACKGROUND;
fmt.flag = flag;
MDrv_GE_PE_TextOut(hFontHandle, (U8*)_pWstringBuf, 2, &fmt);
}
}
// Display Real Text
//Set Text Color
for(u8I=1; u8I <= u16WeightMax;u8I++)
{
colorArray.r = TextColor.r;
colorArray.g = TextColor.g;
colorArray.b = TextColor.b;
colorArray.a = (255*u8I)/u16WeightMax;
MDrv_GE_PE_SetIntensity(u8I, GE_FMT_ARGB8888, (U32 *)&colorArray);
}
fmt.dstblk.width= r->width/len;
fmt.dstblk.height = r->height;
fmt.dstblk.x = r->left;
fmt.dstblk.y = r->top;
fmt.dis = u8dis;
//fmt.flag = GEFONT_FLAG_COMPACT | GEFONT_FLAG_BACKGROUND | GEFONT_FLAG_SCALE;
fmt.flag = flag;
MDrv_GE_PE_TextOut(hFontHandle, (U8*)_pWstringBuf, 2, &fmt);
MDrv_GE_PE_SetNearestMode(false);
MDrv_GE_PE_SetSrcColorKey(false, CK_OP_NOT_EQUQL, GE_FMT_ARGB8888, (void *)&colorArray, (void *)&colorArray);
MApi_Osd_EndDraw(pGC);
#endif
return TRUE;
}*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -