private List <ContentGroup> GetContentsForCharacter(FontCharacter character) { if (_contentsForCharacter.ContainsKey(character)) { return(_contentsForCharacter[character]); } var shapes = character.Shapes; var size = shapes.Count; var contents = new List <ContentGroup>(size); for (var i = 0; i < size; i++) { var sg = shapes[i]; contents.Add(new ContentGroup(_lottieDrawable, this, sg)); } _contentsForCharacter[character] = contents; return(contents); }
private void DrawCharacterAsGlyph(FontCharacter character, Matrix3X3 parentMatrix, float fontScale, DocumentData documentData, BitmapCanvas canvas) { var contentGroups = GetContentsForCharacter(character); for (var j = 0; j < contentGroups.Count; j++) { var path = contentGroups[j].Path; //path.ComputeBounds(out _rectF); Matrix.Set(parentMatrix); Matrix = MatrixExt.PreScale(Matrix, fontScale, fontScale); path.Transform(Matrix); if (documentData.StrokeOverFill) { DrawGlyph(path, _fillPaint, canvas); DrawGlyph(path, _strokePaint, canvas); } else { DrawGlyph(path, _strokePaint, canvas); DrawGlyph(path, _fillPaint, canvas); } } }