diff options
-rw-r--r-- | bench/SkLinearBitmapPipelineBench.cpp | 1 | ||||
-rw-r--r-- | bench/Xfer4fBench.cpp | 2 | ||||
-rw-r--r-- | bench/XferU64Bench.cpp | 1 | ||||
-rw-r--r-- | gm/xfer4f.cpp | 1 | ||||
-rw-r--r-- | gm/xfermodes.cpp | 3 | ||||
-rw-r--r-- | gm/xferu64.cpp | 1 | ||||
-rw-r--r-- | include/core/SkColor.h | 34 | ||||
-rw-r--r-- | include/core/SkXfermode.h | 3 | ||||
-rw-r--r-- | src/core/SkBlitter_PM4f.cpp | 1 | ||||
-rw-r--r-- | src/core/SkColor.cpp | 1 | ||||
-rw-r--r-- | src/core/SkColorFilter.cpp | 1 | ||||
-rw-r--r-- | src/core/SkColorMatrixFilterRowMajor255.cpp | 1 | ||||
-rw-r--r-- | src/core/SkColorShader.h | 1 | ||||
-rw-r--r-- | src/core/SkColorSpace.cpp | 1 | ||||
-rw-r--r-- | src/core/SkLinearBitmapPipeline.cpp | 1 | ||||
-rw-r--r-- | src/core/SkModeColorFilter.cpp | 1 | ||||
-rw-r--r-- | src/core/SkPM4f.h | 46 | ||||
-rw-r--r-- | src/core/SkPM4fPriv.h | 1 | ||||
-rw-r--r-- | src/core/SkPixmap.cpp | 1 | ||||
-rw-r--r-- | src/core/SkXfermode.cpp | 1 | ||||
-rw-r--r-- | tests/Float16Test.cpp | 1 | ||||
-rw-r--r-- | tests/SkColor4fTest.cpp | 1 | ||||
-rw-r--r-- | tests/SkLinearBitmapPipelineTest.cpp | 4 |
23 files changed, 72 insertions, 37 deletions
diff --git a/bench/SkLinearBitmapPipelineBench.cpp b/bench/SkLinearBitmapPipelineBench.cpp index cc5d0850e8..89d4c79ba4 100644 --- a/bench/SkLinearBitmapPipelineBench.cpp +++ b/bench/SkLinearBitmapPipelineBench.cpp @@ -8,6 +8,7 @@ #include <memory> #include "SkColor.h" #include "SkLinearBitmapPipeline.h" +#include "SkPM4f.h" #include "Benchmark.h" #include "SkShader.h" #include "SkImage.h" diff --git a/bench/Xfer4fBench.cpp b/bench/Xfer4fBench.cpp index 6b6bbc8d23..f2bcedc3ed 100644 --- a/bench/Xfer4fBench.cpp +++ b/bench/Xfer4fBench.cpp @@ -1,4 +1,3 @@ - /* * Copyright 2016 Google Inc. * @@ -7,6 +6,7 @@ */ #include "Benchmark.h" +#include "SkPM4f.h" #include "SkString.h" #include "SkXfermode.h" diff --git a/bench/XferU64Bench.cpp b/bench/XferU64Bench.cpp index 0cc2ba131a..75aada60d7 100644 --- a/bench/XferU64Bench.cpp +++ b/bench/XferU64Bench.cpp @@ -6,6 +6,7 @@ */ #include "Benchmark.h" +#include "SkPM4f.h" #include "SkString.h" #include "SkXfermode.h" diff --git a/gm/xfer4f.cpp b/gm/xfer4f.cpp index 14927f2d1d..dc7196d399 100644 --- a/gm/xfer4f.cpp +++ b/gm/xfer4f.cpp @@ -9,6 +9,7 @@ #include "SkCanvas.h" #include "SkImageInfo.h" #include "SkXfermode.h" +#include "SkPM4f.h" static void draw_rect(SkCanvas* canvas, const SkRect& r, SkColor c, SkColorProfileType profile, const SkAlpha aa[]) { diff --git a/gm/xfermodes.cpp b/gm/xfermodes.cpp index fa4461712d..9e87c04455 100644 --- a/gm/xfermodes.cpp +++ b/gm/xfermodes.cpp @@ -1,14 +1,15 @@ - /* * Copyright 2011 Google Inc. * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ + #include "gm.h" #include "SkBitmap.h" #include "SkShader.h" #include "SkXfermode.h" +#include "SkPM4f.h" enum SrcType { //! A WxH image with a rectangle in the lower right. diff --git a/gm/xferu64.cpp b/gm/xferu64.cpp index 03fc8864b5..fef1a44b93 100644 --- a/gm/xferu64.cpp +++ b/gm/xferu64.cpp @@ -11,6 +11,7 @@ #include "SkXfermode.h" #include "SkHalf.h" #include "SkImage.h" +#include "SkPM4f.h" static SkPMColor f16_to_pmcolor(uint64_t src) { SkPMColor dst; diff --git a/include/core/SkColor.h b/include/core/SkColor.h index 101a9bdbed..a40e5f1f15 100644 --- a/include/core/SkColor.h +++ b/include/core/SkColor.h @@ -160,39 +160,7 @@ typedef SkPMColor (*SkXfermodeProc)(SkPMColor src, SkPMColor dst); /////////////////////////////////////////////////////////////////////////////////////////////////// -struct SkColor4f; - -/* - * The float values are 0...1 premultiplied - */ -struct SkPM4f { - enum { - A = SK_A32_SHIFT/8, - R = SK_R32_SHIFT/8, - G = SK_G32_SHIFT/8, - B = SK_B32_SHIFT/8, - }; - float fVec[4]; - - float a() const { return fVec[A]; } - - SkColor4f unpremul() const; - - static SkPM4f FromPMColor(SkPMColor); - - // half-float routines - void toF16(uint16_t[4]) const; - uint64_t toF16() const; // 4 float16 values packed into uint64_t - static SkPM4f FromF16(const uint16_t[4]); - -#ifdef SK_DEBUG - void assertIsUnit() const; -#else - void assertIsUnit() const {} -#endif -}; - -typedef SkPM4f (*SkXfermodeProc4f)(const SkPM4f& src, const SkPM4f& dst); +struct SkPM4f; /* * The float values are 0...1 unpremultiplied diff --git a/include/core/SkXfermode.h b/include/core/SkXfermode.h index 3b0f49d22e..94f49fac26 100644 --- a/include/core/SkXfermode.h +++ b/include/core/SkXfermode.h @@ -18,6 +18,9 @@ class GrTexture; class GrXPFactory; class SkString; +struct SkPM4f; +typedef SkPM4f (*SkXfermodeProc4f)(const SkPM4f& src, const SkPM4f& dst); + /** \class SkXfermode * * SkXfermode is the base class for objects that are called to implement custom diff --git a/src/core/SkBlitter_PM4f.cpp b/src/core/SkBlitter_PM4f.cpp index cec2361c06..3c13baa4c9 100644 --- a/src/core/SkBlitter_PM4f.cpp +++ b/src/core/SkBlitter_PM4f.cpp @@ -12,6 +12,7 @@ #include "SkXfermode.h" #include "SkBlitMask.h" #include "SkTemplates.h" +#include "SkPM4f.h" template <typename State> class SkState_Blitter : public SkRasterBlitter { typedef SkRasterBlitter INHERITED; diff --git a/src/core/SkColor.cpp b/src/core/SkColor.cpp index c0a3895bbe..d88950b5b0 100644 --- a/src/core/SkColor.cpp +++ b/src/core/SkColor.cpp @@ -102,6 +102,7 @@ SkColor SkHSVToColor(U8CPU a, const SkScalar hsv[3]) { } /////////////////////////////////////////////////////////////////////////////////////////////////// +#include "SkPM4f.h" #include "SkNx.h" #include "SkHalf.h" diff --git a/src/core/SkColorFilter.cpp b/src/core/SkColorFilter.cpp index 72f5470b10..7d11163474 100644 --- a/src/core/SkColorFilter.cpp +++ b/src/core/SkColorFilter.cpp @@ -12,6 +12,7 @@ #include "SkTDArray.h" #include "SkUnPreMultiply.h" #include "SkWriteBuffer.h" +#include "SkPM4f.h" #if SK_SUPPORT_GPU #include "GrFragmentProcessor.h" diff --git a/src/core/SkColorMatrixFilterRowMajor255.cpp b/src/core/SkColorMatrixFilterRowMajor255.cpp index 3b79d7f42c..de87913ace 100644 --- a/src/core/SkColorMatrixFilterRowMajor255.cpp +++ b/src/core/SkColorMatrixFilterRowMajor255.cpp @@ -12,6 +12,7 @@ #include "SkWriteBuffer.h" #include "SkUnPreMultiply.h" #include "SkString.h" +#include "SkPM4f.h" #define SK_PMORDER_INDEX_A (SK_A32_SHIFT / 8) #define SK_PMORDER_INDEX_R (SK_R32_SHIFT / 8) diff --git a/src/core/SkColorShader.h b/src/core/SkColorShader.h index 1c07a3c124..eb55a07f13 100644 --- a/src/core/SkColorShader.h +++ b/src/core/SkColorShader.h @@ -9,6 +9,7 @@ #define SkColorShader_DEFINED #include "SkShader.h" +#include "SkPM4f.h" /** \class SkColorShader A Shader that represents a single color. In general, this effect can be diff --git a/src/core/SkColorSpace.cpp b/src/core/SkColorSpace.cpp index bbb03c640a..6651abb3fc 100644 --- a/src/core/SkColorSpace.cpp +++ b/src/core/SkColorSpace.cpp @@ -174,6 +174,7 @@ SkColorSpace::Result SkColorSpace::Concat(const SkColorSpace* src, const SkColor #include "SkColor.h" #include "SkNx.h" +#include "SkPM4f.h" void SkApply3x3ToPM4f(const SkFloat3x3& m, const SkPM4f src[], SkPM4f dst[], int count) { SkASSERT(1 == SkPM4f::G); diff --git a/src/core/SkLinearBitmapPipeline.cpp b/src/core/SkLinearBitmapPipeline.cpp index d25335b0e7..edb0e88135 100644 --- a/src/core/SkLinearBitmapPipeline.cpp +++ b/src/core/SkLinearBitmapPipeline.cpp @@ -6,6 +6,7 @@ */ #include "SkLinearBitmapPipeline.h" +#include "SkPM4f.h" struct X { explicit X(SkScalar val) : fVal{val} { } diff --git a/src/core/SkModeColorFilter.cpp b/src/core/SkModeColorFilter.cpp index 14e3fb7068..574c1ce9f0 100644 --- a/src/core/SkModeColorFilter.cpp +++ b/src/core/SkModeColorFilter.cpp @@ -14,6 +14,7 @@ #include "SkUtils.h" #include "SkString.h" #include "SkValidationUtils.h" +#include "SkPM4f.h" ////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/src/core/SkPM4f.h b/src/core/SkPM4f.h new file mode 100644 index 0000000000..fb22783dcc --- /dev/null +++ b/src/core/SkPM4f.h @@ -0,0 +1,46 @@ +/* + * Copyright 2016 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkPM4f_DEFINED +#define SkPM4f_DEFINED + +#include "SkColorPriv.h" + +/* + * The float values are 0...1 premultiplied + */ +struct SkPM4f { + enum { + A = SK_A32_SHIFT/8, + R = SK_R32_SHIFT/8, + G = SK_G32_SHIFT/8, + B = SK_B32_SHIFT/8, + }; + float fVec[4]; + + float a() const { return fVec[A]; } + + SkColor4f unpremul() const; + + static SkPM4f FromPMColor(SkPMColor); + + // half-float routines + void toF16(uint16_t[4]) const; + uint64_t toF16() const; // 4 float16 values packed into uint64_t + static SkPM4f FromF16(const uint16_t[4]); + +#ifdef SK_DEBUG + void assertIsUnit() const; +#else + void assertIsUnit() const {} +#endif +}; + +typedef SkPM4f (*SkXfermodeProc4f)(const SkPM4f& src, const SkPM4f& dst); + + +#endif diff --git a/src/core/SkPM4fPriv.h b/src/core/SkPM4fPriv.h index 81aff7013c..24d073639e 100644 --- a/src/core/SkPM4fPriv.h +++ b/src/core/SkPM4fPriv.h @@ -5,6 +5,7 @@ * found in the LICENSE file. */ +#include "SkPM4f.h" #include "SkColorPriv.h" #include "SkNx.h" diff --git a/src/core/SkPixmap.cpp b/src/core/SkPixmap.cpp index f28566871a..57bb194258 100644 --- a/src/core/SkPixmap.cpp +++ b/src/core/SkPixmap.cpp @@ -11,6 +11,7 @@ #include "SkMask.h" #include "SkPixmap.h" #include "SkUtils.h" +#include "SkPM4f.h" void SkAutoPixmapUnlock::reset(const SkPixmap& pm, void (*unlock)(void*), void* ctx) { SkASSERT(pm.addr() != nullptr); diff --git a/src/core/SkXfermode.cpp b/src/core/SkXfermode.cpp index 8b28f1b515..07c4e168b9 100644 --- a/src/core/SkXfermode.cpp +++ b/src/core/SkXfermode.cpp @@ -14,6 +14,7 @@ #include "SkReadBuffer.h" #include "SkString.h" #include "SkWriteBuffer.h" +#include "SkPM4f.h" #define SkAlphaMulAlpha(a, b) SkMulDiv255Round(a, b) diff --git a/tests/Float16Test.cpp b/tests/Float16Test.cpp index 3b13533853..ef349c6cb6 100644 --- a/tests/Float16Test.cpp +++ b/tests/Float16Test.cpp @@ -10,6 +10,7 @@ #include "SkHalf.h" #include "SkOpts.h" #include "SkPixmap.h" +#include "SkPM4f.h" #include "SkRandom.h" static bool eq_within_half_float(float a, float b) { diff --git a/tests/SkColor4fTest.cpp b/tests/SkColor4fTest.cpp index b9dcd0d35e..46c10f18f8 100644 --- a/tests/SkColor4fTest.cpp +++ b/tests/SkColor4fTest.cpp @@ -9,6 +9,7 @@ #include "SkColorMatrixFilter.h" #include "SkGradientShader.h" #include "SkImage.h" +#include "SkPM4f.h" #include "SkShader.h" #include "Test.h" diff --git a/tests/SkLinearBitmapPipelineTest.cpp b/tests/SkLinearBitmapPipelineTest.cpp index db1fc2ab70..851b2014d8 100644 --- a/tests/SkLinearBitmapPipelineTest.cpp +++ b/tests/SkLinearBitmapPipelineTest.cpp @@ -4,10 +4,10 @@ * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ -#include "SkLinearBitmapPipeline.h" +#include "SkLinearBitmapPipeline.h" #include "SkColor.h" - +#include "SkPM4f.h" #include "Test.h" struct SinkBilerpProcessor final : public PointProcessorInterface { |