summaryrefslogtreecommitdiff
path: root/source/fitz/colorspace.c
diff options
context:
space:
mode:
authorRobin Watts <robin.watts@artifex.com>2017-07-20 15:02:33 +0100
committerRobin Watts <robin.watts@artifex.com>2017-09-08 17:48:08 +0100
commit1ee558b4c2f84e983cc6befe203bc7b7eab95e00 (patch)
tree03968ae8866cb4bd0f579e1c64b66eadbd735f46 /source/fitz/colorspace.c
parentd98776cdbcdd3abddf2185261df6b2f8c3ad01c2 (diff)
downloadmupdf-1ee558b4c2f84e983cc6befe203bc7b7eab95e00.tar.xz
Ensure colorspace colorants are named for ICC spaces too.
Diffstat (limited to 'source/fitz/colorspace.c')
-rw-r--r--source/fitz/colorspace.c43
1 files changed, 36 insertions, 7 deletions
diff --git a/source/fitz/colorspace.c b/source/fitz/colorspace.c
index 3e322bd9..98f7614e 100644
--- a/source/fitz/colorspace.c
+++ b/source/fitz/colorspace.c
@@ -3640,15 +3640,44 @@ fz_new_icc_colorspace(fz_context *ctx, const char *name, int num, fz_buffer *buf
fz_drop_buffer(ctx, profile->buffer);
fz_cmm_fin_profile(ctx, profile);
fz_free(ctx, profile);
+ break;
}
- else
- {
- fz_md5_icc(ctx, profile);
- cs = fz_new_colorspace(ctx, name, num, 0, 0, NULL, NULL, NULL, is_lab ? clamp_lab_icc : clamp_default_icc, free_icc, profile, sizeof(profile));
- /* This is a bit of a handwave, but should be safe for our cases */
- if (profile->num_devcomp == 4)
- cs->is_subtractive = 1;
+ fz_md5_icc(ctx, profile);
+ cs = fz_new_colorspace(ctx, name, num, 0, 0, NULL, NULL, NULL, is_lab ? clamp_lab_icc : clamp_default_icc, free_icc, profile, sizeof(profile));
+
+ switch(profile->num_devcomp)
+ {
+ case 1:
+ fz_colorspace_name_colorant(ctx, cs, 0, "Gray");
+ break;
+ case 3:
+ if (is_lab)
+ {
+ fz_colorspace_name_colorant(ctx, cs, 0, "L");
+ fz_colorspace_name_colorant(ctx, cs, 1, "a");
+ fz_colorspace_name_colorant(ctx, cs, 2, "b");
+ }
+ else if (profile->bgr)
+ {
+ fz_colorspace_name_colorant(ctx, cs, 0, "Blue");
+ fz_colorspace_name_colorant(ctx, cs, 1, "Green");
+ fz_colorspace_name_colorant(ctx, cs, 2, "Red");
+ }
+ else
+ {
+ fz_colorspace_name_colorant(ctx, cs, 0, "Red");
+ fz_colorspace_name_colorant(ctx, cs, 1, "Green");
+ fz_colorspace_name_colorant(ctx, cs, 2, "Blue");
+ }
+ break;
+ case 4:
+ fz_colorspace_name_colorant(ctx, cs, 0, "Cyan");
+ fz_colorspace_name_colorant(ctx, cs, 1, "Magenta");
+ fz_colorspace_name_colorant(ctx, cs, 2, "Yellow");
+ fz_colorspace_name_colorant(ctx, cs, 3, "Black");
+ cs->is_subtractive = 1;
+ break;
}
}
fz_catch(ctx)