遮罩

//

//  CCDGHelper.cpp

//  quickcocos2dx

//

//  Created by lcomplete on 14-9-23.

//  Copyright (c) 2014 qeeplay.com. All rights reserved.

//


#include "CCDGHelper.h"

#include "cocos2d.h"



using namespace std;

USING_NS_CC;


CCDGHelper::CCDGHelper(){

    

}


CCDGHelper::~CCDGHelper(){

    

}


CCTexture2D* CCDGHelper::createWithdImg(const char* maskFileName,const char* srcFileName)

{

    CCImage *jpgImage = new CCImage();

    jpgImage->retain();

    jpgImage -> initWithImageFile(srcFileName,CCImage::kFmtJpg);

    unsigned char *jpgData = jpgImage -> getData();

    

    CCImage *pngImage = new CCImage();

    pngImage->retain();

    pngImage -> initWithImageFile(maskFileName,CCImage::kFmtJpg);

    unsigned char *pngData = pngImage->getData();

    

    int len = jpgImage->getDataLen();

    int width = jpgImage->getWidth();

    int height = jpgImage->getHeight();

    

    unsigned char *outPic = new unsigned char[len * 4];

    unsigned char dest;

    int outIndex = 0;

    int srcIndex = 0;

    int maskIndex=0;

    int count=0;

    int maskCount=0;

    if(jpgImage->hasAlpha()==false){

        count=3;

    }else

    {

        count=4;

    }

    

    if(pngImage->hasAlpha()==false){

        maskCount=3;

    }else

    {

        maskCount=4;

    }

    

    

    for(int i = 0; i < len; i++)

    {

        dest =pngData[maskIndex];//得到第一个(JPG 三个都一样,所以只要取第一个就行)

        

        outPic[outIndex] = jpgData[srcIndex];

        outPic[outIndex + 1] = jpgData[srcIndex + 1];

        outPic[outIndex + 2] = jpgData[srcIndex+2];

        outPic[outIndex + 3] = dest;

        srcIndex +=count;

        maskIndex+=maskCount;

        outIndex += 4;

    }


    

    CCTexture2D *texture = new CCTexture2D();

    texture->initWithData(outPic,kCCTexture2DPixelFormat_RGBA8888,width,height,CCSizeMake((float)width, (float)height));

    

    delete[] outPic;

    jpgImage->release();

    pngImage->release();

    CC_SAFE_DELETE(jpgImage);

    CC_SAFE_DELETE(pngImage);

    

    texture->autorelease();

    return texture;

}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值