// Steven Andrews, 10/22/01
// Written on Linux
/* See documentation called gnuPipe doc */
/* Copyright 2003 by Steven Andrews.  Permission is granted
   for non-commercial use of and modifications to the code. */

#include <stdio.h>

FILE *gnuWindow() {
  FILE *gnu;

  gnu=popen("gnuplot","w");
  if(gnu) fprintf(gnu,"set nokey\n");
  return gnu; }

void gnuKill(FILE *gnu) {
  fclose(gnu);
  return; }

void gnuCmd(FILE *gnu,char *s) {
  fprintf(gnu,"%s\n",s);
  fflush(gnu);
  return; }

void gnuSetScales(FILE *gnu,float xa,float xb,float ya,float yb) {

  if(xa==xb) fprintf(gnu,"set autoscale x\n");
  else fprintf(gnu,"set xrange[%f:%f]\n",xa,xb);
  if(ya==yb) fprintf(gnu,"set autoscale y\n");
  else fprintf(gnu,"set yrange[%f:%f]\n",ya,yb);
  fflush(gnu);
  return; }

void gnuPrompt(FILE *gnu) {
  char s[256];

  fprintf(stderr,"Press enter to continue program.\n");
  fprintf(stderr,"gnuPlot> ");
  fgets(s,256,stdin);
  while(strcmp(s,"\n")!=0) {
    fprintf(gnu,"%s",s);
    fflush(gnu);
    fprintf(stderr,"gnuPlot> ");
    fgets(s,256,stdin); }
  return; }

void gnuData(FILE *gnu,float *x,float *y,int m,int col) {
  int i,j;

  fprintf(gnu,"plot ");
  for(j=0;j<col-1;j++)
    fprintf(gnu,"'-' with points %i, ",j+1);
  fprintf(gnu,"'-' with points %i\n",j+1);
  for(j=0;j<col;j++) {
    for(i=0;i<m;i++)
      fprintf(gnu,"%f %f\n",x[i],y[col*i+j]);
    fprintf(gnu,"e\n"); }
  fflush(gnu);
  return; }

void gnuData2(FILE *gnu,float *x,float *y,int *ct,int col) {
  int i,j;

  fprintf(gnu,"plot ");
  for(j=0;j<col-1;j++)
    fprintf(gnu,"'-' with points %i, ",j+1);
  fprintf(gnu,"'-' with points %i\n",j+1);
  for(j=0;j<col;j++) {
    for(i=0;i<ct[j];i++)
      fprintf(gnu,"%f %f\n",x[col*i+j],y[col*i+j]);
    fprintf(gnu,"e\n"); }
  fflush(gnu);
  return; }



