summaryrefslogtreecommitdiff
path: root/pdf/pdf_cmap.c
diff options
context:
space:
mode:
authorRobin Watts <robin.watts@artifex.com>2011-09-14 17:36:57 +0100
committerRobin Watts <Robin.Watts@artifex.com>2011-09-15 14:50:17 +0100
commitb51ef0eea028c73b6379e832eaa34fff3fbbb927 (patch)
tree1ab685ccd356e7fdc832b2e3322c0486b2670cfb /pdf/pdf_cmap.c
parent89ae81f651bfa112b8e07317eb6983beaf7cb212 (diff)
downloadmupdf-b51ef0eea028c73b6379e832eaa34fff3fbbb927.tar.xz
Add context to mupdf.
Huge pervasive change to lots of files, adding a context for exception handling and allocation. In time we'll move more statics into there. Also fix some for(i = 0; i < function(...); i++) calls.
Diffstat (limited to 'pdf/pdf_cmap.c')
-rw-r--r--pdf/pdf_cmap.c60
1 files changed, 30 insertions, 30 deletions
diff --git a/pdf/pdf_cmap.c b/pdf/pdf_cmap.c
index 2c5048ae..0c446470 100644
--- a/pdf/pdf_cmap.c
+++ b/pdf/pdf_cmap.c
@@ -31,11 +31,11 @@
*/
pdf_cmap *
-pdf_new_cmap(void)
+pdf_new_cmap(fz_context *ctx)
{
pdf_cmap *cmap;
- cmap = fz_malloc(sizeof(pdf_cmap));
+ cmap = fz_malloc(ctx, sizeof(pdf_cmap));
cmap->refs = 1;
strcpy(cmap->cmap_name, "");
@@ -64,28 +64,28 @@ pdf_keep_cmap(pdf_cmap *cmap)
}
void
-pdf_drop_cmap(pdf_cmap *cmap)
+pdf_drop_cmap(fz_context *ctx, pdf_cmap *cmap)
{
if (cmap->refs >= 0)
{
if (--cmap->refs == 0)
{
if (cmap->usecmap)
- pdf_drop_cmap(cmap->usecmap);
- fz_free(cmap->ranges);
- fz_free(cmap->table);
- fz_free(cmap);
+ pdf_drop_cmap(ctx, cmap->usecmap);
+ fz_free(ctx, cmap->ranges);
+ fz_free(ctx, cmap->table);
+ fz_free(ctx, cmap);
}
}
}
void
-pdf_set_usecmap(pdf_cmap *cmap, pdf_cmap *usecmap)
+pdf_set_usecmap(fz_context *ctx, pdf_cmap *cmap, pdf_cmap *usecmap)
{
int i;
if (cmap->usecmap)
- pdf_drop_cmap(cmap->usecmap);
+ pdf_drop_cmap(ctx, cmap->usecmap);
cmap->usecmap = pdf_keep_cmap(usecmap);
if (cmap->codespace_len == 0)
@@ -179,7 +179,7 @@ pdf_add_codespace(pdf_cmap *cmap, int low, int high, int n)
* Add an integer to the table.
*/
static void
-add_table(pdf_cmap *cmap, int value)
+add_table(fz_context *ctx, pdf_cmap *cmap, int value)
{
if (cmap->tlen == USHRT_MAX)
{
@@ -189,7 +189,7 @@ add_table(pdf_cmap *cmap, int value)
if (cmap->tlen + 1 > cmap->tcap)
{
cmap->tcap = cmap->tcap > 1 ? (cmap->tcap * 3) / 2 : 256;
- cmap->table = fz_realloc(cmap->table, cmap->tcap, sizeof(unsigned short));
+ cmap->table = fz_realloc(ctx, cmap->table, cmap->tcap * sizeof(unsigned short));
}
cmap->table[cmap->tlen++] = value;
}
@@ -198,19 +198,19 @@ add_table(pdf_cmap *cmap, int value)
* Add a range.
*/
static void
-add_range(pdf_cmap *cmap, int low, int high, int flag, int offset)
+add_range(fz_context *ctx, pdf_cmap *cmap, int low, int high, int flag, int offset)
{
/* If the range is too large to be represented, split it */
if (high - low > 0x3fff)
{
- add_range(cmap, low, low+0x3fff, flag, offset);
- add_range(cmap, low+0x3fff, high, flag, offset+0x3fff);
+ add_range(ctx, cmap, low, low+0x3fff, flag, offset);
+ add_range(ctx, cmap, low+0x3fff, high, flag, offset+0x3fff);
return;
}
if (cmap->rlen + 1 > cmap->rcap)
{
cmap->rcap = cmap->rcap > 1 ? (cmap->rcap * 3) / 2 : 256;
- cmap->ranges = fz_realloc(cmap->ranges, cmap->rcap, sizeof(pdf_range));
+ cmap->ranges = fz_realloc(ctx, cmap->ranges, cmap->rcap * sizeof(pdf_range));
}
cmap->ranges[cmap->rlen].low = low;
pdf_range_set_high(&cmap->ranges[cmap->rlen], high);
@@ -223,7 +223,7 @@ add_range(pdf_cmap *cmap, int low, int high, int flag, int offset)
* Add a range-to-table mapping.
*/
void
-pdf_map_range_to_table(pdf_cmap *cmap, int low, int *table, int len)
+pdf_map_range_to_table(fz_context *ctx, pdf_cmap *cmap, int low, int *table, int len)
{
int i;
int high = low + len;
@@ -233,8 +233,8 @@ pdf_map_range_to_table(pdf_cmap *cmap, int low, int *table, int len)
else
{
for (i = 0; i < len; i++)
- add_table(cmap, table[i]);
- add_range(cmap, low, high, PDF_CMAP_TABLE, offset);
+ add_table(ctx, cmap, table[i]);
+ add_range(ctx, cmap, low, high, PDF_CMAP_TABLE, offset);
}
}
@@ -242,22 +242,22 @@ pdf_map_range_to_table(pdf_cmap *cmap, int low, int *table, int len)
* Add a range of contiguous one-to-one mappings (ie 1..5 maps to 21..25)
*/
void
-pdf_map_range_to_range(pdf_cmap *cmap, int low, int high, int offset)
+pdf_map_range_to_range(fz_context *ctx, pdf_cmap *cmap, int low, int high, int offset)
{
- add_range(cmap, low, high, high - low == 0 ? PDF_CMAP_SINGLE : PDF_CMAP_RANGE, offset);
+ add_range(ctx, cmap, low, high, high - low == 0 ? PDF_CMAP_SINGLE : PDF_CMAP_RANGE, offset);
}
/*
* Add a single one-to-many mapping.
*/
void
-pdf_map_one_to_many(pdf_cmap *cmap, int low, int *values, int len)
+pdf_map_one_to_many(fz_context *ctx, pdf_cmap *cmap, int low, int *values, int len)
{
int offset, i;
if (len == 1)
{
- add_range(cmap, low, low, PDF_CMAP_SINGLE, values[0]);
+ add_range(ctx, cmap, low, low, PDF_CMAP_SINGLE, values[0]);
return;
}
@@ -280,10 +280,10 @@ pdf_map_one_to_many(pdf_cmap *cmap, int low, int *values, int len)
else
{
offset = cmap->tlen;
- add_table(cmap, len);
+ add_table(ctx, cmap, len);
for (i = 0; i < len; i++)
- add_table(cmap, values[i]);
- add_range(cmap, low, low, PDF_CMAP_MULTI, offset);
+ add_table(ctx, cmap, values[i]);
+ add_range(ctx, cmap, low, low, PDF_CMAP_MULTI, offset);
}
}
@@ -299,7 +299,7 @@ static int cmprange(const void *va, const void *vb)
}
void
-pdf_sort_cmap(pdf_cmap *cmap)
+pdf_sort_cmap(fz_context *ctx, pdf_cmap *cmap)
{
pdf_range *a; /* last written range on output */
pdf_range *b; /* current range examined on input */
@@ -343,7 +343,7 @@ pdf_sort_cmap(pdf_cmap *cmap)
else if (pdf_range_flags(a) == PDF_CMAP_TABLE && pdf_range_flags(b) == PDF_CMAP_SINGLE && (pdf_range_high(b) - a->low <= 0x3fff))
{
pdf_range_set_high(a, pdf_range_high(b));
- add_table(cmap, b->offset);
+ add_table(ctx, cmap, b->offset);
}
/* LR -> LR */
@@ -367,8 +367,8 @@ pdf_sort_cmap(pdf_cmap *cmap)
{
pdf_range_set_flags(a, PDF_CMAP_TABLE);
pdf_range_set_high(a, pdf_range_high(b));
- add_table(cmap, a->offset);
- add_table(cmap, b->offset);
+ add_table(ctx, cmap, a->offset);
+ add_table(ctx, cmap, b->offset);
a->offset = cmap->tlen - 2;
}
@@ -376,7 +376,7 @@ pdf_sort_cmap(pdf_cmap *cmap)
else if (pdf_range_flags(a) == PDF_CMAP_TABLE && pdf_range_flags(b) == PDF_CMAP_SINGLE && (pdf_range_high(b) - a->low <= 0x3fff))
{
pdf_range_set_high(a, pdf_range_high(b));
- add_table(cmap, b->offset);
+ add_table(ctx, cmap, b->offset);
}
/* XX -> XX */