as12compiler_in_source = $(as12compiler_objects)
as3compiler_objects = as3/abc.$(O) as3/pool.$(O) as3/files.$(O) as3/opcodes.$(O) as3/code.$(O) as3/registry.$(O) as3/builtin.$(O) as3/parser.tab.$(O) as3/tokenizer.yy.$(O) as3/scripts.$(O) as3/compiler.$(O) as3/import.$(O) as3/expr.$(O) as3/common.$(O) as3/initcode.$(O)
+gfxpoly_objects = gfxpoly/active.$(O) gfxpoly/convert.$(O) gfxpoly/poly.$(O) gfxpoly/renderpoly.$(O) gfxpoly/stroke.$(O) gfxpoly/wind.$(O) gfxpoly/xrow.$(O)
rfxswf_modules = modules/swfbits.c modules/swfaction.c modules/swfdump.c modules/swfcgi.c modules/swfbutton.c modules/swftext.c modules/swffont.c modules/swftools.c modules/swfsound.c modules/swfshape.c modules/swfobject.c modules/swfdraw.c modules/swffilter.c modules/swfrender.c h.263/swfvideo.c
base_objects=q.$(O) utf8.$(O) png.$(O) jpeg.$(O) wav.$(O) mp3.$(O) os.$(O) bitio.$(O) log.$(O) mem.$(O)
-gfx_objects=gfxtools.$(O) gfxfont.$(O) gfxpoly.$(O) devices/dummy.$(O) devices/file.$(O) devices/render.$(O) devices/text.$(O) devices/record.$(O) devices/ops.$(O) devices/polyops.$(O) devices/bbox.$(O) devices/rescale.$(O) @DEVICE_OPENGL@
-
-art_objects = art/art_affine.$(O) art/art_alphagamma.$(O) art/art_bpath.$(O) art/art_gray_svp.$(O) art/art_misc.$(O) art/art_pixbuf.$(O) art/art_rect.$(O) art/art_rect_svp.$(O) art/art_rect_uta.$(O) art/art_render.$(O) art/art_render_gradient.$(O) art/art_render_mask.$(O) art/art_render_svp.$(O) art/art_rgb.$(O) art/art_rgb_a_affine.$(O) art/art_rgb_affine.$(O) art/art_rgb_affine_private.$(O) art/art_rgb_bitmap_affine.$(O) art/art_rgb_pixbuf_affine.$(O) art/art_rgb_rgba_affine.$(O) art/art_rgb_svp.$(O) art/art_rgba.$(O) art/art_svp.$(O) art/art_svp_intersect.$(O) art/art_svp_ops.$(O) art/art_svp_point.$(O) art/art_svp_render_aa.$(O) art/art_svp_vpath.$(O) art/art_svp_vpath_stroke.$(O) art/art_svp_wind.$(O) art/art_uta.$(O) art/art_uta_ops.$(O) art/art_uta_rect.$(O) art/art_uta_svp.$(O) art/art_uta_vpath.$(O) art/art_vpath.$(O) art/art_vpath_bpath.$(O) art/art_vpath_dash.$(O) art/art_vpath_svp.$(O)
-art_in_source = @art_in_source@
+gfx_objects=gfxtools.$(O) gfxfont.$(O) devices/dummy.$(O) devices/file.$(O) devices/render.$(O) devices/text.$(O) devices/record.$(O) devices/ops.$(O) devices/polyops.$(O) devices/bbox.$(O) devices/rescale.$(O) @DEVICE_OPENGL@
rfxswf_objects=modules/swfaction.$(O) modules/swfbits.$(O) modules/swfbutton.$(O) modules/swfcgi.$(O) modules/swfdraw.$(O) modules/swfdump.$(O) modules/swffilter.$(O) modules/swffont.$(O) modules/swfobject.$(O) modules/swfrender.$(O) modules/swfshape.$(O) modules/swfsound.$(O) modules/swftext.$(O) modules/swftools.$(O)
ocr_objects=gocr/box.$(O) gocr/database.$(O) gocr/detect.$(O) gocr/job.$(O) gocr/lines.$(O) gocr/list.$(O) gocr/ocr0.$(O) gocr/ocr0n.$(O) gocr/ocr1.$(O) gocr/otsu.$(O) gocr/output.$(O) gocr/pgm2asc.$(O) gocr/pixel.$(O) gocr/progress.$(O) gocr/remove.$(O) gocr/unicode.$(O)
$(C) $< -o $@
as3/%.$(O): as3/%.c
$(C) $< -o $@
+gfxpoly/%.$(O): gfxpoly/%.c
+ $(C) $< -o $@
bitio.$(O): bitio.c bitio.h
$(C) bitio.c -o $@
$(C) modules/swftools.c -o $@
gfxtools.$(O): gfxtools.c gfxtools.h $(top_builddir)/config.h
$(C) gfxtools.c -o $@
-gfxpoly.$(O): gfxpoly.c gfxpoly.h $(top_builddir)/config.h
- $(C) gfxpoly.c -o $@
gfxfont.$(O): gfxfont.c gfxfont.h $(top_builddir)/config.h
$(C) gfxfont.c -o $@
gfxwindow.$(O): gfxwindow_win32.c gfxwindow_unix.c gfxwindow.c gfxwindow.h
libgfxswf$(A): devices/swf.$(O) readers/swf2.$(O) readers/image.$(O)
$(AR) r libgfxswf$(A) devices/swf.$(O) readers/swf2.$(O) readers/image.$(O)
-libgfx$(A): $(gfx_objects) $(art_in_source) Makefile
- $(AR) r libgfx$(A) $(gfx_objects) $(art_in_source)
+libgfx$(A): $(gfx_objects) $(gfxpoly_objects) Makefile
+ $(AR) r libgfx$(A) $(gfx_objects) $(gfxpoly_objects)
librfxswf$(A): Makefile $(rfxswf_objects) rfxswf.$(O) drawer.$(O) MD5.$(O) $(lame_in_source) $(h263_objects) $(as12compiler_in_source) $(as3compiler_objects) Makefile
$(AR) r librfxswf$(A) $(rfxswf_objects) rfxswf.$(O) drawer.$(O) MD5.$(O) $(lame_in_source) $(h263_objects) $(as12compiler_in_source) $(as3compiler_objects)
clean:
rm -f *.o *.obj *.lo *.a *.lib *.la gmon.out
- for dir in art modules devices swf as3 h.263;do rm -f $$dir/*.o $$dir/*.obj $$dir/*.lo $$dir/*.a $$dir/*.lib $$dir/*.la $$dir/gmon.out;done
+ for dir in modules devices swf as3 h.263;do rm -f $$dir/*.o $$dir/*.obj $$dir/*.lo $$dir/*.a $$dir/*.lib $$dir/*.la $$dir/gmon.out;done
cd lame && $(MAKE) clean && cd .. || true
cd action && $(MAKE) clean && cd ..
cd python && $(MAKE) clean && cd ..
internal_t*i = (internal_t*)dev->internal;
gfxpoly_t* oldclip = i->clip?i->clip->poly:0;
- gfxpoly_t* poly = gfxpoly_fillToPoly(line);
+ gfxpoly_t* poly = gfxpoly_from_fill(line, DEFAULT_GRID);
if(poly)
i->good_polygons++;
else
currentclip = 0;
type = 1;
} else if(!poly && oldclip) {
- gfxline_t*oldclipline = gfxpoly_to_gfxline(oldclip);
+ gfxline_t*oldclipline = gfxline_from_gfxpoly(oldclip);
i->out->startclip(i->out,oldclipline);
i->out->startclip(i->out,line);
currentclip = 0;
if(intersection) {
i->good_polygons++;
// this case is what usually happens
- gfxpoly_free(poly);poly=0;
+ gfxpoly_destroy(poly);poly=0;
currentclip = intersection;
type = 0;
} else {
i->bad_polygons++;
- gfxline_t*oldclipline = gfxpoly_to_gfxline(oldclip);
+ gfxline_t*oldclipline = gfxline_from_gfxpoly(oldclip);
i->out->startclip(i->out, oldclipline);
currentclip = poly;
type = 1;
clip_t*old = i->clip;
i->clip = i->clip->next;
if(old->poly) {
- gfxpoly_free(old->poly);old->poly = 0;
+ gfxpoly_destroy(old->poly);old->poly = 0;
}
int t;
for(t=0;t<old->openclips;t++)
gfxpoly_t*old = i->polyunion;
gfxpoly_t*newpoly = gfxpoly_union(poly,i->polyunion);
i->polyunion = newpoly;
- gfxpoly_free(old);
+ gfxpoly_destroy(old);
}
}
gfxpoly_t*old = poly;
if(poly) {
poly = gfxpoly_intersect(poly, i->clip->poly);
- gfxpoly_free(old);
+ gfxpoly_destroy(old);
}
}
gfxline_t*gfxline = 0;
if(poly) {
// this is the case where everything went right
- gfxline_t*line = gfxpoly_to_gfxline(poly);
- gfxpoly_free(poly);
+ gfxline_t*line = gfxline_from_gfxpoly(poly);
+ gfxpoly_destroy(poly);
*ok = 1;
return line;
} else {
/* convert current clipping from a polygon to an
actual "startclip" written to the output */
assert(i->clip->openclips <= 1);
- gfxline_t*clipline = gfxpoly_to_gfxline(i->clip->poly);
+ gfxline_t*clipline = gfxline_from_gfxpoly(i->clip->poly);
i->out->startclip(i->out, clipline);
gfxline_free(clipline);
- gfxpoly_free(i->clip->poly);i->clip->poly = 0;
+ gfxpoly_destroy(i->clip->poly);i->clip->poly = 0;
i->clip->openclips++;
return 0;
} else {
dbg("polyops_stroke");
internal_t*i = (internal_t*)dev->internal;
- gfxpoly_t* poly = gfxpoly_strokeToPoly(line, width, cap_style, joint_style, miterLimit);
+ gfxpoly_t* poly = gfxpoly_from_stroke(line, width, cap_style, joint_style, miterLimit, DEFAULT_GRID);
char ok = 0;
gfxline_t*line2 = handle_poly(dev, poly, &ok);
dbg("polyops_fill");
internal_t*i = (internal_t*)dev->internal;
- gfxpoly_t*poly = gfxpoly_fillToPoly(line);
+ gfxpoly_t*poly = gfxpoly_from_fill(line, DEFAULT_GRID);
char ok = 0;
gfxline_t*line2 = handle_poly(dev, poly, &ok);
dbg("polyops_fillbitmap");
internal_t*i = (internal_t*)dev->internal;
- gfxpoly_t*poly = gfxpoly_fillToPoly(line);
+ gfxpoly_t*poly = gfxpoly_from_fill(line, DEFAULT_GRID);
char ok = 0;
gfxline_t*line2 = handle_poly(dev, poly, &ok);
dbg("polyops_fillgradient");
internal_t*i = (internal_t*)dev->internal;
- gfxpoly_t*poly = gfxpoly_fillToPoly(line);
+ gfxpoly_t*poly = gfxpoly_from_fill(line, DEFAULT_GRID);
char ok = 0;
gfxline_t*line2 = handle_poly(dev, poly, &ok);
if(i->clip && i->clip->poly) {
gfxbbox_t bbox = gfxline_getbbox(glyph);
- gfxpoly_t*dummybox = gfxpoly_createbox(bbox.xmin,bbox.ymin,bbox.xmax,bbox.ymax);
+ gfxpoly_t*dummybox = gfxpoly_createbox(bbox.xmin,bbox.ymin,bbox.xmax,bbox.ymax, DEFAULT_GRID);
char ok=0;
gfxline_t*gfxline = handle_poly(dev, dummybox, &ok);
if(i->polyunion) {
- gfxpoly_free(i->polyunion);i->polyunion=0;
+ gfxpoly_destroy(i->polyunion);i->polyunion=0;
} else {
if(i->bad_polygons) {
msg("<notice> --flatten success rate: %.1f%% (%d failed polygons)", i->good_polygons*100.0 / (i->good_polygons + i->bad_polygons), i->bad_polygons);
gfxline_t*gfxdevice_union_getunion(struct _gfxdevice*dev)
{
internal_t*i = (internal_t*)dev->internal;
- return gfxpoly_to_gfxline(i->polyunion);
+ return gfxline_from_gfxpoly(i->polyunion);
}
void gfxdevice_removeclippings_init(gfxdevice_t*dev, gfxdevice_t*out)
dev->finish = polyops_finish;
i->out = out;
- i->polyunion = gfxpoly_strokeToPoly(0, 0, gfx_capButt, gfx_joinMiter, 0);
+ /* create empty polygon */
+ i->polyunion = gfxpoly_from_stroke(0, 0, gfx_capButt, gfx_joinMiter, 0, DEFAULT_GRID);
}
if(has_dots)
gfxline_fix_short_edges(line);
/* we need to convert the line into a polygon */
- gfxpoly_t* poly = gfxpoly_strokeToPoly(line, width, cap_style, joint_style, miterLimit);
- gfxline_t*gfxline = gfxpoly_to_gfxline(poly);
+ gfxpoly_t* poly = gfxpoly_from_stroke(line, width, cap_style, joint_style, miterLimit, DEFAULT_GRID);
+ gfxline_t*gfxline = gfxline_from_gfxpoly(poly);
dev->fill(dev, gfxline, color);
gfxline_free(gfxline);
- gfxpoly_free(poly);
+ gfxpoly_destroy(poly);
return;
}
#endif
#include <stdio.h>
-#include "../lib/mem.h"
-#include "../lib/gfxdevice.h"
-#include "../lib/gfxtools.h"
+#include "mem.h"
+#include "gfxdevice.h"
+#include "gfxtools.h"
+
+/* A "grid" value is the granularity at which polygon intersection operates.
+ It usually makes sense this to the smallest value that can actually be represented
+ in the output device (like 0.05 = 1 twip for SWF). */
+#define DEFAULT_GRID (0.05)
typedef struct _gfxpoly {
} gfxpoly_t;
-void gfxpoly_free(gfxpoly_t*);
+void gfxpoly_destroy(gfxpoly_t*poly);
/* constructors */
-gfxpoly_t* gfxpoly_fillToPoly(gfxline_t*line);
-gfxpoly_t* gfxpoly_strokeToPoly(gfxline_t*line, gfxcoord_t width, gfx_capType cap_style, gfx_joinType joint_style, double miterLimit);
-gfxpoly_t* gfxpoly_createbox(double x1, double y1,double x2, double y2);
+gfxpoly_t* gfxpoly_from_fill(gfxline_t*line, double gridsize);
+gfxpoly_t* gfxpoly_from_stroke(gfxline_t*line, gfxcoord_t width, gfx_capType cap_style, gfx_joinType joint_style, gfxcoord_t miterLimit, double gridsize);
-/* boolean operations */
-gfxpoly_t* gfxpoly_intersect(gfxpoly_t*line1, gfxpoly_t*line2);
-gfxpoly_t* gfxpoly_union(gfxpoly_t*line1, gfxpoly_t*line2);
+/* operators */
+gfxpoly_t* gfxpoly_intersect(gfxpoly_t*p1, gfxpoly_t*p2);
+gfxpoly_t* gfxpoly_union(gfxpoly_t*p1, gfxpoly_t*p2);
-/* other things */
-gfxline_t* gfxpoly_to_gfxline(gfxpoly_t*poly);
-gfxline_t* gfxline_circularToEvenOdd(gfxline_t*line);
+/* conversion functions */
+gfxpoly_t* gfxpoly_createbox(double x1, double y1,double x2, double y2, double gridsize);
+gfxline_t* gfxline_from_gfxpoly(gfxpoly_t*poly);
+gfxline_t* gfxpoly_circular_to_evenodd(gfxline_t*line, double gridsize);
#ifdef __cplusplus
}
#include "../mem.h"
#include "poly.h"
#include "convert.h"
+#include "wind.h"
/* factor that determines into how many line fragments a spline is converted */
#define SUBFRACTION (2.4)
return l;
}
+static windcontext_t onepolygon = {1};
+gfxline_t* gfxpoly_circular_to_evenodd(gfxline_t*line, double gridsize)
+{
+ gfxpoly_t*poly = gfxpoly_from_fill(line, gridsize);
+ gfxpoly_t*poly2 = gfxpoly_process(poly, 0, &windrule_circular, &onepolygon);
+ gfxline_t*line2 = gfxline_from_gfxpoly(poly2);
+ gfxpoly_destroy(poly);
+ gfxpoly_destroy(poly2);
+ return line2;
+}
+
+gfxpoly_t* gfxpoly_createbox(double x1, double y1,double x2, double y2, double gridsize)
+{
+ gfxline_t* line = gfxline_makerectangle(x1, y1, x2, y2);
+ gfxpoly_t* poly = gfxpoly_from_fill(line, gridsize);
+ gfxline_free(line);
+ return poly;
+}
+
gfxline_t*gfxline_from_gfxpoly(gfxpoly_t*poly);
+gfxline_t* gfxpoly_circular_to_evenodd(gfxline_t*line, double gridsize);
+gfxpoly_t* gfxpoly_createbox(double x1, double y1,double x2, double y2, double gridsize);
+
#endif //__poly_convert_h__
}
if(flags&STROKE_FILL) {
- gfxpoly_t* poly = gfxpoly_strokeToPoly(line, width, capType, joinType, miterLimit);
- gfxline_t*gfxline = gfxpoly_to_gfxline(poly);
+ gfxpoly_t* poly = gfxpoly_from_stroke(line, width, capType, joinType, miterLimit, DEFAULT_GRID);
+ gfxline_t*gfxline = gfxline_from_gfxpoly(poly);
if(getLogLevel() >= LOGLEVEL_TRACE) {
dump_outline(gfxline);
}
device->fill(device, gfxline, &col);
}
gfxline_free(gfxline);
- gfxpoly_free(poly);
+ gfxpoly_destroy(poly);
} else {
if(flags&STROKE_CLIP)
msg("<error> Stroke&clip not supported at the same time");
msg("<trace> clip");
gfxline_t*line = gfxPath_to_gfxline(state, path, 1, user_movex + clipmovex, user_movey + clipmovey);
if(config_optimize_polygons) {
- gfxline_t*line2 = gfxline_circularToEvenOdd(line);
+ gfxline_t*line2 = gfxpoly_circular_to_evenodd(line, DEFAULT_GRID);
gfxline_free(line);
line = line2;
}
GfxPath * path = state->getPath();
gfxline_t*line= gfxPath_to_gfxline(state, path, 1, user_movex + clipmovex, user_movey + clipmovey);
if(config_optimize_polygons) {
- gfxline_t*line2 = gfxline_circularToEvenOdd(line);
+ gfxline_t*line2 = gfxpoly_circular_to_evenodd(line, DEFAULT_GRID);
gfxline_free(line);
line = line2;
}
xxpdf$(E): $(xpdf_objects) $(xpdfapp_objects) $(splash_objects)
$(LL) $(CPPFLAGS) -DXPDFEXE -g -I xpdf -I . $(xpdfapp_objects) $(xpdf_objects) $(splash_objects) xpdf/parseargs.c -o xxpdf$(E) $(LIBS) -lXm -lX11
-pdftoppm$(E): $(xpdf_objects) xpdf/Splash*.cc
- $(LL) $(CPPFLAGS) -DXPDFEXE -g -I xpdf -I . xpdf/pdftoppm.cc $(xpdf_objects) xpdf/Splash*.cc xpdf/parseargs.c -o pdftoppm$(E) $(LIBS)
+pdftoppm$(E): $(xpdf_objects) $(splash_objects)
+ $(LL) $(CPPFLAGS) -DXPDFEXE -g -I xpdf -I . xpdf/pdftoppm.cc $(xpdf_objects) $(splash_objects) xpdf/parseargs.c -o pdftoppm$(E) $(LIBS)
pdftotext$(E): $(xpdf_objects) $(splash_objects)
$(LL) $(CPPFLAGS) -DXPDFEXE -g -I xpdf -I . xpdf/pdftotext.cc $(xpdf_objects) xpdf/TextOutput*.cc xpdf/UnicodeType*.cc xpdf/parseargs.c -o pdftotext$(E) $(LIBS)
MAKEFILES="${name}/src/Makefile.in \
${name}/lib/readers/Makefile.in \
-${name}/lib/art/Makefile.in \
${name}/lib/Makefile.in \
${name}/avi2swf/Makefile.in \
${name}/lib/pdf/Makefile.in \
${name}/lib/pdf/xpdf/XRef.h \
${name}/lib/pdf/aconf.h \
${name}/lib/pdf/xpdf/config.h \
-${name}/lib/art/art_config.h \
-${name}/lib/art/config.h \
${name}/lib/pdf/xpdf/gfile.cc \
${name}/lib/pdf/xpdf/gfile.h \
${name}/lib/pdf/xpdf/gmem.cc \
${name}/lib/pdf/xpdf/SplashXPath.cc \
${name}/lib/pdf/xpdf/SplashXPath.h \
${name}/lib/pdf/xpdf/SplashXPathScanner.cc \
-${name}/lib/pdf/xpdf/SplashXPathScanner.h \
-${name}/lib/art/art_affine.h \
-${name}/lib/art/art_alphagamma.h \
-${name}/lib/art/art_bpath.h \
-${name}/lib/art/art_filterlevel.h \
-${name}/lib/art/art_gray_svp.h \
-${name}/lib/art/art_misc.h \
-${name}/lib/art/art_pathcode.h \
-${name}/lib/art/art_pixbuf.h \
-${name}/lib/art/art_point.h \
-${name}/lib/art/art_rect.h \
-${name}/lib/art/art_rect_svp.h \
-${name}/lib/art/art_rect_uta.h \
-${name}/lib/art/art_render.h \
-${name}/lib/art/art_render_gradient.h \
-${name}/lib/art/art_render_mask.h \
-${name}/lib/art/art_render_svp.h \
-${name}/lib/art/art_rgb.h \
-${name}/lib/art/art_rgb_a_affine.h \
-${name}/lib/art/art_rgb_affine.h \
-${name}/lib/art/art_rgb_affine_private.h \
-${name}/lib/art/art_rgb_bitmap_affine.h \
-${name}/lib/art/art_rgb_pixbuf_affine.h \
-${name}/lib/art/art_rgb_rgba_affine.h \
-${name}/lib/art/art_rgb_svp.h \
-${name}/lib/art/art_rgba.h \
-${name}/lib/art/art_svp.h \
-${name}/lib/art/art_svp_intersect.h \
-${name}/lib/art/art_svp_ops.h \
-${name}/lib/art/art_svp_point.h \
-${name}/lib/art/art_svp_render_aa.h \
-${name}/lib/art/art_svp_vpath.h \
-${name}/lib/art/art_svp_vpath_stroke.h \
-${name}/lib/art/art_svp_wind.h \
-${name}/lib/art/art_uta.h \
-${name}/lib/art/art_uta_ops.h \
-${name}/lib/art/art_uta_rect.h \
-${name}/lib/art/art_uta_svp.h \
-${name}/lib/art/art_uta_vpath.h \
-${name}/lib/art/art_vpath.h \
-${name}/lib/art/art_vpath_bpath.h \
-${name}/lib/art/art_vpath_dash.h \
-${name}/lib/art/art_vpath_svp.h \
-${name}/lib/art/libart.h \
-${name}/lib/art/art_affine.c \
-${name}/lib/art/art_alphagamma.c \
-${name}/lib/art/art_bpath.c \
-${name}/lib/art/art_gray_svp.c \
-${name}/lib/art/art_misc.c \
-${name}/lib/art/art_pixbuf.c \
-${name}/lib/art/art_rect.c \
-${name}/lib/art/art_rect_svp.c \
-${name}/lib/art/art_rect_uta.c \
-${name}/lib/art/art_render.c \
-${name}/lib/art/art_render_gradient.c \
-${name}/lib/art/art_render_mask.c \
-${name}/lib/art/art_render_svp.c \
-${name}/lib/art/art_rgb.c \
-${name}/lib/art/art_rgb_affine.c \
-${name}/lib/art/art_rgb_a_affine.c \
-${name}/lib/art/art_rgb_affine_private.c \
-${name}/lib/art/art_rgb_bitmap_affine.c \
-${name}/lib/art/art_rgb_pixbuf_affine.c \
-${name}/lib/art/art_rgb_rgba_affine.c \
-${name}/lib/art/art_rgb_svp.c \
-${name}/lib/art/art_rgba.c \
-${name}/lib/art/art_svp.c \
-${name}/lib/art/art_svp_intersect.c \
-${name}/lib/art/art_svp_ops.c \
-${name}/lib/art/art_svp_point.c \
-${name}/lib/art/art_svp_render_aa.c \
-${name}/lib/art/art_svp_vpath.c \
-${name}/lib/art/art_svp_vpath_stroke.c \
-${name}/lib/art/art_svp_wind.c \
-${name}/lib/art/art_uta.c \
-${name}/lib/art/art_uta_ops.c \
-${name}/lib/art/art_uta_rect.c \
-${name}/lib/art/art_uta_svp.c \
-${name}/lib/art/art_uta_vpath.c \
-${name}/lib/art/art_vpath.c \
-${name}/lib/art/art_vpath_bpath.c \
-${name}/lib/art/art_vpath_dash.c \
-${name}/lib/art/art_vpath_svp.c"
+${name}/lib/pdf/xpdf/SplashXPathScanner.h"
PYTHON="${name}/lib/python/Makefile.in \
${name}/lib/python/SWF.c \