Ejemplo n.º 1
0
/**Função que prepara as figuras para desenhar a partir de uma fonte .xml e invoca o ciclo glut*/
int gerar_cena(vector<string> args)
{
	string filename;
	string form;

	if (args.size() < 2){
		cout << ERROR_NUMBER_ARGS;
		return -1;
	}
	try{
		filename = args.at(1);
		if (isXML(filename) && lookUpFile(filename)){
			printf("a recolher dados para desenhar cena ...\n");
			readFromXML(filename); // Internamente à leitura geramos os modelos enquanto que na 1ª etapa
								   // eram gerados nesta mesma função
		
			// Chamada explícita para desenhar cena
			prepare_glut();
		}
	}
	catch (invalid_argument ia){
		cout << ERROR_INVALID_ARGS;
	}
	return -1;
}
Ejemplo n.º 2
0
/**Função que prepara as figuras para desenhar a partir de uma fonte .xml e invoca o ciclo glut*/
int gerar_cena(vector<string> args)
{
	string filename;
	string form;

	if (args.size() < 2){
		cout << ERROR_NUMBER_ARGS;
		return -1;
	}
	try{
		filename = args.at(1);
		if (isXML(filename) && lookUpFile(filename)){
			printf("a recolher dados para desenhar cena ...\n");
			vector<string> files = readFromXML(filename);
			for (std::vector<string>::iterator it = files.begin(); it != files.end(); ++it){
				ifstream f((*it));
				f >> form;

				Forma* s;
				if (form.compare(FORMA_RECTANGULO) == 0){
					s = new Rectangulo();
				}
				else if (form.compare(FORMA_TRIANGULO) == 0){
					s = new Triangulo();
				}
				else if (form.compare(FORMA_CIRCULO) == 0){
					s = new Circulo();
				}
				else if (form.compare(FORMA_PARALEL) == 0){
					s = new Paralelepipedo();
				}
				else if (form.compare(FORMA_ESFERA)==0){
					s = new Esfera();
				}
				else if (form.compare(FORMA_CONE)==0){
					s = new Cone();
				}
				s->read3DfromFile((*it));
				Formas.push_back(s);
			}
			// Chamada explícita para desenhar cena
			prepare_glut();
		}
	}
	catch (invalid_argument ia){
		cout << ERROR_INVALID_ARGS;
	}
	return -1;
}