Home | History | Annotate | Download | only in compositor_bindings
      1 // Copyright 2014 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #ifndef CONTENT_RENDERER_COMPOSITOR_BINDINGS_WEB_BLEND_MODE_H_
      6 #define CONTENT_RENDERER_COMPOSITOR_BINDINGS_WEB_BLEND_MODE_H_
      7 
      8 #include "third_party/WebKit/public/platform/WebBlendMode.h"
      9 
     10 namespace content {
     11 
     12 inline SkXfermode::Mode BlendModeToSkia(blink::WebBlendMode blend_mode) {
     13   switch (blend_mode) {
     14     case blink::WebBlendModeNormal:
     15       return SkXfermode::kSrcOver_Mode;
     16     case blink::WebBlendModeMultiply:
     17       return SkXfermode::kMultiply_Mode;
     18     case blink::WebBlendModeScreen:
     19       return SkXfermode::kScreen_Mode;
     20     case blink::WebBlendModeOverlay:
     21       return SkXfermode::kOverlay_Mode;
     22     case blink::WebBlendModeDarken:
     23       return SkXfermode::kDarken_Mode;
     24     case blink::WebBlendModeLighten:
     25       return SkXfermode::kLighten_Mode;
     26     case blink::WebBlendModeColorDodge:
     27       return SkXfermode::kColorDodge_Mode;
     28     case blink::WebBlendModeColorBurn:
     29       return SkXfermode::kColorBurn_Mode;
     30     case blink::WebBlendModeHardLight:
     31       return SkXfermode::kHardLight_Mode;
     32     case blink::WebBlendModeSoftLight:
     33       return SkXfermode::kSoftLight_Mode;
     34     case blink::WebBlendModeDifference:
     35       return SkXfermode::kDifference_Mode;
     36     case blink::WebBlendModeExclusion:
     37       return SkXfermode::kExclusion_Mode;
     38     case blink::WebBlendModeHue:
     39       return SkXfermode::kHue_Mode;
     40     case blink::WebBlendModeSaturation:
     41       return SkXfermode::kSaturation_Mode;
     42     case blink::WebBlendModeColor:
     43       return SkXfermode::kColor_Mode;
     44     case blink::WebBlendModeLuminosity:
     45       return SkXfermode::kLuminosity_Mode;
     46   }
     47   return SkXfermode::kSrcOver_Mode;
     48 }
     49 
     50 inline blink::WebBlendMode BlendModeFromSkia(SkXfermode::Mode blend_mode) {
     51   switch (blend_mode) {
     52     case SkXfermode::kSrcOver_Mode:
     53       return blink::WebBlendModeNormal;
     54     case SkXfermode::kMultiply_Mode:
     55       return blink::WebBlendModeMultiply;
     56     case SkXfermode::kScreen_Mode:
     57       return blink::WebBlendModeScreen;
     58     case SkXfermode::kOverlay_Mode:
     59       return blink::WebBlendModeOverlay;
     60     case SkXfermode::kDarken_Mode:
     61       return blink::WebBlendModeDarken;
     62     case SkXfermode::kLighten_Mode:
     63       return blink::WebBlendModeLighten;
     64     case SkXfermode::kColorDodge_Mode:
     65       return blink::WebBlendModeColorDodge;
     66     case SkXfermode::kColorBurn_Mode:
     67       return blink::WebBlendModeColorBurn;
     68     case SkXfermode::kHardLight_Mode:
     69       return blink::WebBlendModeHardLight;
     70     case SkXfermode::kSoftLight_Mode:
     71       return blink::WebBlendModeSoftLight;
     72     case SkXfermode::kDifference_Mode:
     73       return blink::WebBlendModeDifference;
     74     case SkXfermode::kExclusion_Mode:
     75       return blink::WebBlendModeExclusion;
     76     case SkXfermode::kHue_Mode:
     77       return blink::WebBlendModeHue;
     78     case SkXfermode::kSaturation_Mode:
     79       return blink::WebBlendModeSaturation;
     80     case SkXfermode::kColor_Mode:
     81       return blink::WebBlendModeColor;
     82     case SkXfermode::kLuminosity_Mode:
     83       return blink::WebBlendModeLuminosity;
     84 
     85     // these value are SkXfermodes, but no blend modes.
     86     case SkXfermode::kClear_Mode:
     87     case SkXfermode::kSrc_Mode:
     88     case SkXfermode::kDst_Mode:
     89     case SkXfermode::kDstOver_Mode:
     90     case SkXfermode::kSrcIn_Mode:
     91     case SkXfermode::kDstIn_Mode:
     92     case SkXfermode::kSrcOut_Mode:
     93     case SkXfermode::kDstOut_Mode:
     94     case SkXfermode::kSrcATop_Mode:
     95     case SkXfermode::kDstATop_Mode:
     96     case SkXfermode::kXor_Mode:
     97     case SkXfermode::kPlus_Mode:
     98     case SkXfermode::kModulate_Mode:
     99       NOTREACHED();
    100   }
    101   return blink::WebBlendModeNormal;
    102 }
    103 
    104 }  // namespace content
    105 
    106 #endif  // CONTENT_RENDERER_COMPOSITOR_BINDINGS_WEB_BLEND_MODE_H_
    107 
    108