Imported Upstream version 2~rc2+svn368
authorDimitrios Eftaxiopoulos <eftaxi12@otenet.gr>
Fri, 16 Mar 2012 17:25:19 +0000 (19:25 +0200)
committerDimitrios Eftaxiopoulos <eftaxi12@otenet.gr>
Fri, 16 Mar 2012 17:25:19 +0000 (19:25 +0200)
23 files changed:
include/mgl/base.h
include/mgl/canvas.h
include/mgl/data.h
include/mgl/define.h
include/mgl/window.h
src/base.cpp
src/canvas.cpp
src/data.cpp
src/data_io.cpp
src/data_new.cpp
src/data_png.cpp
src/eval.cpp
src/evalc.cpp
src/evalp.cpp
src/export.cpp
src/fit.cpp
src/pde.cpp
src/pixel.cpp
todo.txt
udav/text_pnl.cpp
utils/mglview.cpp
widgets/glut.cpp
widgets/window.cpp

index 1aaef531a0061a4398114d89f6b34a2f57f89ab0..2de33644a1e07873ec73e8eed998909527947777 100644 (file)
@@ -379,7 +379,7 @@ protected:
        std::vector<mglText> Ptx;       ///< Text labels for mglPrim\r
        std::vector<mglText> Leg;       ///< Text labels for legend\r
        std::vector<mglTexture> Txt;///< Pointer to textures\r
-#ifdef HAVE_PTHREAD\r
+#if MGL_HAVE_PTHREAD\r
        pthread_mutex_t mutexPnt, mutexTxt, mutexLeg;\r
 #endif\r
 \r
index b96cab652acfa4fe82dc9620d998301bdd2a9ac5..f435c4f3d2e4b87eeda1dd2540f0f3caa4b6e1c4 100644 (file)
@@ -25,7 +25,7 @@
 #define MGL_STACK_ENTRY        10\r
 #endif\r
 //-----------------------------------------------------------------------------\r
-#ifdef HAVE_GIF\r
+#if MGL_HAVE_GIF\r
 #include <gif_lib.h>\r
 #else\r
 struct GifFileType;\r
@@ -300,7 +300,7 @@ protected:
        unsigned char *G4;      ///< Final picture in RGBA format. Prepared in Finish().\r
        unsigned char *G;       ///< Final picture in RGB format. Prepared in Finish().\r
        std::vector<mglDrawDat> DrwDat; ///< Set of ALL drawing data for each frames\r
-#ifdef HAVE_PTHREAD\r
+#if MGL_HAVE_PTHREAD\r
        pthread_mutex_t mutexSub, mutexPrm, mutexPtx, mutexStk, mutexGrp;\r
 #endif\r
 \r
index 71d8f4debf2c2506b2f06d61d2d1f948ee6a9bd4..866dc0867629921c1f40b8d56c254090b7f3b138 100644 (file)
@@ -22,7 +22,7 @@
 /*****************************************************************************/\r
 #include "mgl/base.h"\r
 /*****************************************************************************/\r
-#ifndef NO_GSL\r
+#if MGL_HAVE_GSL\r
 #include <gsl/gsl_vector.h>\r
 #include <gsl/gsl_matrix.h>\r
 #else\r
index a05d16b7df44f2006e622500a59338c39daa3f83..8892b18ac161c3d109f181cd9ccc389782c5e268 100644 (file)
@@ -41,7 +41,7 @@
 const unsigned long mgl_nan[2] = {0xffffffff, 0x7fffffff};\r
 #define NANd   (*(double*)mgl_nan)\r
 #define NANf   (*(float*)&(mgl_nan[1]))\r
-#if (MGL_USE_DOUBLE==1)\r
+#if MGL_USE_DOUBLE\r
 #define NAN            NANd\r
 #else\r
 #define NAN            NANd\r
@@ -66,7 +66,7 @@ const unsigned long mgl_nan[2] = {0xffffffff, 0x7fffffff};
 //-----------------------------------------------------------------------------\r
 #include <mgl/config.h>\r
 //-----------------------------------------------------------------------------\r
-#if (MGL_USE_DOUBLE==1)\r
+#if MGL_USE_DOUBLE\r
 typedef double mreal;\r
 #else\r
 typedef float mreal;\r
@@ -212,7 +212,7 @@ void mgl_strlwr(char *str);
 #ifdef __cplusplus\r
 }\r
 #endif\r
-#ifdef HAVE_PTHREAD\r
+#if MGL_HAVE_PTHREAD\r
 #include <pthread.h>\r
 #define MGL_PUSH(a,v,m)                {pthread_mutex_lock(&m);        a.push_back(v); pthread_mutex_unlock(&m);}\r
 #else\r
index b2dcf20d3bd2cf38b483359a5d1e5c396bbe5204..44b42c13a31326d94bbc3c61427b4a9be21a6dce 100644 (file)
@@ -29,7 +29,7 @@ struct mglDraw
 {\r
        virtual int Draw(mglGraph *){}  ///< Function for drawing\r
        virtual void Reload()   {}              ///< Function for reloading data\r
-#ifdef HAVE_PTHREAD\r
+#if MGL_HAVE_PTHREAD\r
        pthread_t thr;\r
        bool running;\r
        mglDraw()       {       running=false;  }\r
@@ -44,10 +44,10 @@ int mgl_draw_graph(mglBase *gr, void *p);
 // NOTE: mgl_draw_class() use mglWindow* only. Don't use it with inherited classes\r
 int mgl_draw_class(mglBase *gr, void *p);\r
 //-----------------------------------------------------------------------------\r
-#ifndef HAVE_QT\r
-#define MGL_WND_KIND   0\r
-#else\r
+#if MGL_HAVE_QT\r
 #define MGL_WND_KIND   1\r
+#else\r
+#define MGL_WND_KIND   0\r
 #endif\r
 class mglWindow : public mglGraph\r
 {\r
index d863eb6f04597b2fa52ef31c2d62e015689dca8d..006bf062838ade4982ad4750965e777d99e820ce 100644 (file)
@@ -53,7 +53,7 @@ mglBase::mglBase()
 {\r
 //     memset(this,0,sizeof(mglBase)); // since mglBase is abstract then I can do it?!!\r
        Flag=0; saved=false;\r
-#ifdef HAVE_PTHREAD\r
+#if MGL_HAVE_PTHREAD\r
        pthread_mutex_init(&mutexPnt,0);\r
        pthread_mutex_init(&mutexTxt,0);\r
 #endif\r
index dcfaa08137f24f87d875860d085ca65b9cbf9a4c..2f48772bb1dc8cccc1d3d481b96221adb862e383 100644 (file)
@@ -34,7 +34,7 @@ mglCanvas::mglCanvas(int w, int h) : mglBase()
        ax.dir = mglPoint(1,0,0);       ax.a = mglPoint(0,1,0); ax.b = mglPoint(0,0,1); ax.ch='x';\r
        ay.dir = mglPoint(0,1,0);       ay.a = mglPoint(1,0,0); ay.b = mglPoint(0,0,1); ay.ch='y';\r
        az.dir = mglPoint(0,0,1);       az.a = mglPoint(0,1,0); az.b = mglPoint(1,0,0); az.ch='z';\r
-#ifdef HAVE_PTHREAD\r
+#if MGL_HAVE_PTHREAD\r
        pthread_mutex_init(&mutexSub,0);        pthread_mutex_init(&mutexLeg,0);\r
        pthread_mutex_init(&mutexPrm,0);        pthread_mutex_init(&mutexPtx,0);\r
        pthread_mutex_init(&mutexStk,0);        pthread_mutex_init(&mutexGrp,0);\r
index 2c673b5cc78b64b85dfd40560b45beedb901f116..9a505aa6e00fd75b30bd0b62a7bb3443460e9e4a 100644 (file)
@@ -29,7 +29,7 @@ void mglFillP(long x, const mreal *a,long nx,mreal _p[4]);
 void mglFillP5(long x,long y, const mreal *a,long nx,long ny,mreal _p[6][6]);\r
 void mglFillP5(long x, const mreal *a,long nx,mreal _p[6]);\r
 //-----------------------------------------------------------------------------\r
-#ifdef HAVE_PTHREAD\r
+#if MGL_HAVE_PTHREAD\r
 #ifdef WIN32\r
 #include <windows.h>\r
 #include <process.h>\r
@@ -61,7 +61,7 @@ void mglStartThread(void *(*func)(void *), void (*post)(mglThreadD *,mreal *), l
        const mreal *b, const mreal *c, const long *p, void *v, const mreal *d, const mreal *e, char *s)\r
 {\r
        if(!func)       return;\r
-#ifdef HAVE_PTHREAD\r
+#if MGL_HAVE_PTHREAD\r
        if(mglNumThr<1) mgl_set_num_thr(0);\r
        if(mglNumThr>1)\r
        {\r
index 1e6d55e7fa20674f38b57e138bdf0916a266329f..dc16374362788054c0738cb17d3966ac9045b21e 100644 (file)
 #include <math.h>\r
 #include <string.h>\r
 #include <zlib.h>\r
-#ifdef HAVE_HDF5\r
-#include <hdf5.h>\r
-#endif\r
-#ifdef HAVE_HDF4\r
-#define intf hdf4_intf\r
-#include <hdf/mfhdf.h>\r
-#undef intf\r
-#endif\r
 \r
 #ifndef WIN32\r
 #include <glob.h>\r
 #include "mgl/data.h"\r
 #include "mgl/eval.h"\r
 \r
+#if MGL_HAVE_HDF5\r
+#include <hdf5.h>\r
+#endif\r
+#if MGL_HAVE_HDF4\r
+#define intf hdf4_intf\r
+#include <hdf/mfhdf.h>\r
+#undef intf\r
+#endif\r
+\r
 //#define isn(ch)              ((ch)<' ' && (ch)!='\t')\r
 #define isn(ch)                ((ch)=='\n')\r
 //-----------------------------------------------------------------------------\r
@@ -119,7 +120,7 @@ void mgl_data_set_values_(uintptr_t *d, const char *val, int *nx, int *ny, int *
 //-----------------------------------------------------------------------------\r
 void mgl_data_set_vector(HMDT d, gsl_vector *v)\r
 {\r
-#ifndef NO_GSL\r
+#if MGL_HAVE_GSL\r
        if(!v || v->size<1)     return;\r
        mgl_data_create(d, v->size,1,1);\r
        for(long i=0;i<d->nx;i++)       d->a[i] = v->data[i*v->stride];\r
@@ -128,7 +129,7 @@ void mgl_data_set_vector(HMDT d, gsl_vector *v)
 //-----------------------------------------------------------------------------\r
 void mgl_data_set_matrix(HMDT d, gsl_matrix *m)\r
 {\r
-#ifndef NO_GSL\r
+#if MGL_HAVE_GSL\r
        if(!m || m->size1<1 || m->size2<1)      return;\r
        mgl_data_create(d, m->size1,m->size2,1);\r
        register long i,j;\r
@@ -141,7 +142,7 @@ void mgl_data_set_float(HMDT d, const float *A,long NX,long NY,long NZ)
 {\r
        if(NX<=0 || NY<=0 || NZ<=0)     return;\r
        mgl_data_create(d, NX,NY,NZ);   if(!A)  return;\r
-#if(MGL_USE_DOUBLE==1)\r
+#if MGL_USE_DOUBLE\r
        for(long i=0;i<NX*NY*NZ;i++)    d->a[i] = A[i];\r
 #else\r
        memcpy(d->a,A,NX*NY*NZ*sizeof(float));\r
@@ -152,7 +153,7 @@ void mgl_data_set_double(HMDT d, const double *A,long NX,long NY,long NZ)
 {\r
        if(NX<=0 || NY<=0 || NZ<=0)     return;\r
        mgl_data_create(d, NX,NY,NZ);   if(!A)  return;\r
-#if(MGL_USE_DOUBLE==1)\r
+#if MGL_USE_DOUBLE\r
        memcpy(d->a,A,NX*NY*NZ*sizeof(double));\r
 #else\r
        for(long i=0;i<NX*NY*NZ;i++)    d->a[i] = A[i];\r
@@ -163,7 +164,7 @@ void mgl_data_set_float2(HMDT d, const float **A,long N1,long N2)
 {\r
        if(N1<=0 || N2<=0)      return;\r
        mgl_data_create(d, N2,N1,1);    if(!A)  return;\r
-#if(MGL_USE_DOUBLE==1)\r
+#if MGL_USE_DOUBLE\r
        for(long i=0;i<N1;i++)  for(long j=0;j<N2;j++)  d->a[j+i*N2] = A[i][j];\r
 #else\r
        for(long i=0;i<N1;i++)  memcpy(d->a+i*N2,A[i],N2*sizeof(float));\r
@@ -174,7 +175,7 @@ void mgl_data_set_double2(HMDT d, const double **A,long N1,long N2)
 {\r
        if(N1<=0 || N2<=0)      return;\r
        mgl_data_create(d, N2,N1,1);    if(!A)  return;\r
-#if(MGL_USE_DOUBLE==1)\r
+#if MGL_USE_DOUBLE\r
        for(long i=0;i<N1;i++)  memcpy(d->a+i*N2,A[i],N2*sizeof(double));\r
 #else\r
        for(long i=0;i<N1;i++)  for(long j=0;j<N2;j++)  d->a[j+i*N2] = A[i][j];\r
@@ -185,7 +186,7 @@ void mgl_data_set_float3(HMDT d, const float ***A,long N1,long N2,long N3)
 {\r
        if(N1<=0 || N2<=0 || N3<=0)     return;\r
        mgl_data_create(d, N3,N2,N1);   if(!A)  return;\r
-#if(MGL_USE_DOUBLE==1)\r
+#if MGL_USE_DOUBLE\r
        for(long i=0;i<N1;i++)  for(long j=0;j<N2;j++)  for(long k=0;k<N3;k++)\r
                d->a[k+N3*(j+i*N2)] = A[i][j][k];\r
 #else\r
@@ -198,7 +199,7 @@ void mgl_data_set_double3(HMDT d, const double ***A,long N1,long N2,long N3)
 {\r
        if(N1<=0 || N2<=0 || N3<=0)     return;\r
        mgl_data_create(d, N3,N2,N1);   if(!A)  return;\r
-#if(MGL_USE_DOUBLE==1)\r
+#if MGL_USE_DOUBLE\r
        for(long i=0;i<N1;i++)  for(long j=0;j<N2;j++)\r
                memcpy(d->a+N3*(j+i*N2),A[i][j],N3*sizeof(double));\r
 #else\r
@@ -802,7 +803,7 @@ void mgl_data_fill_eq_(uintptr_t *gr, uintptr_t *d, const char *eq, uintptr_t *v
        char *o=new char[lo+1]; memcpy(o,opt,lo);       o[lo]=0;\r
        mgl_data_fill_eq(_GR_,_DT_,s,_DA_(v),_DA_(w),o);        delete []o;     delete []s;     }\r
 //-----------------------------------------------------------------------------\r
-#ifdef HAVE_HDF4\r
+#if MGL_HAVE_HDF4\r
 void mgl_data_read_hdf4(HMDT d,const char *fname,const char *data)\r
 {\r
        int32 sd = SDstart(fname,DFACC_READ), nn, i;\r
@@ -843,14 +844,14 @@ void mgl_data_read_hdf4(HMDT d,const char *fname,const char *data)
 void mgl_data_read_hdf4(HMDT ,const char *,const char *){}\r
 #endif\r
 //-----------------------------------------------------------------------------\r
-#ifdef HAVE_HDF5\r
+#if MGL_HAVE_HDF5\r
 void mgl_data_save_hdf(HCDT dat,const char *fname,const char *data,int rewrite)\r
 {\r
        const mglData *d = dynamic_cast<const mglData *>(dat);  // NOTE: only for mglData\r
        hid_t hf,hd,hs;\r
        hsize_t dims[3];\r
        long rank = 3, res;\r
-#ifndef H5_USE_16_API\r
+#if MGL_HAVE_HDF5_18\r
        H5Eset_auto(H5E_DEFAULT,0,0);\r
 #else\r
        H5Eset_auto(0,0);\r
@@ -863,16 +864,16 @@ void mgl_data_save_hdf(HCDT dat,const char *fname,const char *data,int rewrite)
        else if(d->nz==1)       {       rank=2; dims[0]=d->ny;  dims[1]=d->nx;  }\r
        else    {       rank=3; dims[0]=d->nz;  dims[1]=d->ny;  dims[2]=d->nx;  }\r
        hs = H5Screate_simple(rank, dims, 0);\r
-#if(MGL_USE_DOUBLE==1)\r
+#if MGL_USE_DOUBLE\r
        hid_t mem_type_id = H5T_NATIVE_DOUBLE;\r
 #else\r
        hid_t mem_type_id = H5T_NATIVE_FLOAT;\r
 #endif\r
-#ifndef H5_USE_16_API\r
+#if MGL_HAVE_HDF5_18\r
        hd = H5Dcreate(hf, data, mem_type_id, hs, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);\r
-#else  /* ! HAVE_HDF5_18 */\r
+#else\r
        hd = H5Dcreate(hf, data, mem_type_id, hs, H5P_DEFAULT);\r
-#endif /* HAVE_HDF5_18 */\r
+#endif\r
        H5Dwrite(hd, mem_type_id, hs, hs, H5P_DEFAULT, d->a);\r
        H5Dclose(hd);   H5Sclose(hs);   H5Fclose(hf);\r
 }\r
@@ -885,7 +886,7 @@ int mgl_data_read_hdf(HMDT d,const char *fname,const char *data)
        if(res<=0)      {       mgl_data_read_hdf4(d,fname,data);       return false;   }\r
        hf = H5Fopen(fname, H5F_ACC_RDONLY, H5P_DEFAULT);\r
        if(hf<0)        return false;\r
-#ifndef H5_USE_16_API\r
+#if MGL_HAVE_HDF5_18\r
        hd = H5Dopen(hf,data,H5P_DEFAULT);\r
 #else\r
        hd = H5Dopen(hf,data);\r
@@ -900,7 +901,7 @@ int mgl_data_read_hdf(HMDT d,const char *fname,const char *data)
                else if(rank==2)        {       dims[2]=dims[1];        dims[1]=dims[0];        dims[0]=1;      }\r
 //             else if(rank>3)         continue;\r
                mgl_data_create(d,dims[2],dims[1],dims[0]);\r
-#if(MGL_USE_DOUBLE==1)\r
+#if MGL_USE_DOUBLE\r
                H5Dread(hd, H5T_NATIVE_DOUBLE, H5S_ALL, H5S_ALL, H5P_DEFAULT, d->a);\r
 #else\r
                H5Dread(hd, H5T_NATIVE_FLOAT, H5S_ALL, H5S_ALL, H5P_DEFAULT, d->a);\r
@@ -916,7 +917,7 @@ int mgl_datas_hdf(const char *fname, char *buf, long size)
        buf[0]=0;\r
        hf = H5Fopen(fname, H5F_ACC_RDONLY, H5P_DEFAULT);\r
        if(!hf) return 0;\r
-#ifndef H5_USE_16_API\r
+#if MGL_HAVE_HDF5_18\r
        hg = H5Gopen(hf,"/",H5P_DEFAULT);\r
 #else\r
        hg = H5Gopen(hf,"/");\r
@@ -929,7 +930,7 @@ int mgl_datas_hdf(const char *fname, char *buf, long size)
        {\r
                if(H5Gget_objtype_by_idx(hg, i)!=H5G_DATASET)   continue;\r
                H5Gget_objname_by_idx(hg, i, name, 256);\r
-#ifndef H5_USE_16_API\r
+#if MGL_HAVE_HDF5_18\r
                hd = H5Dopen(hf,name,H5P_DEFAULT);\r
 #else\r
                hd = H5Dopen(hf,name);\r
index ee903e82a7519ae6118e1cc116e40452bf9ac1be..1ad1d59241a4a35555d10204c7635c6828e8a8bc 100644 (file)
 #include <math.h>\r
 #include <string.h>\r
 \r
-#ifndef NO_GSL\r
+#include "mgl/data.h"\r
+\r
+#if MGL_HAVE_GSL\r
 #include <gsl/gsl_fft_complex.h>\r
 #include <gsl/gsl_dht.h>\r
 #include <gsl/gsl_sf.h>\r
 #endif\r
-\r
-#include "mgl/data.h"\r
 //-----------------------------------------------------------------------------\r
 void mgl_data_envelop(HMDT d, char dir)\r
 {\r
-#ifndef NO_GSL\r
+#if MGL_HAVE_GSL\r
        register long i,j,k,i0;\r
        long nx=d->nx,ny=d->ny,nz=d->nz,nn=nx*ny*nz;\r
        double *b = new double[2*nn];\r
@@ -626,7 +626,7 @@ uintptr_t mgl_data_evaluate_(uintptr_t *d, uintptr_t *idat, uintptr_t *jdat, uin
 //-----------------------------------------------------------------------------\r
 void mgl_data_fourier(HMDT re, HMDT im, const char *dir)\r
 {\r
-#ifndef NO_GSL\r
+#if MGL_HAVE_GSL\r
        long nx = re->nx, ny = re->ny, nz = re->nz;\r
        if(nx*ny*nz != im->nx*im->ny*im->nz || !dir || dir[0]==0)       return;\r
        double *a = new double[2*nx*ny*nz];\r
@@ -673,7 +673,7 @@ void mgl_data_fourier_(uintptr_t *re, uintptr_t *im, const char *dir, int l)
 HMDT mgl_data_stfa(HCDT re, HCDT im, long dn, char dir)\r
 {\r
        mglData *d=new mglData;\r
-#ifndef NO_GSL\r
+#if MGL_HAVE_GSL\r
        if(dn<2)        return d;\r
        dn = 2*(dn/2);\r
        long nx = re->GetNx(), ny = re->GetNy();\r
@@ -750,7 +750,7 @@ void mgl_data_fill_sample(HMDT d, const char *how)
        mreal *aa=d->a;\r
        if(strchr(how,'h'))     // Hankel\r
        {\r
-#ifndef NO_GSL\r
+#if MGL_HAVE_GSL\r
                gsl_dht *dht = gsl_dht_new(n,0,1);\r
                for(i=0;i<n;i++)\r
                        aa[i] = xx ? gsl_dht_x_sample(dht, i) : gsl_dht_k_sample(dht, i);\r
@@ -770,7 +770,7 @@ void mgl_data_fill_sample_(uintptr_t *d, const char *how,int l)
 //-----------------------------------------------------------------------------\r
 void mgl_data_hankel(HMDT d, const char *dir)\r
 {\r
-#ifndef NO_GSL\r
+#if MGL_HAVE_GSL\r
        double *ai=0, *af=0, mm;\r
        gsl_dht *dht=0;\r
        register long i,j,k;\r
@@ -821,7 +821,7 @@ void mgl_data_hankel_(uintptr_t *d, const char *dir,int l)
 //-----------------------------------------------------------------------------\r
 void mgl_data_cosfft(HMDT d, const char *dir)\r
 {\r
-#ifndef NO_GSL\r
+#if MGL_HAVE_GSL\r
        double *b = 0;\r
        gsl_fft_complex_wavetable *wt=0;\r
        gsl_fft_complex_workspace *ws=0;\r
@@ -879,7 +879,7 @@ void mgl_data_cosfft_(uintptr_t *d, const char *dir,int l)
 //-----------------------------------------------------------------------------\r
 void mgl_data_sinfft(HMDT d, const char *dir)\r
 {\r
-#ifndef NO_GSL\r
+#if MGL_HAVE_GSL\r
        double *b = 0;\r
        gsl_fft_complex_wavetable *wt=0;\r
        gsl_fft_complex_workspace *ws=0;\r
index d8d243496bcd56572b7ae1e334e40bf07cef96dc..8236372d4651050936eef8e7e81beccf9ebf2438 100644 (file)
-/***************************************************************************
- * data_png.cpp is part of Math Graphic Library
- * Copyright (C) 2007 Alexey Balakin <balakin@appl.sci-nnov.ru>            *
- *                                                                         *
- *   This program 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 3 of the    *
- *   License, or (at your option) any later version.                       *
- *                                                                         *
- *   This program 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 General Public License for more details.                          *
- *                                                                         *
- *   You should have received a copy of the GNU Library General Public     *
- *   License along with this program; if not, write to the                 *
- *   Free Software Foundation, Inc.,                                       *
- *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
- ***************************************************************************/
-#include <stdlib.h>
-#include <zlib.h>
-#ifndef NO_PNG
-#include <png.h>
-#endif
-#include "mgl/data.h"
-//-----------------------------------------------------------------------------
-long mgl_col_dif(unsigned char *c1,unsigned char *c2,bool sum)
-{
-       long res,d1=abs(long(c1[0])-long(c2[0])),
-               d2=abs(long(c1[1])-long(c2[1])),d3=abs(long(c1[2])-long(c2[2]));
-       if(sum) res = d1+d2+d3;
-       else    res = mgl_max(d1,mgl_max(d2,d3));
-       return res;
-}
-//-----------------------------------------------------------------------------
-unsigned char *mgl_create_scheme(const char *scheme,long &num)
-{
-       unsigned char *c=0,*cc=new unsigned char[3*strlen(scheme)+3];
-       long nc=1,np=0;
-       register long i,j;
-       mglColor col;
-       for(i=0;i<long(strlen(scheme));i++)
-       {
-               col = mglColor(scheme[i]);
-               if(col.Valid())
-               {       cc[3*np]=col.r; cc[3*np+1]=col.g;       cc[3*np+2]=col.b;       np++;   }
-       }
-       if(np<2)        {       delete []cc;    return 0;       }
-       for(i=0;i<np-1;i++)     nc+=mgl_col_dif(cc+3*i,cc+3*i+3,false);
-       c = new unsigned char[3*nc+3];
-       long dd,pos=0;
-       for(i=0;i<np-1;i++)
-       {
-               dd=mgl_col_dif(cc+3*i,cc+3*i+3,false);
-               for(j=0;j<dd;j++)
-               {
-                       c[3*(pos+j)] = cc[3*i]+(cc[3*i+3]-cc[3*i])*j/dd;
-                       c[3*(pos+j)+1] = cc[3*i+1]+(cc[3*i+4]-cc[3*i+1])*j/dd;
-                       c[3*(pos+j)+2] = cc[3*i+2]+(cc[3*i+5]-cc[3*i+2])*j/dd;
-               }
-               pos += dd;
-       }
-       memcpy(c+3*nc-3,cc+3*np-3,3*sizeof(unsigned char));
-       delete []cc;
-       num=nc;
-       return c;
-}
-//-----------------------------------------------------------------------------
+/***************************************************************************\r
+ * data_png.cpp is part of Math Graphic Library\r
+ * Copyright (C) 2007 Alexey Balakin <balakin@appl.sci-nnov.ru>            *\r
+ *                                                                         *\r
+ *   This program is free software; you can redistribute it and/or modify  *\r
+ *   it under the terms of the GNU Library General Public License as       *\r
+ *   published by the Free Software Foundation; either version 3 of the    *\r
+ *   License, or (at your option) any later version.                       *\r
+ *                                                                         *\r
+ *   This program is distributed in the hope that it will be useful,       *\r
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *\r
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *\r
+ *   GNU General Public License for more details.                          *\r
+ *                                                                         *\r
+ *   You should have received a copy of the GNU Library General Public     *\r
+ *   License along with this program; if not, write to the                 *\r
+ *   Free Software Foundation, Inc.,                                       *\r
+ *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *\r
+ ***************************************************************************/\r
+#include <stdlib.h>\r
+#include <zlib.h>\r
+#include <png.h>\r
+#include "mgl/data.h"\r
+//-----------------------------------------------------------------------------\r
+long mgl_col_dif(unsigned char *c1,unsigned char *c2,bool sum)\r
+{\r
+       long res,d1=abs(long(c1[0])-long(c2[0])),\r
+               d2=abs(long(c1[1])-long(c2[1])),d3=abs(long(c1[2])-long(c2[2]));\r
+       if(sum) res = d1+d2+d3;\r
+       else    res = mgl_max(d1,mgl_max(d2,d3));\r
+       return res;\r
+}\r
+//-----------------------------------------------------------------------------\r
+unsigned char *mgl_create_scheme(const char *scheme,long &num)\r
+{\r
+       unsigned char *c=0,*cc=new unsigned char[3*strlen(scheme)+3];\r
+       long nc=1,np=0;\r
+       register long i,j;\r
+       mglColor col;\r
+       for(i=0;i<long(strlen(scheme));i++)\r
+       {\r
+               col = mglColor(scheme[i]);\r
+               if(col.Valid())\r
+               {       cc[3*np]=col.r; cc[3*np+1]=col.g;       cc[3*np+2]=col.b;       np++;   }\r
+       }\r
+       if(np<2)        {       delete []cc;    return 0;       }\r
+       for(i=0;i<np-1;i++)     nc+=mgl_col_dif(cc+3*i,cc+3*i+3,false);\r
+       c = new unsigned char[3*nc+3];\r
+       long dd,pos=0;\r
+       for(i=0;i<np-1;i++)\r
+       {\r
+               dd=mgl_col_dif(cc+3*i,cc+3*i+3,false);\r
+               for(j=0;j<dd;j++)\r
+               {\r
+                       c[3*(pos+j)] = cc[3*i]+(cc[3*i+3]-cc[3*i])*j/dd;\r
+                       c[3*(pos+j)+1] = cc[3*i+1]+(cc[3*i+4]-cc[3*i+1])*j/dd;\r
+                       c[3*(pos+j)+2] = cc[3*i+2]+(cc[3*i+5]-cc[3*i+2])*j/dd;\r
+               }\r
+               pos += dd;\r
+       }\r
+       memcpy(c+3*nc-3,cc+3*np-3,3*sizeof(unsigned char));\r
+       delete []cc;\r
+       num=nc;\r
+       return c;\r
+}\r
+//-----------------------------------------------------------------------------\r
 void mgl_data_import(HMDT d, const char *fname, const char *scheme,float v1,float v2)\r
-{
-       if(v1>=v2)      return;
-       long num=0;
-#ifndef NO_PNG
-       FILE *fp = fopen(fname, "rb");
-       if (!fp)        return;
-       png_structp png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, 0, 0, 0);
-       if (!png_ptr)   {       fclose(fp);     return; }
-       png_infop info_ptr = png_create_info_struct(png_ptr);
-       if (!info_ptr)
-       {       png_destroy_read_struct(&png_ptr,0,0);  fclose(fp);     return; }
-       png_infop end_info = png_create_info_struct(png_ptr);
-       if (!end_info)
-       {       png_destroy_read_struct(&png_ptr,&info_ptr,0);  fclose(fp);     return; }
-
-       png_init_io(png_ptr, fp);
-       png_read_png(png_ptr, info_ptr,
-               PNG_TRANSFORM_STRIP_ALPHA|PNG_TRANSFORM_PACKING|
-               PNG_TRANSFORM_STRIP_16|PNG_TRANSFORM_EXPAND,0);
-       unsigned char **rows = png_get_rows(png_ptr, info_ptr);
-       unsigned char *c = mgl_create_scheme(scheme,num);
-       if(num>1)
-       {
-               long w=png_get_image_width(png_ptr, info_ptr);
-               long h=png_get_image_height(png_ptr, info_ptr);
-               d->Create(w,h,1);
-               register long i,j,k;
-               long pos=0,val,mval=256;
-               for(i=0;i<d->ny;i++)    for(j=0;j<d->nx;j++)
-               {
-                       for(mval=256,k=0;k<num;k++)
-                       {
-                               val = mgl_col_dif(c+3*k,rows[d->ny-i-1]+3*j,true);
-                               if(val==0)      {       pos=k;  break;  }
-                               if(val<mval)    {       pos=k;  mval=val;       }
-                       }
-                       d->a[j+d->nx*i] = v1 + pos*(v2-v1)/num;
-               }
-       }
-       delete []c;
-       png_destroy_read_struct(&png_ptr, &info_ptr,&end_info);
-       fclose(fp);
-#endif
-}
-//-----------------------------------------------------------------------------
+{\r
+       if(v1>=v2)      return;\r
+       long num=0;\r
+       FILE *fp = fopen(fname, "rb");\r
+       if (!fp)        return;\r
+       png_structp png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, 0, 0, 0);\r
+       if (!png_ptr)   {       fclose(fp);     return; }\r
+       png_infop info_ptr = png_create_info_struct(png_ptr);\r
+       if (!info_ptr)\r
+       {       png_destroy_read_struct(&png_ptr,0,0);  fclose(fp);     return; }\r
+       png_infop end_info = png_create_info_struct(png_ptr);\r
+       if (!end_info)\r
+       {       png_destroy_read_struct(&png_ptr,&info_ptr,0);  fclose(fp);     return; }\r
+\r
+       png_init_io(png_ptr, fp);\r
+       png_read_png(png_ptr, info_ptr,\r
+               PNG_TRANSFORM_STRIP_ALPHA|PNG_TRANSFORM_PACKING|\r
+               PNG_TRANSFORM_STRIP_16|PNG_TRANSFORM_EXPAND,0);\r
+       unsigned char **rows = png_get_rows(png_ptr, info_ptr);\r
+       unsigned char *c = mgl_create_scheme(scheme,num);\r
+       if(num>1)\r
+       {\r
+               long w=png_get_image_width(png_ptr, info_ptr);\r
+               long h=png_get_image_height(png_ptr, info_ptr);\r
+               d->Create(w,h,1);\r
+               register long i,j,k;\r
+               long pos=0,val,mval=256;\r
+               for(i=0;i<d->ny;i++)    for(j=0;j<d->nx;j++)\r
+               {\r
+                       for(mval=256,k=0;k<num;k++)\r
+                       {\r
+                               val = mgl_col_dif(c+3*k,rows[d->ny-i-1]+3*j,true);\r
+                               if(val==0)      {       pos=k;  break;  }\r
+                               if(val<mval)    {       pos=k;  mval=val;       }\r
+                       }\r
+                       d->a[j+d->nx*i] = v1 + pos*(v2-v1)/num;\r
+               }\r
+       }\r
+       delete []c;\r
+       png_destroy_read_struct(&png_ptr, &info_ptr,&end_info);\r
+       fclose(fp);\r
+}\r
+//-----------------------------------------------------------------------------\r
 void mgl_data_export(HCDT dd, const char *fname, const char *scheme,float v1,float v2,long ns)\r
-{
-       register long i,j,k;
-       long nx=dd->GetNx(), ny=dd->GetNy(), nz=dd->GetNz();
-       mreal vv;
-       if(v1>v2)       return;
-       if(ns<0 || ns>=nz)      ns=0;
-       if(v1==v2)
-       {
-               v1 = 1e20;      v2=-1e20;
-               for(i=0;i<nx*ny*nz;i++)
-               {       vv = dd->vthr(i);       if(vv<v1)       v1=vv;  if(vv>v2)       v2=vv;  }
-       }
-       if(v1==v2)      return;
-#ifndef NO_PNG
-       long num=0;
-       unsigned char *c = mgl_create_scheme(scheme,num);
-       if(num<2)       {       delete []c;             return;         }
-
-       unsigned char **p = (unsigned char **)malloc(ny*sizeof(unsigned char *));
-       unsigned char *d = (unsigned char *)malloc(3*nx*ny*sizeof(unsigned char));
-       for(i=0;i<ny;i++)       p[i] = d+3*nx*(ny-1-i);
-       for(i=0;i<ny;i++)       for(j=0;j<nx;j++)
-       {
-               k = long(num*(dd->v(j,i,ns)-v1)/(v2-v1));
-               if(k<0) k=0;    if(k>=num) k=num-1;
-               memcpy(d+3*(j+i*nx),c+3*k,3*sizeof(unsigned char));
-       }
-       delete []c;
-
-       FILE *fp = fopen(fname, "wb");
-       if (!fp)        return;
-       png_structp png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, 0, 0, 0);
-       if (!png_ptr)   {       fclose(fp);     return; }
-       png_infop info_ptr = png_create_info_struct(png_ptr);
-       if (!info_ptr)
-       {       png_destroy_write_struct(&png_ptr,0);   fclose(fp);     return; }
-       png_init_io(png_ptr, fp);
-       png_set_filter(png_ptr, 0, PNG_ALL_FILTERS);
-       png_set_compression_level(png_ptr, Z_BEST_COMPRESSION);
-       png_set_IHDR(png_ptr, info_ptr, nx, ny, 8, PNG_COLOR_TYPE_RGB,
-                       PNG_INTERLACE_NONE, PNG_COMPRESSION_TYPE_DEFAULT, PNG_FILTER_TYPE_DEFAULT);
-       png_set_rows(png_ptr, info_ptr, p);
-       png_write_png(png_ptr, info_ptr,  PNG_TRANSFORM_IDENTITY, 0);
-       png_write_end(png_ptr, info_ptr);
-       png_destroy_write_struct(&png_ptr, &info_ptr);
-       fclose(fp);     free(p);        free(d);
-#endif
-}
-//-----------------------------------------------------------------------------
-void mgl_data_export_(uintptr_t *d, const char *fname, const char *scheme,float *v1,float *v2,int *ns,int l,int n)
-{
-       char *s=new char[l+1];  memcpy(s,fname,l);      s[l]=0;
-       char *f=new char[n+1];  memcpy(f,scheme,n);     f[n]=0;
-       mgl_data_export(_DT_,s,f,*v1,*v2,*ns);
-       delete []s;             delete []f;
-}
+{\r
+       register long i,j,k;\r
+       long nx=dd->GetNx(), ny=dd->GetNy(), nz=dd->GetNz();\r
+       mreal vv;\r
+       if(v1>v2)       return;\r
+       if(ns<0 || ns>=nz)      ns=0;\r
+       if(v1==v2)\r
+       {\r
+               v1 = 1e20;      v2=-1e20;\r
+               for(i=0;i<nx*ny*nz;i++)\r
+               {       vv = dd->vthr(i);       if(vv<v1)       v1=vv;  if(vv>v2)       v2=vv;  }\r
+       }\r
+       if(v1==v2)      return;\r
+       long num=0;\r
+       unsigned char *c = mgl_create_scheme(scheme,num);\r
+       if(num<2)       {       delete []c;             return;         }\r
+\r
+       unsigned char **p = (unsigned char **)malloc(ny*sizeof(unsigned char *));\r
+       unsigned char *d = (unsigned char *)malloc(3*nx*ny*sizeof(unsigned char));\r
+       for(i=0;i<ny;i++)       p[i] = d+3*nx*(ny-1-i);\r
+       for(i=0;i<ny;i++)       for(j=0;j<nx;j++)\r
+       {\r
+               k = long(num*(dd->v(j,i,ns)-v1)/(v2-v1));\r
+               if(k<0) k=0;    if(k>=num) k=num-1;\r
+               memcpy(d+3*(j+i*nx),c+3*k,3*sizeof(unsigned char));\r
+       }\r
+       delete []c;\r
+\r
+       FILE *fp = fopen(fname, "wb");\r
+       if (!fp)        return;\r
+       png_structp png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, 0, 0, 0);\r
+       if (!png_ptr)   {       fclose(fp);     return; }\r
+       png_infop info_ptr = png_create_info_struct(png_ptr);\r
+       if (!info_ptr)\r
+       {       png_destroy_write_struct(&png_ptr,0);   fclose(fp);     return; }\r
+       png_init_io(png_ptr, fp);\r
+       png_set_filter(png_ptr, 0, PNG_ALL_FILTERS);\r
+       png_set_compression_level(png_ptr, Z_BEST_COMPRESSION);\r
+       png_set_IHDR(png_ptr, info_ptr, nx, ny, 8, PNG_COLOR_TYPE_RGB,\r
+                       PNG_INTERLACE_NONE, PNG_COMPRESSION_TYPE_DEFAULT, PNG_FILTER_TYPE_DEFAULT);\r
+       png_set_rows(png_ptr, info_ptr, p);\r
+       png_write_png(png_ptr, info_ptr,  PNG_TRANSFORM_IDENTITY, 0);\r
+       png_write_end(png_ptr, info_ptr);\r
+       png_destroy_write_struct(&png_ptr, &info_ptr);\r
+       fclose(fp);     free(p);        free(d);\r
+}\r
+//-----------------------------------------------------------------------------\r
+void mgl_data_export_(uintptr_t *d, const char *fname, const char *scheme,float *v1,float *v2,int *ns,int l,int n)\r
+{\r
+       char *s=new char[l+1];  memcpy(s,fname,l);      s[l]=0;\r
+       char *f=new char[n+1];  memcpy(f,scheme,n);     f[n]=0;\r
+       mgl_data_export(_DT_,s,f,*v1,*v2,*ns);\r
+       delete []s;             delete []f;\r
+}\r
 void mgl_data_import_(uintptr_t *d, const char *fname, const char *scheme,float *v1,float *v2,int l,int n)\r
-{
-       char *s=new char[l+1];  memcpy(s,fname,l);      s[l]=0;
-       char *f=new char[n+1];  memcpy(f,scheme,n);     f[n]=0;
-       mgl_data_import(_DT_,s,f,*v1,*v2);
-       delete []s;             delete []f;
-}
-//-----------------------------------------------------------------------------
+{\r
+       char *s=new char[l+1];  memcpy(s,fname,l);      s[l]=0;\r
+       char *f=new char[n+1];  memcpy(f,scheme,n);     f[n]=0;\r
+       mgl_data_import(_DT_,s,f,*v1,*v2);\r
+       delete []s;             delete []f;\r
+}\r
+//-----------------------------------------------------------------------------\r
index 2f5964f141c119a7393a5cd2324bb83b45c944a1..80a928ec40374d92b5c1910da812d9e9f9e6101d 100644 (file)
 #include <math.h>\r
 #include <ctype.h>\r
 #include <string.h>\r
-#ifndef NO_GSL\r
+\r
+#include "mgl/eval.h"\r
+\r
+#if MGL_HAVE_GSL\r
 #include <gsl/gsl_sf.h>\r
 #include <gsl/gsl_rng.h>\r
 #include <gsl/gsl_errno.h>\r
 #endif\r
-#include "mgl/eval.h"\r
 //-----------------------------------------------------------------------------\r
 //     constants for expression parsing\r
 enum{\r
@@ -134,12 +136,12 @@ int mglFormula::Error=0;
 bool mglCheck(char *str,int n);\r
 int mglFindInText(char *str,const char *lst);\r
 //-----------------------------------------------------------------------------\r
-#ifndef NO_GSL\r
+#if MGL_HAVE_GSL\r
 gsl_rng *mgl_rng=0;\r
 #endif\r
 void mgl_srnd(long seed)\r
 {\r
-#ifndef NO_GSL\r
+#if MGL_HAVE_GSL\r
        if(mgl_rng==0)\r
        {\r
                gsl_rng_env_setup();\r
@@ -152,7 +154,7 @@ void mgl_srnd(long seed)
 }\r
 double mgl_rnd()\r
 {\r
-#ifndef NO_GSL\r
+#if MGL_HAVE_GSL\r
        if(mgl_rng==0)\r
        {\r
                gsl_rng_env_setup();\r
@@ -175,7 +177,7 @@ mglFormula::~mglFormula()
 // Formula constructor (automatically parse and "compile" formula)\r
 mglFormula::mglFormula(const char *string)\r
 {\r
-#ifndef NO_GSL\r
+#if MGL_HAVE_GSL\r
        gsl_set_error_handler_off();\r
 #endif\r
        Error=0;\r
@@ -476,7 +478,7 @@ double mul(double a,double b)       {return a&&b?a*b:0;}
 double div(double a,double b)  {return b?a/b:NAN;}\r
 double ipw(double a,double b)  {return fabs(b-int(b))<1e-5 ? mgl_ipow(a,int(b)) : pow(a,b);}\r
 double llg(double a,double b)  {return log(a)/log(b);}\r
-#ifndef NO_GSL\r
+#if MGL_HAVE_GSL\r
 double gslEllE(double a,double b)      {return gsl_sf_ellint_E(a,b,GSL_PREC_SINGLE);}\r
 double gslEllF(double a,double b)      {return gsl_sf_ellint_F(a,b,GSL_PREC_SINGLE);}\r
 double gslLegP(double a,double b)      {return gsl_sf_legendre_Pl(int(a),b);}\r
@@ -504,14 +506,14 @@ typedef double (*func_2)(double, double);
 mreal mglFormula::CalcIn(const mreal *a1) const\r
 {\r
        float z2[22] = {3,3,3,3,0,3,3,0,0,0,0,0,NAN,0\r
-#ifndef NO_GSL\r
+#if MGL_HAVE_GSL\r
                        ,3,NAN, 3,NAN, 0,0,3,1\r
 #else\r
                        ,0,0,0,0,0,0,0,0\r
 #endif\r
                };\r
        func_2 f2[22] = {clt,cgt,ceq,cor,cand,add,sub,mul,div,ipw,pow,fmod,llg,arg\r
-#ifndef NO_GSL\r
+#if MGL_HAVE_GSL\r
                        ,gsl_sf_bessel_Jnu,gsl_sf_bessel_Ynu,\r
                        gsl_sf_bessel_Inu,gsl_sf_bessel_Knu,\r
                        gslEllE,gslEllF,gslLegP,gsl_sf_beta\r
@@ -521,7 +523,7 @@ mreal mglFormula::CalcIn(const mreal *a1) const
                };\r
        func_1 f1[42] = {sin,cos,tan,asin,acos,atan,sinh,cosh,tanh,\r
                                        asinh,acosh,atanh,sqrt,exp,log,log10,sgn,stp,floor,fabs\r
-#ifndef NO_GSL\r
+#if MGL_HAVE_GSL\r
                        ,gsl_sf_dilog,gslEllEc,gslEllFc,gslAi,gslBi,gsl_sf_erf,\r
                        gsl_sf_expint_3,gsl_sf_expint_Ei,gsl_sf_expint_E1,gsl_sf_expint_E2,\r
                        gsl_sf_Si,gsl_sf_Ci,gsl_sf_gamma,gsl_sf_psi,gsl_sf_lambert_W0,\r
@@ -549,7 +551,7 @@ mreal mglFormula::CalcIn(const mreal *a1) const
                        return !isnan(b) ? f2[Kod-EQ_LT](a,b) : NAN;\r
                }\r
                else if(Kod<EQ_SN)      return f1[Kod-EQ_SIN](a);\r
-#ifndef NO_GSL\r
+#if MGL_HAVE_GSL\r
                else if(Kod<=EQ_DC)\r
                {\r
                        double sn=0,cn=0,dn=0,b = Right->CalcIn(a1);\r
@@ -607,7 +609,7 @@ double ci_d(double a)       {return cos(a)/a;}
 double exp3_d(double a)        {return exp(-a*a*a);}\r
 double e1_d(double a)  {return exp(-a)/a;}\r
 double sinc_d(double a)        {return a ? (cos(M_PI*a)/a-sin(M_PI*a)/(M_PI*a*a)) : 0;}\r
-#ifndef NO_GSL\r
+#if MGL_HAVE_GSL\r
 double e2_d(double a)  {return -gsl_sf_expint_E1(a);}\r
 double gslJnuD(double a,double b)      {return 0.5*(gsl_sf_bessel_Jnu(a-1,b)-gsl_sf_bessel_Jnu(a+1,b));}\r
 double gslYnuD(double a,double b)      {return 0.5*(gsl_sf_bessel_Ynu(a-1,b)-gsl_sf_bessel_Ynu(a+1,b));}\r
@@ -626,14 +628,14 @@ double gamma_d(double a)  {return gsl_sf_psi(a)*gsl_sf_gamma(a);}
 mreal mglFormula::CalcDIn(int id, const mreal *a1) const\r
 {\r
        func_2 f21[22] = {mgz2,mgz2,mgz2, mgz2,mgz2,mgp, mgp,mul1,div1, ipw1,pow1,mgp,llg1, mgz2\r
-#ifndef NO_GSL\r
+#if MGL_HAVE_GSL\r
                        ,mgz2,mgz2,mgz2, mgz2,gslEllE1,gslEllF2, mgz2,mgz2\r
 #else\r
                        ,mgz2,mgz2,mgz2,mgz2,mgz2,mgz2,mgz2,mgz2\r
 #endif\r
                };\r
                func_2 f22[22] = {mgz2,mgz2,mgz2,mgz2,mgz2,mgp,mgm,mul2,div2,pow2,pow2,mgz2,llg2, mgz2\r
-#ifndef NO_GSL\r
+#if MGL_HAVE_GSL\r
                        ,gslJnuD,gslYnuD,gslInuD,gslKnuD,gslEllE2,gslEllF2,mgz2/*gslLegP*/,mgz2\r
 #else\r
                        ,mgz2,mgz2,mgz2,mgz2,mgz2,mgz2,mgz2,mgz2\r
@@ -641,7 +643,7 @@ mreal mglFormula::CalcDIn(int id, const mreal *a1) const
                };\r
        func_1 f11[42] = {cos,cos_d,tan_d,asin_d,acos_d,atan_d,cosh,sinh,tanh_d,\r
                                        asinh_d,acosh_d,atanh_d,sqrt_d,exp,log_d,log10_d,mgz1,mgz1,mgz1,sgn\r
-#ifndef NO_GSL\r
+#if MGL_HAVE_GSL\r
                        ,dilog_d,gslE_d,gslK_d,gslAi_d,gslBi_d,erf_d,exp3_d,ei_d,e1_d,e2_d,\r
                        si_d,ci_d,gamma_d,gsl_sf_psi_1,mgz1,mgz1,sinc_d,mgz1,mgz1,mgz1,mgz1,mgz1\r
 #else\r
@@ -661,7 +663,7 @@ mreal mglFormula::CalcDIn(int id, const mreal *a1) const
                        return !isnan(b) ? (d?f21[Kod-EQ_LT](a,b)*d:0) + (c?f22[Kod-EQ_LT](a,b)*c:0) : NAN;\r
                }\r
                else if(Kod<EQ_SN)      return (d?f11[Kod-EQ_SIN](a)*d:0);\r
-#ifndef NO_GSL\r
+#if MGL_HAVE_GSL\r
                else if(Kod<=EQ_DC)\r
                {\r
                        double sn=0,cn=0,dn=0,b = Right->CalcIn(a1);\r
index aa894db6cddb7c732000087da9f1a66345044fd9..d0728a65420f125feb325d5826fe971691c7537e 100644 (file)
 #include "mgl/evalc.h"\r
 #include "mgl/addon.h"\r
 #include "mgl/data.h"\r
-#ifndef NO_GSL\r
+#if MGL_HAVE_GSL\r
 #include <gsl/gsl_sf.h>\r
 #endif\r
 //-----------------------------------------------------------------------------\r
-//     ÃªÃ®Ã­Ã±Ã²Ã Ã­Ã²Ã» Ã¤Ã«Ã¿ Ã°Ã Ã±Ã¯Ã®Ã§Ã­Ã®Ã¢Ã Ã­Ã¨Ã¿ Ã¢Ã»Ã°Ã Ã¦Ã¥Ã­Ã¨Ã¿\r
+//     ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½\r
 enum{\r
 EQ_NUM=0,      // a variable substitution\r
 EQ_RND,                // random number\r
 EQ_A,          // numeric constant\r
-// Ã¤Ã¢Ã³Ã¬Ã¥Ã±Ã²Ã­Ã»Ã¥ Ã´Ã³Ã­ÃªÃ¶Ã¨Ã¨\r
+// ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½\r
 EQ_ADD,                // addition x+y\r
 EQ_SUB,                // substraction x-y\r
 EQ_MUL,                // multiplication x*y\r
@@ -41,7 +41,7 @@ EQ_DIV,               // division x/y
 EQ_IPOW,       // power x^n for integer n\r
 EQ_POW,                // power x^y\r
 EQ_LOG,                // logarithm of x on base a, log_a(x) = ln(x)/ln(a)\r
-// Ã®Ã¤Ã­Ã®Ã¬Ã¥Ã±Ã²Ã­Ã»Ã¥ Ã´Ã³Ã­ÃªÃ¶Ã¨Ã¨\r
+// ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½\r
 EQ_SIN,                // sine function \sin(x).                       !!! MUST BE FIRST 1-PLACE FUNCTION\r
 EQ_COS,                // cosine function \cos(x).\r
 EQ_TAN,                // tangent function \tan(x).\r
@@ -66,14 +66,14 @@ int mglFormulaC::Error=0;
 bool mglCheck(char *str,int n);\r
 int mglFindInText(char *str,const char *lst);\r
 //-----------------------------------------------------------------------------\r
-// Ã¤Ã¥Ã±Ã²Ã°Ã³ÃªÃ²Ã®Ã° Ã´Ã®Ã°Ã¬Ã³Ã«Ã»\r
+// ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½\r
 mglFormulaC::~mglFormulaC()\r
 {\r
        if(Left) delete Left;\r
        if(Right) delete Right;\r
 }\r
 //-----------------------------------------------------------------------------\r
-// ÃªÃ®Ã­Ã±Ã²Ã°Ã³ÃªÃ²Ã®Ã° Ã´Ã®Ã°Ã¬Ã³Ã«Ã» (àâòîìàòè÷åñêè Ã°Ã Ã±Ã¯Ã®Ã§Ã­Ã Ã¥Ã² Ã¨ "êîìïèëèðóåò" Ã´Ã®Ã°Ã¬Ã³Ã«Ã³)\r
+// ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ (������������� ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ "�����������" ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½)\r
 mglFormulaC::mglFormulaC(const char *string)\r
 {\r
        Error=0;\r
@@ -89,14 +89,14 @@ mglFormulaC::mglFormulaC(const char *string)
        mgl_strlwr(str);\r
        len=strlen(str);\r
        if(str[0]==0) { delete []str;   return; }\r
-       if(str[0]=='(' && mglCheck(&(str[1]),len-2))    // Ã¥Ã±Ã«Ã¨ Ã¢Ã±Ã¥ Ã¢Ã»Ã°Ã Ã¦Ã¥Ã­Ã¨Ã¥ Ã¢ Ã±ÃªÃ®Ã¡Ã Ãµ, Ã²Ã® Ã³Ã¡Ã¨Ã°Ã Ã¥Ã¬  Ã¨Ãµ\r
+       if(str[0]=='(' && mglCheck(&(str[1]),len-2))    // ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½, ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½  ï¿½ï¿½\r
        {\r
                strcpy(Buf,str+1);\r
                len-=2; Buf[len]=0;\r
                strcpy(str,Buf);\r
        }\r
        len=strlen(str);\r
-       n=mglFindInText(str,"+-");                              // Ã¬Ã¥Ã­Ã¼Ã¸Ã¨Ã© Ã¯Ã°Ã¨Ã®Ã°Ã¨Ã²Ã¥Ã² - Ã±Ã«Ã®Ã¦Ã¥Ã­Ã¨Ã¥, Ã¢Ã»Ã·Ã¨Ã²Ã Ã­Ã¨Ã¥\r
+       n=mglFindInText(str,"+-");                              // ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ - ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½, ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½\r
        if(n>=0)\r
        {\r
                if(str[n]=='+') Kod=EQ_ADD; else Kod=EQ_SUB;\r
@@ -106,7 +106,7 @@ mglFormulaC::mglFormulaC(const char *string)
                delete []str;\r
                return;\r
        }\r
-       n=mglFindInText(str,"*/");                              // Ã±Ã°Ã¥Ã¤Ã­Ã¨Ã© Ã¯Ã°Ã¨Ã®Ã°Ã¨Ã²Ã¥Ã² - Ã³Ã¬Ã­Ã®Ã¦Ã¥Ã­Ã¨Ã¥, Ã¤Ã¥Ã«Ã¥Ã­Ã¨Ã¥\r
+       n=mglFindInText(str,"*/");                              // ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ - ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½, ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½\r
        if(n>=0)\r
        {\r
                if(str[n]=='*') Kod=EQ_MUL; else Kod=EQ_DIV;\r
@@ -116,7 +116,7 @@ mglFormulaC::mglFormulaC(const char *string)
                delete []str;\r
                return;\r
        }\r
-       n=mglFindInText(str,"^");                               // Ã¢Ã»Ã±Ã®ÃªÃ¨Ã© Ã¯Ã°Ã¨Ã®Ã°Ã¨Ã²Ã¥Ã² - Ã¢Ã®Ã§Ã¢Ã¥Ã¤Ã¥Ã­Ã¨Ã¥ Ã¢ Ã±Ã²Ã¥Ã¯Ã¥Ã­Ã¼\r
+       n=mglFindInText(str,"^");                               // ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ - ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½\r
        if(n>=0)\r
        {\r
                Kod=EQ_IPOW;\r
@@ -128,16 +128,16 @@ mglFormulaC::mglFormulaC(const char *string)
        }\r
 \r
        for(n=0;n<len;n++)      if(str[n]=='(') break;\r
-       if(n>=len)                                                      // Ã½Ã²Ã® Ã·Ã¨Ã±Ã«Ã® Ã¨Ã«Ã¨ Ã¯Ã¥Ã°Ã¥Ã¬Ã¥Ã­Ã­Ã Ã¿\r
+       if(n>=len)                                                      // ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½\r
        {\r
                Kod = EQ_NUM;\r
 //             Left = Right = 0;\r
-               if(str[1]==0 && str[0]>='a' && str[0]<='z')     // Ã¤Ã®Ã±Ã²Ã³Ã¯Ã­Ã»Ã¥ Ã¯Ã¥Ã°Ã¥Ã¬Ã­Ã­Ã»Ã¥\r
+               if(str[1]==0 && str[0]>='a' && str[0]<='z')     // ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½\r
                {       Kod=EQ_A;       Res = str[0]-'a';       }\r
                else if(!strcmp(str,"rnd")) Kod=EQ_RND;\r
                else if(!strcmp(str,"pi")) Res=M_PI;\r
                else if(str[0]=='i')    Res = dual(0,atof(str+1));\r
-               else Res=atof(str);                             // Ã½Ã²Ã® Ã·Ã¨Ã±Ã«Ã®\r
+               else Res=atof(str);                             // ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½\r
        }\r
        else\r
        {\r
index ce425921852336ab2c08b081518b33fe4e670315..e3e08913f6dace0484abee76f1254e06230f5f36 100644 (file)
@@ -22,7 +22,7 @@
 #include <math.h>
 #include <wchar.h>
 #include "mgl/parser.h"
-#ifndef NO_GSL
+#if MGL_HAVE_GSL
 #include <gsl/gsl_sf.h>
 #include <gsl/gsl_errno.h>
 #endif
@@ -116,7 +116,7 @@ void mgl_wcstombs(char *dst, const wchar_t *src, int size)
 // NOTE: the speed is not a goal (mglFormula is faster). It is true interpreter!
 mglData mglFormulaCalc(const wchar_t *string, mglParser *arg)
 {
-#ifndef NO_GSL
+#if MGL_HAVE_GSL
        gsl_set_error_handler_off();
 #endif
        mglData res;
@@ -347,7 +347,7 @@ mglData mglFormulaCalc(const wchar_t *string, mglParser *arg)
                        else if(!wcscmp(name+1,L"bs"))
                        {       res=mglFormulaCalc(Buf, arg);
                                for(i=0;i<res.nx*res.ny*res.nz;i++)     res.a[i] = fabs(res.a[i]);      }
-#ifndef NO_GSL
+#if MGL_HAVE_GSL
                        else if(!wcscmp(name+1,L"i"))
                        {       res=mglFormulaCalc(Buf, arg);
                                for(i=0;i<res.nx*res.ny*res.nz;i++)
@@ -392,7 +392,7 @@ mglData mglFormulaCalc(const wchar_t *string, mglParser *arg)
                        else if(!wcscmp(name+1,L"osh") || !wcscmp(name+1,L"h"))
                        {       res=mglFormulaCalc(Buf, arg);
                                for(i=0;i<res.nx*res.ny*res.nz;i++)     res.a[i] = cosh(res.a[i]);      }
-#ifndef NO_GSL
+#if MGL_HAVE_GSL
                        else if(!wcscmp(name+1,L"i"))
                        {       res=mglFormulaCalc(Buf, arg);
                                for(i=0;i<res.nx*res.ny*res.nz;i++)
@@ -432,7 +432,7 @@ mglData mglFormulaCalc(const wchar_t *string, mglParser *arg)
                        if(!wcscmp(name+1,L"xp"))
                        {       res=mglFormulaCalc(Buf, arg);
                                for(i=0;i<res.nx*res.ny*res.nz;i++)     res.a[i] = exp(res.a[i]);       }
-#ifndef NO_GSL
+#if MGL_HAVE_GSL
                        else if(!wcscmp(name+1,L"rf"))
                        {       res=mglFormulaCalc(Buf, arg);
                                for(i=0;i<res.nx*res.ny*res.nz;i++)
@@ -498,7 +498,7 @@ mglData mglFormulaCalc(const wchar_t *string, mglParser *arg)
                        else if(!wcscmp(name+1,L"n"))
                        {       res=mglFormulaCalc(Buf, arg);
                                for(i=0;i<res.nx*res.ny*res.nz;i++)     res.a[i] = log(res.a[i]);       }
-#ifndef NO_GSL
+#if MGL_HAVE_GSL
                        else if(!wcscmp(name+1,L"i2"))
                        {       res=mglFormulaCalc(Buf, arg);
                                for(i=0;i<res.nx*res.ny*res.nz;i++)
@@ -530,7 +530,7 @@ mglData mglFormulaCalc(const wchar_t *string, mglParser *arg)
                        else if(!wcscmp(name+1,L"inh") || !wcscmp(name+1,L"h"))
                        {       res=mglFormulaCalc(Buf, arg);
                                for(i=0;i<res.nx*res.ny*res.nz;i++)     res.a[i] = sinh(res.a[i]);      }
-#ifndef NO_GSL
+#if MGL_HAVE_GSL
                        else if(!wcscmp(name+1,L"i"))
                        {       res=mglFormulaCalc(Buf, arg);
                                for(i=0;i<res.nx*res.ny*res.nz;i++)
@@ -567,7 +567,7 @@ mglData mglFormulaCalc(const wchar_t *string, mglParser *arg)
                else if(!wcscmp(name+1,L"int"))
                {       res=mglFormulaCalc(Buf, arg);
                        for(i=0;i<res.nx*res.ny*res.nz;i++)     res.a[i] = floor(res.a[i]);     }
-#ifndef NO_GSL
+#if MGL_HAVE_GSL
                else if(!wcscmp(name,L"i"))
                {
                        n=mglFindInText(Buf,",");
index c28e3213e83a48e8de465afee9255dad7a3f3b51..ab6bd918ba24cd403a156ba338b4602d45ead97e 100644 (file)
 #include <time.h>
 #include <zlib.h>
 #include <stdarg.h>
-#ifndef NO_PNG
 #include <png.h>
-#endif
-#ifdef HAVE_JPEG
+
+#include "mgl/canvas.h"
+#include "mgl/canvas_cf.h"
+
+#if MGL_HAVE_JPEG
 extern "C" {
 #include <jpeglib.h>
 }
 #endif
-
-#include "mgl/canvas.h"
-#include "mgl/canvas_cf.h"
 //-----------------------------------------------------------------------------
 int mgl_pnga_save(const char *fname, int w, int h, unsigned char **p)
 {
-#ifndef NO_PNG
        FILE *fp = fopen(fname, "wb");
        if (!fp)        return 1;
 
@@ -61,14 +59,10 @@ int mgl_pnga_save(const char *fname, int w, int h, unsigned char **p)
        png_destroy_write_struct(&png_ptr, &info_ptr);
        fclose(fp);
        return 0;
-#else
-       return 1;
-#endif
 }
 //-----------------------------------------------------------------------------
 int mgl_png_save(const char *fname, int w, int h, unsigned char **p)
 {
-#ifndef NO_PNG
        FILE *fp = fopen(fname, "wb");
        if (!fp)        return 1;
 
@@ -92,9 +86,6 @@ int mgl_png_save(const char *fname, int w, int h, unsigned char **p)
        png_destroy_write_struct(&png_ptr, &info_ptr);
        fclose(fp);
        return 0;
-#else
-       return 1;
-#endif
 }
 //-----------------------------------------------------------------------------
 int mgl_bmp_save(const char *fname, int w, int h, unsigned char **p)
@@ -154,7 +145,7 @@ int mgl_tga_save(const char *fname, int w, int h, unsigned char **p)
 //-----------------------------------------------------------------------------
 int mgl_jpeg_save(const char *fname, int w, int h, unsigned char **p)
 {
-#ifdef HAVE_JPEG
+#if MGL_HAVE_JPEG
        struct jpeg_compress_struct cinfo;
        struct jpeg_error_mgr jerr;
        FILE * outfile;
@@ -214,7 +205,7 @@ int mgl_bps_save(const char *fname, int w, int h, unsigned char **p)
 //-----------------------------------------------------------------------------
 int mgl_gif_save(const char *fname, int w, int h, unsigned char **l)
 {
-#ifdef HAVE_GIF
+#if MGL_HAVE_GIF
        GifFileType *fg = EGifOpenFileName(fname, 0);
        // define colormap
        GifColorType col[256];
@@ -257,7 +248,7 @@ int mgl_gif_save(const char *fname, int w, int h, unsigned char **l)
 //-----------------------------------------------------------------------------
 void mglCanvas::StartGIF(const char *fname, int ms)
 {
-#ifdef HAVE_GIF
+#if MGL_HAVE_GIF
        if(gif) EGifCloseFile(gif);
        EGifSetGifVersion("89a");
        std::string fn=fname;
@@ -295,7 +286,7 @@ void mglCanvas::StartGIF(const char *fname, int ms)
 //-----------------------------------------------------------------------------
 void mglCanvas::CloseGIF()
 {
-#ifdef HAVE_GIF
+#if MGL_HAVE_GIF
        if(gif) EGifCloseFile(gif);
 #endif
        gif = 0;
@@ -309,7 +300,7 @@ int mglCanvas::NewFrame()
 //-----------------------------------------------------------------------------
 void mglCanvas::EndFrame()
 {
-#ifdef HAVE_GIF
+#if MGL_HAVE_GIF
        long width, height, n;
        unsigned char *f=0, **l=0;
        l = GetRGBLines(width, height, f);
index d02c03e0933390443a51e5fdc8e5ca8a6d5a2c37..a2c08c3afd2050cdd199ecef3bc1d817e781dca8 100644 (file)
  *   Free Software Foundation, Inc.,                                       *\r
  *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *\r
  ***************************************************************************/\r
-#ifndef NO_GSL\r
-#include <gsl/gsl_multifit_nlin.h>\r
-#include <gsl/gsl_blas.h>\r
-#endif\r
 #include <ctype.h>\r
 #include "mgl/fit.h"\r
 #include "mgl/eval.h"\r
 #include "mgl/data.h"\r
+\r
+#if MGL_HAVE_GSL\r
+#include <gsl/gsl_multifit_nlin.h>\r
+#include <gsl/gsl_blas.h>\r
+#endif\r
 //-----------------------------------------------------------------------------\r
 int mglFitPnts=100;            ///< Number of output points in fitting\r
 char mglFitRes[1024];  ///< Last fitted formula\r
@@ -43,7 +44,7 @@ struct mglFitData
        const char *var;        ///< variables for fitting\r
 };\r
 //-----------------------------------------------------------------------------\r
-#ifndef NO_GSL\r
+#if MGL_HAVE_GSL\r
 int    mgl_fit__f (const gsl_vector *x, void *data, gsl_vector *f)\r
 {\r
        mglFitData *fd = (mglFitData *)data;\r
@@ -88,7 +89,7 @@ int mgl_fit__fdf (const gsl_vector * x, void *data, gsl_vector * f, gsl_matrix *
 /// GSL based fitting procedure for formula/arguments specified by string\r
 mreal mgl_fit_base(mglFitData *fd, mreal *ini)\r
 {\r
-#ifndef NO_GSL\r
+#if MGL_HAVE_GSL\r
        register long i,m=fd->m,n=fd->n,iter=0;\r
        if(n<1 || fd==0 || ini==0)      return -1;\r
        // setup data\r
index 970fd668e9fb9523c07d00c72a682a11dbe5d776..343902ddbc51077fa4b5273b36be18fd698bc124 100644 (file)
@@ -21,7 +21,7 @@
 #include <complex>\r
 #define dual   std::complex<double>\r
 #define GAMMA  0.1\r
-#ifndef NO_GSL\r
+#if MGL_HAVE_GSL\r
 #include <gsl/gsl_fft_complex.h>\r
 #endif\r
 //-----------------------------------------------------------------------------\r
@@ -86,7 +86,7 @@ HMDT mgl_pde_solve(HMGL gr, const char *ham, HCDT ini_re, HCDT ini_im, float dz,
        if(ini_im->GetNx()*ini_im->GetNy() != nx*ny)// Wrong dimensions\r
        {       gr->SetWarn(mglWarnDim,"PDE");  return res;     }\r
        mgl_data_create(res, nz, nx, ny);\r
-#ifndef NO_GSL\r
+#if MGL_HAVE_GSL\r
        mglFormula eqs(ham);\r
        dual *a = new dual[4*nx*ny], hh0;       // Add "damping" area\r
        dual *hxy = new dual[4*nx*ny], *hxv = new dual[4*nx*ny];\r
@@ -183,7 +183,7 @@ HMDT mgl_ray_trace(const char *ham, float x0, float y0, float z0, float px, floa
        int nt = int(tmax/dt)+1;\r
        mgl_data_create(res,7,nt,1);\r
        mgl_data_set_id(res,"xyzpqvt");\r
-#ifndef NO_GSL\r
+#if MGL_HAVE_GSL\r
        mreal x[6], k1[6], k2[6], k3[6], hh=dt/2;\r
        mglFormula eqs(ham);\r
        // initial conditions\r
@@ -321,7 +321,7 @@ HMDT mgl_qo2d_solve(const char *ham, HCDT ini_re, HCDT ini_im, HCDT ray_dat, flo
        int nx=ini_re->GetNx(), nt=ray->ny;\r
        if(nx<2 || ini_im->GetNx()!=nx || nt<2) return res;\r
        mgl_data_create(res,nx,nt,1);\r
-#ifndef NO_GSL\r
+#if MGL_HAVE_GSL\r
        dual *a=new dual[2*nx], *hu=new dual[2*nx],  *hx=new dual[2*nx], h0;\r
        double *ru=new double[2*nx],    *rx=new double[2*nx],   *dmp=new double[2*nx],\r
                        *pu=new double[2*nx],   *px=new double[2*nx];\r
index 73cf5475955c9a13dc6b461aef3e24066fba2c20..bec03c6b6d024444d381e9b936d16c7b54be058d 100644 (file)
@@ -241,7 +241,7 @@ void *mgl_canvas_thr(void *par)
 void mglStartThread(void (mglCanvas::*func)(unsigned long i, unsigned long n, const void *p), mglCanvas *gr, unsigned long n, const void *p=NULL)\r
 {\r
        if(!func || !gr)        return;\r
-#ifdef HAVE_PTHREAD\r
+#if MGL_HAVE_PTHREAD\r
        if(mglNumThr<1) mgl_set_num_thr(0);\r
        if(mglNumThr>1)\r
        {\r
@@ -409,7 +409,7 @@ void mglCanvas::Combine(const mglCanvas *gr)
        mglStartThread(&mglCanvas::pxl_other,this,Width*Height,gr);\r
 }\r
 //-----------------------------------------------------------------------------\r
-#ifndef HAVE_MPI\r
+#if !defined(MGL_HAVE_MPI) || MGL_HAVE_MPI==0\r
 void mglCanvas::MPI_Send(int /*id*/)   {}      // TODO: add later\r
 void mglCanvas::MPI_Recv(int /*id*/)   {}      // TODO: add later\r
 #endif\r
@@ -818,7 +818,7 @@ void mglCanvas::mark_draw(long k, char type, float size, mglDrawReg *d)
        mglPnt p=q;\r
        float ss=fabs(size)*0.35*font_factor;\r
        register long i,j;\r
-#ifdef HAVE_PTHREAD\r
+#if MGL_HAVE_PTHREAD\r
        pthread_mutex_lock(&mutexPnt);\r
 #endif\r
        if(type=='.' || ss==0)  pnt_draw(k,d);\r
@@ -957,7 +957,7 @@ void mglCanvas::mark_draw(long k, char type, float size, mglDrawReg *d)
                PDef = pd;      PenWidth = pw;\r
                Pnt.erase(Pnt.begin()+pos,Pnt.end());\r
        }\r
-#ifdef HAVE_PTHREAD\r
+#if MGL_HAVE_PTHREAD\r
        pthread_mutex_unlock(&mutexPnt);\r
 #endif\r
 }\r
@@ -966,7 +966,7 @@ void mglCanvas::glyph_draw(const mglPrim *P, mglDrawReg *d)
 {\r
        mglPnt p=Pnt[P->n1];\r
        float f = p.w;\r
-#ifdef HAVE_PTHREAD\r
+#if MGL_HAVE_PTHREAD\r
        pthread_mutex_lock(&mutexPnt);\r
 #endif\r
        Push();         B.clear();\r
@@ -986,7 +986,7 @@ void mglCanvas::glyph_draw(const mglPrim *P, mglDrawReg *d)
                glyph_wire(p,f,fnt->GetNl(ss,P->n4),fnt->GetLn(ss,P->n4), d);\r
        }\r
        Pop();\r
-#ifdef HAVE_PTHREAD\r
+#if MGL_HAVE_PTHREAD\r
        pthread_mutex_unlock(&mutexPnt);\r
 #endif\r
 }\r
index b17908228cc333e8db3c59f27623cae4bd060ba4..392f0e854c4da50836372e23c058ddb56f0c08f2 100644 (file)
--- a/todo.txt
+++ b/todo.txt
@@ -136,9 +136,8 @@ Remove other setting if data name is changed.
 +              2.6 2D data plotting
 +              2.7 3D data plotting
                2.8 Dual data plotting
-               2.9 More samples
-               2.10 Hints
-               2.12 FAQ
+               2.9 Hints
+               2.10 FAQ
 
 +      3. General concepts (class-diagram)
 +              3.1 Coordinate axes
index 776635badf0c792f1576ec0c8eb9787de802c3cc..e6e61593d696d3c8e897c8281b726d26fbf01235 100644 (file)
@@ -244,7 +244,7 @@ void TextPanel::newCmd()
        newCmdDlg->show();
 }
 //-----------------------------------------------------------------------------
-#ifndef HAVE_HDF5
+#if MGL_HAVE_HDF5==0
 void TextPanel::saveHDF5(const QString &fileName){}
 void TextPanel::loadHDF5(const QString &fileName){}
 //-----------------------------------------------------------------------------
index f3c52229e1d93988bf650c72d66bcea62ec32784..661c37ca890cf652717704c1cc78964493aa103c 100644 (file)
@@ -57,9 +57,9 @@ int main(int narg, char **arg)
                if(arg[i][0]!='-' && j<0)       j=i;
        }
        mgl_ask_func = mgl_ask_gets;
-#if defined(HAVE_QT)
+#if MGL_HAVE_QT
        int kind=1;             mgl_ask_func = mgl_ask_qt;
-#elif defined(HAVE_FLTK)
+#else
        int kind=0;             mgl_ask_func = mgl_ask_fltk;
 #endif
        bool mgld=(j>0 && arg[j][strlen(arg[j])]=='d');
@@ -69,12 +69,10 @@ int main(int narg, char **arg)
                while(!feof(fp))        str.push_back(fgetwc(fp));
                if(j>0) fclose(fp);
        }
-#if defined(HAVE_FLTK) || defined(HAVE_QT)
        mglWindow gr(mgld?NULL:show, j>0?arg[j]:"mglview", kind);
        if(mgld)
        {       gr.ImportMGLD(arg[j]);  gr.Update();    }
        gr.Run();
-#endif
        return 0;
 }
 //-----------------------------------------------------------------------------
index 888898c8ddcc04b724fc6a5ebd3e9c4920b53920..da5eefbc501052814901a5cadc7c54b849290cb0 100644 (file)
@@ -195,13 +195,13 @@ HMGL mgl_create_graph_glut(int (*draw)(HMGL gr, void *p), const char *title, voi
 //-----------------------------------------------------------------------------\r
 mglCanvasGLUT::mglCanvasGLUT() : mglCanvasGL() {}\r
 //-----------------------------------------------------------------------------\r
-#ifdef HAVE_FLTK\r
+#if MGL_HAVE_FLTK\r
 HMGL mgl_create_graph_fltk(int (*)(HMGL gr, void *p), const char *, void *)\r
 {      return NULL;    }\r
 int mgl_fltk_run(){return 0;}\r
 #endif\r
 //-----------------------------------------------------------------------------\r
-#ifdef HAVE_QT\r
+#if MGL_HAVE_QT\r
 HMGL mgl_create_graph_qt(int (*)(HMGL gr, void *p), const char *, void *)\r
 {      return NULL;    }\r
 int mgl_qt_run(){return 0;}\r
index 7dc491947ca98ff171329a52a69209c4dff0b6a9..e87565e7f49ed2c467c14cd10bcc66516ae4caad 100644 (file)
@@ -152,7 +152,7 @@ void mgl_wnd_animation_(uintptr_t *gr)
 {      mglCanvasW *g = dynamic_cast<mglCanvasW *>((HMGL)(*gr));\r
        if(g)   g->Animation(); }\r
 //-----------------------------------------------------------------------------\r
-#ifndef HAVE_FLTK\r
+#if MGL_HAVE_FLTK==0\r
 HMGL mgl_create_graph_fltk(int (*)(HMGL gr, void *p), const char *, void *)\r
 {      return NULL;    }\r
 int mgl_fltk_run(){return 0;}\r
@@ -166,7 +166,7 @@ uintptr_t mgl_create_graph_fltk_(const char *title, int l)
 }\r
 int mgl_fltk_run_()    {       return mgl_fltk_run();  }\r
 //-----------------------------------------------------------------------------\r
-#ifndef HAVE_QT\r
+#if MGL_HAVE_QT==0\r
 HMGL mgl_create_graph_qt(int (*)(HMGL gr, void *p), const char *, void *)\r
 {      return NULL;    }\r
 int mgl_qt_run(){return 0;}\r
@@ -199,7 +199,7 @@ int mgl_draw_graph(mglBase *gr, void *p)
 //-----------------------------------------------------------------------------\r
 void *mgl_draw_calc(void *p)\r
 {\r
-#ifdef HAVE_PTHREAD\r
+#if MGL_HAVE_PTHREAD\r
        ((mglDraw *)p)->Calc();\r
 #endif\r
        return 0;\r
@@ -207,7 +207,7 @@ void *mgl_draw_calc(void *p)
 //-----------------------------------------------------------------------------\r
 void mgl_draw_thr(void *p)\r
 {\r
-#ifdef HAVE_PTHREAD\r
+#if MGL_HAVE_PTHREAD\r
        mglDraw *d = (mglDraw *)p;\r
        if(!d || d->running)    return;\r
        pthread_create(&(d->thr),0,mgl_draw_calc,d);\r