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

Unified Diff: src/core/SkColorSpace.h

Issue 1985903002: Prepare SkColorSpace to be a public API (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 4 years, 7 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
Index: src/core/SkColorSpace.h
diff --git a/src/core/SkColorSpace.h b/src/core/SkColorSpace.h
index 52b89734d80b3838af433bb7595c7fd967737fe1..ccbaa25d991e6fb09b7126aa00c4b16bcfe0c343 100644
--- a/src/core/SkColorSpace.h
+++ b/src/core/SkColorSpace.h
@@ -21,107 +21,32 @@
// http://www.poynton.com/notes/colour_and_gamma/ColorFAQ.html
//
-#include "SkRefCnt.h"
#include "SkMatrix44.h"
+#include "SkRefCnt.h"
+#include "SkTemplates.h"
scroggo 2016/05/17 16:54:27 I think the new way to include this file is "../pr
msarett 2016/05/17 17:27:13 Acknowledged.
-struct SkFloat3 {
- float fVec[3];
-
- void dump() const;
-};
+struct SkColorLookUpTable;
+struct SkGammaCurve;
+struct SkGammas;
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,
kAdobeRGB_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 transform from linear_RGB to D50_XYZ
- * and the src-gamma, return a ColorSpace
+ * Given the src gamma and a transform from src gamut to D50_XYZ, return a SkColorSpace.
*/
- static sk_sp<SkColorSpace> NewRGB(SkGammas gammas, const SkMatrix44& toXYZD50);
+ static sk_sp<SkColorSpace> NewRGB(float gammas[3], const SkMatrix44& toXYZD50);
static sk_sp<SkColorSpace> NewNamed(Named);
static sk_sp<SkColorSpace> NewICC(const void*, size_t);
- const SkGammas& gammas() const { return fGammas; }
+ SkGammas* gammas() const { return fGammas.get(); }
reed1 2016/05/17 13:59:24 Do we need this getter to be public? I guess its o
msarett 2016/05/17 15:40:52 Agreed that it's funny, but it's useful for test c
scroggo 2016/05/17 16:54:27 Maybe we should document that it is only meant to
msarett 2016/05/17 17:27:13 sgtm
SkMatrix44 xyz() const { return fToXYZD50; }
Named named() const { return fNamed; }
uint32_t uniqueID() const { return fUniqueID; }
@@ -135,20 +60,19 @@ private:
uint32_t outputChannels, const uint8_t* src, size_t len);
- static bool LoadA2B0(SkColorLookUpTable* colorLUT, SkGammas* gammas, SkMatrix44* toXYZ,
+ static bool LoadA2B0(SkColorLookUpTable* colorLUT, sk_sp<SkGammas> gammas, SkMatrix44* toXYZ,
const uint8_t* src, size_t len);
- SkColorSpace(SkGammas gammas, const SkMatrix44& toXYZ, Named);
+ SkColorSpace(sk_sp<SkGammas> gammas, const SkMatrix44& toXYZ, Named);
- SkColorSpace(SkColorLookUpTable colorLUT, SkGammas gammas,
- const SkMatrix44& toXYZ);
+ SkColorSpace(SkColorLookUpTable* colorLUT, sk_sp<SkGammas> gammas, const SkMatrix44& toXYZ);
- const SkColorLookUpTable fColorLUT;
- const SkGammas fGammas;
- const SkMatrix44 fToXYZD50;
+ SkAutoTDelete<SkColorLookUpTable> fColorLUT;
+ sk_sp<SkGammas> fGammas;
+ const SkMatrix44 fToXYZD50;
- const uint32_t fUniqueID;
- const Named fNamed;
+ const uint32_t fUniqueID;
+ const Named fNamed;
};
#endif
« no previous file with comments | « src/codec/SkPngCodec.cpp ('k') | src/core/SkColorSpace.cpp » ('j') | src/core/SkColorSpacePriv.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698