return reader->pos;
}
+SWF* swf_OpenSWF(char*filename)
+{
+ int fi = open(filename, O_RDONLY|O_BINARY);
+ if(fi<0) {
+ fprintf(stderr, "Failed to open %s\n", filename);
+ return 0;
+ }
+ SWF* swf = rfx_alloc(sizeof(SWF));
+ swf_ReadSWF(fi, swf);
+ close(fi);
+ return swf;
+}
+
int swf_ReadSWF(int handle, SWF * swf)
{
reader_t reader;
{
memset(swf, 0, sizeof(SWF));
swf->fileVersion=9;
- swf->fileAttributes=1; //as3
+ swf->fileAttributes=FILEATTRIBUTE_AS3; //as3
TAG*tag = swf->firstTag = swf_InsertTag(0, ST_RAWABC);
memfile_t*file = memfile_open(filename);
swf_SetBlock(tag, file->data, file->len);
if(swf->fileVersion >= 9) {
if(!has_fileattributes) {
- U32 flags = swf->fileAttributes|0x08; // 16 = has symbolclass tag | 8 = actionscript3 | 1 = usenetwork
+ U32 flags = swf->fileAttributes|FILEATTRIBUTE_AS3; // 16 = has symbolclass tag | 8 = actionscript3 | 1 = usenetwork
if(has_version_8_action && !has_version_9_action)
- flags &= ~0x08;
+ flags &= ~FILEATTRIBUTE_AS3;
TAG*fileattrib = swf_InsertTag(0, ST_FILEATTRIBUTES);
swf_SetU32(fileattrib, flags);
if(writer) {
if(swf_WriteTag2(writer, has_fileattributes)<0)
return -1;
}
- if(!has_scenedescription) {
+ if(0 && !has_scenedescription) {
TAG*scene = swf_InsertTag(0, ST_SCENEDESCRIPTION);
swf_SetU16(scene, 1);
swf_SetString(scene, (U8*)"Scene 1");
t = swf->firstTag;
frameCount = 0;
- len += WriteExtraTags(swf, 0);
+ if(swf->firstTag && !no_extra_tags) {
+ len += WriteExtraTags(swf, 0);
+ }
while(t) {
len += swf_WriteTag(-1,t);
if(t->id == ST_DEFINESPRITE && !swf_IsFolded(t)) inSprite++;
return -1;
}
- if(!no_extra_tags) {
+ if(swf->firstTag && !no_extra_tags) {
WriteExtraTags(swf, writer);
}
t = swf->firstTag;