Skip to content

Commit

Permalink
Use new DlBlendMode object (flutter#78)
Browse files Browse the repository at this point in the history
  • Loading branch information
JsouLiang authored and dnfield committed Apr 27, 2022
1 parent 5b1b9df commit b32a65f
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 40 deletions.
72 changes: 36 additions & 36 deletions impeller/display_list/display_list_dispatcher.cc
Original file line number Diff line number Diff line change
Expand Up @@ -159,60 +159,60 @@ void DisplayListDispatcher::setInvertColors(bool invert) {
UNIMPLEMENTED;
}

std::optional<Entity::BlendMode> ToBlendMode(SkBlendMode mode) {
std::optional<Entity::BlendMode> ToBlendMode(flutter::DlBlendMode mode) {
switch (mode) {
case SkBlendMode::kClear:
case flutter::DlBlendMode::kClear:
return Entity::BlendMode::kClear;
case SkBlendMode::kSrc:
case flutter::DlBlendMode::kSrc:
return Entity::BlendMode::kSource;
case SkBlendMode::kDst:
case flutter::DlBlendMode::kDst:
return Entity::BlendMode::kDestination;
case SkBlendMode::kSrcOver:
case flutter::DlBlendMode::kSrcOver:
return Entity::BlendMode::kSourceOver;
case SkBlendMode::kDstOver:
case flutter::DlBlendMode::kDstOver:
return Entity::BlendMode::kDestinationOver;
case SkBlendMode::kSrcIn:
case flutter::DlBlendMode::kSrcIn:
return Entity::BlendMode::kSourceIn;
case SkBlendMode::kDstIn:
case flutter::DlBlendMode::kDstIn:
return Entity::BlendMode::kDestinationIn;
case SkBlendMode::kSrcOut:
case flutter::DlBlendMode::kSrcOut:
return Entity::BlendMode::kSourceOut;
case SkBlendMode::kDstOut:
case flutter::DlBlendMode::kDstOut:
return Entity::BlendMode::kDestinationOut;
case SkBlendMode::kSrcATop:
case flutter::DlBlendMode::kSrcATop:
return Entity::BlendMode::kSourceATop;
case SkBlendMode::kDstATop:
case flutter::DlBlendMode::kDstATop:
return Entity::BlendMode::kDestinationATop;
case SkBlendMode::kXor:
case flutter::DlBlendMode::kXor:
return Entity::BlendMode::kXor;
case SkBlendMode::kPlus:
case flutter::DlBlendMode::kPlus:
return Entity::BlendMode::kPlus;
case SkBlendMode::kModulate:
case flutter::DlBlendMode::kModulate:
return Entity::BlendMode::kModulate;
case SkBlendMode::kScreen:
case SkBlendMode::kOverlay:
case SkBlendMode::kDarken:
case SkBlendMode::kLighten:
case SkBlendMode::kColorDodge:
case SkBlendMode::kColorBurn:
case SkBlendMode::kHardLight:
case SkBlendMode::kSoftLight:
case SkBlendMode::kDifference:
case SkBlendMode::kExclusion:
case SkBlendMode::kMultiply:
case SkBlendMode::kHue:
case SkBlendMode::kSaturation:
case SkBlendMode::kColor:
case SkBlendMode::kLuminosity:
case flutter::DlBlendMode::kScreen:
case flutter::DlBlendMode::kOverlay:
case flutter::DlBlendMode::kDarken:
case flutter::DlBlendMode::kLighten:
case flutter::DlBlendMode::kColorDodge:
case flutter::DlBlendMode::kColorBurn:
case flutter::DlBlendMode::kHardLight:
case flutter::DlBlendMode::kSoftLight:
case flutter::DlBlendMode::kDifference:
case flutter::DlBlendMode::kExclusion:
case flutter::DlBlendMode::kMultiply:
case flutter::DlBlendMode::kHue:
case flutter::DlBlendMode::kSaturation:
case flutter::DlBlendMode::kColor:
case flutter::DlBlendMode::kLuminosity:
return std::nullopt;
}

return std::nullopt;
}

// |flutter::Dispatcher|
void DisplayListDispatcher::setBlendMode(SkBlendMode sk_mode) {
if (auto mode = ToBlendMode(sk_mode); mode.has_value()) {
void DisplayListDispatcher::setBlendMode(flutter::DlBlendMode dl_mode) {
if (auto mode = ToBlendMode(dl_mode); mode.has_value()) {
paint_.blend_mode = mode.value();
} else {
UNIMPLEMENTED;
Expand Down Expand Up @@ -454,10 +454,10 @@ void DisplayListDispatcher::clipPath(const SkPath& path,
}

// |flutter::Dispatcher|
void DisplayListDispatcher::drawColor(SkColor color, SkBlendMode sk_mode) {
void DisplayListDispatcher::drawColor(SkColor color, flutter::DlBlendMode dl_mode) {
Paint paint;
paint.color = ToColor(color);
if (auto mode = ToBlendMode(sk_mode); mode.has_value()) {
if (auto mode = ToBlendMode(dl_mode); mode.has_value()) {
paint.blend_mode = mode.value();
} else {
FML_DLOG(ERROR) << "Unimplemented blend mode in " << __FUNCTION__;
Expand Down Expand Up @@ -530,7 +530,7 @@ void DisplayListDispatcher::drawPoints(SkCanvas::PointMode mode,

// |flutter::Dispatcher|
void DisplayListDispatcher::drawVertices(const sk_sp<SkVertices> vertices,
SkBlendMode mode) {
flutter::DlBlendMode mode) {
// Needs https://github.com/flutter/flutter/issues/95434
UNIMPLEMENTED;
}
Expand Down Expand Up @@ -582,7 +582,7 @@ void DisplayListDispatcher::drawAtlas(const sk_sp<SkImage> atlas,
const SkRect tex[],
const SkColor colors[],
int count,
SkBlendMode mode,
flutter::DlBlendMode mode,
const SkSamplingOptions& sampling,
const SkRect* cull_rect,
bool render_with_attributes) {
Expand Down
9 changes: 5 additions & 4 deletions impeller/display_list/display_list_dispatcher.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
#pragma once

#include "flutter/display_list/display_list.h"
#include "flutter/display_list/display_list_blend_mode.h"
#include "flutter/display_list/display_list_dispatcher.h"
#include "flutter/fml/macros.h"
#include "impeller/aiks/canvas.h"
Expand Down Expand Up @@ -54,7 +55,7 @@ class DisplayListDispatcher final : public flutter::Dispatcher {
void setInvertColors(bool invert) override;

// |flutter::Dispatcher|
void setBlendMode(SkBlendMode mode) override;
void setBlendMode(flutter::DlBlendMode mode) override;

// |flutter::Dispatcher|
void setBlender(sk_sp<SkBlender> blender) override;
Expand Down Expand Up @@ -129,7 +130,7 @@ class DisplayListDispatcher final : public flutter::Dispatcher {
void clipPath(const SkPath& path, SkClipOp clip_op, bool is_aa) override;

// |flutter::Dispatcher|
void drawColor(SkColor color, SkBlendMode mode) override;
void drawColor(SkColor color, flutter::DlBlendMode mode) override;

// |flutter::Dispatcher|
void drawPaint() override;
Expand Down Expand Up @@ -168,7 +169,7 @@ class DisplayListDispatcher final : public flutter::Dispatcher {

// |flutter::Dispatcher|
void drawVertices(const sk_sp<SkVertices> vertices,
SkBlendMode mode) override;
flutter::DlBlendMode mode) override;

// |flutter::Dispatcher|
void drawImage(const sk_sp<SkImage> image,
Expand Down Expand Up @@ -204,7 +205,7 @@ class DisplayListDispatcher final : public flutter::Dispatcher {
const SkRect tex[],
const SkColor colors[],
int count,
SkBlendMode mode,
flutter::DlBlendMode mode,
const SkSamplingOptions& sampling,
const SkRect* cull_rect,
bool render_with_attributes) override;
Expand Down

0 comments on commit b32a65f

Please sign in to comment.