⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fimport.cpp

📁 这是一个用VC++开发的flashsource端的程序
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	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 + -