summaryrefslogtreecommitdiff
path: root/source/fitz/colorspace.c
diff options
context:
space:
mode:
authorRobin Watts <robin.watts@artifex.com>2017-06-29 12:24:00 +0100
committerRobin Watts <robin.watts@artifex.com>2017-07-04 11:01:00 +0100
commitb9076389f1ede0479d7e48676c60f4c0cc0d6c9a (patch)
tree6d32e662dcfc681d2bd9b091b99ee317d417e96f /source/fitz/colorspace.c
parentc87bc4ed995b8dcf50277169fbd00cf6e0a640c8 (diff)
downloadmupdf-b9076389f1ede0479d7e48676c60f4c0cc0d6c9a.tar.xz
Remove is_static from fz_new{,_icc}_colorspace.
No longer required, and causes leaks. Also, fix some reference counting problems with colorspaces.
Diffstat (limited to 'source/fitz/colorspace.c')
-rw-r--r--source/fitz/colorspace.c26
1 files changed, 13 insertions, 13 deletions
diff --git a/source/fitz/colorspace.c b/source/fitz/colorspace.c
index ce608ef0..2cb5c3d9 100644
--- a/source/fitz/colorspace.c
+++ b/source/fitz/colorspace.c
@@ -154,10 +154,10 @@ clamp_default(const fz_colorspace *cs, const float *src, float *dst)
}
fz_colorspace *
-fz_new_colorspace(fz_context *ctx, char *name, int is_static, 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, 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, is_static ? -1 : 1, fz_drop_colorspace_imp);
+ FZ_INIT_STORABLE(cs, 1, fz_drop_colorspace_imp);
cs->size = sizeof(fz_colorspace) + size;
fz_strlcpy(cs->name, name, sizeof cs->name);
cs->n = n;
@@ -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, 1, NULL, "gray-icc");
- cct->rgb = fz_new_icc_colorspace(ctx, 1, 3, NULL, "rgb-icc");
- cct->bgr = fz_new_icc_colorspace(ctx, 1, 3, NULL, "bgr-icc");
- cct->cmyk = fz_new_icc_colorspace(ctx, 1, 4, NULL, "cmyk-icc");
- cct->lab = fz_new_icc_colorspace(ctx, 1, 3, NULL, "lab-icc");
+ 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");
}
else
set_no_icc(cct);
@@ -778,7 +778,7 @@ void fz_drop_colorspace_context(fz_context *ctx)
{
fz_drop_colorspace(ctx, ctx->colorspace->gray);
fz_drop_colorspace(ctx, ctx->colorspace->rgb);
- /* FIXME: bgr */
+ fz_drop_colorspace(ctx, ctx->colorspace->bgr);
fz_drop_colorspace(ctx, ctx->colorspace->cmyk);
fz_drop_colorspace(ctx, ctx->colorspace->lab);
fz_drop_cmm_context(ctx);
@@ -2774,11 +2774,11 @@ fz_new_indexed_colorspace(fz_context *ctx, fz_colorspace *base, int high, unsign
idx = fz_malloc_struct(ctx, struct indexed);
idx->lookup = lookup;
- idx->base = base;
+ idx->base = fz_keep_colorspace(ctx, base);
idx->high = high;
fz_try(ctx)
- cs = fz_new_colorspace(ctx, "Indexed", 0, 1, 0, fz_colorspace_is_icc(ctx, fz_device_rgb(ctx)) ? indexed_to_alt : indexed_to_rgb, NULL, base_indexed, clamp_indexed, free_indexed, idx, sizeof(*idx) + (base->n * (idx->high + 1)) + base->size);
+ cs = fz_new_colorspace(ctx, "Indexed", 1, 0, fz_colorspace_is_icc(ctx, fz_device_rgb(ctx)) ? indexed_to_alt : indexed_to_rgb, NULL, base_indexed, clamp_indexed, free_indexed, idx, sizeof(*idx) + (base->n * (idx->high + 1)) + base->size);
fz_catch(ctx)
{
fz_free(ctx, idx);
@@ -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 is_static, int num, fz_buffer *buf, const char *name)
+fz_new_icc_colorspace(fz_context *ctx, int num, fz_buffer *buf, const char *name)
{
fz_colorspace *cs = NULL;
fz_iccprofile *profile;
@@ -3012,7 +3012,7 @@ fz_new_icc_colorspace(fz_context *ctx, int is_static, int num, fz_buffer *buf, c
{
fz_keep_buffer(ctx, buf);
fz_md5_icc(ctx, profile);
- cs = fz_new_colorspace(ctx, "icc", is_static, num, 0, NULL, NULL, NULL, is_lab ? clamp_lab_icc : clamp_default_icc, free_icc, profile, sizeof(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));
}
}
fz_catch(ctx)
@@ -3074,7 +3074,7 @@ fz_new_cal_colorspace(fz_context *ctx, float *wp, float *bp, float *gamma, float
cal_data->n = num;
fz_try(ctx)
- cs = fz_new_colorspace(ctx, "pdf-cal", 0, num, 0, NULL, NULL, NULL, NULL, free_cal, cal_data, sizeof(cal_data));
+ cs = fz_new_colorspace(ctx, "pdf-cal", num, 0, NULL, NULL, NULL, NULL, free_cal, cal_data, sizeof(cal_data));
fz_catch(ctx)
{
fz_free(ctx, cal_data);