blob: dcd095183a65685c84dae3e141d2ceacae4882f5 [file] [log] [blame]
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CC_BLINK_WEB_BLEND_MODE_H_
#define CC_BLINK_WEB_BLEND_MODE_H_
#include "third_party/WebKit/public/platform/WebBlendMode.h"
#include "third_party/skia/include/core/SkBlendMode.h"
namespace cc_blink {
inline SkBlendMode BlendModeToSkia(blink::WebBlendMode blend_mode) {
switch (blend_mode) {
case blink::WebBlendModeNormal:
return SkBlendMode::kSrcOver;
case blink::WebBlendModeMultiply:
return SkBlendMode::kMultiply;
case blink::WebBlendModeScreen:
return SkBlendMode::kScreen;
case blink::WebBlendModeOverlay:
return SkBlendMode::kOverlay;
case blink::WebBlendModeDarken:
return SkBlendMode::kDarken;
case blink::WebBlendModeLighten:
return SkBlendMode::kLighten;
case blink::WebBlendModeColorDodge:
return SkBlendMode::kColorDodge;
case blink::WebBlendModeColorBurn:
return SkBlendMode::kColorBurn;
case blink::WebBlendModeHardLight:
return SkBlendMode::kHardLight;
case blink::WebBlendModeSoftLight:
return SkBlendMode::kSoftLight;
case blink::WebBlendModeDifference:
return SkBlendMode::kDifference;
case blink::WebBlendModeExclusion:
return SkBlendMode::kExclusion;
case blink::WebBlendModeHue:
return SkBlendMode::kHue;
case blink::WebBlendModeSaturation:
return SkBlendMode::kSaturation;
case blink::WebBlendModeColor:
return SkBlendMode::kColor;
case blink::WebBlendModeLuminosity:
return SkBlendMode::kLuminosity;
}
return SkBlendMode::kSrcOver;
}
inline blink::WebBlendMode BlendModeFromSkia(SkBlendMode blend_mode) {
switch (blend_mode) {
case SkBlendMode::kSrcOver:
return blink::WebBlendModeNormal;
case SkBlendMode::kMultiply:
return blink::WebBlendModeMultiply;
case SkBlendMode::kScreen:
return blink::WebBlendModeScreen;
case SkBlendMode::kOverlay:
return blink::WebBlendModeOverlay;
case SkBlendMode::kDarken:
return blink::WebBlendModeDarken;
case SkBlendMode::kLighten:
return blink::WebBlendModeLighten;
case SkBlendMode::kColorDodge:
return blink::WebBlendModeColorDodge;
case SkBlendMode::kColorBurn:
return blink::WebBlendModeColorBurn;
case SkBlendMode::kHardLight:
return blink::WebBlendModeHardLight;
case SkBlendMode::kSoftLight:
return blink::WebBlendModeSoftLight;
case SkBlendMode::kDifference:
return blink::WebBlendModeDifference;
case SkBlendMode::kExclusion:
return blink::WebBlendModeExclusion;
case SkBlendMode::kHue:
return blink::WebBlendModeHue;
case SkBlendMode::kSaturation:
return blink::WebBlendModeSaturation;
case SkBlendMode::kColor:
return blink::WebBlendModeColor;
case SkBlendMode::kLuminosity:
return blink::WebBlendModeLuminosity;
// these value are SkBlendModes, but no blend modes.
case SkBlendMode::kClear:
case SkBlendMode::kSrc:
case SkBlendMode::kDst:
case SkBlendMode::kDstOver:
case SkBlendMode::kSrcIn:
case SkBlendMode::kDstIn:
case SkBlendMode::kSrcOut:
case SkBlendMode::kDstOut:
case SkBlendMode::kSrcATop:
case SkBlendMode::kDstATop:
case SkBlendMode::kXor:
case SkBlendMode::kPlus:
case SkBlendMode::kModulate:
NOTREACHED();
}
return blink::WebBlendModeNormal;
}
} // namespace cc_blink
#endif // CC_BLINK_WEB_BLEND_MODE_H_