📄 msapi_osd2.c
字号:
GELineRect.LineRectCoordinate.v0_x = u16Temp1 - x;
GELineRect.LineRectCoordinate.v0_y = u16Temp2 - y;
GELineRect.LineRectCoordinate.v1_x = GELineRect.LineRectCoordinate.v0_x + u16Temp3 + (x<<1) - 1;
GELineRect.LineRectCoordinate.v1_y = GELineRect.LineRectCoordinate.v0_y + (y - last_y) ;
GELineRect.ARGBClr.ForeGroundColor.u32Num = getColorByHight_(GELineRect.LineRectCoordinate.v0_y - pclrBtn->y);
MDrv_GE_RectDraw(&GELineRect);
/* draw bottom round */
//GELineRect.LineRectCoordinate.direction = 0x0;
GELineRect.LineRectCoordinate.v0_y = u16Temp4 + last_y;
GELineRect.LineRectCoordinate.v1_y = u16Temp4 + y - 1;
GELineRect.ARGBClr.ForeGroundColor.u32Num = getColorByHight_(GELineRect.LineRectCoordinate.v1_y - pclrBtn->y);
MDrv_GE_RectDraw(&GELineRect);
/* draw top round */
//GELineRect.LineRectCoordinate.direction = 0x0;
GELineRect.LineRectCoordinate.v0_x = u16Temp1 - y;
GELineRect.LineRectCoordinate.v0_y = u16Temp2 - x;
GELineRect.LineRectCoordinate.v1_x = GELineRect.LineRectCoordinate.v0_x + u16Temp3 + (y<<1) - 1;
GELineRect.LineRectCoordinate.v1_y = GELineRect.LineRectCoordinate.v0_y + 1;
GELineRect.ARGBClr.ForeGroundColor.u32Num = getColorByHight_(GELineRect.LineRectCoordinate.v0_y - pclrBtn->y);
MDrv_GE_RectDraw(&GELineRect);
/* draw bottom round */
//GELineRect.LineRectCoordinate.direction = 0x0;
GELineRect.LineRectCoordinate.v1_y = u16Temp4 + x - 1;
GELineRect.LineRectCoordinate.v0_y = GELineRect.LineRectCoordinate.v1_y - 1;
GELineRect.ARGBClr.ForeGroundColor.u32Num = getColorByHight_(GELineRect.LineRectCoordinate.v1_y - pclrBtn->y);
MDrv_GE_RectDraw(&GELineRect);
last_y = y;
if (x <= y)
break;
}
}
}
/******************************************************************************/
/// API for Draw Aqua-Round Block::
/// @param pclrBtn \b IN color
/******************************************************************************/
#if 0
void msAPI_OSD_DrawAquaRoundBlock(OSDClrBtn *pclrBtn)
{
U16 u16Tg;
U16 u16Tw;
memcpy(&OSDClrBtnRec, pclrBtn, sizeof(OSDClrBtn));
OSDClrBtnRec.g_clr = 0xffffffff;
msAPI_OSD_DrawGradientRoundBlock(&OSDClrBtnRec);
u16Tg = OSDClrBtnRec.radius >> 2;
u16Tw = OSDClrBtnRec.width - (OSDClrBtnRec.radius<<1);
OSDClrBtnRec.x += OSDClrBtnRec.radius;
OSDClrBtnRec.radius = MIN((((OSDClrBtnRec.height>>1) - u16Tg)>>1),(OSDClrBtnRec.radius-u16Tg));
OSDClrBtnRec.x -= (OSDClrBtnRec.radius + (u16Tg >> 1));
OSDClrBtnRec.y += u16Tg;
OSDClrBtnRec.height = (OSDClrBtnRec.height>>1) - u16Tg;
OSDClrBtnRec.width = u16Tw + (OSDClrBtnRec.radius << 1);
OSDClrBtnRec.g_clr = ((0xffffffff - OSDClrBtnRec.b_clr) > 1) + OSDClrBtnRec.b_clr;
OSDClrBtnRec.b_clr = 0xffffffff;
msAPI_OSD_DrawGradientRoundBlock(&OSDClrBtnRec);
}
/******************************************************************************/
/// API for Draw Aqua-Flatten Block::
/// @param pclrBtn \b IN color
/******************************************************************************/
void msAPI_OSD_DrawAquaFlatBlock(OSDClrBtn *pclrBtn)
{
memcpy(&OSDClrBtnRec, pclrBtn, sizeof(OSDClrBtn));
GELineRect.LineRectCoordinate.direction = 0x0;
GELineRect.LineRectCoordinate.v0_x = pclrBtn->x;
GELineRect.LineRectCoordinate.v1_x = pclrBtn->x + pclrBtn->width - 1;
GELineRect.LineRectCoordinate.v0_y = pclrBtn->y;
GELineRect.LineRectCoordinate.v1_y = pclrBtn->y + pclrBtn->height - 1;
GELineRect.Gradient_Color_Flag = GECOLOR_FLAG_GRADIENT_Y;
GELineRect.ARGBClr.ForeGroundColor.u32Num = 0xffffffff;
l32Clr.u32Num = pclrBtn->b_clr;//(pclrBtn->b_clr&0xff00ff00) + ((pclrBtn->b_clr&0xff)<<16) +((pclrBtn->b_clr>>16)&0xff);
l32Clr.u8Num[1] = l32Clr.u8Num[1] >> 1;
l32Clr.u8Num[2] = l32Clr.u8Num[2] >> 1;
l32Clr.u8Num[3] = l32Clr.u8Num[3] >> 1;
GELineRect.ARGBClr.GradientYColor.u32Num = l32Clr.u32Num;
MDrv_GE_RectDraw(&GELineRect);
GELineRect.LineRectCoordinate.direction = 0x0;
GELineRect.LineRectCoordinate.v0_x = pclrBtn->x + AQU_BOUND_WIDTH;
GELineRect.LineRectCoordinate.v1_x = pclrBtn->x + pclrBtn->width - 1 - AQU_BOUND_WIDTH;
GELineRect.LineRectCoordinate.v0_y = pclrBtn->y + AQU_BOUND_WIDTH;
GELineRect.LineRectCoordinate.v1_y = pclrBtn->y + pclrBtn->height - 1 - AQU_BOUND_WIDTH;
GELineRect.Gradient_Color_Flag = GECOLOR_FLAG_CONSTANT;
GELineRect.ARGBClr.ForeGroundColor.u32Num = (pclrBtn->b_clr&0xff00ff00) + ((pclrBtn->b_clr&0xff)<<16) +((pclrBtn->b_clr>>16)&0xff);
MDrv_GE_RectDraw(&GELineRect);
}
/******************************************************************************/
/// API for Draw Aqua-Flatten and Round Block::
/// @param pclrBtn \b IN color
/******************************************************************************/
void msAPI_OSD_DrawAquaFlatRoundBlock(OSDClrBtn *pclrBtn)
{
memcpy(&OSDClrBtnRec, pclrBtn, sizeof(OSDClrBtn));
OSDClrBtnRec.b_clr = 0xffffffff;
l32Clr.u32Num = pclrBtn->b_clr;
l32Clr.u8Num[1] = l32Clr.u8Num[1] >> 1;
l32Clr.u8Num[2] = l32Clr.u8Num[2] >> 1;
l32Clr.u8Num[3] = l32Clr.u8Num[3] >> 1;
OSDClrBtnRec.g_clr = l32Clr.u32Num;
msAPI_OSD_DrawGradientRoundBlock(&OSDClrBtnRec);
OSDClrBtnRec.x += pclrBtn->bFrameWidth;
OSDClrBtnRec.y += pclrBtn->bFrameWidth;
OSDClrBtnRec.width -= (pclrBtn->bFrameWidth)*2;
OSDClrBtnRec.height -= (pclrBtn->bFrameWidth)*2;
OSDClrBtnRec.b_clr = pclrBtn->b_clr;
OSDClrBtnRec.radius -= pclrBtn->bFrameWidth;
msAPI_OSD_DrawRoundBlock(&OSDClrBtnRec);
}
/******************************************************************************/
/// API for Draw Aqua-progress Block::
/// @param pClrBtnFrame \b IN color button frame
/// @param pClrBtnBar \b IN color button bar
/// @param u8Percentage \b IN percentage setting
/// @param u8ProgressBarFlag \b IN progress bar flag
/******************************************************************************/
void msAPI_OSD_DrawAquaProgBar(OSDClrBtn *pClrBtnFrame, OSDClrBtn *pClrBtnBar, U8 u8Percentage, U8 u8ProgressBarFlag)
{
U16 percent_width;
memcpy(&OSDClrBtnRec, pClrBtnFrame, sizeof(OSDClrBtn));
if(u8Percentage > 100)
{
u8Percentage = 100;
}
if(u8ProgressBarFlag& 0x01)
{
OSDClrBtnRec.radius = (OSDClrBtnRec.height >> 1);
//OSDClrBtnRec.b_clr = 0xffffffff;
//OSDClrBtnRec.g_clr = COLOR_LTBLUE;
msAPI_OSD_DrawGradientRoundBlock(&OSDClrBtnRec);
}
percent_width = pClrBtnBar->width * u8Percentage/100;
memcpy(&OSDClrBtnRec, pClrBtnBar, sizeof(OSDClrBtn));
if(u8ProgressBarFlag& 0x02)
{
//OSDClrBtnRec.b_clr = COLOR_PINK;
//OSDClrBtnRec.g_clr = 0x7b4962;
OSDClrBtnRec.width = percent_width;
OSDClrBtnRec.u8Gradient = GRADIENT_Y_COLOR;
msAPI_OSD_DrawBlock(&OSDClrBtnRec);
}
else if(u8ProgressBarFlag& 0x04)
{
//OSDClrBtnRec.b_clr = 0xffffffff;
//OSDClrBtnRec.g_clr = COLOR_LTBLUE;
OSDClrBtnRec.x += percent_width;
OSDClrBtnRec.width -= percent_width;
OSDClrBtnRec.u8Gradient = GRADIENT_Y_COLOR;
msAPI_OSD_DrawBlock(&OSDClrBtnRec);
}
}
void msAPI_OSD_CopyBoundary(U8 u8FId, U16 u16Width, U16 u16Heigh, U16 u16sx, U16 u16sy, U16 u16dx, U16 u16dy)
{
GEPitBaseInfo PitBase;
Gwin_FB_Attr fbAttr;
MDrv_GOP_GWIN_GetFBInfo(u8FId, &fbAttr);
BitbltInfo.src_fm = 0x17;
BitbltInfo.dst_fm = 0x17;
BitbltInfo.BitbltCoordinate.v0_x = u16dx;
BitbltInfo.BitbltCoordinate.v0_y = u16dy;
BitbltInfo.BitbltCoordinate.v2_x = u16sx;
BitbltInfo.BitbltCoordinate.v2_y = u16sy;
BitbltInfo.BitbltCoordinate.width = u16Width;
BitbltInfo.BitbltCoordinate.height= u16Heigh;
BitbltInfo.src_width = u16Width;
BitbltInfo.src_height = u16Heigh;
BitbltInfo.BitBltTypeFlag = GEBitbltType_Normal;
BitbltInfo.bmphandle = 0;
PitBase.db_base = fbAttr.addr;
PitBase.sb_base = fbAttr.addr;
PitBase.db_pit = fbAttr.pitch;
PitBase.sb_pit = fbAttr.pitch;
MDrv_GE_BitBlt(&BitbltInfo, &PitBase);
PESet.PE_Enable_Flag = GE_PE_FLAG_DEFAULT ;
MDrv_GE_PixelEngine(&PESet);
}
#endif
#endif
#undef MSAPI_OSD2_C
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -