summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libweston/color-lcms/color-transform.c31
-rw-r--r--shared/weston-assert.h3
2 files changed, 24 insertions, 10 deletions
diff --git a/libweston/color-lcms/color-transform.c b/libweston/color-lcms/color-transform.c
index d5af355f..318cd31e 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]);
@@ -514,6 +508,23 @@ translate_curve_element(struct cmlcms_color_transform *xform,
}
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)
{
_cmsStageMatrixData *data = cmsStageData(elem);
diff --git a/shared/weston-assert.h b/shared/weston-assert.h
index 909c9997..52434fd0 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", !=)