diff options
author | Mike Klein <mtklein@chromium.org> | 2018-01-26 13:58:24 -0500 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2018-01-26 19:52:20 +0000 |
commit | 333848272c4d023199e44ff38f2e6fc6876388e8 (patch) | |
tree | 399fd71be826ba4c0a276909fe0e539dd765f435 /src/core | |
parent | 8f11d4dcafef4447fa68ea0ab28a72589241e9fd (diff) |
remove SkColorSpace_Base
The type SkColorSpace_Base doesn't need to exist. Its one type() query
can be answered instead by toXYZD50().
Now all that's left in the file is SkGammas, so rename it to SkGammas.h.
Change-Id: Id60ddbfb342accfd5674ae89b37a24a6583ef7b8
Reviewed-on: https://skia-review.googlesource.com/99702
Reviewed-by: Mike Klein <mtklein@chromium.org>
Commit-Queue: Mike Klein <mtklein@chromium.org>
Diffstat (limited to 'src/core')
-rw-r--r-- | src/core/SkColorSpace.cpp | 5 | ||||
-rw-r--r-- | src/core/SkColorSpacePriv.h | 2 | ||||
-rw-r--r-- | src/core/SkColorSpaceXform.cpp | 17 | ||||
-rw-r--r-- | src/core/SkColorSpaceXformPriv.h | 1 | ||||
-rw-r--r-- | src/core/SkColorSpaceXform_A2B.h | 1 | ||||
-rw-r--r-- | src/core/SkColorSpaceXform_Base.h | 1 | ||||
-rw-r--r-- | src/core/SkColorSpace_A2B.h | 11 | ||||
-rw-r--r-- | src/core/SkColorSpace_ICC.cpp | 1 | ||||
-rw-r--r-- | src/core/SkColorSpace_XYZ.h | 9 | ||||
-rw-r--r-- | src/core/SkDraw_vertices.cpp | 1 | ||||
-rw-r--r-- | src/core/SkGammas.h (renamed from src/core/SkColorSpace_Base.h) | 44 | ||||
-rw-r--r-- | src/core/SkICC.cpp | 5 | ||||
-rw-r--r-- | src/core/SkImageFilter.cpp | 1 | ||||
-rw-r--r-- | src/core/SkPM4fPriv.h | 1 |
14 files changed, 28 insertions, 72 deletions
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" |