#include <text_contents.h>
Public Member Functions | |
| TextContents () | |
| ~TextContents () | |
| void | SetTextFrame (const std::shared_ptr< TextFrame > &frame) |
| void | SetColor (Color color) |
| void | SetForceTextColor (bool value) |
| Force the text color to apply to the rendered glyphs, even if those glyphs are bitmaps. More... | |
| void | SetTextProperties (Color color, const std::optional< StrokeParameters > &stroke) |
| Must be set after text frame. More... | |
| Color | GetColor () const |
| void | SetInheritedOpacity (Scalar opacity) override |
| Inherit the provided opacity. More... | |
| void | SetPosition (Point position) |
| void | SetScreenTransform (const Matrix &transform) |
| std::optional< Rect > | GetCoverage (const Entity &entity) const override |
| Get the area of the render pass that will be affected when this contents is rendered. More... | |
| bool | Render (const ContentContext &renderer, const Entity &entity, RenderPass &pass) const override |
Public Member Functions inherited from impeller::Contents | |
| Contents () | |
| virtual | ~Contents () |
| void | SetCoverageHint (std::optional< Rect > coverage_hint) |
Hint that specifies the coverage area of this Contents that will actually be used during rendering. This is for optimization purposes only and can not be relied on as a clip. May optionally affect the result of GetCoverage(). More... | |
| const std::optional< Rect > & | GetCoverageHint () const |
| virtual bool | IsOpaque (const Matrix &transform) const |
| Whether this Contents only emits opaque source colors from the fragment stage. This value does not account for any entity properties (e.g. the blend mode), clips/visibility culling, or inherited opacity. More... | |
| virtual std::optional< Snapshot > | RenderToSnapshot (const ContentContext &renderer, const Entity &entity, const SnapshotOptions &options) const |
Render this contents to a snapshot, respecting the entity's transform, path, clip depth, and blend mode. The result texture size is always the size of GetCoverage(entity). More... | |
| std::optional< Size > | GetColorSourceSize () const |
| Return the color source's intrinsic size, if available. More... | |
| void | SetColorSourceSize (Size size) |
| virtual std::optional< Color > | AsBackgroundColor (const Entity &entity, ISize target_size) const |
Returns a color if this Contents will flood the given target_size with a color. This output color is the "Source" color that will be used for the Entity's blend operation. More... | |
| virtual bool | ApplyColorFilter (const ColorFilterProc &color_filter_proc) |
| If possible, applies a color filter to this contents inputs on the CPU. More... | |
Static Public Member Functions | |
| static void | ComputeVertexData (GlyphAtlasPipeline::VertexShader::PerVertexData *vtx_contents, const Matrix &entity_transform, const std::shared_ptr< TextFrame > &frame, Point position, const Matrix &screen_transform, std::optional< GlyphProperties > glyph_properties, const std::shared_ptr< GlyphAtlas > &atlas) |
| Computes the vertex data for the render operation from a collection of data drawn from the DrawTextFrame call itself and the entity environment. More... | |
Static Public Member Functions inherited from impeller::Contents | |
| static std::shared_ptr< Contents > | MakeAnonymous (RenderProc render_proc, CoverageProc coverage_proc) |
Additional Inherited Members | |
Public Types inherited from impeller::Contents | |
| using | ColorFilterProc = std::function< Color(Color)> |
| using | RenderProc = std::function< bool(const ContentContext &renderer, const Entity &entity, RenderPass &pass)> |
| using | CoverageProc = std::function< std::optional< Rect >(const Entity &entity)> |
Definition at line 23 of file text_contents.h.
|
default |
|
default |
|
static |
Computes the vertex data for the render operation from a collection of data drawn from the DrawTextFrame call itself and the entity environment.
vtx_contents A pointer to the array of PerVertexData to fill. entity_transform The transform from the entity which might include offsets due to an intermediate temporary rendering target. This transform is used for final placement of glyphs on the screen. frame The TextFrame object from the DrawTextFrame call. position The position from the DrawTextFrame call. screen_transform The value of Canvas::GetCurrentTransform() from the DrawTextFrame call. It is the full transform of the text relative to screen space and is not adjusted relative to the origin of an intermidate buffer as the entity_transform may be. This transform is used to retrieve metrics and glyph information from the atlas so that the data matches what was stored in the atlas when the global DisplayList did a pre-pass to collect the glyph information. glyph_properties The GlyphProperties providing the color and stroke information from the Paint object used in the DrawTextFrame call, optionally and only if they should come into play for rendering the glyphs. atlas The glyph atlas containing the glyph texture and placement metrics for all of the glyphs that appear in the TextFrame.
Definition at line 93 of file text_contents.cc.
References impeller::FrameBounds::atlas_bounds, impeller::Matrix::Basis(), impeller::TextFrame::ComputeSubpixelPosition(), impeller::FontGlyphAtlas::FindGlyphBounds(), impeller::ScaledFont::font, impeller::Font::GetAxisAlignment(), impeller::TRect< T >::GetLeftTop(), impeller::Matrix::GetMaxBasisLengthXY(), impeller::TRect< T >::GetSize(), impeller::FrameBounds::glyph_bounds, impeller::Rational::Invert(), impeller::FrameBounds::is_placeholder, impeller::Matrix::IsTranslationScaleOnly(), impeller::kAll, impeller::kNone, impeller::kX, impeller::kY, impeller::Matrix::m, impeller::Matrix::MakeScale(), impeller::Matrix::MakeTranslation(), impeller::TPoint< T >::Round(), impeller::TextFrame::RoundScaledFontSize(), impeller::TRect< T >::Scale(), impeller::SizeToPoint(), VALIDATION_LOG, impeller::TPoint< T >::x, and impeller::TPoint< T >::y.
Referenced by Render(), and impeller::testing::TEST_P().
| Color impeller::TextContents::GetColor | ( | ) | const |
Definition at line 40 of file text_contents.cc.
References impeller::Color::alpha, and impeller::Color::WithAlpha().
Referenced by Render().
|
overridevirtual |
Get the area of the render pass that will be affected when this contents is rendered.
During rendering, coverage coordinates count pixels from the top left corner of the framebuffer.
std::nullopt result means that rendering this contents has no effect on the output color. Implements impeller::Contents.
Definition at line 60 of file text_contents.cc.
References impeller::Entity::GetTransform(), and impeller::Matrix::MakeTranslation().
|
overridevirtual |
Implements impeller::Contents.
Definition at line 231 of file text_contents.cc.
References ComputeVertexData(), impeller::RenderPass::Draw(), impeller::HostBuffer::Emplace(), impeller::HostBuffer::EmplaceUniform(), impeller::Matrix::GetBasisX(), impeller::Matrix::GetBasisY(), GetColor(), impeller::ContentContext::GetContext(), impeller::ContentContext::GetGlyphAtlasPipeline(), impeller::ContentContext::GetLazyGlyphAtlas(), impeller::Vector3::GetLength(), impeller::Entity::GetShaderClipDepth(), impeller::Entity::GetShaderTransform(), impeller::Entity::GetTransform(), impeller::ContentContext::GetTransientsDataBuffer(), impeller::ContentContext::GetTransientsIndexesBuffer(), impeller::Matrix::IsTranslationScaleOnly(), impeller::Color::IsTransparent(), impeller::k16bit, impeller::kBase, impeller::GlyphAtlas::kColorBitmap, impeller::kLinear, impeller::kNearest, impeller::kTriangle, impeller::SamplerDescriptor::mag_filter, impeller::SamplerDescriptor::min_filter, impeller::SamplerDescriptor::mip_filter, impeller::OptionsFromPassAndEntity(), impeller::Color::Premultiply(), impeller::RenderPass::SetCommandLabel(), impeller::RenderPass::SetElementCount(), impeller::RenderPass::SetIndexBuffer(), impeller::RenderPass::SetPipeline(), impeller::RenderPass::SetVertexBuffer(), impeller::ToVector(), and VALIDATION_LOG.
Referenced by impeller::testing::TEST_P().
| void impeller::TextContents::SetColor | ( | Color | color | ) |
Definition at line 36 of file text_contents.cc.
Referenced by impeller::testing::TEST_P().
| void impeller::TextContents::SetForceTextColor | ( | bool | value | ) |
Force the text color to apply to the rendered glyphs, even if those glyphs are bitmaps.
This is used to ensure that mask blurs work correctly on emoji.
Definition at line 56 of file text_contents.cc.
References value.
|
overridevirtual |
Inherit the provided opacity.
Use of this method is invalid if CanAcceptOpacity returns false.
Reimplemented from impeller::Contents.
Definition at line 44 of file text_contents.cc.
| void impeller::TextContents::SetPosition | ( | Point | position | ) |
Definition at line 48 of file text_contents.cc.
Referenced by impeller::testing::TEST_P().
| void impeller::TextContents::SetScreenTransform | ( | const Matrix & | transform | ) |
Definition at line 52 of file text_contents.cc.
References transform.
Referenced by impeller::testing::TEST_P().
| void impeller::TextContents::SetTextFrame | ( | const std::shared_ptr< TextFrame > & | frame | ) |
Definition at line 32 of file text_contents.cc.
Referenced by impeller::testing::TEST_P().
| void impeller::TextContents::SetTextProperties | ( | Color | color, |
| const std::optional< StrokeParameters > & | stroke | ||
| ) |
Must be set after text frame.
Definition at line 66 of file text_contents.cc.
References impeller::GlyphProperties::color, impeller::GlyphProperties::stroke, and impeller::Color::WithAlpha().