Пример #1
0
// on "init" you need to initialize your instance
bool HelloWorld::init()
{
    //////////////////////////////
    // 1. super init first
    if ( !CCLayer::init() )
    {
        return false;
    }
    
    this->setTouchEnabled(true);
    
    CCSize visibleSize = CCDirector::sharedDirector()->getVisibleSize();
    CCPoint origin = CCDirector::sharedDirector()->getVisibleOrigin();

    CCImage *image = new CCImage();
    image->initWithImageFile("example.png");
    
    texture = new CCTexture2DMutable();
    texture->initWithImage(image);
    
    sprite = CCSprite::create();
    sprite->initWithTexture(texture);
    sprite->setPosition(ccp(origin.x + visibleSize.width/2, origin.y + visibleSize.height/2));
    this->addChild(sprite);
    
    CCLabelTTF *label = CCLabelTTF::create("", "Verdana-BoldItalic", 15);
    label->setColor(ccWHITE);
    label->setTag(1);
    label->setPosition(ccp(origin.x + visibleSize.width/2, origin.y + visibleSize.height/2 - 75));
    label->setString("Touch sprite");
    this->addChild(label);
    
    return true;
}
Пример #2
0
ToyBrick* ToyLayer::CreateBrick_Circle()
{
		int num = CommonHelper::GetRandomNum(1, 30);

		//image && texture
		char path[255];
		sprintf(path, "Images/ToyBrick/Circle/%d.png", num);

		CCImage *img = new CCImage();
		img->autorelease();
		if (!img->initWithImageFile(path, cocos2d::CCImage::kFmtPng))
		{
				return NULL;
		}

		CCTexture2D *texture = new CCTexture2D();
		texture->autorelease();
		if (!texture->initWithImage(img))
		{
				return NULL;
		}

		//
		ToyBrick *brick = ToyBrick::create();
		CCSize size = texture->getContentSize();
		brick->Init(texture, CCRectMake(0, 0, size.width, size.height));
		brick->SetAsCircle(64);

		return brick;
}
Пример #3
0
void VolatileTexture::reloadAllTextures()
{
    isReloading = true;

    CCLOG("reload all texture");
    std::list<VolatileTexture *>::iterator i = textures.begin();

    while( i != textures.end() )
    {
        VolatileTexture *vt = *i++;
        if (vt->m_bIsString)
        {
            vt->texture->initWithString(vt->m_strText.c_str(),
                                        vt->m_size,
                                        vt->m_alignment,
                                        vt->m_strFontName.c_str(),
                                        vt->m_fFontSize);
        }
        else
        {
            CCImage image;
            CCFileData data(vt->m_strFileName.c_str(), "rb");
            unsigned long nSize  = data.getSize();
            unsigned char* pBuffer = data.getBuffer();

            if (image.initWithImageData((void*)pBuffer, nSize, vt->m_FmtImage))
            {
                vt->texture->initWithImage(&image);
            }
        }
    }

    isReloading = false;
}
Пример #4
0
bool CCRenderTexture::saveBuffer(const char *fileName, int format)
{
	bool bRet = false;
	CCAssert(format == kCCImageFormatJPG || format == kCCImageFormatPNG,
			 "the image can only be saved as JPG or PNG format");

	CCImage *pImage = new CCImage();
	if (pImage != NULL && getUIImageFromBuffer(pImage))
	{
		std::string fullpath = CCFileUtils::getWriteablePath() + fileName;
		if (kCCImageFormatPNG == format)
		{
			fullpath += ".png";
		}
		else
		{
			fullpath += ".jpg";
		}
		
		bRet = pImage->saveToFile(fullpath.c_str());
	}

	CC_SAFE_DELETE(pImage);

	return bRet;
}
Пример #5
0
void CCSpriteEx::setTexture(CCTexture2D *texture) {
	// If batchnode, then texture id should be the same
    CCAssert(! m_pobBatchNode || texture->getName() == m_pobBatchNode->getTexture()->getName(), "CCSprite: Batched sprites should use the same texture as the batchnode");
    // accept texture==nil as argument
    CCAssert( !texture || dynamic_cast<CCTexture2D*>(texture), "setTexture expects a CCTexture2D. Invalid argument");
	
    if (NULL == texture)
    {
        // Gets the texture by key firstly.
        texture = CCTextureCache::sharedTextureCache()->textureForKey(CC_2x2_WHITE_IMAGE_KEY);
		
        // If texture wasn't in cache, create it from RAW data.
        if (NULL == texture)
        {
            CCImage* image = new CCImage();
            bool isOK = image->initWithImageData(cc_2x2_white_image, sizeof(cc_2x2_white_image), CCImage::kFmtRawData, 2, 2, 8);
            CCAssert(isOK, "The 2x2 empty texture was created unsuccessfully.");
			
            texture = CCTextureCache::sharedTextureCache()->addUIImage(image, CC_2x2_WHITE_IMAGE_KEY);
            CC_SAFE_RELEASE(image);
        }
    }
	
    if (!m_pobBatchNode && m_pobTexture != texture)
    {
        CC_SAFE_RETAIN(texture);
        CC_SAFE_RELEASE(m_pobTexture);
        m_pobTexture = texture;
		if(m_shouldUpdateBlendFunc)
			updateBlendFunc();
    }
}
Пример #6
0
NS_CC_BEGIN
//
// ParticleFire
//

static CCTexture2D* getDefaultTexture()
{
    CCTexture2D* pTexture = NULL;
    CCImage* pImage = NULL;
    do 
    {
        bool bRet = false;
        const char* key = "__firePngData";
        pTexture = CCTextureCache::sharedTextureCache()->textureForKey(key);
        CC_BREAK_IF(pTexture != NULL);

        pImage = new CCImage();
        CC_BREAK_IF(NULL == pImage);
        bRet = pImage->initWithImageData((void*)__firePngData, sizeof(__firePngData), kFmtPng);
        CC_BREAK_IF(!bRet);

        pTexture = CCTextureCache::sharedTextureCache()->addUIImage(pImage, key);
    } while (0);

    CC_SAFE_RELEASE(pImage);

    return pTexture;
}
Пример #7
0
bool
MCFaceBox::init(const char *aFaceFilepath, const char *aBoxFilepath)
{
    
    do {
        CCImage *aFaceImage = new CCImage;
        CC_BREAK_IF(! aFaceImage);
        CCImage *aBoxImage = new CCImage;
        CC_BREAK_IF(! aBoxImage);
        CCTexture2D *aFaceTexture = new CCTexture2D;
        CC_BREAK_IF(! aFaceTexture);
        CCTexture2D *aBoxTexture = new CCTexture2D;
        CC_BREAK_IF(! aBoxTexture);
        
        CC_BREAK_IF(! aFaceImage->initWithImageFile(aFaceFilepath));
        CC_BREAK_IF(! aBoxImage->initWithImageFile(aBoxFilepath));
        
        CC_BREAK_IF(! aFaceTexture->initWithImage(aFaceImage));
        CC_BREAK_IF(! aBoxTexture->initWithImage(aBoxImage));
        
        return init(aFaceTexture, aBoxTexture);
    } while (0);
    
    return false;
}
NS_CC_BEGIN
    
static CCTexture2D* getDefaultTexture ( KDvoid )
{
    CCTexture2D*  pTexture = KD_NULL;
    do 
    {
        const KDchar*  szKey = "__firePngData";

        pTexture = CCTextureCache::sharedTextureCache ( )->textureForKey ( szKey );
        CC_BREAK_IF ( pTexture != KD_NULL );

        CCImage*  pImage = new CCImage ( );
		if ( pImage && pImage->initWithData ( (KDvoid*) __firePngData, sizeof ( __firePngData ) ) )
		{
			pImage->autorelease ( );
			pTexture = CCTextureCache::sharedTextureCache ( )->addCCImage ( pImage, szKey );
		}
		else
		{
			CC_SAFE_DELETE ( pImage );
		}      
    } while ( 0 );

    return pTexture;
}
Пример #9
0
bool ScreenHelper::AddOBBSpriteToCache(const char *name, const char *plistName)
{
    unsigned long pSize;
    unsigned char * pData = 0;
    
//#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) && !defined KINDLE__
//    std::vector<std::string> paths;
//    paths.push_back("/mnt/sdcard/Android/obb");
//    CCFileUtils::sharedFileUtils()->setSearchPaths(paths);
//#endif
    
#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
    std::string fullPath = CCFileUtils::sharedFileUtils()->fullPathForFilename("main.1.com.LudicrousGames.MonkeyDroid.zip");
    //CCLOG(fullPath.c_str());
    pData = CCFileUtils::sharedFileUtils()->getFileDataFromZip(fullPath.c_str(), name, &pSize);
    //CCLOG("%d",pData);
    if(pData)
    {
        CCImage* img = new CCImage();
        img->initWithImageData(pData, pSize);
        CCTextureCache::sharedTextureCache()->addUIImage(img, CCFileUtils::sharedFileUtils()->fullPathFromRelativeFile(name, plistName));
        CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile(plistName);
        return true;
    }
    return false;
 
#else
    CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile(plistName,name);
#endif
}
Пример #10
0
AnimatedCell::AnimatedCell(int cellX, int cellY, int spacing, const char* pngFileName) {
	this->setSpace(spacing);
	this->setPngFileName(pngFileName);

	animation_ = CCAnimation::create();
	CCImage* image = new CCImage();
	image->initWithImageFile(pngFileName);
	CCTexture2D* texture = new CCTexture2D();
	texture->initWithImage(image);

	oneWidth_ = texture->getPixelsWide() / spacing;
	oneHeight_ = texture->getPixelsHigh();

	for (int i=0; i<spacing; i++) {
		animation_->addSpriteFrameWithTexture(texture, 
			CCRectMake(i*oneWidth_, 0, oneWidth_, oneHeight_));
	}
	CCSpriteFrame* frm = ((CCAnimationFrame*)(animation_->getFrames()->objectAtIndex(0)))->getSpriteFrame();

	this->initWithSpriteFrame(frm);
	animation_->setDelayPerUnit(0.5f);

	animate_ = CCRepeatForever::create(CCAnimate::create(animation_));

	setCell(cellX, cellY);
}
Пример #11
0
static void loadImageData(AsyncStruct *pAsyncStruct)
{
    const char *filename = pAsyncStruct->filename.c_str();

    // compute image type
    CCImage::EImageFormat imageType = computeImageFormatType(pAsyncStruct->filename);
    if (imageType == CCImage::kFmtUnKnown)
    {
        CCLOG("unsupported format %s",filename);
        delete pAsyncStruct;
        return;
    }

    // generate image
    CCImage *pImage = new CCImage();
    if (pImage && !pImage->initWithImageFileThreadSafe(filename, imageType))
    {
        CC_SAFE_RELEASE(pImage);
        CCLOG("can not load %s", filename);
        return;
    }

    // generate image info
    ImageInfo *pImageInfo = new ImageInfo();
    pImageInfo->asyncStruct = pAsyncStruct;
    pImageInfo->image = pImage;
    pImageInfo->imageType = imageType;
    // put the image info into the queue
    pthread_mutex_lock(&s_ImageInfoMutex);
    s_pImageQueue->push(pImageInfo);
    pthread_mutex_unlock(&s_ImageInfoMutex);
}
void CCIDefineBitsJPEG3::loadImageData(UI8 * imageData){
    this->decodeInfo(imageData);
    
    int start = this->findJpegStart(imageData);
    
    imageData +=start;
    
    CCImage::EImageFormat eImageFormat = CCImage::kFmtUnKnown;
    CCImage image;
    image.initWithImageData((void*)imageData, imageSize-start, eImageFormat);
    
    if (tagLength-6-this->alphaDataOffset>0) {
        int length = this->width*this->height;
        UI8 * data = new UI8[length];
        int count = 0;
        count = ZipUtils::ccInflateMemoryWithHint(this->bitmapAlphaData, tagLength-6-this->alphaDataOffset, &data,length);
        
        UI8 * alphaData = new UI8[count];
        memcpy(alphaData,data,count);
        delete [] data;
        
        this->createTextureWithImageAndAlpha(&image,alphaData);
        delete[] alphaData;
    }
    
}
void ChatWidget::setRecHead(std::string *head)
{
    float bw = 70;
    float bh = 70;
    if(head == 0 || head->size() == 0)
        return;
    if(m_toLabel)
        m_toLabel->setVisible(false);
    if(m_toHead && m_toHead->getParent()){
        m_toHead->removeFromParentAndCleanup(true);
        m_toHead = 0;
    }
    CCImage *img = new CCImage;
    img->initWithImageData((void*)head->c_str(),head->size(),
                           CCImage::kFmtUnKnown);
    CCTexture2D *texture = new CCTexture2D;
    texture->initWithImage(img);
    delete img;
    m_toHead = CCSprite::create();
    m_toHead->initWithTexture(texture);
    CCSize headSize = m_toHead->getContentSize();
    m_toHead->setScaleX(60 / headSize.width);
    m_toHead->setScaleY(60 / headSize.height);
    m_toButton->CCNode::addChild(m_toHead);
    m_toHead->setAnchorPoint(ccp(0.5,0.5));
    m_toHead->setPosition(ccp(bw/2,bh/2));
}
Пример #14
0
JNIEXPORT void JNICALL Java_game_mobile_infinity_FacebookManager_jniCallbackPicture(JNIEnv*  env, jobject thiz, jstring jid , jbyteArray  jimage)
{

	const char *id = env->GetStringUTFChars(  jid, 0);

	CCString* cfbID = CCString::createWithFormat("%s",id);

	int len  = env->GetArrayLength(jimage);
	char* byteData = (char*)malloc(len);
	env->GetByteArrayRegion(jimage,0,len,(jbyte*)byteData);


	CCImage* imf = new CCImage();
	imf->initWithImageData(byteData,len);
	imf->autorelease();

	CCTexture2D* pTexture = new CCTexture2D();
	pTexture->initWithImage(imf);
	pTexture->autorelease();

	CCSprite *sprit = CCSprite::createWithTexture(pTexture);
	Facebook_Manager::sharedInstance()->Callback_Picture(cfbID, sprit);


	env->ReleaseStringUTFChars(  jid, id);

}
Пример #15
0
ToyBrick* DancingBoneLayer::CreateArm()
{
	//image && texture
	char path[255];
	sprintf(path, "Images/DancingBone/arm.png");

	CCImage *img = new CCImage();
	img->autorelease();
	if (!img->initWithImageFile(path, CCImage::kFmtPng))
	{
		return NULL;
	}

	CCTexture2D *texture = new CCTexture2D();
	texture->autorelease();
	if (!texture->initWithImage(img))
	{
		return NULL;
	}

	//
	ToyBrick *brick = ToyBrick::create();
	CCSize size = texture->getContentSize();
	brick->Init(texture, CCRectMake(0, 0, size.width, size.height));

	//vector (24, 102)
	CCPointArray *vector = CCPointArray::create(4);
	vector->addControlPoint(ccp(-12, -50));
	vector->addControlPoint(ccp(12, -50));
	vector->addControlPoint(ccp(12, 50));
	vector->addControlPoint(ccp(-12, 50));
	brick->SetAsPolygon(vector);

	return brick;
}
Пример #16
0
cocos2d::CCSprite* CreateOBBSprite(const char *name)
{
//#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) && !defined KINDLE__
//    std::vector<std::string> paths;
//    paths.push_back("/mnt/sdcard/Android/obb");
//    CCFileUtils::sharedFileUtils()->setSearchPaths(paths);
//#endif
    std::string fullPath = CCFileUtils::sharedFileUtils()->fullPathForFilename("main.1.com.LudicrousGames.MonkeyDroid.zip");
    unsigned long pSize;
    unsigned char * pData = 0;
    pData = CCFileUtils::sharedFileUtils()->getFileDataFromZip(fullPath.c_str(), name, &pSize);
    if(pData)
    {
        CCImage* img = new CCImage();
        img->initWithImageData(pData, pSize);
        CCTexture2D* texture = CCTextureCache::sharedTextureCache()->addUIImage(img, name);
        CCSprite* sprite = CCSprite::createWithTexture(texture);
        return sprite;
    }
    else
    {
        return NULL;
    }

}
Пример #17
0
CCTexture2D* MapTexturePool::addImage(const char* path, bool keep)
{
	NDAsssert(path != NULL);

	CCTexture2D* pkTexture = NULL;

	// MUTEX:
	// Needed since addImageAsync calls this method from a different thread

	pkTexture = (CCTexture2D*)m_pkDict->objectForKey(path);

	if (!pkTexture)
	{
		CCImage image;
		if (image.initWithImageFile(path))
		{
			//todo
			//tex = [ [CCTexture2D alloc] initWithImage:image keepData:keep];
		}

		if (pkTexture)
		{
			m_pkDict->setObject(pkTexture, path);
			pkTexture->release();
		}
	}

	return pkTexture;
}
Пример #18
0
CCTexture2D* Util::getGrayTexture(const char* filename){
		typedef enum {  
			RED = 0,  
			GREEN = 1,  
			BLUE = 2,  
			ALPHA = 3  
		} PIXELS;  
		CCImage *image = new CCImage();
		image->initWithImageFile(filename);
		unsigned char* pixels = image->getData();
		int len = image->getDataLen();
		uint32_t *p = (uint32_t *)pixels;
		for(int i=0;i<len;i++){
			uint8_t *rgbaPixel = (uint8_t *) &p[i];
			//uint32_t gray = 0.3 * rgbaPixel[RED] + 0.59 * rgbaPixel[GREEN] + 0.11 * rgbaPixel[BLUE];
			uint32_t gray = 1.2*rgbaPixel[RED] + 1.0*rgbaPixel[GREEN] + 0.0*rgbaPixel[BLUE];
			// set the pixels to gray  
			rgbaPixel[RED] = gray;  
			rgbaPixel[GREEN] = gray;  
			rgbaPixel[BLUE] = gray;  
		} 

		CCTexture2D* texture = new CCTexture2D();  
		texture->autorelease();
		texture->initWithImage(image);
		image->release();

		return texture;
}
void AskAsFriendDialog::finish()
{
    LangDef *lang = ResourceMgr::getInstance()->getLangDef();

    BasButton *okButton = new BasButton;
    okButton->setButtonInfo(lang->getStringById(StringEnum::Ok).data(),"fonts/uifont24.fnt","default","buttonbg",
                            CCSizeMake(0,0));
    okButton->setClickCB(m_okListener,m_okFunc);

    this->addChild(okButton);
    okButton->setBottomMargin(m_edgeSize);
    okButton->setBottom("parent",uilib::Bottom);
    okButton->setHorizontal("parent",0.75);

    BasButton *rejectButton = new BasButton;
    rejectButton->setButtonInfo(lang->getStringById(StringEnum::Reject).data(),"fonts/uifont24.fnt","default","buttonbg",
                                CCSizeMake(0,0));
    rejectButton->setClickCB(m_rejectListener,m_rejectFunc);

    this->addChild(rejectButton);
    rejectButton->setBottomMargin(m_edgeSize);
    rejectButton->setBottom("parent",uilib::Bottom);
    rejectButton->setHorizontal("parent",0.25);
    BasWidget *headWidget;
    if(!m_askHead.empty()){
        CCImage *img = new CCImage;
        img->initWithImageData((void*)m_askHead.c_str(),m_askHead.size(),
                               CCImage::kFmtUnKnown);
        CCTexture2D *texture = new CCTexture2D;
        texture->initWithImage(img);
        delete img;
        CCSprite *sprite = CCSprite::create();
        sprite->initWithTexture(texture);
        headWidget = new BasNodeDelegateWidget(sprite);

        this->addChild(headWidget);
        headWidget->setHorizontal("parent",0.5);
        headWidget->setVertical("parent",0.3);
    }else{
        CCSprite *sprite = CCSprite::createWithSpriteFrameName("headdefault.png");
        headWidget = new BasNodeDelegateWidget(sprite);

        this->addChild(headWidget);
        headWidget->setHorizontal("parent",0.5);
        headWidget->setVertical("parent",0.3);
    }
    m_askWord.insert(0,"    ");
    TextScrollArea *area = new TextScrollArea;
    area->setTheme("","");
    area->setTextInfo(m_askWord,getSystemFont(),40,ccWHITE);
    this->addChild(area);
    area->setLeft("parent",uilib::Left);
    area->setRight("parent",uilib::Right);
    area->setLeftMargin(10);
    area->setRightMargin(10);
    area->setTop(headWidget->getName(),uilib::Bottom);
    area->setBottom(rejectButton->getName(),uilib::Top);
}
Пример #20
0
// 주어진 파일로부터 RGBA를 가져온다.
void HelloWorld::GetPaletteFromFile(char *filename, unsigned char *pPalette, int nNumColors)
{
	CCImage *pImage = new CCImage();
	CCTexture2D *pTex = new CCTexture2D();

	pImage->initWithImageFile(filename, CCImage::kFmtPng);

	memcpy(pPalette, pImage->getData(), nNumColors * 4); // RGBA = 4 bytes
}
Пример #21
0
/* get buffer as CCImage */
CCImage* CCRenderTexture::newCCImage()
{
    CCAssert(m_ePixelFormat == kCCTexture2DPixelFormat_RGBA8888, "only RGBA8888 can be saved as image");

    if (NULL == m_pTexture)
    {
        return NULL;
    }

    const CCSize& s = m_pTexture->getContentSizeInPixels();

    // to get the image size to save
    //        if the saving image domain exeeds the buffer texture domain,
    //        it should be cut
    int nSavedBufferWidth = (int)s.width;
    int nSavedBufferHeight = (int)s.height;

    GLubyte *pBuffer = NULL;
    GLubyte *pTempData = NULL;
    CCImage *pImage = new CCImage();

    do
    {
        CC_BREAK_IF(! (pBuffer = new GLubyte[nSavedBufferWidth * nSavedBufferHeight * 4]));


        if(! (pTempData = new GLubyte[nSavedBufferWidth * nSavedBufferHeight * 4]))
        {
            delete[] pBuffer;
            pBuffer = NULL;
            break;
        }

        this->begin();
        glPixelStorei(GL_PACK_ALIGNMENT, 1);
        glReadPixels(0,0,nSavedBufferWidth, nSavedBufferHeight,GL_RGBA,GL_UNSIGNED_BYTE, pTempData);
        this->end();

        // to get the actual texture data 
        // #640 the image read from rendertexture is upseted
        for (int i = 0; i < nSavedBufferHeight; ++i)
        {
            memcpy(&pBuffer[i * nSavedBufferWidth * 4], 
                &pTempData[(nSavedBufferHeight - i - 1) * nSavedBufferWidth * 4], 
                nSavedBufferWidth * 4);
        }

        pImage->initWithImageData(pBuffer, nSavedBufferWidth * nSavedBufferHeight * 4, CCImage::kFmtRawData, nSavedBufferWidth, nSavedBufferHeight, 8);
    } while (0);

    CC_SAFE_DELETE_ARRAY(pBuffer);
    CC_SAFE_DELETE_ARRAY(pTempData);

    return pImage;
}
Пример #22
0
 void download(void* pCurl)
 {
     
     RawTile* pTile = ((curl_data*)pCurl)->pRawTile;
            
     
     TileResolver* pTileResolver = ((curl_data*)pCurl)->pTileResolver;
     //try
     {
         
         CCString strUrl = MapStrategyFactory::getStrategy(pTileResolver->getMapSourceId())->getUrl(pTile->x,pTile->y,pTile->z);
         
         std::string strResponse;
         
         CURLcode res;
         CURL* curl = curl_easy_init();
         
         curl_easy_setopt(curl, CURLOPT_URL, strUrl.getCString());
         curl_easy_setopt(curl, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.64 Safari/537.31");
         curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, OnWriteData);
         curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, 30);
         curl_easy_setopt(curl, CURLOPT_TIMEOUT, 30);
         curl_easy_setopt(curl, CURLOPT_NOPROGRESS, 1L);
         curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void *)&strResponse);
         curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1L);
         
         
         res = curl_easy_perform(curl);
         
         int retcode = 0;
         res = curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE , &retcode);
         double length;
         res = curl_easy_getinfo(curl, CURLINFO_CONTENT_LENGTH_DOWNLOAD , &length);
         
         if (res==CURLE_OK && retcode == 200 && ((int)length)>0 && strResponse.size()>0)
         {
             
             CCImage* pImage = new CCImage;
             pImage->initWithImageData((void*)strResponse.c_str(),(int)length);
             
             
             if(((TileResolver*)(pTileResolver))->put2Cache(pTile,pImage))
             {
                 ((PhysicMap* )(((TileResolver*)(pTileResolver))->m_pPhysicMap))->m_pHandler->addEvent(pTile,pImage);
             }
             curl_easy_cleanup(curl);
             
             delete (curl_data*)pCurl;
             pCurl = NULL;
         }
     }
     
     return ;
 }
Пример #23
0
void CAApplication::createStatsLabel()
{
    CAImage* texture = NULL;
    CAImageCache *ImageCache = CAImageCache::sharedImageCache();

    if( m_pFPSLabel && m_pSPFLabel )
    {
        CC_SAFE_RELEASE_NULL(m_pFPSLabel);
        CC_SAFE_RELEASE_NULL(m_pSPFLabel);
        CC_SAFE_RELEASE_NULL(m_pDrawsLabel);
        ImageCache->removeImageForKey("cc_fps_images");
        CCFileUtils::sharedFileUtils()->purgeCachedEntries();
    }

    CAImagePixelFormat currentFormat = CAImage::defaultAlphaPixelFormat();
    CAImage::setDefaultAlphaPixelFormat(kCAImagePixelFormat_RGBA4444);
    unsigned char *data = NULL;
    unsigned int data_len = 0;
    getFPSImageData(&data, &data_len);

    CCImage* image = new CCImage();
    bool isOK = image->initWithImageData(data, data_len);
    if (!isOK) {
        CCLOGERROR("%s", "Fails: init fps_images");
        return;
    }

    texture = ImageCache->addUIImage(image, "cc_fps_images");
    CC_SAFE_RELEASE(image);

    float factor = CCEGLView::sharedOpenGLView()->getDesignResolutionSize().height / 640.0f;

    m_pFPSLabel = CALabel::createWithFrame(CCRect(0, 0, 100, 32));
    m_pFPSLabel->retain();
    m_pFPSLabel->setScale(factor);
    m_pFPSLabel->setColor(CAColor_blue);
    
    m_pSPFLabel = CALabel::createWithFrame(CCRect(0, 0, 100, 32));
    m_pSPFLabel->retain();
    m_pSPFLabel->setScale(factor);
    m_pSPFLabel->setColor(CAColor_yellow);
    
    m_pDrawsLabel = CALabel::createWithFrame(CCRect(0, 0, 100, 32));
    m_pDrawsLabel->retain();
    m_pDrawsLabel->setScale(factor);
    m_pDrawsLabel->setColor(CAColor_green);
    
    m_pDrawsLabel->setFrameOrigin(ccpAdd(ccp(0, 64*factor), CC_DIRECTOR_STATS_POSITION));
    m_pSPFLabel->setFrameOrigin(ccpAdd(ccp(0, 32*factor), CC_DIRECTOR_STATS_POSITION));
    m_pFPSLabel->setFrameOrigin(CC_DIRECTOR_STATS_POSITION);
    
    CAImage::setDefaultAlphaPixelFormat(currentFormat);
}
Пример #24
0
bool CCRenderTexture::saveToFile(const char *szFilePath)
{
    bool bRet = false;

    CCImage *pImage = newCCImage();
    if (pImage)
    {
        bRet = pImage->saveToFile(szFilePath, kCCImageFormatJPEG);
    }

    CC_SAFE_DELETE(pImage);
    return bRet;
}
Пример #25
0
bool CCRenderTexture::saveBuffer(const char *szFilePath, int x, int y, int nWidth, int nHeight)
{
    bool bRet = false;

    CCImage *pImage = new CCImage();
    if (pImage != NULL && getUIImageFromBuffer(pImage, x, y, nWidth, nHeight))
    {
        bRet = pImage->saveToFile(szFilePath);
    }

    CC_SAFE_DELETE(pImage);
    return bRet;
}
static void loadImageData(AsyncStruct *pAsyncStruct)
{
    const char *filename = pAsyncStruct->filename.c_str();

    // compute image type
    CCImage::EImageFormat imageType = computeImageFormatType(pAsyncStruct->filename);
    if (imageType == CCImage::kFmtUnKnown)
    {
        CCLOG("unsupported format %s",filename);
        delete pAsyncStruct;
        return;
    }

    // generate image
    CCImage *pImage = new CCImage();
    if( pImage )
    {
        bool bRet = pImage->initWithImageFileThreadSafe(filename, imageType);
        if ( !bRet )
        {
            std::string strFileName = filename;
            if( imageType == CCImage::kFmtPng )
            {
                size_t pos = strFileName.length();
                string strOld = ".png";
                if((pos = strFileName.rfind(strOld, pos)) != string::npos)
                {
                    strFileName = strFileName.replace(pos, strOld.length(), ".fkp");
                    imageType = CCImage::kFmtFKP;
                    bRet = pImage->initWithImageFileThreadSafe(strFileName.c_str(), imageType);
                }
            }
            if( !bRet )
            {
                CC_SAFE_RELEASE(pImage);
                CCLOG("can not load %s", filename);
                return;
            }
        }
    }

    // generate image info
    ImageInfo *pImageInfo = new ImageInfo();
    pImageInfo->asyncStruct = pAsyncStruct;
    pImageInfo->image = pImage;
    pImageInfo->imageType = imageType;
    // put the image info into the queue
    pthread_mutex_lock(&s_ImageInfoMutex);
    s_pImageQueue->push(pImageInfo);
    pthread_mutex_unlock(&s_ImageInfoMutex);
}
Пример #27
0
CCSprite *  NewsScene::getImageFromURL(const char* url)
{
    CURL *curl;
    CURLcode res;
    
    curl_global_init(CURL_GLOBAL_ALL);
    curl = curl_easy_init();
    if(curl)
    {
        string out = string(url);
        struct BufferStruct output;
        output.buffer = NULL;
        output.size = 0;
        curl_easy_setopt(curl, CURLOPT_URL, out.c_str());
        string response;
        curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteMemoryCallback);
        curl_easy_setopt(curl, CURLOPT_WRITEDATA, &output);
        res = curl_easy_perform(curl);
        
        if(res != CURLE_OK)
        {
            fprintf(stderr, "curl_easy_perform() failed: %s\n",curl_easy_strerror(res));
            return NULL;
        } else {
//            FILE * fp;
//            fp = fopen( "loucura.png","w");
//            if( fp )
//            fprintf(fp, output.buffer );
//            fclose( fp );
            
            CCImage* img = new CCImage();
            img->initWithImageData((void*)output.buffer, (long)output.size, CCImage::kFmtPng);
            cocos2d::CCTexture2D* texture = new cocos2d::CCTexture2D(); //TODO:: leak
            texture->initWithImage(img);
            
            CCSprite* sprBackground = CCSprite::create(texture);
            return  sprBackground;
//            sprBackground->setAnchorPoint(ccp(0,0));
//            sprBackground->setScale(1);
//            sprBackground->setPosition(ccp(0,0));
//            
//            this->addChild(sprBackground);
//
//            
//           cout << "Variable response : " << &output.buffer;

        }
        curl_easy_cleanup(curl);
    }
    curl_global_cleanup();
}
Пример #28
0
void CMainCityUI::imageLoadSuccessCallBack(string sTag, vector<char>* pBuffer)
{
	CCImage* img = new CCImage;
	img->initWithImageData((unsigned char*)pBuffer->data(), pBuffer->size());
	CCTexture2D* texture = new CCTexture2D();
    texture->initWithImage(img);
	CLayout* headPart = (CLayout*)m_ui->findWidgetById("head_part");

	CCSprite* head = (CCSprite*)headPart->getChildByTag(15);
//	head->removeFromParent();
	//head->setTexture(texture);

	string path = HttpLoadImage::getInstance()->getStoragePath("download/fbImg",sTag.c_str())+".jpg";
	string buff(pBuffer->begin(), pBuffer->end());
	CCLOG("path: %s", path.c_str());
	FILE *fp = fopen(path.c_str(), "wb+");
	fwrite(buff.c_str(), 1, pBuffer->size(),  fp);
	fclose(fp);

//	CCSprite *headbg = (CCSprite*)(m_ui->findWidgetById("headbg"));
// 	CCClippingNode *clip = CCClippingNode::create();	
// 	CCSprite *fbimg = CCSprite::createWithTexture(texture);
// 	clip->addChild(fbimg);
// 
// 	clip->setPosition(headbg->getPosition());
// 	clip->setContentSize(CCSizeMake(110,110));
// 
// 	static ccColor4F red ={1,0,1};
// 	float radius = 106;
// 	const int nCount = 200;
// 	const float angle = 2.0f* (float)M_PI/nCount;
// 	CCPoint circle[nCount];
// 	for(int i=0; i<nCount; i++)
// 	{
// 		float radian = i*angle;
// 		circle[i].x = radius * cosf(radian);
// 		circle[i].y = radius * sinf(radian); 
// 	}
// 	CCDrawNode *stencil= CCDrawNode::create();
// 	stencil->drawPolygon(circle,nCount,red,0,red);
// 	clip->setStencil(stencil);	
// 	m_ui->addChild(clip);
	CCSprite *headBg = (CCSprite *)(headPart->findWidgetById("headbg"));
	CCSprite *headSpr = MakeFaceBookHeadToCircle(CCSprite::createWithTexture(texture));
	headSpr->setTag(15);
	headSpr->setPosition(headBg->getPosition());
	headPart->addChild(headSpr);
	head->removeFromParent();
	img->release();
}
Пример #29
0
    static CCSprite* createMaskSprite(CCLayerColor* base,
                                      const std::vector<CCRect>& cutoutList)
    {
        CCSize winSize = CCDirector::sharedDirector()->getWinSize();
        
//        CCRenderTexture* rt = CCRenderTexture::create(winSize.width, winSize.height);
        
        // use a low-precision format
        CCRenderTexture* rt = CCRenderTexture::create(winSize.width,
                                                      winSize.height,
                                                      kTexture2DPixelFormat_RGBA8888);
        rt->setAnchorPoint(ccp(0, 0));
        rt->setPosition(ccp(0, 0));
        
        ccBlendFunc cutoutBlend = {GL_DST_ALPHA, GL_ZERO};
        
        // render to texture
        rt->begin();
        base->visit();

        CCSprite* s = CCSprite::create("ui/1x1_b.png");
        s->setAnchorPoint(ccp(0, 0));
        s->setOpacity(0);
        
        for(const CCRect& cutout : cutoutList)
        {
            s->setPosition(cutout.origin);
            s->setScaleX(cutout.size.width * contentScale());
            s->setScaleY(cutout.size.height * contentScale());

            s->setBlendFunc(cutoutBlend);
            s->visit();
        }
        rt->end();
        // render to texture done
        
        std::string randName = std::string("mask_image_") + boost::lexical_cast<std::string>(rand());

        CCImage* img = rt->newCCImage(false);
        img->autorelease();
        
        CCTexture2D* tex = CCTextureCache::sharedTextureCache()->addUIImage(img,
                                                                            randName.c_str());
        CCSprite *mask = CCSprite::createWithTexture(tex);
        mask->setFlipY(true);
        mask->setAnchorPoint(ccp(0, 0));
        mask->setPosition(ccp(0, 0));
        
        return mask;
    }
Пример #30
0
bool EraserSprite::getEraserOk()
{
	m_bEraserOk = false;

	CCImage* image = new CCImage();
	image = m_pRTex->newCCImage(true);

	int m = 3;
	if (image->hasAlpha())
	{
		m = 4;
	}

	unsigned char *data_= image->getData();
	int x = 0, y = 0;
	/// 这里要一点,即Opengl下,其中心点坐标在左上角
	for (x = 0; x < spriteSize.width; ++x)
	{
		for (y = 0 ; y < spriteSize.height; ++y)
		{

			unsigned char *pixel = data_ + (x + y * image->getWidth()) * m;

			// You can see/change pixels' RGBA value(0-255) here !
			unsigned int r = (unsigned int)*pixel;
			unsigned int g = (unsigned int)*(pixel + 1);
			unsigned int b = (unsigned int)*(pixel + 2) ;
			unsigned int a = (unsigned int)*(pixel + 3);

			if (r != 0 && g != 0 && b != 0 && a != 0)
			{
				m_bEraserOk = false;
				break;
			}
		}
		if (spriteSize.height != y)
		{
			break;
		}
	}
	if (x == spriteSize.width && y == spriteSize.height)
	{
		m_bEraserOk = true;
	}

	delete image;

	return this->m_bEraserOk;
}