summaryrefslogtreecommitdiff
path: root/Build/source/texk/web2c/pdftexdir/writejbig2.c
diff options
context:
space:
mode:
authorPeter Breitenlohner <peb@mppmu.mpg.de>2011-12-13 10:00:23 +0000
committerPeter Breitenlohner <peb@mppmu.mpg.de>2011-12-13 10:00:23 +0000
commitd7e8f4848410978fb1616c484d5acfac9fbf3d7a (patch)
treeef9ab7d14bd9677bdd4a59b03d7a975da51514e8 /Build/source/texk/web2c/pdftexdir/writejbig2.c
parent848e1c0ffbe2c5ae7a036b17cdf43fd40fb94ab4 (diff)
pdftex: Absorb writejbig2.h int writejbig2.c
and declare most functions as static. The result is close to writejbig2.w from luatex. git-svn-id: svn://tug.org/texlive/trunk@24838 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/texk/web2c/pdftexdir/writejbig2.c')
-rw-r--r--Build/source/texk/web2c/pdftexdir/writejbig2.c140
1 files changed, 118 insertions, 22 deletions
diff --git a/Build/source/texk/web2c/pdftexdir/writejbig2.c b/Build/source/texk/web2c/pdftexdir/writejbig2.c
index e2c23c2605a..eeea9d7ea04 100644
--- a/Build/source/texk/web2c/pdftexdir/writejbig2.c
+++ b/Build/source/texk/web2c/pdftexdir/writejbig2.c
@@ -76,10 +76,106 @@ object exists, reference it. Else create fresh one.
***********************************************************************/
-#include "writejbig2.h"
+#include "ptexlib.h"
+#include <stdlib.h>
+#include <stdio.h>
+#include <assert.h>
+#include "ptexmac.h"
+#include "image.h"
+
+/* 7.3 Segment types */
+#define M_SymbolDictionary 0
+#define M_IntermediateTextRegion 4
+#define M_ImmediateTextRegion 6
+#define M_ImmediateLosslessTextRegion 7
+#define M_PatternDictionary 16
+#define M_IntermediateHalftoneRegion 20
+#define M_ImmediateHalftoneRegion 22
+#define M_ImmediateLosslessHalftoneRegion 23
+#define M_IntermediateGenericRegion 36
+#define M_ImmediateGenericRegion 38
+#define M_ImmediateLosslessGenericRegion 39
+#define M_IntermediateGenericRefinementRegion 40
+#define M_ImmediateGenericRefinementRegion 42
+#define M_ImmediateLosslessGenericRefinementRegion 43
+#define M_PageInformation 48
+#define M_EndOfPage 49
+#define M_EndOfStripe 50
+#define M_EndOfFile 51
+#define M_Profiles 52
+#define M_Tables 53
+#define M_Extension 62
/**********************************************************************/
+typedef enum { INITIAL, HAVEINFO, WRITEPDF } PHASE;
+
+typedef struct _LITEM {
+ struct _LITEM *prev;
+ struct _LITEM *next;
+ void *d; /* data */
+} LITEM;
+
+typedef struct _LIST {
+ LITEM *first;
+ LITEM *last;
+ struct avl_table *tree;
+} LIST;
+
+typedef struct _SEGINFO {
+ unsigned long segnum;
+ boolean isrefered;
+ boolean refers;
+ unsigned int seghdrflags; /* set by readseghdr() */
+ boolean pageassocsizeflag; /* set by readseghdr() */
+ unsigned int reftosegcount; /* set by readseghdr() */
+ unsigned int countofrefered; /* set by readseghdr() */
+ unsigned int fieldlen; /* set by readseghdr() */
+ unsigned int segnumwidth; /* set by readseghdr() */
+ long segpage; /* set by readseghdr() */
+ unsigned long segdatalen; /* set by readseghdr() */
+ unsigned long hdrstart; /* set by readseghdr() */
+ unsigned long hdrend; /* set by readseghdr() */
+ unsigned long datastart;
+ unsigned long dataend;
+ boolean endofstripeflag; /* set by checkseghdrflags() */
+ boolean endofpageflag; /* set by checkseghdrflags() */
+ boolean pageinfoflag; /* set by checkseghdrflags() */
+ boolean endoffileflag; /* set by checkseghdrflags() */
+} SEGINFO;
+
+typedef struct _PAGEINFO {
+ LIST segments; /* segments associated with page */
+ unsigned long pagenum;
+ unsigned int width;
+ unsigned int height;
+ unsigned int xres;
+ unsigned int yres;
+ unsigned int pagesegmentflags;
+ unsigned int stripinginfo;
+ unsigned int stripedheight;
+} PAGEINFO;
+
+typedef struct _FILEINFO {
+ FILE *file;
+ char *filename;
+ long filesize;
+ LIST pages; /* not including page0 */
+ LIST page0;
+ unsigned int filehdrflags; /* set by readfilehdr() */
+ boolean sequentialaccess; /* set by readfilehdr() */
+ unsigned long numofpages; /* set by readfilehdr() */
+ unsigned long streamstart; /* set by get_jbig2_info() */
+ unsigned long pdfpage0objnum;
+ PHASE phase;
+} FILEINFO;
+
+/**********************************************************************/
+
+static void initlinkedlist(LIST * lp);
+static void checkseghdrflags(SEGINFO * sip);
+static void markpage0seg(FILEINFO * fip, unsigned long referedseg);
+
/**********************************************************************/
struct avl_table *file_tree = NULL;
@@ -102,7 +198,7 @@ static int comp_segment_entry(const void *pa, const void *pb, void *p)
/**********************************************************************/
-int ygetc(FILE * stream)
+static int ygetc(FILE * stream)
{
int c = getc(stream);
if (c < 0) {
@@ -116,7 +212,7 @@ int ygetc(FILE * stream)
/**********************************************************************/
-FILEINFO *new_fileinfo(void)
+static FILEINFO *new_fileinfo(void)
{
FILEINFO *fip;
fip = xtalloc(1, FILEINFO);
@@ -134,7 +230,7 @@ FILEINFO *new_fileinfo(void)
return fip;
}
-PAGEINFO *new_pageinfo(void)
+static PAGEINFO *new_pageinfo(void)
{
PAGEINFO *pip;
pip = xtalloc(1, PAGEINFO);
@@ -175,14 +271,14 @@ static void init_seginfo(SEGINFO * sip)
/**********************************************************************/
-void initlinkedlist(LIST * lp)
+static void initlinkedlist(LIST * lp)
{
lp->first = NULL;
lp->last = NULL;
lp->tree = NULL;
}
-LIST *litem_append(LIST * lp)
+static LIST *litem_append(LIST * lp)
{
LITEM *ip;
ip = xtalloc(1, LITEM);
@@ -201,7 +297,7 @@ LIST *litem_append(LIST * lp)
/**********************************************************************/
-void pages_maketree(LIST * plp)
+static void pages_maketree(LIST * plp)
{
LITEM *ip;
void **aa;
@@ -214,7 +310,7 @@ void pages_maketree(LIST * plp)
}
}
-void segments_maketree(LIST * slp)
+static void segments_maketree(LIST * slp)
{
LITEM *ip;
void **aa;
@@ -229,7 +325,7 @@ void segments_maketree(LIST * slp)
/**********************************************************************/
-PAGEINFO *find_pageinfo(LIST * plp, unsigned long pagenum)
+static PAGEINFO *find_pageinfo(LIST * plp, unsigned long pagenum)
{
PAGEINFO tmp;
tmp.pagenum = pagenum;
@@ -237,7 +333,7 @@ PAGEINFO *find_pageinfo(LIST * plp, unsigned long pagenum)
return (PAGEINFO *) avl_find(plp->tree, &tmp);
}
-SEGINFO *find_seginfo(LIST * slp, unsigned long segnum)
+static SEGINFO *find_seginfo(LIST * slp, unsigned long segnum)
{
SEGINFO tmp;
tmp.segnum = segnum;
@@ -247,13 +343,13 @@ SEGINFO *find_seginfo(LIST * slp, unsigned long segnum)
/**********************************************************************/
-unsigned int read2bytes(FILE * f)
+static unsigned int read2bytes(FILE * f)
{
unsigned int c = ygetc(f);
return (c << 8) + ygetc(f);
}
-unsigned long read4bytes(FILE * f)
+static unsigned long read4bytes(FILE * f)
{
unsigned int l = read2bytes(f);
return (l << 16) + read2bytes(f);
@@ -261,7 +357,7 @@ unsigned long read4bytes(FILE * f)
/**********************************************************************/
-unsigned long getstreamlen(LITEM * slip, boolean refer)
+static unsigned long getstreamlen(LITEM * slip, boolean refer)
{
SEGINFO *sip;
unsigned long len = 0;
@@ -275,7 +371,7 @@ unsigned long getstreamlen(LITEM * slip, boolean refer)
/**********************************************************************/
-void readfilehdr(FILEINFO * fip)
+static void readfilehdr(FILEINFO * fip)
{
unsigned int i;
/* Annex D.4 File header syntax */
@@ -303,7 +399,7 @@ void readfilehdr(FILEINFO * fip)
/**********************************************************************/
/* for first reading of file; return value tells if header been read */
-boolean readseghdr(FILEINFO * fip, SEGINFO * sip)
+static boolean readseghdr(FILEINFO * fip, SEGINFO * sip)
{
unsigned int i;
sip->hdrstart = xftell(fip->file, fip->filename);
@@ -361,7 +457,7 @@ boolean readseghdr(FILEINFO * fip, SEGINFO * sip)
/**********************************************************************/
/* for writing, marks refered page0 segments, sets segpage > 0 to 1 */
-void writeseghdr(FILEINFO * fip, SEGINFO * sip)
+static void writeseghdr(FILEINFO * fip, SEGINFO * sip)
{
unsigned int i;
unsigned long referedseg = 0;
@@ -412,7 +508,7 @@ void writeseghdr(FILEINFO * fip, SEGINFO * sip)
/**********************************************************************/
/* for recursive marking of refered page0 segments */
-void checkseghdr(FILEINFO * fip, SEGINFO * sip)
+static void checkseghdr(FILEINFO * fip, SEGINFO * sip)
{
unsigned int i;
unsigned long referedseg = 0;
@@ -449,7 +545,7 @@ void checkseghdr(FILEINFO * fip, SEGINFO * sip)
/**********************************************************************/
-void checkseghdrflags(SEGINFO * sip)
+static void checkseghdrflags(SEGINFO * sip)
{
sip->endofstripeflag = false;
sip->endofpageflag = false;
@@ -497,7 +593,7 @@ void checkseghdrflags(SEGINFO * sip)
/**********************************************************************/
-void markpage0seg(FILEINFO * fip, unsigned long referedseg)
+static void markpage0seg(FILEINFO * fip, unsigned long referedseg)
{
PAGEINFO *pip;
SEGINFO *sip;
@@ -512,7 +608,7 @@ void markpage0seg(FILEINFO * fip, unsigned long referedseg)
/**********************************************************************/
-unsigned long findstreamstart(FILEINFO * fip)
+static unsigned long findstreamstart(FILEINFO * fip)
{
SEGINFO tmp;
assert(!fip->sequentialaccess); /* D.2 Random-access organisation */
@@ -526,7 +622,7 @@ unsigned long findstreamstart(FILEINFO * fip)
/**********************************************************************/
-void rd_jbig2_info(FILEINFO * fip)
+static void rd_jbig2_info(FILEINFO * fip)
{
unsigned long seekdist = 0; /* for sequential-access only */
unsigned long streampos = 0; /* for random-access only */
@@ -609,7 +705,7 @@ void rd_jbig2_info(FILEINFO * fip)
/**********************************************************************/
-void wr_jbig2(FILEINFO * fip, unsigned long page)
+static void wr_jbig2(FILEINFO * fip, unsigned long page)
{
LITEM *slip;
PAGEINFO *pip;