/src/skia/src/core/SkMaskGamma.h
Line | Count | Source (jump to first uncovered line) |
1 | | /* |
2 | | * Copyright 2012 Google Inc. |
3 | | * |
4 | | * Use of this source code is governed by a BSD-style license that can be |
5 | | * found in the LICENSE file. |
6 | | */ |
7 | | |
8 | | #ifndef SkMaskGamma_DEFINED |
9 | | #define SkMaskGamma_DEFINED |
10 | | |
11 | | #include "include/core/SkColor.h" |
12 | | #include "include/core/SkRefCnt.h" |
13 | | #include "include/core/SkTypes.h" |
14 | | #include "include/private/SkColorData.h" |
15 | | #include "include/private/SkNoncopyable.h" |
16 | | |
17 | | /** |
18 | | * SkColorSpaceLuminance is used to convert luminances to and from linear and |
19 | | * perceptual color spaces. |
20 | | * |
21 | | * Luma is used to specify a linear luminance value [0.0, 1.0]. |
22 | | * Luminance is used to specify a luminance value in an arbitrary color space [0.0, 1.0]. |
23 | | */ |
24 | | class SkColorSpaceLuminance : SkNoncopyable { |
25 | | public: |
26 | 27 | virtual ~SkColorSpaceLuminance() { } |
27 | | |
28 | | /** Converts a color component luminance in the color space to a linear luma. */ |
29 | | virtual SkScalar toLuma(SkScalar gamma, SkScalar luminance) const = 0; |
30 | | /** Converts a linear luma to a color component luminance in the color space. */ |
31 | | virtual SkScalar fromLuma(SkScalar gamma, SkScalar luma) const = 0; |
32 | | |
33 | | /** Converts a color to a luminance value. */ |
34 | 38 | static U8CPU computeLuminance(SkScalar gamma, SkColor c) { |
35 | 38 | const SkColorSpaceLuminance& luminance = Fetch(gamma); |
36 | 38 | SkScalar r = luminance.toLuma(gamma, SkIntToScalar(SkColorGetR(c)) / 255); |
37 | 38 | SkScalar g = luminance.toLuma(gamma, SkIntToScalar(SkColorGetG(c)) / 255); |
38 | 38 | SkScalar b = luminance.toLuma(gamma, SkIntToScalar(SkColorGetB(c)) / 255); |
39 | 38 | SkScalar luma = r * SK_LUM_COEFF_R + |
40 | 38 | g * SK_LUM_COEFF_G + |
41 | 38 | b * SK_LUM_COEFF_B; |
42 | 38 | SkASSERT(luma <= SK_Scalar1); |
43 | 38 | return SkScalarRoundToInt(luminance.fromLuma(gamma, luma) * 255); |
44 | 38 | } |
45 | | |
46 | | /** Retrieves the SkColorSpaceLuminance for the given gamma. */ |
47 | | static const SkColorSpaceLuminance& Fetch(SkScalar gamma); |
48 | | }; |
49 | | |
50 | | ///@{ |
51 | | /** |
52 | | * Scales base <= 2^N-1 to 2^8-1 |
53 | | * @param N [1, 8] the number of bits used by base. |
54 | | * @param base the number to be scaled to [0, 255]. |
55 | | */ |
56 | 29.7M | template<U8CPU N> static inline U8CPU sk_t_scale255(U8CPU base) { |
57 | 29.7M | base <<= (8 - N); |
58 | 29.7M | U8CPU lum = base; |
59 | 89.2M | for (unsigned int i = N; i < 8; i += N) { |
60 | 59.5M | lum |= base >> i; |
61 | 59.5M | } |
62 | 29.7M | return lum; |
63 | 29.7M | } SkScalerContext.cpp:unsigned int sk_t_scale255<3u>(unsigned int) Line | Count | Source | 56 | 29.7M | template<U8CPU N> static inline U8CPU sk_t_scale255(U8CPU base) { | 57 | 29.7M | base <<= (8 - N); | 58 | 29.7M | U8CPU lum = base; | 59 | 89.2M | for (unsigned int i = N; i < 8; i += N) { | 60 | 59.5M | lum |= base >> i; | 61 | 59.5M | } | 62 | 29.7M | return lum; | 63 | 29.7M | } |
Unexecuted instantiation: GrTextBlob.cpp:unsigned int sk_t_scale255<3u>(unsigned int) |
64 | 0 | template<> /*static*/ inline U8CPU sk_t_scale255<1>(U8CPU base) { |
65 | 0 | return base * 0xFF; |
66 | 0 | } Unexecuted instantiation: GrTest.cpp:unsigned int sk_t_scale255<1u>(unsigned int) Unexecuted instantiation: SkCanvas.cpp:unsigned int sk_t_scale255<1u>(unsigned int) Unexecuted instantiation: SkDevice.cpp:unsigned int sk_t_scale255<1u>(unsigned int) Unexecuted instantiation: SkGlyphRun.cpp:unsigned int sk_t_scale255<1u>(unsigned int) Unexecuted instantiation: SkPaint.cpp:unsigned int sk_t_scale255<1u>(unsigned int) Unexecuted instantiation: SkPixmap.cpp:unsigned int sk_t_scale255<1u>(unsigned int) Unexecuted instantiation: SkStrikeSpec.cpp:unsigned int sk_t_scale255<1u>(unsigned int) Unexecuted instantiation: SkTextBlob.cpp:unsigned int sk_t_scale255<1u>(unsigned int) Unexecuted instantiation: SkTypeface.cpp:unsigned int sk_t_scale255<1u>(unsigned int) Unexecuted instantiation: SkCustomTypeface.cpp:unsigned int sk_t_scale255<1u>(unsigned int) Unexecuted instantiation: GrContext_Base.cpp:unsigned int sk_t_scale255<1u>(unsigned int) Unexecuted instantiation: GrDirectContext.cpp:unsigned int sk_t_scale255<1u>(unsigned int) Unexecuted instantiation: GrImageContext.cpp:unsigned int sk_t_scale255<1u>(unsigned int) Unexecuted instantiation: GrProxyProvider.cpp:unsigned int sk_t_scale255<1u>(unsigned int) Unexecuted instantiation: GrRecordingContext.cpp:unsigned int sk_t_scale255<1u>(unsigned int) Unexecuted instantiation: GrRecordingContextPriv.cpp:unsigned int sk_t_scale255<1u>(unsigned int) Unexecuted instantiation: GrAtlasManager.cpp:unsigned int sk_t_scale255<1u>(unsigned int) Unexecuted instantiation: GrSDFTControl.cpp:unsigned int sk_t_scale255<1u>(unsigned int) Unexecuted instantiation: GrStrikeCache.cpp:unsigned int sk_t_scale255<1u>(unsigned int) Unexecuted instantiation: GrTextBlobCache.cpp:unsigned int sk_t_scale255<1u>(unsigned int) Unexecuted instantiation: SkImage_Gpu.cpp:unsigned int sk_t_scale255<1u>(unsigned int) Unexecuted instantiation: SkSurface_Gpu.cpp:unsigned int sk_t_scale255<1u>(unsigned int) Unexecuted instantiation: AAConvexPathRenderer.cpp:unsigned int sk_t_scale255<1u>(unsigned int) Unexecuted instantiation: AAHairLinePathRenderer.cpp:unsigned int sk_t_scale255<1u>(unsigned int) Unexecuted instantiation: AALinearizingConvexPathRenderer.cpp:unsigned int sk_t_scale255<1u>(unsigned int) Unexecuted instantiation: DefaultPathRenderer.cpp:unsigned int sk_t_scale255<1u>(unsigned int) Unexecuted instantiation: GrAtlasTextOp.cpp:unsigned int sk_t_scale255<1u>(unsigned int) Unexecuted instantiation: GrFillRectOp.cpp:unsigned int sk_t_scale255<1u>(unsigned int) Unexecuted instantiation: GrTextureOp.cpp:unsigned int sk_t_scale255<1u>(unsigned int) Unexecuted instantiation: SmallPathRenderer.cpp:unsigned int sk_t_scale255<1u>(unsigned int) Unexecuted instantiation: SoftwarePathRenderer.cpp:unsigned int sk_t_scale255<1u>(unsigned int) Unexecuted instantiation: TriangulatingPathRenderer.cpp:unsigned int sk_t_scale255<1u>(unsigned int) Unexecuted instantiation: Device.cpp:unsigned int sk_t_scale255<1u>(unsigned int) Unexecuted instantiation: Device_drawTexture.cpp:unsigned int sk_t_scale255<1u>(unsigned int) Unexecuted instantiation: PathRenderer.cpp:unsigned int sk_t_scale255<1u>(unsigned int) Unexecuted instantiation: SurfaceDrawContext.cpp:unsigned int sk_t_scale255<1u>(unsigned int) Unexecuted instantiation: SurfaceFillContext_v1.cpp:unsigned int sk_t_scale255<1u>(unsigned int) Unexecuted instantiation: SkBitmapDevice.cpp:unsigned int sk_t_scale255<1u>(unsigned int) Unexecuted instantiation: SkBlurMF.cpp:unsigned int sk_t_scale255<1u>(unsigned int) Unexecuted instantiation: SkDescriptor.cpp:unsigned int sk_t_scale255<1u>(unsigned int) Unexecuted instantiation: SkDraw.cpp:unsigned int sk_t_scale255<1u>(unsigned int) Unexecuted instantiation: SkDraw_atlas.cpp:unsigned int sk_t_scale255<1u>(unsigned int) Unexecuted instantiation: SkDraw_text.cpp:unsigned int sk_t_scale255<1u>(unsigned int) Unexecuted instantiation: SkDraw_vertices.cpp:unsigned int sk_t_scale255<1u>(unsigned int) Unexecuted instantiation: SkFont.cpp:unsigned int sk_t_scale255<1u>(unsigned int) Unexecuted instantiation: SkGlyph.cpp:unsigned int sk_t_scale255<1u>(unsigned int) Unexecuted instantiation: SkGlyphRunPainter.cpp:unsigned int sk_t_scale255<1u>(unsigned int) Unexecuted instantiation: SkGpuBlurUtils.cpp:unsigned int sk_t_scale255<1u>(unsigned int) Unexecuted instantiation: SkMaskFilter.cpp:unsigned int sk_t_scale255<1u>(unsigned int) Unexecuted instantiation: SkMaskGamma.cpp:unsigned int sk_t_scale255<1u>(unsigned int) Unexecuted instantiation: SkScalerCache.cpp:unsigned int sk_t_scale255<1u>(unsigned int) Unexecuted instantiation: SkScalerContext.cpp:unsigned int sk_t_scale255<1u>(unsigned int) Unexecuted instantiation: SkStrikeCache.cpp:unsigned int sk_t_scale255<1u>(unsigned int) Unexecuted instantiation: SkStrikeForGPU.cpp:unsigned int sk_t_scale255<1u>(unsigned int) Unexecuted instantiation: SkAlphaThresholdImageFilter.cpp:unsigned int sk_t_scale255<1u>(unsigned int) Unexecuted instantiation: SkBlurImageFilter.cpp:unsigned int sk_t_scale255<1u>(unsigned int) Unexecuted instantiation: GrContextThreadSafeProxy.cpp:unsigned int sk_t_scale255<1u>(unsigned int) Unexecuted instantiation: GrDirectContextPriv.cpp:unsigned int sk_t_scale255<1u>(unsigned int) Unexecuted instantiation: GrSWMaskHelper.cpp:unsigned int sk_t_scale255<1u>(unsigned int) Unexecuted instantiation: GrUtil.cpp:unsigned int sk_t_scale255<1u>(unsigned int) Unexecuted instantiation: GrDistanceFieldAdjustTable.cpp:unsigned int sk_t_scale255<1u>(unsigned int) Unexecuted instantiation: GrTextBlob.cpp:unsigned int sk_t_scale255<1u>(unsigned int) Unexecuted instantiation: GrBlurUtils.cpp:unsigned int sk_t_scale255<1u>(unsigned int) Unexecuted instantiation: AtlasPathRenderer.cpp:unsigned int sk_t_scale255<1u>(unsigned int) Unexecuted instantiation: DashLinePathRenderer.cpp:unsigned int sk_t_scale255<1u>(unsigned int) Unexecuted instantiation: TessellationPathRenderer.cpp:unsigned int sk_t_scale255<1u>(unsigned int) Unexecuted instantiation: ClipStack.cpp:unsigned int sk_t_scale255<1u>(unsigned int) Unexecuted instantiation: StencilMaskHelper.cpp:unsigned int sk_t_scale255<1u>(unsigned int) Unexecuted instantiation: SkWuffsCodec.cpp:unsigned int sk_t_scale255<1u>(unsigned int) Unexecuted instantiation: SkGlyphBuffer.cpp:unsigned int sk_t_scale255<1u>(unsigned int) Unexecuted instantiation: SkGraphics.cpp:unsigned int sk_t_scale255<1u>(unsigned int) Unexecuted instantiation: SkFontMgr_custom_empty.cpp:unsigned int sk_t_scale255<1u>(unsigned int) Unexecuted instantiation: SkFontMgr_custom.cpp:unsigned int sk_t_scale255<1u>(unsigned int) Unexecuted instantiation: SkFontHost_FreeType.cpp:unsigned int sk_t_scale255<1u>(unsigned int) Unexecuted instantiation: SkFontHost_FreeType_common.cpp:unsigned int sk_t_scale255<1u>(unsigned int) Unexecuted instantiation: TestSVGTypeface.cpp:unsigned int sk_t_scale255<1u>(unsigned int) Unexecuted instantiation: TestTypeface.cpp:unsigned int sk_t_scale255<1u>(unsigned int) Unexecuted instantiation: GrDDLContext.cpp:unsigned int sk_t_scale255<1u>(unsigned int) Unexecuted instantiation: FuzzSkDescriptorDeserialize.cpp:unsigned int sk_t_scale255<1u>(unsigned int) Unexecuted instantiation: SkRemoteGlyphCache.cpp:unsigned int sk_t_scale255<1u>(unsigned int) Unexecuted instantiation: SkTypeface_remote.cpp:unsigned int sk_t_scale255<1u>(unsigned int) Unexecuted instantiation: SkSurfaceCharacterization.cpp:unsigned int sk_t_scale255<1u>(unsigned int) Unexecuted instantiation: SkPDFDocument.cpp:unsigned int sk_t_scale255<1u>(unsigned int) Unexecuted instantiation: SkPDFFont.cpp:unsigned int sk_t_scale255<1u>(unsigned int) Unexecuted instantiation: SkPDFMakeCIDGlyphWidthsArray.cpp:unsigned int sk_t_scale255<1u>(unsigned int) Unexecuted instantiation: SkPDFMakeToUnicodeCmap.cpp:unsigned int sk_t_scale255<1u>(unsigned int) Unexecuted instantiation: SkPDFType1Font.cpp:unsigned int sk_t_scale255<1u>(unsigned int) Unexecuted instantiation: SkPDFUtils.cpp:unsigned int sk_t_scale255<1u>(unsigned int) Unexecuted instantiation: SkSVGDevice.cpp:unsigned int sk_t_scale255<1u>(unsigned int) Unexecuted instantiation: SkClipStackDevice.cpp:unsigned int sk_t_scale255<1u>(unsigned int) Unexecuted instantiation: SkPDFDevice.cpp:unsigned int sk_t_scale255<1u>(unsigned int) Unexecuted instantiation: SkPDFResourceDict.cpp:unsigned int sk_t_scale255<1u>(unsigned int) Unexecuted instantiation: SkPDFShader.cpp:unsigned int sk_t_scale255<1u>(unsigned int) Unexecuted instantiation: SkPDFGradientShader.cpp:unsigned int sk_t_scale255<1u>(unsigned int) |
67 | 0 | template<> /*static*/ inline U8CPU sk_t_scale255<2>(U8CPU base) { |
68 | 0 | return base * 0x55; |
69 | 0 | } Unexecuted instantiation: GrTest.cpp:unsigned int sk_t_scale255<2u>(unsigned int) Unexecuted instantiation: SkCanvas.cpp:unsigned int sk_t_scale255<2u>(unsigned int) Unexecuted instantiation: SkDevice.cpp:unsigned int sk_t_scale255<2u>(unsigned int) Unexecuted instantiation: SkGlyphRun.cpp:unsigned int sk_t_scale255<2u>(unsigned int) Unexecuted instantiation: SkPaint.cpp:unsigned int sk_t_scale255<2u>(unsigned int) Unexecuted instantiation: SkPixmap.cpp:unsigned int sk_t_scale255<2u>(unsigned int) Unexecuted instantiation: SkStrikeSpec.cpp:unsigned int sk_t_scale255<2u>(unsigned int) Unexecuted instantiation: SkTextBlob.cpp:unsigned int sk_t_scale255<2u>(unsigned int) Unexecuted instantiation: SkTypeface.cpp:unsigned int sk_t_scale255<2u>(unsigned int) Unexecuted instantiation: SkCustomTypeface.cpp:unsigned int sk_t_scale255<2u>(unsigned int) Unexecuted instantiation: GrContext_Base.cpp:unsigned int sk_t_scale255<2u>(unsigned int) Unexecuted instantiation: GrDirectContext.cpp:unsigned int sk_t_scale255<2u>(unsigned int) Unexecuted instantiation: GrImageContext.cpp:unsigned int sk_t_scale255<2u>(unsigned int) Unexecuted instantiation: GrProxyProvider.cpp:unsigned int sk_t_scale255<2u>(unsigned int) Unexecuted instantiation: GrRecordingContext.cpp:unsigned int sk_t_scale255<2u>(unsigned int) Unexecuted instantiation: GrRecordingContextPriv.cpp:unsigned int sk_t_scale255<2u>(unsigned int) Unexecuted instantiation: GrAtlasManager.cpp:unsigned int sk_t_scale255<2u>(unsigned int) Unexecuted instantiation: GrSDFTControl.cpp:unsigned int sk_t_scale255<2u>(unsigned int) Unexecuted instantiation: GrStrikeCache.cpp:unsigned int sk_t_scale255<2u>(unsigned int) Unexecuted instantiation: GrTextBlobCache.cpp:unsigned int sk_t_scale255<2u>(unsigned int) Unexecuted instantiation: SkImage_Gpu.cpp:unsigned int sk_t_scale255<2u>(unsigned int) Unexecuted instantiation: SkSurface_Gpu.cpp:unsigned int sk_t_scale255<2u>(unsigned int) Unexecuted instantiation: AAConvexPathRenderer.cpp:unsigned int sk_t_scale255<2u>(unsigned int) Unexecuted instantiation: AAHairLinePathRenderer.cpp:unsigned int sk_t_scale255<2u>(unsigned int) Unexecuted instantiation: AALinearizingConvexPathRenderer.cpp:unsigned int sk_t_scale255<2u>(unsigned int) Unexecuted instantiation: DefaultPathRenderer.cpp:unsigned int sk_t_scale255<2u>(unsigned int) Unexecuted instantiation: GrAtlasTextOp.cpp:unsigned int sk_t_scale255<2u>(unsigned int) Unexecuted instantiation: GrFillRectOp.cpp:unsigned int sk_t_scale255<2u>(unsigned int) Unexecuted instantiation: GrTextureOp.cpp:unsigned int sk_t_scale255<2u>(unsigned int) Unexecuted instantiation: SmallPathRenderer.cpp:unsigned int sk_t_scale255<2u>(unsigned int) Unexecuted instantiation: SoftwarePathRenderer.cpp:unsigned int sk_t_scale255<2u>(unsigned int) Unexecuted instantiation: TriangulatingPathRenderer.cpp:unsigned int sk_t_scale255<2u>(unsigned int) Unexecuted instantiation: Device.cpp:unsigned int sk_t_scale255<2u>(unsigned int) Unexecuted instantiation: Device_drawTexture.cpp:unsigned int sk_t_scale255<2u>(unsigned int) Unexecuted instantiation: PathRenderer.cpp:unsigned int sk_t_scale255<2u>(unsigned int) Unexecuted instantiation: SurfaceDrawContext.cpp:unsigned int sk_t_scale255<2u>(unsigned int) Unexecuted instantiation: SurfaceFillContext_v1.cpp:unsigned int sk_t_scale255<2u>(unsigned int) Unexecuted instantiation: SkBitmapDevice.cpp:unsigned int sk_t_scale255<2u>(unsigned int) Unexecuted instantiation: SkBlurMF.cpp:unsigned int sk_t_scale255<2u>(unsigned int) Unexecuted instantiation: SkDescriptor.cpp:unsigned int sk_t_scale255<2u>(unsigned int) Unexecuted instantiation: SkDraw.cpp:unsigned int sk_t_scale255<2u>(unsigned int) Unexecuted instantiation: SkDraw_atlas.cpp:unsigned int sk_t_scale255<2u>(unsigned int) Unexecuted instantiation: SkDraw_text.cpp:unsigned int sk_t_scale255<2u>(unsigned int) Unexecuted instantiation: SkDraw_vertices.cpp:unsigned int sk_t_scale255<2u>(unsigned int) Unexecuted instantiation: SkFont.cpp:unsigned int sk_t_scale255<2u>(unsigned int) Unexecuted instantiation: SkGlyph.cpp:unsigned int sk_t_scale255<2u>(unsigned int) Unexecuted instantiation: SkGlyphRunPainter.cpp:unsigned int sk_t_scale255<2u>(unsigned int) Unexecuted instantiation: SkGpuBlurUtils.cpp:unsigned int sk_t_scale255<2u>(unsigned int) Unexecuted instantiation: SkMaskFilter.cpp:unsigned int sk_t_scale255<2u>(unsigned int) Unexecuted instantiation: SkMaskGamma.cpp:unsigned int sk_t_scale255<2u>(unsigned int) Unexecuted instantiation: SkScalerCache.cpp:unsigned int sk_t_scale255<2u>(unsigned int) Unexecuted instantiation: SkScalerContext.cpp:unsigned int sk_t_scale255<2u>(unsigned int) Unexecuted instantiation: SkStrikeCache.cpp:unsigned int sk_t_scale255<2u>(unsigned int) Unexecuted instantiation: SkStrikeForGPU.cpp:unsigned int sk_t_scale255<2u>(unsigned int) Unexecuted instantiation: SkAlphaThresholdImageFilter.cpp:unsigned int sk_t_scale255<2u>(unsigned int) Unexecuted instantiation: SkBlurImageFilter.cpp:unsigned int sk_t_scale255<2u>(unsigned int) Unexecuted instantiation: GrContextThreadSafeProxy.cpp:unsigned int sk_t_scale255<2u>(unsigned int) Unexecuted instantiation: GrDirectContextPriv.cpp:unsigned int sk_t_scale255<2u>(unsigned int) Unexecuted instantiation: GrSWMaskHelper.cpp:unsigned int sk_t_scale255<2u>(unsigned int) Unexecuted instantiation: GrUtil.cpp:unsigned int sk_t_scale255<2u>(unsigned int) Unexecuted instantiation: GrDistanceFieldAdjustTable.cpp:unsigned int sk_t_scale255<2u>(unsigned int) Unexecuted instantiation: GrTextBlob.cpp:unsigned int sk_t_scale255<2u>(unsigned int) Unexecuted instantiation: GrBlurUtils.cpp:unsigned int sk_t_scale255<2u>(unsigned int) Unexecuted instantiation: AtlasPathRenderer.cpp:unsigned int sk_t_scale255<2u>(unsigned int) Unexecuted instantiation: DashLinePathRenderer.cpp:unsigned int sk_t_scale255<2u>(unsigned int) Unexecuted instantiation: TessellationPathRenderer.cpp:unsigned int sk_t_scale255<2u>(unsigned int) Unexecuted instantiation: ClipStack.cpp:unsigned int sk_t_scale255<2u>(unsigned int) Unexecuted instantiation: StencilMaskHelper.cpp:unsigned int sk_t_scale255<2u>(unsigned int) Unexecuted instantiation: SkWuffsCodec.cpp:unsigned int sk_t_scale255<2u>(unsigned int) Unexecuted instantiation: SkGlyphBuffer.cpp:unsigned int sk_t_scale255<2u>(unsigned int) Unexecuted instantiation: SkGraphics.cpp:unsigned int sk_t_scale255<2u>(unsigned int) Unexecuted instantiation: SkFontMgr_custom_empty.cpp:unsigned int sk_t_scale255<2u>(unsigned int) Unexecuted instantiation: SkFontMgr_custom.cpp:unsigned int sk_t_scale255<2u>(unsigned int) Unexecuted instantiation: SkFontHost_FreeType.cpp:unsigned int sk_t_scale255<2u>(unsigned int) Unexecuted instantiation: SkFontHost_FreeType_common.cpp:unsigned int sk_t_scale255<2u>(unsigned int) Unexecuted instantiation: TestSVGTypeface.cpp:unsigned int sk_t_scale255<2u>(unsigned int) Unexecuted instantiation: TestTypeface.cpp:unsigned int sk_t_scale255<2u>(unsigned int) Unexecuted instantiation: GrDDLContext.cpp:unsigned int sk_t_scale255<2u>(unsigned int) Unexecuted instantiation: FuzzSkDescriptorDeserialize.cpp:unsigned int sk_t_scale255<2u>(unsigned int) Unexecuted instantiation: SkRemoteGlyphCache.cpp:unsigned int sk_t_scale255<2u>(unsigned int) Unexecuted instantiation: SkTypeface_remote.cpp:unsigned int sk_t_scale255<2u>(unsigned int) Unexecuted instantiation: SkSurfaceCharacterization.cpp:unsigned int sk_t_scale255<2u>(unsigned int) Unexecuted instantiation: SkPDFDocument.cpp:unsigned int sk_t_scale255<2u>(unsigned int) Unexecuted instantiation: SkPDFFont.cpp:unsigned int sk_t_scale255<2u>(unsigned int) Unexecuted instantiation: SkPDFMakeCIDGlyphWidthsArray.cpp:unsigned int sk_t_scale255<2u>(unsigned int) Unexecuted instantiation: SkPDFMakeToUnicodeCmap.cpp:unsigned int sk_t_scale255<2u>(unsigned int) Unexecuted instantiation: SkPDFType1Font.cpp:unsigned int sk_t_scale255<2u>(unsigned int) Unexecuted instantiation: SkPDFUtils.cpp:unsigned int sk_t_scale255<2u>(unsigned int) Unexecuted instantiation: SkSVGDevice.cpp:unsigned int sk_t_scale255<2u>(unsigned int) Unexecuted instantiation: SkClipStackDevice.cpp:unsigned int sk_t_scale255<2u>(unsigned int) Unexecuted instantiation: SkPDFDevice.cpp:unsigned int sk_t_scale255<2u>(unsigned int) Unexecuted instantiation: SkPDFResourceDict.cpp:unsigned int sk_t_scale255<2u>(unsigned int) Unexecuted instantiation: SkPDFShader.cpp:unsigned int sk_t_scale255<2u>(unsigned int) Unexecuted instantiation: SkPDFGradientShader.cpp:unsigned int sk_t_scale255<2u>(unsigned int) |
70 | 0 | template<> /*static*/ inline U8CPU sk_t_scale255<4>(U8CPU base) { |
71 | 0 | return base * 0x11; |
72 | 0 | } Unexecuted instantiation: GrTest.cpp:unsigned int sk_t_scale255<4u>(unsigned int) Unexecuted instantiation: SkCanvas.cpp:unsigned int sk_t_scale255<4u>(unsigned int) Unexecuted instantiation: SkDevice.cpp:unsigned int sk_t_scale255<4u>(unsigned int) Unexecuted instantiation: SkGlyphRun.cpp:unsigned int sk_t_scale255<4u>(unsigned int) Unexecuted instantiation: SkPaint.cpp:unsigned int sk_t_scale255<4u>(unsigned int) Unexecuted instantiation: SkPixmap.cpp:unsigned int sk_t_scale255<4u>(unsigned int) Unexecuted instantiation: SkStrikeSpec.cpp:unsigned int sk_t_scale255<4u>(unsigned int) Unexecuted instantiation: SkTextBlob.cpp:unsigned int sk_t_scale255<4u>(unsigned int) Unexecuted instantiation: SkTypeface.cpp:unsigned int sk_t_scale255<4u>(unsigned int) Unexecuted instantiation: SkCustomTypeface.cpp:unsigned int sk_t_scale255<4u>(unsigned int) Unexecuted instantiation: GrContext_Base.cpp:unsigned int sk_t_scale255<4u>(unsigned int) Unexecuted instantiation: GrDirectContext.cpp:unsigned int sk_t_scale255<4u>(unsigned int) Unexecuted instantiation: GrImageContext.cpp:unsigned int sk_t_scale255<4u>(unsigned int) Unexecuted instantiation: GrProxyProvider.cpp:unsigned int sk_t_scale255<4u>(unsigned int) Unexecuted instantiation: GrRecordingContext.cpp:unsigned int sk_t_scale255<4u>(unsigned int) Unexecuted instantiation: GrRecordingContextPriv.cpp:unsigned int sk_t_scale255<4u>(unsigned int) Unexecuted instantiation: GrAtlasManager.cpp:unsigned int sk_t_scale255<4u>(unsigned int) Unexecuted instantiation: GrSDFTControl.cpp:unsigned int sk_t_scale255<4u>(unsigned int) Unexecuted instantiation: GrStrikeCache.cpp:unsigned int sk_t_scale255<4u>(unsigned int) Unexecuted instantiation: GrTextBlobCache.cpp:unsigned int sk_t_scale255<4u>(unsigned int) Unexecuted instantiation: SkImage_Gpu.cpp:unsigned int sk_t_scale255<4u>(unsigned int) Unexecuted instantiation: SkSurface_Gpu.cpp:unsigned int sk_t_scale255<4u>(unsigned int) Unexecuted instantiation: AAConvexPathRenderer.cpp:unsigned int sk_t_scale255<4u>(unsigned int) Unexecuted instantiation: AAHairLinePathRenderer.cpp:unsigned int sk_t_scale255<4u>(unsigned int) Unexecuted instantiation: AALinearizingConvexPathRenderer.cpp:unsigned int sk_t_scale255<4u>(unsigned int) Unexecuted instantiation: DefaultPathRenderer.cpp:unsigned int sk_t_scale255<4u>(unsigned int) Unexecuted instantiation: GrAtlasTextOp.cpp:unsigned int sk_t_scale255<4u>(unsigned int) Unexecuted instantiation: GrFillRectOp.cpp:unsigned int sk_t_scale255<4u>(unsigned int) Unexecuted instantiation: GrTextureOp.cpp:unsigned int sk_t_scale255<4u>(unsigned int) Unexecuted instantiation: SmallPathRenderer.cpp:unsigned int sk_t_scale255<4u>(unsigned int) Unexecuted instantiation: SoftwarePathRenderer.cpp:unsigned int sk_t_scale255<4u>(unsigned int) Unexecuted instantiation: TriangulatingPathRenderer.cpp:unsigned int sk_t_scale255<4u>(unsigned int) Unexecuted instantiation: Device.cpp:unsigned int sk_t_scale255<4u>(unsigned int) Unexecuted instantiation: Device_drawTexture.cpp:unsigned int sk_t_scale255<4u>(unsigned int) Unexecuted instantiation: PathRenderer.cpp:unsigned int sk_t_scale255<4u>(unsigned int) Unexecuted instantiation: SurfaceDrawContext.cpp:unsigned int sk_t_scale255<4u>(unsigned int) Unexecuted instantiation: SurfaceFillContext_v1.cpp:unsigned int sk_t_scale255<4u>(unsigned int) Unexecuted instantiation: SkBitmapDevice.cpp:unsigned int sk_t_scale255<4u>(unsigned int) Unexecuted instantiation: SkBlurMF.cpp:unsigned int sk_t_scale255<4u>(unsigned int) Unexecuted instantiation: SkDescriptor.cpp:unsigned int sk_t_scale255<4u>(unsigned int) Unexecuted instantiation: SkDraw.cpp:unsigned int sk_t_scale255<4u>(unsigned int) Unexecuted instantiation: SkDraw_atlas.cpp:unsigned int sk_t_scale255<4u>(unsigned int) Unexecuted instantiation: SkDraw_text.cpp:unsigned int sk_t_scale255<4u>(unsigned int) Unexecuted instantiation: SkDraw_vertices.cpp:unsigned int sk_t_scale255<4u>(unsigned int) Unexecuted instantiation: SkFont.cpp:unsigned int sk_t_scale255<4u>(unsigned int) Unexecuted instantiation: SkGlyph.cpp:unsigned int sk_t_scale255<4u>(unsigned int) Unexecuted instantiation: SkGlyphRunPainter.cpp:unsigned int sk_t_scale255<4u>(unsigned int) Unexecuted instantiation: SkGpuBlurUtils.cpp:unsigned int sk_t_scale255<4u>(unsigned int) Unexecuted instantiation: SkMaskFilter.cpp:unsigned int sk_t_scale255<4u>(unsigned int) Unexecuted instantiation: SkMaskGamma.cpp:unsigned int sk_t_scale255<4u>(unsigned int) Unexecuted instantiation: SkScalerCache.cpp:unsigned int sk_t_scale255<4u>(unsigned int) Unexecuted instantiation: SkScalerContext.cpp:unsigned int sk_t_scale255<4u>(unsigned int) Unexecuted instantiation: SkStrikeCache.cpp:unsigned int sk_t_scale255<4u>(unsigned int) Unexecuted instantiation: SkStrikeForGPU.cpp:unsigned int sk_t_scale255<4u>(unsigned int) Unexecuted instantiation: SkAlphaThresholdImageFilter.cpp:unsigned int sk_t_scale255<4u>(unsigned int) Unexecuted instantiation: SkBlurImageFilter.cpp:unsigned int sk_t_scale255<4u>(unsigned int) Unexecuted instantiation: GrContextThreadSafeProxy.cpp:unsigned int sk_t_scale255<4u>(unsigned int) Unexecuted instantiation: GrDirectContextPriv.cpp:unsigned int sk_t_scale255<4u>(unsigned int) Unexecuted instantiation: GrSWMaskHelper.cpp:unsigned int sk_t_scale255<4u>(unsigned int) Unexecuted instantiation: GrUtil.cpp:unsigned int sk_t_scale255<4u>(unsigned int) Unexecuted instantiation: GrDistanceFieldAdjustTable.cpp:unsigned int sk_t_scale255<4u>(unsigned int) Unexecuted instantiation: GrTextBlob.cpp:unsigned int sk_t_scale255<4u>(unsigned int) Unexecuted instantiation: GrBlurUtils.cpp:unsigned int sk_t_scale255<4u>(unsigned int) Unexecuted instantiation: AtlasPathRenderer.cpp:unsigned int sk_t_scale255<4u>(unsigned int) Unexecuted instantiation: DashLinePathRenderer.cpp:unsigned int sk_t_scale255<4u>(unsigned int) Unexecuted instantiation: TessellationPathRenderer.cpp:unsigned int sk_t_scale255<4u>(unsigned int) Unexecuted instantiation: ClipStack.cpp:unsigned int sk_t_scale255<4u>(unsigned int) Unexecuted instantiation: StencilMaskHelper.cpp:unsigned int sk_t_scale255<4u>(unsigned int) Unexecuted instantiation: SkWuffsCodec.cpp:unsigned int sk_t_scale255<4u>(unsigned int) Unexecuted instantiation: SkGlyphBuffer.cpp:unsigned int sk_t_scale255<4u>(unsigned int) Unexecuted instantiation: SkGraphics.cpp:unsigned int sk_t_scale255<4u>(unsigned int) Unexecuted instantiation: SkFontMgr_custom_empty.cpp:unsigned int sk_t_scale255<4u>(unsigned int) Unexecuted instantiation: SkFontMgr_custom.cpp:unsigned int sk_t_scale255<4u>(unsigned int) Unexecuted instantiation: SkFontHost_FreeType.cpp:unsigned int sk_t_scale255<4u>(unsigned int) Unexecuted instantiation: SkFontHost_FreeType_common.cpp:unsigned int sk_t_scale255<4u>(unsigned int) Unexecuted instantiation: TestSVGTypeface.cpp:unsigned int sk_t_scale255<4u>(unsigned int) Unexecuted instantiation: TestTypeface.cpp:unsigned int sk_t_scale255<4u>(unsigned int) Unexecuted instantiation: GrDDLContext.cpp:unsigned int sk_t_scale255<4u>(unsigned int) Unexecuted instantiation: FuzzSkDescriptorDeserialize.cpp:unsigned int sk_t_scale255<4u>(unsigned int) Unexecuted instantiation: SkRemoteGlyphCache.cpp:unsigned int sk_t_scale255<4u>(unsigned int) Unexecuted instantiation: SkTypeface_remote.cpp:unsigned int sk_t_scale255<4u>(unsigned int) Unexecuted instantiation: SkSurfaceCharacterization.cpp:unsigned int sk_t_scale255<4u>(unsigned int) Unexecuted instantiation: SkPDFDocument.cpp:unsigned int sk_t_scale255<4u>(unsigned int) Unexecuted instantiation: SkPDFFont.cpp:unsigned int sk_t_scale255<4u>(unsigned int) Unexecuted instantiation: SkPDFMakeCIDGlyphWidthsArray.cpp:unsigned int sk_t_scale255<4u>(unsigned int) Unexecuted instantiation: SkPDFMakeToUnicodeCmap.cpp:unsigned int sk_t_scale255<4u>(unsigned int) Unexecuted instantiation: SkPDFType1Font.cpp:unsigned int sk_t_scale255<4u>(unsigned int) Unexecuted instantiation: SkPDFUtils.cpp:unsigned int sk_t_scale255<4u>(unsigned int) Unexecuted instantiation: SkSVGDevice.cpp:unsigned int sk_t_scale255<4u>(unsigned int) Unexecuted instantiation: SkClipStackDevice.cpp:unsigned int sk_t_scale255<4u>(unsigned int) Unexecuted instantiation: SkPDFDevice.cpp:unsigned int sk_t_scale255<4u>(unsigned int) Unexecuted instantiation: SkPDFResourceDict.cpp:unsigned int sk_t_scale255<4u>(unsigned int) Unexecuted instantiation: SkPDFShader.cpp:unsigned int sk_t_scale255<4u>(unsigned int) Unexecuted instantiation: SkPDFGradientShader.cpp:unsigned int sk_t_scale255<4u>(unsigned int) |
73 | 0 | template<> /*static*/ inline U8CPU sk_t_scale255<8>(U8CPU base) { |
74 | 0 | return base; |
75 | 0 | } Unexecuted instantiation: GrTest.cpp:unsigned int sk_t_scale255<8u>(unsigned int) Unexecuted instantiation: SkCanvas.cpp:unsigned int sk_t_scale255<8u>(unsigned int) Unexecuted instantiation: SkDevice.cpp:unsigned int sk_t_scale255<8u>(unsigned int) Unexecuted instantiation: SkGlyphRun.cpp:unsigned int sk_t_scale255<8u>(unsigned int) Unexecuted instantiation: SkPaint.cpp:unsigned int sk_t_scale255<8u>(unsigned int) Unexecuted instantiation: SkPixmap.cpp:unsigned int sk_t_scale255<8u>(unsigned int) Unexecuted instantiation: SkStrikeSpec.cpp:unsigned int sk_t_scale255<8u>(unsigned int) Unexecuted instantiation: SkTextBlob.cpp:unsigned int sk_t_scale255<8u>(unsigned int) Unexecuted instantiation: SkTypeface.cpp:unsigned int sk_t_scale255<8u>(unsigned int) Unexecuted instantiation: SkCustomTypeface.cpp:unsigned int sk_t_scale255<8u>(unsigned int) Unexecuted instantiation: GrContext_Base.cpp:unsigned int sk_t_scale255<8u>(unsigned int) Unexecuted instantiation: GrDirectContext.cpp:unsigned int sk_t_scale255<8u>(unsigned int) Unexecuted instantiation: GrImageContext.cpp:unsigned int sk_t_scale255<8u>(unsigned int) Unexecuted instantiation: GrProxyProvider.cpp:unsigned int sk_t_scale255<8u>(unsigned int) Unexecuted instantiation: GrRecordingContext.cpp:unsigned int sk_t_scale255<8u>(unsigned int) Unexecuted instantiation: GrRecordingContextPriv.cpp:unsigned int sk_t_scale255<8u>(unsigned int) Unexecuted instantiation: GrAtlasManager.cpp:unsigned int sk_t_scale255<8u>(unsigned int) Unexecuted instantiation: GrSDFTControl.cpp:unsigned int sk_t_scale255<8u>(unsigned int) Unexecuted instantiation: GrStrikeCache.cpp:unsigned int sk_t_scale255<8u>(unsigned int) Unexecuted instantiation: GrTextBlobCache.cpp:unsigned int sk_t_scale255<8u>(unsigned int) Unexecuted instantiation: SkImage_Gpu.cpp:unsigned int sk_t_scale255<8u>(unsigned int) Unexecuted instantiation: SkSurface_Gpu.cpp:unsigned int sk_t_scale255<8u>(unsigned int) Unexecuted instantiation: AAConvexPathRenderer.cpp:unsigned int sk_t_scale255<8u>(unsigned int) Unexecuted instantiation: AAHairLinePathRenderer.cpp:unsigned int sk_t_scale255<8u>(unsigned int) Unexecuted instantiation: AALinearizingConvexPathRenderer.cpp:unsigned int sk_t_scale255<8u>(unsigned int) Unexecuted instantiation: DefaultPathRenderer.cpp:unsigned int sk_t_scale255<8u>(unsigned int) Unexecuted instantiation: GrAtlasTextOp.cpp:unsigned int sk_t_scale255<8u>(unsigned int) Unexecuted instantiation: GrFillRectOp.cpp:unsigned int sk_t_scale255<8u>(unsigned int) Unexecuted instantiation: GrTextureOp.cpp:unsigned int sk_t_scale255<8u>(unsigned int) Unexecuted instantiation: SmallPathRenderer.cpp:unsigned int sk_t_scale255<8u>(unsigned int) Unexecuted instantiation: SoftwarePathRenderer.cpp:unsigned int sk_t_scale255<8u>(unsigned int) Unexecuted instantiation: TriangulatingPathRenderer.cpp:unsigned int sk_t_scale255<8u>(unsigned int) Unexecuted instantiation: Device.cpp:unsigned int sk_t_scale255<8u>(unsigned int) Unexecuted instantiation: Device_drawTexture.cpp:unsigned int sk_t_scale255<8u>(unsigned int) Unexecuted instantiation: PathRenderer.cpp:unsigned int sk_t_scale255<8u>(unsigned int) Unexecuted instantiation: SurfaceDrawContext.cpp:unsigned int sk_t_scale255<8u>(unsigned int) Unexecuted instantiation: SurfaceFillContext_v1.cpp:unsigned int sk_t_scale255<8u>(unsigned int) Unexecuted instantiation: SkBitmapDevice.cpp:unsigned int sk_t_scale255<8u>(unsigned int) Unexecuted instantiation: SkBlurMF.cpp:unsigned int sk_t_scale255<8u>(unsigned int) Unexecuted instantiation: SkDescriptor.cpp:unsigned int sk_t_scale255<8u>(unsigned int) Unexecuted instantiation: SkDraw.cpp:unsigned int sk_t_scale255<8u>(unsigned int) Unexecuted instantiation: SkDraw_atlas.cpp:unsigned int sk_t_scale255<8u>(unsigned int) Unexecuted instantiation: SkDraw_text.cpp:unsigned int sk_t_scale255<8u>(unsigned int) Unexecuted instantiation: SkDraw_vertices.cpp:unsigned int sk_t_scale255<8u>(unsigned int) Unexecuted instantiation: SkFont.cpp:unsigned int sk_t_scale255<8u>(unsigned int) Unexecuted instantiation: SkGlyph.cpp:unsigned int sk_t_scale255<8u>(unsigned int) Unexecuted instantiation: SkGlyphRunPainter.cpp:unsigned int sk_t_scale255<8u>(unsigned int) Unexecuted instantiation: SkGpuBlurUtils.cpp:unsigned int sk_t_scale255<8u>(unsigned int) Unexecuted instantiation: SkMaskFilter.cpp:unsigned int sk_t_scale255<8u>(unsigned int) Unexecuted instantiation: SkMaskGamma.cpp:unsigned int sk_t_scale255<8u>(unsigned int) Unexecuted instantiation: SkScalerCache.cpp:unsigned int sk_t_scale255<8u>(unsigned int) Unexecuted instantiation: SkScalerContext.cpp:unsigned int sk_t_scale255<8u>(unsigned int) Unexecuted instantiation: SkStrikeCache.cpp:unsigned int sk_t_scale255<8u>(unsigned int) Unexecuted instantiation: SkStrikeForGPU.cpp:unsigned int sk_t_scale255<8u>(unsigned int) Unexecuted instantiation: SkAlphaThresholdImageFilter.cpp:unsigned int sk_t_scale255<8u>(unsigned int) Unexecuted instantiation: SkBlurImageFilter.cpp:unsigned int sk_t_scale255<8u>(unsigned int) Unexecuted instantiation: GrContextThreadSafeProxy.cpp:unsigned int sk_t_scale255<8u>(unsigned int) Unexecuted instantiation: GrDirectContextPriv.cpp:unsigned int sk_t_scale255<8u>(unsigned int) Unexecuted instantiation: GrSWMaskHelper.cpp:unsigned int sk_t_scale255<8u>(unsigned int) Unexecuted instantiation: GrUtil.cpp:unsigned int sk_t_scale255<8u>(unsigned int) Unexecuted instantiation: GrDistanceFieldAdjustTable.cpp:unsigned int sk_t_scale255<8u>(unsigned int) Unexecuted instantiation: GrTextBlob.cpp:unsigned int sk_t_scale255<8u>(unsigned int) Unexecuted instantiation: GrBlurUtils.cpp:unsigned int sk_t_scale255<8u>(unsigned int) Unexecuted instantiation: AtlasPathRenderer.cpp:unsigned int sk_t_scale255<8u>(unsigned int) Unexecuted instantiation: DashLinePathRenderer.cpp:unsigned int sk_t_scale255<8u>(unsigned int) Unexecuted instantiation: TessellationPathRenderer.cpp:unsigned int sk_t_scale255<8u>(unsigned int) Unexecuted instantiation: ClipStack.cpp:unsigned int sk_t_scale255<8u>(unsigned int) Unexecuted instantiation: StencilMaskHelper.cpp:unsigned int sk_t_scale255<8u>(unsigned int) Unexecuted instantiation: SkWuffsCodec.cpp:unsigned int sk_t_scale255<8u>(unsigned int) Unexecuted instantiation: SkGlyphBuffer.cpp:unsigned int sk_t_scale255<8u>(unsigned int) Unexecuted instantiation: SkGraphics.cpp:unsigned int sk_t_scale255<8u>(unsigned int) Unexecuted instantiation: SkFontMgr_custom_empty.cpp:unsigned int sk_t_scale255<8u>(unsigned int) Unexecuted instantiation: SkFontMgr_custom.cpp:unsigned int sk_t_scale255<8u>(unsigned int) Unexecuted instantiation: SkFontHost_FreeType.cpp:unsigned int sk_t_scale255<8u>(unsigned int) Unexecuted instantiation: SkFontHost_FreeType_common.cpp:unsigned int sk_t_scale255<8u>(unsigned int) Unexecuted instantiation: TestSVGTypeface.cpp:unsigned int sk_t_scale255<8u>(unsigned int) Unexecuted instantiation: TestTypeface.cpp:unsigned int sk_t_scale255<8u>(unsigned int) Unexecuted instantiation: GrDDLContext.cpp:unsigned int sk_t_scale255<8u>(unsigned int) Unexecuted instantiation: FuzzSkDescriptorDeserialize.cpp:unsigned int sk_t_scale255<8u>(unsigned int) Unexecuted instantiation: SkRemoteGlyphCache.cpp:unsigned int sk_t_scale255<8u>(unsigned int) Unexecuted instantiation: SkTypeface_remote.cpp:unsigned int sk_t_scale255<8u>(unsigned int) Unexecuted instantiation: SkSurfaceCharacterization.cpp:unsigned int sk_t_scale255<8u>(unsigned int) Unexecuted instantiation: SkPDFDocument.cpp:unsigned int sk_t_scale255<8u>(unsigned int) Unexecuted instantiation: SkPDFFont.cpp:unsigned int sk_t_scale255<8u>(unsigned int) Unexecuted instantiation: SkPDFMakeCIDGlyphWidthsArray.cpp:unsigned int sk_t_scale255<8u>(unsigned int) Unexecuted instantiation: SkPDFMakeToUnicodeCmap.cpp:unsigned int sk_t_scale255<8u>(unsigned int) Unexecuted instantiation: SkPDFType1Font.cpp:unsigned int sk_t_scale255<8u>(unsigned int) Unexecuted instantiation: SkPDFUtils.cpp:unsigned int sk_t_scale255<8u>(unsigned int) Unexecuted instantiation: SkSVGDevice.cpp:unsigned int sk_t_scale255<8u>(unsigned int) Unexecuted instantiation: SkClipStackDevice.cpp:unsigned int sk_t_scale255<8u>(unsigned int) Unexecuted instantiation: SkPDFDevice.cpp:unsigned int sk_t_scale255<8u>(unsigned int) Unexecuted instantiation: SkPDFResourceDict.cpp:unsigned int sk_t_scale255<8u>(unsigned int) Unexecuted instantiation: SkPDFShader.cpp:unsigned int sk_t_scale255<8u>(unsigned int) Unexecuted instantiation: SkPDFGradientShader.cpp:unsigned int sk_t_scale255<8u>(unsigned int) |
76 | | ///@} |
77 | | |
78 | | template <int R_LUM_BITS, int G_LUM_BITS, int B_LUM_BITS> class SkTMaskPreBlend; |
79 | | |
80 | | void SkTMaskGamma_build_correcting_lut(uint8_t table[256], U8CPU srcI, SkScalar contrast, |
81 | | const SkColorSpaceLuminance& srcConvert, SkScalar srcGamma, |
82 | | const SkColorSpaceLuminance& dstConvert, SkScalar dstGamma); |
83 | | |
84 | | /** |
85 | | * A regular mask contains linear alpha values. A gamma correcting mask |
86 | | * contains non-linear alpha values in an attempt to create gamma correct blits |
87 | | * in the presence of a gamma incorrect (linear) blend in the blitter. |
88 | | * |
89 | | * SkMaskGamma creates and maintains tables which convert linear alpha values |
90 | | * to gamma correcting alpha values. |
91 | | * @param R The number of luminance bits to use [1, 8] from the red channel. |
92 | | * @param G The number of luminance bits to use [1, 8] from the green channel. |
93 | | * @param B The number of luminance bits to use [1, 8] from the blue channel. |
94 | | */ |
95 | | template <int R_LUM_BITS, int G_LUM_BITS, int B_LUM_BITS> class SkTMaskGamma : public SkRefCnt { |
96 | | |
97 | | public: |
98 | | |
99 | | /** Creates a linear SkTMaskGamma. */ |
100 | 8 | SkTMaskGamma() : fIsLinear(true) { } |
101 | | |
102 | | /** |
103 | | * Creates tables to convert linear alpha values to gamma correcting alpha |
104 | | * values. |
105 | | * |
106 | | * @param contrast A value in the range [0.0, 1.0] which indicates the |
107 | | * amount of artificial contrast to add. |
108 | | * @param paint The color space in which the paint color was chosen. |
109 | | * @param device The color space of the target device. |
110 | | */ |
111 | 12 | SkTMaskGamma(SkScalar contrast, SkScalar paintGamma, SkScalar deviceGamma) : fIsLinear(false) { |
112 | 12 | const SkColorSpaceLuminance& paintConvert = SkColorSpaceLuminance::Fetch(paintGamma); |
113 | 12 | const SkColorSpaceLuminance& deviceConvert = SkColorSpaceLuminance::Fetch(deviceGamma); |
114 | 108 | for (U8CPU i = 0; i < (1 << MAX_LUM_BITS); ++i) { |
115 | 96 | U8CPU lum = sk_t_scale255<MAX_LUM_BITS>(i); |
116 | 96 | SkTMaskGamma_build_correcting_lut(fGammaTables[i], lum, contrast, |
117 | 96 | paintConvert, paintGamma, |
118 | 96 | deviceConvert, deviceGamma); |
119 | 96 | } |
120 | 12 | } |
121 | | |
122 | | /** Given a color, returns the closest canonical color. */ |
123 | 9.92M | static SkColor CanonicalColor(SkColor color) { |
124 | 9.92M | return SkColorSetRGB( |
125 | 9.92M | sk_t_scale255<R_LUM_BITS>(SkColorGetR(color) >> (8 - R_LUM_BITS)), |
126 | 9.92M | sk_t_scale255<G_LUM_BITS>(SkColorGetG(color) >> (8 - G_LUM_BITS)), |
127 | 9.92M | sk_t_scale255<B_LUM_BITS>(SkColorGetB(color) >> (8 - B_LUM_BITS))); |
128 | 9.92M | } |
129 | | |
130 | | /** The type of the mask pre-blend which will be returned from preBlend(SkColor). */ |
131 | | typedef SkTMaskPreBlend<R_LUM_BITS, G_LUM_BITS, B_LUM_BITS> PreBlend; |
132 | | |
133 | | /** |
134 | | * Provides access to the tables appropriate for converting linear alpha |
135 | | * values into gamma correcting alpha values when drawing the given color |
136 | | * through the mask. The destination color will be approximated. |
137 | | */ |
138 | | PreBlend preBlend(SkColor color) const; |
139 | | |
140 | | /** |
141 | | * Get dimensions for the full table set, so it can be allocated as a block. |
142 | | */ |
143 | 4 | void getGammaTableDimensions(int* tableWidth, int* numTables) const { |
144 | 4 | *tableWidth = 256; |
145 | 4 | *numTables = (1 << MAX_LUM_BITS); |
146 | 4 | } |
147 | | |
148 | | /** |
149 | | * Provides direct access to the full table set, so it can be uploaded |
150 | | * into a texture or analyzed in other ways. |
151 | | * Returns nullptr if fGammaTables hasn't been initialized. |
152 | | */ |
153 | 2 | const uint8_t* getGammaTables() const { |
154 | 2 | return fIsLinear ? nullptr : (const uint8_t*) fGammaTables; |
155 | 2 | } |
156 | | |
157 | | private: |
158 | | static const int MAX_LUM_BITS = |
159 | | B_LUM_BITS > (R_LUM_BITS > G_LUM_BITS ? R_LUM_BITS : G_LUM_BITS) |
160 | | ? B_LUM_BITS : (R_LUM_BITS > G_LUM_BITS ? R_LUM_BITS : G_LUM_BITS); |
161 | | uint8_t fGammaTables[1 << MAX_LUM_BITS][256]; |
162 | | bool fIsLinear; |
163 | | |
164 | | using INHERITED = SkRefCnt; |
165 | | }; |
166 | | |
167 | | |
168 | | /** |
169 | | * SkTMaskPreBlend is a tear-off of SkTMaskGamma. It provides the tables to |
170 | | * convert a linear alpha value for a given channel to a gamma correcting alpha |
171 | | * value for that channel. This class is immutable. |
172 | | * |
173 | | * If fR, fG, or fB is nullptr, all of them will be. This indicates that no mask |
174 | | * pre blend should be applied. SkTMaskPreBlend::isApplicable() is provided as |
175 | | * a convenience function to test for the absence of this case. |
176 | | */ |
177 | | template <int R_LUM_BITS, int G_LUM_BITS, int B_LUM_BITS> class SkTMaskPreBlend { |
178 | | private: |
179 | | SkTMaskPreBlend(sk_sp<const SkTMaskGamma<R_LUM_BITS, G_LUM_BITS, B_LUM_BITS>> parent, |
180 | | const uint8_t* r, const uint8_t* g, const uint8_t* b) |
181 | 15.3k | : fParent(std::move(parent)), fR(r), fG(g), fB(b) { } |
182 | | |
183 | | sk_sp<const SkTMaskGamma<R_LUM_BITS, G_LUM_BITS, B_LUM_BITS>> fParent; |
184 | | friend class SkTMaskGamma<R_LUM_BITS, G_LUM_BITS, B_LUM_BITS>; |
185 | | public: |
186 | | /** Creates a non applicable SkTMaskPreBlend. */ |
187 | 2.18k | SkTMaskPreBlend() : fParent(), fR(nullptr), fG(nullptr), fB(nullptr) { } |
188 | | |
189 | | /** |
190 | | * This copy contructor exists for correctness, but should never be called |
191 | | * when return value optimization is enabled. |
192 | | */ |
193 | | SkTMaskPreBlend(const SkTMaskPreBlend<R_LUM_BITS, G_LUM_BITS, B_LUM_BITS>& that) |
194 | | : fParent(that.fParent), fR(that.fR), fG(that.fG), fB(that.fB) { } |
195 | | |
196 | 12.0k | ~SkTMaskPreBlend() { } |
197 | | |
198 | | /** True if this PreBlend should be applied. When false, fR, fG, and fB are nullptr. */ |
199 | 221M | bool isApplicable() const { return SkToBool(this->fG); } |
200 | | |
201 | | const uint8_t* fR; |
202 | | const uint8_t* fG; |
203 | | const uint8_t* fB; |
204 | | }; |
205 | | |
206 | | template <int R_LUM_BITS, int G_LUM_BITS, int B_LUM_BITS> |
207 | | SkTMaskPreBlend<R_LUM_BITS, G_LUM_BITS, B_LUM_BITS> |
208 | 15.3k | SkTMaskGamma<R_LUM_BITS, G_LUM_BITS, B_LUM_BITS>::preBlend(SkColor color) const { |
209 | 38 | return fIsLinear ? SkTMaskPreBlend<R_LUM_BITS, G_LUM_BITS, B_LUM_BITS>() |
210 | 15.3k | : SkTMaskPreBlend<R_LUM_BITS, G_LUM_BITS, B_LUM_BITS>(sk_ref_sp(this), |
211 | 15.3k | fGammaTables[SkColorGetR(color) >> (8 - MAX_LUM_BITS)], |
212 | 15.3k | fGammaTables[SkColorGetG(color) >> (8 - MAX_LUM_BITS)], |
213 | 15.3k | fGammaTables[SkColorGetB(color) >> (8 - MAX_LUM_BITS)]); |
214 | 15.3k | } |
215 | | |
216 | | ///@{ |
217 | | /** |
218 | | * If APPLY_LUT is false, returns component unchanged. |
219 | | * If APPLY_LUT is true, returns lut[component]. |
220 | | * @param APPLY_LUT whether or not the look-up table should be applied to component. |
221 | | * @component the initial component. |
222 | | * @lut a look-up table which transforms the component. |
223 | | */ |
224 | 0 | template<bool APPLY_LUT> static inline U8CPU sk_apply_lut_if(U8CPU component, const uint8_t*) { |
225 | 0 | return component; |
226 | 0 | } |
227 | 0 | template<> /*static*/ inline U8CPU sk_apply_lut_if<true>(U8CPU component, const uint8_t* lut) { |
228 | 0 | return lut[component]; |
229 | 0 | } Unexecuted instantiation: GrTest.cpp:unsigned int sk_apply_lut_if<true>(unsigned int, unsigned char const*) Unexecuted instantiation: SkCanvas.cpp:unsigned int sk_apply_lut_if<true>(unsigned int, unsigned char const*) Unexecuted instantiation: SkDevice.cpp:unsigned int sk_apply_lut_if<true>(unsigned int, unsigned char const*) Unexecuted instantiation: SkGlyphRun.cpp:unsigned int sk_apply_lut_if<true>(unsigned int, unsigned char const*) Unexecuted instantiation: SkPaint.cpp:unsigned int sk_apply_lut_if<true>(unsigned int, unsigned char const*) Unexecuted instantiation: SkPixmap.cpp:unsigned int sk_apply_lut_if<true>(unsigned int, unsigned char const*) Unexecuted instantiation: SkStrikeSpec.cpp:unsigned int sk_apply_lut_if<true>(unsigned int, unsigned char const*) Unexecuted instantiation: SkTextBlob.cpp:unsigned int sk_apply_lut_if<true>(unsigned int, unsigned char const*) Unexecuted instantiation: SkTypeface.cpp:unsigned int sk_apply_lut_if<true>(unsigned int, unsigned char const*) Unexecuted instantiation: SkCustomTypeface.cpp:unsigned int sk_apply_lut_if<true>(unsigned int, unsigned char const*) Unexecuted instantiation: GrContext_Base.cpp:unsigned int sk_apply_lut_if<true>(unsigned int, unsigned char const*) Unexecuted instantiation: GrDirectContext.cpp:unsigned int sk_apply_lut_if<true>(unsigned int, unsigned char const*) Unexecuted instantiation: GrImageContext.cpp:unsigned int sk_apply_lut_if<true>(unsigned int, unsigned char const*) Unexecuted instantiation: GrProxyProvider.cpp:unsigned int sk_apply_lut_if<true>(unsigned int, unsigned char const*) Unexecuted instantiation: GrRecordingContext.cpp:unsigned int sk_apply_lut_if<true>(unsigned int, unsigned char const*) Unexecuted instantiation: GrRecordingContextPriv.cpp:unsigned int sk_apply_lut_if<true>(unsigned int, unsigned char const*) Unexecuted instantiation: GrAtlasManager.cpp:unsigned int sk_apply_lut_if<true>(unsigned int, unsigned char const*) Unexecuted instantiation: GrSDFTControl.cpp:unsigned int sk_apply_lut_if<true>(unsigned int, unsigned char const*) Unexecuted instantiation: GrStrikeCache.cpp:unsigned int sk_apply_lut_if<true>(unsigned int, unsigned char const*) Unexecuted instantiation: GrTextBlobCache.cpp:unsigned int sk_apply_lut_if<true>(unsigned int, unsigned char const*) Unexecuted instantiation: SkImage_Gpu.cpp:unsigned int sk_apply_lut_if<true>(unsigned int, unsigned char const*) Unexecuted instantiation: SkSurface_Gpu.cpp:unsigned int sk_apply_lut_if<true>(unsigned int, unsigned char const*) Unexecuted instantiation: AAConvexPathRenderer.cpp:unsigned int sk_apply_lut_if<true>(unsigned int, unsigned char const*) Unexecuted instantiation: AAHairLinePathRenderer.cpp:unsigned int sk_apply_lut_if<true>(unsigned int, unsigned char const*) Unexecuted instantiation: AALinearizingConvexPathRenderer.cpp:unsigned int sk_apply_lut_if<true>(unsigned int, unsigned char const*) Unexecuted instantiation: DefaultPathRenderer.cpp:unsigned int sk_apply_lut_if<true>(unsigned int, unsigned char const*) Unexecuted instantiation: GrAtlasTextOp.cpp:unsigned int sk_apply_lut_if<true>(unsigned int, unsigned char const*) Unexecuted instantiation: GrFillRectOp.cpp:unsigned int sk_apply_lut_if<true>(unsigned int, unsigned char const*) Unexecuted instantiation: GrTextureOp.cpp:unsigned int sk_apply_lut_if<true>(unsigned int, unsigned char const*) Unexecuted instantiation: SmallPathRenderer.cpp:unsigned int sk_apply_lut_if<true>(unsigned int, unsigned char const*) Unexecuted instantiation: SoftwarePathRenderer.cpp:unsigned int sk_apply_lut_if<true>(unsigned int, unsigned char const*) Unexecuted instantiation: TriangulatingPathRenderer.cpp:unsigned int sk_apply_lut_if<true>(unsigned int, unsigned char const*) Unexecuted instantiation: Device.cpp:unsigned int sk_apply_lut_if<true>(unsigned int, unsigned char const*) Unexecuted instantiation: Device_drawTexture.cpp:unsigned int sk_apply_lut_if<true>(unsigned int, unsigned char const*) Unexecuted instantiation: PathRenderer.cpp:unsigned int sk_apply_lut_if<true>(unsigned int, unsigned char const*) Unexecuted instantiation: SurfaceDrawContext.cpp:unsigned int sk_apply_lut_if<true>(unsigned int, unsigned char const*) Unexecuted instantiation: SurfaceFillContext_v1.cpp:unsigned int sk_apply_lut_if<true>(unsigned int, unsigned char const*) Unexecuted instantiation: SkBitmapDevice.cpp:unsigned int sk_apply_lut_if<true>(unsigned int, unsigned char const*) Unexecuted instantiation: SkBlurMF.cpp:unsigned int sk_apply_lut_if<true>(unsigned int, unsigned char const*) Unexecuted instantiation: SkDescriptor.cpp:unsigned int sk_apply_lut_if<true>(unsigned int, unsigned char const*) Unexecuted instantiation: SkDraw.cpp:unsigned int sk_apply_lut_if<true>(unsigned int, unsigned char const*) Unexecuted instantiation: SkDraw_atlas.cpp:unsigned int sk_apply_lut_if<true>(unsigned int, unsigned char const*) Unexecuted instantiation: SkDraw_text.cpp:unsigned int sk_apply_lut_if<true>(unsigned int, unsigned char const*) Unexecuted instantiation: SkDraw_vertices.cpp:unsigned int sk_apply_lut_if<true>(unsigned int, unsigned char const*) Unexecuted instantiation: SkFont.cpp:unsigned int sk_apply_lut_if<true>(unsigned int, unsigned char const*) Unexecuted instantiation: SkGlyph.cpp:unsigned int sk_apply_lut_if<true>(unsigned int, unsigned char const*) Unexecuted instantiation: SkGlyphRunPainter.cpp:unsigned int sk_apply_lut_if<true>(unsigned int, unsigned char const*) Unexecuted instantiation: SkGpuBlurUtils.cpp:unsigned int sk_apply_lut_if<true>(unsigned int, unsigned char const*) Unexecuted instantiation: SkMaskFilter.cpp:unsigned int sk_apply_lut_if<true>(unsigned int, unsigned char const*) Unexecuted instantiation: SkMaskGamma.cpp:unsigned int sk_apply_lut_if<true>(unsigned int, unsigned char const*) Unexecuted instantiation: SkScalerCache.cpp:unsigned int sk_apply_lut_if<true>(unsigned int, unsigned char const*) Unexecuted instantiation: SkScalerContext.cpp:unsigned int sk_apply_lut_if<true>(unsigned int, unsigned char const*) Unexecuted instantiation: SkStrikeCache.cpp:unsigned int sk_apply_lut_if<true>(unsigned int, unsigned char const*) Unexecuted instantiation: SkStrikeForGPU.cpp:unsigned int sk_apply_lut_if<true>(unsigned int, unsigned char const*) Unexecuted instantiation: SkAlphaThresholdImageFilter.cpp:unsigned int sk_apply_lut_if<true>(unsigned int, unsigned char const*) Unexecuted instantiation: SkBlurImageFilter.cpp:unsigned int sk_apply_lut_if<true>(unsigned int, unsigned char const*) Unexecuted instantiation: GrContextThreadSafeProxy.cpp:unsigned int sk_apply_lut_if<true>(unsigned int, unsigned char const*) Unexecuted instantiation: GrDirectContextPriv.cpp:unsigned int sk_apply_lut_if<true>(unsigned int, unsigned char const*) Unexecuted instantiation: GrSWMaskHelper.cpp:unsigned int sk_apply_lut_if<true>(unsigned int, unsigned char const*) Unexecuted instantiation: GrUtil.cpp:unsigned int sk_apply_lut_if<true>(unsigned int, unsigned char const*) Unexecuted instantiation: GrDistanceFieldAdjustTable.cpp:unsigned int sk_apply_lut_if<true>(unsigned int, unsigned char const*) Unexecuted instantiation: GrTextBlob.cpp:unsigned int sk_apply_lut_if<true>(unsigned int, unsigned char const*) Unexecuted instantiation: GrBlurUtils.cpp:unsigned int sk_apply_lut_if<true>(unsigned int, unsigned char const*) Unexecuted instantiation: AtlasPathRenderer.cpp:unsigned int sk_apply_lut_if<true>(unsigned int, unsigned char const*) Unexecuted instantiation: DashLinePathRenderer.cpp:unsigned int sk_apply_lut_if<true>(unsigned int, unsigned char const*) Unexecuted instantiation: TessellationPathRenderer.cpp:unsigned int sk_apply_lut_if<true>(unsigned int, unsigned char const*) Unexecuted instantiation: ClipStack.cpp:unsigned int sk_apply_lut_if<true>(unsigned int, unsigned char const*) Unexecuted instantiation: StencilMaskHelper.cpp:unsigned int sk_apply_lut_if<true>(unsigned int, unsigned char const*) Unexecuted instantiation: SkWuffsCodec.cpp:unsigned int sk_apply_lut_if<true>(unsigned int, unsigned char const*) Unexecuted instantiation: SkGlyphBuffer.cpp:unsigned int sk_apply_lut_if<true>(unsigned int, unsigned char const*) Unexecuted instantiation: SkGraphics.cpp:unsigned int sk_apply_lut_if<true>(unsigned int, unsigned char const*) Unexecuted instantiation: SkFontMgr_custom_empty.cpp:unsigned int sk_apply_lut_if<true>(unsigned int, unsigned char const*) Unexecuted instantiation: SkFontMgr_custom.cpp:unsigned int sk_apply_lut_if<true>(unsigned int, unsigned char const*) Unexecuted instantiation: SkFontHost_FreeType.cpp:unsigned int sk_apply_lut_if<true>(unsigned int, unsigned char const*) Unexecuted instantiation: SkFontHost_FreeType_common.cpp:unsigned int sk_apply_lut_if<true>(unsigned int, unsigned char const*) Unexecuted instantiation: TestSVGTypeface.cpp:unsigned int sk_apply_lut_if<true>(unsigned int, unsigned char const*) Unexecuted instantiation: TestTypeface.cpp:unsigned int sk_apply_lut_if<true>(unsigned int, unsigned char const*) Unexecuted instantiation: GrDDLContext.cpp:unsigned int sk_apply_lut_if<true>(unsigned int, unsigned char const*) Unexecuted instantiation: FuzzSkDescriptorDeserialize.cpp:unsigned int sk_apply_lut_if<true>(unsigned int, unsigned char const*) Unexecuted instantiation: SkRemoteGlyphCache.cpp:unsigned int sk_apply_lut_if<true>(unsigned int, unsigned char const*) Unexecuted instantiation: SkTypeface_remote.cpp:unsigned int sk_apply_lut_if<true>(unsigned int, unsigned char const*) Unexecuted instantiation: SkSurfaceCharacterization.cpp:unsigned int sk_apply_lut_if<true>(unsigned int, unsigned char const*) Unexecuted instantiation: SkPDFDocument.cpp:unsigned int sk_apply_lut_if<true>(unsigned int, unsigned char const*) Unexecuted instantiation: SkPDFFont.cpp:unsigned int sk_apply_lut_if<true>(unsigned int, unsigned char const*) Unexecuted instantiation: SkPDFMakeCIDGlyphWidthsArray.cpp:unsigned int sk_apply_lut_if<true>(unsigned int, unsigned char const*) Unexecuted instantiation: SkPDFMakeToUnicodeCmap.cpp:unsigned int sk_apply_lut_if<true>(unsigned int, unsigned char const*) Unexecuted instantiation: SkPDFType1Font.cpp:unsigned int sk_apply_lut_if<true>(unsigned int, unsigned char const*) Unexecuted instantiation: SkPDFUtils.cpp:unsigned int sk_apply_lut_if<true>(unsigned int, unsigned char const*) Unexecuted instantiation: SkSVGDevice.cpp:unsigned int sk_apply_lut_if<true>(unsigned int, unsigned char const*) Unexecuted instantiation: SkClipStackDevice.cpp:unsigned int sk_apply_lut_if<true>(unsigned int, unsigned char const*) Unexecuted instantiation: SkPDFDevice.cpp:unsigned int sk_apply_lut_if<true>(unsigned int, unsigned char const*) Unexecuted instantiation: SkPDFResourceDict.cpp:unsigned int sk_apply_lut_if<true>(unsigned int, unsigned char const*) Unexecuted instantiation: SkPDFShader.cpp:unsigned int sk_apply_lut_if<true>(unsigned int, unsigned char const*) Unexecuted instantiation: SkPDFGradientShader.cpp:unsigned int sk_apply_lut_if<true>(unsigned int, unsigned char const*) |
230 | | ///@} |
231 | | |
232 | | #endif |