From: kramm Date: Wed, 26 Mar 2008 12:57:26 +0000 (+0000) Subject: made compileable standalone X-Git-Tag: buttons-working~363 X-Git-Url: http://git.asbjorn.biz/?p=swftools.git;a=commitdiff_plain;h=644837a3d0f18ac76d55c9ba438246cb5a2927d6 made compileable standalone --- diff --git a/lib/modules/swfabc.c b/lib/modules/swfabc.c index 2598fad..74a00f9 100644 --- a/lib/modules/swfabc.c +++ b/lib/modules/swfabc.c @@ -22,6 +22,8 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#include "../rfxswf.h" + static unsigned AVM2_uint32toU30(unsigned val, char * out) { unsigned len = 0; diff --git a/lib/modules/swfbits.c b/lib/modules/swfbits.c index eda6829..4510c48 100644 --- a/lib/modules/swfbits.c +++ b/lib/modules/swfbits.c @@ -21,13 +21,29 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#include +#include +#include +#include "../../config.h" +#ifdef HAVE_ZLIB +#include +#include +#endif +#include +#include + +#ifdef HAVE_JPEGLIB +#define HAVE_BOOLEAN #ifdef __cplusplus extern "C" { #endif -#include "jpeglib.h" +#include #ifdef __cplusplus } #endif +#endif // HAVE_JPEGLIB + +#include "../rfxswf.h" #define OUTBUFFER_SIZE 0x8000 diff --git a/lib/modules/swfbutton.c b/lib/modules/swfbutton.c index 9a4cc39..230b2b1 100644 --- a/lib/modules/swfbutton.c +++ b/lib/modules/swfbutton.c @@ -21,6 +21,8 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#include "../rfxswf.h" + int swf_ButtonSetRecord(TAG * t,U8 state,U16 id,U16 layer,MATRIX * m,CXFORM * cx) { swf_SetU8(t,state); diff --git a/lib/modules/swfcgi.c b/lib/modules/swfcgi.c index f686f86..aa86e49 100644 --- a/lib/modules/swfcgi.c +++ b/lib/modules/swfcgi.c @@ -23,6 +23,9 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#include +#include +#include "../rfxswf.h" #define ishex(x) (((x) >= '0' && (x) <= '9') || ((x) >= 'a' && (x) <= 'f') || ((x) >= 'A' && (x) <= 'F')) diff --git a/lib/modules/swfdraw.c b/lib/modules/swfdraw.c index 2613e0c..c718b18 100644 --- a/lib/modules/swfdraw.c +++ b/lib/modules/swfdraw.c @@ -1,5 +1,7 @@ // swfdraw.c +#include "../rfxswf.h" + typedef struct _SWFSHAPEDRAWER { SHAPE*shape; diff --git a/lib/modules/swfdump.c b/lib/modules/swfdump.c index 749a1d6..f51d6c0 100644 --- a/lib/modules/swfdump.c +++ b/lib/modules/swfdump.c @@ -21,6 +21,10 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#include +#include +#include "../rfxswf.h" + void swf_DumpHeader(FILE * f,SWF * swf) { if (!f) f = stderr; fprintf(f,"File size\t%u\n",swf->fileSize); diff --git a/lib/modules/swffilter.c b/lib/modules/swffilter.c index 38a026e..02ef5db 100644 --- a/lib/modules/swffilter.c +++ b/lib/modules/swffilter.c @@ -1,3 +1,7 @@ +#include +#include +#include "../rfxswf.h" + char* filtername[] = {"dropshadow","blur","glow","bevel","gradientglow","convolution","colormatrix","gradientbevel", 0}; void swf_SetFilter(TAG*tag, FILTER*filter) diff --git a/lib/modules/swffont.c b/lib/modules/swffont.c index 75069e3..0297176 100644 --- a/lib/modules/swffont.c +++ b/lib/modules/swffont.c @@ -21,6 +21,10 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#include +#include +#include "../rfxswf.h" + static int loadfont_scale = 4; static int skip_unused = 1; static int full_unicode = 0; diff --git a/lib/modules/swfobject.c b/lib/modules/swfobject.c index ca6c6f3..05316b9 100644 --- a/lib/modules/swfobject.c +++ b/lib/modules/swfobject.c @@ -21,19 +21,8 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#define PF_MOVE 0x01 -#define PF_CHAR 0x02 -#define PF_MATRIX 0x04 -#define PF_CXFORM 0x08 -#define PF_RATIO 0x10 -#define PF_NAME 0x20 -#define PF_CLIPDEPTH 0x40 -#define PF_ACTIONEVENT 0x80 - -#define PF2_FILTERS 0x01 -#define PF2_BLENDMODE 0x02 -#define PF2_ASBITMAP 0x04 -//... +#include "../rfxswf.h" + char*blendModeNames[] = {"normal","normal2","layer","multiply", "screen","lighten", "darken","add", diff --git a/lib/modules/swfrender.c b/lib/modules/swfrender.c index 719559b..e246978 100644 --- a/lib/modules/swfrender.c +++ b/lib/modules/swfrender.c @@ -23,6 +23,9 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include +#include +#include +#include "../rfxswf.h" /* one bit flag: */ #define clip_type 0 @@ -625,6 +628,87 @@ static void fill_bitmap(RGBA*line, int*z, int y, int x1, int x2, MATRIX*m, bitma } while(++xsx*fmultiply/80, m21= m->r1*fmultiply/80; + double m12= m->r0*fmultiply/80, m22= m->sy*fmultiply/80; + double rx = m->tx*fmultiply/20.0; + double ry = m->ty*fmultiply/20.0; + + double det = m11*m22 - m12*m21; + if(fabs(det) < 0.0005) { + /* x direction equals y direction- the image is invisible */ + return; + } + det = 1.0/det; + + RGBA palette[512]; + RGBA oldcol = g->rgba[0]; + int r0 = g->ratios[0]*2; + int t; + for(t=0;tnum;t++) { + int r1 = g->ratios[t]*2; + RGBA newcol = g->rgba[t]; + if(r0 == r1) + continue; + //printf("%d %d->%d %02x%02x%02x%02x->%02x%02x%02x%02x\n", + // t, r0, r1, oldcol.r,oldcol.g,oldcol.b,oldcol.a, + // newcol.r,newcol.g,newcol.b,newcol.a); + double f = 1.0 / (r1-r0); + double p0 = 1; + double p1 = 0; + int s; + for(;r0<=r1;r0++) { + palette[r0].r = oldcol.r*p0 + newcol.r*p1; + palette[r0].g = oldcol.g*p0 + newcol.g*p1; + palette[r0].b = oldcol.b*p0 + newcol.b*p1; + palette[r0].a = oldcol.a*p0 + newcol.a*p1; + p0 -= f; + p1 += f; + } + oldcol = newcol; + } + for(t=r0;t<512;t++) + palette[t] = oldcol; + + do { + if(depth >= z[x]) { + RGBA col; + double xx = ( (x - rx) * m22 - (y - ry) * m21)*det; + double yy = (- (x - rx) * m12 + (y - ry) * m11)*det; + int ainv; + ainv = 255-col.a; + + if(type == FILL_LINEAR) { + int xr = xx*256; + if(xr<-256) + xr = -256; + if(xr>255) + xr = 255; + col = palette[xr+256]; + } else { + int xr = sqrt(xx*xx+yy*yy)*511; + if(xr<0) + xr = 0; + if(xr>511) + xr = 511; + col = palette[xr]; + } + + line[x].r = clamp(((line[x].r*ainv)>>8)+col.r); + line[x].g = clamp(((line[x].g*ainv)>>8)+col.g); + line[x].b = clamp(((line[x].b*ainv)>>8)+col.b); + line[x].a = 255; + + z[x] = depth; + } + } while(++xm, b, /*clipped?*/f->type&1, l->p->depth, i->multiply); } + } else if(f->type == FILL_LINEAR || f->type == FILL_RADIAL) { + fill_gradient(line, zline, y, x1, x2, &f->m, &f->gradient, f->type, l->p->depth, i->multiply); } else { fprintf(stderr, "Undefined fillmode: %02x\n", f->type); } diff --git a/lib/modules/swfshape.c b/lib/modules/swfshape.c index 3163556..b715248 100644 --- a/lib/modules/swfshape.c +++ b/lib/modules/swfshape.c @@ -21,6 +21,8 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#include "../rfxswf.h" + #define SF_MOVETO 0x01 #define SF_FILL0 0x02 #define SF_FILL1 0x04 diff --git a/lib/modules/swftext.c b/lib/modules/swftext.c index 2a9a025..ee3923e 100644 --- a/lib/modules/swftext.c +++ b/lib/modules/swftext.c @@ -22,6 +22,8 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#include "../rfxswf.h" + U32 readUTF8char(U8 ** text) { U32 c = 0; @@ -118,7 +120,6 @@ int swf_FontEnumerate(SWF * swf, void (*FontCallback) (void*, U16, U8 *), void*s int l; U8 s[257]; s[0] = 0; - swf_SaveTagPos(t); swf_SetTagPos(t, 0); id = swf_GetU16(t); @@ -130,8 +131,6 @@ int swf_FontEnumerate(SWF * swf, void (*FontCallback) (void*, U16, U8 *), void*s } (FontCallback) (self, id, s); - - swf_RestoreTagPos(t); } } t = swf_NextTag(t); @@ -142,7 +141,6 @@ int swf_FontEnumerate(SWF * swf, void (*FontCallback) (void*, U16, U8 *), void*s int swf_FontExtract_DefineFont(int id, SWFFONT * f, TAG * t) { U16 fid; - swf_SaveTagPos(t); swf_SetTagPos(t, 0); fid = swf_GetU16(t); @@ -164,8 +162,6 @@ int swf_FontExtract_DefineFont(int id, SWFFONT * f, TAG * t) for (i = 0; i < n; i++) swf_GetSimpleShape(t, &f->glyph[i].shape); } - - swf_RestoreTagPos(t); return id; } @@ -174,7 +170,6 @@ int swf_FontExtract_DefineFontInfo(int id, SWFFONT * f, TAG * t) U16 fid; U16 maxcode; U8 flags; - swf_SaveTagPos(t); swf_SetTagPos(t, 0); fid = swf_GetU16(t); @@ -229,15 +224,12 @@ int swf_FontExtract_DefineFontInfo(int id, SWFFONT * f, TAG * t) for (i = 0; i < f->numchars; i++) f->ascii2glyph[f->glyph2ascii[i]] = i; } - - swf_RestoreTagPos(t); return id; } int swf_FontExtract_GlyphNames(int id, SWFFONT * f, TAG * tag) { U16 fid; - swf_SaveTagPos(tag); swf_SetTagPos(tag, 0); fid = swf_GetU16(tag); @@ -250,8 +242,6 @@ int swf_FontExtract_GlyphNames(int id, SWFFONT * f, TAG * tag) f->glyphnames[t] = strdup(swf_GetString(tag)); } } - - swf_RestoreTagPos(tag); return id; } @@ -264,7 +254,6 @@ int swf_FontExtract_DefineFont2(int id, SWFFONT * font, TAG * tag) U32 offset_start; U32 *offset; U8 flags1, flags2, namelen; - swf_SaveTagPos(tag); swf_SetTagPos(tag, 0); font->version = 2; fid = swf_GetU16(tag); @@ -380,7 +369,6 @@ int swf_FontExtract_DefineFont2(int id, SWFFONT * font, TAG * tag) } } } - swf_RestoreTagPos(t); return font->id; } @@ -405,7 +393,6 @@ swf_FontExtract_DefineTextCallback(int id, SWFFONT * f, TAG * t, int jobs, memset(&color, 0, sizeof(color)); - swf_SaveTagPos(t); swf_SetTagPos(t, 0); cid = swf_GetU16(t); @@ -476,7 +463,6 @@ swf_FontExtract_DefineTextCallback(int id, SWFFONT * f, TAG * t, int jobs, } } - swf_RestoreTagPos(t); return id; } diff --git a/lib/modules/swftools.c b/lib/modules/swftools.c index 1b01357..e7e03f6 100644 --- a/lib/modules/swftools.c +++ b/lib/modules/swftools.c @@ -23,6 +23,8 @@ // Matrix & Math tools for SWF files +#include "../rfxswf.h" + #define S64 long long SFIXED RFXSWF_SP(SFIXED a1,SFIXED a2,SFIXED b1,SFIXED b2) { S64 a = ((S64)a1*(S64)b1+(S64)a2*(S64)b2)>>16;