7 #include "flutter/display_list/dl_builder.h" 
    8 #include "flutter/display_list/dl_paint.h" 
    9 #include "flutter/display_list/effects/dl_color_source.h" 
   10 #include "flutter/display_list/effects/dl_image_filter.h" 
   11 #include "flutter/display_list/effects/dl_runtime_effect.h" 
   20 std::shared_ptr<DlColorSource> MakeRuntimeEffect(
 
   22     std::string_view name,
 
   23     const std::shared_ptr<std::vector<uint8_t>>& uniform_data = {},
 
   24     const std::vector<std::shared_ptr<DlColorSource>>& samplers = {}) {
 
   25   auto runtime_stages = test->OpenAssetAsRuntimeStage(name.data());
 
   28   FML_CHECK(runtime_stage);
 
   29   FML_CHECK(runtime_stage->IsDirty());
 
   31   auto dl_runtime_effect = DlRuntimeEffect::MakeImpeller(runtime_stage);
 
   33   return DlColorSource::MakeRuntimeEffect(dl_runtime_effect, samplers,
 
   43   } frag_uniforms = {.iResolution = 
Vector2(400, 400), .iTime = 100.0};
 
   44   auto uniform_data = std::make_shared<std::vector<uint8_t>>();
 
   45   uniform_data->resize(
sizeof(FragUniforms));
 
   46   memcpy(uniform_data->data(), &frag_uniforms, 
sizeof(FragUniforms));
 
   50       MakeRuntimeEffect(
this, 
"runtime_stage_example.frag.iplr", uniform_data));
 
   52   DisplayListBuilder builder;
 
   54   builder.ClipRoundRect(
 
   55       DlRoundRect::MakeRectXY(DlRect::MakeXYWH(0, 0, 400, 400), 10.0, 10.0),
 
   56       DlClipOp::kIntersect);
 
   57   builder.DrawRect(DlRect::MakeXYWH(0, 0, 400, 400), paint);
 
   60   ASSERT_TRUE(OpenPlaygroundHere(builder.Build()));
 
   67   auto uniform_data = std::make_shared<std::vector<uint8_t>>();
 
   68   uniform_data->resize(
sizeof(FragUniforms));
 
   69   memcpy(uniform_data->data(), &frag_uniforms, 
sizeof(FragUniforms));
 
   73       MakeRuntimeEffect(
this, 
"gradient.frag.iplr", uniform_data));
 
   75   DisplayListBuilder builder;
 
   77   builder.Scale(GetContentScale().
x, GetContentScale().y);
 
   78   builder.DrawPaint(paint);
 
   81   ASSERT_TRUE(OpenPlaygroundHere(builder.Build()));
 
   86       OpenAssetAsRuntimeStage(
"runtime_stage_filter_example.frag.iplr");
 
   88   std::shared_ptr<RuntimeStage> runtime_stage =
 
   90   ASSERT_TRUE(runtime_stage);
 
   91   ASSERT_TRUE(runtime_stage->IsDirty());
 
   93   std::vector<std::shared_ptr<DlColorSource>> sampler_inputs = {
 
   96   auto uniform_data = std::make_shared<std::vector<uint8_t>>();
 
   97   uniform_data->resize(
sizeof(
Vector2));
 
  100   paint.setColor(DlColor::kAqua());
 
  101   paint.setImageFilter(DlImageFilter::MakeRuntimeEffect(
 
  102       DlRuntimeEffect::MakeImpeller(runtime_stage), sampler_inputs,
 
  105   DisplayListBuilder builder;
 
  106   builder.DrawRect(DlRect::MakeXYWH(0, 0, 400, 400), paint);
 
  108   ASSERT_TRUE(OpenPlaygroundHere(builder.Build()));
 
  115   std::vector<flutter::DlColor> colors = {flutter::DlColor::kBlue(),
 
  116                                           flutter::DlColor::kRed()};
 
  117   const float stops[2] = {0.0, 1.0};
 
  118   auto linear = flutter::DlColorSource::MakeLinear({0.0, 0.0}, {300.0, 300.0},
 
  119                                                    2, colors.data(), stops,
 
  120                                                    flutter::DlTileMode::kClamp);
 
  121   std::vector<std::shared_ptr<DlColorSource>> sampler_inputs = {
 
  125   auto uniform_data = std::make_shared<std::vector<uint8_t>>();
 
  126   uniform_data->resize(
sizeof(
Vector2));
 
  129   paint.setColorSource(
 
  130       MakeRuntimeEffect(
this, 
"runtime_stage_filter_example.frag.iplr",
 
  131                         uniform_data, sampler_inputs));
 
  133   DisplayListBuilder builder;
 
  134   builder.DrawPaint(paint);
 
  136   ASSERT_TRUE(OpenPlaygroundHere(builder.Build()));
 
TEST_P(AiksTest, DrawAtlasNoColor)
constexpr RuntimeStageBackend PlaygroundBackendToRuntimeStageBackend(PlaygroundBackend backend)
static constexpr TSize MakeWH(Type width, Type height)