/* Definições principais para {exemplo.c}. */ #ifndef ex_ini_H #define ex_ini_H #define PROG_NAME "ex_ini" #define PROG_DESC "testa alguns conceitos de processamento de imagens" #define PROG_VERS "1.0" /* Last edited on 2007-11-06 19:05:14 by stolfi */ #define PROG_HELP \ " " PROG_NAME " \\\n" \ " -op {OP} \\\n" \ " " argparser_help_info_HELP " \\\n" \ " {IMAGEM_ENT_1} {IMAGEM_ENT_2} \\\n" \ " > {IMAGEM_SAI}" #define PROG_INFO \ "NOME\n" \ " " PROG_NAME " - " PROG_DESC "\n" \ "\n" \ "SINOPSE\n" \ PROG_HELP "\n" \ "\n" \ "DESCRICAO\n" \ " O programa lê duas imagens, {IMAGEM_ENT_1} e {IMAGEM_ENT_1}, e" \ " aplica a elas uma operação especificada pelo usuário. A imagem" \ " resultante é gravada na saída padrão {stdout}.\n" \ "\n" \ "OPÇÕES\n" \ " -op {OP}\n" \ " Especifica a operação a executar. O prâmetro {OP} pode" \ " ser \"add\" ou \"mul\".\n" \ "\n" \ "OPÇÕES DE DOCUMENTAÇÃO\n" \ argparser_help_info_HELP_INFO "\n" \ "\n" \ "VEJA TAMBÉM\n" \ " convert(1), gimp(1), display(1), ppm(1), pgm(1).\n" \ "\n" \ "AUTOR\n" \ " Criado em 2007-08-01 por J. Stolfi, IC-UNICAMP.\n" \ "\n" \ "GARANTIA\n" \ argparser_help_info_NO_WARRANTY "\n" \ "\n" \ "DIREITOS\n" \ " Copyright © 2007 by the State University of Campinas (UNICAMP).\n" \ "\n" \ argparser_help_info_STANDARD_RIGHTS /* BIBLIOTECAS DO GNU/LINUX: */ #define _GNU_SOURCE /* O comando acima é necessário para obter {asprintf} em {stdio.h}. */ #include #include #include #include #include /* BIBLIOTECAS DO PROFESSOR: */ #include /* Tipo {bool_t}, {TRUE}, {FALSE}. */ #include /* {open_read}, {open_write}. */ #include /* Imagens PBM/PGM/PPM. */ #include /* Imagens em formato float. */ #include /* Conversão de imagens. */ #include /* Pega parâmetros da linha de comando. */ /* PARÂMETROS OBTIDOS DA LINHA DE COMANDO: */ #define MAX_NIMG 2 /* Número máximo de imagens mencionadas na linha de comando. */ typedef enum { op_ADD, op_MUL, op_BUG } operation_t; /* Código interno da operação a executar. */ typedef struct options_t { operation_t op; /* A operação a executar. */ char *A_name; /* Imagem 1. */ char *B_name; /* Imagem 2. */ } options_t; /* PROTÓTIPOS GENÉRICOS */ int main(int argc,char** argv); /* Função principal do programa. */ float_image_t *ex_read_image(FILE *rd, char *name); /* Lê uma imagem em formato PPM, PGM ou PBM, converte cada amostra para um valor em ponto fluante entre 0 e 1, e armazena o resultado todo na memória, na forma de um {float_image_t}. Se {rd} é diferente de NULL, lê a imagem do arquivo {rd} e deixa {rd} aberto. Se {rd} é NULL, lê o arquivo com esse nome. */ void ex_write_image(FILE *wr, char *name, float_image_t *img); /* Escreve a imagem {img}, em formato PPM, PGM ou PBM. Se {wr} é diferente de NULL, grava no arquivo {wr} e deixa {wr} aberto. Se {wr} é NULL, grava o arquivo com esse nome. */ options_t *ex_parse_options(int argc, char **argv); /* Extrai os comandos da linha de comando e empacota-os em um registro de tipo {options_t}. */ #endif