X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=lib%2Frfxswf.c;h=0e000060965b70e4302f4a2669aed417325bec83;hb=469e1e998167801f48345b52b98d8bcb282b9f53;hp=2c6161e0172706485a565fb8167d3b4c4eda37a4;hpb=78763d172d530ae1c23c0e19f3d2cc2933859264;p=swftools.git diff --git a/lib/rfxswf.c b/lib/rfxswf.c index 2c6161e..0e00006 100644 --- a/lib/rfxswf.c +++ b/lib/rfxswf.c @@ -16,20 +16,14 @@ #include "rfxswf.h" -#ifdef HAVE_LIBJPEG -#ifdef HAVE_JPEGLIB_H +#ifdef HAVE_JPEGLIB #define HAVE_BOOLEAN #include -#define _JPEGLIB_INCLUDED_ -#endif // HAVE_JPEGLIB_H -#endif // HAVE_LIBJPEG +#endif // HAVE_JPEGLIB -#ifdef HAVE_LIBZ -#ifdef HAVE_ZLIB_H +#ifdef HAVE_ZLIB #include -#define _ZLIB_INCLUDED_ -#endif // HAVE_ZLIB_H -#endif // HAVE_LIBZ +#endif // HAVE_ZLIB #define LAME #include "lame/lame.h" @@ -72,6 +66,13 @@ void swf_SetTagPos(TAG * t,U32 pos) #endif } +char* swf_GetString(TAG*t) +{ + char* str = ((char*)(&(t)->data[(t)->pos])); + while(swf_GetU8(t)); + return str; +} + U8 swf_GetU8(TAG * t) { swf_ResetReadBits(t); #ifdef DEBUG_RFXSWF @@ -322,7 +323,7 @@ int swf_CountBits(U32 v,int nbits) int swf_GetRect(TAG * t,SRECT * r) { int nbits; SRECT dummy; - if(!t) {r->xmin=r->xmax=r->ymin=r->ymax;return 0;} + if(!t) {r->xmin=r->xmax=r->ymin=r->ymax=0;return 0;} if (!r) r = &dummy; nbits = (int) swf_GetBits(t,5); r->xmin = swf_GetSBits(t,nbits); @@ -378,6 +379,8 @@ void swf_ExpandRect(SRECT*src, SPOINT add) } void swf_ExpandRect2(SRECT*src, SRECT*add) { + if((add->xmin | add->ymin | add->xmax | add->ymax)==0) + return; if(add->xmin < src->xmin) src->xmin = add->xmin; if(add->ymin < src->ymin) @@ -390,8 +393,8 @@ void swf_ExpandRect2(SRECT*src, SRECT*add) SPOINT swf_TurnPoint(SPOINT p, MATRIX* m) { SPOINT r; - r.x = (int)(m->sx*(1/65536.0)*p.x + m->r0*(1/65536.0)*p.y + 0.5) + m->tx; - r.y = (int)(m->r1*(1/65536.0)*p.x + m->sy*(1/65536.0)*p.y + 0.5) + m->ty; + r.x = (int)(m->sx*(1/65536.0)*p.x + m->r1*(1/65536.0)*p.y + 0.5) + m->tx; + r.y = (int)(m->r0*(1/65536.0)*p.x + m->sy*(1/65536.0)*p.y + 0.5) + m->ty; return r; } SRECT swf_TurnRect(SRECT r, MATRIX* m) @@ -637,6 +640,17 @@ TAG * swf_InsertTag(TAG * after,U16 id) // updates frames, if nescessary return t; } +void swf_ClearTag(TAG * t) +{ + if (t->data) free(t->data); + t->data = 0; + t->pos = 0; + t->len = 0; + t->readBit = 0; + t->writeBit = 0; + t->memsize = 0; +} + int swf_DeleteTag(TAG * t) { if (!t) return -1; @@ -1229,4 +1243,3 @@ void swf_FreeTags(SWF * swf) // Frees all malloc'ed memory for t #include "modules/swfbits.c" #include "modules/swfaction.c" #include "modules/swfsound.c" -