From d7e8f4848410978fb1616c484d5acfac9fbf3d7a Mon Sep 17 00:00:00 2001 From: Peter Breitenlohner Date: Tue, 13 Dec 2011 10:00:23 +0000 Subject: 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 --- Build/source/texk/web2c/Makefile.in | 17 ++- Build/source/texk/web2c/pdftexdir/ChangeLog | 6 + Build/source/texk/web2c/pdftexdir/am/libpdftex.am | 3 +- Build/source/texk/web2c/pdftexdir/writejbig2.c | 140 ++++++++++++++++---- Build/source/texk/web2c/pdftexdir/writejbig2.h | 149 ---------------------- 5 files changed, 133 insertions(+), 182 deletions(-) delete mode 100644 Build/source/texk/web2c/pdftexdir/writejbig2.h (limited to 'Build') diff --git a/Build/source/texk/web2c/Makefile.in b/Build/source/texk/web2c/Makefile.in index 2d093963695..ac3d66f2310 100644 --- a/Build/source/texk/web2c/Makefile.in +++ b/Build/source/texk/web2c/Makefile.in @@ -526,11 +526,10 @@ am__libpdftex_a_SOURCES_DIST = pdftexdir/avl.c pdftexdir/avl.h \ pdftexdir/subfont.c pdftexdir/tounicode.c pdftexdir/utils.c \ pdftexdir/vfpacket.c pdftexdir/writeenc.c \ pdftexdir/writefont.c pdftexdir/writeimg.c \ - pdftexdir/writejbig2.c pdftexdir/writejbig2.h \ - pdftexdir/writejpg.c pdftexdir/writepng.c pdftexdir/writet1.c \ - pdftexdir/writet3.c pdftexdir/writettf.c pdftexdir/writettf.h \ - pdftexdir/writezip.c pdftexdir/regex/regex.c \ - pdftexdir/regex/regex.h + pdftexdir/writejbig2.c pdftexdir/writejpg.c \ + pdftexdir/writepng.c pdftexdir/writet1.c pdftexdir/writet3.c \ + pdftexdir/writettf.c pdftexdir/writettf.h pdftexdir/writezip.c \ + pdftexdir/regex/regex.c pdftexdir/regex/regex.h @MINGW32_TRUE@am__objects_6 = libpdftex_a-regex.$(OBJEXT) am_libpdftex_a_OBJECTS = libpdftex_a-avl.$(OBJEXT) \ libpdftex_a-avlstuff.$(OBJEXT) libpdftex_a-epdf.$(OBJEXT) \ @@ -2100,10 +2099,10 @@ libpdftex_a_SOURCES = pdftexdir/avl.c pdftexdir/avl.h \ pdftexdir/subfont.c pdftexdir/tounicode.c pdftexdir/utils.c \ pdftexdir/vfpacket.c pdftexdir/writeenc.c \ pdftexdir/writefont.c pdftexdir/writeimg.c \ - pdftexdir/writejbig2.c pdftexdir/writejbig2.h \ - pdftexdir/writejpg.c pdftexdir/writepng.c pdftexdir/writet1.c \ - pdftexdir/writet3.c pdftexdir/writettf.c pdftexdir/writettf.h \ - pdftexdir/writezip.c $(am__append_58) + pdftexdir/writejbig2.c pdftexdir/writejpg.c \ + pdftexdir/writepng.c pdftexdir/writet1.c pdftexdir/writet3.c \ + pdftexdir/writettf.c pdftexdir/writettf.h pdftexdir/writezip.c \ + $(am__append_58) EXTRA_libpdftex_a_SOURCES = pdftexdir/macnames.c \ pdftexdir/regex/regcomp.c pdftexdir/regex/regex_internal.c \ pdftexdir/regex/regex_internal.h pdftexdir/regex/regexec.c diff --git a/Build/source/texk/web2c/pdftexdir/ChangeLog b/Build/source/texk/web2c/pdftexdir/ChangeLog index cb09ae3564b..3ec9312e705 100644 --- a/Build/source/texk/web2c/pdftexdir/ChangeLog +++ b/Build/source/texk/web2c/pdftexdir/ChangeLog @@ -1,3 +1,9 @@ +2011-12-12 Peter Breitenlohner + + * writejbig2.h (removed): Declarations moved ... + * writejbig2.c: ... to here. Declare most functions as static. + * am/libpdftex.am (libpdftex_a_SOURCES): Remove writejbig2.h. + 2011-10-11 Peter Breitenlohner * pdftosrc.cc: Always use new logic for Object Streams diff --git a/Build/source/texk/web2c/pdftexdir/am/libpdftex.am b/Build/source/texk/web2c/pdftexdir/am/libpdftex.am index 6ad211f12b0..32cb0e889d1 100644 --- a/Build/source/texk/web2c/pdftexdir/am/libpdftex.am +++ b/Build/source/texk/web2c/pdftexdir/am/libpdftex.am @@ -1,6 +1,6 @@ ## texk/web2c/pdftexdir/am/libpdftex.am: Makefile fragment for libpdftex. ## -## Copyright (C) 2009, 2010 Peter Breitenlohner +## Copyright (C) 2009-2011 Peter Breitenlohner ## You may freely use, modify and/or distribute this file. ## libpdftex @@ -32,7 +32,6 @@ libpdftex_a_SOURCES = \ pdftexdir/writefont.c \ pdftexdir/writeimg.c \ pdftexdir/writejbig2.c \ - pdftexdir/writejbig2.h \ pdftexdir/writejpg.c \ pdftexdir/writepng.c \ pdftexdir/writet1.c \ 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 +#include +#include +#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; diff --git a/Build/source/texk/web2c/pdftexdir/writejbig2.h b/Build/source/texk/web2c/pdftexdir/writejbig2.h deleted file mode 100644 index 4614f2e91d4..00000000000 --- a/Build/source/texk/web2c/pdftexdir/writejbig2.h +++ /dev/null @@ -1,149 +0,0 @@ -/*********************************************************************** -Copyright 2002-2011 Han The Thanh, - -This file is part of pdfTeX. - -pdfTeX is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 2 of the License, or (at your option) -any later version. - -pdfTeX is distributed in the hope that it will be useful, but WITHOUT -ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -You should have received a copy of the GNU General Public License along -with this program. If not, see . - -This is experimental JBIG2 image support to pdfTeX. JBIG2 image decoding -is part of Adobe PDF-1.4, and requires Acroread 5.0 or later. - -***********************************************************************/ - -#include "ptexlib.h" -#include -#include -#include -#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 int comp_file_entry(const void *, const void *, void *); -static int comp_page_entry(const void *, const void *, void *); -static int comp_segment_entry(const void *, const void *, void *); -int ygetc(FILE *); -FILEINFO *new_fileinfo(void); -PAGEINFO *new_pageinfo(void); -void initseginfo(SEGINFO *); -void initlinkedlist(LIST *); -LIST *litem_append(LIST *); -void pages_maketree(LIST *); -void segments_maketree(LIST *); -PAGEINFO *find_pageinfo(LIST *, unsigned long); -SEGINFO *find_seginfo(LIST *, unsigned long); -unsigned int read2bytes(FILE *); -unsigned long read4bytes(FILE *); -unsigned long getstreamlen(LITEM *, boolean); -void readfilehdr(FILEINFO *); -boolean readseghdr(FILEINFO *, SEGINFO *); -void writeseghdr(FILEINFO *, SEGINFO *); -void checkseghdr(FILEINFO *, SEGINFO *); -void checkseghdrflags(SEGINFO * sip); -void markpage0seg(FILEINFO *, unsigned long); -unsigned long findstreamstart(FILEINFO *); -void rd_jbig2_info(FILEINFO *); -void wr_jbig2(FILEINFO *, unsigned long); -void read_jbig2_info(integer); -void write_jbig2(integer); -void flushjbig2page0objects(void); - -/**********************************************************************/ -- cgit v1.2.3