summaryrefslogtreecommitdiff
path: root/fitz
diff options
context:
space:
mode:
Diffstat (limited to 'fitz')
-rw-r--r--fitz/fitz.h29
-rw-r--r--fitz/image_jpeg.c2
-rw-r--r--fitz/image_jpx.c2
-rw-r--r--fitz/image_png.c2
-rw-r--r--fitz/image_tiff.c2
-rw-r--r--fitz/res_bitmap.c9
-rw-r--r--fitz/res_font.c2
-rw-r--r--fitz/res_halftone.c5
-rw-r--r--fitz/res_pixmap.c18
-rw-r--r--fitz/stm_buffer.c5
-rw-r--r--fitz/stm_open.c2
11 files changed, 41 insertions, 37 deletions
diff --git a/fitz/fitz.h b/fitz/fitz.h
index 65fd47de..997e5658 100644
--- a/fitz/fitz.h
+++ b/fitz/fitz.h
@@ -720,7 +720,7 @@ struct fz_buffer_s
};
fz_buffer *fz_new_buffer(fz_context *ctx, int size);
-fz_buffer *fz_keep_buffer(fz_buffer *buf);
+fz_buffer *fz_keep_buffer(fz_context *ctx, fz_buffer *buf);
void fz_drop_buffer(fz_context *ctx, fz_buffer *buf);
void fz_resize_buffer(fz_context *ctx, fz_buffer *buf, int size);
@@ -936,6 +936,8 @@ struct fz_pixmap_s
int free_samples;
};
+fz_bbox fz_bound_pixmap(fz_pixmap *pix);
+
fz_pixmap *fz_new_pixmap_with_data(fz_context *ctx, fz_colorspace *colorspace, int w, int h, unsigned char *samples);
fz_pixmap *fz_new_pixmap_with_rect(fz_context *ctx, fz_colorspace *, fz_bbox bbox);
fz_pixmap *fz_new_pixmap_with_rect_and_data(fz_context *ctx, fz_colorspace *, fz_bbox bbox, unsigned char *samples);
@@ -943,17 +945,16 @@ fz_pixmap *fz_new_pixmap(fz_context *ctx, fz_colorspace *, int w, int h);
fz_pixmap *fz_keep_pixmap(fz_context *ctx, fz_pixmap *pix);
void fz_drop_pixmap(fz_context *ctx, fz_pixmap *pix);
void fz_free_pixmap_imp(fz_context *ctx, fz_storable *pix);
-void fz_clear_pixmap(fz_pixmap *pix);
-void fz_clear_pixmap_with_color(fz_pixmap *pix, int value);
-void fz_clear_pixmap_rect_with_color(fz_pixmap *pix, int value, fz_bbox r);
-void fz_copy_pixmap_rect(fz_pixmap *dest, fz_pixmap *src, fz_bbox r);
-void fz_premultiply_pixmap(fz_pixmap *pix);
-void fz_unmultiply_pixmap(fz_pixmap *pix);
+void fz_clear_pixmap(fz_context *ctx, fz_pixmap *pix);
+void fz_clear_pixmap_with_color(fz_context *ctx, fz_pixmap *pix, int value);
+void fz_clear_pixmap_rect_with_color(fz_context *ctx, fz_pixmap *pix, int value, fz_bbox r);
+void fz_copy_pixmap_rect(fz_context *ctx, fz_pixmap *dest, fz_pixmap *src, fz_bbox r);
+void fz_premultiply_pixmap(fz_context *ctx, fz_pixmap *pix);
+void fz_unmultiply_pixmap(fz_context *ctx, fz_pixmap *pix);
fz_pixmap *fz_alpha_from_gray(fz_context *ctx, fz_pixmap *gray, int luminosity);
-fz_bbox fz_bound_pixmap(fz_pixmap *pix);
-void fz_invert_pixmap(fz_pixmap *pix);
-void fz_gamma_pixmap(fz_pixmap *pix, float gamma);
-unsigned int fz_pixmap_size(fz_pixmap *pix);
+void fz_invert_pixmap(fz_context *ctx, fz_pixmap *pix);
+void fz_gamma_pixmap(fz_context *ctx, fz_pixmap *pix, float gamma);
+unsigned int fz_pixmap_size(fz_context *ctx, fz_pixmap *pix);
fz_pixmap *fz_scale_pixmap(fz_context *ctx, fz_pixmap *src, float x, float y, float w, float h, fz_bbox *clip);
@@ -982,8 +983,8 @@ struct fz_bitmap_s
};
fz_bitmap *fz_new_bitmap(fz_context *ctx, int w, int h, int n);
-fz_bitmap *fz_keep_bitmap(fz_bitmap *bit);
-void fz_clear_bitmap(fz_bitmap *bit);
+fz_bitmap *fz_keep_bitmap(fz_context *ctx, fz_bitmap *bit);
+void fz_clear_bitmap(fz_context *ctx, fz_bitmap *bit);
void fz_drop_bitmap(fz_context *ctx, fz_bitmap *bit);
void fz_write_pbm(fz_context *ctx, fz_bitmap *bitmap, char *filename);
@@ -1004,7 +1005,7 @@ struct fz_halftone_s
fz_halftone *fz_new_halftone(fz_context *ctx, int num_comps);
fz_halftone *fz_get_default_halftone(fz_context *ctx, int num_comps);
-fz_halftone *fz_keep_halftone(fz_halftone *half);
+fz_halftone *fz_keep_halftone(fz_context *ctx, fz_halftone *half);
void fz_drop_halftone(fz_context *ctx, fz_halftone *half);
fz_bitmap *fz_halftone_pixmap(fz_context *ctx, fz_pixmap *pix, fz_halftone *ht);
diff --git a/fitz/image_jpeg.c b/fitz/image_jpeg.c
index f2688d46..f53b6124 100644
--- a/fitz/image_jpeg.c
+++ b/fitz/image_jpeg.c
@@ -115,7 +115,7 @@ fz_load_jpeg(fz_context *ctx, unsigned char *rbuf, int rlen)
image->yres = cinfo.Y_density * 254 / 100;
}
- fz_clear_pixmap(image);
+ fz_clear_pixmap(ctx, image);
row[0] = fz_malloc(ctx, cinfo.output_components * cinfo.output_width);
dp = image->samples;
diff --git a/fitz/image_jpx.c b/fitz/image_jpx.c
index b49b2625..4d76b4e8 100644
--- a/fitz/image_jpx.c
+++ b/fitz/image_jpx.c
@@ -148,7 +148,7 @@ fz_load_jpx(fz_context *ctx, unsigned char *data, int size, fz_colorspace *defcs
fz_drop_pixmap(ctx, img);
img = tmp;
}
- fz_premultiply_pixmap(img);
+ fz_premultiply_pixmap(ctx, img);
}
opj_image_destroy(jpx);
diff --git a/fitz/image_png.c b/fitz/image_png.c
index feaadb52..b3fe39cc 100644
--- a/fitz/image_png.c
+++ b/fitz/image_png.c
@@ -556,7 +556,7 @@ fz_load_png(fz_context *ctx, unsigned char *p, int total)
png_mask_transparency(&png, image);
if (png.transparency || png.n == 2 || png.n == 4)
- fz_premultiply_pixmap(image);
+ fz_premultiply_pixmap(png.ctx, image);
fz_free(png.ctx, png.samples);
diff --git a/fitz/image_tiff.c b/fitz/image_tiff.c
index e476db33..fff91a9e 100644
--- a/fitz/image_tiff.c
+++ b/fitz/image_tiff.c
@@ -795,7 +795,7 @@ fz_load_tiff(fz_context *ctx, unsigned char *buf, int len)
fz_drop_pixmap(ctx, image);
image = rgb;
}
- fz_premultiply_pixmap(image);
+ fz_premultiply_pixmap(ctx, image);
}
}
fz_always(ctx)
diff --git a/fitz/res_bitmap.c b/fitz/res_bitmap.c
index c381fc3c..2aa28b02 100644
--- a/fitz/res_bitmap.c
+++ b/fitz/res_bitmap.c
@@ -20,10 +20,11 @@ fz_new_bitmap(fz_context *ctx, int w, int h, int n)
}
fz_bitmap *
-fz_keep_bitmap(fz_bitmap *pix)
+fz_keep_bitmap(fz_context *ctx, fz_bitmap *bit)
{
- pix->refs++;
- return pix;
+ if (bit)
+ bit->refs++;
+ return bit;
}
void
@@ -37,7 +38,7 @@ fz_drop_bitmap(fz_context *ctx, fz_bitmap *bit)
}
void
-fz_clear_bitmap(fz_bitmap *bit)
+fz_clear_bitmap(fz_context *ctx, fz_bitmap *bit)
{
memset(bit->samples, 0, bit->stride * bit->h);
}
diff --git a/fitz/res_font.c b/fitz/res_font.c
index 9f1bc73b..47dc96d5 100644
--- a/fitz/res_font.c
+++ b/fitz/res_font.c
@@ -698,7 +698,7 @@ fz_render_t3_glyph(fz_context *ctx, fz_font *font, int gid, fz_matrix trm, fz_co
bbox.y1++;
glyph = fz_new_pixmap_with_rect(ctx, model ? model : fz_device_gray, bbox);
- fz_clear_pixmap(glyph);
+ fz_clear_pixmap(ctx, glyph);
ctm = fz_concat(font->t3matrix, trm);
dev = fz_new_draw_device_type3(ctx, glyph);
diff --git a/fitz/res_halftone.c b/fitz/res_halftone.c
index b1b8d7b4..7258ad01 100644
--- a/fitz/res_halftone.c
+++ b/fitz/res_halftone.c
@@ -16,9 +16,10 @@ fz_new_halftone(fz_context *ctx, int comps)
}
fz_halftone *
-fz_keep_halftone(fz_halftone *ht)
+fz_keep_halftone(fz_context *ctx, fz_halftone *ht)
{
- ht->refs++;
+ if (ht)
+ ht->refs++;
return ht;
}
diff --git a/fitz/res_pixmap.c b/fitz/res_pixmap.c
index 1998c7fc..69ae18ea 100644
--- a/fitz/res_pixmap.c
+++ b/fitz/res_pixmap.c
@@ -112,13 +112,13 @@ fz_bound_pixmap(fz_pixmap *pix)
}
void
-fz_clear_pixmap(fz_pixmap *pix)
+fz_clear_pixmap(fz_context *ctx, fz_pixmap *pix)
{
memset(pix->samples, 0, pix->w * pix->h * pix->n);
}
void
-fz_clear_pixmap_with_color(fz_pixmap *pix, int value)
+fz_clear_pixmap_with_color(fz_context *ctx, fz_pixmap *pix, int value)
{
if (value == 255)
memset(pix->samples, 255, pix->w * pix->h * pix->n);
@@ -139,7 +139,7 @@ fz_clear_pixmap_with_color(fz_pixmap *pix, int value)
}
void
-fz_copy_pixmap_rect(fz_pixmap *dest, fz_pixmap *src, fz_bbox r)
+fz_copy_pixmap_rect(fz_context *ctx, fz_pixmap *dest, fz_pixmap *src, fz_bbox r)
{
const unsigned char *srcp;
unsigned char *destp;
@@ -167,7 +167,7 @@ fz_copy_pixmap_rect(fz_pixmap *dest, fz_pixmap *src, fz_bbox r)
}
void
-fz_clear_pixmap_rect_with_color(fz_pixmap *dest, int value, fz_bbox r)
+fz_clear_pixmap_rect_with_color(fz_context *ctx, fz_pixmap *dest, int value, fz_bbox r)
{
unsigned char *destp;
int x, y, w, k, destspan;
@@ -203,7 +203,7 @@ fz_clear_pixmap_rect_with_color(fz_pixmap *dest, int value, fz_bbox r)
}
void
-fz_premultiply_pixmap(fz_pixmap *pix)
+fz_premultiply_pixmap(fz_context *ctx, fz_pixmap *pix)
{
unsigned char *s = pix->samples;
unsigned char a;
@@ -222,7 +222,7 @@ fz_premultiply_pixmap(fz_pixmap *pix)
}
void
-fz_unmultiply_pixmap(fz_pixmap *pix)
+fz_unmultiply_pixmap(fz_context *ctx, fz_pixmap *pix)
{
unsigned char *s = pix->samples;
int a, inva;
@@ -267,7 +267,7 @@ fz_alpha_from_gray(fz_context *ctx, fz_pixmap *gray, int luminosity)
}
void
-fz_invert_pixmap(fz_pixmap *pix)
+fz_invert_pixmap(fz_context *ctx, fz_pixmap *pix)
{
unsigned char *s = pix->samples;
int k, x, y;
@@ -284,7 +284,7 @@ fz_invert_pixmap(fz_pixmap *pix)
}
void
-fz_gamma_pixmap(fz_pixmap *pix, float gamma)
+fz_gamma_pixmap(fz_context *ctx, fz_pixmap *pix, float gamma)
{
unsigned char gamma_map[256];
unsigned char *s = pix->samples;
@@ -543,7 +543,7 @@ fz_write_png(fz_context *ctx, fz_pixmap *pixmap, char *filename, int savealpha)
}
unsigned int
-fz_pixmap_size(fz_pixmap * pix)
+fz_pixmap_size(fz_context *ctx, fz_pixmap * pix)
{
if (pix == NULL)
return 0;
diff --git a/fitz/stm_buffer.c b/fitz/stm_buffer.c
index f01e5b19..7f9d521d 100644
--- a/fitz/stm_buffer.c
+++ b/fitz/stm_buffer.c
@@ -25,9 +25,10 @@ fz_new_buffer(fz_context *ctx, int size)
}
fz_buffer *
-fz_keep_buffer(fz_buffer *buf)
+fz_keep_buffer(fz_context *ctx, fz_buffer *buf)
{
- buf->refs ++;
+ if (buf)
+ buf->refs ++;
return buf;
}
diff --git a/fitz/stm_open.c b/fitz/stm_open.c
index 37230243..6a987103 100644
--- a/fitz/stm_open.c
+++ b/fitz/stm_open.c
@@ -162,7 +162,7 @@ fz_open_buffer(fz_context *ctx, fz_buffer *buf)
{
fz_stream *stm;
- fz_keep_buffer(buf);
+ fz_keep_buffer(ctx, buf);
stm = fz_new_stream(ctx, buf, read_buffer, close_buffer);
stm->seek = seek_buffer;