summaryrefslogtreecommitdiff
path: root/source/fitz/colorspace.c
diff options
context:
space:
mode:
authorTor Andersson <tor.andersson@artifex.com>2017-07-14 13:53:17 +0200
committerRobin Watts <robin.watts@artifex.com>2017-07-17 19:32:06 +0100
commitefabbbe651d4bdd24ced305368215ef59230a6de (patch)
tree46a1c491349aa9d10036b7af2f1ff6574243f11c /source/fitz/colorspace.c
parenta072383d980fda364df6cd123383e9d1327430b7 (diff)
downloadmupdf-efabbbe651d4bdd24ced305368215ef59230a6de.tar.xz
Set colorspace name field.
Diffstat (limited to 'source/fitz/colorspace.c')
-rw-r--r--source/fitz/colorspace.c45
1 files changed, 23 insertions, 22 deletions
diff --git a/source/fitz/colorspace.c b/source/fitz/colorspace.c
index 0a6d2b91..6f010a13 100644
--- a/source/fitz/colorspace.c
+++ b/source/fitz/colorspace.c
@@ -79,25 +79,25 @@ fz_lookup_icc(fz_context *ctx, const char *name, size_t *size)
#ifndef NO_ICC
if (fz_get_cmm_engine(ctx) == NULL)
return *size = 0, NULL;
- if (!strcmp(name, "gray-icc")) {
+ if (!strcmp(name, FZ_ICC_PROFILE_GRAY)) {
extern const int fz_resources_icc_gray_icc_size;
extern const unsigned char fz_resources_icc_gray_icc[];
*size = fz_resources_icc_gray_icc_size;
return fz_resources_icc_gray_icc;
}
- if (!strcmp(name, "rgb-icc") || !strcmp(name, "bgr-icc")) {
+ if (!strcmp(name, FZ_ICC_PROFILE_RGB) || !strcmp(name, FZ_ICC_PROFILE_BGR)) {
extern const int fz_resources_icc_rgb_icc_size;
extern const unsigned char fz_resources_icc_rgb_icc[];
*size = fz_resources_icc_rgb_icc_size;
return fz_resources_icc_rgb_icc;
}
- if (!strcmp(name, "cmyk-icc")) {
+ if (!strcmp(name, FZ_ICC_PROFILE_CMYK)) {
extern const int fz_resources_icc_cmyk_icc_size;
extern const unsigned char fz_resources_icc_cmyk_icc[];
*size = fz_resources_icc_cmyk_icc_size;
return fz_resources_icc_cmyk_icc;
}
- if (!strcmp(name, "lab-icc")) {
+ if (!strcmp(name, FZ_ICC_PROFILE_LAB)) {
extern const int fz_resources_icc_lab_icc_size;
extern const unsigned char fz_resources_icc_lab_icc[];
*size = fz_resources_icc_lab_icc_size;
@@ -154,12 +154,12 @@ clamp_default(const fz_colorspace *cs, const float *src, float *dst)
}
fz_colorspace *
-fz_new_colorspace(fz_context *ctx, char *name, int n, int is_subtractive, fz_colorspace_convert_fn *to_ccs, fz_colorspace_convert_fn *from_ccs, fz_colorspace_base_fn *base, fz_colorspace_clamp_fn *clamp, fz_colorspace_destruct_fn *destruct, void *data, size_t size)
+fz_new_colorspace(fz_context *ctx, const char *name, int n, int is_subtractive, fz_colorspace_convert_fn *to_ccs, fz_colorspace_convert_fn *from_ccs, fz_colorspace_base_fn *base, fz_colorspace_clamp_fn *clamp, fz_colorspace_destruct_fn *destruct, void *data, size_t size)
{
fz_colorspace *cs = fz_malloc_struct(ctx, fz_colorspace);
FZ_INIT_STORABLE(cs, 1, fz_drop_colorspace_imp);
cs->size = sizeof(fz_colorspace) + size;
- fz_strlcpy(cs->name, name, sizeof cs->name);
+ fz_strlcpy(cs->name, name ? name : "UNKNOWN", sizeof cs->name);
cs->n = n;
cs->is_subtractive = is_subtractive;
cs->to_ccs = to_ccs;
@@ -726,11 +726,11 @@ void fz_set_cmm_engine(fz_context *ctx, const fz_cmm_engine *engine)
fz_new_cmm_context(ctx);
if (engine)
{
- cct->gray = fz_new_icc_colorspace(ctx, 1, NULL, "gray-icc");
- cct->rgb = fz_new_icc_colorspace(ctx, 3, NULL, "rgb-icc");
- cct->bgr = fz_new_icc_colorspace(ctx, 3, NULL, "bgr-icc");
- cct->cmyk = fz_new_icc_colorspace(ctx, 4, NULL, "cmyk-icc");
- cct->lab = fz_new_icc_colorspace(ctx, 3, NULL, "lab-icc");
+ cct->gray = fz_new_icc_colorspace(ctx, FZ_ICC_PROFILE_GRAY, 1, NULL);
+ cct->rgb = fz_new_icc_colorspace(ctx, FZ_ICC_PROFILE_RGB, 3, NULL);
+ cct->bgr = fz_new_icc_colorspace(ctx, FZ_ICC_PROFILE_BGR, 3, NULL);
+ cct->cmyk = fz_new_icc_colorspace(ctx, FZ_ICC_PROFILE_CMYK, 4, NULL);
+ cct->lab = fz_new_icc_colorspace(ctx, FZ_ICC_PROFILE_LAB, 3, NULL);
}
else
set_no_icc(cct);
@@ -2935,7 +2935,7 @@ int fz_colorspace_n(fz_context *ctx, const fz_colorspace *cs)
const char *fz_colorspace_name(fz_context *ctx, const fz_colorspace *cs)
{
- return cs ? cs->name : "";
+ return cs && cs->name ? cs->name : "";
}
static void
@@ -2978,7 +2978,7 @@ int fz_colorspace_is_lab_icc(fz_context *ctx, const fz_colorspace *cs)
}
fz_colorspace *
-fz_new_icc_colorspace(fz_context *ctx, int num, fz_buffer *buf, const char *name)
+fz_new_icc_colorspace(fz_context *ctx, const char *name, int num, fz_buffer *buf)
{
fz_colorspace *cs = NULL;
fz_iccprofile *profile;
@@ -2987,15 +2987,18 @@ fz_new_icc_colorspace(fz_context *ctx, int num, fz_buffer *buf, const char *name
profile = fz_malloc_struct(ctx, fz_iccprofile);
fz_try(ctx)
{
- profile->buffer = buf;
- if (name != NULL)
+ if (buf == NULL)
{
size_t size;
const unsigned char *data;
data = fz_lookup_icc(ctx, name, &size);
profile->buffer = fz_new_buffer_from_shared_data(ctx, data, size);
- is_lab = (strcmp(name, "lab-icc") == 0);
- profile->bgr = (strcmp(name, "bgr-icc") == 0);
+ is_lab = (strcmp(name, FZ_ICC_PROFILE_LAB) == 0);
+ profile->bgr = (strcmp(name, FZ_ICC_PROFILE_BGR) == 0);
+ }
+ else
+ {
+ profile->buffer = fz_keep_buffer(ctx, buf);
}
fz_cmm_init_profile(ctx, profile);
@@ -3003,16 +3006,14 @@ fz_new_icc_colorspace(fz_context *ctx, int num, fz_buffer *buf, const char *name
/* Check if correct type */
if (num != profile->num_devcomp)
{
- if (name != NULL)
- fz_drop_buffer(ctx, profile->buffer);
+ fz_drop_buffer(ctx, profile->buffer);
fz_cmm_fin_profile(ctx, profile);
fz_free(ctx, profile);
}
else
{
- fz_keep_buffer(ctx, buf);
fz_md5_icc(ctx, profile);
- cs = fz_new_colorspace(ctx, "icc", num, 0, NULL, NULL, NULL, is_lab ? clamp_lab_icc : clamp_default_icc, free_icc, profile, sizeof(profile));
+ cs = fz_new_colorspace(ctx, name, num, 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)
@@ -3064,7 +3065,7 @@ int fz_colorspace_is_cal(fz_context *ctx, const fz_colorspace *cs)
/* Profile created if needed during draw command. */
fz_colorspace *
-fz_new_cal_colorspace(fz_context *ctx, float *wp, float *bp, float *gamma, float *matrix)
+fz_new_cal_colorspace(fz_context *ctx, const char *name, float *wp, float *bp, float *gamma, float *matrix)
{
fz_colorspace *cs = NULL;
int num = (matrix == NULL ? 1 : 3);