📄 fimport.cpp
字号:
std::cout << "\n<FlashTagDefineSound>\n";
std::cout << "ID:" << data.GetID() << "\n";
std::cout << "Flags:" << (int)data.GetFlags() << "\n";
std::cout << "Sample Count:" << data.GetSampleCount() << "\n";
std::cout << "Sample Length:" << data.GetSampleLength() << "\n";
}
void FlashMyImporter::Import(FlashTagDefineSoundMP3 &data)
{
std::cout << "\n<FlashTagDefineSoundMP3>\n";
std::cout << "ID:" << data.GetID() << "\n";
std::cout << "Flags:" << (int)data.GetFlags() << "\n";
std::cout << "Sample Count:" << data.GetSampleCount() << "\n";
std::cout << "Sample Length:" << data.GetSampleLength() << "\n";
}
void FlashMyImporter::Import(FlashTagStartSound &data)
{
std::cout << "\n<FlashTagStartSound>\n";
std::cout << "ID:" << data.GetID() << "\n";
std::cout << "Sound Info:\n";
std::cout << " Flags: " << (int)data.GetSoundInfo().GetFlags() << "\n";
if((data.GetSoundInfo().GetFlags() & FSI_HAS_IN) != 0) std::cout << " In Point: " << data.GetSoundInfo().GetInPoint() << "\n";
if((data.GetSoundInfo().GetFlags() & FSI_HAS_OUT) != 0) std::cout << " Out Point: " << data.GetSoundInfo().GetOutPoint() << "\n";
if((data.GetSoundInfo().GetFlags() & FSI_HAS_LOOP) != 0) std::cout << " Loop Count: " << data.GetSoundInfo().GetLoopCount() << "\n";
if((data.GetSoundInfo().GetFlags() & FSI_HAS_ENVELOPE) != 0) std::cout << " Sound Envelopes Found\n";
}
void FlashMyImporter::Import(FlashTagSoundStreamHead &data)
{
std::cout << "\n<FlashTagSoundStreamHead>\n";
std::cout << "Play Rate: " << (int)data.GetPlayRate() << "\n";
std::cout << "Play 16 Bit: " << data.GetPlay16bit() << "\n";
std::cout << "Play Stereo: " << data.GetPlayStereo() << "\n";
std::cout << "Compression: " << (int)data.GetCompression() << "\n";
std::cout << "Stream Rate: " << (int)data.GetStreamRate() << "\n";
std::cout << "Stream 16 Bit: " << data.GetStream16bit() << "\n";
std::cout << "Stream Stereo: " << data.GetStreamStereo() << "\n";
std::cout << "Sample Count Avg.: " << data.GetSampleCountAvg() << "\n";
}
void FlashMyImporter::Import(FlashTagSoundStreamHead2 &data)
{
std::cout << "\n<FlashTagSoundStreamHead2>\n";
std::cout << "Play Rate: " << (int)data.GetPlayRate() << "\n";
std::cout << "Play 16 Bit: " << data.GetPlay16bit() << "\n";
std::cout << "Play Stereo: " << data.GetPlayStereo()<< "\n";
std::cout << "Compression: " << (int)data.GetCompression() << "\n";
std::cout << "Stream Rate: " << (int)data.GetStreamRate() << "\n";
std::cout << "Stream 16 Bit: " << data.GetStream16bit() << "\n";
std::cout << "Stream Stereo: " << data.GetStreamStereo() << "\n";
std::cout << "Sample Count Avg.: " << data.GetSampleCountAvg() << "\n";
}
void FlashMyImporter::Import(FlashTagSoundStreamBlock &data)
{
std::cout << "\n<FlashTagSoundStreamBlock>\n";
std::cout << "Length:" << data.GetSampleLength() << "\n";
}
FlashHeader FlashImporter::ImportHeader(std::istream &in, FlashImportHandler &i)
{
FlashHeader h;
in >> h;
i.Import(h);
return h;
}
#define IMPORT_MACRO(id, name) \
if(tagHeader.GetTagID() == id) \
{ \
name tmp; \
tmp.SetImportSize(tagHeader.GetTagLength()); \
in >> tmp; \
i.Import(tmp); \
}
bool FlashImporter::ImportTag(std::istream &in, FlashImportHandler &i)
{
FlashTagHeader tagHeader;
in >> tagHeader;
std::streampos start = in.tellg();
if(tagHeader.GetTagID() == 4)
{
FlashTagPlaceObject tmp;
tmp.SetImportSize(tagHeader.GetTagLength());
in >> tmp;
i.Import(tmp); // PlaceObject
}
else if(tagHeader.GetTagID() == 26)
{
FlashTagPlaceObject2 tmp;
tmp.SetImportSize(tagHeader.GetTagLength());
in >> tmp;
i.Import(tmp); // PlaceObject2
}
else if(tagHeader.GetTagID() == 5)
{
FlashTagRemoveObject tmp;
tmp.SetImportSize(tagHeader.GetTagLength());
in >> tmp;
i.Import(tmp); // RemoveObject
}
else if(tagHeader.GetTagID() == 28)
{
FlashTagRemoveObject2 tmp;
tmp.SetImportSize(tagHeader.GetTagLength());
in >> tmp;
i.Import(tmp); // RemoveObject2
}
else if(tagHeader.GetTagID() == 1)
{
FlashTagShowFrame tmp;
tmp.SetImportSize(tagHeader.GetTagLength());
in >> tmp;
i.Import(tmp); // ShowFrame
}
else if(tagHeader.GetTagID() == 9)
{
FlashTagBackgroundColor tmp;
tmp.SetImportSize(tagHeader.GetTagLength());
in >> tmp;
i.Import(tmp);
}
else if(tagHeader.GetTagID() == 43)
{
FlashTagLabelFrame tmp;
tmp.SetImportSize(tagHeader.GetTagLength());
in >> tmp;
i.Import(tmp);
}
else if(tagHeader.GetTagID() == 24)
{
FlashTagProtect tmp;
tmp.SetImportSize(tagHeader.GetTagLength());
in >> tmp;
i.Import(tmp);
}
else if(tagHeader.GetTagID() == 0)
{
FlashTagEnd tmp;
tmp.SetImportSize(tagHeader.GetTagLength());
in >> tmp;
i.Import(tmp);
}
else if(tagHeader.GetTagID() == 56)
{
FlashTagExportAssets tmp;
tmp.SetImportSize(tagHeader.GetTagLength());
in >> tmp;
i.Import(tmp);
}
else if(tagHeader.GetTagID() == 57)
{
FlashTagImportAssets tmp;
tmp.SetImportSize(tagHeader.GetTagLength());
in >> tmp;
i.Import(tmp);
}
else IMPORT_MACRO(8, FlashTagJPEGTables)
else IMPORT_MACRO(6, FlashTagDefineBitsJPEG1)
else IMPORT_MACRO(21, FlashTagDefineBitsJPEG2)
else IMPORT_MACRO(35, FlashTagDefineBitsJPEG3)
else IMPORT_MACRO(20, FlashTagDefineBitsLossless)
else IMPORT_MACRO(36, FlashTagDefineBitsLossless2)
else IMPORT_MACRO(2, FlashTagDefineShape1)
else IMPORT_MACRO(22, FlashTagDefineShape2)
else IMPORT_MACRO(32, FlashTagDefineShape3)
else IMPORT_MACRO(3, FlashTagFreeCharacter)
else if(tagHeader.GetTagID() == 14)
{
int c = in.get();
if(c == EOF)
{
//throw
}
else
{
if((c & FTDS_COMPRESS_MP3) != 0)
{
in.putback(c);
FlashTagDefineSoundMP3 tmp;
tmp.SetImportSize(tagHeader.GetTagLength());
in >> tmp;
i.Import(tmp);
}
else
{
in.putback(c);
FlashTagDefineSound tmp;
tmp.SetImportSize(tagHeader.GetTagLength());
in >> tmp;
i.Import(tmp);
}
}
}
else IMPORT_MACRO(15, FlashTagStartSound)
else IMPORT_MACRO(18, FlashTagSoundStreamHead)
else IMPORT_MACRO(45, FlashTagSoundStreamHead2)
else IMPORT_MACRO(19, FlashTagSoundStreamBlock)
else
{
for(UDWORD index=0; index < tagHeader.GetTagLength(); index++)
{
in.get();
}
i.Import(tagHeader);
}
if(tagHeader.GetTagLength() + start != (UDWORD)in.tellg())
{
if(tagHeader.GetTagLength() + start > (UDWORD)in.tellg())
{
UDWORD difference = (tagHeader.GetTagLength() + start) - (UDWORD)in.tellg();
std::cout << "Extra Tag Data Encountered: " << difference;
for(UDWORD index=0; index < difference; index++)
{
in.get();
}
}
else
{
//ADD HANDLER???
long difference = (long )in.tellg() - (long)(tagHeader.GetTagLength() + start);
std::cout << "Tag Size Discrepancy: -" << difference;
return false;
}
}
if(tagHeader.GetTagID() == 0)
{
return false;
}
return true;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -