• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1SkBlendMode Reference
2===
3
4
5<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0">
6enum class <a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a> {
7    kClear,
8    kSrc,
9    kDst,
10    kSrcOver,
11    kDstOver,
12    kSrcIn,
13    kDstIn,
14    kSrcOut,
15    kDstOut,
16    kSrcATop,
17    kDstATop,
18    kXor,
19    kPlus,
20    kModulate,
21    kScreen,
22    kLastCoeffMode = kScreen,
23    kOverlay,
24    kDarken,
25    kLighten,
26    kColorDodge,
27    kColorBurn,
28    kHardLight,
29    kSoftLight,
30    kDifference,
31    kExclusion,
32    kMultiply,
33    kLastSeparableMode = kMultiply,
34    kHue,
35    kSaturation,
36    kColor,
37    kLuminosity,
38    kLastMode = kLuminosity,
39};
40
41const char* <a href='SkBlendMode_Reference#SkBlendMode_Name'>SkBlendMode_Name</a>(<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a> blendMode);
42</pre>
43
44<a name='SkBlendMode'></a>
45
46---
47
48### Constants
49
50<table style='border-collapse: collapse; width: 62.5em'>
51  <tr><th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Const</th>
52<th style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>Value</th>
53<th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Details</th>
54<th style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>Description</th></tr>
55  <tr style='background-color: #f0f0f0; '>
56    <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kClear'><code>SkBlendMode::kClear</code></a></td>
57    <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>0</td>
58    <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Clear'>Clear</a>&nbsp;</td>
59    <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
60Replaces destination with <a href='SkColor_Reference#Alpha'>Alpha</a> and <a href='SkColor_Reference#Color'>Color</a> components set to zero;
61a fully transparent <a href='undocumented#Pixel'>pixel</a>.
62</td>
63  </tr>
64  <tr>
65    <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kSrc'><code>SkBlendMode::kSrc</code></a></td>
66    <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>1</td>
67    <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Src'>Src</a>&nbsp;</td>
68    <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
69Replaces destination with source. Destination <a href='SkColor_Reference#Alpha'>alpha</a> and <a href='SkColor_Reference#Color'>color</a> component values
70are ignored.
71</td>
72  </tr>
73  <tr style='background-color: #f0f0f0; '>
74    <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kDst'><code>SkBlendMode::kDst</code></a></td>
75    <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>2</td>
76    <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Dst'>Dst</a>&nbsp;</td>
77    <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
78Preserves destination, ignoring source. Drawing with <a href='SkPaint_Reference#Paint'>Paint</a> set to <a href='#SkBlendMode_kDst'>kDst</a> has
79no effect.
80</td>
81  </tr>
82  <tr>
83    <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kSrcOver'><code>SkBlendMode::kSrcOver</code></a></td>
84    <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>3</td>
85    <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Src_Over'>Src&nbsp;Over</a>&nbsp;</td>
86    <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
87Replaces destination with source blended with destination. If source is opaque,
88replaces destination with source. Used as the default <a href='#Blend_Mode'>Blend_Mode</a> for <a href='SkPaint_Reference#SkPaint'>SkPaint</a>.
89</td>
90  </tr>
91  <tr style='background-color: #f0f0f0; '>
92    <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kDstOver'><code>SkBlendMode::kDstOver</code></a></td>
93    <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>4</td>
94    <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Dst_Over'>Dst&nbsp;Over</a>&nbsp;</td>
95    <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
96Replaces destination with destination blended with source. If destination is opaque,
97has no effect.
98</td>
99  </tr>
100  <tr>
101    <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kSrcIn'><code>SkBlendMode::kSrcIn</code></a></td>
102    <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>5</td>
103    <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Src_In'>Src&nbsp;In</a>&nbsp;</td>
104    <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
105Replaces destination with source using destination opacity.
106</td>
107  </tr>
108  <tr style='background-color: #f0f0f0; '>
109    <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kDstIn'><code>SkBlendMode::kDstIn</code></a></td>
110    <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>6</td>
111    <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Dst_In'>Dst&nbsp;In</a>&nbsp;</td>
112    <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
113Scales destination opacity by source opacity.
114</td>
115  </tr>
116  <tr>
117    <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kSrcOut'><code>SkBlendMode::kSrcOut</code></a></td>
118    <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>7</td>
119    <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Src_Out'>Src&nbsp;Out</a>&nbsp;</td>
120    <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
121Replaces destination with source using the inverse of destination opacity,
122drawing source fully where destination opacity is zero.
123</td>
124  </tr>
125  <tr style='background-color: #f0f0f0; '>
126    <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kDstOut'><code>SkBlendMode::kDstOut</code></a></td>
127    <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>8</td>
128    <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Dst_Out'>Dst&nbsp;Out</a>&nbsp;</td>
129    <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
130Replaces destination opacity with inverse of source opacity. If source is
131transparent, has no effect.
132</td>
133  </tr>
134  <tr>
135    <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kSrcATop'><code>SkBlendMode::kSrcATop</code></a></td>
136    <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>9</td>
137    <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Src_Atop'>Src&nbsp;Atop</a>&nbsp;</td>
138    <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
139Blends destination with source using read destination opacity.
140</td>
141  </tr>
142  <tr style='background-color: #f0f0f0; '>
143    <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kDstATop'><code>SkBlendMode::kDstATop</code></a></td>
144    <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>10</td>
145    <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Dst_Atop'>Dst&nbsp;Atop</a>&nbsp;</td>
146    <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
147Blends destination with source using source opacity.
148</td>
149  </tr>
150  <tr>
151    <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kXor'><code>SkBlendMode::kXor</code></a></td>
152    <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>11</td>
153    <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Xor'>Xor</a>&nbsp;</td>
154    <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
155Blends destination by exchanging transparency of the source and destination.
156</td>
157  </tr>
158  <tr style='background-color: #f0f0f0; '>
159    <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kPlus'><code>SkBlendMode::kPlus</code></a></td>
160    <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>12</td>
161    <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Plus'>Plus</a>&nbsp;</td>
162    <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
163Replaces destination with source and destination added together.
164</td>
165  </tr>
166  <tr>
167    <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kModulate'><code>SkBlendMode::kModulate</code></a></td>
168    <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>13</td>
169    <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Modulate'>Modulate</a>&nbsp;</td>
170    <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
171Replaces destination with source and destination multiplied together.
172</td>
173  </tr>
174  <tr style='background-color: #f0f0f0; '>
175    <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kScreen'><code>SkBlendMode::kScreen</code></a></td>
176    <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>14</td>
177    <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Screen'>Screen</a>&nbsp;</td>
178    <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
179Replaces destination with inverted source and destination multiplied together.
180</td>
181  </tr>
182  <tr>
183    <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kLastCoeffMode'><code>SkBlendMode::kLastCoeffMode</code></a></td>
184    <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>14</td>
185    <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '></td>
186    <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
187last Porter_Duff blend mode</td>
188  </tr>
189  <tr style='background-color: #f0f0f0; '>
190    <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kOverlay'><code>SkBlendMode::kOverlay</code></a></td>
191    <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>15</td>
192    <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Overlay'>Overlay</a>&nbsp;</td>
193    <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
194Replaces destination with multiply or screen, depending on destination.
195</td>
196  </tr>
197  <tr>
198    <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kDarken'><code>SkBlendMode::kDarken</code></a></td>
199    <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>16</td>
200    <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Darken'>Darken</a>&nbsp;</td>
201    <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
202Replaces destination with darker of source and destination.
203</td>
204  </tr>
205  <tr style='background-color: #f0f0f0; '>
206    <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kLighten'><code>SkBlendMode::kLighten</code></a></td>
207    <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>17</td>
208    <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Lighten'>Lighten</a>&nbsp;</td>
209    <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
210Replaces destination with lighter of source and destination.
211</td>
212  </tr>
213  <tr>
214    <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kColorDodge'><code>SkBlendMode::kColorDodge</code></a></td>
215    <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>18</td>
216    <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Color_Dodge'>Color&nbsp;Dodge</a>&nbsp;</td>
217    <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
218Makes destination brighter to reflect source.
219</td>
220  </tr>
221  <tr style='background-color: #f0f0f0; '>
222    <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kColorBurn'><code>SkBlendMode::kColorBurn</code></a></td>
223    <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>19</td>
224    <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Color_Burn'>Color&nbsp;Burn</a>&nbsp;</td>
225    <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
226Makes destination darker to reflect source.
227</td>
228  </tr>
229  <tr>
230    <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kHardLight'><code>SkBlendMode::kHardLight</code></a></td>
231    <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>20</td>
232    <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Hard_Light'>Hard&nbsp;Light</a>&nbsp;</td>
233    <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
234Makes destination lighter or darker, depending on source.
235</td>
236  </tr>
237  <tr style='background-color: #f0f0f0; '>
238    <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kSoftLight'><code>SkBlendMode::kSoftLight</code></a></td>
239    <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>21</td>
240    <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Soft_Light'>Soft&nbsp;Light</a>&nbsp;</td>
241    <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
242Makes destination lighter or darker, depending on source.
243</td>
244  </tr>
245  <tr>
246    <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kDifference'><code>SkBlendMode::kDifference</code></a></td>
247    <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>22</td>
248    <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Difference'>Difference</a>&nbsp;</td>
249    <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
250Subtracts darker from lighter with higher contrast.
251</td>
252  </tr>
253  <tr style='background-color: #f0f0f0; '>
254    <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kExclusion'><code>SkBlendMode::kExclusion</code></a></td>
255    <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>23</td>
256    <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Exclusion'>Exclusion</a>&nbsp;</td>
257    <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
258Subtracts darker from lighter with lower contrast.
259</td>
260  </tr>
261  <tr>
262    <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kMultiply'><code>SkBlendMode::kMultiply</code></a></td>
263    <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>24</td>
264    <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Multiply'>Multiply</a>&nbsp;</td>
265    <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
266Multiplies source with destination, darkening <a href='SkImage_Reference#Image'>image</a>.
267</td>
268  </tr>
269  <tr style='background-color: #f0f0f0; '>
270    <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kLastSeparableMode'><code>SkBlendMode::kLastSeparableMode</code></a></td>
271    <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>24</td>
272    <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '></td>
273    <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
274Last  blend mode operating separately on components.
275</td>
276  </tr>
277  <tr>
278    <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kHue'><code>SkBlendMode::kHue</code></a></td>
279    <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>25</td>
280    <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Hue'>Hue</a>&nbsp;</td>
281    <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
282Replaces hue of destination with hue of source, leaving saturation and luminosity
283unchanged.
284</td>
285  </tr>
286  <tr style='background-color: #f0f0f0; '>
287    <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kSaturation'><code>SkBlendMode::kSaturation</code></a></td>
288    <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>26</td>
289    <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Saturation'>Saturation</a>&nbsp;</td>
290    <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
291Replaces saturation of destination saturation hue of source, leaving hue and
292luminosity unchanged.
293</td>
294  </tr>
295  <tr>
296    <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kColor'><code>SkBlendMode::kColor</code></a></td>
297    <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>27</td>
298    <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Color'>Color</a>&nbsp;</td>
299    <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
300Replaces hue and saturation of destination with hue and saturation of source,
301leaving luminosity unchanged.
302</td>
303  </tr>
304  <tr style='background-color: #f0f0f0; '>
305    <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kLuminosity'><code>SkBlendMode::kLuminosity</code></a></td>
306    <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>28</td>
307    <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a href='#Luminosity'>Luminosity</a>&nbsp;</td>
308    <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
309Replaces luminosity of destination with luminosity of source, leaving hue and
310saturation unchanged.
311</td>
312  </tr>
313  <tr>
314    <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '><a name='SkBlendMode_kLastMode'><code>SkBlendMode::kLastMode</code></a></td>
315    <td style='text-align: center; border: 2px solid #dddddd; padding: 8px; '>28</td>
316    <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '></td>
317    <td style='text-align: left; border: 2px solid #dddddd; padding: 8px; '>
318Used by tests to iterate through all valid values.
319</td>
320  </tr>
321</table>
322
323### See Also
324
325<a href='SkCanvas_Reference#SkCanvas'>SkCanvas</a>::<a href='#SkCanvas_drawColor'>drawColor</a> <a href='SkCanvas_Reference#SkCanvas'>SkCanvas</a>::<a href='#SkCanvas_drawVertices'>drawVertices</a> <a href='SkPaint_Reference#SkPaint'>SkPaint</a> <a href='undocumented#SkShader'>SkShader</a>::<a href='#SkShader_MakeCompose'>MakeCompose</a> <a href='undocumented#SkXfermodeImageFilter'>SkXfermodeImageFilter</a>
326
327<a name='Clear'></a>
328
329---
330
331<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kClear'>kClear</a> sets destination to: <code>[0, 0]</code>.
332Use <a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kClear'>kClear</a> to initialize a buffer to fully transparent pixels when
333creating a mask with irregular edges.
334
335### Example
336
337<div><fiddle-embed name="a9b56a26ca469bab9ab10e16f62fb2e2"><div><a href='SkColor_Reference#SK_ColorYELLOW'>SK_ColorYELLOW</a> is ignored because <a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kClear'>kClear</a> ignores the source <a href='undocumented#Pixel'>pixel</a>
338value and the destination <a href='undocumented#Pixel'>pixel</a> value, always setting the destination to zero.
339</div></fiddle-embed></div>
340
341### See Also
342
343<a href='SkCanvas_Reference#SkCanvas'>SkCanvas</a>::<a href='#SkCanvas_clear'>clear</a>
344
345<a name='Src'></a>
346
347---
348
349Given: <code>Sa</code> as source <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Sc</code> as source <a href='SkColor_Reference#Color'>Color</a> component;
350<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kSrc'>kSrc</a> sets destination to: <code>[Sa, Sc]</code>.
351Use <a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kSrc'>kSrc</a> to copy one buffer to another. All pixels are copied,
352regardless of source and destination <a href='SkColor_Reference#Alpha'>Alpha</a> values. As a parameter to
353<a href='SkCanvas_Reference#SkCanvas'>SkCanvas</a>::<a href='#SkCanvas_drawAtlas'>drawAtlas</a>, selects <a href='undocumented#Sprite'>sprites</a> and ignores colors.
354
355### Example
356
357<div><fiddle-embed name="0fc85dd916cc1a5896d36c80b9847391"><div><a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kSrc'>kSrc</a> does not blend transparent pixels with existing background;
358it punches a transparent hole in the existing <a href='SkImage_Reference#Image'>image</a>.
359</div></fiddle-embed></div>
360
361### See Also
362
363<a href='SkSurface_Reference#SkSurface'>SkSurface</a>::<a href='#SkSurface_draw'>draw</a> <a href='SkSurface_Reference#SkSurface'>SkSurface</a>::<a href='#SkSurface_readPixels'>readPixels</a>
364
365<a name='Dst'></a>
366
367---
368
369Given: <code>Da</code> as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Dc</code> as destination <a href='SkColor_Reference#Color'>Color</a> component;
370<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kDst'>kDst</a> preserves destination set to: <code>[Da, Dc]</code>.
371Setting <a href='SkPaint_Reference#Paint'>Paint</a> <a href='#Blend_Mode'>Blend_Mode</a> to <a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kDst'>kDst</a> causes drawing with
372<a href='SkPaint_Reference#Paint'>Paint</a> to have no effect. As a parameter to <a href='SkCanvas_Reference#SkCanvas'>SkCanvas</a>::<a href='#SkCanvas_drawAtlas'>drawAtlas</a>,
373selects colors and ignores <a href='undocumented#Sprite'>sprites</a>.
374
375### Example
376
377<div><fiddle-embed name="35915a2273be1076f00f2e47998ce808"></fiddle-embed></div>
378
379<a name='Src_Over'></a>
380
381---
382
383Given: <code>Sa</code> as source <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Sc</code> as source <a href='SkColor_Reference#Color'>Color</a> component,
384<code>Da</code> as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Dc</code> as destination <a href='SkColor_Reference#Color'>Color</a> component;
385<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kSrcOver'>kSrcOver</a> replaces destination with: <code>[Sa + Da * (1 - Sa), Sc + Dc * (1 - Sa)]</code>,
386drawing source over destination. <a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kSrcOver'>kSrcOver</a> is the default for <a href='SkPaint_Reference#Paint'>Paint</a>.
387
388<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kSrcOver'>kSrcOver</a> cannot make destination more transparent; the result will
389be at least as opaque as the less transparent of source and original destination.
390
391### Example
392
393<div><fiddle-embed name="2ea9c149964a06cdb4929158cb4f15f8"></fiddle-embed></div>
394
395<a name='Dst_Over'></a>
396
397---
398
399Given: <code>Sa</code> as source <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Sc</code> as source <a href='SkColor_Reference#Color'>Color</a> component,
400<code>Da</code> as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Dc</code> as destination <a href='SkColor_Reference#Color'>Color</a> component;
401<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kDstOver'>kDstOver</a> replaces destination with: <code>[Da + Sa * (1 - Da), Dc + Sc * (1 - Da)]</code>,
402drawing destination over source. Has no effect destination if is opaque.
403
404### Example
405
406<div><fiddle-embed name="10dbb4d97902956ef5f5f8562f65119e"></fiddle-embed></div>
407
408<a name='Src_In'></a>
409
410---
411
412Given: <code>Sa</code> as source <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Sc</code> as source <a href='SkColor_Reference#Color'>Color</a> component,
413<code>Da</code> as destination <a href='SkColor_Reference#Alpha'>Alpha</a>;
414<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kSrcIn'>kSrcIn</a> replaces destination with: <code>[Sa * Da, Sc * Da]</code>,
415drawing source with destination opacity.
416
417### Example
418
419<div><fiddle-embed name="b0833c18fe8b0eeaab9bd6d2160d272f"></fiddle-embed></div>
420
421<a name='Dst_In'></a>
422
423---
424
425Given: <code>Sa</code> as source <a href='SkColor_Reference#Alpha'>Alpha</a>,
426<code>Da</code> as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Dc</code> as destination <a href='SkColor_Reference#Color'>Color</a> component;
427<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kDstIn'>kDstIn</a> replaces destination with: <code>[Da * Sa, Dc * Sa]</code>,
428scaling destination <a href='SkColor_Reference#Alpha'>Alpha</a> by source <a href='SkColor_Reference#Alpha'>Alpha</a>. Resulting
429destination is visible where source is visible.
430
431### Example
432
433<div><fiddle-embed name="a5eeba05ccf6097a5d110a9d64f97c25"></fiddle-embed></div>
434
435<a name='Src_Out'></a>
436
437---
438
439Given: <code>Sa</code> as source <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Sc</code> as source <a href='SkColor_Reference#Color'>Color</a> component,
440<code>Da</code> as destination <a href='SkColor_Reference#Alpha'>Alpha</a>;
441<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kSrcOut'>kSrcOut</a> replaces destination with: <code>[Sa * (1 - Da), Sc * (1 - Da)]</code>,
442drawing source fully where destination <a href='SkColor_Reference#Alpha'>Alpha</a> is zero. Is destination
443is opaque, has no effect.
444
445### Example
446
447<div><fiddle-embed name="ccc1e74226e0c9eacbc21f1eed017b84"></fiddle-embed></div>
448
449<a name='Dst_Out'></a>
450
451---
452
453Given: <code>Sa</code> as source <a href='SkColor_Reference#Alpha'>Alpha</a>,
454<code>Da</code> as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Dc</code> as destination <a href='SkColor_Reference#Color'>Color</a> component;
455<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kDstOut'>kDstOut</a> replaces destination with: <code>[Da * (1 - Sa), Dc * (1 - Sa)]</code>,
456scaling destination <a href='SkColor_Reference#Alpha'>Alpha</a> by source transparency. Resulting
457destination is visible where source is transparent. If source is transparent,
458has no effect.
459
460### Example
461
462<div><fiddle-embed name="b9a894c9accfc5d94081bbd77d5d790a"></fiddle-embed></div>
463
464<a name='Src_Atop'></a>
465
466---
467
468Given: <code>Sa</code> as source <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Sc</code> as source <a href='SkColor_Reference#Color'>Color</a> component,
469<code>Da</code> as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Dc</code> as destination <a href='SkColor_Reference#Color'>Color</a> component;
470<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kSrcATop'>kSrcATop</a> replaces destination with: <code>[Da, Sc * Da + Dc * (1 - Sa)]</code>,
471replacing opaque destination with opaque source. If source or destination
472is transparent, has no effect.
473
474### Example
475
476<div><fiddle-embed name="a13148977bfc985934a92752c83a2041"></fiddle-embed></div>
477
478<a name='Dst_Atop'></a>
479
480---
481
482Given: <code>Sa</code> as source <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Sc</code> as source <a href='SkColor_Reference#Color'>Color</a> component,
483<code>Da</code> as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Dc</code> as destination <a href='SkColor_Reference#Color'>Color</a> component;
484<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kDstATop'>kDstATop</a> replaces destination with: <code>[Sa, Dc * Sa + Sc * (1 - Da)]</code>,
485making destination transparent where source is transparent.
486
487### Example
488
489<div><fiddle-embed name="1955856d45773a4fd914fcc1f813222f"></fiddle-embed></div>
490
491<a name='Xor'></a>
492
493---
494
495Given: <code>Sa</code> as source <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Sc</code> as source <a href='SkColor_Reference#Color'>Color</a> component,
496<code>Da</code> as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Dc</code> as destination <a href='SkColor_Reference#Color'>Color</a> component;
497<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kXor'>kXor</a> replaces destination with:
498<code>[Sa + Da - 2 * Sa * Da, Sc * (1 - Da) + Dc * (1 - Sa)]</code>,
499exchanging the transparency of the source and destination.
500
501### Example
502
503<div><fiddle-embed name="29db2c7493d9098b8a086ddbe30dd6d6"></fiddle-embed></div>
504
505<a name='Plus'></a>
506
507---
508
509Given: <code>Sa</code> as source <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Sc</code> as source <a href='SkColor_Reference#Color'>Color</a> component,
510<code>Da</code> as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Dc</code> as destination <a href='SkColor_Reference#Color'>Color</a> component;
511<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kPlus'>kPlus</a> replaces destination with: <code>[Sa + Da, Sc + Dc]</code>,
512summing the <a href='SkColor_Reference#Alpha'>Alpha</a> and <a href='SkColor_Reference#Color'>Color</a> components.
513
514### Example
515
516<div><fiddle-embed name="05383441e510d54008402e128fc8ad2b"></fiddle-embed></div>
517
518<a name='Modulate'></a>
519
520---
521
522Given: <code>Sa</code> as source <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Sc</code> as source <a href='SkColor_Reference#Color'>Color</a> component,
523<code>Da</code> as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Dc</code> as destination <a href='SkColor_Reference#Color'>Color</a> component;
524<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kModulate'>kModulate</a> replaces destination with: <code>[Sa * Da, Sc * Dc]</code>,
525scaling <a href='SkColor_Reference#Alpha'>Alpha</a> and <a href='SkColor_Reference#Color'>Color</a> components by the lesser of the values.
526<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kModulate'>kModulate</a> differs from <a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kMultiply'>kMultiply</a> in two ways.
527<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kModulate'>kModulate</a> like <a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kSrcATop'>kSrcATop</a> alters the destination inside
528the destination area, as if the destination <a href='SkColor_Reference#Alpha'>Alpha</a> defined the boundaries of a
529soft clip. <a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kMultiply'>kMultiply</a> like <a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kSrcOver'>kSrcOver</a> can alter the
530destination where the destination is transparent.
531<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kModulate'>kModulate</a> computes the product of the source and destination using
532<a href='undocumented#Premultiply'>Premultiplied</a> component values. <a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kMultiply'>kMultiply</a> the product of the source
533and destination using <a href='undocumented#Unpremultiply'>Unpremultiplied</a> component values.
534
535### Example
536
537<div><fiddle-embed name="3fdac2b2f48bd227d2e74234c260bc8e"><div>If source and destination are opaque, <a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kModulate'>kModulate</a> and
538<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kMultiply'>kMultiply</a> produce the same results.
539</div></fiddle-embed></div>
540
541<a name='Screen'></a>
542
543---
544
545Given: <code>Sa</code> as source <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Sc</code> as source <a href='SkColor_Reference#Color'>Color</a> component,
546<code>Da</code> as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Dc</code> as destination <a href='SkColor_Reference#Color'>Color</a> component;
547<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kScreen'>kScreen</a> replaces destination with: <code>[Sa + Da - Sa * Da, Sc + Dc - Sc * Dc]</code>.
548
549### Example
550
551<div><fiddle-embed name="b7b42965927788d853f449f08ddf46de"></fiddle-embed></div>
552
553<a name='Overlay'></a>
554
555---
556
557Given: <code>Sa</code> as source <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Sc</code> as source <a href='SkColor_Reference#Color'>Color</a> component,
558<code>Da</code> as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Dc</code> as destination <a href='SkColor_Reference#Color'>Color</a> component;
559<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kOverlay'>kOverlay</a> replaces destination with:
560<code>[Sa + Da - Sa * Da, Sc * (1 - Da) + Dc * (1 - Sa) +
561(2 * Dc <= Da ? 2 * Sc * Dc : Sa * Da - 2 * (Da - Dc) * (Sa - Sc))]</code>.
562
563### Example
564
565<div><fiddle-embed name="03bf042201de02d6d131938ccd3172eb"></fiddle-embed></div>
566
567<a name='Darken'></a>
568
569---
570
571Given: <code>Sa</code> as source <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Sc</code> as source <a href='SkColor_Reference#Color'>Color</a> component,
572<code>Da</code> as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Dc</code> as destination <a href='SkColor_Reference#Color'>Color</a> component;
573<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kDarken'>kDarken</a> replaces destination with:
574<code>[Sa + Da - Sa * Da,  Sc + Dc - <a href='undocumented#max()'>max</a>(Sc * Da, Dc * Sa)]</code>.
575<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kDarken'>kDarken</a> does not make an <a href='SkImage_Reference#Image'>image</a> darker; it replaces the destination
576component with source if source is darker.
577
578### Example
579
580<div><fiddle-embed name="23c974d2759f523ca2f4a78ae86855c3"></fiddle-embed></div>
581
582<a name='Lighten'></a>
583
584---
585
586Given: <code>Sa</code> as source <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Sc</code> as source <a href='SkColor_Reference#Color'>Color</a> component,
587<code>Da</code> as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Dc</code> as destination <a href='SkColor_Reference#Color'>Color</a> component;
588<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kLighten'>kLighten</a> replaces destination with:
589<code>[Sa + Da - Sa * Da,  Sc + Dc - <a href='undocumented#min()'>min</a>(Sc * Da, Dc * Sa)]</code>.
590<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kDarken'>kDarken</a> does not make an <a href='SkImage_Reference#Image'>image</a> lighter; it replaces the destination
591component with source if source is lighter.
592
593### Example
594
595<div><fiddle-embed name="95cb08b8c8db3af3b2c9ad56ae7d6bc1"></fiddle-embed></div>
596
597<a name='Color_Dodge'></a>
598
599---
600
601Given: <code>Sa</code> as source <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Sc</code> as source <a href='SkColor_Reference#Color'>Color</a> component,
602<code>Da</code> as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Dc</code> as destination <a href='SkColor_Reference#Color'>Color</a> component;
603<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kColorDodge'>kColorDodge</a> replaces destination with:
604<code>[Sa + Da - Sa * Da, Dc == 0 ? Sc * (1 - Da) : Sc == Sa ? Sc + Da * (1 - Sa) :
605Sa * <a href='undocumented#min()'>min</a>(Da, Dc * Sa / (Sa - Sc)) + Sc * (1 - Da) + Da * (1 - Sa)]</code>,
606making destination brighter to reflect source.
607
608### Example
609
610<div><fiddle-embed name="280ad6267a7d2d77b6d2c4531c6fc0bf"></fiddle-embed></div>
611
612<a name='Color_Burn'></a>
613
614---
615
616Given: <code>Sa</code> as source <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Sc</code> as source <a href='SkColor_Reference#Color'>Color</a> component,
617<code>Da</code> as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Dc</code> as destination <a href='SkColor_Reference#Color'>Color</a> component;
618<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kColorBurn'>kColorBurn</a> replaces destination with:
619<code>[Sa + Da - Sa * Da, Dc == Da ? Dc + Sc * (1 - Da) : Sc == 0 ? Da * (1 - Sa) :
620Sa * (Da - <a href='undocumented#min()'>min</a>(Da, (Da - Dc) * Sa / Sc)) + Sc * (1 - Da) + Da * (1 - Sa)]</code>,
621making destination darker to reflect source.
622
623### Example
624
625<div><fiddle-embed name="3eeef529375d8083ae0d615789d55e89"></fiddle-embed></div>
626
627<a name='Hard_Light'></a>
628
629---
630
631Given: <code>Sa</code> as source <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Sc</code> as source <a href='SkColor_Reference#Color'>Color</a> component,
632<code>Da</code> as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Dc</code> as destination <a href='SkColor_Reference#Color'>Color</a> component;
633<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kHardLight'>kHardLight</a> replaces destination with:
634<code>[Sa + Da - Sa * Da, Sc * (1 - Da) + Dc * (1 - Sa) +
6352 * Sc <= Sa ? 2 * Sc * Dc : Sa * Da - 2 * (Da - Dc) * (Sa - Sc)]</code>,
636making destination lighter or darker, depending on source.
637
638### Example
639
640<div><fiddle-embed name="ac2fe555e2196e15863ea4ce74db3d54"></fiddle-embed></div>
641
642<a name='Soft_Light'></a>
643
644---
645
646Given: <code>Sa</code> as source <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Sc</code> as source <a href='SkColor_Reference#Color'>Color</a> component,
647<code>Da</code> as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Dc</code> as destination <a href='SkColor_Reference#Color'>Color</a> component;
648where <code>m = Da > 0 ? Dc / Da : 0</code>;
649<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kSoftLight'>kSoftLight</a> replaces destination with: <code>[Sa + Da - Sa * Da, Sc / Da + Dc / Sa +
650(2 * Sc <= Sa ? Dc * (Sa + (2 * Sc - Sa) * (1 - m)) : Dc * Sa + Da * (2 * Sc - Sa) *
651(4 * Dc <= Da ? (16 * m * m  + 4 * m) * (m - 1) + 7 * m : <a href='undocumented#sqrt()'>sqrt</a>(m) - m))]</code>,
652making destination lighter or darker, depending on source.
653
654### Example
655
656<div><fiddle-embed name="ac93f30dff13f8a8bb31398de370863b"></fiddle-embed></div>
657
658<a name='Difference'></a>
659
660---
661
662Given: <code>Sa</code> as source <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Sc</code> as source <a href='SkColor_Reference#Color'>Color</a> component,
663<code>Da</code> as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Dc</code> as destination <a href='SkColor_Reference#Color'>Color</a> component;
664<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kDifference'>kDifference</a> replaces destination with:
665<code>[Sa + Da - Sa * Da, Sc + Dc - 2 * <a href='undocumented#min()'>min</a>(Sc * Da, Dc * Sa)]</code>,
666replacing destination with lighter less darker.
667
668### Example
669
670<div><fiddle-embed name="52d2c8d1b9b428de4477b4caa1543a3d"></fiddle-embed></div>
671
672<a name='Exclusion'></a>
673
674---
675
676Given: <code>Sa</code> as source <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Sc</code> as source <a href='SkColor_Reference#Color'>Color</a> component,
677<code>Da</code> as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Dc</code> as destination <a href='SkColor_Reference#Color'>Color</a> component;
678<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kExclusion'>kExclusion</a> replaces destination with:
679<code>[Sa + Da - Sa * Da, Sc + Dc - 2 * Sc * Dc]</code>,
680replacing destination with lighter less darker, ignoring <a href='SkColor_Reference#Alpha'>Alpha</a>.
681
682### Example
683
684<div><fiddle-embed name="a544ee1c67c7c557a9e54d5e99f94bb6"></fiddle-embed></div>
685
686<a name='Multiply'></a>
687
688---
689
690Given: <code>Sa</code> as source <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Sc</code> as source <a href='SkColor_Reference#Color'>Color</a> component,
691<code>Da</code> as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>Dc</code> as destination <a href='SkColor_Reference#Color'>Color</a> component;
692<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kMultiply'>kMultiply</a> replaces destination with:
693<code>[Sa + Da - Sa * Da, Sc * (1 - Da) + Dc * (1 - Sa) + Sc * Dc]</code>,
694the product of <a href='undocumented#Unpremultiply'>Unpremultiplied</a> source and destination.
695<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kMultiply'>kMultiply</a> makes the <a href='SkImage_Reference#Image'>image</a> darker.
696
697### Example
698
699<div><fiddle-embed name="eb29c896f008dfbef09e16b85114fc3a"></fiddle-embed></div>
700
701<a name='Hue'></a>
702
703---
704
705Given: <code>Sa</code> as source <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>S</code> as source <a href='SkColor_Reference#Color'>Color</a>,
706<code>Da</code> as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>D</code> as destination <a href='SkColor_Reference#Color'>Color</a>;
707<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kHue'>kHue</a> replaces destination with:
708<code>[Sa + Da - Sa * Da, <a href='undocumented#SetLuminosity'>SetLuminosity</a>(<a href='undocumented#SetSaturation'>SetSaturation</a>(S, <a href='undocumented#Saturation'>Saturation</a>(D)), <a href='undocumented#Luminosity'>Luminosity</a>(D))]</code>,
709source hue, leaving destination luminosity and saturation unchanged.
710
711### Example
712
713<div><fiddle-embed name="41e45570d682397d3b8ff2f51bd9c574"></fiddle-embed></div>
714
715<a name='Saturation'></a>
716
717---
718
719Given: <code>Sa</code> as source <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>S</code> as source <a href='SkColor_Reference#Color'>Color</a>,
720<code>Da</code> as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>D</code> as destination <a href='SkColor_Reference#Color'>Color</a>;
721<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kHue'>kHue</a> replaces destination with:
722<code>[Sa + Da - Sa * Da, <a href='undocumented#SetLuminosity'>SetLuminosity</a>(<a href='undocumented#SetSaturation'>SetSaturation</a>(D, <a href='undocumented#Saturation'>Saturation</a>(S)), <a href='undocumented#Luminosity'>Luminosity</a>(D))]</code>,
723source hue, leaving destination luminosity and saturation unchanged.
724
725### Example
726
727<div><fiddle-embed name="a48698975d236573cef512f94a7e360b"></fiddle-embed></div>
728
729<a name='Color'></a>
730
731---
732
733Given: <code>Sa</code> as source <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>S</code> as source <a href='SkColor_Reference#Color'>Color</a>,
734<code>Da</code> as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>D</code> as destination <a href='SkColor_Reference#Color'>Color</a>;
735<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kColor'>kColor</a> replaces destination with:
736<code>[Sa + Da - Sa * Da, <a href='undocumented#SetLuminosity'>SetLuminosity</a>(S, <a href='undocumented#Luminosity'>Luminosity</a>(D))]</code>,
737source hue and saturation, leaving destination luminosity unchanged.
738
739### Example
740
741<div><fiddle-embed name="5d7c6e23a34ca9bf3ba8cda4cdc94cc4"></fiddle-embed></div>
742
743<a name='Luminosity'></a>
744
745---
746
747Given: <code>Sa</code> as source <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>S</code> as source <a href='SkColor_Reference#Color'>Color</a>,
748<code>Da</code> as destination <a href='SkColor_Reference#Alpha'>Alpha</a>, <code>D</code> as destination <a href='SkColor_Reference#Color'>Color</a>;
749<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kLuminosity'>kLuminosity</a> replaces destination with:
750<code>[Sa + Da - Sa * Da, <a href='undocumented#SetLuminosity'>SetLuminosity</a>(D, <a href='undocumented#Luminosity'>Luminosity</a>(S))]</code>,
751source luminosity, leaving destination hue and saturation unchanged.
752
753### Example
754
755<div><fiddle-embed name="7d42fe34ae20dd9e12c39dc3950e9989"></fiddle-embed></div>
756
757<a name='SkBlendMode_Name'></a>
758
759---
760
761<pre style="padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0">
762const char* <a href='SkBlendMode_Reference#SkBlendMode_Name'>SkBlendMode_Name</a>(<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a> blendMode)
763</pre>
764
765Returns name of <a href='#SkBlendMode_Name_blendMode'>blendMode</a> as null-terminated C <a href='undocumented#String'>string</a>.
766
767### Parameters
768
769<table>  <tr>    <td><a name='SkBlendMode_Name_blendMode'><code><strong>blendMode</strong></code></a></td>
770    <td>one of:</td>
771  </tr>
772</table>
773
774<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kClear'>kClear</a>, <a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kSrc'>kSrc</a>, <a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kDst'>kDst</a>,
775<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kSrcOver'>kSrcOver</a>, <a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kDstOver'>kDstOver</a>, <a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kSrcIn'>kSrcIn</a>,
776<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kDstIn'>kDstIn</a>, <a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kSrcOut'>kSrcOut</a>, <a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kDstOut'>kDstOut</a>,
777<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kSrcATop'>kSrcATop</a>, <a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kDstATop'>kDstATop</a>, <a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kXor'>kXor</a>,
778<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kPlus'>kPlus</a>, <a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kModulate'>kModulate</a>, <a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kScreen'>kScreen</a>,
779<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kOverlay'>kOverlay</a>, <a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kDarken'>kDarken</a>, <a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kLighten'>kLighten</a>,
780<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kColorDodge'>kColorDodge</a>, <a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kColorBurn'>kColorBurn</a>, <a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kHardLight'>kHardLight</a>,
781<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kSoftLight'>kSoftLight</a>, <a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kDifference'>kDifference</a>, <a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kExclusion'>kExclusion</a>,
782<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kMultiply'>kMultiply</a>, <a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kHue'>kHue</a>, <a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kSaturation'>kSaturation</a>,
783<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kColor'>kColor</a>, <a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>::<a href='#SkBlendMode_kLuminosity'>kLuminosity</a>
784
785### Return Value
786
787C <a href='undocumented#String'>string</a>
788
789### Example
790
791<div><fiddle-embed name="3996f4994bf4e90b4cd86524c1f9f1a6">
792
793#### Example Output
794
795~~~~
796default blend: SkBlendMode::kSrcOver
797~~~~
798
799</fiddle-embed></div>
800
801### See Also
802
803<a href='SkBlendMode_Reference#SkBlendMode'>SkBlendMode</a>
804
805