From 36dda3dbc6f9fb51d1f9dafa0f06e52a097df9ea Mon Sep 17 00:00:00 2001 From: kramm Date: Sun, 14 Oct 2007 21:02:18 +0000 Subject: [PATCH] added showclipshapes option --- lib/devices/swf.c | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/lib/devices/swf.c b/lib/devices/swf.c index 8b7e21f..24b090a 100644 --- a/lib/devices/swf.c +++ b/lib/devices/swf.c @@ -79,6 +79,7 @@ typedef struct _swfoutput_internal int config_insertstoptag; int config_flashversion; int config_reordertags; + int config_showclipshapes; int config_splinemaxerror; int config_fontsplinemaxerror; int config_filloverlap; @@ -235,6 +236,7 @@ static swfoutput_internal* init_internal_struct() i->config_filloverlap=0; i->config_protect=0; i->config_bboxvars=0; + i->config_showclipshapes=0; i->config_minlinewidth=0.05; i->config_caplinewidth=1; i->config_linktarget=0; @@ -1775,6 +1777,8 @@ int swf_setparameter(gfxdevice_t*dev, const char*name, const char*value) i->config_enablezlib = atoi(value); } else if(!strcmp(name, "bboxvars")) { i->config_bboxvars = atoi(value); + } else if(!strcmp(name, "showclipshapes")) { + i->config_showclipshapes = atoi(value); } else if(!strcmp(name, "reordertags")) { i->config_reordertags = atoi(value); } else if(!strcmp(name, "internallinkfunction")) { @@ -2045,6 +2049,34 @@ static void swf_fillbitmap(gfxdevice_t*dev, gfxline_t*line, gfximage_t*img, gfxm swf_ObjectPlace(i->tag,myshapeid,getNewDepth(dev),&i->page_matrix,&cxform2,NULL); } +static RGBA col_black = {255,0,0,0}; + +static void drawoutline(gfxdevice_t*dev, gfxline_t*line) +{ + swfoutput_internal*i = (swfoutput_internal*)dev->internal; + + int myshapeid = getNewID(dev); + i->tag = swf_InsertTag(i->tag,ST_DEFINESHAPE3); + + SHAPE*shape; + swf_ShapeNew(&shape); + int lsid = swf_ShapeAddLineStyle(shape,1,&col_black); + + swf_SetU16(i->tag,myshapeid); + SRECT r = gfxline_getSWFbbox(line); + swf_SetRect(i->tag,&r); + swf_SetShapeStyles(i->tag,shape); + swf_ShapeCountBits(shape,NULL,NULL); + swf_SetShapeBits(i->tag,shape); + swf_ShapeSetAll(i->tag,shape,UNDEFINED_COORD,UNDEFINED_COORD,lsid,0,0); + drawgfxline(dev, line); + swf_ShapeSetEnd(i->tag); + swf_ShapeFree(shape); + + i->tag = swf_InsertTag(i->tag,ST_PLACEOBJECT2); + swf_ObjectPlace(i->tag, myshapeid, getNewDepth(dev), 0,0,0); +} + static void swf_startclip(gfxdevice_t*dev, gfxline_t*line) { swfoutput_internal*i = (swfoutput_internal*)dev->internal; @@ -2058,6 +2090,9 @@ static void swf_startclip(gfxdevice_t*dev, gfxline_t*line) i->clippos --; } + if(i->config_showclipshapes) + drawoutline(dev, line); + int myshapeid = getNewID(dev); i->tag = swf_InsertTag(i->tag,ST_DEFINESHAPE3); RGBA col; -- 1.7.10.4