//
// 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;
}