亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? cpi_image.c

?? < VC++視頻音頻開發(fā)>> 這本書的源碼
?? C
字號:

#include "stdafx.h"
#include "globals.h"
#include "CompositeFile.h"


//
CPs_Image* CPIG_CreateImage_FromFile(const char* pcFilename)
{
    HBITMAP hbmLoad;
    BITMAP bmLoad;
    CPs_Image* pNewImage;
    char cFilename[MAX_PATH];

    strcpy(cFilename, "P:\\Skin\\");
    strcat(cFilename, pcFilename);

    hbmLoad = LoadImage(NULL, cFilename, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
    if(!hbmLoad)
        return NULL;

    GetObject(hbmLoad, sizeof(bmLoad), &bmLoad);

    pNewImage = (CPs_Image*)malloc(sizeof(CPs_Image));
    pNewImage->m_hbmImage = hbmLoad;
    pNewImage->m_szSize.cx = bmLoad.bmWidth;
    pNewImage->m_szSize.cy = bmLoad.bmHeight;
    return pNewImage;
}
//
//
//
CPs_Image* CPIG_CreateImage_FromSubFile(CP_COMPOSITEFILE hmComposite, const char* pcSubFilename)
{
    void* pFileData;
    unsigned int iLength;
    BOOL bSucceeded;
    HBITMAP hbmLoad;
    SIZE szBitmap;
    CPs_Image* pNewImage;

    bSucceeded = CF_GetSubFile(hmComposite, pcSubFilename, &pFileData, &iLength);
    if(!bSucceeded)
        return NULL;

    {
        BITMAPFILEHEADER* pFileHeader = (BITMAPFILEHEADER*)pFileData;
        BITMAPINFO* pBitmapInfo;
        void* pBitmapBytes;
        HDC dcDisplay, dcDraw;

        if(pFileHeader->bfType != 0x4D42)
        {
            free(pFileData);
            return NULL;
        }

        pBitmapInfo = (BITMAPINFO*)(((BYTE*)pFileData) + sizeof(BITMAPFILEHEADER));
        pBitmapBytes = ((BYTE*)pFileData) + pFileHeader->bfOffBits;

        dcDisplay = GetDC(NULL);
        szBitmap.cx = pBitmapInfo->bmiHeader.biWidth;
        szBitmap.cy = pBitmapInfo->bmiHeader.biHeight;
        hbmLoad = CreateCompatibleBitmap(dcDisplay, szBitmap.cx, szBitmap.cy);
        dcDraw = CreateCompatibleDC(dcDisplay);
        ReleaseDC(NULL, dcDisplay);

        SetDIBits(dcDraw, hbmLoad, 0, pBitmapInfo->bmiHeader.biHeight,
                  pBitmapBytes, pBitmapInfo, DIB_RGB_COLORS);

        DeleteDC(dcDraw);
    }
    free(pFileData);

    pNewImage = (CPs_Image*)malloc(sizeof(CPs_Image));
    pNewImage->m_hbmImage = hbmLoad;
    pNewImage->m_szSize = szBitmap;
    return pNewImage;
}
//

CPs_Image* CPIG_CreateImage_FromResource(const UINT uiResourceID)
{
    HBITMAP hbmLoad;
    BITMAP bmLoad;
    CPs_Image* pNewImage;

    hbmLoad = LoadBitmap(GetModuleHandle(NULL), MAKEINTRESOURCE(uiResourceID));
    if(!hbmLoad)
        return NULL;

    GetObject(hbmLoad, sizeof(bmLoad), &bmLoad);

    pNewImage = (CPs_Image*)malloc(sizeof(CPs_Image));
    pNewImage->m_hbmImage = hbmLoad;
    pNewImage->m_szSize.cx = bmLoad.bmWidth;
    pNewImage->m_szSize.cy = bmLoad.bmHeight;
    return pNewImage;
}
//
//
//
CPs_Image_WithState* CPIG_CreateStateImage(CPs_Image* pSource, const int iNumStates)
{
    CPs_Image_WithState* pNewIS;
    int iStateIDX;

    CP_ASSERT( (iNumStates-1) <= igsLast);

    pNewIS = (CPs_Image_WithState*)malloc(sizeof(*pNewIS));
    pNewIS->m_pImage = pSource;
    pNewIS->m_iStateHeight = pSource->m_szSize.cy / iNumStates;
    memset(pNewIS->m_ptSource, 0, sizeof(pNewIS->m_ptSource));
    for(iStateIDX = 0; iStateIDX < iNumStates; iStateIDX++)
    {
        pNewIS->m_ptSource[iStateIDX].x = 0;
        pNewIS->m_ptSource[iStateIDX].y = iStateIDX * pNewIS->m_iStateHeight;
    }

    return pNewIS;
}
//
//
//
void CPIG_DestroyImage(CPs_Image* pImage)
{
    if(!pImage)
        return;

    CP_ASSERT(pImage->m_hbmImage);
    DeleteObject(pImage->m_hbmImage);
    free(pImage);
}
//
//
//
void CPIG_DestroyImage_WithState(CPs_Image_WithState* pImageWithState)
{
    if(!pImageWithState)
        return;

    CP_ASSERT(pImageWithState->m_pImage);

    CPIG_DestroyImage(pImageWithState->m_pImage);
    free(pImageWithState);
}
//
//
//
void CPIG_DrawStateImage(CPs_DrawContext* pDC, const int iX, const int iY, CPs_Image_WithState* pSource, const CPe_ImageState enState)
{
    HDC dcCompat;
    HBITMAP bmOld;
    CP_CHECKOBJECT(pSource);

    dcCompat = CreateCompatibleDC(pDC->m_dcDraw);
    bmOld = (HBITMAP)SelectObject(dcCompat, pSource->m_pImage->m_hbmImage);
    SetBkColor(dcCompat, glb_pSkin->m_clrTransparent);
    BitBlt(pDC->m_dcDraw, iX + pDC->m_ptOffset.x, iY + pDC->m_ptOffset.y, pSource->m_pImage->m_szSize.cx, pSource->m_iStateHeight,
           dcCompat, pSource->m_ptSource[enState].x, pSource->m_ptSource[enState].y, SRCCOPY);
    SelectObject(dcCompat, bmOld);
    DeleteDC(dcCompat);
}
//
//
//
void CPIG_DrawImage(CPs_DrawContext* pDC, const int iX, const int iY, CPs_Image* pSource)
{
    HDC dcCompat;
    HBITMAP bmOld;
    CP_CHECKOBJECT(pSource);

    dcCompat = CreateCompatibleDC(pDC->m_dcDraw);
    bmOld = (HBITMAP)SelectObject(dcCompat, pSource->m_hbmImage);
    SetBkColor(dcCompat, glb_pSkin->m_clrTransparent);
    BitBlt(pDC->m_dcDraw, iX + pDC->m_ptOffset.x, iY + pDC->m_ptOffset.y, pSource->m_szSize.cx, pSource->m_szSize.cy, dcCompat, 0, 0, SRCCOPY);
    SelectObject(dcCompat, bmOld);
    DeleteDC(dcCompat);
}
//
//
//
void CPIG_TiledFill(CPs_DrawContext* pDC, const RECT* _prTarget, const RECT* prSourceRect, CPs_Image* pSourceImage, const DWORD dwOptions)
{
    HDC dcCompat;
    HBITMAP bmOld;
    RECT rSourceBorders;
    RECT rTarget;
    RECT rLocalClip;
    CP_CHECKOBJECT(pSourceImage);

    if(_prTarget->right < pDC->m_rClip.left
            || _prTarget->bottom < pDC->m_rClip.top
            || _prTarget->left > pDC->m_rClip.right
            || _prTarget->top > pDC->m_rClip.bottom)
    {
        return;
    }

    rTarget = *_prTarget;
    OffsetRect(&rTarget, pDC->m_ptOffset.x, pDC->m_ptOffset.y);
    rLocalClip = pDC->m_rClip;
    OffsetRect(&rLocalClip, pDC->m_ptOffset.x, pDC->m_ptOffset.y);

    dcCompat = CreateCompatibleDC(pDC->m_dcDraw);
    bmOld = (HBITMAP)SelectObject(dcCompat, pSourceImage->m_hbmImage);
    SetBkColor(dcCompat, glb_pSkin->m_clrTransparent);

    rSourceBorders.left = prSourceRect->left;
    rSourceBorders.right = pSourceImage->m_szSize.cx - prSourceRect->right;
    rSourceBorders.top = prSourceRect->top;
    rSourceBorders.bottom = pSourceImage->m_szSize.cy - prSourceRect->bottom;

    if(rSourceBorders.top > 0
            && ((rTarget.top+rSourceBorders.top) >= rLocalClip.top && rTarget.top <= rLocalClip.bottom))
    {
        BitBlt(pDC->m_dcDraw, rTarget.left, rTarget.top, rSourceBorders.left, rSourceBorders.top, dcCompat, 0, 0, SRCCOPY);
        BitBlt(pDC->m_dcDraw, rTarget.right - rSourceBorders.right, rTarget.top,
               rSourceBorders.right, rSourceBorders.top,
               dcCompat, prSourceRect->right, 0, SRCCOPY);

        if(prSourceRect->left < prSourceRect->right)
        {
            int iSourceCursorPos;
            int iTileWidth;
            int iEndCol;

            iSourceCursorPos = rSourceBorders.left + rTarget.left;
            iEndCol = rTarget.right-rSourceBorders.right;
            while(iSourceCursorPos < iEndCol)
            {
                iTileWidth = (prSourceRect->right - prSourceRect->left);
                if( (iSourceCursorPos + iTileWidth) > iEndCol)
                    iTileWidth = iEndCol - iSourceCursorPos;

                BitBlt(pDC->m_dcDraw, iSourceCursorPos, rTarget.top,
                       iTileWidth, rSourceBorders.top,
                       dcCompat, prSourceRect->left, 0, SRCCOPY);

                iSourceCursorPos += iTileWidth;
            }
        }
    }

    if(rSourceBorders.bottom > 0
            && (rTarget.bottom >= rLocalClip.top && (rTarget.bottom-rSourceBorders.bottom) <= rLocalClip.bottom) )
    {
        BitBlt(pDC->m_dcDraw, rTarget.left, rTarget.bottom - rSourceBorders.bottom,
               rSourceBorders.left, rSourceBorders.bottom, dcCompat, 0, prSourceRect->bottom, SRCCOPY);
        BitBlt(pDC->m_dcDraw, rTarget.right - rSourceBorders.right, rTarget.bottom - rSourceBorders.bottom,
               rSourceBorders.right, rSourceBorders.bottom,
               dcCompat, prSourceRect->right, prSourceRect->bottom, SRCCOPY);

        if(prSourceRect->left < prSourceRect->right)
        {
            int iSourceCursorPos;
            int iTileWidth;
            int iEndCol;

            iSourceCursorPos = rSourceBorders.left + rTarget.left;
            iEndCol = rTarget.right-rSourceBorders.right;
            while(iSourceCursorPos < iEndCol)
            {
                iTileWidth = (prSourceRect->right - prSourceRect->left);
                if( (iSourceCursorPos + iTileWidth) > iEndCol)
                    iTileWidth = iEndCol - iSourceCursorPos;

                BitBlt(pDC->m_dcDraw, iSourceCursorPos, rTarget.bottom - rSourceBorders.bottom,
                       iTileWidth, rSourceBorders.bottom,
                       dcCompat, prSourceRect->left, prSourceRect->bottom, SRCCOPY);

                iSourceCursorPos += iTileWidth;
            }
        }
    }

    if(prSourceRect->top < prSourceRect->bottom
            && prSourceRect->bottom > prSourceRect->top)
    {
        int iSourceCursorPos_Y;
        int iTileHeight;
        int iEndRow;
        iSourceCursorPos_Y = rSourceBorders.top + rTarget.top;
        iEndRow = rTarget.bottom-rSourceBorders.bottom;
        while(iSourceCursorPos_Y < iEndRow)
        {
            iTileHeight = (prSourceRect->bottom - prSourceRect->top);
            if( (iSourceCursorPos_Y + iTileHeight) > iEndRow)
                iTileHeight = iEndRow - iSourceCursorPos_Y;

            if((iSourceCursorPos_Y+iTileHeight) >= rLocalClip.top && iSourceCursorPos_Y <= rLocalClip.bottom)
            {
                BitBlt(pDC->m_dcDraw, rTarget.left, iSourceCursorPos_Y, rSourceBorders.left, iTileHeight, dcCompat, 0, rSourceBorders.top, SRCCOPY);
                BitBlt(pDC->m_dcDraw, rTarget.right - rSourceBorders.right, iSourceCursorPos_Y,
                       rSourceBorders.right, iTileHeight,
                       dcCompat, prSourceRect->right, rSourceBorders.top, SRCCOPY);

                if(prSourceRect->left < prSourceRect->right
                        && (dwOptions & CIC_TILEDFILOPTIONS_NOCENTRE) == 0)
                {
                    int iSourceCursorPos;
                    int iTileWidth;
                    int iEndCol;

                    iSourceCursorPos = rSourceBorders.left + rTarget.left;
                    iEndCol = rTarget.right-rSourceBorders.right;
                    while(iSourceCursorPos < iEndCol)
                    {
                        iTileWidth = (prSourceRect->right - prSourceRect->left);
                        if( (iSourceCursorPos + iTileWidth) > iEndCol)
                            iTileWidth = iEndCol - iSourceCursorPos;

                        BitBlt(pDC->m_dcDraw, iSourceCursorPos, iSourceCursorPos_Y,
                               iTileWidth, iTileHeight,
                               dcCompat, prSourceRect->left, rSourceBorders.top, SRCCOPY);

                        iSourceCursorPos += iTileWidth;
                    }
                }
            }


            iSourceCursorPos_Y += iTileHeight;
        }
    }

    SelectObject(dcCompat, bmOld);
    DeleteDC(dcCompat);
}
//

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧洲日产国产综合网| 亚洲男人电影天堂| 亚洲欧洲韩国日本视频| 日本vs亚洲vs韩国一区三区二区| 国产99精品国产| 欧美大尺度电影在线| 国产精品系列在线| 韩国成人福利片在线播放| 91成人免费在线视频| 国产亚洲精久久久久久| 五月婷婷激情综合| 99久久99久久精品免费观看 | 99视频国产精品| 久久综合色8888| 日韩中文字幕区一区有砖一区 | 懂色av一区二区三区免费观看 | 欧美精品丝袜中出| 亚洲人成在线观看一区二区| 国产福利一区二区三区| 日韩免费视频线观看| 日韩精品亚洲专区| 欧美视频在线一区二区三区| 成人欧美一区二区三区1314| 国产sm精品调教视频网站| 欧美成人欧美edvon| 午夜影院久久久| 欧美日韩成人激情| 天天影视涩香欲综合网| 在线中文字幕一区| 有码一区二区三区| 972aa.com艺术欧美| 一区视频在线播放| 91丨porny丨首页| 欧美国产综合一区二区| 国产成人精品影院| 日本一二三不卡| 91在线看国产| 一区二区三区四区乱视频| 色综合天天综合网天天狠天天| 中文字幕在线观看不卡| 99久久夜色精品国产网站| 亚洲欧洲精品成人久久奇米网| av一本久道久久综合久久鬼色| 亚洲特级片在线| 色综合久久天天| 亚洲一区精品在线| 日韩一区二区三区在线观看| 狠狠狠色丁香婷婷综合激情| 中文成人综合网| 99v久久综合狠狠综合久久| 一区二区三区**美女毛片| 欧美精选午夜久久久乱码6080| 麻豆久久久久久久| 久久精品一级爱片| 色综合色综合色综合色综合色综合 | 成人激情免费网站| 亚洲韩国精品一区| 91精品国产品国语在线不卡| 国产精品亚洲成人| 日韩伦理电影网| 欧美一区二区三区在线电影| 国产精品一区三区| 亚洲精品欧美综合四区| 欧美一级在线视频| av色综合久久天堂av综合| 亚洲第一激情av| 国产亚洲综合性久久久影院| 色婷婷av一区二区三区软件| 久久精品国产一区二区三| 国产精品九色蝌蚪自拍| 欧美一级二级三级乱码| 99精品视频在线观看免费| 日韩av网站在线观看| 欧美国产精品久久| 欧美日韩国产经典色站一区二区三区| 狠狠色狠狠色综合日日91app| 亚洲日本在线天堂| 精品国产一区二区三区不卡| 色婷婷亚洲婷婷| 国产精品亚洲视频| 婷婷成人激情在线网| 亚洲视频一区在线观看| 日韩美一区二区三区| 欧美性一区二区| jiyouzz国产精品久久| 国内不卡的二区三区中文字幕| 亚洲一区二区av在线| 国产精品乱码久久久久久| 欧美zozozo| 欧美精品 日韩| 91亚洲资源网| 成人教育av在线| 国产成人亚洲综合a∨猫咪| 欧美aⅴ一区二区三区视频| 亚洲六月丁香色婷婷综合久久 | 亚洲国产aⅴ天堂久久| 欧美经典一区二区| 亚洲精品一区在线观看| 91精品国产乱码久久蜜臀| 在线区一区二视频| 97精品视频在线观看自产线路二| 国产成a人亚洲精品| 国产麻豆成人精品| 九九精品一区二区| 麻豆一区二区三区| 另类成人小视频在线| 天天色天天操综合| 亚洲高清在线精品| 一区二区三区av电影| 亚洲猫色日本管| 亚洲视频在线一区二区| 亚洲国产精品成人综合色在线婷婷 | 日韩精品一区二区三区四区视频| 欧美精品在线一区二区三区| 欧美精品tushy高清| 777久久久精品| 91.成人天堂一区| 欧美一级片免费看| 日韩一级黄色大片| 精品国产制服丝袜高跟| 日韩欧美高清在线| 精品卡一卡二卡三卡四在线| 精品久久久久久久人人人人传媒| 日韩欧美国产精品| 2020国产精品自拍| 久久久久亚洲综合| 中文字幕一区二| 首页亚洲欧美制服丝腿| 日韩 欧美一区二区三区| 久久99久久99小草精品免视看| 国产美女视频一区| 成人av在线观| 91成人网在线| 欧美一区二区成人6969| 久久一夜天堂av一区二区三区| 中文字幕不卡三区| 亚洲一区二三区| 美腿丝袜亚洲一区| 成人丝袜18视频在线观看| 色综合中文字幕| 欧美一三区三区四区免费在线看| 精品理论电影在线| 136国产福利精品导航| 肉肉av福利一精品导航| 国产乱人伦精品一区二区在线观看| 国产不卡免费视频| 欧美日韩亚洲国产综合| 欧美精品一区二区三区四区| 亚洲欧洲日本在线| 麻豆精品视频在线| 色综合久久中文字幕| 欧美成人乱码一区二区三区| 中文字幕亚洲一区二区av在线 | 日韩一区二区三区免费看| 国产精品―色哟哟| 午夜国产精品一区| www.亚洲在线| 欧美xxx久久| 亚洲第一av色| 成人一区二区三区| 欧美一区二区精美| 亚洲色图欧洲色图婷婷| 国产在线播放一区三区四| 欧美性videosxxxxx| 中文字幕国产精品一区二区| 捆绑紧缚一区二区三区视频| 91久久香蕉国产日韩欧美9色| 精品少妇一区二区三区日产乱码 | 亚洲色图在线播放| 极品美女销魂一区二区三区免费| 色国产综合视频| 国产欧美一区二区三区沐欲| 婷婷国产在线综合| 色婷婷av一区二区| 国产婷婷色一区二区三区在线| 日韩黄色免费电影| 日本丰满少妇一区二区三区| 国产三级一区二区| 久久99精品久久久久久久久久久久 | 日韩专区中文字幕一区二区| 色综合天天综合给合国产| 国产日韩欧美综合在线| 另类调教123区| 欧美一卡在线观看| 日韩综合一区二区| 精品国产一区二区三区久久久蜜月| 一区二区三区美女视频| eeuss国产一区二区三区| 久久久国产精华| 狠狠色综合播放一区二区| 日韩美女主播在线视频一区二区三区| 亚洲午夜三级在线| 欧美一a一片一级一片| 亚洲美女一区二区三区| 色香蕉久久蜜桃| 亚洲男人天堂一区| 91精彩视频在线| 亚洲黄网站在线观看| 欧美私模裸体表演在线观看| 亚洲bt欧美bt精品|