$vNameCode = 'figure'.$pUserId.'.code';
$vNameErr = 'figure'.$pUserId.'.err';
$vNameErrors = 'figure'.$pUserId.'.errors';
$vNamePIC = 'figure'.$pUserId.'.pic';
$vNameTeX = 'figure'.$pUserId.'.tex';
$vNameDVI = 'figure'.$pUserId.'.dvi';
$vNamePS = 'figure'.$pUserId.'.ps';
$vNameEPSI = 'figure'.$pUserId.'.epsi';
$vNameJPG = 'figure'.$pUserId.'.jpg';


ob_start();
print $pCodeDrw."\n";
$texfile=fopen($vNameCode,"w");
fwrite($texfile,ob_get_contents()); 
fclose($texfile); 
ob_end_clean(); 

// Vai processar o código com o programa de desenho
// Consoante o programa de desenho
// 2 - Eukleides - 1.0.2
// 3 - GCLC - 9.00
ob_start();
system("/usr/local/bin/gclc $vNameCode $vNamePIC > $vNameErrors");
system("grep Syntax $vNameErrors > $vNameErr");

ob_end_clean(); 

$filename = $vNameErr;

// Vai verificar se houve erros ou não
if  (file_exists($filename) and filesize($filename)>0) { // há erros 
  $file = fopen ($filename, "r");
  $contents = fread ($file, filesize ($filename));
  echo $contents;
  //system("rm figure.err");
  echo "<center>\n";
  echo "<br>There are errors in the figure's code. The figure was not inserted in the database</b>\n";
  echo "</center>\n";
 }
 else { // Caso não haja erros vai processar a figura
   // Vai produzir o texto LaTeX referente à Figura
   ob_start();
   print "\documentclass[11pt]{article}\n";
   print "\usepackage{gclc}\n";
   print "\pagestyle{empty}\n";
   print "\begin{document}\n";
   print "\input{ $vNamePIC }\n";
   print "\end{document}\n";
   
   $texfile=fopen($vNameTeX,"w");
   fwrite($texfile,ob_get_contents()); 
   fclose($texfile); 
   
   system("latex $vNameTeX"); 
   system("dvips $vNameDVI -o $vNamePS"); 
   system("ps2epsi $vNamePS $vNameEPSI");
   system("convert $vNameEPSI $vNameJPG");
   ob_end_clean(); 
   
   // Agora vai produzir os ficheiros XML e SVG  - para já só para o GCLC
   
   $vNameXML = 'figure'.$pUserId.'.xml';
   $vNameXMLaux = 'figaux'.$pUserId.'.xml';
   
   $vNameSVG = 'figure'.$pUserId.'.svg';
   
   
   ob_start();   
   // primeiro cria o XML correspondente ao GCLC
   system("/usr/local/bin/gclc $vNameCode $vNameXMLaux -xml");
   system("/usr/local/bin/gclc $vNameCode $vNamePIC > $vNameErrors");
   // depois faz o "rendering" do XML em linguagem natural
   // modifica o estilo de saída para a Natural Language
   system("sed -e 's/GeoConsHTML.xsl/GeoConsNL.xsl/g' $vNameXMLaux > $vNameXML"); 
   // agora cria o SVG correspondente ao GCLC
   system("/usr/local/bin/gclc $vNameCode $vNameSVG -svg");    
 }
ob_end_clean(); 
  

// e agora a escrita do ficheiro referente à imagem
$fpJPG   = fopen($vNameJPG, 'r');
$contentJPG = fread($fpJPG, filesize($vNameJPG));
$contentJPG = addslashes($contentJPG);
fclose($fpJPG);

// e do ficheiro XML
$fpXML = fopen($vNameXML,'r');
$contentXML = fread($fpXML,filesize($vNameXML));
$contentXML = addslashes($contentXML);
fclose($fpXML);

// e do ficheiro SVG
$fpSVG = fopen($vNameSVG,'r');
$contentSVG = fread($fpSVG,filesize($vNameSVG));
$contentSVG = addslashes($contentSVG);
fclose($fpSVG);

echo "<ul>";
echo "<li>
       <span class='ficha'>Figure</span>
      </li>";
echo "<li>
       <img src='view_image.php?argumento=$vNameJPGId' alt='No Figure'>
      </li>";
echo "<li>
       <span class='ficha'>Description of the construction in natural language</span>
      </li>";
echo "<li>
       <a href='$vNameXML'>$vNameXML</a>
      </li>";
echo "<li>
       <span class='ficha'>Figure in SVG format</span>
      </li>";
echo "<li>
       <a href='$vNameSVG'>$vNameSVG</a>
      </li>\n";
echo "</ul>";


?>