OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2016 Google Inc. | 2 * Copyright 2016 Google Inc. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
6 */ | 6 */ |
7 | 7 |
8 #ifndef SkLinearBitmapPipeline_sampler_DEFINED | 8 #ifndef SkLinearBitmapPipeline_sampler_DEFINED |
9 #define SkLinearBitmapPipeline_sampler_DEFINED | 9 #define SkLinearBitmapPipeline_sampler_DEFINED |
10 | 10 |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
58 template <SkColorType, SkGammaType> class PixelConverter; | 58 template <SkColorType, SkGammaType> class PixelConverter; |
59 | 59 |
60 // Alpha handling: | 60 // Alpha handling: |
61 // The alpha from the paint (tintColor) is used in the blend part of the pipel
ine to modulate | 61 // The alpha from the paint (tintColor) is used in the blend part of the pipel
ine to modulate |
62 // the entire bitmap. So, the tint color is given an alpha of 1.0 so that the la
ter alpha can | 62 // the entire bitmap. So, the tint color is given an alpha of 1.0 so that the la
ter alpha can |
63 // modulate this color later. | 63 // modulate this color later. |
64 template <> | 64 template <> |
65 class PixelConverter<kAlpha_8_SkColorType, kLinear_SkGammaType> { | 65 class PixelConverter<kAlpha_8_SkColorType, kLinear_SkGammaType> { |
66 public: | 66 public: |
67 using Element = uint8_t; | 67 using Element = uint8_t; |
68 PixelConverter(const SkPixmap& srcPixmap, SkColor tintColor) | 68 PixelConverter(const SkPixmap& srcPixmap, SkColor tintColor) { |
69 : fTintColor{set_alpha(Sk4f_from_SkColor(tintColor), 1.0f)} { } | 69 fTintColor = SkColor4f::FromColor(tintColor); |
| 70 fTintColor.fA = 1.0f; |
| 71 } |
70 | 72 |
71 Sk4f toSk4f(const Element pixel) const { | 73 Sk4f toSk4f(const Element pixel) const { |
72 return fTintColor * (pixel * (1.0f/255.0f)); | 74 return Sk4f::Load(&fTintColor) * (pixel * (1.0f/255.0f)); |
73 } | 75 } |
74 | 76 |
75 private: | 77 private: |
76 const Sk4f fTintColor; | 78 SkColor4f fTintColor; |
77 }; | 79 }; |
78 | 80 |
79 template <SkGammaType gammaType> | 81 template <SkGammaType gammaType> |
80 static inline Sk4f pmcolor_to_rgba(SkPMColor pixel) { | 82 static inline Sk4f pmcolor_to_rgba(SkPMColor pixel) { |
81 return swizzle_rb_if_bgra( | 83 return swizzle_rb_if_bgra( |
82 (gammaType == kSRGB_SkGammaType) ? Sk4f_fromS32(pixel) | 84 (gammaType == kSRGB_SkGammaType) ? Sk4f_fromS32(pixel) |
83 : Sk4f_fromL32(pixel)); | 85 : Sk4f_fromL32(pixel)); |
84 } | 86 } |
85 | 87 |
86 template <SkGammaType gammaType> | 88 template <SkGammaType gammaType> |
(...skipping 940 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1027 const SkShader::TileMode fXEdgeType; | 1029 const SkShader::TileMode fXEdgeType; |
1028 const int fXMax; | 1030 const int fXMax; |
1029 const SkShader::TileMode fYEdgeType; | 1031 const SkShader::TileMode fYEdgeType; |
1030 const int fYMax; | 1032 const int fYMax; |
1031 Accessor fAccessor; | 1033 Accessor fAccessor; |
1032 }; | 1034 }; |
1033 | 1035 |
1034 } // namespace | 1036 } // namespace |
1035 | 1037 |
1036 #endif // SkLinearBitmapPipeline_sampler_DEFINED | 1038 #endif // SkLinearBitmapPipeline_sampler_DEFINED |
OLD | NEW |