@@ -320,23 +320,58 @@ static void ConvertStops(T* gradient,
320
320
}
321
321
}
322
322
323
+ static std::optional<Paint::ColorSourceType> ToColorSourceType (
324
+ flutter::DlColorSourceType type) {
325
+ switch (type) {
326
+ case flutter::DlColorSourceType::kColor :
327
+ return Paint::ColorSourceType::kColor ;
328
+ case flutter::DlColorSourceType::kImage :
329
+ return Paint::ColorSourceType::kImage ;
330
+ case flutter::DlColorSourceType::kLinearGradient :
331
+ return Paint::ColorSourceType::kLinearGradient ;
332
+ case flutter::DlColorSourceType::kRadialGradient :
333
+ return Paint::ColorSourceType::kRadialGradient ;
334
+ case flutter::DlColorSourceType::kConicalGradient :
335
+ return Paint::ColorSourceType::kConicalGradient ;
336
+ case flutter::DlColorSourceType::kSweepGradient :
337
+ return Paint::ColorSourceType::kSweepGradient ;
338
+ case flutter::DlColorSourceType::kRuntimeEffect :
339
+ return Paint::ColorSourceType::kRuntimeEffect ;
340
+ case flutter::DlColorSourceType::kUnknown :
341
+ return std::nullopt;
342
+ }
343
+ }
344
+
323
345
// |flutter::Dispatcher|
324
346
void DisplayListDispatcher::setColorSource (
325
347
const flutter::DlColorSource* source) {
326
348
if (!source) {
327
349
paint_.color_source = std::nullopt;
350
+ paint_.color_source_type = Paint::ColorSourceType::kColor ;
328
351
return ;
329
352
}
330
353
331
- switch (source->type ()) {
332
- case flutter::DlColorSourceType::kColor : {
354
+ std::optional<Paint::ColorSourceType> type =
355
+ ToColorSourceType (source->type ());
356
+
357
+ if (!type.has_value ()) {
358
+ FML_LOG (ERROR) << " Requested ColorSourceType::kUnknown" ;
359
+ paint_.color_source = std::nullopt;
360
+ paint_.color_source_type = Paint::ColorSourceType::kColor ;
361
+ return ;
362
+ }
363
+
364
+ paint_.color_source_type = type.value ();
365
+
366
+ switch (type.value ()) {
367
+ case Paint::ColorSourceType::kColor : {
333
368
const flutter::DlColorColorSource* color = source->asColor ();
334
369
paint_.color_source = std::nullopt;
335
370
setColor (color->color ());
336
371
FML_DCHECK (color);
337
372
return ;
338
373
}
339
- case flutter::DlColorSourceType ::kLinearGradient : {
374
+ case Paint::ColorSourceType ::kLinearGradient : {
340
375
const flutter::DlLinearGradientColorSource* linear =
341
376
source->asLinearGradient ();
342
377
FML_DCHECK (linear);
@@ -360,7 +395,7 @@ void DisplayListDispatcher::setColorSource(
360
395
};
361
396
return ;
362
397
}
363
- case flutter::DlColorSourceType ::kRadialGradient : {
398
+ case Paint::ColorSourceType ::kRadialGradient : {
364
399
const flutter::DlRadialGradientColorSource* radialGradient =
365
400
source->asRadialGradient ();
366
401
FML_DCHECK (radialGradient);
@@ -384,7 +419,7 @@ void DisplayListDispatcher::setColorSource(
384
419
};
385
420
return ;
386
421
}
387
- case flutter::DlColorSourceType ::kSweepGradient : {
422
+ case Paint::ColorSourceType ::kSweepGradient : {
388
423
const flutter::DlSweepGradientColorSource* sweepGradient =
389
424
source->asSweepGradient ();
390
425
FML_DCHECK (sweepGradient);
@@ -411,7 +446,7 @@ void DisplayListDispatcher::setColorSource(
411
446
};
412
447
return ;
413
448
}
414
- case flutter::DlColorSourceType ::kImage : {
449
+ case Paint::ColorSourceType ::kImage : {
415
450
const flutter::DlImageColorSource* image_color_source = source->asImage ();
416
451
FML_DCHECK (image_color_source &&
417
452
image_color_source->image ()->impeller_texture ());
@@ -431,7 +466,7 @@ void DisplayListDispatcher::setColorSource(
431
466
};
432
467
return ;
433
468
}
434
- case flutter::DlColorSourceType ::kRuntimeEffect : {
469
+ case Paint::ColorSourceType ::kRuntimeEffect : {
435
470
const flutter::DlRuntimeEffectColorSource* runtime_effect_color_source =
436
471
source->asRuntimeEffect ();
437
472
auto runtime_stage =
@@ -466,14 +501,10 @@ void DisplayListDispatcher::setColorSource(
466
501
};
467
502
return ;
468
503
}
469
- case flutter::DlColorSourceType::kConicalGradient :
470
- case flutter::DlColorSourceType::kUnknown :
504
+ case Paint::ColorSourceType::kConicalGradient :
471
505
UNIMPLEMENTED;
472
506
break ;
473
507
}
474
-
475
- // Needs https://github.com/flutter/flutter/issues/95434
476
- UNIMPLEMENTED;
477
508
}
478
509
479
510
static std::optional<Paint::ColorFilterProc> ToColorFilterProc (
@@ -509,7 +540,7 @@ static std::optional<Paint::ColorFilterProc> ToColorFilterProc(
509
540
return ColorFilterContents::MakeLinearToSrgbFilter ({std::move (input)});
510
541
};
511
542
case flutter::DlColorFilterType::kUnknown :
512
- FML_LOG (ERROR) << " requested DlColorFilterType::kUnknown" ;
543
+ FML_LOG (ERROR) << " Requested DlColorFilterType::kUnknown" ;
513
544
UNIMPLEMENTED;
514
545
}
515
546
return std::nullopt;
0 commit comments