summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Jamfile104
-rw-r--r--Makefile200
-rw-r--r--apps/pdffunction.c263
-rw-r--r--apps/showcmap.c22
-rw-r--r--base/cpudep.c6
-rw-r--r--mupdf/nametree.c2
-rw-r--r--util/strlcat.c4
-rw-r--r--util/strlcpy.c4
-rw-r--r--util/strsep.c4
9 files changed, 59 insertions, 550 deletions
diff --git a/Jamfile b/Jamfile
index 58b6791a..59b68667 100644
--- a/Jamfile
+++ b/Jamfile
@@ -11,56 +11,63 @@ HDRS = include filter ;
# HAVE_X11 = yes ;
# HAVE_GTK = yes ;
-if $(RELEASE)
-{
- Echo Release build for $(OS) $(OSPLAT) ;
- CCFLAGS += -DARCH_$(OSPLAT) ;
- OPTIM = -O3 ;
-}
-else if $(PROFILE)
-{
- Echo Profiling build for $(OS) $(OSPLAT) ;
- OPTIM = -g -pg ;
-}
-else
-{
- Echo Debug build for $(OS) $(OSPLAT) ;
- OPTIM = -g ;
-}
+# CCFLAGS += -DARCH_$(OSPLAT) ;
-if $(OS) = LINUX
+switch $(BUILD)
{
- CCFLAGS += -std=c99 -DHAVE_C99 -Wall ;
- CCFLAGS += -DNEED_STRLCPY -DNEED_GETOPT -DNEED_MATH ;
+ case RELEASE :
+ Echo Release build for $(OS) $(OSPLAT) ;
+ OPTIM = -O3 ;
+ case PROFILE :
+ Echo Profiling build for $(OS) $(OSPLAT) ;
+ OPTIM = -g -pg ;
+ case * :
+ Echo Debug build for $(OS) $(OSPLAT) ;
+ OPTIM = -g ;
}
-if $(OS) = MACOSX
+switch $(OS)
{
- CCFLAGS += -std=c99 -DHAVE_C99 -Wall -faltivec ;
+ case LINUX :
+ CCFLAGS += -std=c89 -Wall ;
+ CCFLAGS += -DNEED_GETOPT ;
+ CCFLAGS += -DNEED_STRLCPY ;
+ CCFLAGS += -DNEED_STRLCAT ;
+ case MACOSX :
+ CCFLAGS += -std=gnu99 -DHAVE_C99 -Wall -faltivec ;
+ case NT :
+ NOARSCAN = true ;
+ CCFLAGS += -std=gnu99 -DHAVE_C99 -Wall -DWIN32 ;
+ CCFLAGS += -DNEED_GETOPT ;
+ CCFLAGS += -DNEED_STRSEP ;
+ CCFLAGS += -DNEED_STRLCPY ;
+ CCFLAGS += -DNEED_STRLCAT ;
+ case SOLARIS :
+ CCFLAGS += -std=c89 -Wall ;
}
-if $(OS) = NT
-{
- NOARSCAN = true ;
- CCFLAGS += -std=c99 -DHAVE_C99 -Wall ;
- CCFLAGS += -DNEED_STRLCPY -DNEED_STRSEP -DNEED_GETOPT ;
-}
-
-LINKLIBS = -lfreetype -ljpeg -lz -lm ;
-
-if $(HAVE_JBIG2DEC) { CCFLAGS += -DHAVE_JBIG2DEC ; LINKLIBS += -ljbig2dec ; }
-if $(HAVE_JASPER) { CCFLAGS += -DHAVE_JASPER ; LINKLIBS += -ljasper ; }
-
#
# Libraries
#
-Library libfitz :
- util/getopt.c
- util/strsep.c
- util/strlcpy.c
- util/strlcat.c
- ;
+if -DNEED_GETOPT in $(CCFLAGS) { Library libfitz : util/getopt.c ; }
+if -DNEED_STRSEP in $(CCFLAGS) { Library libfitz : util/strsep.c ; }
+if -DNEED_STRLCPY in $(CCFLAGS) { Library libfitz : util/strlcpy.c ; }
+if -DNEED_STRLCAT in $(CCFLAGS) { Library libfitz : util/strlcat.c ; }
+
+if $(HAVE_JASPER)
+{
+ CCFLAGS += -DHAVE_JASPER ;
+ LINKLIBS += -ljasper ;
+ Library libfitz : filter/jpxd.c ;
+}
+
+if $(HAVE_JBIG2DEC)
+{
+ CCFLAGS += -DHAVE_JBIG2DEC ;
+ LINKLIBS += -ljbig2dec ;
+ Library libfitz : filter/jbig2d.c ;
+}
Library libfitz :
base/cpudep.c
@@ -138,9 +145,6 @@ Library libfitz :
render/render.c
;
-if $(HAVE_JBIG2DEC) { Library libfitz : filter/jbig2d.c ; }
-if $(HAVE_JASPER) { Library libfitz : filter/jpxd.c ; }
-
if $(OSPLAT) = PPC { Library libfitz : render/archppc.c ; }
if $(OSPLAT) = SPARC { Library libfitz : render/archsparc.c ; }
if $(OSPLAT) = X86 { Library libfitz : render/archx86.c ; }
@@ -242,11 +246,13 @@ Library libmupdf :
# Applications
#
+LINKLIBS = -lfreetype -ljpeg -lz -lm ;
+
if $(OS) = NT
{
Main w32pdf : apps/w32pdf.c ;
LinkLibraries w32pdf : libmupdf libfitz ;
- LINKLIBS on w32pdf$(SUFEXE) = -lgdi32 $(LINKLIBS) ;
+ LINKLIBS on w32pdf$(SUFEXE) = $(LINKLIBS) -lgdi32 ;
}
if $(OS) = MACOSX
@@ -254,22 +260,24 @@ if $(OS) = MACOSX
MACPDF = apps/macpdf.app/Contents/MacOS/macpdf ;
Main $(MACPDF) : apps/macpdf.app/macpdf.c apps/macpdf.app/view.c ;
LinkLibraries $(MACPDF) : libmupdf libfitz ;
- LINKLIBS on $(MACPDF) = -framework Carbon $(LINKLIBS) ;
+ LINKLIBS on $(MACPDF) = $(LINKLIBS) -framework Carbon ;
}
if $(HAVE_X11)
{
Main x11pdf : apps/x11pdf.c apps/ximage.c ;
LinkLibraries x11pdf : libmupdf libfitz ;
- LINKLIBS on x11pdf$(SUFEXE) = -lX11 -lXext $(LINKLIBS) ;
+ LINKLIBS on x11pdf$(SUFEXE) = $(LINKLIBS) -lX11 -lXext ;
}
if $(HAVE_GTK)
{
Main gtkpdf : apps/gtkpdf.c ;
- LinkLibraries x11pdf : libmupdf libfitz ;
- CCFLAGS += `pkg-config --cflags gtk+ gthread` ;
- LINKLIBS on gtkpdf$(SUFEXE) = `pkg-config --libs gtk+ gmodule gthread` $(LINKLIBS) ;
+ CCFLAGS on apps/gtkpdf.c =
+ $(CCFLAGS) `pkg-config --cflags gtk+ gthread` ;
+ LinkLibraries gtkpdf : libmupdf libfitz ;
+ LINKLIBS on gtkpdf$(SUFEXE) =
+ $(LINKLIBS) `pkg-config --libs gtk+ gmodule gthread` ;
}
Main pdfclean : apps/pdfclean.c ;
diff --git a/Makefile b/Makefile
deleted file mode 100644
index 1724b7ce..00000000
--- a/Makefile
+++ /dev/null
@@ -1,200 +0,0 @@
-#
-# requires: gtk-config freetype-config xxd sed
-#
-
-CFLAGS = -Wall -O3 -std=c89 -Iinclude `freetype-config --cflags`
-LDLIBS = `freetype-config --libs` -ljpeg -lz -lm
-
-X11DIR = /usr/X11R6
-
-all: libfitz.a libmupdf.a libfonts.a pdfrip pdfclean pdfdebug x11pdf gtkpdf
-
-# util/strlcpy.o util/strlcat.o \
-# util/getopt.o \
-# util/strsep.o \
-
-libfitz.a: \
- base/cpudep.o \
- base/error.o \
- base/memory.o \
- base/md5.o \
- base/arc4.o \
- base/rect.o \
- base/matrix.o \
- base/hash.o \
- base/rune.o \
- object/simple.o \
- object/array.o \
- object/dict.o \
- object/print.o \
- object/parse.o \
- filter/buffer.o \
- filter/filter.o \
- filter/filec.o \
- filter/filer.o \
- filter/filew.o \
- filter/null.o \
- filter/arc4filter.o \
- filter/pipeline.o \
- filter/ahxd.o \
- filter/ahxe.o \
- filter/a85d.o \
- filter/a85e.o \
- filter/rld.o \
- filter/rle.o \
- filter/predict.o \
- filter/lzwd.o \
- filter/lzwe.o \
- filter/faxd.o \
- filter/faxdtab.o \
- filter/faxe.o \
- filter/faxetab.o \
- filter/flate.o \
- filter/dctd.o \
- filter/dcte.o \
- tree/cmap.o \
- tree/font.o \
- tree/colorspace.o \
- tree/image.o \
- tree/shade.o \
- tree/tree.o \
- tree/node1.o \
- tree/node2.o \
- tree/text.o \
- tree/path.o \
- tree/debug.o \
- tree/optimize.o \
- render/glyphcache.o \
- render/pixmap.o \
- render/porterduff.o \
- render/meshdraw.o \
- render/imagedraw.o \
- render/imageunpack.o \
- render/imagescale.o \
- render/pathscan.o \
- render/pathfill.o \
- render/pathstroke.o \
- render/render.o
- ar cru $(@) $(?)
- ranlib $(@)
-
-libmupdf.a: \
- mupdf/debug.o \
- mupdf/lex.o \
- mupdf/parse.o \
- mupdf/crypt.o \
- mupdf/open.o \
- mupdf/repair.o \
- mupdf/save.o \
- mupdf/xref.o \
- mupdf/stream.o \
- mupdf/doctor.o \
- mupdf/nametree.o \
- mupdf/outline.o \
- mupdf/annot.o \
- mupdf/pagetree.o \
- mupdf/store.o \
- mupdf/resources.o \
- mupdf/function.o \
- mupdf/colorspace1.o \
- mupdf/colorspace2.o \
- mupdf/xobject.o \
- mupdf/image.o \
- mupdf/pattern.o \
- mupdf/shade.o \
- mupdf/shade1.o \
- mupdf/shade2.o \
- mupdf/shade3.o \
- mupdf/shade4.o \
- mupdf/cmap.o \
- mupdf/unicode.o \
- mupdf/fontagl.o \
- mupdf/fontenc.o \
- mupdf/fontfile.o \
- mupdf/font.o \
- mupdf/type3.o \
- mupdf/page.o \
- mupdf/build.o \
- mupdf/interpret.o
- ar cru $(@) $(?)
- ranlib $(@)
-
-%.c: %.cff
- xxd -i $(<) | sed -e 's/data_//g;s/, /,/g' > $(@)
-
-data/Dingbats.c: data/Dingbats.cff
-data/NimbusMonL-Bold.c: data/NimbusMonL-Bold.cff
-data/NimbusMonL-BoldObli.c: data/NimbusMonL-BoldObli.cff
-data/NimbusMonL-Regu.c: data/NimbusMonL-Regu.cff
-data/NimbusMonL-ReguObli.c: data/NimbusMonL-ReguObli.cff
-data/NimbusRomNo9L-Medi.c: data/NimbusRomNo9L-Medi.cff
-data/NimbusRomNo9L-MediItal.c: data/NimbusRomNo9L-MediItal.cff
-data/NimbusRomNo9L-Regu.c: data/NimbusRomNo9L-Regu.cff
-data/NimbusRomNo9L-ReguItal.c: data/NimbusRomNo9L-ReguItal.cff
-data/NimbusSanL-Bold.c: data/NimbusSanL-Bold.cff
-data/NimbusSanL-BoldItal.c: data/NimbusSanL-BoldItal.cff
-data/NimbusSanL-Regu.c: data/NimbusSanL-Regu.cff
-data/NimbusSanL-ReguItal.c: data/NimbusSanL-ReguItal.cff
-data/StandardSymL.c: data/StandardSymL.cff
-data/URWChanceryL-MediItal.c: data/URWChanceryL-MediItal.cff
-
-.FONTS: \
- data/Dingbats.c \
- data/NimbusMonL-Bold.c \
- data/NimbusMonL-BoldObli.c \
- data/NimbusMonL-Regu.c \
- data/NimbusMonL-ReguObli.c \
- data/NimbusRomNo9L-Medi.c \
- data/NimbusRomNo9L-MediItal.c \
- data/NimbusRomNo9L-Regu.c \
- data/NimbusRomNo9L-ReguItal.c \
- data/NimbusSanL-Bold.c \
- data/NimbusSanL-BoldItal.c \
- data/NimbusSanL-Regu.c \
- data/NimbusSanL-ReguItal.c \
- data/StandardSymL.c \
- data/URWChanceryL-MediItal.c
-
-libfonts.a: \
- data/Dingbats.o \
- data/NimbusMonL-Bold.o \
- data/NimbusMonL-BoldObli.o \
- data/NimbusMonL-Regu.o \
- data/NimbusMonL-ReguObli.o \
- data/NimbusRomNo9L-Medi.o \
- data/NimbusRomNo9L-MediItal.o \
- data/NimbusRomNo9L-Regu.o \
- data/NimbusRomNo9L-ReguItal.o \
- data/NimbusSanL-Bold.o \
- data/NimbusSanL-BoldItal.o \
- data/NimbusSanL-Regu.o \
- data/NimbusSanL-ReguItal.o \
- data/StandardSymL.o \
- data/URWChanceryL-MediItal.o
- ar cru $(@) $(?)
- ranlib $(@)
-
-test/ximage.o: test/ximage.c
- $(CC) -c $(CFLAGS) -o $(@) $(^) -I$(X11DIR)/include
-
-test/x11pdf.o: test/x11pdf.c
- $(CC) -c $(CFLAGS) -o $(@) $(^) -I$(X11DIR)/include
-
-x11pdf: test/x11pdf.o test/ximage.o
- $(CC) -o $(@) $(^) libmupdf.a libfonts.a libfitz.a $(LDLIBS) -L$(X11DIR)/lib -lX11 -lXext
-
-test/gtkpdf.o: test/gtkpdf.c
- $(CC) -c $(CFLAGS) -o $(@) $(^) `gtk-config --cflags`
-
-gtkpdf: test/gtkpdf.o
- $(CC) -o $(@) $(^) libmupdf.a libfonts.a libfitz.a $(LDLIBS) `gtk-config --libs gthread`
-
-pdfrip: test/pdfrip.o
- $(CC) -o $(@) $(^) libmupdf.a libfonts.a libfitz.a $(LDLIBS)
-
-pdfdebug: test/pdfdebug.o
- $(CC) -o $(@) $(^) libmupdf.a libfonts.a libfitz.a $(LDLIBS)
-
-pdfclean: test/pdfclean.o
- $(CC) -o $(@) $(^) libmupdf.a libfonts.a libfitz.a $(LDLIBS)
-
diff --git a/apps/pdffunction.c b/apps/pdffunction.c
deleted file mode 100644
index 20dabf1e..00000000
--- a/apps/pdffunction.c
+++ /dev/null
@@ -1,263 +0,0 @@
-#include <fitz.h>
-#include <mupdf.h>
-
-static char *password = "";
-static int dodecode = 0;
-static int dorepair = 0;
-static int doprintxref = 0;
-
-typedef struct psobj_s psobj;
-
-struct pdf_function_s
-{
- unsigned short type; /* 0=sample 2=exponential 3=stitching 4=postscript */
- int m; /* number of input values */
- int n; /* number of output values */
- float *domain; /* even index : min value, odd index : max value */
- float *range; /* even index : min value, odd index : max value */
- union
- {
- struct {
- unsigned short bps;
- unsigned short order;
- int *size; /* the num of samples in each input dimension */
- float *encode;
- float *decode;
- int *samples;
- } sa;
- struct {
- float n;
- float *c0;
- float *c1;
- } e;
- struct {
- int k;
- pdf_function **funcs;
- float *bounds;
- float *encode;
- } st;
- struct {
- psobj *code;
- int cap;
- } p;
- }u;
-};
-
-void usage()
-{
- fprintf(stderr, "usage: pdffunction [-drxs] [-u password] file.pdf oid [input ...]\n");
- exit(1);
-}
-
-static int safecol = 0;
-
-void printsafe(unsigned char *buf, int n)
-{
- int i;
- for (i = 0; i < n; i++) {
- if (buf[i] == '\r' || buf[i] == '\n') {
- printf("\n");
- safecol = 0;
- }
- else if (buf[i] < 32 || buf[i] > 126) {
- printf(".");
- safecol ++;
- }
- else {
- printf("%c", buf[i]);
- safecol ++;
- }
- if (safecol == 79) {
- printf("\n");
- safecol = 0;
- }
- }
-}
-
-void decodestream(pdf_xref *xref, int oid, int gid)
-{
- fz_error *error;
- unsigned char buf[512];
-
- safecol = 0;
-
- error = pdf_openstream(xref, oid, gid);
- if (error) fz_abort(error);
-
- while (1)
- {
- int n = fz_read(xref->stream, buf, sizeof buf);
- if (n == 0)
- break;
- if (n < 0)
- fz_abort(fz_ferror(xref->stream));
- printsafe(buf, n);
- }
-
- pdf_closestream(xref);
-}
-
-void copystream(pdf_xref *xref, int oid, int gid)
-{
- fz_error *error;
- unsigned char buf[512];
-
- safecol = 0;
-
- error = pdf_openrawstream(xref, oid, gid);
- if (error) fz_abort(error);
-
- while (1)
- {
- int n = fz_read(xref->stream, buf, sizeof buf);
- if (n == 0)
- break;
- if (n < 0)
- fz_abort(fz_ferror(xref->stream));
- printsafe(buf, n);
- }
-
- pdf_closestream(xref);
-}
-
-void printobject(pdf_xref *xref, int oid, int gid)
-{
- fz_error *error;
- fz_obj *obj;
-
- error = pdf_loadobject(&obj, xref, oid, gid);
- if (error) fz_abort(error);
-
- printf("%d %d obj\n", oid, gid);
- fz_debugobj(obj);
- printf("\n");
-
- if (xref->table[oid].stmofs) {
- printf("stream\n");
- if (dodecode)
- decodestream(xref, oid, gid);
- else
- copystream(xref, oid, gid);
- printf("endstream\n");
- }
-
- printf("endobj\n");
-
- fz_dropobj(obj);
-}
-
-int main(int argc, char **argv)
-{
- fz_error *error;
- char *filename;
- pdf_xref *xref;
- int c;
-
- while ((c = getopt(argc, argv, "drxopu:")) != -1)
- {
- switch (c)
- {
- case 'd':
- dodecode ++;
- break;
- case 'r':
- dorepair ++;
- break;
- case 'x':
- doprintxref ++;
- break;
- case 'u':
- password = optarg;
- break;
- default:
- usage();
- }
- }
-
- if (argc - optind == 0)
- usage();
-
- filename = argv[optind++];
-
- if (dorepair)
- error = pdf_repairpdf(&xref, filename);
- else
- error = pdf_openpdf(&xref, filename);
- if (error)
- fz_abort(error);
-
- error = pdf_decryptpdf(xref);
- if (error)
- fz_abort(error);
-
- if (xref->crypt)
- {
- error = pdf_setpassword(xref->crypt, password);
- if (error) fz_abort(error);
- }
-
- if (optind == argc)
- {
- printf("trailer\n");
- fz_debugobj(xref->trailer);
- printf("\n");
- }
- else
- {
- int oid = atoi(argv[optind++]);
- if(optind == argc)
- printobject(xref, oid, 0);
- else
- {
- float *in = nil, *out = nil;
- pdf_function *func;
- fz_obj *funcobj;
- int i;
-
- /* type 0 and type 4 funcs must be indirect to read stream */
- error = fz_newindirect(&funcobj,oid,0);
- if(error) fz_abort(error);
- error = pdf_loadfunction(&func,xref,funcobj);
- if(error) fz_abort(error);
- in = fz_malloc(func->m * sizeof(float));
- out = fz_malloc(func->n * sizeof(float));
-
- if(!in || !out)
- fz_abort(fz_outofmem);
-
- for(i = 0; optind < argc; optind++, i++)
- {
- if(i >= func->m)
- fz_abort(fz_throw("too much input values"));
-
- in[i] = atof(argv[optind]);
- }
-
- if(i < func->m)
- fz_abort(fz_throw("too few input values"));
-
- error = pdf_evalfunction(func, in, func->m, out, func->n);
- if(error) fz_abort(error);
-
- for(i = 0; i < func->n; ++i)
- fprintf(stderr, "output[%d] : %f\n", i, out[i]);
-
- fz_dropobj(funcobj);
- pdf_dropfunction(func);
- }
- }
-
- for ( ; optind < argc; optind++)
- {
- printobject(xref, atoi(argv[optind]), 0);
- printf("\n");
- }
-
- if (doprintxref)
- pdf_debugpdf(xref);
-
- pdf_closepdf(xref);
-
- return 0;
-}
-
diff --git a/apps/showcmap.c b/apps/showcmap.c
deleted file mode 100644
index 3e6e5e8e..00000000
--- a/apps/showcmap.c
+++ /dev/null
@@ -1,22 +0,0 @@
-#include <fitz.h>
-#include <mupdf.h>
-
-int main(int argc, char **argv)
-{
- fz_error *err;
- fz_cmap *cmap;
- fz_file *file;
-
- err = fz_openfile(&file, argv[1], FZ_READ);
- if (err)
- fz_abort(err);
-
- err = pdf_parsecmap(&cmap, file);
- if (err)
- fz_abort(err);
-
- fz_debugcmap(cmap);
-
- return 0;
-}
-
diff --git a/base/cpudep.c b/base/cpudep.c
index ec19fe92..616a3563 100644
--- a/base/cpudep.c
+++ b/base/cpudep.c
@@ -7,7 +7,8 @@ Glenn Kennard <d98gk@efd.lth.se>
#include <fitz.h>
-#include <setjmp.h>
+#include <signal.h> /* signal/sigaction */
+#include <setjmp.h> /* sigsetjmp/siglongjmp */
#ifdef WIN32
#define sigjmp_buf jmp_buf
@@ -95,9 +96,6 @@ static const featuretest features[1] = {
};
#endif
-#include <signal.h> /* signal/sigaction */
-#include <setjmp.h> /* sigsetjmp/siglongjmp */
-
/* global run-time constant */
unsigned fz_cpuflags = 0;
diff --git a/mupdf/nametree.c b/mupdf/nametree.c
index 1b766e64..04b5192b 100644
--- a/mupdf/nametree.c
+++ b/mupdf/nametree.c
@@ -85,7 +85,7 @@ pdf_loadnametree(fz_obj **dictp, pdf_xref *xref, fz_obj *root)
return error;
}
-// fz_sortdict(tree);
+ fz_sortdict(tree);
*dictp = tree;
return nil;
diff --git a/util/strlcat.c b/util/strlcat.c
index 46edd434..c659b73a 100644
--- a/util/strlcat.c
+++ b/util/strlcat.c
@@ -4,8 +4,6 @@
* Returns strlen(src); if retval >= siz, truncation occurred.
*/
-#ifdef NEED_STRLCAT
-
#include <string.h>
int strlcat(char *dst, const char *src, int siz)
@@ -35,5 +33,3 @@ int strlcat(char *dst, const char *src, int siz)
return dlen + (s - src); /* count does not include NUL */
}
-#endif
-
diff --git a/util/strlcpy.c b/util/strlcpy.c
index 72e45d6b..73416ae1 100644
--- a/util/strlcpy.c
+++ b/util/strlcpy.c
@@ -3,8 +3,6 @@
* Returns strlen(src); if retval >= siz, truncation occurred.
*/
-#ifdef NEED_STRLCPY
-
#include <string.h>
int strlcpy(char *dst, const char *src, int siz)
@@ -32,5 +30,3 @@ int strlcpy(char *dst, const char *src, int siz)
return(s - src - 1); /* count does not include NUL */
}
-#endif
-
diff --git a/util/strsep.c b/util/strsep.c
index e3592c2a..e54903ce 100644
--- a/util/strsep.c
+++ b/util/strsep.c
@@ -1,5 +1,3 @@
-#ifdef NEED_STRSEP
-
#include <string.h>
char *strsep(char **stringp, const char *delim)
@@ -11,5 +9,3 @@ char *strsep(char **stringp, const char *delim)
return ret;
}
-#endif
-