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

📄 msapi_osd.c

📁 mstar 776 开发的车载dvd
💻 C
📖 第 1 页 / 共 5 页
字号:
	{
		return;
	}
	else if ( ( pclrBtn->y + pclrBtn->height ) > NEWUI_MAIN_MENU_GWIN_HEIGHT )
	{
		return;
	}
	else*/ if ( pclrBtn->radius > pclrBtn->width / 2 || pclrBtn->radius > pclrBtn->height / 2 )
	{
		return;
	}

	/* draw round block */
	msAPI_OSD_DrawRoundBlock(pclrBtn);

	/* draw text */
	if(pclrBtn->bStringIndexWidth == CHAR_IDX_1BYTE)
	{
		if(*pu8Str == 0)
			return;
	}
	else
	{
		if(*((U16*)pu8Str) == 0)
			return;
	}

	pclrBtn->x += pclrBtn->radius;
	pclrBtn->width -= 2 * pclrBtn->radius;
    msAPI_OSD_DrawText(font_handle, pu8Str, pclrBtn);
	pclrBtn->x -= pclrBtn->radius;
	pclrBtn->width += 2 * pclrBtn->radius;

}

#if 0
/*****************************************************************************************************/
void msAPI_OSD_DrawBitmap(BMPHANDLE Handle, U16 u16StartX, U16 u16StartY, GEBitmapFmt bmpfmt)
{
    GEPoint v0;
    v0.x = u16StartX;
    v0.y = u16StartY;

    if(bmpfmt.bBmpColorKeyEnable)
        MDrv_GE_SetSCK(ENABLE, &bmpfmt.clrrange.color_s, &bmpfmt.clrrange.color_e);

	//bmpfmt.bScale = FALSE;
    MDrv_GE_DrawBitmap(Handle, &v0, &bmpfmt);

    MDrv_GE_SetSCK(DISABLE, NULL, NULL);
}
#endif


/******************************************************************************/
/// API for draw block::
/// @param Handle \b IN bitmap handle
/// @param u16StartX \b IN x coordinate
/// @param u16StartY \b IN y coordinate
/// @param bmpfmt \b IN bitmap format
/******************************************************************************/
void msAPI_OSD_DrawBitmap(BMPHANDLE Handle, U16 u16StartX, U16 u16StartY, GEBitmapFmt bmpfmt)
{
#if GE_DRIVER_TEST
    //if(bmpfmt.bBmpColorKeyEnable)
    //    MDrv_GE_SetSCK(ENABLE, &bmpfmt.clrrange.color_s, &bmpfmt.clrrange.color_e);

    PESet.PE_Enable_Flag = GE_PE_FLAG_SCK  ;
    //PESet.PE_Enable_Flag  = GE_PE_FLAG_ALPHABLENDING ;
    PESet.sck_set.sck_hth.u32Num = 0xff00ff;
    PESet.sck_set.sck_lth.u32Num = 0xff00ff;
    PESet.sck_set.sck_mode = 0x11;

    //PESet.ABL.abl_const = 0x808080;
    //PESet.ABL.dcoef = PESet.ABL.scoef = 0x3;

    MDrv_GE_PixelEngine(&PESet);

    //MDrv_GE_SetAlpha(ENABLE,0x3, 0x3,0x80808080);

    BitbltInfo.bmphandle = Handle;
    BitbltInfo.BitbltCoordinate.v0_x = u16StartX;
    BitbltInfo.BitbltCoordinate.v0_y = u16StartY;
    BitbltInfo.BitbltCoordinate.width = bmpfmt.width;
    BitbltInfo.BitbltCoordinate.height = bmpfmt.height;
    BitbltInfo.BitbltCoordinate.v2_x = 0;
    BitbltInfo.BitbltCoordinate.v2_y = 0;
    BitbltInfo.dst_fm = 0x17;
    BitbltInfo.src_fm = 0x17;
    if(bmpfmt.bScale)
        BitbltInfo.BmpFlag = GEBBT_FLAG_STBB;
    else
        BitbltInfo.BmpFlag = GE_FLAG_DEFAULT;

    MDrv_GE_DrawBitmap2(&BitbltInfo);
    //MDrv_GE_SetSCK(DISABLE, NULL, NULL);

    PESet.PE_Enable_Flag = GE_PE_FLAG_DEFAULT ;
    MDrv_GE_PixelEngine(&PESet);

#else

    GEPoint v0;

    v0.x = u16StartX;
    v0.y = u16StartY;

    if (bmpfmt.bBmpColorKeyEnable)
    {
        MDrv_GE_SetSCK(ENABLE, CK_OP_EQUQL, GE_FMT_ARGB8888, &bmpfmt.clrrange.color_s, &bmpfmt.clrrange.color_e);
    }

    bmpfmt.clrrange.color_s.r = 0xeF;
    bmpfmt.clrrange.color_s.g = 0x0;
    bmpfmt.clrrange.color_s.b = 0xeF;
    bmpfmt.clrrange.color_e.r = 0xFF;
    bmpfmt.clrrange.color_e.g = 0x0;
    bmpfmt.clrrange.color_e.b = 0xFF;
    MDrv_GE_SetSCK(ENABLE, CK_OP_EQUQL, GE_FMT_ARGB8888,  &bmpfmt.clrrange.color_s, &bmpfmt.clrrange.color_e);
    MDrv_GE_SetNearestMode(false);
    MDrv_GE_SetPatchMode(true);

	//bmpfmt.bScale = FALSE;
    MDrv_GE_DrawBitmap(Handle, &v0, &bmpfmt);
    MDrv_GE_SetNearestMode(false);
    MDrv_GE_SetPatchMode(false);
    MDrv_GE_SetSCK(DISABLE, CK_OP_EQUQL, GE_FMT_ARGB8888,  NULL, NULL);

#endif
#if 0
    MDrv_Timer_Delayms(500);

    BitbltInfo.BmpFlag = GE_FLAG_DEFAULT;

    MDrv_GE_DrawBitmap2(&BitbltInfo);

    MDrv_Timer_Delayms(500);

    if(bmpfmt.bScale)
        BitbltInfo.BmpFlag = GEBBT_FLAG_STBB;
    else
        BitbltInfo.BmpFlag = GE_FLAG_DEFAULT;

    MDrv_GE_DrawBitmap2(&BitbltInfo);
#endif
}

/******************************************************************************/
/// API for draw bitmap specifically for subtitle:
/// @param Handle \b IN bitmap handle
/// @param u16StartX \b IN x coordinate
/// @param u16StartY \b IN y coordinate
/// @param bmpfmt \b IN bitmap format
/******************************************************************************/
void msAPI_OSD_DrawBitmap_Subtitle(BMPHANDLE Handle, U16 u16StartX, U16 u16StartY, GEBitmapFmt bmpfmt)
{

    GEPoint v0;

    v0.x = u16StartX;
    v0.y = u16StartY;

    if (bmpfmt.bBmpColorKeyEnable)
    {
        MDrv_GE_SetSCK(ENABLE, CK_OP_EQUQL, GE_FMT_I8, &bmpfmt.clrrange.color_s, &bmpfmt.clrrange.color_e);
    }

    MDrv_GE_SetNearestMode(true);
    MDrv_GE_SetPatchMode(true);

	//bmpfmt.bScale = FALSE;
    MDrv_GE_DrawBitmap(Handle, &v0, &bmpfmt);
    MDrv_GE_SetNearestMode(false);
    MDrv_GE_SetPatchMode(false);
    MDrv_GE_SetSCK(DISABLE, CK_OP_EQUQL, GE_FMT_I8,  NULL, NULL);

}

void msAPI_OSD_DrawColorKeyBitmap(BMPHANDLE Handle, U16 u16StartX, U16 u16StartY, GEBitmapFmt bmpfmt)
{
    GEPoint v0;

    v0.x = u16StartX;
    v0.y = u16StartY;

    if (bmpfmt.bBmpColorKeyEnable)
    {
        MDrv_GE_SetSCK(ENABLE, CK_OP_EQUQL, GE_FMT_ARGB8888,  &bmpfmt.clrrange.color_s, &bmpfmt.clrrange.color_e);

    }

    if (bmpfmt.bScale && bmpfmt.bBmpColorKeyEnable)
        MDrv_GE_SetNearestMode(true);
    else
        MDrv_GE_SetNearestMode(false);

    MDrv_GE_SetPatchMode(true);

    MDrv_GE_DrawBitmap(Handle, &v0, &bmpfmt);
    MDrv_GE_SetNearestMode(false);
    MDrv_GE_SetPatchMode(false);

    MDrv_GE_SetSCK(DISABLE, CK_OP_EQUQL, GE_FMT_ARGB8888,  NULL, NULL);

}
#endif  // #if (!BOOTLOADER_SYSTEM)

/******************************************************************************/
/// API for set clip window::
/// @param x0 \b IN start x coordinate
/// @param y0 \b IN start y coordinate
/// @param x1 \b IN end x coordinate + 1 (not included in window)
/// @param y1 \b IN end y coordinate + 1 (not included in window)
/******************************************************************************/
void msAPI_OSD_SetClipWindow(U16 x0, U16 y0, U16 x1, U16 y1)
{
    ClipWindow.x0 = x0;
    ClipWindow.y0 = y0;
    ClipWindow.x1 = x1;
    ClipWindow.y1 = y1;
    MDrv_GE_SetClipWindow(x0, y0, x1 - 1, y1 - 1);
}

void msAPI_OSD_GetClipWindow(U16 *pX0, U16 *pY0, U16 *pX1, U16 *pY1)
{
    *pX0 = ClipWindow.x0;
    *pY0 = ClipWindow.y0;
    *pX1 = ClipWindow.x1;
    *pY1 = ClipWindow.y1;
    //MDrv_GE_GetClipWindow(pX0, pY0, pX1, pY1);
}

void msAPI_OSD_BackupClipWindow(void)
{
    ClipWindowBackup.x0 = ClipWindow.x0;
    ClipWindowBackup.y0 = ClipWindow.y0;
    ClipWindowBackup.x1 = ClipWindow.x1;
    ClipWindowBackup.y1 = ClipWindow.y1;
}

#if 1// kevin 071224 //(!BOOTLOADER_SYSTEM)
/******************************************************************************/
/// API for set Dither::
/// @param bEnable \b IN turn on/off
/******************************************************************************/
void msAPI_OSD_SetDither(BOOLEAN bEnable)
{
    MDrv_GE_SetDither(bEnable);
}
#if (KEEP_UNUSED_FUNC == 1)
/******************************************************************************/
/// API for set rotation::
/// @param locrotate \b IN local rotation
/// @param glorotate \b IN global rotation
/******************************************************************************/
void msAPI_OSD_SetRotation(U8 locrotate,U8 glorotate)
{
	MDrv_GE_SetRotate(locrotate);
}
#endif

#if 0
/******************************************************************************/
/// API for displaying dragging effect between two full-screen bitmap:
/// This effect will show the first pic, and will move to right of screen and the second pic will enter the left side of screen.
/// @param BMPHANDLE mainhandle \b, the main-menu bitmap handle (on the right side)
/// @param BMPHANDLE subhandle \b, the sub-mainmenu bitmap handle(on the left side)
/// @param OSD_SLIDE_SPEED SLIDESPEED \b, the sliding speed
/******************************************************************************/
void msAPI_OSD_BitmapDisplaySlideShow(BMPHANDLE mainhandle, BMPHANDLE subhandle, OSD_SLIDE_SPEED SLIDESPEED, COMBO_OSD_STATUS COMBOOSDSTATUS)
{
    U8 u8FbID,u8FbID1;
    Bitmap_Info BitmapTable,BitmapTable1;
    GEBitmapFmt bmpfmt;
    GEPoint ppoint;
    U16 draw_w, draw_w_1;
    MSAPI_OSDRegion CopyFB,PasteFB;
    U16 i=0;
    U16 j=0;
    U16 interval;

    // Get the properties of current FB, and the two drawing pics
    u8FbID=msAPI_GOP_GWIN_GetFBfromGWIN(msAPI_GOP_GWIN_GetCurrentWinId());
    MDrv_MIU_Get_BitmapInfo(mainhandle, &BitmapTable);
    MDrv_MIU_Get_BitmapInfo(subhandle, &BitmapTable1);

    //To generating a framebuffer to save the sub-mainmenu pic
    u8FbID1=msAPI_GOP_GWIN_GetFreeFBID();
    msAPI_GOP_GWIN_CreateFB(u8FbID1, BitmapTable1.width, BitmapTable1.height, BitmapTable1.fmt);
    msAPI_GOP_GWIN_Switch2FB(u8FbID1);

	ppoint.x=0;
	ppoint.y=0;
	bmpfmt.bScale=false;
	bmpfmt.height=BitmapTable1.height;
	bmpfmt.width=BitmapTable1.width;
    MDrv_GE_DrawBitmap(subhandle, &ppoint, &bmpfmt);

    //Switch gwin to display animate
    msAPI_GOP_GWIN_Switch2Gwin(msAPI_GOP_GWIN_GetCurrentWinId());

    //To generating a dissapear effect of right pic
    msAPI_GOP_GWIN_Enable(msAPI_GOP_GWIN_GetCurrentWinId(),TRUE);

    //parameter settings of main-menu pic
    draw_w = BitmapTable.width;
    ppoint.y=0;
    bmpfmt.bScale=false;
    //parameter settings of sub-mainmenu pic
    CopyFB.fbID=u8FbID1;
    PasteFB.fbID=u8FbID;
    CopyFB.y=0;
    PasteFB.y=0;
    PasteFB.x=0;
    CopyFB.height=BitmapTable1.height;
    PasteFB.height=BitmapTable1.height;
    draw_w_1=BitmapTable1.width;

    //Start to generating dragging effect
    //choose speed
    switch (SLIDESPEED)
    {
        case OSD_SLIDE_SPEED_FAST:
        {
            interval=48;
            break;
        }
        case OSD_SLIDE_SPEED_MEDIUM:
        {
            interval=16;
            break;
        }
        case OSD_SLIDE_SPEED_SLOW:
        {
            interval=4;
            break;
        }
        default:
            interval=16;
            break;
    }

    switch (COMBOOSDSTATUS)
    {
        case OSD_MAIN:
        {
            msAPI_OSD_BitmapScalingAnimate(mainhandle,OSD_SLOW);
            osd_status=OSD_SUB_MAIN;
            break;
        }
        case OSD_SUB_MAIN:
        {
            //main page slides to the right, and sub-mainmenu slides from left to right
            for (i=1;i<=(draw_w)/interval;i+=1)
            {
                ppoint.x=i*interval;
                MDrv_GE_DrawBitmap(mainhandle, &ppoint, &bmpfmt);
                CopyFB.x=draw_w_1-i*interval;
                CopyFB.width=i*interval;
                PasteFB.width=i*interval;
                msAPI_OSD_CopyRegion(&CopyFB, &PasteFB);
            }
            osd_status=OSD_SUB_SUB_MAIN;
            break;
         }
        case OSD_SUB_SUB_MAIN:
        {
            //The reverse action of above action
            //parameter settings of mainmenu pic
            draw_w = BitmapTable.width;
            ppoint.y=0;
            bmpfmt.bScale=false;
            //parameter settings of sub-mainmenu pic
            CopyFB.fbID=u8FbID1;
            PasteFB.fbID=u8FbID;
            CopyFB.y=0;
            PasteFB.y=0;
            PasteFB.x=0;
            CopyFB.height=BitmapTable1.height;
            PasteFB.height=BitmapTable1.height;
            draw_w_1=BitmapTable1.width;

            for (j=1;j<=(draw_w_1)/interval-1;j+=1)
            {
                CopyFB.x=j*interval;
                CopyFB.width=draw_w_1-j*interval;
                PasteFB.width=draw_w_1-j*interval;
                msAPI_OSD_CopyRegion(&CopyFB, &PasteFB);
                if (j==(draw_w_1)/interval-1)
                {
                    j=(draw_w_1)/interval;
                }
                ppoint.x=draw_w-j*interval;
                MD

⌨️ 快捷键说明

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