7 #include "flutter/fml/logging.h"
18 const std::shared_ptr<impeller::Context>& context) {
20 FML_DLOG(ERROR) <<
"Invalid gradient data.";
29 context->GetResourceAllocator()->CreateTexture(texture_descriptor);
31 FML_DLOG(ERROR) <<
"Could not create Impeller texture.";
36 std::make_shared<fml::DataMapping>(gradient_data.
color_bytes);
38 context->GetResourceAllocator()->CreateBufferWithCopy(*data_mapping);
40 auto cmd_buffer = context->CreateCommandBuffer();
41 auto blit_pass = cmd_buffer->CreateBlitPass();
44 if (!blit_pass->EncodeCommands(context->GetResourceAllocator()) ||
45 !context->GetCommandQueue()->Submit({std::move(cmd_buffer)}).ok()) {
54 const std::vector<Scalar>& stops) {
55 FML_DCHECK(stops.size() == colors.size());
57 std::vector<StopData> result;
58 result.reserve(stops.size());
60 for (
auto i = 0u; i < stops.size(); i++) {
61 Scalar delta = stops[i] - last_stop;
62 Scalar inverse_delta = delta == 0.0f ? 0.0 : 1.0 / delta;
64 .
color = colors[i], .stop = stops[i], .inverse_delta = inverse_delta});