Flutter Impeller
impeller::ExperimentalDlDispatcher Class Reference

#include <dl_dispatcher.h>

Inheritance diagram for impeller::ExperimentalDlDispatcher:
impeller::DlDispatcherBase

Public Member Functions

 ExperimentalDlDispatcher (ContentContext &renderer, RenderTarget &render_target, bool has_root_backdrop_filter, flutter::DlBlendMode max_root_blend_mode, IRect cull_rect)
 
 ~ExperimentalDlDispatcher ()=default
 
void save () override
 
void saveLayer (const SkRect &bounds, const flutter::SaveLayerOptions options, const flutter::DlImageFilter *backdrop) override
 
void FinishRecording ()
 
void save (uint32_t total_content_depth) override
 
void saveLayer (const SkRect &bounds, const flutter::SaveLayerOptions &options, uint32_t total_content_depth, flutter::DlBlendMode max_content_mode, const flutter::DlImageFilter *backdrop) override
 
- Public Member Functions inherited from impeller::DlDispatcherBase
Picture EndRecordingAsPicture ()
 
bool PrefersImpellerPaths () const override
 
void setAntiAlias (bool aa) override
 
void setDrawStyle (flutter::DlDrawStyle style) override
 
void setColor (flutter::DlColor color) override
 
void setStrokeWidth (SkScalar width) override
 
void setStrokeMiter (SkScalar limit) override
 
void setStrokeCap (flutter::DlStrokeCap cap) override
 
void setStrokeJoin (flutter::DlStrokeJoin join) override
 
void setColorSource (const flutter::DlColorSource *source) override
 
void setColorFilter (const flutter::DlColorFilter *filter) override
 
void setInvertColors (bool invert) override
 
void setBlendMode (flutter::DlBlendMode mode) override
 
void setMaskFilter (const flutter::DlMaskFilter *filter) override
 
void setImageFilter (const flutter::DlImageFilter *filter) override
 
void save (uint32_t total_content_depth) override
 
void saveLayer (const SkRect &bounds, const flutter::SaveLayerOptions &options, uint32_t total_content_depth, flutter::DlBlendMode max_content_mode, const flutter::DlImageFilter *backdrop) override
 
void restore () override
 
void translate (SkScalar tx, SkScalar ty) override
 
void scale (SkScalar sx, SkScalar sy) override
 
void rotate (SkScalar degrees) override
 
void skew (SkScalar sx, SkScalar sy) override
 
void transform2DAffine (SkScalar mxx, SkScalar mxy, SkScalar mxt, SkScalar myx, SkScalar myy, SkScalar myt) override
 
void transformFullPerspective (SkScalar mxx, SkScalar mxy, SkScalar mxz, SkScalar mxt, SkScalar myx, SkScalar myy, SkScalar myz, SkScalar myt, SkScalar mzx, SkScalar mzy, SkScalar mzz, SkScalar mzt, SkScalar mwx, SkScalar mwy, SkScalar mwz, SkScalar mwt) override
 
void transformReset () override
 
void clipRect (const SkRect &rect, ClipOp clip_op, bool is_aa) override
 
void clipRRect (const SkRRect &rrect, ClipOp clip_op, bool is_aa) override
 
void clipPath (const SkPath &path, ClipOp clip_op, bool is_aa) override
 
void clipPath (const CacheablePath &cache, ClipOp clip_op, bool is_aa) override
 
void drawColor (flutter::DlColor color, flutter::DlBlendMode mode) override
 
void drawPaint () override
 
void drawLine (const SkPoint &p0, const SkPoint &p1) override
 
void drawDashedLine (const DlPoint &p0, const DlPoint &p1, DlScalar on_length, DlScalar off_length) override
 
void drawRect (const SkRect &rect) override
 
void drawOval (const SkRect &bounds) override
 
void drawCircle (const SkPoint &center, SkScalar radius) override
 
void drawRRect (const SkRRect &rrect) override
 
void drawDRRect (const SkRRect &outer, const SkRRect &inner) override
 
void drawPath (const SkPath &path) override
 
void drawPath (const CacheablePath &cache) override
 
void drawArc (const SkRect &oval_bounds, SkScalar start_degrees, SkScalar sweep_degrees, bool use_center) override
 
void drawPoints (PointMode mode, uint32_t count, const SkPoint points[]) override
 
void drawVertices (const std::shared_ptr< flutter::DlVertices > &vertices, flutter::DlBlendMode dl_mode) override
 
void drawImage (const sk_sp< flutter::DlImage > image, const SkPoint point, flutter::DlImageSampling sampling, bool render_with_attributes) override
 
void drawImageRect (const sk_sp< flutter::DlImage > image, const SkRect &src, const SkRect &dst, flutter::DlImageSampling sampling, bool render_with_attributes, SrcRectConstraint constraint) override
 
void drawImageNine (const sk_sp< flutter::DlImage > image, const SkIRect &center, const SkRect &dst, flutter::DlFilterMode filter, bool render_with_attributes) override
 
void drawAtlas (const sk_sp< flutter::DlImage > atlas, const SkRSXform xform[], const SkRect tex[], const flutter::DlColor colors[], int count, flutter::DlBlendMode mode, flutter::DlImageSampling sampling, const SkRect *cull_rect, bool render_with_attributes) override
 
void drawDisplayList (const sk_sp< flutter::DisplayList > display_list, SkScalar opacity) override
 
void drawTextBlob (const sk_sp< SkTextBlob > blob, SkScalar x, SkScalar y) override
 
void drawTextFrame (const std::shared_ptr< impeller::TextFrame > &text_frame, SkScalar x, SkScalar y) override
 
void drawShadow (const SkPath &path, const flutter::DlColor color, const SkScalar elevation, bool transparent_occluder, SkScalar dpr) override
 
void drawShadow (const CacheablePath &cache, const flutter::DlColor color, const SkScalar elevation, bool transparent_occluder, SkScalar dpr) override
 

Detailed Description

Definition at line 298 of file dl_dispatcher.h.

Constructor & Destructor Documentation

◆ ExperimentalDlDispatcher()

impeller::ExperimentalDlDispatcher::ExperimentalDlDispatcher ( ContentContext renderer,
RenderTarget render_target,
bool  has_root_backdrop_filter,
flutter::DlBlendMode  max_root_blend_mode,
IRect  cull_rect 
)

Definition at line 1227 of file dl_dispatcher.cc.

1233  : canvas_(renderer,
1234  render_target,
1235  has_root_backdrop_filter ||
1236  RequiresReadbackForBlends(renderer, max_root_blend_mode),
1237  cull_rect) {}

◆ ~ExperimentalDlDispatcher()

impeller::ExperimentalDlDispatcher::~ExperimentalDlDispatcher ( )
default

Member Function Documentation

◆ FinishRecording()

void impeller::ExperimentalDlDispatcher::FinishRecording ( )
inline

Definition at line 326 of file dl_dispatcher.h.

326 { canvas_.EndReplay(); }

References impeller::ExperimentalCanvas::EndReplay().

Referenced by impeller::DlPlayground::OpenPlaygroundHere().

◆ save() [1/2]

void impeller::ExperimentalDlDispatcher::save ( )
inlineoverride

Definition at line 309 of file dl_dispatcher.h.

309  {
310  // This dispatcher should never be used with the save() variant
311  // that does not include the content_depth parameter.
312  FML_UNREACHABLE();
313  }

◆ save() [2/2]

void impeller::DlDispatcherBase::save
override

Definition at line 611 of file dl_dispatcher.cc.

611  {
612  GetCanvas().Save(total_content_depth);
613 }

◆ saveLayer() [1/2]

void impeller::DlDispatcherBase::saveLayer
override

Definition at line 619 of file dl_dispatcher.cc.

623  {
624  auto paint = options.renders_with_attributes() ? paint_ : Paint{};
625  auto promise = options.content_is_clipped()
628  std::optional<Rect> impeller_bounds;
629  if (bounds == kMaxCullRect) {
630  impeller_bounds = std::nullopt;
631  } else {
632  impeller_bounds = skia_conversions::ToRect(bounds);
633  }
634 
635  GetCanvas().SaveLayer(paint, impeller_bounds, ToImageFilter(backdrop),
636  promise, total_content_depth,
637  options.can_distribute_opacity());
638 }

◆ saveLayer() [2/2]

void impeller::ExperimentalDlDispatcher::saveLayer ( const SkRect &  bounds,
const flutter::SaveLayerOptions  options,
const flutter::DlImageFilter *  backdrop 
)
inlineoverride

Definition at line 317 of file dl_dispatcher.h.

319  {
320  // This dispatcher should never be used with the saveLayer() variant
321  // that does not include the content_depth parameter.
322  FML_UNREACHABLE();
323  }

The documentation for this class was generated from the following files:
impeller::ContentBoundsPromise::kMayClipContents
@ kMayClipContents
The caller claims the bounds are a subset of an estimate of the reasonably tight bounds but likely cl...
impeller::kMaxCullRect
static constexpr SkRect kMaxCullRect
Definition: dl_dispatcher.cc:615
impeller::ToImageFilter
static std::shared_ptr< ImageFilter > ToImageFilter(const flutter::DlImageFilter *filter)
Definition: dl_dispatcher.cc:515
impeller::skia_conversions::ToRect
Rect ToRect(const SkRect &rect)
Definition: skia_conversions.cc:26
impeller::ExperimentalCanvas::EndReplay
void EndReplay()
Definition: experimental_canvas.cc:745
impeller::Canvas::Save
virtual void Save(uint32_t total_content_depth=kMaxDepth)
Definition: canvas.cc:184
paint
const Paint & paint
Definition: color_source.cc:38
impeller::ContentBoundsPromise::kContainsContents
@ kContainsContents
The caller claims the bounds are a reasonably tight estimate of the coverage of the contents and shou...
impeller::Canvas::SaveLayer
virtual void SaveLayer(const Paint &paint, std::optional< Rect > bounds=std::nullopt, const std::shared_ptr< ImageFilter > &backdrop_filter=nullptr, ContentBoundsPromise bounds_promise=ContentBoundsPromise::kUnknown, uint32_t total_content_depth=kMaxDepth, bool can_distribute_opacity=false)
Definition: canvas.cc:842
impeller::RequiresReadbackForBlends
static bool RequiresReadbackForBlends(const ContentContext &renderer, flutter::DlBlendMode max_root_blend_mode)
Definition: dl_dispatcher.cc:1220