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

📄 msapi_osd2.c

📁 mstar 776 开发的车载dvd
💻 C
📖 第 1 页 / 共 2 页
字号:
            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 + -