9#if IMPELLER_SUPPORTS_RENDERING
25#define ASSERT_DID_DRAW(spy, dl) \
27 ASSERT_TRUE(spy.did_draw()); \
28 ASSERT_TRUE(dl->modifies_transparent_black()); \
31#define ASSERT_NO_DRAW(spy, dl) \
33 ASSERT_FALSE(spy.did_draw()); \
34 ASSERT_FALSE(dl->modifies_transparent_black()); \
44 sk_sp<DisplayList> dl = builder.
Build();
46 dl->Dispatch(dl_op_spy);
55 sk_sp<DisplayList> dl = builder.
Build();
57 dl->Dispatch(dl_op_spy);
64 sk_sp<DisplayList> dl = builder.
Build();
66 dl->Dispatch(dl_op_spy);
73 sk_sp<DisplayList> dl = builder.
Build();
75 dl->Dispatch(dl_op_spy);
86 sk_sp<DisplayList> dl = builder.
Build();
88 dl->Dispatch(dl_op_spy);
118 builder.
DrawColor(color, DlBlendMode::kSrc);
119 sk_sp<DisplayList> dl = builder.
Build();
121 dl->Dispatch(dl_op_spy);
127 builder.
DrawColor(color, DlBlendMode::kSrc);
128 sk_sp<DisplayList> dl = builder.
Build();
130 dl->Dispatch(dl_op_spy);
136 builder.
DrawColor(color, DlBlendMode::kSrcOver);
137 sk_sp<DisplayList> dl = builder.
Build();
139 dl->Dispatch(dl_op_spy);
149 sk_sp<DisplayList> dl = builder.
Build();
151 dl->Dispatch(dl_op_spy);
158 sk_sp<DisplayList> dl = builder.
Build();
160 dl->Dispatch(dl_op_spy);
170 sk_sp<DisplayList> dl = builder.
Build();
172 dl->Dispatch(dl_op_spy);
179 sk_sp<DisplayList> dl = builder.
Build();
181 dl->Dispatch(dl_op_spy);
191 sk_sp<DisplayList> dl = builder.
Build();
193 dl->Dispatch(dl_op_spy);
200 sk_sp<DisplayList> dl = builder.
Build();
202 dl->Dispatch(dl_op_spy);
212 sk_sp<DisplayList> dl = builder.
Build();
214 dl->Dispatch(dl_op_spy);
221 sk_sp<DisplayList> dl = builder.
Build();
223 dl->Dispatch(dl_op_spy);
233 sk_sp<DisplayList> dl = builder.
Build();
235 dl->Dispatch(dl_op_spy);
242 sk_sp<DisplayList> dl = builder.
Build();
244 dl->Dispatch(dl_op_spy);
254 sk_sp<DisplayList> dl = builder.
Build();
256 dl->Dispatch(dl_op_spy);
263 sk_sp<DisplayList> dl = builder.
Build();
265 dl->Dispatch(dl_op_spy);
275 sk_sp<DisplayList> dl = builder.
Build();
277 dl->Dispatch(dl_op_spy);
284 sk_sp<DisplayList> dl = builder.
Build();
286 dl->Dispatch(dl_op_spy);
297 path_builder.
MoveTo({0, 1});
298 path_builder.
LineTo({1, 1});
300 sk_sp<DisplayList> dl = builder.
Build();
302 dl->Dispatch(dl_op_spy);
309 path_builder.
MoveTo({0, 0});
310 path_builder.
LineTo({1, 0});
311 path_builder.
LineTo({0, 1});
313 sk_sp<DisplayList> dl = builder.
Build();
315 dl->Dispatch(dl_op_spy);
323 path_builder.
MoveTo({0, 1});
324 path_builder.
LineTo({1, 1});
326 sk_sp<DisplayList> dl = builder.
Build();
328 dl->Dispatch(dl_op_spy);
338 sk_sp<DisplayList> dl = builder.
Build();
340 dl->Dispatch(dl_op_spy);
347 sk_sp<DisplayList> dl = builder.
Build();
349 dl->Dispatch(dl_op_spy);
360 sk_sp<DisplayList> dl = builder.
Build();
362 dl->Dispatch(dl_op_spy);
370 sk_sp<DisplayList> dl = builder.
Build();
372 dl->Dispatch(dl_op_spy);
386 const DlPoint texture_coordinates[] = {
397 texture_coordinates, colors, 0);
398 builder.
DrawVertices(dl_vertices, DlBlendMode::kSrc, paint);
399 sk_sp<DisplayList> dl = builder.
Build();
401 dl->Dispatch(dl_op_spy);
412 const DlPoint texture_coordinates[] = {
423 texture_coordinates, colors, 0);
424 builder.
DrawVertices(dl_vertices, DlBlendMode::kSrc, paint);
425 sk_sp<DisplayList> dl = builder.
Build();
427 dl->Dispatch(dl_op_spy);
437 sk_sp<DisplayList> dl = builder.
Build();
439 dl->Dispatch(dl_op_spy);
447 sk_sp<DisplayList> dl = builder.
Build();
449 dl->Dispatch(dl_op_spy);
457 sk_sp<DisplayList> dl = builder.
Build();
459 dl->Dispatch(dl_op_spy);
472 sk_sp<DisplayList> dl = builder.
Build();
474 dl->Dispatch(dl_op_spy);
484 sk_sp<DisplayList> dl = builder.
Build();
490 sk_sp<DisplayList> dl2 = builder_parent.
Build();
493 dl2->Dispatch(dl_op_spy);
500 sk_sp<DisplayList> dl = builder.
Build();
506 sk_sp<DisplayList> dl2 = builder_parent.
Build();
509 dl2->Dispatch(dl_op_spy);
517 sk_sp<DisplayList> dl = builder.
Build();
523 sk_sp<DisplayList> dl2 = builder_parent.
Build();
526 dl2->Dispatch(dl_op_spy);
534 sk_sp<DisplayList> dl = builder.
Build();
540 sk_sp<DisplayList> dl2 = builder_parent.
Build();
543 dl2->Dispatch(dl_op_spy);
548#if IMPELLER_SUPPORTS_RENDERING
554 std::string
string =
"xx";
555 builder.
DrawText(test_text, 1, 1, paint);
556 sk_sp<DisplayList> dl = builder.
Build();
558 dl->Dispatch(dl_op_spy);
563 DisplayListBuilder builder;
565 std::string
string =
"xx";
566 builder.DrawText(test_text, 1, 1, paint);
567 sk_sp<DisplayList> dl = builder.Build();
569 dl->Dispatch(dl_op_spy);
579 std::string
string =
"xx";
581 sk_sp<DisplayList> dl = builder.
Build();
583 dl->Dispatch(dl_op_spy);
589 std::string
string =
"xx";
591 sk_sp<DisplayList> dl = builder.
Build();
593 dl->Dispatch(dl_op_spy);
604 sk_sp<DisplayList> dl = builder.
Build();
606 dl->Dispatch(dl_op_spy);
614 sk_sp<DisplayList> dl = builder.
Build();
616 dl->Dispatch(dl_op_spy);
void DrawOval(const DlRect &bounds, const DlPaint &paint) override
void DrawImageRect(const sk_sp< DlImage > &image, const DlRect &src, const DlRect &dst, DlImageSampling sampling, const DlPaint *paint=nullptr, DlSrcRectConstraint constraint=DlSrcRectConstraint::kFast) override
void DrawVertices(const std::shared_ptr< DlVertices > &vertices, DlBlendMode mode, const DlPaint &paint) override
void DrawImageNine(const sk_sp< DlImage > &image, const DlIRect ¢er, const DlRect &dst, DlFilterMode filter, const DlPaint *paint=nullptr) override
void DrawAtlas(const sk_sp< DlImage > &atlas, const DlRSTransform xform[], const DlRect tex[], const DlColor colors[], int count, DlBlendMode mode, DlImageSampling sampling, const DlRect *cullRect, const DlPaint *paint=nullptr) override
void DrawRoundRect(const DlRoundRect &rrect, const DlPaint &paint) override
void DrawArc(const DlRect &bounds, DlScalar start, DlScalar sweep, bool useCenter, const DlPaint &paint) override
void DrawShadow(const DlPath &path, const DlColor color, const DlScalar elevation, bool transparent_occluder, DlScalar dpr) override
Draws the shadow of the given |path| rendered in the provided |color| (which is only consulted for it...
void DrawImage(const sk_sp< DlImage > &image, const DlPoint &point, DlImageSampling sampling, const DlPaint *paint=nullptr) override
void DrawColor(DlColor color, DlBlendMode mode) override
void DrawCircle(const DlPoint ¢er, DlScalar radius, const DlPaint &paint) override
void DrawLine(const DlPoint &p0, const DlPoint &p1, const DlPaint &paint) override
void DrawText(const std::shared_ptr< DlText > &text, DlScalar x, DlScalar y, const DlPaint &paint) override
void DrawDisplayList(const sk_sp< DisplayList > display_list, DlScalar opacity=SK_Scalar1) override
void DrawPaint(const DlPaint &paint) override
void DrawDashedLine(const DlPoint &p0, const DlPoint &p1, DlScalar on_length, DlScalar off_length, const DlPaint &paint) override
sk_sp< DisplayList > Build()
void DrawPath(const DlPath &path, const DlPaint &paint) override
void DrawPoints(DlPointMode mode, uint32_t count, const DlPoint pts[], const DlPaint &paint) override
void DrawRect(const DlRect &rect, const DlPaint &paint) override
static std::shared_ptr< DlColorSource > MakeLinear(const DlPoint start_point, const DlPoint end_point, uint32_t stop_count, const DlColor *colors, const float *stops, DlTileMode tile_mode, const DlMatrix *matrix=nullptr)
Internal API for rendering recorded display lists to backends.
virtual void setColorSource(const DlColorSource *source)=0
virtual void setColor(DlColor color)=0
virtual void drawRect(const DlRect &rect)=0
bool did_draw()
Returns true if any non transparent content has been drawn.
DlPaint & setDrawStyle(DlDrawStyle style)
DlPaint & setColorSource(std::nullptr_t source)
DlPathBuilder & LineTo(DlPoint p2)
Draw a line from the current point to the indicated point p2.
DlPathBuilder & MoveTo(DlPoint p2)
Start a new contour that will originate at the indicated point p2.
const DlPath TakePath()
Returns the path constructed by this path builder and resets its internal state to the default state ...
static std::shared_ptr< DlTextImpeller > MakeFromBlob(const sk_sp< SkTextBlob > &blob)
static std::shared_ptr< DlTextSkia > Make(const sk_sp< SkTextBlob > &blob)
static std::shared_ptr< DlVertices > Make(DlVertexMode mode, int vertex_count, const DlPoint vertices[], const DlPoint texture_coordinates[], const DlColor colors[], int index_count=0, const uint16_t indices[]=nullptr, const DlRect *bounds=nullptr)
Constructs a DlVector with compact inline storage for all of its required and optional lists of data.
#define ASSERT_DID_DRAW(spy, dl)
#define ASSERT_NO_DRAW(spy, dl)
static const DlPath kTestPath1
TEST(NativeAssetsManagerTest, NoAvailableAssets)
sk_sp< SkTextBlob > GetTestTextBlob(int index)
impeller::Degrees DlDegrees
@ kPoints
draw each point separately
@ kTriangles
The vertices are taken 3 at a time to form a triangle.
@ kStroke
strokes boundary of shapes
static constexpr DlColor kBlue()
static constexpr DlColor kBlack()
static constexpr DlColor kTransparent()
static constexpr DlColor kRed()
static constexpr DlColor kGreen()
static RoundRect MakeRect(const Rect &rect)
static constexpr TRect MakeWH(Type width, Type height)
static constexpr TRect MakeXYWH(Type x, Type y, Type width, Type height)
std::vector< Point > points