OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 // WARNING! This file is copied from third_party/skia/tools/skpdiff and slightly | 5 // WARNING! This file is copied from third_party/skia/tools/skpdiff and slightly |
6 // modified to be compilable outside Skia and suit chromium style. Some comments | 6 // modified to be compilable outside Skia and suit chromium style. Some comments |
7 // can make no sense. | 7 // can make no sense. |
8 // TODO(elizavetai): remove this file and reuse the original one in Skia | 8 // TODO(elizavetai): remove this file and reuse the original one in Skia |
9 | 9 |
10 #include <cmath> | 10 #include <cmath> |
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
132 return false; | 132 return false; |
133 } | 133 } |
134 bitmap = &bm8888; | 134 bitmap = &bm8888; |
135 } | 135 } |
136 | 136 |
137 int width = bitmap->width(); | 137 int width = bitmap->width(); |
138 int height = bitmap->height(); | 138 int height = bitmap->height(); |
139 DCHECK(outImageLAB->width == width); | 139 DCHECK(outImageLAB->width == width); |
140 DCHECK(outImageLAB->height == height); | 140 DCHECK(outImageLAB->height == height); |
141 | 141 |
142 bitmap->lockPixels(); | |
143 RGB rgb; | 142 RGB rgb; |
144 LAB lab; | 143 LAB lab; |
145 for (int y = 0; y < height; y++) { | 144 for (int y = 0; y < height; y++) { |
146 unsigned char* row = (unsigned char*)bitmap->getAddr(0, y); | 145 unsigned char* row = (unsigned char*)bitmap->getAddr(0, y); |
147 for (int x = 0; x < width; x++) { | 146 for (int x = 0; x < width; x++) { |
148 // Perform gamma correction which is assumed to be 2.2 | 147 // Perform gamma correction which is assumed to be 2.2 |
149 rgb.r = SkPMetricUtil::get_gamma(row[x * 4 + 2]); | 148 rgb.r = SkPMetricUtil::get_gamma(row[x * 4 + 2]); |
150 rgb.g = SkPMetricUtil::get_gamma(row[x * 4 + 1]); | 149 rgb.g = SkPMetricUtil::get_gamma(row[x * 4 + 1]); |
151 rgb.b = SkPMetricUtil::get_gamma(row[x * 4 + 0]); | 150 rgb.b = SkPMetricUtil::get_gamma(row[x * 4 + 0]); |
152 adobergb_to_cielab(rgb.r, rgb.g, rgb.b, &lab); | 151 adobergb_to_cielab(rgb.r, rgb.g, rgb.b, &lab); |
153 outImageLAB->writePixel(x, y, lab); | 152 outImageLAB->writePixel(x, y, lab); |
154 } | 153 } |
155 } | 154 } |
156 bitmap->unlockPixels(); | |
157 return true; | 155 return true; |
158 } | 156 } |
159 | 157 |
160 // From Barten SPIE 1989 | 158 // From Barten SPIE 1989 |
161 static float contrast_sensitivity(float cyclesPerDegree, float luminance) { | 159 static float contrast_sensitivity(float cyclesPerDegree, float luminance) { |
162 float a = 440.0f * powf(1.0f + 0.7f / luminance, -0.2f); | 160 float a = 440.0f * powf(1.0f + 0.7f / luminance, -0.2f); |
163 float b = 0.3f * powf(1.0f + 100.0f / luminance, 0.15f); | 161 float b = 0.3f * powf(1.0f + 100.0f / luminance, 0.15f); |
164 float exp = expf(-b * cyclesPerDegree); | 162 float exp = expf(-b * cyclesPerDegree); |
165 float root = sqrtf(1.0f + 0.06f * expf(b * cyclesPerDegree)); | 163 float root = sqrtf(1.0f + 0.06f * expf(b * cyclesPerDegree)); |
166 if (!SkScalarIsFinite(exp) || !SkScalarIsFinite(root)) { | 164 if (!SkScalarIsFinite(exp) || !SkScalarIsFinite(root)) { |
(...skipping 304 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
471 if (!bitmap_to_cielab(baseline, &baselineLAB) || | 469 if (!bitmap_to_cielab(baseline, &baselineLAB) || |
472 !bitmap_to_cielab(test, &testLAB)) { | 470 !bitmap_to_cielab(test, &testLAB)) { |
473 return true; | 471 return true; |
474 } | 472 } |
475 | 473 |
476 result->poiCount = 0; | 474 result->poiCount = 0; |
477 result->result = pmetric(&baselineLAB, &testLAB, &result->poiCount); | 475 result->result = pmetric(&baselineLAB, &testLAB, &result->poiCount); |
478 | 476 |
479 return true; | 477 return true; |
480 } | 478 } |
OLD | NEW |