diff --git a/libweston/color-lcms/color-transform.c b/libweston/color-lcms/color-transform.c index d5af355f7..318cd31e5 100644 --- a/libweston/color-lcms/color-transform.c +++ b/libweston/color-lcms/color-transform.c @@ -470,22 +470,15 @@ enum color_transform_step { }; static bool -translate_curve_element(struct cmlcms_color_transform *xform, - cmsStage *elem, enum color_transform_step step) +translate_curve_element_LUT(struct cmlcms_color_transform *xform, + _cmsStageToneCurvesData *trc_data, + enum color_transform_step step) { struct weston_compositor *compositor = xform->base.cm->compositor; struct weston_color_curve *curve; cmsToneCurve **stash; - _cmsStageToneCurvesData *trc_data; unsigned i; - weston_assert_uint64_eq(compositor, cmsStageType(elem), - cmsSigCurveSetElemType); - - trc_data = cmsStageData(elem); - if (trc_data->nCurves != 3) - return false; - switch(step) { case PRE_CURVE: curve = &xform->base.pre_curve; @@ -505,6 +498,7 @@ translate_curve_element(struct cmlcms_color_transform *xform, curve->type = WESTON_COLOR_CURVE_TYPE_LUT_3x1D; curve->u.lut_3x1d.optimal_len = cmlcms_reasonable_1D_points(); + weston_assert_uint32_eq(compositor, trc_data->nCurves, 3); for (i = 0; i < 3; i++) { stash[i] = cmsDupToneCurve(trc_data->TheCurves[i]); abort_oom_if_null(stash[i]); @@ -513,6 +507,23 @@ translate_curve_element(struct cmlcms_color_transform *xform, return true; } +static bool +translate_curve_element(struct cmlcms_color_transform *xform, + cmsStage *elem, enum color_transform_step step) +{ + struct weston_compositor *compositor = xform->base.cm->compositor; + _cmsStageToneCurvesData *trc_data; + + weston_assert_uint64_eq(compositor, cmsStageType(elem), + cmsSigCurveSetElemType); + + trc_data = cmsStageData(elem); + if (trc_data->nCurves != 3) + return false; + + return translate_curve_element_LUT(xform, trc_data, step); +} + static bool translate_matrix_element(struct weston_color_mapping *map, cmsStage *elem) { diff --git a/shared/weston-assert.h b/shared/weston-assert.h index 909c9997c..52434fd04 100644 --- a/shared/weston-assert.h +++ b/shared/weston-assert.h @@ -97,6 +97,9 @@ do { \ #define weston_assert_double_eq(compositor, a, b) \ weston_assert_(compositor, a, b, double, "%.10g", ==) +#define weston_assert_uint32_eq(compositor, a, b) \ + weston_assert_(compositor, a, b, uint32_t, "%u", ==) + #define weston_assert_uint32_neq(compositor, a, b) \ weston_assert_(compositor, a, b, uint32_t, "%u", !=)