// on "init" you need to initialize your instance
bool HelloWorld::init()
{
  if (!CCLayer::init()) {
    return false;
  }
  
  CCSize s = CCDirector::sharedDirector()->getWinSize();
  render_texture_ = CCRenderTexture::create(s.width, s.height,
                                            kCCTexture2DPixelFormat_RGBA8888);
  render_texture_->retain();
  render_texture_->setPosition(ccp(s.width / 2, s.height / 2));
  render_texture_->clear(1.0, 1.0, 1.0, 1.0);
  this->addChild(render_texture_);

  std::string text = "0123456789";
  for (int i = 0; i < 8; i++) {
    text += text;
  }
  CCLabelTTF* label = new CCLabelTTF;
  label->initWithString(text.c_str(), "Arial", 18,
                        CCSizeMake(1000, 0), kCCTextAlignmentLeft);
  label->setPosition(ccp(10, 760));
  label->setAnchorPoint(ccp(0, 1));
  label->setColor(ccc3(0, 0, 0));
  render_texture_->begin();
  label->visit();
  render_texture_->end();
  label->release();
  
  return true;
}
Beispiel #2
0
int Bitmap::handler_method_drawtext( int ptr1,void* ptr2 )
{
 	Bitmap* bitmap = (Bitmap*)ptr1;
	if (NULL==bitmap->p->m_emuBitmap)
		return -1;

	bool firstdraw = false;
	CCRenderTexture* fontRender = (CCRenderTexture*)bitmap->p->m_fontRender;
	if (NULL==fontRender)
	{
		fontRender = CCRenderTexture::create(bitmap->p->m_width,bitmap->p->m_height);
		bitmap->getEmuBitmap()->addChild(fontRender);
		fontRender->setPosition(ccp(bitmap->p->m_width/2,bitmap->p->m_height/2));
		bitmap->p->m_fontRender = fontRender;
		fontRender->retain();
		firstdraw = true;
		//fontRender->getSprite()->getTexture()->setAliasTexParameters();
	}

	DrawtextStruct* ptr2struct = (DrawtextStruct*)ptr2;
	string tmpdrawchar = ptr2struct->str;
// 	int checknum = atoi(tmpdrawchar.c_str());
// 	if (checknum!=0)
// 	{
// 		char tmp[20]={0};
// 		sprintf(tmp,"%d",checknum);
// 		tmpdrawchar = tmp;
// 	}

	CCLabelTTF* label = CCLabelTTF::create(tmpdrawchar.c_str(),ptr2struct->font->getName(),ptr2struct->font->getSize());
	//label->getTexture()->setAliasTexParameters();
	if (ptr2struct->font)
	{
		Font* f = ptr2struct->font; 
		label->setFontName(f->getName());
		label->setFontSize(f->getSize());
		label->setColor(ccc3(f->getColor()->red*f->getColor()->alpha/255,
			f->getColor()->green*f->getColor()->alpha/255,
			f->getColor()->blue*f->getColor()->alpha/255));
		//label->setOpacity(f->getColor()->alpha);
	}
	label->setAnchorPoint(ccp(0,1));
	label->setDimensions(CCSizeMake(ptr2struct->rect.w,ptr2struct->rect.h));
	label->setPosition(ccp(ptr2struct->rect.x,rgss_y_to_cocos_y(ptr2struct->rect.y,bitmap->p->m_height)));
	label->setVerticalAlignment(kCCVerticalTextAlignmentCenter);

	if (ptr2struct->align == Bitmap::Center)
		label->setHorizontalAlignment(kCCTextAlignmentCenter);
	else if(ptr2struct->align == Bitmap::Right)
		label->setHorizontalAlignment(kCCTextAlignmentRight);
	else if (ptr2struct->align == Bitmap::Left)
		label->setHorizontalAlignment(kCCTextAlignmentLeft);

// 	CCLayerColor* masklayer = CCLayerColor::create(ccc4(255,255,255,255));
// 	masklayer->setContentSize(label->getContentSize());
// 	masklayer->setPosition(ccp(ptr2struct->rect.x,rgss_y_to_cocos_y(ptr2struct->rect.y,bitmap->m_height)-masklayer->getContentSize().height));
// 	ccBlendFunc fun = {GL_ZERO,GL_ZERO};
// 	masklayer->setBlendFunc(fun);

	fontRender->begin();
	//masklayer->visit();
	label->visit();
	fontRender->end();
	label->release();

	delete ptr2struct;
	return 0;
}