internal static CCTLLine NewCTLLine() { var newLine = new CCTLLine(); newLine.glyphRun = new List<LetterInfo>(); newLine.bounds = CCSize.Zero; return newLine; }
public CCTLLine GetLine(int startRange, int endRange) { var breakText = label.Text; var stringRange = breakText.Substring(startRange, endRange - startRange); int stringLength = string.IsNullOrEmpty(stringRange) ? 0 : stringRange.TrimEnd().Length; if (stringLength <= 0) { return(CCTLLine.NewCTLLine()); } endRange = startRange + stringLength; CCFontLetterDefinition letterDefinition = new CCFontLetterDefinition(); int charXOffset = 0; int charYOffset = 0; int charAdvance = 0; CCPoint letterPosition; var nextFontPositionX = 0.0f; var nextFontPositionY = 0.0f; var contentScaleFactorWidth = CCLabel.DefaultTexelToContentSizeRatios.Width; var contentScaleFactorHeight = CCLabel.DefaultTexelToContentSizeRatios.Height; var line = CCTLLine.NewCTLLine(); var additionalKerning = label.AdditionalKerning; for (int x = startRange; x < endRange; x++) { var c = breakText[x]; if (fontAtlas.GetLetterDefinitionForChar(c, out letterDefinition)) { charXOffset = (int)letterDefinition.XOffset; charYOffset = (int)letterDefinition.YOffset; charAdvance = (int)letterDefinition.XAdvance; } else { charXOffset = -1; charYOffset = -1; charAdvance = -1; } var kerning = kernings[x]; letterDefinition.Kerning = kerning; letterPosition.X = (nextFontPositionX + charXOffset + kerning) / contentScaleFactorWidth; letterPosition.Y = (nextFontPositionY - charYOffset) / contentScaleFactorHeight; nextFontPositionX += charAdvance + kerning + additionalKerning; line.AddGlyph(letterPosition, letterDefinition, x); } return(line); }
internal static CCTLLine NewCTLLine() { var temp = new CCTLLine(); temp.glyphRun = new List <LetterInfo>(); temp.bounds = CCSize.Zero; return(temp); }
internal static CCTLLine NewCTLLine() { var newLine = new CCTLLine(); newLine.glyphRun = new List <LetterInfo>(); newLine.bounds = CCSize.Zero; return(newLine); }