Flutter Engine Uber Docs
Docs for the entire Flutter Engine repo.
 
Loading...
Searching...
No Matches
flutter::EmbedderExternalView Class Reference

#include <embedder_external_view.h>

Classes

struct  RenderTargetDescriptor
 
struct  ViewIdentifier
 

Public Types

using PlatformViewID = int64_t
 
using ViewIdentifierSet = std::unordered_set< ViewIdentifier, ViewIdentifier::Hash, ViewIdentifier::Equal >
 
using PendingViews = std::unordered_map< ViewIdentifier, std::unique_ptr< EmbedderExternalView >, ViewIdentifier::Hash, ViewIdentifier::Equal >
 

Public Member Functions

 EmbedderExternalView (const DlISize &frame_size, const DlMatrix &surface_transformation)
 
 EmbedderExternalView (const DlISize &frame_size, const DlMatrix &surface_transformation, ViewIdentifier view_identifier, std::unique_ptr< EmbeddedViewParams > params)
 
 ~EmbedderExternalView ()
 
bool IsRootView () const
 
bool HasPlatformView () const
 
bool HasEngineRenderedContents ()
 
ViewIdentifier GetViewIdentifier () const
 
const EmbeddedViewParamsGetEmbeddedViewParams () const
 
RenderTargetDescriptor CreateRenderTargetDescriptor () const
 
DlCanvasGetCanvas ()
 
DlISize GetRenderSurfaceSize () const
 
void Render (DlCanvas &dl_canvas, bool clear_surface)
 
const DlRegionGetDlRegion () const
 

Detailed Description

Definition at line 19 of file embedder_external_view.h.

Member Typedef Documentation

◆ PendingViews

◆ PlatformViewID

Definition at line 21 of file embedder_external_view.h.

◆ ViewIdentifierSet

Constructor & Destructor Documentation

◆ EmbedderExternalView() [1/2]

flutter::EmbedderExternalView::EmbedderExternalView ( const DlISize frame_size,
const DlMatrix surface_transformation 
)

Definition at line 23 of file embedder_external_view.cc.

26 : EmbedderExternalView(frame_size, surface_transformation, {}, nullptr) {}
EmbedderExternalView(const DlISize &frame_size, const DlMatrix &surface_transformation)

◆ EmbedderExternalView() [2/2]

flutter::EmbedderExternalView::EmbedderExternalView ( const DlISize frame_size,
const DlMatrix surface_transformation,
ViewIdentifier  view_identifier,
std::unique_ptr< EmbeddedViewParams params 
)

Definition at line 28 of file embedder_external_view.cc.

33 : render_surface_size_(
34 TransformedSurfaceSize(frame_size, surface_transformation)),
35 surface_transformation_(surface_transformation),
36 view_identifier_(view_identifier),
37 embedded_view_params_(std::move(params)),
38 slice_(std::make_unique<DisplayListEmbedderViewSlice>(
39 DlRect::MakeSize(frame_size))) {}
EmbedderExternalView::ViewIdentifier view_identifier
const EmbeddedViewParams * params
static DlISize TransformedSurfaceSize(const DlISize &size, const DlMatrix &transformation)
static constexpr TRect MakeSize(const TSize< U > &size)
Definition rect.h:150

◆ ~EmbedderExternalView()

flutter::EmbedderExternalView::~EmbedderExternalView ( )
default

Member Function Documentation

◆ CreateRenderTargetDescriptor()

EmbedderExternalView::RenderTargetDescriptor flutter::EmbedderExternalView::CreateRenderTargetDescriptor ( ) const

Definition at line 44 of file embedder_external_view.cc.

44 {
45 return RenderTargetDescriptor(render_surface_size_);
46}

◆ GetCanvas()

DlCanvas * flutter::EmbedderExternalView::GetCanvas ( )

Definition at line 48 of file embedder_external_view.cc.

48 {
49 return slice_->canvas();
50}

◆ GetDlRegion()

const DlRegion & flutter::EmbedderExternalView::GetDlRegion ( ) const

Definition at line 64 of file embedder_external_view.cc.

64 {
65 return slice_->getRegion();
66}

◆ GetEmbeddedViewParams()

const EmbeddedViewParams * flutter::EmbedderExternalView::GetEmbeddedViewParams ( ) const

Definition at line 85 of file embedder_external_view.cc.

85 {
86 return embedded_view_params_.get();
87}

◆ GetRenderSurfaceSize()

DlISize flutter::EmbedderExternalView::GetRenderSurfaceSize ( ) const

Definition at line 52 of file embedder_external_view.cc.

52 {
53 return render_surface_size_;
54}

◆ GetViewIdentifier()

EmbedderExternalView::ViewIdentifier flutter::EmbedderExternalView::GetViewIdentifier ( ) const

Definition at line 80 of file embedder_external_view.cc.

81 {
82 return view_identifier_;
83}

◆ HasEngineRenderedContents()

bool flutter::EmbedderExternalView::HasEngineRenderedContents ( )

Definition at line 68 of file embedder_external_view.cc.

68 {
69 if (has_engine_rendered_contents_.has_value()) {
70 return has_engine_rendered_contents_.value();
71 }
72 TryEndRecording();
73 DlOpSpy dl_op_spy;
74 slice_->dispatch(dl_op_spy);
75 has_engine_rendered_contents_ = dl_op_spy.did_draw() && !slice_->is_empty();
76 // NOLINTNEXTLINE(bugprone-unchecked-optional-access)
77 return has_engine_rendered_contents_.value();
78}

References flutter::DlOpSpy::did_draw().

Referenced by Render().

◆ HasPlatformView()

bool flutter::EmbedderExternalView::HasPlatformView ( ) const

Definition at line 60 of file embedder_external_view.cc.

60 {
61 return view_identifier_.platform_view_id.has_value();
62}

References flutter::EmbedderExternalView::ViewIdentifier::platform_view_id.

Referenced by IsRootView().

◆ IsRootView()

bool flutter::EmbedderExternalView::IsRootView ( ) const

Definition at line 56 of file embedder_external_view.cc.

56 {
57 return !HasPlatformView();
58}

References HasPlatformView().

◆ Render()

void flutter::EmbedderExternalView::Render ( DlCanvas dl_canvas,
bool  clear_surface 
)

Definition at line 89 of file embedder_external_view.cc.

89 {
90 TRACE_EVENT0("flutter", "EmbedderExternalView::Render");
91 TryEndRecording();
93 << "Unnecessarily asked to render into a render target when there was "
94 "nothing to render.";
95
96 int restore_count = dl_canvas.GetSaveCount();
97 dl_canvas.SetTransform(surface_transformation_);
98 if (clear_surface) {
99 dl_canvas.Clear(DlColor::kTransparent());
100 }
101 slice_->render_into(&dl_canvas);
102 dl_canvas.RestoreToCount(restore_count);
103}
#define FML_DCHECK(condition)
Definition logging.h:122
static constexpr DlColor kTransparent()
Definition dl_color.h:68
#define TRACE_EVENT0(category_group, name)

References flutter::DlCanvas::Clear(), FML_DCHECK, flutter::DlCanvas::GetSaveCount(), HasEngineRenderedContents(), flutter::DlColor::kTransparent(), flutter::DlCanvas::RestoreToCount(), flutter::DlCanvas::SetTransform(), and TRACE_EVENT0.


The documentation for this class was generated from the following files: