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

📄 apiosdrender.c

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