From f5a32dbb658de68467343ff8c5fc3cdd2403f982 Mon Sep 17 00:00:00 2001 From: Dimitrios Eftaxiopoulos Date: Fri, 16 Mar 2012 19:25:19 +0200 Subject: [PATCH] Imported Upstream version 2~rc2+svn368 --- include/mgl/base.h | 2 +- include/mgl/canvas.h | 4 +- include/mgl/data.h | 2 +- include/mgl/define.h | 6 +- include/mgl/window.h | 8 +- src/base.cpp | 2 +- src/canvas.cpp | 2 +- src/data.cpp | 4 +- src/data_io.cpp | 55 +++---- src/data_new.cpp | 20 +-- src/data_png.cpp | 346 +++++++++++++++++++++---------------------- src/eval.cpp | 34 +++-- src/evalc.cpp | 26 ++-- src/evalp.cpp | 16 +- src/export.cpp | 29 ++-- src/fit.cpp | 13 +- src/pde.cpp | 8 +- src/pixel.cpp | 12 +- todo.txt | 5 +- udav/text_pnl.cpp | 2 +- utils/mglview.cpp | 6 +- widgets/glut.cpp | 4 +- widgets/window.cpp | 8 +- 23 files changed, 300 insertions(+), 314 deletions(-) diff --git a/include/mgl/base.h b/include/mgl/base.h index 1aaef53..2de3364 100644 --- a/include/mgl/base.h +++ b/include/mgl/base.h @@ -379,7 +379,7 @@ protected: std::vector Ptx; ///< Text labels for mglPrim std::vector Leg; ///< Text labels for legend std::vector Txt;///< Pointer to textures -#ifdef HAVE_PTHREAD +#if MGL_HAVE_PTHREAD pthread_mutex_t mutexPnt, mutexTxt, mutexLeg; #endif diff --git a/include/mgl/canvas.h b/include/mgl/canvas.h index b96cab6..f435c4f 100644 --- a/include/mgl/canvas.h +++ b/include/mgl/canvas.h @@ -25,7 +25,7 @@ #define MGL_STACK_ENTRY 10 #endif //----------------------------------------------------------------------------- -#ifdef HAVE_GIF +#if MGL_HAVE_GIF #include #else struct GifFileType; @@ -300,7 +300,7 @@ protected: unsigned char *G4; ///< Final picture in RGBA format. Prepared in Finish(). unsigned char *G; ///< Final picture in RGB format. Prepared in Finish(). std::vector DrwDat; ///< Set of ALL drawing data for each frames -#ifdef HAVE_PTHREAD +#if MGL_HAVE_PTHREAD pthread_mutex_t mutexSub, mutexPrm, mutexPtx, mutexStk, mutexGrp; #endif diff --git a/include/mgl/data.h b/include/mgl/data.h index 71d8f4d..866dc08 100644 --- a/include/mgl/data.h +++ b/include/mgl/data.h @@ -22,7 +22,7 @@ /*****************************************************************************/ #include "mgl/base.h" /*****************************************************************************/ -#ifndef NO_GSL +#if MGL_HAVE_GSL #include #include #else diff --git a/include/mgl/define.h b/include/mgl/define.h index a05d16b..8892b18 100644 --- a/include/mgl/define.h +++ b/include/mgl/define.h @@ -41,7 +41,7 @@ const unsigned long mgl_nan[2] = {0xffffffff, 0x7fffffff}; #define NANd (*(double*)mgl_nan) #define NANf (*(float*)&(mgl_nan[1])) -#if (MGL_USE_DOUBLE==1) +#if MGL_USE_DOUBLE #define NAN NANd #else #define NAN NANd @@ -66,7 +66,7 @@ const unsigned long mgl_nan[2] = {0xffffffff, 0x7fffffff}; //----------------------------------------------------------------------------- #include //----------------------------------------------------------------------------- -#if (MGL_USE_DOUBLE==1) +#if MGL_USE_DOUBLE typedef double mreal; #else typedef float mreal; @@ -212,7 +212,7 @@ void mgl_strlwr(char *str); #ifdef __cplusplus } #endif -#ifdef HAVE_PTHREAD +#if MGL_HAVE_PTHREAD #include #define MGL_PUSH(a,v,m) {pthread_mutex_lock(&m); a.push_back(v); pthread_mutex_unlock(&m);} #else diff --git a/include/mgl/window.h b/include/mgl/window.h index b2dcf20..44b42c1 100644 --- a/include/mgl/window.h +++ b/include/mgl/window.h @@ -29,7 +29,7 @@ struct mglDraw { virtual int Draw(mglGraph *){} ///< Function for drawing virtual void Reload() {} ///< Function for reloading data -#ifdef HAVE_PTHREAD +#if MGL_HAVE_PTHREAD pthread_t thr; bool running; mglDraw() { running=false; } @@ -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 int mgl_draw_class(mglBase *gr, void *p); //----------------------------------------------------------------------------- -#ifndef HAVE_QT -#define MGL_WND_KIND 0 -#else +#if MGL_HAVE_QT #define MGL_WND_KIND 1 +#else +#define MGL_WND_KIND 0 #endif class mglWindow : public mglGraph { diff --git a/src/base.cpp b/src/base.cpp index d863eb6..006bf06 100644 --- a/src/base.cpp +++ b/src/base.cpp @@ -53,7 +53,7 @@ mglBase::mglBase() { // memset(this,0,sizeof(mglBase)); // since mglBase is abstract then I can do it?!! Flag=0; saved=false; -#ifdef HAVE_PTHREAD +#if MGL_HAVE_PTHREAD pthread_mutex_init(&mutexPnt,0); pthread_mutex_init(&mutexTxt,0); #endif diff --git a/src/canvas.cpp b/src/canvas.cpp index dcfaa08..2f48772 100644 --- a/src/canvas.cpp +++ b/src/canvas.cpp @@ -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'; ay.dir = mglPoint(0,1,0); ay.a = mglPoint(1,0,0); ay.b = mglPoint(0,0,1); ay.ch='y'; az.dir = mglPoint(0,0,1); az.a = mglPoint(0,1,0); az.b = mglPoint(1,0,0); az.ch='z'; -#ifdef HAVE_PTHREAD +#if MGL_HAVE_PTHREAD pthread_mutex_init(&mutexSub,0); pthread_mutex_init(&mutexLeg,0); pthread_mutex_init(&mutexPrm,0); pthread_mutex_init(&mutexPtx,0); pthread_mutex_init(&mutexStk,0); pthread_mutex_init(&mutexGrp,0); diff --git a/src/data.cpp b/src/data.cpp index 2c673b5..9a505aa 100644 --- a/src/data.cpp +++ b/src/data.cpp @@ -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]); void mglFillP5(long x, const mreal *a,long nx,mreal _p[6]); //----------------------------------------------------------------------------- -#ifdef HAVE_PTHREAD +#if MGL_HAVE_PTHREAD #ifdef WIN32 #include #include @@ -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) { if(!func) return; -#ifdef HAVE_PTHREAD +#if MGL_HAVE_PTHREAD if(mglNumThr<1) mgl_set_num_thr(0); if(mglNumThr>1) { diff --git a/src/data_io.cpp b/src/data_io.cpp index 1e6d55e..dc16374 100644 --- a/src/data_io.cpp +++ b/src/data_io.cpp @@ -22,14 +22,6 @@ #include #include #include -#ifdef HAVE_HDF5 -#include -#endif -#ifdef HAVE_HDF4 -#define intf hdf4_intf -#include -#undef intf -#endif #ifndef WIN32 #include @@ -38,6 +30,15 @@ #include "mgl/data.h" #include "mgl/eval.h" +#if MGL_HAVE_HDF5 +#include +#endif +#if MGL_HAVE_HDF4 +#define intf hdf4_intf +#include +#undef intf +#endif + //#define isn(ch) ((ch)<' ' && (ch)!='\t') #define isn(ch) ((ch)=='\n') //----------------------------------------------------------------------------- @@ -119,7 +120,7 @@ void mgl_data_set_values_(uintptr_t *d, const char *val, int *nx, int *ny, int * //----------------------------------------------------------------------------- void mgl_data_set_vector(HMDT d, gsl_vector *v) { -#ifndef NO_GSL +#if MGL_HAVE_GSL if(!v || v->size<1) return; mgl_data_create(d, v->size,1,1); for(long i=0;inx;i++) d->a[i] = v->data[i*v->stride]; @@ -128,7 +129,7 @@ void mgl_data_set_vector(HMDT d, gsl_vector *v) //----------------------------------------------------------------------------- void mgl_data_set_matrix(HMDT d, gsl_matrix *m) { -#ifndef NO_GSL +#if MGL_HAVE_GSL if(!m || m->size1<1 || m->size2<1) return; mgl_data_create(d, m->size1,m->size2,1); register long i,j; @@ -141,7 +142,7 @@ void mgl_data_set_float(HMDT d, const float *A,long NX,long NY,long NZ) { if(NX<=0 || NY<=0 || NZ<=0) return; mgl_data_create(d, NX,NY,NZ); if(!A) return; -#if(MGL_USE_DOUBLE==1) +#if MGL_USE_DOUBLE for(long i=0;ia[i] = A[i]; #else memcpy(d->a,A,NX*NY*NZ*sizeof(float)); @@ -152,7 +153,7 @@ void mgl_data_set_double(HMDT d, const double *A,long NX,long NY,long NZ) { if(NX<=0 || NY<=0 || NZ<=0) return; mgl_data_create(d, NX,NY,NZ); if(!A) return; -#if(MGL_USE_DOUBLE==1) +#if MGL_USE_DOUBLE memcpy(d->a,A,NX*NY*NZ*sizeof(double)); #else for(long i=0;ia[i] = A[i]; @@ -163,7 +164,7 @@ void mgl_data_set_float2(HMDT d, const float **A,long N1,long N2) { if(N1<=0 || N2<=0) return; mgl_data_create(d, N2,N1,1); if(!A) return; -#if(MGL_USE_DOUBLE==1) +#if MGL_USE_DOUBLE for(long i=0;ia[j+i*N2] = A[i][j]; #else for(long i=0;ia+i*N2,A[i],N2*sizeof(float)); @@ -174,7 +175,7 @@ void mgl_data_set_double2(HMDT d, const double **A,long N1,long N2) { if(N1<=0 || N2<=0) return; mgl_data_create(d, N2,N1,1); if(!A) return; -#if(MGL_USE_DOUBLE==1) +#if MGL_USE_DOUBLE for(long i=0;ia+i*N2,A[i],N2*sizeof(double)); #else for(long i=0;ia[j+i*N2] = A[i][j]; @@ -185,7 +186,7 @@ void mgl_data_set_float3(HMDT d, const float ***A,long N1,long N2,long N3) { if(N1<=0 || N2<=0 || N3<=0) return; mgl_data_create(d, N3,N2,N1); if(!A) return; -#if(MGL_USE_DOUBLE==1) +#if MGL_USE_DOUBLE for(long i=0;ia[k+N3*(j+i*N2)] = A[i][j][k]; #else @@ -198,7 +199,7 @@ void mgl_data_set_double3(HMDT d, const double ***A,long N1,long N2,long N3) { if(N1<=0 || N2<=0 || N3<=0) return; mgl_data_create(d, N3,N2,N1); if(!A) return; -#if(MGL_USE_DOUBLE==1) +#if MGL_USE_DOUBLE for(long i=0;ia+N3*(j+i*N2),A[i][j],N3*sizeof(double)); #else @@ -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; mgl_data_fill_eq(_GR_,_DT_,s,_DA_(v),_DA_(w),o); delete []o; delete []s; } //----------------------------------------------------------------------------- -#ifdef HAVE_HDF4 +#if MGL_HAVE_HDF4 void mgl_data_read_hdf4(HMDT d,const char *fname,const char *data) { int32 sd = SDstart(fname,DFACC_READ), nn, i; @@ -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 *){} #endif //----------------------------------------------------------------------------- -#ifdef HAVE_HDF5 +#if MGL_HAVE_HDF5 void mgl_data_save_hdf(HCDT dat,const char *fname,const char *data,int rewrite) { const mglData *d = dynamic_cast(dat); // NOTE: only for mglData hid_t hf,hd,hs; hsize_t dims[3]; long rank = 3, res; -#ifndef H5_USE_16_API +#if MGL_HAVE_HDF5_18 H5Eset_auto(H5E_DEFAULT,0,0); #else H5Eset_auto(0,0); @@ -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; } else { rank=3; dims[0]=d->nz; dims[1]=d->ny; dims[2]=d->nx; } hs = H5Screate_simple(rank, dims, 0); -#if(MGL_USE_DOUBLE==1) +#if MGL_USE_DOUBLE hid_t mem_type_id = H5T_NATIVE_DOUBLE; #else hid_t mem_type_id = H5T_NATIVE_FLOAT; #endif -#ifndef H5_USE_16_API +#if MGL_HAVE_HDF5_18 hd = H5Dcreate(hf, data, mem_type_id, hs, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); -#else /* ! HAVE_HDF5_18 */ +#else hd = H5Dcreate(hf, data, mem_type_id, hs, H5P_DEFAULT); -#endif /* HAVE_HDF5_18 */ +#endif H5Dwrite(hd, mem_type_id, hs, hs, H5P_DEFAULT, d->a); H5Dclose(hd); H5Sclose(hs); H5Fclose(hf); } @@ -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; } hf = H5Fopen(fname, H5F_ACC_RDONLY, H5P_DEFAULT); if(hf<0) return false; -#ifndef H5_USE_16_API +#if MGL_HAVE_HDF5_18 hd = H5Dopen(hf,data,H5P_DEFAULT); #else hd = H5Dopen(hf,data); @@ -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; } // else if(rank>3) continue; mgl_data_create(d,dims[2],dims[1],dims[0]); -#if(MGL_USE_DOUBLE==1) +#if MGL_USE_DOUBLE H5Dread(hd, H5T_NATIVE_DOUBLE, H5S_ALL, H5S_ALL, H5P_DEFAULT, d->a); #else H5Dread(hd, H5T_NATIVE_FLOAT, H5S_ALL, H5S_ALL, H5P_DEFAULT, d->a); @@ -916,7 +917,7 @@ int mgl_datas_hdf(const char *fname, char *buf, long size) buf[0]=0; hf = H5Fopen(fname, H5F_ACC_RDONLY, H5P_DEFAULT); if(!hf) return 0; -#ifndef H5_USE_16_API +#if MGL_HAVE_HDF5_18 hg = H5Gopen(hf,"/",H5P_DEFAULT); #else hg = H5Gopen(hf,"/"); @@ -929,7 +930,7 @@ int mgl_datas_hdf(const char *fname, char *buf, long size) { if(H5Gget_objtype_by_idx(hg, i)!=H5G_DATASET) continue; H5Gget_objname_by_idx(hg, i, name, 256); -#ifndef H5_USE_16_API +#if MGL_HAVE_HDF5_18 hd = H5Dopen(hf,name,H5P_DEFAULT); #else hd = H5Dopen(hf,name); diff --git a/src/data_new.cpp b/src/data_new.cpp index ee903e8..1ad1d59 100644 --- a/src/data_new.cpp +++ b/src/data_new.cpp @@ -22,17 +22,17 @@ #include #include -#ifndef NO_GSL +#include "mgl/data.h" + +#if MGL_HAVE_GSL #include #include #include #endif - -#include "mgl/data.h" //----------------------------------------------------------------------------- void mgl_data_envelop(HMDT d, char dir) { -#ifndef NO_GSL +#if MGL_HAVE_GSL register long i,j,k,i0; long nx=d->nx,ny=d->ny,nz=d->nz,nn=nx*ny*nz; double *b = new double[2*nn]; @@ -626,7 +626,7 @@ uintptr_t mgl_data_evaluate_(uintptr_t *d, uintptr_t *idat, uintptr_t *jdat, uin //----------------------------------------------------------------------------- void mgl_data_fourier(HMDT re, HMDT im, const char *dir) { -#ifndef NO_GSL +#if MGL_HAVE_GSL long nx = re->nx, ny = re->ny, nz = re->nz; if(nx*ny*nz != im->nx*im->ny*im->nz || !dir || dir[0]==0) return; double *a = new double[2*nx*ny*nz]; @@ -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) { mglData *d=new mglData; -#ifndef NO_GSL +#if MGL_HAVE_GSL if(dn<2) return d; dn = 2*(dn/2); long nx = re->GetNx(), ny = re->GetNy(); @@ -750,7 +750,7 @@ void mgl_data_fill_sample(HMDT d, const char *how) mreal *aa=d->a; if(strchr(how,'h')) // Hankel { -#ifndef NO_GSL +#if MGL_HAVE_GSL gsl_dht *dht = gsl_dht_new(n,0,1); for(i=0;i * - * * - * 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 -#include -#ifndef NO_PNG -#include -#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 * + * * + * 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 +#include +#include +#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=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;iny;i++) for(j=0;jnx;j++) - { - for(mval=256,k=0;kny-i-1]+3*j,true); - if(val==0) { pos=k; break; } - if(vala[j+d->nx*i] = v1 + pos*(v2-v1)/num; - } - } - delete []c; - png_destroy_read_struct(&png_ptr, &info_ptr,&end_info); - fclose(fp); -#endif -} -//----------------------------------------------------------------------------- +{ + if(v1>=v2) return; + long num=0; + 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;iny;i++) for(j=0;jnx;j++) + { + for(mval=256,k=0;kny-i-1]+3*j,true); + if(val==0) { pos=k; break; } + if(vala[j+d->nx*i] = v1 + pos*(v2-v1)/num; + } + } + delete []c; + png_destroy_read_struct(&png_ptr, &info_ptr,&end_info); + fclose(fp); +} +//----------------------------------------------------------------------------- void mgl_data_export(HCDT dd, const char *fname, const char *scheme,float v1,float v2,long ns) -{ - 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;ivthr(i); if(vvv2) 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;iv(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; -} +{ + 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;ivthr(i); if(vvv2) v2=vv; } + } + if(v1==v2) return; + 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;iv(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); +} +//----------------------------------------------------------------------------- +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; +} void mgl_data_import_(uintptr_t *d, const char *fname, const char *scheme,float *v1,float *v2,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_import(_DT_,s,f,*v1,*v2); - delete []s; delete []f; -} -//----------------------------------------------------------------------------- +{ + 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; +} +//----------------------------------------------------------------------------- diff --git a/src/eval.cpp b/src/eval.cpp index 2f5964f..80a928e 100644 --- a/src/eval.cpp +++ b/src/eval.cpp @@ -22,12 +22,14 @@ #include #include #include -#ifndef NO_GSL + +#include "mgl/eval.h" + +#if MGL_HAVE_GSL #include #include #include #endif -#include "mgl/eval.h" //----------------------------------------------------------------------------- // constants for expression parsing enum{ @@ -134,12 +136,12 @@ int mglFormula::Error=0; bool mglCheck(char *str,int n); int mglFindInText(char *str,const char *lst); //----------------------------------------------------------------------------- -#ifndef NO_GSL +#if MGL_HAVE_GSL gsl_rng *mgl_rng=0; #endif void mgl_srnd(long seed) { -#ifndef NO_GSL +#if MGL_HAVE_GSL if(mgl_rng==0) { gsl_rng_env_setup(); @@ -152,7 +154,7 @@ void mgl_srnd(long seed) } double mgl_rnd() { -#ifndef NO_GSL +#if MGL_HAVE_GSL if(mgl_rng==0) { gsl_rng_env_setup(); @@ -175,7 +177,7 @@ mglFormula::~mglFormula() // Formula constructor (automatically parse and "compile" formula) mglFormula::mglFormula(const char *string) { -#ifndef NO_GSL +#if MGL_HAVE_GSL gsl_set_error_handler_off(); #endif Error=0; @@ -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;} double ipw(double a,double b) {return fabs(b-int(b))<1e-5 ? mgl_ipow(a,int(b)) : pow(a,b);} double llg(double a,double b) {return log(a)/log(b);} -#ifndef NO_GSL +#if MGL_HAVE_GSL double gslEllE(double a,double b) {return gsl_sf_ellint_E(a,b,GSL_PREC_SINGLE);} double gslEllF(double a,double b) {return gsl_sf_ellint_F(a,b,GSL_PREC_SINGLE);} double gslLegP(double a,double b) {return gsl_sf_legendre_Pl(int(a),b);} @@ -504,14 +506,14 @@ typedef double (*func_2)(double, double); mreal mglFormula::CalcIn(const mreal *a1) const { float z2[22] = {3,3,3,3,0,3,3,0,0,0,0,0,NAN,0 -#ifndef NO_GSL +#if MGL_HAVE_GSL ,3,NAN, 3,NAN, 0,0,3,1 #else ,0,0,0,0,0,0,0,0 #endif }; func_2 f2[22] = {clt,cgt,ceq,cor,cand,add,sub,mul,div,ipw,pow,fmod,llg,arg -#ifndef NO_GSL +#if MGL_HAVE_GSL ,gsl_sf_bessel_Jnu,gsl_sf_bessel_Ynu, gsl_sf_bessel_Inu,gsl_sf_bessel_Knu, gslEllE,gslEllF,gslLegP,gsl_sf_beta @@ -521,7 +523,7 @@ mreal mglFormula::CalcIn(const mreal *a1) const }; func_1 f1[42] = {sin,cos,tan,asin,acos,atan,sinh,cosh,tanh, asinh,acosh,atanh,sqrt,exp,log,log10,sgn,stp,floor,fabs -#ifndef NO_GSL +#if MGL_HAVE_GSL ,gsl_sf_dilog,gslEllEc,gslEllFc,gslAi,gslBi,gsl_sf_erf, gsl_sf_expint_3,gsl_sf_expint_Ei,gsl_sf_expint_E1,gsl_sf_expint_E2, gsl_sf_Si,gsl_sf_Ci,gsl_sf_gamma,gsl_sf_psi,gsl_sf_lambert_W0, @@ -549,7 +551,7 @@ mreal mglFormula::CalcIn(const mreal *a1) const return !isnan(b) ? f2[Kod-EQ_LT](a,b) : NAN; } else if(KodCalcIn(a1); @@ -607,7 +609,7 @@ double ci_d(double a) {return cos(a)/a;} double exp3_d(double a) {return exp(-a*a*a);} double e1_d(double a) {return exp(-a)/a;} double sinc_d(double a) {return a ? (cos(M_PI*a)/a-sin(M_PI*a)/(M_PI*a*a)) : 0;} -#ifndef NO_GSL +#if MGL_HAVE_GSL double e2_d(double a) {return -gsl_sf_expint_E1(a);} double gslJnuD(double a,double b) {return 0.5*(gsl_sf_bessel_Jnu(a-1,b)-gsl_sf_bessel_Jnu(a+1,b));} double gslYnuD(double a,double b) {return 0.5*(gsl_sf_bessel_Ynu(a-1,b)-gsl_sf_bessel_Ynu(a+1,b));} @@ -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 { func_2 f21[22] = {mgz2,mgz2,mgz2, mgz2,mgz2,mgp, mgp,mul1,div1, ipw1,pow1,mgp,llg1, mgz2 -#ifndef NO_GSL +#if MGL_HAVE_GSL ,mgz2,mgz2,mgz2, mgz2,gslEllE1,gslEllF2, mgz2,mgz2 #else ,mgz2,mgz2,mgz2,mgz2,mgz2,mgz2,mgz2,mgz2 #endif }; func_2 f22[22] = {mgz2,mgz2,mgz2,mgz2,mgz2,mgp,mgm,mul2,div2,pow2,pow2,mgz2,llg2, mgz2 -#ifndef NO_GSL +#if MGL_HAVE_GSL ,gslJnuD,gslYnuD,gslInuD,gslKnuD,gslEllE2,gslEllF2,mgz2/*gslLegP*/,mgz2 #else ,mgz2,mgz2,mgz2,mgz2,mgz2,mgz2,mgz2,mgz2 @@ -641,7 +643,7 @@ mreal mglFormula::CalcDIn(int id, const mreal *a1) const }; func_1 f11[42] = {cos,cos_d,tan_d,asin_d,acos_d,atan_d,cosh,sinh,tanh_d, asinh_d,acosh_d,atanh_d,sqrt_d,exp,log_d,log10_d,mgz1,mgz1,mgz1,sgn -#ifndef NO_GSL +#if MGL_HAVE_GSL ,dilog_d,gslE_d,gslK_d,gslAi_d,gslBi_d,erf_d,exp3_d,ei_d,e1_d,e2_d, si_d,ci_d,gamma_d,gsl_sf_psi_1,mgz1,mgz1,sinc_d,mgz1,mgz1,mgz1,mgz1,mgz1 #else @@ -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; } else if(KodCalcIn(a1); diff --git a/src/evalc.cpp b/src/evalc.cpp index aa894db..d0728a6 100644 --- a/src/evalc.cpp +++ b/src/evalc.cpp @@ -24,16 +24,16 @@ #include "mgl/evalc.h" #include "mgl/addon.h" #include "mgl/data.h" -#ifndef NO_GSL +#if MGL_HAVE_GSL #include #endif //----------------------------------------------------------------------------- -// êîíñòàíòû äëÿ ðàñïîçíîâàíèÿ âûðàæåíèÿ +// ��������� ��� ������������� ��������� enum{ EQ_NUM=0, // a variable substitution EQ_RND, // random number EQ_A, // numeric constant -// äâóìåñòíûå ôóíêöèè +// ���������� ������� EQ_ADD, // addition x+y EQ_SUB, // substraction x-y EQ_MUL, // multiplication x*y @@ -41,7 +41,7 @@ EQ_DIV, // division x/y EQ_IPOW, // power x^n for integer n EQ_POW, // power x^y EQ_LOG, // logarithm of x on base a, log_a(x) = ln(x)/ln(a) -// îäíîìåñòíûå ôóíêöèè +// ����������� ������� EQ_SIN, // sine function \sin(x). !!! MUST BE FIRST 1-PLACE FUNCTION EQ_COS, // cosine function \cos(x). EQ_TAN, // tangent function \tan(x). @@ -66,14 +66,14 @@ int mglFormulaC::Error=0; bool mglCheck(char *str,int n); int mglFindInText(char *str,const char *lst); //----------------------------------------------------------------------------- -// äåñòðóêòîð ôîðìóëû +// ���������� ������� mglFormulaC::~mglFormulaC() { if(Left) delete Left; if(Right) delete Right; } //----------------------------------------------------------------------------- -// êîíñòðóêòîð ôîðìóëû (àâòîìàòè÷åñêè ðàñïîçíàåò è "êîìïèëèðóåò" ôîðìóëó) +// ����������� ������� (������������� ���������� � "�����������" �������) mglFormulaC::mglFormulaC(const char *string) { Error=0; @@ -89,14 +89,14 @@ mglFormulaC::mglFormulaC(const char *string) mgl_strlwr(str); len=strlen(str); if(str[0]==0) { delete []str; return; } - if(str[0]=='(' && mglCheck(&(str[1]),len-2)) // åñëè âñå âûðàæåíèå â ñêîáàõ, òî óáèðàåì èõ + if(str[0]=='(' && mglCheck(&(str[1]),len-2)) // ���� ��� ��������� � ������, �� ������� �� { strcpy(Buf,str+1); len-=2; Buf[len]=0; strcpy(str,Buf); } len=strlen(str); - n=mglFindInText(str,"+-"); // ìåíüøèé ïðèîðèòåò - ñëîæåíèå, âû÷èòàíèå + n=mglFindInText(str,"+-"); // ������� ��������� - ��������, ��������� if(n>=0) { if(str[n]=='+') Kod=EQ_ADD; else Kod=EQ_SUB; @@ -106,7 +106,7 @@ mglFormulaC::mglFormulaC(const char *string) delete []str; return; } - n=mglFindInText(str,"*/"); // ñðåäíèé ïðèîðèòåò - óìíîæåíèå, äåëåíèå + n=mglFindInText(str,"*/"); // ������� ��������� - ���������, ������� if(n>=0) { if(str[n]=='*') Kod=EQ_MUL; else Kod=EQ_DIV; @@ -116,7 +116,7 @@ mglFormulaC::mglFormulaC(const char *string) delete []str; return; } - n=mglFindInText(str,"^"); // âûñîêèé ïðèîðèòåò - âîçâåäåíèå â ñòåïåíü + n=mglFindInText(str,"^"); // ������� ��������� - ���������� � ������� if(n>=0) { Kod=EQ_IPOW; @@ -128,16 +128,16 @@ mglFormulaC::mglFormulaC(const char *string) } for(n=0;n=len) // ýòî ÷èñëî èëè ïåðåìåííàÿ + if(n>=len) // ��� ����� ��� ���������� { Kod = EQ_NUM; // Left = Right = 0; - if(str[1]==0 && str[0]>='a' && str[0]<='z') // äîñòóïíûå ïåðåìííûå + if(str[1]==0 && str[0]>='a' && str[0]<='z') // ��������� ��������� { Kod=EQ_A; Res = str[0]-'a'; } else if(!strcmp(str,"rnd")) Kod=EQ_RND; else if(!strcmp(str,"pi")) Res=M_PI; else if(str[0]=='i') Res = dual(0,atof(str+1)); - else Res=atof(str); // ýòî ÷èñëî + else Res=atof(str); // ��� ����� } else { diff --git a/src/evalp.cpp b/src/evalp.cpp index ce42592..e3e0891 100644 --- a/src/evalp.cpp +++ b/src/evalp.cpp @@ -22,7 +22,7 @@ #include #include #include "mgl/parser.h" -#ifndef NO_GSL +#if MGL_HAVE_GSL #include #include #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 #include #include -#ifndef NO_PNG #include -#endif -#ifdef HAVE_JPEG + +#include "mgl/canvas.h" +#include "mgl/canvas_cf.h" + +#if MGL_HAVE_JPEG extern "C" { #include } #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); diff --git a/src/fit.cpp b/src/fit.cpp index d02c03e..a2c08c3 100644 --- a/src/fit.cpp +++ b/src/fit.cpp @@ -17,14 +17,15 @@ * Free Software Foundation, Inc., * * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ -#ifndef NO_GSL -#include -#include -#endif #include #include "mgl/fit.h" #include "mgl/eval.h" #include "mgl/data.h" + +#if MGL_HAVE_GSL +#include +#include +#endif //----------------------------------------------------------------------------- int mglFitPnts=100; ///< Number of output points in fitting char mglFitRes[1024]; ///< Last fitted formula @@ -43,7 +44,7 @@ struct mglFitData const char *var; ///< variables for fitting }; //----------------------------------------------------------------------------- -#ifndef NO_GSL +#if MGL_HAVE_GSL int mgl_fit__f (const gsl_vector *x, void *data, gsl_vector *f) { mglFitData *fd = (mglFitData *)data; @@ -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 mreal mgl_fit_base(mglFitData *fd, mreal *ini) { -#ifndef NO_GSL +#if MGL_HAVE_GSL register long i,m=fd->m,n=fd->n,iter=0; if(n<1 || fd==0 || ini==0) return -1; // setup data diff --git a/src/pde.cpp b/src/pde.cpp index 970fd66..343902d 100644 --- a/src/pde.cpp +++ b/src/pde.cpp @@ -21,7 +21,7 @@ #include #define dual std::complex #define GAMMA 0.1 -#ifndef NO_GSL +#if MGL_HAVE_GSL #include #endif //----------------------------------------------------------------------------- @@ -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 { gr->SetWarn(mglWarnDim,"PDE"); return res; } mgl_data_create(res, nz, nx, ny); -#ifndef NO_GSL +#if MGL_HAVE_GSL mglFormula eqs(ham); dual *a = new dual[4*nx*ny], hh0; // Add "damping" area dual *hxy = new dual[4*nx*ny], *hxv = new dual[4*nx*ny]; @@ -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; mgl_data_create(res,7,nt,1); mgl_data_set_id(res,"xyzpqvt"); -#ifndef NO_GSL +#if MGL_HAVE_GSL mreal x[6], k1[6], k2[6], k3[6], hh=dt/2; mglFormula eqs(ham); // initial conditions @@ -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; if(nx<2 || ini_im->GetNx()!=nx || nt<2) return res; mgl_data_create(res,nx,nt,1); -#ifndef NO_GSL +#if MGL_HAVE_GSL dual *a=new dual[2*nx], *hu=new dual[2*nx], *hx=new dual[2*nx], h0; double *ru=new double[2*nx], *rx=new double[2*nx], *dmp=new double[2*nx], *pu=new double[2*nx], *px=new double[2*nx]; diff --git a/src/pixel.cpp b/src/pixel.cpp index 73cf547..bec03c6 100644 --- a/src/pixel.cpp +++ b/src/pixel.cpp @@ -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) { if(!func || !gr) return; -#ifdef HAVE_PTHREAD +#if MGL_HAVE_PTHREAD if(mglNumThr<1) mgl_set_num_thr(0); if(mglNumThr>1) { @@ -409,7 +409,7 @@ void mglCanvas::Combine(const mglCanvas *gr) mglStartThread(&mglCanvas::pxl_other,this,Width*Height,gr); } //----------------------------------------------------------------------------- -#ifndef HAVE_MPI +#if !defined(MGL_HAVE_MPI) || MGL_HAVE_MPI==0 void mglCanvas::MPI_Send(int /*id*/) {} // TODO: add later void mglCanvas::MPI_Recv(int /*id*/) {} // TODO: add later #endif @@ -818,7 +818,7 @@ void mglCanvas::mark_draw(long k, char type, float size, mglDrawReg *d) mglPnt p=q; float ss=fabs(size)*0.35*font_factor; register long i,j; -#ifdef HAVE_PTHREAD +#if MGL_HAVE_PTHREAD pthread_mutex_lock(&mutexPnt); #endif if(type=='.' || ss==0) pnt_draw(k,d); @@ -957,7 +957,7 @@ void mglCanvas::mark_draw(long k, char type, float size, mglDrawReg *d) PDef = pd; PenWidth = pw; Pnt.erase(Pnt.begin()+pos,Pnt.end()); } -#ifdef HAVE_PTHREAD +#if MGL_HAVE_PTHREAD pthread_mutex_unlock(&mutexPnt); #endif } @@ -966,7 +966,7 @@ void mglCanvas::glyph_draw(const mglPrim *P, mglDrawReg *d) { mglPnt p=Pnt[P->n1]; float f = p.w; -#ifdef HAVE_PTHREAD +#if MGL_HAVE_PTHREAD pthread_mutex_lock(&mutexPnt); #endif Push(); B.clear(); @@ -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); } Pop(); -#ifdef HAVE_PTHREAD +#if MGL_HAVE_PTHREAD pthread_mutex_unlock(&mutexPnt); #endif } diff --git a/todo.txt b/todo.txt index b179082..392f0e8 100644 --- 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 diff --git a/udav/text_pnl.cpp b/udav/text_pnl.cpp index 776635b..e6e6159 100644 --- a/udav/text_pnl.cpp +++ b/udav/text_pnl.cpp @@ -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){} //----------------------------------------------------------------------------- diff --git a/utils/mglview.cpp b/utils/mglview.cpp index f3c5222..661c37c 100644 --- a/utils/mglview.cpp +++ b/utils/mglview.cpp @@ -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; } //----------------------------------------------------------------------------- diff --git a/widgets/glut.cpp b/widgets/glut.cpp index 888898c..da5eefb 100644 --- a/widgets/glut.cpp +++ b/widgets/glut.cpp @@ -195,13 +195,13 @@ HMGL mgl_create_graph_glut(int (*draw)(HMGL gr, void *p), const char *title, voi //----------------------------------------------------------------------------- mglCanvasGLUT::mglCanvasGLUT() : mglCanvasGL() {} //----------------------------------------------------------------------------- -#ifdef HAVE_FLTK +#if MGL_HAVE_FLTK HMGL mgl_create_graph_fltk(int (*)(HMGL gr, void *p), const char *, void *) { return NULL; } int mgl_fltk_run(){return 0;} #endif //----------------------------------------------------------------------------- -#ifdef HAVE_QT +#if MGL_HAVE_QT HMGL mgl_create_graph_qt(int (*)(HMGL gr, void *p), const char *, void *) { return NULL; } int mgl_qt_run(){return 0;} diff --git a/widgets/window.cpp b/widgets/window.cpp index 7dc4919..e87565e 100644 --- a/widgets/window.cpp +++ b/widgets/window.cpp @@ -152,7 +152,7 @@ void mgl_wnd_animation_(uintptr_t *gr) { mglCanvasW *g = dynamic_cast((HMGL)(*gr)); if(g) g->Animation(); } //----------------------------------------------------------------------------- -#ifndef HAVE_FLTK +#if MGL_HAVE_FLTK==0 HMGL mgl_create_graph_fltk(int (*)(HMGL gr, void *p), const char *, void *) { return NULL; } int mgl_fltk_run(){return 0;} @@ -166,7 +166,7 @@ uintptr_t mgl_create_graph_fltk_(const char *title, int l) } int mgl_fltk_run_() { return mgl_fltk_run(); } //----------------------------------------------------------------------------- -#ifndef HAVE_QT +#if MGL_HAVE_QT==0 HMGL mgl_create_graph_qt(int (*)(HMGL gr, void *p), const char *, void *) { return NULL; } int mgl_qt_run(){return 0;} @@ -199,7 +199,7 @@ int mgl_draw_graph(mglBase *gr, void *p) //----------------------------------------------------------------------------- void *mgl_draw_calc(void *p) { -#ifdef HAVE_PTHREAD +#if MGL_HAVE_PTHREAD ((mglDraw *)p)->Calc(); #endif return 0; @@ -207,7 +207,7 @@ void *mgl_draw_calc(void *p) //----------------------------------------------------------------------------- void mgl_draw_thr(void *p) { -#ifdef HAVE_PTHREAD +#if MGL_HAVE_PTHREAD mglDraw *d = (mglDraw *)p; if(!d || d->running) return; pthread_create(&(d->thr),0,mgl_draw_calc,d); -- 2.30.2