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

Side by Side Diff: ui/gfx/color_transform.cc

Issue 2338213009: Always use valid enum values in gfx::ColorSpace (Closed)
Patch Set: fix compile errors Created 4 years, 3 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
« ui/gfx/color_space.h ('K') | « ui/gfx/color_space.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2016 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "ui/gfx/color_transform.h" 5 #include "ui/gfx/color_transform.h"
6 6
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "ui/gfx/color_space.h" 10 #include "ui/gfx/color_space.h"
(...skipping 22 matching lines...) Expand all
33 return color; 33 return color;
34 } 34 }
35 35
36 ColorTransform::TriStim Xy2xyz(float x, float y) { 36 ColorTransform::TriStim Xy2xyz(float x, float y) {
37 return ColorTransform::TriStim(x, y, 1.0f - x - y); 37 return ColorTransform::TriStim(x, y, 1.0f - x - y);
38 } 38 }
39 39
40 void GetPrimaries(ColorSpace::PrimaryID id, 40 void GetPrimaries(ColorSpace::PrimaryID id,
41 ColorTransform::TriStim primaries[4]) { 41 ColorTransform::TriStim primaries[4]) {
42 switch (id) { 42 switch (id) {
43 default: 43 case ColorSpace::PrimaryID::CUSTOM:
44 // If we don't know, assume BT709 44 NOTREACHED();
45 45
46 case ColorSpace::PrimaryID::RESERVED0:
47 case ColorSpace::PrimaryID::RESERVED:
48 case ColorSpace::PrimaryID::UNSPECIFIED:
49 case ColorSpace::PrimaryID::UNKNOWN:
46 case ColorSpace::PrimaryID::BT709: 50 case ColorSpace::PrimaryID::BT709:
47 // Red 51 // BT709 is our default case. Put it after the switch just
48 primaries[0] = Xy2xyz(0.640f, 0.330f); 52 // in case we somehow get an id which is not listed in the switch.
49 // Green 53 // (We don't want to use "default", because we want the compiler
50 primaries[1] = Xy2xyz(0.300f, 0.600f); 54 // to tell us if we forgot some enum values.)
51 // Blue 55 return;
52 primaries[2] = Xy2xyz(0.150f, 0.060f);
53 // Whitepoint (D65f)
54 primaries[3] = Xy2xyz(0.3127f, 0.3290f);
55 break;
56 56
57 case ColorSpace::PrimaryID::BT470M: 57 case ColorSpace::PrimaryID::BT470M:
58 // Red 58 // Red
59 primaries[0] = Xy2xyz(0.67f, 0.33f); 59 primaries[0] = Xy2xyz(0.67f, 0.33f);
60 // Green 60 // Green
61 primaries[1] = Xy2xyz(0.21f, 0.71f); 61 primaries[1] = Xy2xyz(0.21f, 0.71f);
62 // Blue 62 // Blue
63 primaries[2] = Xy2xyz(0.14f, 0.08f); 63 primaries[2] = Xy2xyz(0.14f, 0.08f);
64 // Whitepoint 64 // Whitepoint
65 primaries[3] = Xy2xyz(0.31f, 0.316f); 65 primaries[3] = Xy2xyz(0.31f, 0.316f);
66 break; 66 return;
67 67
68 case ColorSpace::PrimaryID::BT470BG: 68 case ColorSpace::PrimaryID::BT470BG:
69 // Red 69 // Red
70 primaries[0] = Xy2xyz(0.64f, 0.33f); 70 primaries[0] = Xy2xyz(0.64f, 0.33f);
71 // Green 71 // Green
72 primaries[1] = Xy2xyz(0.29f, 0.60f); 72 primaries[1] = Xy2xyz(0.29f, 0.60f);
73 // Blue 73 // Blue
74 primaries[2] = Xy2xyz(0.15f, 0.06f); 74 primaries[2] = Xy2xyz(0.15f, 0.06f);
75 // Whitepoint (D65f) 75 // Whitepoint (D65f)
76 primaries[3] = Xy2xyz(0.3127f, 0.3290f); 76 primaries[3] = Xy2xyz(0.3127f, 0.3290f);
77 break; 77 return;
78 78
79 case ColorSpace::PrimaryID::SMPTE170M: 79 case ColorSpace::PrimaryID::SMPTE170M:
80 case ColorSpace::PrimaryID::SMPTE240M: 80 case ColorSpace::PrimaryID::SMPTE240M:
81 // Red 81 // Red
82 primaries[0] = Xy2xyz(0.630f, 0.340f); 82 primaries[0] = Xy2xyz(0.630f, 0.340f);
83 // Green 83 // Green
84 primaries[1] = Xy2xyz(0.310f, 0.595f); 84 primaries[1] = Xy2xyz(0.310f, 0.595f);
85 // Blue 85 // Blue
86 primaries[2] = Xy2xyz(0.155f, 0.070f); 86 primaries[2] = Xy2xyz(0.155f, 0.070f);
87 // Whitepoint (D65f) 87 // Whitepoint (D65f)
88 primaries[3] = Xy2xyz(0.3127f, 0.3290f); 88 primaries[3] = Xy2xyz(0.3127f, 0.3290f);
89 break; 89 return;
90 90
91 case ColorSpace::PrimaryID::FILM: 91 case ColorSpace::PrimaryID::FILM:
92 // Red 92 // Red
93 primaries[0] = Xy2xyz(0.681f, 0.319f); 93 primaries[0] = Xy2xyz(0.681f, 0.319f);
94 // Green 94 // Green
95 primaries[1] = Xy2xyz(0.243f, 0.692f); 95 primaries[1] = Xy2xyz(0.243f, 0.692f);
96 // Blue 96 // Blue
97 primaries[2] = Xy2xyz(0.145f, 0.049f); 97 primaries[2] = Xy2xyz(0.145f, 0.049f);
98 // Whitepoint (Cf) 98 // Whitepoint (Cf)
99 primaries[3] = Xy2xyz(0.310f, 0.136f); 99 primaries[3] = Xy2xyz(0.310f, 0.136f);
100 break; 100 return;
101 101
102 case ColorSpace::PrimaryID::BT2020: 102 case ColorSpace::PrimaryID::BT2020:
103 // Red 103 // Red
104 primaries[0] = Xy2xyz(0.708f, 0.292f); 104 primaries[0] = Xy2xyz(0.708f, 0.292f);
105 // Green 105 // Green
106 primaries[1] = Xy2xyz(0.170f, 0.797f); 106 primaries[1] = Xy2xyz(0.170f, 0.797f);
107 // Blue 107 // Blue
108 primaries[2] = Xy2xyz(0.131f, 0.046f); 108 primaries[2] = Xy2xyz(0.131f, 0.046f);
109 // Whitepoint (D65f) 109 // Whitepoint (D65f)
110 primaries[3] = Xy2xyz(0.3127f, 0.3290f); 110 primaries[3] = Xy2xyz(0.3127f, 0.3290f);
111 break; 111 return;
112 112
113 case ColorSpace::PrimaryID::SMPTEST428_1: 113 case ColorSpace::PrimaryID::SMPTEST428_1:
114 // X 114 // X
115 primaries[0] = Xy2xyz(1.0f, 0.0f); 115 primaries[0] = Xy2xyz(1.0f, 0.0f);
116 // Y 116 // Y
117 primaries[1] = Xy2xyz(0.0f, 1.0f); 117 primaries[1] = Xy2xyz(0.0f, 1.0f);
118 // Z 118 // Z
119 primaries[2] = Xy2xyz(0.0f, 0.0f); 119 primaries[2] = Xy2xyz(0.0f, 0.0f);
120 // Whitepoint (Ef) 120 // Whitepoint (Ef)
121 primaries[3] = Xy2xyz(1.0f / 3.0f, 1.0f / 3.0f); 121 primaries[3] = Xy2xyz(1.0f / 3.0f, 1.0f / 3.0f);
122 break; 122 return;
123 123
124 case ColorSpace::PrimaryID::SMPTEST431_2: 124 case ColorSpace::PrimaryID::SMPTEST431_2:
125 // Red 125 // Red
126 primaries[0] = Xy2xyz(0.680f, 0.320f); 126 primaries[0] = Xy2xyz(0.680f, 0.320f);
127 // Green 127 // Green
128 primaries[1] = Xy2xyz(0.265f, 0.690f); 128 primaries[1] = Xy2xyz(0.265f, 0.690f);
129 // Blue 129 // Blue
130 primaries[2] = Xy2xyz(0.150f, 0.060f); 130 primaries[2] = Xy2xyz(0.150f, 0.060f);
131 // Whitepoint 131 // Whitepoint
132 primaries[3] = Xy2xyz(0.314f, 0.351f); 132 primaries[3] = Xy2xyz(0.314f, 0.351f);
133 break; 133 return;
134 134
135 case ColorSpace::PrimaryID::SMPTEST432_1: 135 case ColorSpace::PrimaryID::SMPTEST432_1:
136 // Red 136 // Red
137 primaries[0] = Xy2xyz(0.680f, 0.320f); 137 primaries[0] = Xy2xyz(0.680f, 0.320f);
138 // Green 138 // Green
139 primaries[1] = Xy2xyz(0.265f, 0.690f); 139 primaries[1] = Xy2xyz(0.265f, 0.690f);
140 // Blue 140 // Blue
141 primaries[2] = Xy2xyz(0.150f, 0.060f); 141 primaries[2] = Xy2xyz(0.150f, 0.060f);
142 // Whitepoint (D65f) 142 // Whitepoint (D65f)
143 primaries[3] = Xy2xyz(0.3127f, 0.3290f); 143 primaries[3] = Xy2xyz(0.3127f, 0.3290f);
144 break; 144 return;
145 145
146 case ColorSpace::PrimaryID::XYZ_D50: 146 case ColorSpace::PrimaryID::XYZ_D50:
147 // X 147 // X
148 primaries[0] = Xy2xyz(1.0f, 0.0f); 148 primaries[0] = Xy2xyz(1.0f, 0.0f);
149 // Y 149 // Y
150 primaries[1] = Xy2xyz(0.0f, 1.0f); 150 primaries[1] = Xy2xyz(0.0f, 1.0f);
151 // Z 151 // Z
152 primaries[2] = Xy2xyz(0.0f, 0.0f); 152 primaries[2] = Xy2xyz(0.0f, 0.0f);
153 // D50 153 // D50
154 primaries[3] = Xy2xyz(0.34567f, 0.35850f); 154 primaries[3] = Xy2xyz(0.34567f, 0.35850f);
155 break; 155 return;
156 } 156 }
157
158 // Red
159 primaries[0] = Xy2xyz(0.640f, 0.330f);
160 // Green
161 primaries[1] = Xy2xyz(0.300f, 0.600f);
162 // Blue
163 primaries[2] = Xy2xyz(0.150f, 0.060f);
164 // Whitepoint (D65f)
165 primaries[3] = Xy2xyz(0.3127f, 0.3290f);
157 } 166 }
158 167
159 GFX_EXPORT Transform GetPrimaryMatrix(ColorSpace::PrimaryID id) { 168 GFX_EXPORT Transform GetPrimaryMatrix(ColorSpace::PrimaryID id) {
160 ColorTransform::TriStim primaries[4]; 169 ColorTransform::TriStim primaries[4];
161 GetPrimaries(id, primaries); 170 GetPrimaries(id, primaries);
162 ColorTransform::TriStim WXYZ(primaries[3].x() / primaries[3].y(), 1.0f, 171 ColorTransform::TriStim WXYZ(primaries[3].x() / primaries[3].y(), 1.0f,
163 primaries[3].z() / primaries[3].y()); 172 primaries[3].z() / primaries[3].y());
164 173
165 Transform ret( 174 Transform ret(
166 primaries[0].x(), primaries[1].x(), primaries[2].x(), 0.0f, // 1 175 primaries[0].x(), primaries[1].x(), primaries[2].x(), 0.0f, // 1
(...skipping 17 matching lines...) Expand all
184 Transform adapter; 193 Transform adapter;
185 adapter.Scale3d(dest_response.x() / source_response.x(), 194 adapter.Scale3d(dest_response.x() / source_response.x(),
186 dest_response.y() / source_response.y(), 195 dest_response.y() / source_response.y(),
187 dest_response.z() / source_response.z()); 196 dest_response.z() / source_response.z());
188 197
189 return Invert(bradford) * adapter * bradford * ret; 198 return Invert(bradford) * adapter * bradford * ret;
190 } 199 }
191 200
192 GFX_EXPORT float FromLinear(ColorSpace::TransferID id, float v) { 201 GFX_EXPORT float FromLinear(ColorSpace::TransferID id, float v) {
193 switch (id) { 202 switch (id) {
194 default: 203 case ColorSpace::TransferID::SMPTEST2084_NON_HDR:
204 // Should already be handled.
205 NOTREACHED();
206 case ColorSpace::TransferID::CUSTOM:
207 // TODO(hubbe): Actually implement custom transfer functions.
208 case ColorSpace::TransferID::RESERVED0:
209 case ColorSpace::TransferID::RESERVED:
210 case ColorSpace::TransferID::UNSPECIFIED:
211 case ColorSpace::TransferID::UNKNOWN:
212 // All unknown values default to BT709
213
195 case ColorSpace::TransferID::BT709: 214 case ColorSpace::TransferID::BT709:
196 case ColorSpace::TransferID::SMPTE170M: 215 case ColorSpace::TransferID::SMPTE170M:
197 case ColorSpace::TransferID::BT2020_10: 216 case ColorSpace::TransferID::BT2020_10:
198 case ColorSpace::TransferID::BT2020_12: { 217 case ColorSpace::TransferID::BT2020_12:
199 v = fmax(0.0f, v); 218 // BT709 is our "default" cause, so put the code after the switch
200 float a = 1.099296826809442f; 219 // to avoid "control reaches end of non-void function" errors.
201 float b = 0.018053968510807f; 220 break;
202 if (v <= b) {
203 return 4.5f * v;
204 } else {
205 return a * powf(v, 0.45f) - (a - 1.0f);
206 }
207 }
208 221
209 case ColorSpace::TransferID::GAMMA22: 222 case ColorSpace::TransferID::GAMMA22:
210 v = fmax(0.0f, v); 223 v = fmax(0.0f, v);
211 return powf(v, 1.0f / 2.2f); 224 return powf(v, 1.0f / 2.2f);
212 225
213 case ColorSpace::TransferID::GAMMA28: 226 case ColorSpace::TransferID::GAMMA28:
214 v = fmax(0.0f, v); 227 v = fmax(0.0f, v);
215 return powf(v, 1.0f / 2.8f); 228 return powf(v, 1.0f / 2.8f);
216 229
217 case ColorSpace::TransferID::SMPTE240M: { 230 case ColorSpace::TransferID::SMPTE240M: {
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
285 298
286 case ColorSpace::TransferID::SMPTEST428_1: 299 case ColorSpace::TransferID::SMPTEST428_1:
287 v = fmax(0.0f, v); 300 v = fmax(0.0f, v);
288 return powf(48.0f * v + 52.37f, 1.0f / 2.6f); 301 return powf(48.0f * v + 52.37f, 1.0f / 2.6f);
289 302
290 // Chrome-specific values below 303 // Chrome-specific values below
291 case ColorSpace::TransferID::GAMMA24: 304 case ColorSpace::TransferID::GAMMA24:
292 v = fmax(0.0f, v); 305 v = fmax(0.0f, v);
293 return powf(v, 1.0f / 2.4f); 306 return powf(v, 1.0f / 2.4f);
294 } 307 }
308
309 v = fmax(0.0f, v);
310 float a = 1.099296826809442f;
311 float b = 0.018053968510807f;
312 if (v <= b) {
313 return 4.5f * v;
314 } else {
315 return a * powf(v, 0.45f) - (a - 1.0f);
316 }
295 } 317 }
296 318
297 GFX_EXPORT float ToLinear(ColorSpace::TransferID id, float v) { 319 GFX_EXPORT float ToLinear(ColorSpace::TransferID id, float v) {
298 switch (id) { 320 switch (id) {
299 default: 321 case ColorSpace::TransferID::CUSTOM:
322 // TODO(hubbe): Actually implement custom transfer functions.
323 case ColorSpace::TransferID::RESERVED0:
324 case ColorSpace::TransferID::RESERVED:
325 case ColorSpace::TransferID::UNSPECIFIED:
326 case ColorSpace::TransferID::UNKNOWN:
327 // All unknown values default to BT709
328
300 case ColorSpace::TransferID::BT709: 329 case ColorSpace::TransferID::BT709:
301 case ColorSpace::TransferID::SMPTE170M: 330 case ColorSpace::TransferID::SMPTE170M:
302 case ColorSpace::TransferID::BT2020_10: 331 case ColorSpace::TransferID::BT2020_10:
303 case ColorSpace::TransferID::BT2020_12: { 332 case ColorSpace::TransferID::BT2020_12:
304 v = fmax(0.0f, v); 333 // BT709 is our "default" cause, so put the code after the switch
305 float a = 1.099296826809442f; 334 // to avoid "control reaches end of non-void function" errors.
306 float b = 0.018053968510807f; 335 break;
307 if (v < FromLinear(ColorSpace::TransferID::BT709, b)) {
308 return v / 4.5f;
309 } else {
310 return powf((v + a - 1.0f) / a, 1.0f / 0.45f);
311 }
312 }
313 336
314 case ColorSpace::TransferID::GAMMA22: 337 case ColorSpace::TransferID::GAMMA22:
315 v = fmax(0.0f, v); 338 v = fmax(0.0f, v);
316 return powf(v, 2.2f); 339 return powf(v, 2.2f);
317 340
318 case ColorSpace::TransferID::GAMMA28: 341 case ColorSpace::TransferID::GAMMA28:
319 v = fmax(0.0f, v); 342 v = fmax(0.0f, v);
320 return powf(v, 2.8f); 343 return powf(v, 2.8f);
321 344
322 case ColorSpace::TransferID::SMPTE240M: { 345 case ColorSpace::TransferID::SMPTE240M: {
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
396 419
397 // Chrome-specific values below 420 // Chrome-specific values below
398 case ColorSpace::TransferID::GAMMA24: 421 case ColorSpace::TransferID::GAMMA24:
399 v = fmax(0.0f, v); 422 v = fmax(0.0f, v);
400 return powf(v, 2.4f); 423 return powf(v, 2.4f);
401 424
402 case ColorSpace::TransferID::SMPTEST2084_NON_HDR: 425 case ColorSpace::TransferID::SMPTEST2084_NON_HDR:
403 v = fmax(0.0f, v); 426 v = fmax(0.0f, v);
404 return fmin(2.3f * pow(v, 2.8f), v / 5.0f + 0.8f); 427 return fmin(2.3f * pow(v, 2.8f), v / 5.0f + 0.8f);
405 } 428 }
429
430 v = fmax(0.0f, v);
431 float a = 1.099296826809442f;
432 float b = 0.018053968510807f;
433 if (v < FromLinear(ColorSpace::TransferID::BT709, b)) {
434 return v / 4.5f;
435 } else {
436 return powf((v + a - 1.0f) / a, 1.0f / 0.45f);
437 }
406 } 438 }
407 439
408 namespace { 440 namespace {
409 // Assumes bt2020 441 // Assumes bt2020
410 float Luma(const ColorTransform::TriStim& c) { 442 float Luma(const ColorTransform::TriStim& c) {
411 return c.x() * 0.2627f + c.y() * 0.6780f + c.z() * 0.0593f; 443 return c.x() * 0.2627f + c.y() * 0.6780f + c.z() * 0.0593f;
412 } 444 }
413 }; 445 };
414 446
415 GFX_EXPORT ColorTransform::TriStim ToLinear(ColorSpace::TransferID id, 447 GFX_EXPORT ColorTransform::TriStim ToLinear(ColorSpace::TransferID id,
416 ColorTransform::TriStim color) { 448 ColorTransform::TriStim color) {
417 ColorTransform::TriStim ret(ToLinear(id, color.x()), ToLinear(id, color.y()), 449 ColorTransform::TriStim ret(ToLinear(id, color.x()), ToLinear(id, color.y()),
418 ToLinear(id, color.z())); 450 ToLinear(id, color.z()));
419 451
420 if (id == ColorSpace::TransferID::SMPTEST2084_NON_HDR) { 452 if (id == ColorSpace::TransferID::SMPTEST2084_NON_HDR) {
421 if (Luma(ret) > 0.0) { 453 if (Luma(ret) > 0.0) {
422 ColorTransform::TriStim smpte2084( 454 ColorTransform::TriStim smpte2084(
423 ToLinear(ColorSpace::TransferID::SMPTEST2084, color.x()), 455 ToLinear(ColorSpace::TransferID::SMPTEST2084, color.x()),
424 ToLinear(ColorSpace::TransferID::SMPTEST2084, color.y()), 456 ToLinear(ColorSpace::TransferID::SMPTEST2084, color.y()),
425 ToLinear(ColorSpace::TransferID::SMPTEST2084, color.z())); 457 ToLinear(ColorSpace::TransferID::SMPTEST2084, color.z()));
426 smpte2084.Scale(Luma(ret) / Luma(smpte2084)); 458 smpte2084.Scale(Luma(ret) / Luma(smpte2084));
427 ret = smpte2084; 459 ret = smpte2084;
428 } 460 }
429 } 461 }
430 462
431 return ret; 463 return ret;
432 } 464 }
433 465
434 GFX_EXPORT Transform GetTransferMatrix(ColorSpace::MatrixID id) { 466 GFX_EXPORT Transform GetTransferMatrix(ColorSpace::MatrixID id) {
435 float Kr = 0.0f, Kb = 0.0f; 467 // Default values for BT709;
468 float Kr = 0.2126f;
469 float Kb = 0.0722f;
436 switch (id) { 470 switch (id) {
437 case ColorSpace::MatrixID::RGB: 471 case ColorSpace::MatrixID::RGB:
438 return Transform(); 472 return Transform();
439 473
440 case ColorSpace::MatrixID::BT709: 474 case ColorSpace::MatrixID::BT709:
441 case ColorSpace::MatrixID::UNSPECIFIED: 475 case ColorSpace::MatrixID::UNSPECIFIED:
442 case ColorSpace::MatrixID::RESERVED: 476 case ColorSpace::MatrixID::RESERVED:
443 Kr = 0.2126f; 477 case ColorSpace::MatrixID::UNKNOWN:
444 Kb = 0.0722f; 478 // Default values are already set.
445 break; 479 break;
446 480
447 case ColorSpace::MatrixID::FCC: 481 case ColorSpace::MatrixID::FCC:
448 Kr = 0.30f; 482 Kr = 0.30f;
449 Kb = 0.11f; 483 Kb = 0.11f;
450 break; 484 break;
451 485
452 case ColorSpace::MatrixID::BT470BG: 486 case ColorSpace::MatrixID::BT470BG:
453 case ColorSpace::MatrixID::SMPTE170M: 487 case ColorSpace::MatrixID::SMPTE170M:
454 Kr = 0.299f; 488 Kr = 0.299f;
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
508 case ColorSpace::MatrixID::BT709: 542 case ColorSpace::MatrixID::BT709:
509 case ColorSpace::MatrixID::UNSPECIFIED: 543 case ColorSpace::MatrixID::UNSPECIFIED:
510 case ColorSpace::MatrixID::RESERVED: 544 case ColorSpace::MatrixID::RESERVED:
511 case ColorSpace::MatrixID::FCC: 545 case ColorSpace::MatrixID::FCC:
512 case ColorSpace::MatrixID::BT470BG: 546 case ColorSpace::MatrixID::BT470BG:
513 case ColorSpace::MatrixID::SMPTE170M: 547 case ColorSpace::MatrixID::SMPTE170M:
514 case ColorSpace::MatrixID::SMPTE240M: 548 case ColorSpace::MatrixID::SMPTE240M:
515 case ColorSpace::MatrixID::BT2020_NCL: 549 case ColorSpace::MatrixID::BT2020_NCL:
516 case ColorSpace::MatrixID::BT2020_CL: 550 case ColorSpace::MatrixID::BT2020_CL:
517 case ColorSpace::MatrixID::YDZDX: 551 case ColorSpace::MatrixID::YDZDX:
552 case ColorSpace::MatrixID::UNKNOWN:
518 return Transform(255.0f / 219.0f, 0.0f, 0.0f, -16.0f / 219.0f, // 1 553 return Transform(255.0f / 219.0f, 0.0f, 0.0f, -16.0f / 219.0f, // 1
519 0.0f, 255.0f / 224.0f, 0.0f, -15.5f / 224.0f, // 2 554 0.0f, 255.0f / 224.0f, 0.0f, -15.5f / 224.0f, // 2
520 0.0f, 0.0f, 255.0f / 224.0f, -15.5f / 224.0f, // 3 555 0.0f, 0.0f, 255.0f / 224.0f, -15.5f / 224.0f, // 3
521 0.0f, 0.0f, 0.0f, 1.0f); // 4 556 0.0f, 0.0f, 0.0f, 1.0f); // 4
522 } 557 }
523 NOTREACHED(); 558 NOTREACHED();
524 return Transform(); 559 return Transform();
525 } 560 }
526 561
527 class ColorSpaceToColorSpaceTransform : public ColorTransform { 562 class ColorSpaceToColorSpaceTransform : public ColorTransform {
(...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after
699 std::unique_ptr<ColorTransform>( 734 std::unique_ptr<ColorTransform>(
700 new QCMSColorTransform(GetXYZD50Profile(), to_profile)))); 735 new QCMSColorTransform(GetXYZD50Profile(), to_profile))));
701 } else { 736 } else {
702 return std::unique_ptr<ColorTransform>( 737 return std::unique_ptr<ColorTransform>(
703 new ColorSpaceToColorSpaceTransform(from, to, intent)); 738 new ColorSpaceToColorSpaceTransform(from, to, intent));
704 } 739 }
705 } 740 }
706 } 741 }
707 742
708 } // namespace gfx 743 } // namespace gfx
OLDNEW
« ui/gfx/color_space.h ('K') | « ui/gfx/color_space.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698