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

📄 gdi.c

📁 ct952 source code use for Digital Frame Photo
💻 C
📖 第 1 页 / 共 5 页
字号:
void GDI_FillArc_BottomLeft(BYTE bRegionId, PARM_ARC *pParm){    PARM_RECT rect;    DWORD i, dwIndex;    BYTE bShading=0;    rect.bColor = pParm->bColor;    dwIndex = 0;    if (bRegionId & GDI_SHADING_OPERATION)    {        bRegionId = bRegionId -GDI_SHADING_OPERATION;        bShading = 1;    }    for (i=0; i<pParm->bArc; i++)    {        rect.rect.wTop = rect.rect.wBottom = pParm->wY+i;        rect.rect.wLeft = pParm->wX+ _ArcOffsetPtr[i]; //aArc_15[i];        rect.rect.wRight = pParm->wX+pParm->bArc-1;        if (bShading)        {            rect.bColor = pParm->bShadePtr[dwIndex];        }        GDI_FillRect(bRegionId, &rect);        if (dwIndex <  pParm->bColor-1)        {                dwIndex++;        }    }}void GDI_FillArc_BottomRight(BYTE bRegionId, PARM_ARC *pParm){    PARM_RECT rect;    DWORD i, dwIndex;    BYTE bShading=0;    rect.bColor = pParm->bColor;    dwIndex = 0;    if (bRegionId & GDI_SHADING_OPERATION)    {        bRegionId = bRegionId -GDI_SHADING_OPERATION;        bShading = 1;    }    for (i=0; i<pParm->bArc; i++)    {        rect.rect.wTop = rect.rect.wBottom = pParm->wY+i;        rect.rect.wLeft = pParm->wX;        rect.rect.wRight = pParm->wX+pParm->bArc-1-_ArcOffsetPtr[i];        if (bShading)        {            rect.bColor = pParm->bShadePtr[dwIndex];        }        GDI_FillRect(bRegionId, &rect);        if (dwIndex <  pParm->bColor-1)        {                dwIndex++;        }    }}void GDI_FillArc_TopLeft(BYTE bRegionId, PARM_ARC *pParm){    PARM_RECT rect;    DWORD i, dwArc, dwIndex;    BYTE bShading=0;    dwArc = pParm->bArc;    rect.bColor = pParm->bColor;    dwIndex = 0;    if (bRegionId & GDI_SHADING_OPERATION)    {        bRegionId = bRegionId -GDI_SHADING_OPERATION;        bShading = 1;    }    //printf("GDI_FillArc_TopLeft\n");    for (i=0; i<dwArc; i++)    {        rect.rect.wTop = rect.rect.wBottom = pParm->wY+i;        rect.rect.wLeft = pParm->wX+_ArcOffsetPtr[dwArc-i-1];        rect.rect.wRight = pParm->wX+dwArc-1;        if (bShading)        {            rect.bColor = pParm->bShadePtr[dwIndex];        }        GDI_FillRect(bRegionId, &rect);        if (dwIndex <  pParm->bColor-1)        {                dwIndex++;        }        //printf("x = %d, y = %d\n", rect.rect.wLeft, rect.rect.wTop);    }}void GDI_FillArc_TopRight(BYTE bRegionId, PARM_ARC *pParm){    PARM_RECT rect;    DWORD i, dwArc, dwIndex;    BYTE bShading=0;    dwArc = pParm->bArc;    rect.bColor = pParm->bColor;    dwIndex = 0;    if (bRegionId & GDI_SHADING_OPERATION)    {        bRegionId = bRegionId -GDI_SHADING_OPERATION;        bShading = 1;    }    for (i=0; i<dwArc; i++)    {        rect.rect.wTop = rect.rect.wBottom = pParm->wY+i;        rect.rect.wLeft = pParm->wX;        rect.rect.wRight = pParm->wX+dwArc-1-_ArcOffsetPtr[dwArc-i-1];        if (bShading)        {            rect.bColor = pParm->bShadePtr[dwIndex];        }        GDI_FillRect(bRegionId, &rect);        if (dwIndex <  pParm->bColor-1)        {                dwIndex++;        }        //printf("x = %d, y = %d\n", rect.rect.wRight, rect.rect.wTop);    }}BYTE *  _GDI_SetArcPointer(BYTE bArc){    BYTE *ptr;    if (bArc & GDI_SHADING_OPERATION)    {        bArc = bArc -GDI_SHADING_OPERATION; // remove the shading bit    }    switch (bArc)    {        case 13:            ptr = _aArc_13;            break;        case 15:            ptr = _aArc_15;            break;        case 17:            ptr = _aArc_17;            break;        case 19:            ptr = _aArc_19;            break;        case 21:            ptr = _aArc_21;            break;        case 23:            ptr = _aArc_23;            break;        case 25:            ptr = _aArc_25;            break;        default:            ptr = _aArc_15;#ifndef GDI_NO_PRINTF            printf("Incorrect Arc size\n");#endif    }    return ptr;}//  *********************************************************************//  Function    :   GDI_FillRoundRect//  Description :   This function fills a round  rectangle//  Arguments     :   bRegionId: the region ID//                      :   bArc : the arc size: can be one of the value 13, 15, 17 1,9, 21, 23, 25//                      :  pParm points to the PARM_RECT//  Return      :   none//  Side Effect ://  Note        ://  *********************************************************************void GDI_FillRoundRect(BYTE bRegionId, BYTE bArc, PARM_RECT *pParm){    PARM_ARC parmArc;    PARM_RECT parmRect;    BYTE *bPtr;    // set arc data pointer    _ArcOffsetPtr =_GDI_SetArcPointer(bArc);    bPtr = pParm->bShadePtr;    // fill top-left arc    parmArc.bArc = bArc;    parmArc.bColor = pParm->bColor;    parmArc.wX = pParm->rect.wLeft;    parmArc.wY = pParm->rect.wTop;    parmArc.bShadePtr = bPtr;    GDI_FillArc_TopLeft(bRegionId, &parmArc);    // fill top rect    parmRect.bColor = pParm->bColor;    parmRect.rect.wLeft = pParm->rect.wLeft + bArc;    parmRect.rect.wTop = pParm->rect.wTop;    parmRect.rect.wRight = pParm->rect.wRight - bArc;    parmRect.rect.wBottom = pParm->rect.wTop + bArc - 1;    parmRect.bShadePtr =bPtr;    GDI_FillRect(bRegionId, &parmRect);    // fill top-right arc    //parmArc.bArc = bArc;    //parmArc.bColor = pParm->bColor;    parmArc.wX = parmRect.rect.wRight + 1;    //parmArc.wY = pParm->rect.wTop;    GDI_FillArc_TopRight(bRegionId, &parmArc);    bPtr +=bArc;    // fill center rect    //pamRect.bColor = pParm->bColor;    parmRect.rect.wLeft = pParm->rect.wLeft;    parmRect.rect.wTop = parmRect.rect.wBottom + 1;    parmRect.rect.wRight = pParm->rect.wRight;    parmRect.rect.wBottom = pParm->rect.wBottom - bArc;    parmRect.bShadePtr =bPtr;    GDI_FillRect(bRegionId, &parmRect);    bPtr += (parmRect.rect.wBottom - parmRect.rect.wTop + 1);    // fill bottom-left arc    //parmArc.bArc = bArc;    //parmArc.bColor = pParm->bColor;    parmArc.wX = pParm->rect.wLeft;    parmArc.wY = parmRect.rect.wBottom + 1;    parmArc.bShadePtr = bPtr;    GDI_FillArc_BottomLeft(bRegionId, &parmArc);    // fill bottom rect    //pamRect.bColor = pParm->bColor;    parmRect.rect.wLeft = pParm->rect.wLeft + bArc;    parmRect.rect.wTop = parmArc.wY;    parmRect.rect.wRight = pParm->rect.wRight - bArc;    parmRect.rect.wBottom = pParm->rect.wBottom;    parmRect.bShadePtr =bPtr;    GDI_FillRect(bRegionId, &parmRect);    // fill bottom-right arc    //parmArc.bArc = bArc;    //parmArc.bColor = pParm->bColor;    parmArc.wX = parmRect.rect.wRight + 1;    //parmArc.wY = pParm->rect.wTop;    GDI_FillArc_BottomRight(bRegionId, &parmArc);}//  *********************************************************************//  Function    :   GDI_FillRoundRectTop//  Description :   This function fills a rectangle with top round corner//  Arguments     :   bRegionId: the region ID//                      :   bArc : the arc size: can be one of the value 13, 15, 17 1,9, 21, 23, 25//                      :  pParm points to the PARM_RECT//  Return      :   none//  Side Effect ://  Note        ://  *********************************************************************void GDI_FillRoundRectTop(BYTE bRegionId, BYTE bArc, PARM_RECT *pParm){    PARM_ARC parmArc;    PARM_RECT parmRect;    // set arc data pointer    _ArcOffsetPtr = _GDI_SetArcPointer(bArc);    // fill top-left arc    parmArc.bArc = bArc;    parmArc.bColor = pParm->bColor;    parmArc.wX = pParm->rect.wLeft;    parmArc.wY = pParm->rect.wTop;    parmArc.bShadePtr = pParm->bShadePtr;    GDI_FillArc_TopLeft(bRegionId, &parmArc);    // fill top rect    parmRect.bColor = pParm->bColor;    parmRect.rect.wLeft = pParm->rect.wLeft + bArc;    parmRect.rect.wTop = pParm->rect.wTop;    parmRect.rect.wRight = pParm->rect.wRight - bArc;    parmRect.rect.wBottom = pParm->rect.wTop + bArc - 1;    parmRect.bShadePtr = pParm->bShadePtr;    GDI_FillRect(bRegionId, &parmRect);    // fill top-right arc    //parmArc.bArc = bArc;    //parmArc.bColor = pParm->bColor;    parmArc.wX = parmRect.rect.wRight + 1;    //parmArc.wY = pParm->rect.wTop;    GDI_FillArc_TopRight(bRegionId, &parmArc);    // fill center rect    if (bRegionId & GDI_SHADING_OPERATION)    {        if (parmRect.bColor > bArc)        {                parmRect.bColor -= bArc;        }    }    parmRect.rect.wLeft = pParm->rect.wLeft;    parmRect.rect.wTop = parmRect.rect.wBottom + 1;    parmRect.rect.wRight = pParm->rect.wRight;    parmRect.rect.wBottom = pParm->rect.wBottom;    parmRect.bShadePtr = pParm->bShadePtr + bArc;    GDI_FillRect(bRegionId, &parmRect);}//  *********************************************************************//  Function    :   GDI_FillRoundRectBottom//  Description :   This function fills a rectangle with bottom round corner//  Arguments     :   bRegionId: the region ID//                      :   bArc : the arc size: can be one of the value 13, 15, 17 1,9, 21, 23, 25//                      :  pParm points to the PARM_RECT//  Return      :   none//  Side Effect ://  Note        ://  *********************************************************************void GDI_FillRoundRectBottom(BYTE bRegionId, BYTE bArc,  PARM_RECT *pParm){    PARM_ARC parmArc;    PARM_RECT parmRect;    DWORD dwInc=0;    // set arc data pointer    _ArcOffsetPtr = _GDI_SetArcPointer(bArc);    // fill center rect    parmRect.bColor = pParm->bColor;    parmRect.rect.wLeft = pParm->rect.wLeft;    parmRect.rect.wTop = pParm->rect.wTop;    parmRect.rect.wRight = pParm->rect.wRight;    parmRect.rect.wBottom = pParm->rect.wBottom - bArc;    parmRect.bShadePtr = pParm->bShadePtr;    GDI_FillRect(bRegionId, &parmRect);    if (bRegionId & GDI_SHADING_OPERATION)    {        dwInc = (parmRect.rect.wBottom - parmRect.rect.wTop +1);        if (parmRect.bColor > dwInc)        {                parmRect.bColor -= dwInc;                parmArc.bColor = parmRect.bColor;        }        else        {            dwInc = parmRect.bColor-1;            parmRect.bColor = 1;            parmArc.bColor = parmRect.bColor;        }    }    else    {        parmArc.bColor = pParm->bColor;    }    // fill bottom-left arc    parmArc.bArc = bArc;    //parmArc.bColor = pParm->bColor;    parmArc.wX = pParm->rect.wLeft;    parmArc.wY = parmRect.rect.wBottom + 1;    parmArc.bShadePtr = pParm->bShadePtr + dwInc;    GDI_FillArc_BottomLeft(bRegionId, &parmArc);    // fill bottom rect    //pamRect.bColor = pParm->bColor;    parmRect.rect.wLeft = pParm->rect.wLeft + bArc;    parmRect.rect.wTop = parmArc.wY;    parmRect.rect.wRight = pParm->rect.wRight - bArc;    parmRect.rect.wBottom = pParm->rect.wBottom;    parmRect.bShadePtr = parmArc.bShadePtr;    GDI_FillRect(bRegionId, &parmRect);    // fill bottom-right arc    //parmArc.bArc = bArc;    //parmArc.bColor = pParm->bColor;    parmArc.wX = parmRect.rect.wRight + 1;    //parmArc.wY = pParm->rect.wTop;    GDI_FillArc_BottomRight(bRegionId, &parmArc);}//  *********************************************************************//  Function    :   GDI_FillRoundRectBottom//  Description :   This function draws a round rectangle//  Arguments     :   bRegionId: the region ID//                      :   bArcStart / bArcEnd : the arc size: can be one of the value 13, 15, 17 1,9, 21, 23, 25//                      :   bArcStart must > bArcEnd//                      :  pParm points to the PARM_RECT//  Return      :   none//  Side Effect ://  Note        ://  *********************************************************************void GDI_DrawRoundRect(BYTE bRegionId, BYTE bArcStart, BYTE bArcEnd, PARM_RECT *pParm){    PARM_RECT rect;    BYTE *pbArcStart, *pbArcEnd;    DWORD i, dwRightArcStart, dwGap;    // set arc data pointer    pbArcStart = _GDI_SetArcPointer(bArcStart);    pbArcEnd = _GDI_SetArcPointer(bArcEnd);    dwRightArcStart = pParm->rect.wRight - pParm->rect.wLeft + 1 - bArcStart;    dwGap = bArcStart - bArcEnd;    rect.bColor = pParm->bColor;    for (i= 0; i<=bArcStart - bArcEnd-1; i++)    {

⌨️ 快捷键说明

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