MCPcopy Create free account
hub / github.com/axmolengine/axmol / updateLabelLetters

Method updateLabelLetters

core/2d/Label.cpp:1031–1089  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1029}
1030
1031void Label::updateLabelLetters()
1032{
1033 if (!_letters.empty())
1034 {
1035 Rect uvRect;
1036 LabelLetter* letterSprite;
1037 int letterIndex;
1038
1039 for (auto it = _letters.begin(); it != _letters.end();)
1040 {
1041 letterIndex = it->first;
1042 letterSprite = (LabelLetter*)it->second;
1043
1044 if (letterIndex >= _lengthOfString)
1045 {
1046 Node::removeChild(letterSprite, true);
1047 it = _letters.erase(it);
1048 }
1049 else
1050 {
1051 auto& letterInfo = _lettersInfo[letterIndex];
1052 if (letterInfo.valid)
1053 {
1054 auto& letterDef = _fontAtlas->_letterDefinitions[letterInfo.utf32Char];
1055 uvRect.size.height = letterDef.height;
1056 uvRect.size.width = letterDef.width;
1057 uvRect.origin.x = letterDef.U;
1058 uvRect.origin.y = letterDef.V;
1059
1060 auto batchNode = _batchNodes.at(letterDef.textureID);
1061 letterSprite->setTextureAtlas(batchNode->getTextureAtlas());
1062 letterSprite->setTexture(_fontAtlas->getTexture(letterDef.textureID));
1063 if (letterDef.width <= 0.f || letterDef.height <= 0.f)
1064 {
1065 letterSprite->setTextureAtlas(nullptr);
1066 }
1067 else
1068 {
1069 letterSprite->setTextureRect(uvRect, letterDef.rotated, uvRect.size);
1070 letterSprite->setTextureAtlas(_batchNodes.at(letterDef.textureID)->getTextureAtlas());
1071 letterSprite->setAtlasIndex(_lettersInfo[letterIndex].atlasIndex);
1072 }
1073
1074 auto px =
1075 letterInfo.positionX + _fontScale * uvRect.size.width / 2 + _linesOffsetX[letterInfo.lineIndex];
1076 auto py = letterInfo.positionY - _fontScale * uvRect.size.height / 2 + _letterOffsetY;
1077 letterSprite->setPosition(px, py);
1078 letterSprite->setOpacity(_realOpacity);
1079 }
1080 else
1081 {
1082 letterSprite->setTextureAtlas(nullptr);
1083 }
1084 this->updateLetterSpriteScale(letterSprite);
1085 ++it;
1086 }
1087 }
1088 }

Callers

nothing calls this directly

Calls 13

setTextureAtlasMethod · 0.80
getTextureAtlasMethod · 0.80
emptyMethod · 0.45
beginMethod · 0.45
endMethod · 0.45
eraseMethod · 0.45
atMethod · 0.45
setTextureMethod · 0.45
getTextureMethod · 0.45
setTextureRectMethod · 0.45
setPositionMethod · 0.45

Tested by

no test coverage detected