X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=lib%2Fdevices%2Fswf.c;h=67fd829399cbf794b9a27d7ff9d3ca882005ef5b;hb=6a92be2177bbe5649327c75500b4e770372b8980;hp=366af3c34ef9814215e690f53c0d76db9665dd93;hpb=96ed1c1fb04930eb768bac70fd8379d08b23fe0d;p=swftools.git diff --git a/lib/devices/swf.c b/lib/devices/swf.c index 366af3c..67fd829 100644 --- a/lib/devices/swf.c +++ b/lib/devices/swf.c @@ -78,6 +78,7 @@ typedef struct _swfoutput_internal int config_enablezlib; int config_insertstoptag; int config_flashversion; + int config_reordertags; int config_splinemaxerror; int config_fontsplinemaxerror; int config_filloverlap; @@ -234,6 +235,7 @@ static swfoutput_internal* init_internal_struct() i->config_linktarget=0; i->config_internallinkfunction=0; i->config_externallinkfunction=0; + i->config_reordertags=1; i->config_linkcolor.r = i->config_linkcolor.g = i->config_linkcolor.b = 255; i->config_linkcolor.a = 0x40; @@ -738,6 +740,18 @@ static void endtext(gfxdevice_t*dev) putcharacters(dev, i->tag); swf_SetU8(i->tag,0); + + if(i->swf->fileVersion >= 8) { + i->tag = swf_InsertTag(i->tag, ST_CSMTEXTSETTINGS); + swf_SetU16(i->tag, i->textid); + //swf_SetU8(i->tag, /*subpixel grid*/(2<<3)|/*flashtype*/0x40); + //swf_SetU8(i->tag, /*grid*/(1<<3)|/*flashtype*/0x40); + //swf_SetU8(i->tag, /*grid*/(0<<3)|/*flashtype*/0x40); + swf_SetU8(i->tag, /*grid*/(1<<3)|/*no flashtype*/0x00); + swf_SetU32(i->tag, 0);//thickness + swf_SetU32(i->tag, 0);//sharpness + swf_SetU8(i->tag, 0);//reserved + } i->tag = swf_InsertTag(i->tag,ST_PLACEOBJECT2); swf_ObjectPlace(i->tag,i->textid,getNewDepth(dev),&i->page_matrix,NULL,NULL); @@ -1219,7 +1233,8 @@ void swfoutput_finalize(gfxdevice_t*dev) i->swf->compressed = 1; } - swf_Optimize(i->swf); + if(i->config_reordertags) + swf_Optimize(i->swf); } int swfresult_save(gfxresult_t*gfx, char*filename) @@ -1742,6 +1757,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, "reordertags")) { + i->config_reordertags = atoi(value); } else if(!strcmp(name, "internallinkfunction")) { i->config_internallinkfunction = strdup(value); } else if(!strcmp(name, "externallinkfunction")) { @@ -1827,10 +1844,10 @@ static CXFORM gfxcxform_to_cxform(gfxcxform_t* c) cx.r0 = (S16)(c->rr*256); cx.g0 = (S16)(c->gg*256); cx.b0 = (S16)(c->bb*256); - cx.a1 = c->t.a; - cx.r1 = c->t.r; - cx.g1 = c->t.g; - cx.b1 = c->t.b; + cx.a1 = c->ta; + cx.r1 = c->tr; + cx.g1 = c->tg; + cx.b1 = c->tb; return cx; } @@ -1885,10 +1902,10 @@ static int add_image(swfoutput_internal*i, gfximage_t*img, int targetwidth, int int num_colors = swf_ImageGetNumberOfPaletteEntries(mem,sizex,sizey,0); int has_alpha = swf_ImageHasAlpha(mem,sizex,sizey); - msg(" Drawing %dx%d %s%simage at size %dx%d (%dx%d), %s%d colors", + msg(" Drawing %dx%d %s%simage (id %d) at size %dx%d (%dx%d), %s%d colors", sizex, sizey, has_alpha?(has_alpha==2?"semi-transparent ":"transparent "):"", - is_jpeg?"jpeg-":"", + is_jpeg?"jpeg-":"", i->currentswfid+1, newsizex, newsizey, targetwidth, targetheight, /*newsizex, newsizey,*/