Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source/blender/blenkernel/intern/colortools.c10
-rw-r--r--source/blender/makesdna/DNA_color_types.h3
2 files changed, 13 insertions, 0 deletions
diff --git a/source/blender/blenkernel/intern/colortools.c b/source/blender/blenkernel/intern/colortools.c
index 76f610c0d79..e2cb0118e50 100644
--- a/source/blender/blenkernel/intern/colortools.c
+++ b/source/blender/blenkernel/intern/colortools.c
@@ -637,6 +637,11 @@ void curvemapping_premultiply(CurveMapping *cumap, int restore)
MEM_freeN(cumap->cm[a].table);
cumap->cm[a].table = cumap->cm[a].premultable;
cumap->cm[a].premultable = NULL;
+
+ copy_v2_v2(cumap->cm[a].ext_in, cumap->cm[a].premul_ext_in);
+ copy_v2_v2(cumap->cm[a].ext_out, cumap->cm[a].premul_ext_out);
+ zero_v2(cumap->cm[a].premul_ext_in);
+ zero_v2(cumap->cm[a].premul_ext_out);
}
cumap->flag &= ~CUMA_PREMULLED;
@@ -662,6 +667,11 @@ void curvemapping_premultiply(CurveMapping *cumap, int restore)
for (b = 0; b <= CM_TABLE; b++) {
cumap->cm[a].table[b].y = curvemap_evaluateF(cumap->cm + 3, cumap->cm[a].table[b].y);
}
+
+ copy_v2_v2(cumap->cm[a].premul_ext_in, cumap->cm[a].ext_in);
+ copy_v2_v2(cumap->cm[a].premul_ext_out, cumap->cm[a].ext_out);
+ mul_v2_v2(cumap->cm[a].ext_in, cumap->cm[3].ext_in);
+ mul_v2_v2(cumap->cm[a].ext_out, cumap->cm[3].ext_out);
}
cumap->flag |= CUMA_PREMULLED;
diff --git a/source/blender/makesdna/DNA_color_types.h b/source/blender/makesdna/DNA_color_types.h
index 50bbc04ccb1..e3731129632 100644
--- a/source/blender/makesdna/DNA_color_types.h
+++ b/source/blender/makesdna/DNA_color_types.h
@@ -60,7 +60,10 @@ typedef struct CurveMap {
float ext_in[2], ext_out[2]; /* for extrapolated curves, the direction vector */
CurveMapPoint *curve; /* actual curve */
CurveMapPoint *table; /* display and evaluate table */
+
CurveMapPoint *premultable; /* for RGB curves, premulled table */
+ float premul_ext_in[2]; /* for RGB curves, premulled extrapolation vector */
+ float premul_ext_out[2];
} CurveMap;
/* cuma->flag */