void swf::SWF::continueWith(buf_type *& buf) { _buffer = &buf; //(*_buffer) += 4;//want to do this but outBuf is cropped at the moment header.continueWith(buf); RecordHeader * rh; std::vector<AbstractTag *> vt; AbstractTag * t; /* * Tag value from reverse index */ short tv; do { rh = new RecordHeader(); rh->fromSWF(buf); tv = rh->type(); switch (tv) { case 0: printf("%2i End\n", tv); buf += rh->length(); break; case 1: //printf("%2i ShowFrame\n", tv); //buf += rh->length(); t = new ShowFrame; t -> recordHeader = rh; t -> fromSWF(buf); break; case 2: printf("%2i DefineShape\n", tv); buf += rh->length(); break; case 4: printf("%2i PlaceObject\n", tv); buf += rh->length(); break; case 5: printf("%2i RemoveObject\n", tv); buf += rh->length(); break; case 6: printf("%2i DefineBits\n", tv); buf += rh->length(); break; case 7: printf("%2i DefineButton\n", tv); buf += rh->length(); break; case 8: printf("%2i JPEGTables\n", tv); buf += rh->length(); break; case 9: //printf("%2i SetBackgroundColor\n", tv); //buf += rh->length(); t = new SetBackgroundColor; t -> recordHeader = rh; t -> fromSWF(buf); break; case 10: printf("%i DefineFont\n", tv); buf += rh->length(); break; case 11: printf("%i DefineText\n", tv); buf += rh->length(); break; case 12: printf("%i DoAction\n", tv); buf += rh->length(); break; case 13: printf("%i DefineFontInfo\n", tv); buf += rh->length(); break; case 14: printf("%i DefineSound\n", tv); buf += rh->length(); break; case 15: printf("%i StartSound\n", tv); buf += rh->length(); break; case 17: printf("%i DefineButtonSound\n", tv); buf += rh->length(); break; case 18: printf("%i SoundbufHead\n", tv); buf += rh->length(); break; case 19: printf("%i SoundbufBlock\n", tv); buf += rh->length(); break; case 20: printf("%i DefineBitsLossless\n", tv); buf += rh->length(); break; case 21: printf("%i DefineBitsJPEG2\n", tv); buf += rh->length(); break; case 22: printf("%i DefineShape2\n", tv); buf += rh->length(); break; case 23: printf("%i DefineButtonCxform\n", tv); buf += rh->length(); break; case 24: printf("%i Protect\n", tv); buf += rh->length(); break; case 26: //printf("%i PlaceObject2\n", tv); //buf += rh->length(); t = new PlaceObject2(*header.versionPtr()); t -> recordHeader = rh; t -> fromSWF(buf); break; case 28: printf("%i RemoveObject2\n", tv); buf += rh->length(); break; case 32: printf("%i DefineShape3\n", tv); buf += rh->length(); break; case 33: printf("%i DefineText2\n", tv); buf += rh->length(); break; case 34: printf("%i DefineButton2\n", tv); buf += rh->length(); break; case 35: printf("%i DefineBitsJPEG3\n", tv); buf += rh->length(); break; case 36: printf("%i DefineBitsLossless2\n", tv); buf += rh->length(); break; case 37: printf("%i DefineEditText\n", tv); buf += rh->length(); break; case 39: printf("%i DefineSprite\n", tv); buf += rh->length(); break; case 43: printf("%i FrameLabel\n", tv); buf += rh->length(); break; case 45: printf("%i SoundbufHead2\n", tv); buf += rh->length(); break; case 46: printf("%i DefineMorphShape\n", tv); buf += rh->length(); break; case 48: printf("%i DefineFont2\n", tv); buf += rh->length(); break; case 56: //printf("%i ExportAssets\n", tv); //buf += rh->length(); t = new ExportAssets; t -> recordHeader = rh; t -> fromSWF(buf); break; case 57: //printf("%i ImportAssets\n", tv); //buf += rh->length(); t = new ImportAssets; t -> recordHeader = rh; t -> fromSWF(buf); break; case 58: printf("%i EnableDebugger\n", tv); buf += rh->length(); break; case 59: printf("%i DoInitAction\n", tv); buf += rh->length(); break; case 60: printf("%i DefineVideobuf\n", tv); buf += rh->length(); break; case 61: printf("%i VideoFrame\n", tv); buf += rh->length(); break; case 62: printf("%i DefineFontInfo2\n", tv); buf += rh->length(); break; case 64: printf("%i EnableDebugger2\n", tv); buf += rh->length(); break; case 65: printf("%i ScriptLimits\n", tv); buf += rh->length(); break; case 66: printf("%i SetTabIndex\n", tv); buf += rh->length(); break; case 69: //printf("%i FileAttributes\n", tv); //buf += rh->length(); t = new FileAttributes; t -> recordHeader = rh; t -> fromSWF(buf); break; case 70: //printf("%i PlaceObject3\n", tv); //buf += rh->length(); t = new PlaceObject3(*header.versionPtr()); t -> recordHeader = rh; t -> fromSWF(buf); break; case 71: //printf("%i ImportAssets2\n", tv); //buf += rh->length(); t = new ImportAssets2; t -> recordHeader = rh; t -> fromSWF(buf); break; case 73: printf("%i DefineFontAlignZones\n", tv); buf += rh->length(); break; case 74: printf("%i CSMTextSettings\n", tv); buf += rh->length(); break; case 75: printf("%i DefineFont3\n", tv); buf += rh->length(); break; case 76: //printf("%i SymbolClass\n", tv); //buf += rh->length(); t = new SymbolClass; t -> recordHeader = rh; t -> fromSWF(buf); break; case 77: printf("%i Metadata\n", tv); buf += rh->length(); break; case 78: //printf("%i DefineScalingGrid\n", tv); //buf += rh->length(); t = new DefineScalingGrid; t -> recordHeader = rh; t -> fromSWF(buf); break; case 82: printf("%i DoABC\n", tv); buf += rh->length(); break; case 83: printf("%i DefineShape4\n", tv); buf += rh->length(); break; case 84: printf("%i DefineMorphShape2\n", tv); buf += rh->length(); break; case 86: printf("%i DefineSceneAndFrameLabelData\n", tv); buf += rh->length(); break; case 87: printf("%i DefineBinaryData\n", tv); buf += rh->length(); break; case 88: printf("%i DefineFontName\n", tv); buf += rh->length(); break; case 89: printf("%i StartSound2\n", tv); buf += rh->length(); break; case 90: printf("%i DefineBitsJPEG4\n", tv); buf += rh->length(); break; case 91: printf("%i DefineFont4\n", tv); buf += rh->length(); break; default: printf("\nEncountered unknown tag\n"); buf += rh->length(); break; } //t -> recordHeader = rh; //t -> fromSWF(buf); //t -> set_version(<#unsigned char *version#>) //vrh.push_back( *rh ); vt.push_back( t ); } while ( rh->type() != 0 ); }