X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=src%2Fswfc.c;h=57f26f40437d1d73d9366e3909641976c5e62e84;hb=607c5dadd6089768b618cc99346de1b37a2c46f1;hp=75a12ae7be211d992540e5a3adb145d5785db720;hpb=f219233f84d1d5ca2574f66be5b9e085fc500216;p=swftools.git diff --git a/src/swfc.c b/src/swfc.c index 75a12ae..57f26f4 100644 --- a/src/swfc.c +++ b/src/swfc.c @@ -618,6 +618,7 @@ static void s_endSprite() currentdepth = stack[stackpos].olddepth; instances = stack[stackpos].oldinstances; + tag = swf_InsertTag(tag, ST_SHOWFRAME); tag = swf_InsertTag(tag, ST_END); tag = stack[stackpos].tag; @@ -788,15 +789,15 @@ void s_box(char*name, int width, int height, RGBA color, int linewidth, char*tex { SRECT r,r2; SHAPE* s; - int ls1,fs1=0; + int ls1=0,fs1=0; r2.xmin = 0; r2.ymin = 0; r2.xmax = width; r2.ymax = height; tag = swf_InsertTag(tag, ST_DEFINESHAPE3); swf_ShapeNew(&s); - ls1 = swf_ShapeAddLineStyle(s,linewidth,&color); - + if(linewidth) + ls1 = swf_ShapeAddLineStyle(s,linewidth>=20?linewidth-20:0,&color); if(texture) fs1 = addFillStyle(s, &r2, texture); @@ -833,11 +834,11 @@ void s_filled(char*name, char*outlinename, RGBA color, int linewidth, char*textu tag = swf_InsertTag(tag, ST_DEFINESHAPE3); swf_ShapeNew(&s); - ls1 = swf_ShapeAddLineStyle(s,linewidth,&color); + if(linewidth) + ls1 = swf_ShapeAddLineStyle(s,linewidth>=20?linewidth-20:0,&color); if(texture) fs1 = addFillStyle(s, &r2, texture); - else - syntaxerror("non filled outlines not yet supported- please supply a fill= argument"); + swf_SetU16(tag,id); rect.xmin = r2.xmin-linewidth-linewidth/2; rect.ymin = r2.ymin-linewidth-linewidth/2; @@ -846,8 +847,11 @@ void s_filled(char*name, char*outlinename, RGBA color, int linewidth, char*textu swf_SetRect(tag,&rect); swf_SetShapeStyles(tag, s); - swf_SetShapeBits(tag, outline->shape); //does not count bits! - swf_SetBlock(tag, outline->shape->data, (outline->shape->bitlen+7)/8); + swf_ShapeCountBits(s,0,0); + swf_RecodeShapeData(outline->shape->data, outline->shape->bitlen, 1, 1, + &s->data, &s->bitlen, s->bits.fill, s->bits.line); + swf_SetShapeBits(tag, s); + swf_SetBlock(tag, s->data, (s->bitlen+7)/8); swf_ShapeFree(s); s_addcharacter(name, id, tag, rect); @@ -858,14 +862,15 @@ void s_circle(char*name, int r, RGBA color, int linewidth, char*texture) { SRECT rect,r2; SHAPE* s; - int ls1,fs1=0; + int ls1=0,fs1=0; r2.xmin = r2.ymin = 0; r2.xmax = 2*r; r2.ymax = 2*r; tag = swf_InsertTag(tag, ST_DEFINESHAPE3); swf_ShapeNew(&s); - ls1 = swf_ShapeAddLineStyle(s,linewidth,&color); + if(linewidth) + ls1 = swf_ShapeAddLineStyle(s,linewidth>=20?linewidth-20:0,&color); if(texture) fs1 = addFillStyle(s, &r2, texture); swf_SetU16(tag,id); @@ -1106,6 +1111,12 @@ void s_sound(char*name, char*filename) samples = (U16*)wav2.data; numsamples = wav2.size/2; free(wav.data); +#ifdef WORDS_BIGENDIAN + /* swap bytes */ + for(t=0;t>8)&0xff | (samples[t]<<8)&0xff00; + } +#endif } tag = swf_InsertTag(tag, ST_DEFINESOUND); @@ -1241,14 +1252,10 @@ void s_outline(char*name, char*format, char*source) draw_string(&draw, source); draw.finish(&draw); shape = swf_ShapeDrawerToShape(&draw); - //shape2 = swf_ShapeToShape2(shape); - //bounds = swf_GetShapeBoundingBox(shape2); - //swf_Shape2Free(shape2); bounds = swf_ShapeDrawerGetBBox(&draw); draw.dealloc(&draw); - outline = (outline_t*)malloc(sizeof(outline_t)); - memset(outline, 0, sizeof(outline_t)); + outline = (outline_t*)rfx_calloc(sizeof(outline_t)); outline->shape = shape; outline->bbox = bounds; @@ -1637,8 +1644,8 @@ int parseTwip(char*str) if(*s<'0' || *s>'9') syntaxerror("Not a coordinate: \"%s\"", str); } - if(l>2 || (l==2 && (dot[1]!='0' || dot[1]!='5'))) { - warning("precision loss: %s converted to twip", str); + if(l>2 || (l==2 && (dot[1]!='0' && dot[1]!='5'))) { + warning("precision loss: %s converted to twip: %s", str, dot); dot[2] = 0; l=2; } @@ -2747,7 +2754,7 @@ static map_t parseArguments(char*command, char*pattern) } } if(pos==len) { - syntaxerror("don't know what to do with \"%s\". (All parameters for .%s already set)", text, command); + syntaxerror("Illegal argument \"%s\" to .%s", text, command); } } #if 0//def DEBUG