git.asbjorn.biz
/
swftools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
moved swf_ResetReadBits from rfxswf.c to rfxswf.h.
[swftools.git]
/
lib
/
rfxswf.c
diff --git
a/lib/rfxswf.c
b/lib/rfxswf.c
index
f56427a
..
e7cb0d8
100644
(file)
--- a/
lib/rfxswf.c
+++ b/
lib/rfxswf.c
@@
-65,11
+65,6
@@
U32 swf_GetTagLen(TAG * t) { return t->len; }
U8* swf_GetTagLenPtr(TAG * t) { return &(t->data[t->len]); }
U32 swf_GetTagPos(TAG * t) { return t->pos; }
U8* swf_GetTagLenPtr(TAG * t) { return &(t->data[t->len]); }
U32 swf_GetTagPos(TAG * t) { return t->pos; }
-// Basic Data Access Functions
-
-#define swf_ResetReadBits(tag) if (tag->readBit) { tag->pos++; tag->readBit = 0; }
-#define swf_ResetWriteBits(tag) if (tag->writeBit) { tag->writeBit = 0; }
-
// for future purpose: avoid high level lib functions to change tagpos/bitpos
#define swf_SaveTagPos(tag)
// for future purpose: avoid high level lib functions to change tagpos/bitpos
#define swf_SaveTagPos(tag)
@@
-78,9
+73,11
@@
U32 swf_GetTagPos(TAG * t) { return t->pos; }
void swf_SetTagPos(TAG * t,U32 pos)
{ swf_ResetReadBits(t);
if (pos<=t->len) t->pos = pos;
void swf_SetTagPos(TAG * t,U32 pos)
{ swf_ResetReadBits(t);
if (pos<=t->len) t->pos = pos;
- #ifdef DEBUG_RFXSWF
- else fprintf(stderr,"SetTagPos() out of bounds: TagID = %i\n",t->id);
- #endif
+ else {
+#ifdef DEBUG_RFXSWF
+ fprintf(stderr,"SetTagPos(%d) out of bounds: TagID = %i\n",pos, t->id);
+#endif
+ }
}
char* swf_GetString(TAG*t)
}
char* swf_GetString(TAG*t)
@@
-288,7
+285,7
@@
int swf_SetRGBA(TAG * t,RGBA * col)
void swf_GetRGBA(TAG * t, RGBA * col)
{
RGBA dummy;
void swf_GetRGBA(TAG * t, RGBA * col)
{
RGBA dummy;
- if(!col);
+ if(!col)
col = &dummy;
col->r = swf_GetU8(t);
col->g = swf_GetU8(t);
col = &dummy;
col->r = swf_GetU8(t);
col->g = swf_GetU8(t);
@@
-433,6
+430,8
@@
void swf_ExpandRect2(SRECT*src, SRECT*add)
{
if((add->xmin | add->ymin | add->xmax | add->ymax)==0)
return;
{
if((add->xmin | add->ymin | add->xmax | add->ymax)==0)
return;
+ if((src->xmin | src->ymin | src->xmax | src->ymax)==0)
+ *src = *add;
if(add->xmin < src->xmin)
src->xmin = add->xmin;
if(add->ymin < src->ymin)
if(add->xmin < src->xmin)
src->xmin = add->xmin;
if(add->ymin < src->ymin)
@@
-861,7
+860,7
@@
int swf_WriteTag2(struct writer_t*writer, TAG * t)
len = (t->id==ST_DEFINESPRITE)?swf_DefineSprite_GetRealSize(t):t->len;
len = (t->id==ST_DEFINESPRITE)?swf_DefineSprite_GetRealSize(t):t->len;
- short_tag = len<0x3f;
+ short_tag = len<0x3f&&(t->id!=ST_DEFINEBITSLOSSLESS&&t->id!=ST_DEFINEBITSLOSSLESS2);
if (writer)
{ if (short_tag)
if (writer)
{ if (short_tag)
@@
-1038,7
+1037,7
@@
void swf_FoldSprite(TAG * t)
do
{
do
{
- if(t->len<0x3f) {
+ if(t->len<0x3f&&t->id!=ST_DEFINEBITSLOSSLESS&&t->id!=ST_DEFINEBITSLOSSLESS2) {
swf_SetU16(sprtag,t->len|(t->id<<6));
} else {
swf_SetU16(sprtag,0x3f|(t->id<<6));
swf_SetU16(sprtag,t->len|(t->id<<6));
} else {
swf_SetU16(sprtag,0x3f|(t->id<<6));
@@
-1080,14
+1079,6
@@
void swf_FoldAll(SWF*swf)
}
}
}
}
-void swf_FoldAllTags(TAG*tag)
-{
- SWF swf;
- memset(&swf, 0, sizeof(swf));
- swf.firstTag = tag;
- swf_FoldAll(&swf);
-}
-
void swf_UnFoldAll(SWF*swf)
{
TAG*tag = swf->firstTag;
void swf_UnFoldAll(SWF*swf)
{
TAG*tag = swf->firstTag;
@@
-1211,6
+1202,7
@@
int swf_WriteSWF2(struct writer_t*writer, SWF * swf) // Writes SWF to file,
int fileSize = 0;
int inSprite = 0;
int writer_lastpos = 0;
int fileSize = 0;
int inSprite = 0;
int writer_lastpos = 0;
+ int ret;
if (!swf) return -1;
if (!writer) return -1; // the caller should provide a nullwriter, not 0, for querying SWF size
if (!swf) return -1;
if (!writer) return -1; // the caller should provide a nullwriter, not 0, for querying SWF size
@@
-1223,7
+1215,7
@@
int swf_WriteSWF2(struct writer_t*writer, SWF * swf) // Writes SWF to file,
if (swf->firstTag && swf_NextTag(swf->firstTag))
if (swf_GetTagID(swf_NextTag(swf->firstTag))!=ST_REFLEX)
if (swf->firstTag && swf_NextTag(swf->firstTag))
if (swf_GetTagID(swf_NextTag(swf->firstTag))!=ST_REFLEX)
- swf_SetBlock(swf_InsertTag(swf->firstTag,ST_REFLEX),"rfx",3);
+ swf_SetBlock(swf_InsertTagBefore(swf, swf->firstTag,ST_REFLEX),"rfx",3);
#endif // INSERT_RFX_TAG
#endif // INSERT_RFX_TAG
@@
-1300,7
+1292,7
@@
int swf_WriteSWF2(struct writer_t*writer, SWF * swf) // Writes SWF to file,
swf_SetU16(&t1,swf->frameRate);
swf_SetU16(&t1,swf->frameCount);
swf_SetU16(&t1,swf->frameRate);
swf_SetU16(&t1,swf->frameCount);
- int ret = writer->write(writer,b,swf_GetTagLen(&t1));
+ ret = writer->write(writer,b,swf_GetTagLen(&t1));
if (ret!=swf_GetTagLen(&t1))
{
#ifdef DEBUG_RFXSWF
if (ret!=swf_GetTagLen(&t1))
{
#ifdef DEBUG_RFXSWF
@@
-1403,6
+1395,7
@@
void swf_FreeTags(SWF * swf) // Frees all malloc'ed memory for t
free(t);
t = tnew;
}
free(t);
t = tnew;
}
+ swf->firstTag = 0;
}
// include advanced functions
}
// include advanced functions