Lines Matching full:xfermode
19 #define XFERMODE(Xfermode) \
20 struct Xfermode { Sk4px operator()(const Sk4px&, const Sk4px&) const; }; \
21 inline Sk4px Xfermode::operator()(const Sk4px& d, const Sk4px& s) const
23 XFERMODE(Clear) { return Sk4px::DupPMColor(0); }
24 XFERMODE(Src) { return s; }
25 XFERMODE(Dst) { return d; }
26 XFERMODE(SrcIn) { return s.approxMulDiv255(d.alphas() ); }
27 XFERMODE(SrcOut) { return s.approxMulDiv255(d.alphas().inv()); }
28 XFERMODE(SrcOver) { return s + d.approxMulDiv255(s.alphas().inv()); }
29 XFERMODE(DstIn) { return SrcIn ()(s,d); }
30 XFERMODE(DstOut) { return SrcOut ()(s,d); }
31 XFERMODE(DstOver) { return SrcOver()(s,d); }
34 XFERMODE(SrcATop) { return (s * d.alphas() + d * s.alphas().inv()).div255(); }
35 XFERMODE(DstATop) { return SrcATop()(s,d); }
37 XFERMODE(Xor) { return (s * d.alphas().inv() + d * s.alphas().inv()).div255(); }
39 XFERMODE(Plus) { return s.saturatedAdd(d); }
41 XFERMODE(Modulate) { return s.approxMulDiv255(d); }
43 XFERMODE(Screen) {
48 XFERMODE(Multiply) { return (s * d.alphas().inv() + d * s.alphas().inv() + s*d).div255(); }
50 XFERMODE(Difference) {
56 XFERMODE(Exclusion) {
69 XFERMODE(HardLight) {
85 XFERMODE(Overlay) { return HardLight()(s,d); }
87 XFERMODE(Darken) {
100 XFERMODE(Lighten) {
113 #undef XFERMODE
116 #define XFERMODE(Xfermode) \
117 struct Xfermode { Sk4f operator()(const Sk4f&, const Sk4f&) const; }; \
118 inline Sk4f Xfermode::operator()(const Sk4f& d, const Sk4f& s) const
128 XFERMODE(ColorDodge) {
144 XFERMODE(ColorBurn) {
160 XFERMODE(SoftLight) {
185 #undef XFERMODE
189 template <typename Xfermode>
191 Sk4px bw = Xfermode()(d, s);
196 #define XFERMODE_AA(Xfermode) \
197 template <> Sk4px xfer_aa<Xfermode>(const Sk4px& d, const Sk4px& s, const Sk4px& aa)
209 template <typename Xfermode> static void mark_dst_initialized_if_safe(void*, void*) {}
217 template <typename Xfermode>
224 mark_dst_initialized_if_safe<Xfermode>(dst, dst+n);
226 Sk4px::MapDstSrc(n, dst, src, Xfermode());
228 Sk4px::MapDstSrcAlpha(n, dst, src, aa, xfer_aa<Xfermode>);
233 mark_dst_initialized_if_safe<Xfermode>(dst, dst+n);
269 template <typename Xfermode>
293 b = Xfermode()(d, s);
320 #define CASE(Xfermode) \
321 case SkXfermode::k##Xfermode##_Mode: return new Sk4pxXfermode<Xfermode>(rec, mode)
346 #define CASE(Xfermode) \
347 case SkXfermode::k##Xfermode##_Mode: return new Sk4fXfermode<Xfermode>(rec, mode)