Home | History | Annotate | Download | only in docs
      1 #Topic Blend_Mode_Overview
      2 
      3 Describes how destination pixel is replaced with a combination of itself and
      4 source pixel. Blend_Mode may use source, destination, or both. Blend_Mode may
      5 operate on each Color component independently, or may allow all source pixel
      6 components to contribute to one destination pixel component. 
      7 
      8 Blend_Mode does not use adjacent pixels to determine the outcome.
      9 
     10 Blend_Mode uses source and read destination Alpha to determine written
     11 destination Alpha; both source and destination Alpha may also affect written
     12 destination Color components.
     13 
     14 Regardless of how Alpha is encoded in source and destination pixel, nearly all
     15 Color_Types treat it as ranging from zero to one. And, nearly all Blend_Mode
     16 algorithms limit the output so that all results are also zero to one.
     17 
     18 Two exceptions are SkBlendMode::kPlus and kRGBA_F16_SkColorType. 
     19 
     20 SkBlendMode::kPlus permits computing Alpha and Color component values larger
     21 than one. For Color_Types other than kRGBA_F16_SkColorType, resulting Alpha
     22 and component values are clamped to one.
     23 
     24 kRGBA_F16_SkColorType permits values outside the zero to one range. It is up
     25 to the client to ensure that the result is within the range of zero to one,
     26 and therefore well-defined.
     27 
     28 #Subtopic Porter_Duff
     29 #Alias Porter_Duff ##
     30 #Line # classic color blend algorithms ##
     31 
     32 #A Compositing Digital Images # https://graphics.pixar.com/library/Compositing/paper.pdf ##
     33 describes Porter_Duff modes SkBlendMode::kClear through SkBlendMode::kXor.
     34 
     35 Drawing a bitmap with transparency using Porter_Duff compositing is free to clear
     36 the destination.
     37 
     38 #Illustration 1
     39 
     40 Draw geometry with transparency using Porter_Duff compositing does not combine
     41 transparent source pixels, leaving the destination outside the geometry untouched.
     42 
     43 #Illustration 2
     44 
     45 ##
     46 
     47 #Subtopic Lighten_Darken
     48 #Line # color blends to lighten or darken result ##
     49 
     50 Modes SkBlendMode::kPlus and SkBlendMode::kScreen use
     51 simple arithmetic to lighten or darken the destination. Modes 
     52 SkBlendMode::kOverlay through SkBlendMode::kMultiply use more complicated
     53 algorithms to lighten or darken; sometimes one mode does both, as described by
     54 #A Blend Modes # https://en.wikipedia.org/wiki/Blend_modes ##
     55 .
     56 
     57 #Illustration
     58 
     59 ##
     60 
     61 #Subtopic Modulate_Blend
     62 #Line # multiply color components ##
     63 
     64 SkBlendMode::kModulate is a mashup of SkBlendMode::kSrcATop and SkBlendMode::kMultiply.
     65 It multiplies all components, including Alpha; unlike SkBlendMode::kMultiply, if either
     66 source or destination is transparent, result is transparent. SkBlendMode::kModulate
     67 uses Premultiplied values to compute the product; SkBlendMode::kMultiply uses Unpremultiplied
     68 values to compute the product.
     69 
     70 #Illustration
     71 
     72 ##
     73 
     74 #Subtopic Color_Blends
     75 #Line # non-separable blend modes ##
     76 
     77 Modes SkBlendMode::kHue, SkBlendMode::kSaturation, SkBlendMode::kColor, and
     78 SkBlendMode::kLuminosity convert source and destination pixels using all
     79 components color information, using 
     80 ###$
     81 $A non-separable blend modes $ https://www.w3.org/TR/compositing-1/#blendingnonseparable $$
     82 $$$#
     83 .
     84 
     85 #Illustration
     86 
     87 ##
     88 
     89 #Topic Blend_Mode_Overview ##
     90