O main que fizemos e que gera um monte de imagens, uma para testar cada
passo/fase durante o desenvolvimento do EP2 está logo abaixo. É necessário colocar o seguinte include no início do programa.
#include <string.h>
/*
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
5 M A I N
//////////////////////////////////////////////////////////////////////
*/
int main(int argc, char** argv)
{
Imagem *tela; /* apontador para a imagem que sera criada */
int nLins; /* numero de linhas da tela/imagem */
int nCols; /* numero de colunas da tela/imagem */
Linha llinhas; /* cabeça da lista de linhas */
Linha *lin; /* ponteiro para uma linha */
CelRegiao cabecas[MAX_REGIOES];
int nRegioes; /* numero de regioes */
int k; /* contador de regioes */
char *nomeImagem; /* nomes das imagens intermediarias salvas */
Imagem *R; /* intensidade de vermelho */
Imagem *G; /* intensidade de verde */
Imagem *B; /* intensidade de azul */
float cores[12][3]=
{
{1.0, 0.0, 0.0}, /* 0 red */
{0.0, 1.0, 0.0}, /* 1 green */
{0.0, 0.0, 1.0}, /* 2 blue */
{1.0, 1.0, 0.0}, /* 3 yellow */
{1.0, 0.0, 1.0}, /* 4 magenta */
{0.0, 0.0, 0.0}, /* 5 black */
{0.2, 0.7, 0.4}, /* 6 green 2 */
{0.7, 0.4, 0.2}, /* 7 marrom */
{0.0, 1.0, 1.0}, /* 8 cyan */
{0.5, 0.5, 0.5}, /* 9 cinza */
{1.0, 1.0, 1.0}, /* 10 branco */
{0.0, 0.0, 0.0} /* 11 preto */
};
if (argc < 3)
{
mostreUso(argv[0]);
exit(EXIT_FAILURE);
}
nomeImagem = malloc(1024 * sizeof(char));
strcpy(nomeImagem,argv[2]);
/* 0 leia a comfiguracao do mondrian */
llinhas.prox = NULL; /* inicialize a cabeca */
leMondrian(argv[1],&nLins,&nCols,&llinhas);
/* 1 crie a tela (imagem) em que desenharemos o mondrian */
tela = criaImagem(nLins,nCols);
salvaImagem(strcat(nomeImagem,"-tela"),tela);
/* 2 pinte a tela de COR_FUNDO */
pintaImagem(tela,COR_FUNDO);
salvaImagem(strcat(nomeImagem,"-fundo"),tela);
/* 3 pinte a borda */
desenhaBorda(tela,COR_BORDA);
salvaImagem(strcat(nomeImagem,"-borda"),tela);
/* 4 percorra a lista encadeada de linhas e desenhe as linhas
* na tela
*/
lin = llinhas.prox;
while (lin != NULL)
{
printf("lin: tipo='%c' pos=%d, ini=%d, fim=%d\n",
lin->tipo, lin->pos,lin->ini,lin->fim);
desenhaLinha(tela,lin,COR_BORDA);
desenhaLinha(tela,lin,COR_BORDA);
desenhaLinha(tela,lin,COR_BORDA);
desenhaLinha(tela,lin,COR_BORDA);
lin = lin->prox;
}
salvaImagem(strcat(nomeImagem,"-linhas"),tela);
nRegioes = segmentaRegioes(tela,cabecas);
salvaImagem(strcat(nomeImagem,"-regioes"),tela);
R = criaImagem(nLins,nCols);
G = criaImagem(nLins,nCols);
B = criaImagem(nLins,nCols);
copiaImagem(R,tela);
copiaImagem(G,tela);
copiaImagem(B,tela);
for (k = 0; k < nRegioes; k++)
{
pintaRegiao(&cabecas[k].cabpix,R,G,B,cores[k%12]);
}
salvaImagemRGB(argv[2],R,G,B);
return 0;
}
/*
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
8 IMPLEMENTACAO DE FUNCOES EXTRAS
//////////////////////////////////////////////////////////////////////
*/
void mostreUso (char *nomePrograma)
{
fprintf(stderr,"%s: Uso \n"
"meu_prompt> %s \n",
nomePrograma, nomePrograma);
}