diff options
Diffstat (limited to 'src')
27 files changed, 28 insertions, 86 deletions
diff --git a/src/codec/SkJpegCodec.cpp b/src/codec/SkJpegCodec.cpp index 745194124c..80a32ad75a 100644 --- a/src/codec/SkJpegCodec.cpp +++ b/src/codec/SkJpegCodec.cpp @@ -10,7 +10,6 @@ #include "SkJpegDecoderMgr.h" #include "SkCodecPriv.h" #include "SkColorData.h" -#include "SkColorSpace_Base.h" #include "SkStream.h" #include "SkTemplates.h" #include "SkTypes.h" diff --git a/src/core/SkColorSpace.cpp b/src/core/SkColorSpace.cpp index 6dc9be6a8f..1092653a57 100644 --- a/src/core/SkColorSpace.cpp +++ b/src/core/SkColorSpace.cpp @@ -6,7 +6,6 @@ */ #include "SkColorSpace.h" -#include "SkColorSpace_Base.h" #include "SkColorSpace_XYZ.h" #include "SkColorSpacePriv.h" #include "SkPoint3.h" @@ -336,8 +335,8 @@ size_t SkColorSpace::writeToMemory(void* memory) const { // Start by trying the serialization fast path. If we haven't saved ICC profile data, // we must have a profile that we can serialize easily. if (!this->onProfileData()) { - // Profile data is mandatory for A2B0 color spaces. - SkASSERT(SkColorSpace_Base::Type::kA2B != as_CSB(this)->type()); + // Profile data is mandatory for A2B0 color spaces, so we must be XYZ. + SkASSERT(this->toXYZD50()); // If we have a named profile, only write the enum. const SkGammaNamed gammaNamed = this->gammaNamed(); if (this == srgb()) { diff --git a/src/core/SkColorSpacePriv.h b/src/core/SkColorSpacePriv.h index b0a8c1dcbc..813464b645 100644 --- a/src/core/SkColorSpacePriv.h +++ b/src/core/SkColorSpacePriv.h @@ -9,7 +9,7 @@ #include <math.h> -#include "SkColorSpace_Base.h" +#include "SkColorSpace.h" #include "SkFixed.h" #define SkColorSpacePrintf(...) diff --git a/src/core/SkColorSpaceXform.cpp b/src/core/SkColorSpaceXform.cpp index 9494e249c1..f0e561d7ae 100644 --- a/src/core/SkColorSpaceXform.cpp +++ b/src/core/SkColorSpaceXform.cpp @@ -11,7 +11,6 @@ #include "SkColorSpaceXform_A2B.h" #include "SkColorSpaceXform_Base.h" #include "SkColorSpace_A2B.h" -#include "SkColorSpace_Base.h" #include "SkColorSpace_XYZ.h" #include "SkHalf.h" #include "SkMakeUnique.h" @@ -312,18 +311,18 @@ std::unique_ptr<SkColorSpaceXform> SkColorSpaceXform_Base::New( return nullptr; } - if (SkColorSpace_Base::Type::kA2B == as_CSB(dst)->type()) { - SkCSXformPrintf("A2B destinations not supported\n"); + if (!dst->toXYZD50()) { + SkCSXformPrintf("only XYZ destinations supported\n"); return nullptr; } - if (SkColorSpace_Base::Type::kA2B == as_CSB(src)->type()) { - return skstd::make_unique<SkColorSpaceXform_A2B>(static_cast<SkColorSpace_A2B*>(src), - static_cast<SkColorSpace_XYZ*>(dst)); + if (src->toXYZD50()) { + return skstd::make_unique<SkColorSpaceXform_XYZ>(static_cast<SkColorSpace_XYZ*>(src), + static_cast<SkColorSpace_XYZ*>(dst), + premulBehavior); } - return skstd::make_unique<SkColorSpaceXform_XYZ>(static_cast<SkColorSpace_XYZ*>(src), - static_cast<SkColorSpace_XYZ*>(dst), - premulBehavior); + return skstd::make_unique<SkColorSpaceXform_A2B>(static_cast<SkColorSpace_A2B*>(src), + static_cast<SkColorSpace_XYZ*>(dst)); } /////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/src/core/SkColorSpaceXformPriv.h b/src/core/SkColorSpaceXformPriv.h index 405b1da018..d1eae73635 100644 --- a/src/core/SkColorSpaceXformPriv.h +++ b/src/core/SkColorSpaceXformPriv.h @@ -8,7 +8,6 @@ #ifndef SkColorSpaceXformPriv_DEFINED #define SkColorSpaceXformPriv_DEFINED -#include "SkColorSpace_Base.h" #include "SkColorSpaceXform.h" #include "SkHalf.h" #include "SkSRGB.h" diff --git a/src/core/SkColorSpaceXform_A2B.h b/src/core/SkColorSpaceXform_A2B.h index 5152241b65..c04915da1b 100644 --- a/src/core/SkColorSpaceXform_A2B.h +++ b/src/core/SkColorSpaceXform_A2B.h @@ -10,7 +10,6 @@ #include "SkArenaAlloc.h" #include "SkColorSpaceXform_Base.h" -#include "SkColorSpace_Base.h" #include "SkRasterPipeline.h" class SkColorSpace_A2B; diff --git a/src/core/SkColorSpaceXform_Base.h b/src/core/SkColorSpaceXform_Base.h index e767c03a3f..f98b77fe2b 100644 --- a/src/core/SkColorSpaceXform_Base.h +++ b/src/core/SkColorSpaceXform_Base.h @@ -9,7 +9,6 @@ #define SkColorSpaceXform_Base_DEFINED #include "SkColorSpace.h" -#include "SkColorSpace_Base.h" #include "SkColorSpaceXform.h" #include "SkResourceCache.h" diff --git a/src/core/SkColorSpace_A2B.h b/src/core/SkColorSpace_A2B.h index 9bdd8ef10a..48e8a700e6 100644 --- a/src/core/SkColorSpace_A2B.h +++ b/src/core/SkColorSpace_A2B.h @@ -8,8 +8,9 @@ #ifndef SkColorSpace_A2B_DEFINED #define SkColorSpace_A2B_DEFINED -#include "SkColorSpace_Base.h" - +#include "SkColorLookUpTable.h" +#include "SkColorSpace.h" +#include "SkGammas.h" #include <vector> // An alternative SkColorSpace that represents all the color space data that @@ -25,7 +26,7 @@ // you to combine these 3 primitives (TRC, CLUT, matrix) in any order/quantity. // MPET tags are currently unsupported by the MakeICC parser, could be supported // here by the nature of the design. -class SkColorSpace_A2B : public SkColorSpace_Base { +class SkColorSpace_A2B : public SkColorSpace { public: const SkMatrix44* onToXYZD50() const override { // the matrix specified in A2B0 profiles is not necessarily @@ -68,8 +69,6 @@ public: return SkColorSpace::MakeSRGB(); } - Type type() const override { return Type::kA2B; } - class Element { public: Element(SkGammaNamed gammaNamed, int channelCount) @@ -176,9 +175,7 @@ private: std::vector<Element> fElements; PCS fPCS; - friend class SkColorSpace_Base; friend class ColorSpaceXformTest; - typedef SkColorSpace_Base INHERITED; }; #endif diff --git a/src/core/SkColorSpace_ICC.cpp b/src/core/SkColorSpace_ICC.cpp index a9a53dafad..010b53578a 100644 --- a/src/core/SkColorSpace_ICC.cpp +++ b/src/core/SkColorSpace_ICC.cpp @@ -9,7 +9,6 @@ #include "SkColorSpace.h" #include "SkColorSpacePriv.h" #include "SkColorSpace_A2B.h" -#include "SkColorSpace_Base.h" #include "SkColorSpace_XYZ.h" #include "SkEndian.h" #include "SkFixed.h" diff --git a/src/core/SkColorSpace_XYZ.h b/src/core/SkColorSpace_XYZ.h index 78b048e4f7..2ad2e38b1b 100644 --- a/src/core/SkColorSpace_XYZ.h +++ b/src/core/SkColorSpace_XYZ.h @@ -8,11 +8,12 @@ #ifndef SkColorSpace_XYZ_DEFINED #define SkColorSpace_XYZ_DEFINED -#include "SkColorSpace_Base.h" +#include "SkColorSpace.h" #include "SkData.h" +#include "SkGammas.h" #include "SkOnce.h" -class SkColorSpace_XYZ : public SkColorSpace_Base { +class SkColorSpace_XYZ : public SkColorSpace { public: const SkMatrix44* onToXYZD50() const override { return &fToXYZD50; } uint32_t onToXYZD50Hash() const override { return fToXYZD50Hash; } @@ -25,8 +26,6 @@ public: const SkData* onProfileData() const override { return fProfileData.get(); } - Type type() const override { return Type::kXYZ; } - sk_sp<SkColorSpace> makeLinearGamma() const override; sk_sp<SkColorSpace> makeSRGBGamma() const override; sk_sp<SkColorSpace> makeColorSpin() const override; @@ -58,9 +57,7 @@ private: mutable SkOnce fToDstGammaOnce; friend class SkColorSpace; - friend class SkColorSpace_Base; friend class ColorSpaceXformTest; - typedef SkColorSpace_Base INHERITED; }; #endif diff --git a/src/core/SkDraw_vertices.cpp b/src/core/SkDraw_vertices.cpp index 69bcff41b2..799e430ac2 100644 --- a/src/core/SkDraw_vertices.cpp +++ b/src/core/SkDraw_vertices.cpp @@ -20,7 +20,6 @@ #include "SkArenaAlloc.h" #include "SkCoreBlitters.h" #include "SkColorSpaceXform.h" -#include "SkColorSpace_Base.h" struct Matrix43 { float fMat[12]; // column major diff --git a/src/core/SkColorSpace_Base.h b/src/core/SkGammas.h index 7cf7565600..b8b0abb83f 100644 --- a/src/core/SkColorSpace_Base.h +++ b/src/core/SkGammas.h @@ -5,13 +5,11 @@ * found in the LICENSE file. */ -#ifndef SkColorSpace_Base_DEFINED -#define SkColorSpace_Base_DEFINED +#ifndef SkGammas_DEFINED +#define SkGammas_DEFINED -#include "SkColorLookUpTable.h" #include "SkColorSpace.h" #include "SkData.h" -#include "SkOnce.h" #include "SkTemplates.h" struct SkGammas : SkRefCnt { @@ -106,18 +104,17 @@ struct SkGammas : SkRefCnt { uint8_t channels() const { return fChannels; } - SkGammas(uint8_t channels) - : fChannels(channels) { - SkASSERT(channels <= kMaxColorChannels); - for (uint8_t i = 0; i < kMaxColorChannels; ++i) { - fType[i] = Type::kNone_Type; + SkGammas(uint8_t channels) : fChannels(channels) { + SkASSERT(channels <= SK_ARRAY_COUNT(fType)); + for (Type& t : fType) { + t = Type::kNone_Type; } } // These fields should only be modified when initializing the struct. uint8_t fChannels; - Data fData[kMaxColorChannels]; - Type fType[kMaxColorChannels]; + Data fData[4]; + Type fType[4]; // Objects of this type are sometimes created in a custom fashion using // sk_malloc_throw and therefore must be sk_freed. We overload new to @@ -129,29 +126,4 @@ struct SkGammas : SkRefCnt { void operator delete(void* p) { sk_free(p); } }; -class SkColorSpace_Base : public SkColorSpace { -public: - enum class Type : uint8_t { - kXYZ, - kA2B - }; - - virtual Type type() const = 0; - -private: - typedef SkColorSpace INHERITED; -}; - -static inline SkColorSpace_Base* as_CSB(SkColorSpace* colorSpace) { - return static_cast<SkColorSpace_Base*>(colorSpace); -} - -static inline const SkColorSpace_Base* as_CSB(const SkColorSpace* colorSpace) { - return static_cast<const SkColorSpace_Base*>(colorSpace); -} - -static inline SkColorSpace_Base* as_CSB(const sk_sp<SkColorSpace>& colorSpace) { - return static_cast<SkColorSpace_Base*>(colorSpace.get()); -} - #endif diff --git a/src/core/SkICC.cpp b/src/core/SkICC.cpp index cfc66e1238..03d5868b6a 100644 --- a/src/core/SkICC.cpp +++ b/src/core/SkICC.cpp @@ -8,7 +8,6 @@ #include "SkAutoMalloc.h" #include "SkColorSpacePriv.h" #include "SkColorSpaceXformPriv.h" -#include "SkColorSpace_Base.h" #include "SkColorSpace_XYZ.h" #include "SkEndian.h" #include "SkFixed.h" @@ -62,8 +61,8 @@ void copy_to_table(float* tablePtr, const SkGammas* gammas, int index) { } bool SkICC::rawTransferFnData(Tables* tables) const { - if (SkColorSpace_Base::Type::kA2B == as_CSB(fColorSpace)->type()) { - return false; + if (!fColorSpace->toXYZD50()) { + return false; // Can't even dream of handling A2B here... } SkColorSpace_XYZ* colorSpace = (SkColorSpace_XYZ*) fColorSpace.get(); diff --git a/src/core/SkImageFilter.cpp b/src/core/SkImageFilter.cpp index e5ba0eb09f..3854b83e59 100644 --- a/src/core/SkImageFilter.cpp +++ b/src/core/SkImageFilter.cpp @@ -8,7 +8,6 @@ #include "SkImageFilter.h" #include "SkCanvas.h" -#include "SkColorSpace_Base.h" #include "SkFuzzLogging.h" #include "SkImageFilterCache.h" #include "SkLocalMatrixImageFilter.h" diff --git a/src/core/SkPM4fPriv.h b/src/core/SkPM4fPriv.h index 28780d659a..dd9b3051a6 100644 --- a/src/core/SkPM4fPriv.h +++ b/src/core/SkPM4fPriv.h @@ -10,7 +10,6 @@ #include "SkColorData.h" #include "SkColorSpace.h" -#include "SkColorSpace_Base.h" #include "SkArenaAlloc.h" #include "SkPM4f.h" #include "SkRasterPipeline.h" diff --git a/src/effects/SkToSRGBColorFilter.cpp b/src/effects/SkToSRGBColorFilter.cpp index b20f3883e6..f6e492f5d0 100644 --- a/src/effects/SkToSRGBColorFilter.cpp +++ b/src/effects/SkToSRGBColorFilter.cpp @@ -5,7 +5,6 @@ * found in the LICENSE file. */ -#include "SkColorSpace_Base.h" #include "SkPM4fPriv.h" #include "SkRasterPipeline.h" #include "SkReadBuffer.h" diff --git a/src/gpu/GrColorSpaceXform.cpp b/src/gpu/GrColorSpaceXform.cpp index ac93fb496e..29a3d7f7a8 100644 --- a/src/gpu/GrColorSpaceXform.cpp +++ b/src/gpu/GrColorSpaceXform.cpp @@ -8,7 +8,6 @@ #include "GrColorSpaceXform.h" #include "SkColorSpace.h" #include "SkColorSpacePriv.h" -#include "SkColorSpace_Base.h" #include "SkMatrix44.h" #include "SkSpinlock.h" #include "glsl/GrGLSLColorSpaceXformHelper.h" diff --git a/src/gpu/GrSurfaceContext.cpp b/src/gpu/GrSurfaceContext.cpp index abd77b9b9c..342c77e5bc 100644 --- a/src/gpu/GrSurfaceContext.cpp +++ b/src/gpu/GrSurfaceContext.cpp @@ -10,7 +10,6 @@ #include "GrContextPriv.h" #include "GrDrawingManager.h" #include "GrOpList.h" -#include "SkColorSpace_Base.h" #include "SkGr.h" #include "../private/GrAuditTrail.h" diff --git a/src/gpu/GrTestUtils.cpp b/src/gpu/GrTestUtils.cpp index 1918ad61f9..8958f84704 100644 --- a/src/gpu/GrTestUtils.cpp +++ b/src/gpu/GrTestUtils.cpp @@ -9,7 +9,6 @@ #include "GrColorSpaceInfo.h" #include "GrProcessorUnitTest.h" #include "GrStyle.h" -#include "SkColorSpace_Base.h" #include "SkDashPathPriv.h" #include "SkMakeUnique.h" #include "SkMatrix.h" diff --git a/src/gpu/effects/GrNonlinearColorSpaceXformEffect.cpp b/src/gpu/effects/GrNonlinearColorSpaceXformEffect.cpp index cc48356e0d..d5a4cd63dd 100644 --- a/src/gpu/effects/GrNonlinearColorSpaceXformEffect.cpp +++ b/src/gpu/effects/GrNonlinearColorSpaceXformEffect.cpp @@ -8,7 +8,6 @@ #include "GrNonlinearColorSpaceXformEffect.h" #include "GrColorSpaceXform.h" #include "GrProcessor.h" -#include "SkColorSpace_Base.h" #include "glsl/GrGLSLFragmentProcessor.h" #include "glsl/GrGLSLFragmentShaderBuilder.h" diff --git a/src/image/SkImage.cpp b/src/image/SkImage.cpp index b5d68bf865..375c43e68d 100644 --- a/src/image/SkImage.cpp +++ b/src/image/SkImage.cpp @@ -8,7 +8,6 @@ #include "SkBitmap.h" #include "SkBitmapCache.h" #include "SkCanvas.h" -#include "SkColorSpace_Base.h" #include "SkData.h" #include "SkImageEncoder.h" #include "SkImageFilter.h" diff --git a/src/image/SkImage_Lazy.cpp b/src/image/SkImage_Lazy.cpp index 53ebc0ccff..e0a5c7caf6 100644 --- a/src/image/SkImage_Lazy.cpp +++ b/src/image/SkImage_Lazy.cpp @@ -10,7 +10,6 @@ #include "SkBitmap.h" #include "SkBitmapCache.h" -#include "SkColorSpace_Base.h" #include "SkData.h" #include "SkImageGenerator.h" #include "SkImagePriv.h" diff --git a/src/image/SkSurface_Gpu.cpp b/src/image/SkSurface_Gpu.cpp index 2bc782b775..3746d097c8 100644 --- a/src/image/SkSurface_Gpu.cpp +++ b/src/image/SkSurface_Gpu.cpp @@ -14,7 +14,6 @@ #include "GrTexture.h" #include "SkCanvas.h" -#include "SkColorSpace_Base.h" #include "SkDeferredDisplayList.h" #include "SkGpuDevice.h" #include "SkImage_Base.h" diff --git a/src/images/SkImageEncoderFns.h b/src/images/SkImageEncoderFns.h index 6425b8fde8..52c547616d 100644 --- a/src/images/SkImageEncoderFns.h +++ b/src/images/SkImageEncoderFns.h @@ -15,7 +15,6 @@ #include "SkBitmap.h" #include "SkColor.h" #include "SkColorData.h" -#include "SkColorSpace_Base.h" #include "SkICC.h" #include "SkOpts.h" #include "SkPreConfig.h" diff --git a/src/images/SkJpegEncoder.cpp b/src/images/SkJpegEncoder.cpp index 1c542a66a7..305152d978 100644 --- a/src/images/SkJpegEncoder.cpp +++ b/src/images/SkJpegEncoder.cpp @@ -10,7 +10,6 @@ #ifdef SK_HAS_JPEG_LIBRARY #include "SkColorData.h" -#include "SkColorSpace_Base.h" #include "SkImageEncoderFns.h" #include "SkImageInfoPriv.h" #include "SkJpegEncoder.h" diff --git a/src/images/SkWebpEncoder.cpp b/src/images/SkWebpEncoder.cpp index 3c08fdcfa4..a7809b2fa0 100644 --- a/src/images/SkWebpEncoder.cpp +++ b/src/images/SkWebpEncoder.cpp @@ -20,7 +20,6 @@ #include "SkBitmap.h" #include "SkColorData.h" -#include "SkColorSpace_Base.h" #include "SkImageEncoderFns.h" #include "SkStream.h" #include "SkTemplates.h" diff --git a/src/utils/SkPatchUtils.cpp b/src/utils/SkPatchUtils.cpp index c42957ca8f..baaca82b31 100644 --- a/src/utils/SkPatchUtils.cpp +++ b/src/utils/SkPatchUtils.cpp @@ -8,7 +8,6 @@ #include "SkPatchUtils.h" #include "SkColorData.h" -#include "SkColorSpace_Base.h" #include "SkGeometry.h" #include "SkPM4f.h" @@ -211,7 +210,6 @@ void SkPatchUtils::GetRightCubic(const SkPoint cubics[12], SkPoint points[4]) { } #include "SkPM4fPriv.h" -#include "SkColorSpace_Base.h" #include "SkColorSpaceXform.h" struct SkRGBAf { |