Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(422)

Unified Diff: src/core/SkColorSpace.h

Issue 1933863002: Revert of Introduce SkGammas type to represent ICC gamma curves (Closed) Base URL: https://skia.googlesource.com/skia.git@delcolorspace
Patch Set: Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/codec/SkPngCodec.cpp ('k') | src/core/SkColorSpace.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/core/SkColorSpace.h
diff --git a/src/core/SkColorSpace.h b/src/core/SkColorSpace.h
index a1ccf13fe0c61af76922e50c9f2d9ac538b260a2..2b3b15fe95576c33f5def8e4a341c5797a9bac30 100644
--- a/src/core/SkColorSpace.h
+++ b/src/core/SkColorSpace.h
@@ -35,121 +35,57 @@
void dump() const;
};
+struct SkColorLookUpTable {
+ static const uint8_t kMaxChannels = 16;
+
+ uint8_t fInputChannels;
+ uint8_t fOutputChannels;
+ uint8_t fGridPoints[kMaxChannels];
+ std::unique_ptr<float[]> fTable;
+
+ SkColorLookUpTable() {
+ memset(this, 0, sizeof(struct SkColorLookUpTable));
+ }
+
+ SkColorLookUpTable(SkColorLookUpTable&& that)
+ : fInputChannels(that.fInputChannels)
+ , fOutputChannels(that.fOutputChannels)
+ , fTable(std::move(that.fTable))
+ {
+ memcpy(fGridPoints, that.fGridPoints, kMaxChannels);
+ }
+};
+
class SkColorSpace : public SkRefCnt {
-private:
- struct SkGammaCurve {
- bool isValue() const {
- bool result = (0.0f != fValue);
- SkASSERT(!result || (0 == fTableSize));
- return result;
- }
-
- bool isTable() const {
- bool result = (0 != fTableSize);
- SkASSERT(!result || (0.0f == fValue));
- SkASSERT(!result || fTable);
- return result;
- }
-
- bool isParametric() const { return false; }
-
- // We have three different ways to represent gamma.
- // (1) A single value:
- float fValue;
-
- // (2) A lookup table:
- uint32_t fTableSize;
- std::unique_ptr<float[]> fTable;
-
- // (3) Parameters for a curve:
- // FIXME (msarett): Handle parametric curves.
-
- SkGammaCurve() {
- memset(this, 0, sizeof(struct SkGammaCurve));
- }
-
- SkGammaCurve(float value)
- : fValue(value)
- , fTableSize(0)
- , fTable(nullptr)
- {}
- };
-
- struct SkColorLookUpTable {
- static const uint8_t kMaxChannels = 16;
-
- uint8_t fInputChannels;
- uint8_t fOutputChannels;
- uint8_t fGridPoints[kMaxChannels];
- std::unique_ptr<float[]> fTable;
-
- SkColorLookUpTable() {
- memset(this, 0, sizeof(struct SkColorLookUpTable));
- }
- };
-
public:
enum Named {
kUnknown_Named,
kSRGB_Named,
};
- struct SkGammas {
- public:
- SkGammas(float red, float green, float blue)
- : fRed(red)
- , fGreen(green)
- , fBlue(blue)
- {}
-
- SkGammas() {}
-
- SkDEBUGCODE(float red() const { return fRed.fValue; })
- SkDEBUGCODE(float green() const { return fGreen.fValue; })
- SkDEBUGCODE(float blue() const { return fBlue.fValue; })
-
- private:
- SkGammaCurve fRed;
- SkGammaCurve fGreen;
- SkGammaCurve fBlue;
-
- friend class SkColorSpace;
- };
-
/**
* Return a colorspace instance, given a 3x3 transform from linear_RGB to D50_XYZ
* and the src-gamma, return a ColorSpace
*/
- static sk_sp<SkColorSpace> NewRGB(const SkFloat3x3& toXYZD50, SkGammas gammas);
+ static sk_sp<SkColorSpace> NewRGB(const SkFloat3x3& toXYZD50, const SkFloat3& gamma);
static sk_sp<SkColorSpace> NewNamed(Named);
static sk_sp<SkColorSpace> NewICC(const void*, size_t);
- const SkGammas& gammas() const { return fGammas; }
+ SkFloat3 gamma() const { return fGamma; }
SkFloat3x3 xyz() const { return fToXYZD50; }
SkFloat3 xyzOffset() const { return fToXYZOffset; }
Named named() const { return fNamed; }
uint32_t uniqueID() const { return fUniqueID; }
private:
+ SkColorSpace(const SkFloat3& gamma, const SkFloat3x3& toXYZ, Named);
- static bool LoadGammas(SkGammaCurve* gammas, uint32_t num, const uint8_t* src, size_t len);
-
-
- static bool LoadColorLUT(SkColorLookUpTable* colorLUT, uint32_t inputChannels,
- uint32_t outputChannels, const uint8_t* src, size_t len);
-
-
- static bool LoadA2B0(SkColorLookUpTable* colorLUT, SkGammas* gammas, SkFloat3x3* toXYZ,
- SkFloat3* toXYZOffset, const uint8_t* src, size_t len);
-
- SkColorSpace(SkGammas gammas, const SkFloat3x3& toXYZ, Named);
-
- SkColorSpace(SkColorLookUpTable colorLUT, SkGammas gammas,
- const SkFloat3x3& toXYZ, const SkFloat3& toXYZOffset);
+ SkColorSpace(SkColorLookUpTable colorLUT, const SkFloat3& gamma, const SkFloat3x3& toXYZ,
+ const SkFloat3& toXYZOffset);
const SkColorLookUpTable fColorLUT;
- const SkGammas fGammas;
+ const SkFloat3 fGamma;
const SkFloat3x3 fToXYZD50;
const SkFloat3 fToXYZOffset;
« no previous file with comments | « src/codec/SkPngCodec.cpp ('k') | src/core/SkColorSpace.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698