Fix symbols failure for i386
authorDimitrios Eftaxiopoulos <eftaxi12@otenet.gr>
Tue, 4 Oct 2011 00:19:57 +0000 (03:19 +0300)
committerDimitrios Eftaxiopoulos <eftaxi12@otenet.gr>
Tue, 4 Oct 2011 00:19:57 +0000 (03:19 +0300)
debian/control
debian/libmgl-wnd6.symbols
debian/libmgl6.symbols
debian/patches/series [new file with mode: 0644]
debian/patches/src-data_png_cpp.patch [new file with mode: 0644]
src/data_png.cpp

index 01b84e1d74081ae88db359aef4d4419315b66de9..eeca0b930426cf4d3e92f2307d68c4a66f9fb0d0 100644 (file)
@@ -4,7 +4,7 @@ Priority: optional
 Maintainer: Debian Science Maintainers <debian-science-maintainers@lists.alioth.debian.org>
 Uploaders: Dimitrios Eftaxiopoulos <eftaxi12@otenet.gr>, D Haley <mycae@yahoo.com>
 DM-Upload-Allowed: yes
-Build-Depends: debhelper (>= 7.2.3~), libltdl-dev, libgsl0-dev, freeglut3-dev, 
+Build-Depends: debhelper (>= 7.2.3~), libltdl-dev, libgsl0-dev, freeglut3-dev, zlib1g-dev,
  libgl1-mesa-dev | libgl-dev, libpng-dev, libhdf5-serial-dev | libhdf5-dev, 
  libjpeg-dev, libtiff-dev, libfltk1.3-dev | libfltk-dev, libqt4-dev, libwxgtk2.8-dev, swig, 
  texinfo, texi2html, texlive, texlive-generic-recommended, octave3.2-headers,
index 1aeacdd56c31e24b91b00117e2019b8ed11ee356..aafd61d8bbebf38d2b273d4b3c2ebab88fab1477 100644 (file)
@@ -142,8 +142,10 @@ libmgl-wnd.so.6 libmgl-wnd6 #MINVER#
  _ZTV11mglCanvasQT@Base 2~rc1
  _ZTV7QMathGL@Base 2~rc1
  _ZTV9Fl_MathGL@Base 2~rc1
- _ZThn16_N7QMathGLD0Ev@Base 2~rc1
- _ZThn16_N7QMathGLD1Ev@Base 2~rc1
+ (arch=!i386)_ZThn16_N7QMathGLD0Ev@Base 2~rc1
+ (arch=!i386)_ZThn16_N7QMathGLD1Ev@Base 2~rc1
+ (arch=i386)_ZThn8_N7QMathGLD0Ev@Base 2~rc1
+ (arch=i386)_ZThn8_N7QMathGLD1Ev@Base 2~rc1
  menuitems@Base 2~rc1
  mgl_create_graph_fltk@Base 2~rc1
  mgl_create_graph_fltk_@Base 2~rc1
index 623d7bd6b5dedfdd1d25933a88c58a564f1f7156..bffbbbb5dbcbb7cb6419cfd882f796c30dfc49a9 100644 (file)
@@ -334,7 +334,8 @@ libmgl.so.6 libmgl6 #MINVER#
  _Z14mgl_draw_graphP7mglBasePv@Base 2~rc1
  _Z14mgl_qo2d_hprepPv@Base 2~rc1
  _Z14mgl_surf3_plotP7mglBasellPlS1_S1_S1_S1_St6vectorI8mglPointSaIS3_EEb@Base 2~rc1
- _Z14mgl_write_bps_PmPKcS1_ii@Base 2~rc1
+ (arch=!i386)_Z14mgl_write_bps_PmPKcS1_ii@Base 2~rc1
+ (arch=i386)_Z14mgl_write_bps_PjPKcS1_ii@Base 2~rc1
  _Z14mglc_addlegendPwlP6mglArgPiPKc@Base 2~rc1
  _Z14mglc_arrowsizePwlP6mglArgPiPKc@Base 2~rc1
  _Z14mglc_integratePwlP6mglArgPiPKc@Base 2~rc1
@@ -377,7 +378,8 @@ libmgl.so.6 libmgl6 #MINVER#
  _Z16mgls_perspectiveP8mglGraphlP6mglArgPiPKc@Base 2~rc1
  _Z16mgls_triangulateP8mglGraphlP6mglArgPiPKc@Base 2~rc1
  _Z17mgl_create_schemePKcRl@Base 2~rc1
- _Z17mgl_set_font_def_PmPci@Base 2~rc1
+ (arch=!i386)_Z17mgl_set_font_def_PmPci@Base 2~rc1
+ (arch=i386)_Z17mgl_set_font_def_PjPci@Base 2~rc1
  _Z18mgl_data_read_hdf4P7mglDataPKcS2_@Base 2~rc1
  _Z3adddd@Base 2~rc1
  _Z3argdd@Base 2~rc1
@@ -929,10 +931,12 @@ libmgl.so.6 libmgl6 #MINVER#
  _ZNSs19_M_replace_dispatchIN9__gnu_cxx17__normal_iteratorIPwSbIwSt11char_traitsIwESaIwEEEEEERSsNS1_IPcSsEESA_T_SB_St12__false_type@Base 2~rc1
  _ZNSt6vectorI10mglSegmentSaIS0_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS0_S2_EERKS0_@Base 2~rc1
  _ZNSt6vectorI10mglTextureSaIS0_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS0_S2_EERKS0_@Base 2~rc1
- _ZNSt6vectorI10mglTextureSaIS0_EE7reserveEm@Base 2~rc1
+ (arch=!i386)_ZNSt6vectorI10mglTextureSaIS0_EE7reserveEm@Base 2~rc1
+ (arch=i386)_ZNSt6vectorI10mglTextureSaIS0_EE7reserveEj@Base 2~rc1
  _ZNSt6vectorI6mglPntSaIS0_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS0_S2_EERKS0_@Base 2~rc1
  _ZNSt6vectorI6mglPntSaIS0_EE5eraseEN9__gnu_cxx17__normal_iteratorIPS0_S2_EES6_@Base 2~rc1
- _ZNSt6vectorI6mglPntSaIS0_EE7reserveEm@Base 2~rc1
+ (arch=!i386)_ZNSt6vectorI6mglPntSaIS0_EE7reserveEm@Base 2~rc1
+ (arch=i386)_ZNSt6vectorI6mglPntSaIS0_EE7reserveEj@Base 2~rc1
  _ZNSt6vectorI6mglPntSaIS0_EE9push_backERKS0_@Base 2~rc1
  _ZNSt6vectorI7mglPrimSaIS0_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS0_S2_EERKS0_@Base 2~rc1
  _ZNSt6vectorI7mglPrimSaIS0_EED1Ev@Base 2~rc1
@@ -945,16 +949,20 @@ libmgl.so.6 libmgl6 #MINVER#
  _ZNSt6vectorI8mglGroupSaIS0_EED1Ev@Base 2~rc1
  _ZNSt6vectorI8mglGroupSaIS0_EED2Ev@Base 2~rc1
  _ZNSt6vectorI8mglPointSaIS0_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS0_S2_EERKS0_@Base 2~rc1
- _ZNSt6vectorI8mglPointSaIS0_EE7reserveEm@Base 2~rc1
+ (arch=!i386)_ZNSt6vectorI8mglPointSaIS0_EE7reserveEm@Base 2~rc1
+ (arch=i386)_ZNSt6vectorI8mglPointSaIS0_EE7reserveEj@Base 2~rc1
  _ZNSt6vectorI8mglPointSaIS0_EEaSERKS2_@Base 2~rc1
  _ZNSt6vectorI9mglMatrixSaIS0_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS0_S2_EERKS0_@Base 2~rc1
  _ZNSt6vectorIlSaIlEE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPlS1_EERKl@Base 2~rc1
  _ZNSt6vectorIlSaIlEEaSERKS1_@Base 2~rc1
  _ZSt10__pop_heapIN9__gnu_cxx17__normal_iteratorIP7mglPrimSt6vectorIS2_SaIS2_EEEEEvT_S8_S8_@Base 2~rc1
- _ZSt11__push_heapIN9__gnu_cxx17__normal_iteratorIP7mglPrimSt6vectorIS2_SaIS2_EEEElS2_EvT_T0_S9_T1_@Base 2~rc1
- _ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIP7mglPrimSt6vectorIS2_SaIS2_EEEElS2_EvT_T0_S9_T1_@Base 2~rc1
+ (optional)_ZSt11__push_heapIN9__gnu_cxx17__normal_iteratorIP7mglPrimSt6vectorIS2_SaIS2_EEEElS2_EvT_T0_S9_T1_@Base 2~rc1
+ (optional)_ZSt11__push_heapIN9__gnu_cxx17__normal_iteratorIP7mglPrimSt6vectorIS2_SaIS2_EEEEiS2_EvT_T0_S9_T1_@Base 2~rc1
+ (optional)_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIP7mglPrimSt6vectorIS2_SaIS2_EEEElS2_EvT_T0_S9_T1_@Base 2~rc1
+ (optional)_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIP7mglPrimSt6vectorIS2_SaIS2_EEEEiS2_EvT_T0_S9_T1_@Base 2~rc1
  _ZSt16__insertion_sortIN9__gnu_cxx17__normal_iteratorIP7mglPrimSt6vectorIS2_SaIS2_EEEEEvT_S8_@Base 2~rc1
- _ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIP7mglPrimSt6vectorIS2_SaIS2_EEEElEvT_S8_T0_@Base 2~rc1
+ (optional)_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIP7mglPrimSt6vectorIS2_SaIS2_EEEElEvT_S8_T0_@Base 2~rc1
+ (optional)_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIP7mglPrimSt6vectorIS2_SaIS2_EEEEiEvT_S8_T0_@Base 2~rc1
  _ZSt19__move_median_firstIN9__gnu_cxx17__normal_iteratorIP7mglPrimSt6vectorIS2_SaIS2_EEEEEvT_S8_S8_@Base 2~rc1
  _ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIP7mglPrimSt6vectorIS2_SaIS2_EEEEEvT_@Base 2~rc1
  _ZSt9make_heapIN9__gnu_cxx17__normal_iteratorIP7mglPrimSt6vectorIS2_SaIS2_EEEEEvT_S8_@Base 2~rc1
diff --git a/debian/patches/series b/debian/patches/series
new file mode 100644 (file)
index 0000000..8930613
--- /dev/null
@@ -0,0 +1 @@
+src-data_png_cpp.patch
diff --git a/debian/patches/src-data_png_cpp.patch b/debian/patches/src-data_png_cpp.patch
new file mode 100644 (file)
index 0000000..d5d2a30
--- /dev/null
@@ -0,0 +1,358 @@
+Include zlib.h header in file src/data_png.cpp 
+--- a/src/data_png.cpp
++++ b/src/data_png.cpp
+@@ -1,178 +1,179 @@
+-/***************************************************************************
+- * 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>
+-#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
++#ifndef NO_PNG\r
++#include <png.h>\r
++#endif\r
++#include "mgl/data.h"\r
++#include <zlib.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
++#ifndef NO_PNG\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
++#endif\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
++#ifndef NO_PNG\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
++#endif\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 b1479e3119193bdf990a070c2880c8c60482b778..f70e85fec0e186a60ced54ecb9bcaee40ddae9b1 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>
-#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
+#ifndef NO_PNG\r
+#include <png.h>\r
+#endif\r
+#include "mgl/data.h"\r
+#include <zlib.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
+#ifndef NO_PNG\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
+#endif\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
+#ifndef NO_PNG\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
+#endif\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