| Flutter Impeller |

Namespaces | Functions | Variables
typographer_context_skia.cc File Reference
`#include "impeller/typographer/backends/skia/typographer_context_skia.h"`
`#include <cstddef>`
`#include <memory>`
`#include <numeric>`
`#include <utility>`
`#include <vector>`
`#include "flutter/fml/logging.h"`
`#include "flutter/fml/trace_event.h"`
`#include "fml/closure.h"`
`#include "impeller/core/allocator.h"`
`#include "impeller/core/buffer_view.h"`
`#include "impeller/core/formats.h"`
`#include "impeller/core/host_buffer.h"`
`#include "impeller/core/platform.h"`
`#include "impeller/core/texture_descriptor.h"`
`#include "impeller/geometry/rect.h"`
`#include "impeller/geometry/size.h"`
`#include "impeller/renderer/command_buffer.h"`
`#include "impeller/renderer/render_pass.h"`
`#include "impeller/renderer/render_target.h"`
`#include "impeller/typographer/backends/skia/typeface_skia.h"`
`#include "impeller/typographer/font_glyph_pair.h"`
`#include "impeller/typographer/glyph.h"`
`#include "impeller/typographer/glyph_atlas.h"`
`#include "impeller/typographer/rectangle_packer.h"`
`#include "impeller/typographer/typographer_context.h"`
`#include "include/core/SkColor.h"`
`#include "include/core/SkImageInfo.h"`
`#include "include/core/SkPaint.h"`
`#include "include/core/SkSize.h"`
`#include "third_party/skia/include/core/SkBitmap.h"`
`#include "third_party/skia/include/core/SkBlendMode.h"`
`#include "third_party/skia/include/core/SkCanvas.h"`
`#include "third_party/skia/include/core/SkFont.h"`
`#include "third_party/skia/include/core/SkSurface.h"`

Go to the source code of this file.

## Namespaces
| impeller

## Functions
static SkImageInfo | impeller::GetImageInfo (const GlyphAtlas &atlas, Size size)
static size_t | impeller::AppendToExistingAtlas (const std::shared_ptr< GlyphAtlas > &atlas, const std::vector< FontGlyphPair > &extra_pairs, std::vector< Rect > &glyph_positions, const std::vector< Rect > &glyph_sizes, ISize atlas_size, int64_t height_adjustment, const std::shared_ptr< RectanglePacker > &rect_packer)
static size_t | impeller::PairsFitInAtlasOfSize (const std::vector< FontGlyphPair > &pairs, const ISize &atlas_size, std::vector< Rect > &glyph_positions, const std::vector< Rect > &glyph_sizes, int64_t height_adjustment, const std::shared_ptr< RectanglePacker > &rect_packer, size_t start_index)
static ISize | impeller::ComputeNextAtlasSize (const std::shared_ptr< GlyphAtlasContext > &atlas_context, const std::vector< FontGlyphPair > &extra_pairs, std::vector< Rect > &glyph_positions, const std::vector< Rect > &glyph_sizes, size_t glyph_index_start, int64_t max_texture_height)
static void | impeller::DrawGlyph (SkCanvas *canvas, const SkPoint position, const ScaledFont &scaled_font, const SubpixelGlyph &glyph, const Rect &scaled_bounds, const std::optional< GlyphProperties > &prop, bool has_color)
static bool | impeller::BulkUpdateAtlasBitmap (const GlyphAtlas &atlas, std::shared_ptr< BlitPass > &blit_pass, HostBuffer &host_buffer, const std::shared_ptr< Texture > &texture, const std::vector< FontGlyphPair > &new_pairs, size_t start_index, size_t end_index)
| Batch render to a single surface. More...
static bool | impeller::UpdateAtlasBitmap (const GlyphAtlas &atlas, std::shared_ptr< BlitPass > &blit_pass, HostBuffer &host_buffer, const std::shared_ptr< Texture > &texture, const std::vector< FontGlyphPair > &new_pairs, size_t start_index, size_t end_index)
static Rect | impeller::ComputeGlyphSize (const SkFont &font, const SubpixelGlyph &glyph, Scalar scale)
static void | impeller::CollectNewGlyphs (const std::shared_ptr< GlyphAtlas > &atlas, const FontGlyphMap &font_glyph_map, std::vector< FontGlyphPair > &new_glyphs, std::vector< Rect > &glyph_sizes)

## Variables
constexpr auto | impeller::kPadding = 2