From ef496df11f68c372d0888f102d53da008ce81f7c Mon Sep 17 00:00:00 2001 From: kramm Date: Sat, 26 Feb 2005 19:33:48 +0000 Subject: [PATCH] * re-added outline dumping for loglevel * fixed dashed/dotted line handling --- pdf2swf/SWFOutputDev.cc | 50 +++++++++++++++++++++++++++++++++++------------ 1 file changed, 37 insertions(+), 13 deletions(-) diff --git a/pdf2swf/SWFOutputDev.cc b/pdf2swf/SWFOutputDev.cc index 001c137..aca8d7c 100644 --- a/pdf2swf/SWFOutputDev.cc +++ b/pdf2swf/SWFOutputDev.cc @@ -634,6 +634,21 @@ gfxline_t* gfxPath_to_gfxline(GfxState*state, GfxPath*path, int closed) return (gfxline_t*)draw.result(&draw); } + +void dump_outline(gfxline_t*line) +{ + while(line) { + if(line->type == gfx_moveTo) { + msg(" | moveTo %.2f %.2f", line->x,line->y); + } else if(line->type == gfx_lineTo) { + msg(" | lineTo %.2f %.2f", line->x,line->y); + } else if(line->type == gfx_splineTo) { + msg(" | splineTo (%.2f %.2f) %.2f %.2f", line->sx,line->sy, line->x, line->y); + } + line = line->next; + } +} + /*---------------------------------------------------------------------------- * Primitive Graphic routines *----------------------------------------------------------------------------*/ @@ -668,21 +683,30 @@ void SWFOutputDev::stroke(GfxState *state) gfxline_t*line= gfxPath_to_gfxline(state, path, 0); int dashnum = 0; - double dashstart = 0; + double dashphase = 0; double * ldash = 0; - state->getLineDash(&ldash, &dashnum, &dashstart); + state->getLineDash(&ldash, &dashnum, &dashphase); + if(dashnum && ldash) { - float * dash = (float*)malloc(sizeof(float)*(dashnum+2)); - dash[0] = dashstart; + float * dash = (float*)malloc(sizeof(float)*(dashnum+1)); int t; + double cut = 0; + int fixzero = 0; + msg(" %d dashes", dashnum); + msg(" | phase: %f", dashphase); for(t=0;t | d%-3d: %f", t, ldash[t]); + } + dash[dashnum] = -1; + if(getLogLevel() >= LOGLEVEL_TRACE) { + dump_outline(line); } - dash[dashnum+1] = 0; - gfxline_t*line2 = gfxtool_dash_line(line, dash); + gfxline_t*line2 = gfxtool_dash_line(line, dash, dashphase); gfxline_free(line); line = line2; + msg(" After dashing:"); } if(getLogLevel() >= LOGLEVEL_TRACE) { @@ -692,7 +716,7 @@ void SWFOutputDev::stroke(GfxState *state) lineCap==0?"butt": (lineJoin==1?"round":"square"), dashnum ); - //gfxline_show(line, stdout); + dump_outline(line); } swfoutput_drawgfxline(&output, line, width, &col, capType, joinType, miterLimit); @@ -713,8 +737,8 @@ void SWFOutputDev::fill(GfxState *state) gfxline_t*line= gfxPath_to_gfxline(state, path, 1); if(getLogLevel() >= LOGLEVEL_TRACE) { - msg(" fill\n"); - //dump_outline(line); + msg(" fill %02x%02x%02x%02x\n", col.r, col.g, col.b, col.a); + dump_outline(line); } swfoutput_fillgfxline(&output, line, &col); @@ -736,7 +760,7 @@ void SWFOutputDev::eoFill(GfxState *state) if(getLogLevel() >= LOGLEVEL_TRACE) { msg(" eofill\n"); - //dump_outline(line); + dump_outline(line); } swfoutput_fillgfxline(&output, line, &col); @@ -749,7 +773,7 @@ void SWFOutputDev::clip(GfxState *state) if(getLogLevel() >= LOGLEVEL_TRACE) { msg(" clip\n"); - //dump_outline(line); + dump_outline(line); } swfoutput_startclip(&output, line); @@ -763,7 +787,7 @@ void SWFOutputDev::eoClip(GfxState *state) if(getLogLevel() >= LOGLEVEL_TRACE) { msg(" eoclip\n"); - //dump_outline(line); + dump_outline(line); } swfoutput_startclip(&output, line); -- 1.7.10.4