#!/usr/bin/perl
#################################################################
# Script Perl que extrai os 'frames' de um arquivo .cgm gerado
# pelo RIP, convertendo-os a figuras .PNG.
#
# Requer NCAR Graphics e o utilitario 'convert' do Image Magick.
#
# data: Jul/2006.
#################################################################
use strict;
use warnings;

my $arqs = "figura_";
my $figures = shift @ARGV;

# Verifica se o nome de algum arquivo foi passado ao script.
if ( not defined $figures ) {
   print "\n\n\tDeve-se informar um nome de arquivo .CGM.\n\n";
   exit;
} elsif ( not -e $figures ) {
   print "\n\n\tArquivo nao existe!\n\n";
   exit;
}

# Executa o comando ncgmstat pegando a sua saida.
open NCG,"ncgmstat -c $figures |";

my @frames=split /\s+/,<NCG>; # nro de frames

print "\n\n\tO arquivo '$figures' contem $frames[0] figura(s).";
print "\n\tGerando arquivos individuais...\n\n";

# Usa o utilitario 'med' do NCAR Graphics para separar
# os frames e arquivos individuais.
if ($frames[0] > 1) {
   system "med -e \"1,\$ split $frames[0] $arqs\" $figures";
} else {
   rename $figures, "$figures\_01\.ncgm";
}

# Usa utilitario 'ctrans' do NCAR Graphics para converter
# os arquivos 'ncgm' em arquivos 'postscript'.
my $i=1;
my @cgmarqs=glob("*.ncgm");
foreach (@cgmarqs) {
   system "ctrans -d ps.color $_ > $arqs$i\.ps";
   $i++;
}

# Usa utilitario 'convert' do Image Magick para
# converter arquivos 'postscript' em arquivos 'png'.
my @psarqs=glob("*.ps");
foreach (@psarqs) {
   system "convert -density 300 -trim $_ $_\.gif";
}

# Apagando arquivos desnecessarios.
unlink <*.ncgm>,<*.ps>;


