void CCRichAtlas::appendRichElement(IRichElement* element) { m_elements.push_back(element); setQuadsToDraw(getQuadsToDraw()+1); m_dirty = true; }
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; }