int config_enablezlib;
int config_insertstoptag;
int config_flashversion;
+ int config_reordertags;
int config_splinemaxerror;
int config_fontsplinemaxerror;
int config_filloverlap;
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;
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);
void gfxdevice_swf_init(gfxdevice_t* dev)
{
memset(dev, 0, sizeof(gfxdevice_t));
+
+ dev->name = "swf";
+
dev->internal = init_internal_struct();
dev->startpage = swf_startframe;
changeRect(dev, i->tag, i->bboxrectpos, &i->bboxrect);
- msg("<trace> Placing shape id %d", i->shapeid);
+ msg("<trace> Placing shape ID %d", i->shapeid);
i->tag = swf_InsertTag(i->tag,ST_PLACEOBJECT2);
MATRIX m = i->page_matrix;
if(i->config_enablezlib || i->config_flashversion>=6) {
i->swf->compressed = 1;
}
+
+ if(i->config_reordertags)
+ swf_Optimize(i->swf);
}
int swfresult_save(gfxresult_t*gfx, char*filename)
}
}
+ msg("<trace> Placing link ID %d", buttonid);
i->tag = swf_InsertTag(i->tag,ST_PLACEOBJECT2);
if(posx!=0 || posy!=0) {
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")) {
i->config_linkcolor.a);
} else {
- fprintf(stderr, "unknown parameter: %s (=%s)\n", name, value);
return 0;
}
return 1;
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;
}
/// {
if(is_jpeg && i->config_jpegsubpixels) {
- newsizex = (int)(targetwidth*i->config_jpegsubpixels+0.5);
- newsizey = (int)(targetheight*i->config_jpegsubpixels+0.5);
+ newsizex = (int)(targetwidth*i->config_jpegsubpixels + 0.5);
+ newsizey = (int)(targetheight*i->config_jpegsubpixels + 0.5);
} else if(!is_jpeg && i->config_ppmsubpixels) {
- newsizex = (int)(targetwidth*i->config_ppmsubpixels+0.5);
- newsizey = (int)(targetheight*i->config_ppmsubpixels+0.5);
+ newsizex = (int)(targetwidth*i->config_ppmsubpixels + 0.5);
+ newsizey = (int)(targetheight*i->config_ppmsubpixels + 0.5);
}
/// }
- if(sizex<=0 || sizey<=0 || newsizex<=0 || newsizey<=0)
+ if(sizex<=0 || sizey<=0)
return -1;
+ if(newsizex<=0)
+ newsizex = 1;
+ if(newsizey<=0)
+ newsizey = 1;
/* TODO: cache images */
int num_colors = swf_ImageGetNumberOfPaletteEntries(mem,sizex,sizey,0);
int has_alpha = swf_ImageHasAlpha(mem,sizex,sizey);
- msg("<verbose> Drawing %dx%d %s%simage at size %dx%d (%dx%d), %s%d colors",
+ msg("<verbose> 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,*/
swf_ShapeSetEnd(i->tag);
swf_ShapeFree(shape);
+ msg("<trace> Placing bitmap ID %d", myshapeid);
i->tag = swf_InsertTag(i->tag,ST_PLACEOBJECT2);
CXFORM cxform2 = gfxcxform_to_cxform(cxform);
swf_ObjectPlace(i->tag,myshapeid,getNewDepth(dev),&i->page_matrix,&cxform2,NULL);
i->tag = swf_InsertTag(i->tag,ST_DEFINESHAPE3);
RGBA col;
memset(&col, 0, sizeof(RGBA));
+ col.a = 255;
SHAPE*shape;
swf_ShapeNew(&shape);
int fsid = swf_ShapeAddSolidFillStyle(shape,&col);
/* TODO: remember the bbox, and check all shapes against it */
+ msg("<trace> Placing clip ID %d", myshapeid);
i->tag = swf_InsertTag(i->tag,ST_PLACEOBJECT2);
i->cliptags[i->clippos] = i->tag;
i->clipshapes[i->clippos] = myshapeid;