Remove skcms_BestSingleCurve
Not used. Use skcms_EnsureUsableAsDestinationWithSingleCurve instead.
Change-Id: I4e816a9016cda6e90c54374fb21152a0b80bde09
Reviewed-on: https://skia-review.googlesource.com/123580
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
diff --git a/skcms.h b/skcms.h
index 32c30cb..af0801a 100644
--- a/skcms.h
+++ b/skcms.h
@@ -130,10 +130,6 @@
bool skcms_ApproximateCurve(const skcms_Curve* curve, skcms_TransferFunction* approx,
float* max_error);
-// What is the best single transfer function to use for the given profile? Note that there is
-// no real upper bound on the error of this transfer function.
-skcms_TransferFunction skcms_BestSingleCurve(const skcms_ICCProfile*);
-
typedef struct skcms_ICCTag {
uint32_t signature;
uint32_t type;
diff --git a/src/TransferFunction.c b/src/TransferFunction.c
index 345b9aa..c87e069 100644
--- a/src/TransferFunction.c
+++ b/src/TransferFunction.c
@@ -321,47 +321,3 @@
}
return isfinitef_(*max_error);
}
-
-static float max_error_over_curve(const skcms_TransferFunction* tf, const skcms_Curve* curve) {
- int N = curve->table_entries ? (int)curve->table_entries : 256;
- const float x_scale = 1.0f / (N - 1);
- float err = 0;
- for (int i = 0; i < N; i++) {
- float x = i * x_scale;
- err = fmaxf_(err, fabsf_(skcms_eval_curve(x, curve) - skcms_TransferFunction_eval(tf, x)));
- }
- return err;
-}
-
-skcms_TransferFunction skcms_BestSingleCurve(const skcms_ICCProfile* profile) {
- if (!profile || !profile->has_trc) {
- return skcms_sRGB_profile.trc[0].parametric;
- }
-
- skcms_TransferFunction tf[3];
- for (int i = 0; i < 3; ++i) {
- if (profile->trc[i].table_entries) {
- float max_error;
- if (!skcms_ApproximateCurve(&profile->trc[i], &tf[i], &max_error)) {
- return skcms_sRGB_profile.trc[0].parametric;
- }
- } else {
- tf[i] = profile->trc[i].parametric;
- }
- }
-
- int best_tf = 0;
- float min_max_error = INFINITY_;
- for (int i = 0; i < 3; ++i) {
- float err = 0;
- for (int j = 0; j < 3; ++j) {
- err = fmaxf_(err, max_error_over_curve(&tf[i], &profile->trc[j]));
- }
- if (min_max_error > err) {
- min_max_error = err;
- best_tf = i;
- }
- }
-
- return tf[best_tf];
-}