diff GEMBASSY-1.0.3/include/gplot.c @ 2:8947fca5f715 draft default tip

Uploaded
author ktnyt
date Fri, 26 Jun 2015 05:21:44 -0400
parents 84a17b3fad1f
children
line wrap: on
line diff
--- a/GEMBASSY-1.0.3/include/gplot.c	Fri Jun 26 05:20:29 2015 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,314 +0,0 @@
-/******************************************************************************
-** @source GEMBASSY plot routines
-**
-** @version 1.0
-** @modified December 27 2012 Hidetoshi Itaya Created this file
-** @@
-**
-** This library is free software; you can redistribute it and/or
-** modify it under the terms of the GNU Library General Public
-** License as published by the Free Software Foundation; either
-** version 2 of the License, or (at your option) any later version.
-**
-** This library is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-** Library General Public License for more details.
-**
-** You should have received a copy of the GNU Library General Public
-** License along with this library; if not, write to the
-** Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-** Boston, MA  02111-1307, USA.
-******************************************************************************/
-
-
-#include "gplot.h"
-
-
-
-
-/* @funclist gPlotFilebuff ****************************************************
-**
-** Retrieves data from file buffer and plots the data using gPlotData
-**
-******************************************************************************/
-
-AjBool gPlotFilebuff(AjPFilebuff buff, AjPGraph graphs, gPlotParams *gpp)
-{
-  AjPStr  line = NULL;
-  AjPPStr temp = NULL;
-  AjPPStr name = NULL;
-  ajint   i    = 0;
-  ajint   j    = 0;
-  ajint   col  = 0;
-  ajint   flag = 0;
-  float **data = NULL;
-
-  while(ajBuffreadLine(buff, &line))
-    {
-
-    /*
-    ** Allocate first time only
-    */
-
-    if(!col)
-      {
-      col = ajStrCalcCountC(line, ",") + 1;
-
-      if((temp = (AjPPStr)malloc(sizeof(AjPStr) * col)) == NULL)
-	{
-	return ajFalse;
-      }
-
-      if((name = (AjPPStr)malloc(sizeof(AjPStr) * col)) == NULL)
-	{
-	  AJFREE(temp);
-	  return ajFalse;
-	}
-
-      if((data = (float**)malloc(sizeof(float*) * col)) == NULL)
-	{
-	  AJFREE(temp);
-	  AJFREE(name);
-	  return ajFalse;
-	}
-      for(i = 0; i < col; ++i)
-	{
-	  if((data[i] = (float*)malloc(sizeof(float))) == NULL){
-	    {
-	      AJFREE(temp);
-	      AJFREE(name);
-	      for(j = 0; j < i; ++j)
-		{
-		  AJFREE(data[j]);
-		}
-	      AJFREE(data);
-	      return ajFalse;
-	    }
-	  }
-	}
-      }
-    
-    ajStrExchangeCC(&line, ",", "\n");
-    ajStrParseSplit(line, &temp);
-
-    for(i = 0; i < col; ++i)
-      {
-        if((data[i] = (float*)realloc(data[i], sizeof(float) * (j + 1))) == NULL)
-          {
-            AJFREE(temp);
-            AJFREE(name);
-            for(j = 0; j < i; ++j)
-              {
-                AJFREE(data[j]);
-              }
-            AJFREE(data);
-            return ajFalse;
-          }
-
-        ajStrRemoveLastNewline(&(temp[i]));
-        if(ajStrIsFloat(temp[i]))
-          {
-            ajStrToFloat(temp[i], &(data[i][j]));
-            ++flag;
-          }
-        else
-          {
-            name[i] = ajStrNewS(temp[i]);
-          }
-      }
-    j = flag ? j + 1 : j;
-    flag = 0;
-    }
-
-  (*gpp).data    = data;
-  (*gpp).setNum  = 0;
-  (*gpp).dataNum = j;
-  (*gpp).typeNum = col;
-  if(!(*gpp).names)
-    (*gpp).names = name;
-
-  if(j < 2)
-    gPlotFlip(gpp);
-
-  gPlotData(graphs, gpp);
-
-  for(i = 0; i < (*gpp).typeNum; ++i)
-    AJFREE((*gpp).data[i]);
-  AJFREE((*gpp).data);
-
-  data = NULL;
-
-  ajStrDel(&line);
-
-  return ajTrue;
-}
-
-
-
-
-/* @funclist gPlotData ********************************************************
-**
-** Function to plot from given data
-**
-******************************************************************************/
-
-AjBool gPlotData(AjPGraph graphs, gPlotParams *gpp)
-{
-  AjPGraphdata gd = NULL;
-
-  float min = 0.0;
-  float max = 0.0;
-  float dif = 0.0;
-  ajint i;
-  ajint j;
-
-  ajint   setNum  = (*gpp).setNum;
-  ajint   dataNum = (*gpp).dataNum;
-  ajint   typeNum = (*gpp).typeNum;
-  AjPStr  title   = (*gpp).title;
-  AjPStr  xlab    = (*gpp).xlab;
-  AjPStr  ylab    = (*gpp).ylab;
-  AjPPStr names   = (*gpp).names;
-  float **data    = (*gpp).data;
-
-  float x[dataNum];
-  float y[dataNum];
-  float begin = data[0][0];
-  float end   = data[0][dataNum-1];
-  float range = end - begin;
-
-  int c[] = {1,3,9,13};
-
-  for(i = 1; i < typeNum; ++i)
-    {
-    for(j = 0; j < dataNum; ++j)
-      {
-      min = (min < data[i][j]) ? min : data[i][j];
-      max = (max > data[i][j]) ? max : data[i][j];
-    }
-  }
-
-  dif = (min == max) ? 20 : max - min;
-  max += dif / 20;
-  min -= dif / 20;
-
-  for(i = 1; i < typeNum; ++i)
-    {
-    gd = ajGraphdataNewI(dataNum);
-
-    ajGraphdataSetColour(gd, c[i-1]);
-    ajGraphdataSetMinmax(gd, begin, end, min, max);
-    ajGraphdataSetTruescale(gd, begin, end, min, max);
-    ajGraphdataSetTypeC(gd, "Multi 2D Plot");
-      
-    for(j = 0; j <  dataNum; ++j)
-      {
-      x[j] = data[0][j];
-      y[j] = data[i][j];
-    }
-      
-    ajGraphdataAddXY(gd, x, y);
-    ajGraphDataAdd(graphs, gd);
-      
-    if(typeNum > 2)
-      {
-      float len = 0.0;
-
-      for(j = 1; j < typeNum; ++j)
-	len = (len < (float)ajStrGetLen(names[j])) ?
-	  (float)ajStrGetLen(names[j]) : len;
-
-      ajGraphAddLine(graphs,
-		     range * 7.4/8 + begin, dif * (8.6-i*0.3)/8 + min,
-		     range * 7.8/8 + begin, dif * (8.6-i*0.3)/8 + min,
-		     c[i-1]);
-      ajGraphAddTextScaleS(graphs,
-			   range * (7.3/8 - len*1/144) + begin,
-			   dif * (8.6-i*0.3)/8 + min,
-			   0, 0.4,
-			   names[i]);
-    }
-      
-    gd = NULL;
-  }
-
-  ajGraphxySetXstartF(graphs, begin);
-  ajGraphxySetXendF(graphs, end);
-  ajGraphxySetYstartF(graphs, min - ((max - min) / 10));
-  ajGraphxySetYendF(graphs, max + ((max - min) / 10));
-
-  //ajGraphSetTitleS(graphs, title);
-  ajGraphSetXlabelS(graphs, xlab);
-  ajGraphSetYlabelS(graphs, ylab);
-  ajGraphxySetflagOverlay(graphs, ajTrue);
-
-  ajGraphxyDisplay(graphs, AJFALSE);
-  ajGraphicsClose();
-
-  return ajTrue;
-}
-
-
-
-
-/* @funclist gPlotFlip ********************************************************
-**
-** Function to flip x and y data
-**
-******************************************************************************/
-
-AjBool gPlotFlip(gPlotParams *gpp)
-{
-  ajint   setNum  = (*gpp).setNum;
-  ajint   dataNum = (*gpp).typeNum;
-  ajint   typeNum = (*gpp).dataNum;
-  float **data    = (*gpp).data;
-
-  float **newdata;
-  ajint i;
-  ajint j;
-
-  if((newdata = (float**)malloc(sizeof(float*) * typeNum)) == NULL)
-    return ajFalse;
-  else
-    for(i = 0; i < typeNum + 1; ++i)
-      if((newdata[i] = (float*)malloc(sizeof(float))) == NULL)
-	{
-	  AJFREE(newdata);
-	  return ajFalse;
-	}
-
-  for(i = 0; i < dataNum; ++i){
-    if((newdata[0] = (float*)realloc(newdata[0],
-				     sizeof(float) * (i + 1))) == NULL)
-      {
-	for(j = 0; j < i; ++j)
-	    AJFREE(newdata[j]);
-	AJFREE(newdata);
-	return ajFalse;
-      }
-    if((newdata[1] = (float*)realloc(newdata[1],
-				     sizeof(float) * (i + 1))) == NULL)
-      {
-	for(j = 0; j < i; ++j)
-	    AJFREE(newdata[j]);
-	AJFREE(newdata);
-	return ajFalse;
-      }
-    newdata[0][i] = i;
-    newdata[1][i] = data[i][0];
-  }
-
-  for(i = 0; i < dataNum; ++i)
-    {
-      AJFREE((*gpp).data[i]);
-    }
-  AJFREE((*gpp).data);
-
-  (*gpp).dataNum = dataNum;
-  (*gpp).typeNum = 2;
-  (*gpp).data    = newdata;
-
-  return ajTrue;
-}