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

Side by Side Diff: src/core/SkColorSpace_Base.h

Issue 2409383002: Add SkColorSpaceTransferFn to SkColorSpace (Closed)
Patch Set: Add more comments Created 4 years, 2 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 unified diff | Download patch
« no previous file with comments | « src/core/SkColorSpaceXform.cpp ('k') | src/core/SkColorSpace_ICC.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2016 Google Inc. 2 * Copyright 2016 Google Inc.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license that can be 4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file. 5 * found in the LICENSE file.
6 */ 6 */
7 7
8 #ifndef SkColorSpace_Base_DEFINED 8 #ifndef SkColorSpace_Base_DEFINED
9 #define SkColorSpace_Base_DEFINED 9 #define SkColorSpace_Base_DEFINED
10 10
(...skipping 24 matching lines...) Expand all
35 // Contains information for a gamma table. 35 // Contains information for a gamma table.
36 struct Table { 36 struct Table {
37 size_t fOffset; 37 size_t fOffset;
38 int fSize; 38 int fSize;
39 39
40 const float* table(const SkGammas* base) const { 40 const float* table(const SkGammas* base) const {
41 return SkTAddOffset<const float>(base, sizeof(SkGammas) + fOffset); 41 return SkTAddOffset<const float>(base, sizeof(SkGammas) + fOffset);
42 } 42 }
43 }; 43 };
44 44
45 // Contains the parameters for a parametric curve.
46 struct Params {
47 // Y = (aX + b)^g + c for X >= d
48 // Y = eX + f otherwise
49 float fG;
50 float fA;
51 float fB;
52 float fC;
53 float fD;
54 float fE;
55 float fF;
56 };
57
58 // Contains the actual gamma curve information. Should be interpreted 45 // Contains the actual gamma curve information. Should be interpreted
59 // based on the type of the gamma curve. 46 // based on the type of the gamma curve.
60 union Data { 47 union Data {
61 Data() 48 Data()
62 : fTable{ 0, 0 } 49 : fTable{ 0, 0 }
63 {} 50 {}
64 51
65 inline bool operator==(const Data& that) const { 52 inline bool operator==(const Data& that) const {
66 return this->fTable.fOffset == that.fTable.fOffset && 53 return this->fTable.fOffset == that.fTable.fOffset &&
67 this->fTable.fSize == that.fTable.fSize; 54 this->fTable.fSize == that.fTable.fSize;
68 } 55 }
69 56
70 SkGammaNamed fNamed; 57 SkGammaNamed fNamed;
71 float fValue; 58 float fValue;
72 Table fTable; 59 Table fTable;
73 size_t fParamOffset; 60 size_t fParamOffset;
74 61
75 const Params& params(const SkGammas* base) const { 62 const SkColorSpaceTransferFn& params(const SkGammas* base) const {
76 return *SkTAddOffset<const Params>(base, sizeof(SkGammas) + fParamOf fset); 63 return *SkTAddOffset<const SkColorSpaceTransferFn>(
64 base, sizeof(SkGammas) + fParamOffset);
77 } 65 }
78 }; 66 };
79 67
80 bool isNamed(int i) const { 68 bool isNamed(int i) const {
81 return Type::kNamed_Type == this->type(i); 69 return Type::kNamed_Type == this->type(i);
82 } 70 }
83 71
84 bool isValue(int i) const { 72 bool isValue(int i) const {
85 return Type::kValue_Type == this->type(i); 73 return Type::kValue_Type == this->type(i);
86 } 74 }
(...skipping 18 matching lines...) Expand all
105 SkASSERT(false); 93 SkASSERT(false);
106 return fRedData; 94 return fRedData;
107 } 95 }
108 } 96 }
109 97
110 const float* table(int i) const { 98 const float* table(int i) const {
111 SkASSERT(isTable(i)); 99 SkASSERT(isTable(i));
112 return this->data(i).fTable.table(this); 100 return this->data(i).fTable.table(this);
113 } 101 }
114 102
115 const Params& params(int i) const { 103 const SkColorSpaceTransferFn& params(int i) const {
116 SkASSERT(isParametric(i)); 104 SkASSERT(isParametric(i));
117 return this->data(i).params(this); 105 return this->data(i).params(this);
118 } 106 }
119 107
120 Type type(int i) const { 108 Type type(int i) const {
121 switch (i) { 109 switch (i) {
122 case 0: 110 case 0:
123 return fRedType; 111 return fRedType;
124 case 1: 112 case 1:
125 return fGreenType; 113 return fGreenType;
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
231 219
232 static inline const SkColorSpace_Base* as_CSB(const SkColorSpace* colorSpace) { 220 static inline const SkColorSpace_Base* as_CSB(const SkColorSpace* colorSpace) {
233 return static_cast<const SkColorSpace_Base*>(colorSpace); 221 return static_cast<const SkColorSpace_Base*>(colorSpace);
234 } 222 }
235 223
236 static inline SkColorSpace_Base* as_CSB(const sk_sp<SkColorSpace>& colorSpace) { 224 static inline SkColorSpace_Base* as_CSB(const sk_sp<SkColorSpace>& colorSpace) {
237 return static_cast<SkColorSpace_Base*>(colorSpace.get()); 225 return static_cast<SkColorSpace_Base*>(colorSpace.get());
238 } 226 }
239 227
240 #endif 228 #endif
OLDNEW
« no previous file with comments | « src/core/SkColorSpaceXform.cpp ('k') | src/core/SkColorSpace_ICC.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698