Пример #1
0
void ReaderWriterTest::testReader()
{

#define READ_FILE(filename, objtype, reader)                                                       \
    {                                                                                              \
        OSLM_WARN("testing : <" << filename << "> (" << #objtype << ") with <" << reader << ">" ); \
        const ::boost::filesystem::path file = ::fwTest::Data::dir() / filename;                   \
        ::fwData::objtype::sptr object = ::fwData::objtype::New();                                 \
        runImageSrv("::io::IReader", reader, getIOConfiguration(file), object);                    \
    }                                                                                              \

    READ_FILE( "fw4spl/PatientDB/yaf/generated-patientdb.yaf"    , PatientDB, "::ioXML::FwXMLGenericReaderService");
    READ_FILE( "fw4spl/PatientDB/yaf/generated-patientdb.yaf"    , PatientDB, "::ioXML::FwXMLPatientDBReaderService");

    READ_FILE( "fw4spl/Patient/yaf/generated-patient.yaf"        , Patient  , "::ioXML::FwXMLGenericReaderService");

    READ_FILE( "fw4spl/aquisition/yaf/generated-acquisition.yaf" , Acquisition, "::ioXML::FwXMLGenericReaderService");

    // READ_FILE( "fw4spl/image/yaf/image-double.yaf" , Image, "::ioXML::FwXMLGenericReaderService");
    // READ_FILE( "fw4spl/image/yaf/image-float.yaf"  , Image, "::ioXML::FwXMLGenericReaderService");
    // READ_FILE( "fw4spl/image/yaf/image-int16.yaf"  , Image, "::ioXML::FwXMLGenericReaderService");
    // READ_FILE( "fw4spl/image/yaf/image-int32.yaf"  , Image, "::ioXML::FwXMLGenericReaderService");
    // READ_FILE( "fw4spl/image/yaf/image-int64.yaf"  , Image, "::ioXML::FwXMLGenericReaderService");
    // READ_FILE( "fw4spl/image/yaf/image-int8.yaf"   , Image, "::ioXML::FwXMLGenericReaderService");
    // READ_FILE( "fw4spl/image/yaf/image-uint16.yaf" , Image, "::ioXML::FwXMLGenericReaderService");
    // READ_FILE( "fw4spl/image/yaf/image-uint32.yaf" , Image, "::ioXML::FwXMLGenericReaderService");
    // READ_FILE( "fw4spl/image/yaf/image-uint64.yaf" , Image, "::ioXML::FwXMLGenericReaderService");
    // READ_FILE( "fw4spl/image/yaf/image-uint8.yaf"  , Image, "::ioXML::FwXMLGenericReaderService");


}
Пример #2
0
void Model::ReadNode(std::fstream &file, Node * node, std::map<unsigned int, Node*> &map)
{
	unsigned int data;
	READ_FILE(data);
	map[data] = node;
	READ_SZ_FILE(node->meshes);
	if (data>0) READ_FILE_EX(&node->meshes[0], node->meshes.size() * sizeof(unsigned int));
	READ_SZ_FILE(node->children);
	for (unsigned i = 0; i < node->children.size(); i++)
		ReadNode(file, &node->children[i], map);
}
Пример #3
0
FFError FFHeaderI::Read(char const *_filename)
{
	if (_filename)
	{
		if (filename) delete[] filename;
		filename = new char [strlen(_filename)+1];
		strcpy(filename,_filename);
	}
	
	FILE *h = OpenGameFile(filename, FILEMODE_READONLY, FILETYPE_PERM);
	
	if (h == NULL)
	{
		ReportError(filename);
		return FF_COULDNOTOPENFILE;
	}
	
	// reset vars
	Clear();
	
	char magic[4];
	unsigned long rffl_version;
	size_t num_files;
	size_t total_headsize;
	
	DWORD bytes_read;
	
	READ_FILE(filename,(void)0,fclose(h),h,magic,4,bytes_read,0)
	READ_FILE(filename,(void)0,fclose(h),h,&rffl_version,4,bytes_read,0)
	READ_FILE(filename,(void)0,fclose(h),h,&num_files,4,bytes_read,0)
	READ_FILE(filename,(void)0,fclose(h),h,&total_headsize,4,bytes_read,0)
	READ_FILE(filename,(void)0,fclose(h),h,&length,4,bytes_read,0)
	
	if (strncmp(magic,"RFFL",4))
	{
		ReportError(filename,"Incorrect file type");
		fclose(h);
		return FF_COULDNOTREADFILE;
	}
	if (rffl_version>0)
	{
		ReportError(filename,"Version not supported");
		fclose(h);
		return FF_COULDNOTREADFILE;
	}
	
	void * header = malloc(total_headsize);
	
	READ_FILE(filename,(void)0,fclose(h),h,header,total_headsize,bytes_read,0)
	
	data = malloc(length);
	
	READ_FILE(filename,(void)0,fclose(h),h,data,length,bytes_read,0)
	
	fclose(h);
	
	// now parse the header
	
	void * headerP = header;
	
	for (unsigned int i=0; i<num_files; ++i)
	{
		char const * fnameP = (char *)((size_t)headerP + 8);
		size_t leng = *(size_t *)((size_t)headerP + 4);
		void * dataP = (void *)((size_t)data + *(size_t *)headerP);
		
		files[HashFunction(fnameP)].add_entry(FFDataI(fnameP,dataP,leng));
		
		// increment pointer
		headerP = (void *)((size_t)headerP + 8 + strlen(fnameP) +4&~3);
	}
	
	free(header);
	
	return FF_OK;
}
Пример #4
0
void Model::LoadModel(std::string filename)
{
	std::fstream file;

	file.open("models\\" + filename, std::fstream::in | std::fstream::binary);
	if (file.fail())
	{
		std::cout << "Couldn't open file for loading: " << filename << std::endl;
		return;
	}

	std::map<unsigned int, Node*> map;

	bool tree;
	READ_FILE(tree);
	if (tree)
	{
		m_animationtree = new AnimatedModelInfo;
		ReadNode(file, &m_animationtree->rootnode, map);
	}
	unsigned int data;

	std::vector<SkinVertex> svertices;
	std::vector<Vertex> vertices;
	std::vector<unsigned short> indices;

	READ_SZ_FILE(m_meshes);
	for (unsigned i = 0; i < m_meshes.size(); ++i)
	{
		unsigned int bns_sz;
		READ_FILE(bns_sz);

		if (bns_sz > 0 && tree)
		{
			READ_SZ_FILE(svertices);
			if (data > 0) READ_FILE_EX(&svertices[0], svertices.size() * sizeof(SkinVertex));
		}
		else
		{
			READ_SZ_FILE(vertices);
			if (data > 0) READ_FILE_EX(&vertices[0], vertices.size() * sizeof(Vertex));
		}

		READ_SZ_FILE(indices);
		if (data > 0) READ_FILE_EX(&indices[0], indices.size() * sizeof(unsigned short));

		if (bns_sz > 0 && tree)
		{
			m_meshes[i].LoadData(svertices, indices);
			m_meshes[i].m_bones->resize(bns_sz);
			for (unsigned j = 0; j < m_meshes[i].m_bones->size(); ++j)
			{
				Bone * bn = &(*m_meshes[i].m_bones)[j];
				READ_FILE(data);
				bn->node = map[data];
				READ_FILE_EX(&bn->offset[0][0], 4 * 4 * sizeof(float));
			}
		}
		else 
			m_meshes[i].LoadData(vertices, indices);

		char str[100];
		READ_FILE(data);
		READ_FILE_EX(str, data); 
		str[data] = '\0';
		m_meshes[i].SetTexture(LoadTexture("textures\\" +std::string(str)));
		m_meshes[i].SetRenderer(m_renderer);
	}

	if (tree)
	{
		READ_SZ_FILE(m_animationtree->animations);
		for (unsigned i = 0; i < m_animationtree->animations.size(); ++i)
		{
			Animation * anim = &m_animationtree->animations[i];
			READ_FILE(anim->duration);
			READ_FILE(anim->speed);
			READ_SZ_FILE(anim->nodeanims);
			for (unsigned j = 0; j < anim->nodeanims.size(); ++j)
			{
				NodeAnim * nodeanim = &anim->nodeanims[j];
				READ_FILE(data);
				nodeanim->node = map[data];
				READ_SZ_FILE(nodeanim->poskeys);
				if (data > 0) READ_FILE_EX(&nodeanim->poskeys[0], nodeanim->poskeys.size() * sizeof(VecKey));
				READ_SZ_FILE(nodeanim->rotkeys);
				if (data > 0) READ_FILE_EX(&nodeanim->rotkeys[0], nodeanim->rotkeys.size() * sizeof(RotKey));
			}
		}
	}

	READ_FILE(m_boundvolume.m_parent);
	READ_SZ_FILE(m_boundvolume.m_children);
	if (data > 0) READ_FILE_EX(&m_boundvolume.m_children[0], m_boundvolume.m_children.size() * sizeof(BoundVolume));

	file.close();
}