Пример #1
0
void CCRichAtlas::appendRichElement(IRichElement* element)
{
	m_elements.push_back(element);
	setQuadsToDraw(getQuadsToDraw()+1);
	m_dirty = true;
}
Пример #2
0
void CCRichAtlas::updateAtlasValues()
{
	if ( !m_dirty )
	{
		return;
	}
	m_dirty = false;

	if ( m_pTextureAtlas->getCapacity() < getQuadsToDraw() )
	{
		m_pTextureAtlas->resizeCapacity( getQuadsToDraw() );
	}

	ccV3F_C4B_T2F_Quad quad;

	CCTexture2D *texture = m_pTextureAtlas->getTexture();
	float textureWide = (float) texture->getPixelsWide();
	float textureHigh = (float) texture->getPixelsHigh();

	int i = 0;
	for(std::list<IRichElement*>::iterator it = m_elements.begin(); 
		it != m_elements.end(); it++, i++) {
			IRichElement* ele = *it;
			RTexture* rtex = ele->getTexture();

#if CC_FIX_ARTIFACTS_BY_STRECHING_TEXEL
			float left   = (rtex->rect.pos.x + 0.5f)/textureWide;
			float right  = left + (rtex->rect.size.w - 1.0f)/textureWide;
			float top    = (rtex->rect.pos.y + 0.5f)/textureHigh;
			float bottom = top + (rtex->rect.size.h - 1.0f)/textureHigh;

			float ele_pos_left = ele->getGlobalPosition().x;
			float ele_pos_top = ele->getGlobalPosition().y;
			float ele_width = rtex->rect.size.w /*+ 1.0f*/;
			float ele_height = rtex->rect.size.h /*+ 1.0f*/;
#else
			float left   = rtex->rect.pos.x/textureWide;
			float right  = left + rtex->rect.size.w/textureWide;
			float top    = rtex->rect.pos.y/textureHigh;
			float bottom = top + rtex->rect.size.h/textureHigh;

			float ele_pos_left = ele->getGlobalPosition().x;
			float ele_pos_top = ele->getGlobalPosition().y;
			float ele_width = rtex->rect.size.w;
			float ele_height = rtex->rect.size.h;
#endif // ! CC_FIX_ARTIFACTS_BY_STRECHING_TEXEL

			quad.tl.texCoords.u = left;
			quad.tl.texCoords.v = top;
			quad.tr.texCoords.u = right;
			quad.tr.texCoords.v = top;
			quad.bl.texCoords.u = left;
			quad.bl.texCoords.v = bottom;
			quad.br.texCoords.u = right;
			quad.br.texCoords.v = bottom;

			quad.bl.vertices.x = (float) (ele_pos_left);
			quad.bl.vertices.y = ele_pos_top - ele_height;
			quad.bl.vertices.z = 0.0f;
			quad.br.vertices.x = (float)(ele_pos_left + ele_width);
			quad.br.vertices.y = ele_pos_top - ele_height;
			quad.br.vertices.z = 0.0f;
			quad.tl.vertices.x = (float)(ele_pos_left);
			quad.tl.vertices.y = ele_pos_top;
			quad.tl.vertices.z = 0.0f;
			quad.tr.vertices.x = (float)(ele_pos_left + ele_width);
			quad.tr.vertices.y = ele_pos_top;
			quad.tr.vertices.z = 0.0f;

			ccColor4B c = { _displayedColor.r, _displayedColor.g, _displayedColor.b, _displayedOpacity };
			quad.tl.colors = c;
			quad.tr.colors = c;
			quad.bl.colors = c;
			quad.br.colors = c;
			m_pTextureAtlas->updateQuad(&quad, i);
	}
}
//-------------------------------------------------------------------------
void FKCW_RichHtml_RichAtlas::appendRichElement(FKCW_RichHtml_IRichElement* element)
{
	m_elements.push_back(element);
	setQuadsToDraw(getQuadsToDraw()+1);
	m_dirty = true;
}