Imported Upstream version 2~rc2+svn362
authorDimitrios Eftaxiopoulos <eftaxi12@otenet.gr>
Tue, 13 Mar 2012 12:41:04 +0000 (14:41 +0200)
committerDimitrios Eftaxiopoulos <eftaxi12@otenet.gr>
Tue, 13 Mar 2012 12:41:04 +0000 (14:41 +0200)
26 files changed:
include/mgl/base.h
include/mgl/canvas_cf.h
include/mgl/fltk.h
include/mgl/mgl.h
include/mgl/qt.h
src/Makefile.am
src/axis.cpp
src/canvas.cpp
src/cont.cpp
src/data.cpp
src/data_io.cpp
src/eval.cpp
src/export.cpp
src/export_2d.cpp
src/export_3d.cpp
src/font.cpp
src/opengl.cpp
src/parser.cpp
src/pixel.cpp
src/plot.cpp
src/prim.cpp
src/vect.cpp
todo.txt
widgets/fltk.cpp
widgets/qt.cpp
widgets/window.cpp

index 6104428e1ed8b03b074e4e69168ef06586ee989c..1aaef531a0061a4398114d89f6b34a2f57f89ab0 100644 (file)
@@ -115,25 +115,21 @@ struct mglPnt
        mglPnt()        {       xx=yy=zz=x=y=z=c=t=u=v=w=r=g=b=a=0;     }\r
 };\r
 inline mglPnt operator+(const mglPnt &a, const mglPnt &b)\r
-{      mglPnt c;\r
-       c.x=a.x+b.x;    c.y=a.y+b.y;    c.z=a.z+b.z;    c.c=a.c+b.c;\r
-       c.t=a.t+b.t;    c.u=a.u+b.u;    c.v=a.v+b.v;    c.w=a.w+b.w;\r
-       c.r=a.r+b.r;    c.g=a.g+b.g;    c.b=a.b+b.b;    c.a=a.a+b.a;    return c;       }\r
+{      mglPnt c=a;\r
+       c.x+=b.x;       c.y+=b.y;       c.z+=b.z;       c.u+=b.u;       c.v+=b.v;       c.w+=b.w;\r
+       c.r+=b.r;       c.g+=b.g;       c.b+=b.b;       c.a+=b.a;       return c;       }\r
 inline mglPnt operator-(const mglPnt &a, const mglPnt &b)\r
-{      mglPnt c;\r
-       c.x=a.x-b.x;    c.y=a.y-b.y;    c.z=a.z-b.z;    c.c=a.c-b.c;\r
-       c.t=a.t-b.t;    c.u=a.u-b.u;    c.v=a.v-b.v;    c.w=a.w-b.w;\r
-       c.r=a.r-b.r;    c.g=a.g-b.g;    c.b=a.b-b.b;    c.a=a.a-b.a;    return c;       }\r
+{      mglPnt c=a;\r
+       c.x-=b.x;       c.y-=b.y;       c.z-=b.z;       c.u-=b.u;       c.v-=b.v;       c.w-=b.w;\r
+       c.r-=b.r;       c.g-=b.g;       c.b-=b.b;       c.a-=b.a;       return c;       }\r
 inline mglPnt operator*(const mglPnt &a, float b)\r
-{      mglPnt c;\r
-       c.x=a.x*b;      c.y=a.y*b;      c.z=a.z*b;      c.c=a.c*b;\r
-       c.t=a.t*b;      c.u=a.u*b;      c.v=a.v*b;      c.w=a.w*b;\r
-       c.r=a.r*b;      c.g=a.g*b;      c.b=a.b*b;      c.a=a.a*b;      return c;       }\r
+{      mglPnt c=a;\r
+       c.x*=b; c.y*=b; c.z*=b; c.u*=b; c.v*=b; c.w*=b;\r
+       c.r*=b; c.g*=b; c.b*=b; c.a*=b; return c;       }\r
 inline mglPnt operator*(float b, const mglPnt &a)\r
-{      mglPnt c;\r
-       c.x=a.x*b;      c.y=a.y*b;      c.z=a.z*b;      c.c=a.c*b;\r
-       c.t=a.t*b;      c.u=a.u*b;      c.v=a.v*b;      c.w=a.w*b;\r
-       c.r=a.r*b;      c.g=a.g*b;      c.b=a.b*b;      c.a=a.a*b;      return c;       }\r
+{      mglPnt c=a;\r
+       c.x*=b; c.y*=b; c.z*=b; c.u*=b; c.v*=b; c.w*=b;\r
+       c.r*=b; c.g*=b; c.b*=b; c.a*=b; return c;       }\r
 //-----------------------------------------------------------------------------\r
 struct mglTexture\r
 {\r
index 6f2a6dbc79718cab058385bcb1729fc2363be5e8..e2680750b010d45318d19ebce1b8b3a519882f88 100644 (file)
@@ -83,7 +83,6 @@ void mgl_write_obj(HMGL gr, const char *fname,const char *descr, int use_png);
 void mgl_write_stl(HMGL gr, const char *fname,const char *descr);\r
 void mgl_write_off(HMGL gr, const char *fname,const char *descr, int colored);\r
 void mgl_write_xyz(HMGL gr, const char *fname,const char *descr);\r
-void mgl_write_wrl(HMGL gr, const char *fname,const char *descr);\r
 void mgl_write_x3d(HMGL gr, const char *fname,const char *descr);\r
 void mgl_write_wgl(HMGL gr, const char *fname,const char *descr);\r
 void mgl_write_idtf(HMGL gr, const char *fname,const char *descr);\r
index fb13a719a985d04348c30d5e339a50e13f7f312d..84441f7ffcf0b230e862fea4b6be5164baa0a674 100644 (file)
@@ -53,8 +53,8 @@ public:
        inline void set_flag(int f)     {       flag = f;       }\r
        /// Set flags for handling mouse\r
        void set_graph(mglCanvas *gr);  ///< Set grapher object\r
-       inline void set_graph(mglGraph *gr)\r
-       {       set_graph(dynamic_cast<mglCanvas *>(gr->Self()));       }\r
+       inline void set_graph(mglGraph *Gr)\r
+       {       set_graph(dynamic_cast<mglCanvas *>(Gr->Self()));       }\r
        /// Get pointer to grapher\r
        inline HMGL get_graph() {       return gr;      }\r
        /// Set drawing functions and its parameter\r
index b6daa422ce8003cba6abe81b935aefaf7062d598..847ac5221689f4d6c954fb9e9ea05293befb6f2e 100644 (file)
@@ -304,10 +304,7 @@ public:
        /// Write the frame in file using OFF format\r
        inline void WriteOFF(const char *fname,const char *descr="", bool colored=false)\r
        {       mgl_write_off(gr, fname, descr,colored);        }\r
-       /// Write the frame in file using STL format (faces only)\r
-       inline void WriteWRL(const char *fname,const char *descr="")\r
-       {       mgl_write_wrl(gr, fname, descr);        }\r
-       /// Write the frame in file using OFF format\r
+       /// Write the frame in file using X3D format\r
        inline void WriteX3D(const char *fname,const char *descr="")\r
        {       mgl_write_x3d(gr, fname, descr);        }\r
        /// Write the frame in file using IDTF format\r
index b54d574d7a51134e48f4245606768d3df5798f52..ceb976ab4bb15b81c96977f2df7f1539dcacd81c 100644 (file)
@@ -107,7 +107,6 @@ public slots:
        void exportOBJ(QString fname="");       ///< export to OBJ file\r
        void exportSTL(QString fname="");       ///< export to STL file\r
        void exportOFF(QString fname="");       ///< export to OFF file\r
-       void exportWRL(QString fname="");       ///< export to WRL file\r
        void exportX3D(QString fname="");       ///< export to XYZ file\r
        void exportIDTF(QString fname="");      ///< export to IDTF file\r
        void setMGLFont(QString path);          ///< restore/load font for graphics\r
index 8a75374a0dbb9b2e94e1e141b1f23fdd70609a4f..f64eeda10faff7d1a3c5298254ce49c1f3d9cacf 100644 (file)
@@ -3,7 +3,7 @@ AM_CXXFLAGS += -I$(top_srcdir)/include -I$(top_builddir)/include
 lib_LTLIBRARIES = libmgl.la
 
 
-libmgl_la_LIBADD = $(PNG_LIBS) $(GL_LIBS) $(LOPENMP)
+libmgl_la_LIBADD = $(PNG_LIBS) $(GL_LIBS)
 libmgl_la_LDFLAGS = -no-undefined -version-info $(MGL_CURRENT):$(MGL_REVISION):$(MGL_AGE)
 
 libmgl_la_CXXFLAGS = \
@@ -35,10 +35,13 @@ libmgl_la_LIBADD += $(U3D_LIBS)
 endif
 
 libmgl_la_SOURCES = \
-axis.cpp       base_cf.cpp     base.cpp        canvas_cf.cpp   canvas.cpp \
-cont.cpp       crust.cpp       data.cpp        data_io.cpp     data_new.cpp \
-data_op.cpp    data_png.cpp    def_font.cpp    export_2d.cpp   eval.cpp \
-evalp.cpp      exec.cpp        export.cpp      fit.cpp         font.cpp \
-opengl.cpp     other.cpp       parser.cpp      tex_table.cpp   pde.cpp \
-pixel.cpp      plot.cpp        prim.cpp        surf.cpp        vect.cpp \
-volume.cpp     export_3d.cpp
+addon.cpp axis.cpp base_cf.cpp base.cpp canvas_cf.cpp canvas.cpp cont.cpp crust.cpp \
+data.cpp data_io.cpp data_new.cpp data_op.cpp data_png.cpp def_font.cpp export_2d.cpp \
+export_3d.cpp eval.cpp evalp.cpp exec.cpp export.cpp fit.cpp font.cpp other.cpp evalc.cpp \
+parser.cpp pde.cpp pixel.cpp plot.cpp prim.cpp surf.cpp tex_table.cpp vect.cpp volume.cpp \
+opengl.cpp
+
+#if USE_OPENGL
+#libmgl_la_SOURCES += opengl.cpp
+#libmgl_la_LIBADD +=
+#endif
\ No newline at end of file
index 4e783a8b37883589d675e607a0161e14f7b6e448..a0e2d82ff1f4979df5021912b29189dce45101f1 100644 (file)
@@ -35,8 +35,8 @@ inline struct tm* mgl_localtime_r (const time_t *clock, struct tm *result)
 //-----------------------------------------------------------------------------
 long mgl_have_color(const char *stl)
 {
-       register long i,j;
-       if(stl) for(i=j=0;stl[i];i++)   if(strchr(MGL_COLORS,stl[i]))   j++;
+       register long i,j=0;
+       if(stl) for(i=0;stl[i];i++)     if(strchr(MGL_COLORS,stl[i]))   j++;
        return j;
 }
 //-----------------------------------------------------------------------------
@@ -273,7 +273,7 @@ void mglCanvas::SetTickTime(char dir, float d, const char *t)
        {       v1 = aa.v1;             v0 = v0 - aa.dv*floor((v0-aa.v2)/aa.dv+1e-3);   }
        if(v0+aa.dv!=v0 && v1+aa.dv!=v1)        for(v=v0;v<=v1;v+=aa.dv)
        {
-               time_t tt = v;  tm tp;          mgl_localtime_r(&tt,&tp);
+               tt = v; tm tp;          mgl_localtime_r(&tt,&tp);
                wcsftime(buf,64,aa.t,&tp);      aa.AddLabel(buf,v);
        }
 }
@@ -561,10 +561,10 @@ void mglCanvas::DrawLabels(mglAxis &aa)
                if(c>aa.v1 && c<aa.v2 && i%k!=0)        continue;
                p = o+d*c;      nn = s-o;       ScalePoint(p,nn);
                mglPnt &qq = Pnt[kk[i]];
-               float ax=qq.u*cos(tet) + qq.v*sin(tet), ay=qq.v*cos(tet) - qq.u*sin(tet);
-               if(qq.u*nn.x+qq.v*nn.y < ax*nn.x+ay*nn.y)
-               {       ax=qq.u*cos(tet) - qq.v*sin(tet);       ay=qq.v*cos(tet) + qq.u*sin(tet);       }
-               qq.u = ax;      qq.v = ay;
+               float ux=qq.u*cos(tet) + qq.v*sin(tet), uy=qq.v*cos(tet) - qq.u*sin(tet);
+               if(qq.u*nn.x+qq.v*nn.y < ux*nn.x+uy*nn.y)
+               {       ux=qq.u*cos(tet) - qq.v*sin(tet);       uy=qq.v*cos(tet) + qq.u*sin(tet);       }
+               qq.u = ux;      qq.v = uy;
 
                if(!get(MGL_ENABLE_RTEXT))      pos[2] = nn.x<0 || (nn.x==0 && nn.y<0) ? 'L':'R';
 
@@ -764,27 +764,27 @@ void mglCanvas::Box(const char *col, bool ticks)
                if(col && strchr(col,'@'))
                {
                        // edge points
-                       mglPoint p[8]={Min,Min,Min,Min,Max,Max,Max,Max},nan=mglPoint(NAN),o[8];
+                       mglPoint p[8]={Min,Min,Min,Min,Max,Max,Max,Max},nan=mglPoint(NAN),oo[8];
                        p[1].x=Max.x;   p[2].y=Max.y;   p[3].z=Max.z;
                        p[4].x=Min.x;   p[5].y=Min.y;   p[6].z=Min.z;
                        float zm=1e5;   int im=0;
-                       memcpy(o,p,8*sizeof(mglPoint));
+                       memcpy(oo,p,8*sizeof(mglPoint));
                        for(int i=0;i<8;i++)    // find deepest point
                        {
                                ScalePoint(p[i],nan,false);
                                if(p[i].z<zm)   {       zm=p[i].z;      im=i;   }
                        }
                        // now draw faces
-                       char clr[5]="{y9}";
+                       char color[5]="{y9}";
                        register int i; // first color used for faces, last one for edges
                        for(i=0;col[i];i++)     if(strchr(MGL_COLORS,col[i]))
                        {
-                               if(i>1 && col[i-1]=='{')        {       clr[1]=col[i];  clr[2]=col[i+1];        break;  }
-                               else    {       clr[0]=col[i];  clr[1]=0;       break;  }
+                               if(i>1 && col[i-1]=='{')        {       color[1]=col[i];        color[2]=col[i+1];      break;  }
+                               else    {       color[0]=col[i];        color[1]=0;     break;  }
                        }
-                       mgl_facex(this, o[im].x, Min.y, Min.z, Max.y-Min.y, Max.z-Min.z, clr,0,0);
-                       mgl_facey(this, Min.x, o[im].y, Min.z, Max.x-Min.x, Max.z-Min.z, clr,0,0);
-                       mgl_facez(this, Min.x, Min.y, o[im].z, Max.x-Min.x, Max.y-Min.y, clr,0,0);
+                       mgl_facex(this, oo[im].x, Min.y, Min.z, Max.y-Min.y, Max.z-Min.z, color,0,0);
+                       mgl_facey(this, Min.x, oo[im].y, Min.z, Max.x-Min.x, Max.z-Min.z, color,0,0);
+                       mgl_facez(this, Min.x, Min.y, oo[im].z, Max.x-Min.x, Max.y-Min.y, color,0,0);
                }
        }
        Org=o;  TickLen=tl;
index b5121aa6d95c3f0ad69ae1dfad1aed2850b4aa0f..28c0e45b806c0d0bb25e3a4e853e66abe913959c 100644 (file)
@@ -339,18 +339,18 @@ float mglCanvas::text_plot(long p,const wchar_t *text,const char *font,float siz
        RotateN(ftet,0,0,1);\r
        if(strchr(font,'@'))    // draw box around text\r
        {\r
-               long k1,k2,k3,k4;       mglPnt pt;      mglPoint p;\r
+               long k1,k2,k3,k4;       mglPnt pt;      mglPoint pp;\r
                w = fnt->Width(text,font);      h = fnt->Height(font);\r
                int align;      mglGetStyle(font,0,&align);     align = align&3;\r
                float d=-w*align/2.-h*0.2;      w+=h*0.4;\r
-               pt = q; p = mglPoint(d,-h*0.4);         PostScale(p);\r
-               pt.x=pt.xx=p.x; pt.y=pt.yy=p.y; MGL_PUSH(Pnt,pt,mutexPnt);      k1=Pnt.size()-1;\r
-               pt = q; p = mglPoint(w+d,-h*0.4);       PostScale(p);\r
-               pt.x=pt.xx=p.x; pt.y=pt.yy=p.y; MGL_PUSH(Pnt,pt,mutexPnt);      k2=Pnt.size()-1;\r
-               pt = q; p = mglPoint(d,h*1.2);  PostScale(p);\r
-               pt.x=pt.xx=p.x; pt.y=pt.yy=p.y; MGL_PUSH(Pnt,pt,mutexPnt);      k3=Pnt.size()-1;\r
-               pt = q; p = mglPoint(w+d,h*1.2);        PostScale(p);\r
-               pt.x=pt.xx=p.x; pt.y=pt.yy=p.y; MGL_PUSH(Pnt,pt,mutexPnt);      k4=Pnt.size()-1;\r
+               pt = q; pp = mglPoint(d,-h*0.4);                PostScale(pp);\r
+               pt.x=pt.xx=pp.x;        pt.y=pt.yy=pp.y;        MGL_PUSH(Pnt,pt,mutexPnt);      k1=Pnt.size()-1;\r
+               pt = q; pp = mglPoint(w+d,-h*0.4);              PostScale(pp);\r
+               pt.x=pt.xx=pp.x;        pt.y=pt.yy=pp.y;        MGL_PUSH(Pnt,pt,mutexPnt);      k2=Pnt.size()-1;\r
+               pt = q; pp = mglPoint(d,h*1.2);                 PostScale(pp);\r
+               pt.x=pt.xx=pp.x;        pt.y=pt.yy=pp.y;        MGL_PUSH(Pnt,pt,mutexPnt);      k3=Pnt.size()-1;\r
+               pt = q; pp = mglPoint(w+d,h*1.2);               PostScale(pp);\r
+               pt.x=pt.xx=pp.x;        pt.y=pt.yy=pp.y;        MGL_PUSH(Pnt,pt,mutexPnt);      k4=Pnt.size()-1;\r
                line_plot(k1,k2);       line_plot(k1,k3);       line_plot(k4,k2);       line_plot(k4,k3);\r
        }\r
        fsize *= fnt->Puts(text,font,col)/2;\r
index d9ce5fe118f76e60b1d2f4d39d26f2bb8bf25732..08357328fbb2290aabb62a689ac127c34723b4d0 100644 (file)
@@ -207,7 +207,7 @@ struct mglSegment
        mglSegment(mglPoint q1,mglPoint q2)     {p1=q1;p2=q2;next=prev=-1;}\r
 };\r
 // function for connecting arbitrary line segments\r
-void mgl_connect(HMGL gr, float val, HCDT a, HCDT x, HCDT y, HCDT z, float c, int text,long ak)\r
+/*void mgl_connect(HMGL gr, float val, HCDT a, HCDT x, HCDT y, HCDT z, float c, int text,long ak)\r
 {\r
        long n=a->GetNx(), m=a->GetNy();\r
        if(n<2 || m<2 || x->GetNx()*x->GetNy()!=n*m || y->GetNx()*y->GetNy()!=n*m || z->GetNx()*z->GetNy()!=n*m)\r
@@ -250,9 +250,9 @@ void mgl_connect(HMGL gr, float val, HCDT a, HCDT x, HCDT y, HCDT z, float c, in
                        if(s2.next<0 && s1.p1==s2.p2)   {       s1.prev = j;    s2.next=i;      continue;       }\r
                        //                      if(s2.prev<0 && s1.p2==s2.p1)\r
                        //                      {       s1.next = j;    s2.prev=i;      continue;       }\r
+               }\r
        }\r
-}\r
-}\r
+}*/\r
 //-----------------------------------------------------------------------------\r
 // NOTE! returned must be deleted!!!\r
 struct mglPnt2 {       float x,y;      mglPnt2(float xx=0,float yy=0)  {x=xx;y=yy;}    };\r
@@ -650,25 +650,25 @@ void mgl_contf(HMGL gr, HCDT z, const char *sch, const char *opt)
 //-----------------------------------------------------------------------------\r
 void mgl_contf_xy_val_(uintptr_t *gr, uintptr_t *v, uintptr_t *x, uintptr_t *y, uintptr_t *a, const char *sch, const char *opt,int l,int lo)\r
 {      char *s=new char[l+1];  memcpy(s,sch,l);        s[l]=0;\r
-char *o=new char[lo+1];        memcpy(o,opt,lo);       o[lo]=0;\r
-mgl_contf_xy_val(_GR_, _DA_(v), _DA_(x), _DA_(y), _DA_(a), s, o);\r
-delete []o;    delete []s;     }\r
+       char *o=new char[lo+1]; memcpy(o,opt,lo);       o[lo]=0;\r
+       mgl_contf_xy_val(_GR_, _DA_(v), _DA_(x), _DA_(y), _DA_(a), s, o);\r
+       delete []o;     delete []s;     }\r
 //-----------------------------------------------------------------------------\r
 void mgl_contf_val_(uintptr_t *gr, uintptr_t *v, uintptr_t *a, const char *sch, const char *opt,int l,int lo)\r
 {      char *s=new char[l+1];  memcpy(s,sch,l);        s[l]=0;\r
-char *o=new char[lo+1];        memcpy(o,opt,lo);       o[lo]=0;\r
-mgl_contf_val(_GR_, _DA_(v), _DA_(a), s, o);   delete []o;     delete []s;     }\r
+       char *o=new char[lo+1]; memcpy(o,opt,lo);       o[lo]=0;\r
+       mgl_contf_val(_GR_, _DA_(v), _DA_(a), s, o);    delete []o;     delete []s;     }\r
 //-----------------------------------------------------------------------------\r
 void mgl_contf_xy_(uintptr_t *gr, uintptr_t *x, uintptr_t *y, uintptr_t *a, const char *sch, const char *opt,int l,int lo)\r
 {      char *s=new char[l+1];  memcpy(s,sch,l);        s[l]=0;\r
-char *o=new char[lo+1];        memcpy(o,opt,lo);       o[lo]=0;\r
-mgl_contf_xy(_GR_, _DA_(x), _DA_(y), _DA_(a), s, o);\r
-delete []o;    delete []s;     }\r
+       char *o=new char[lo+1]; memcpy(o,opt,lo);       o[lo]=0;\r
+       mgl_contf_xy(_GR_, _DA_(x), _DA_(y), _DA_(a), s, o);\r
+       delete []o;     delete []s;     }\r
 //-----------------------------------------------------------------------------\r
 void mgl_contf_(uintptr_t *gr, uintptr_t *a, const char *sch, const char *opt,int l,int lo)\r
 {      char *s=new char[l+1];  memcpy(s,sch,l);        s[l]=0;\r
-char *o=new char[lo+1];        memcpy(o,opt,lo);       o[lo]=0;\r
-mgl_contf(_GR_, _DA_(a), s, o);        delete []o;     delete []s;     }\r
+       char *o=new char[lo+1]; memcpy(o,opt,lo);       o[lo]=0;\r
+       mgl_contf(_GR_, _DA_(a), s, o); delete []o;     delete []s;     }\r
 //-----------------------------------------------------------------------------\r
 //\r
 //     ContD series\r
@@ -676,8 +676,8 @@ mgl_contf(_GR_, _DA_(a), s, o);     delete []o;     delete []s;     }
 //-----------------------------------------------------------------------------\r
 int mgl_get_ncol(const char *sch, char *res)\r
 {\r
-       register long i,j;\r
-       if(sch) for(i=j=0;sch[i]&&sch[i]!=':';i++)      if(strchr(MGL_COLORS,sch[i]))\r
+       register long i,j=0;\r
+       if(sch) for(i=0;sch[i]&&sch[i]!=':';i++)        if(strchr(MGL_COLORS,sch[i]))\r
        {       if(res) res[j]=sch[i];  j++;    }\r
        return j?j:strlen(MGL_DEF_PAL);\r
 }\r
@@ -748,24 +748,24 @@ void mgl_contd(HMGL gr, HCDT z, const char *sch, const char *opt)
 //-----------------------------------------------------------------------------\r
 void mgl_contd_xy_val_(uintptr_t *gr, uintptr_t *v, uintptr_t *x, uintptr_t *y, uintptr_t *a, const char *sch, const char *opt,int l,int lo)\r
 {      char *s=new char[l+1];  memcpy(s,sch,l);        s[l]=0;\r
-char *o=new char[lo+1];        memcpy(o,opt,lo);       o[lo]=0;\r
-mgl_contd_xy_val(_GR_, _DA_(v), _DA_(x), _DA_(y), _DA_(a), s, o);\r
-delete []o;    delete []s;     }\r
+       char *o=new char[lo+1]; memcpy(o,opt,lo);       o[lo]=0;\r
+       mgl_contd_xy_val(_GR_, _DA_(v), _DA_(x), _DA_(y), _DA_(a), s, o);\r
+       delete []o;     delete []s;     }\r
 //-----------------------------------------------------------------------------\r
 void mgl_contd_val_(uintptr_t *gr, uintptr_t *v, uintptr_t *a, const char *sch, const char *opt,int l,int lo)\r
 {      char *s=new char[l+1];  memcpy(s,sch,l);        s[l]=0;\r
-char *o=new char[lo+1];        memcpy(o,opt,lo);       o[lo]=0;\r
-mgl_contd_val(_GR_, _DA_(v), _DA_(a), s, o);   delete []o;     delete []s;     }\r
+       char *o=new char[lo+1]; memcpy(o,opt,lo);       o[lo]=0;\r
+       mgl_contd_val(_GR_, _DA_(v), _DA_(a), s, o);    delete []o;     delete []s;     }\r
 //-----------------------------------------------------------------------------\r
 void mgl_contd_xy_(uintptr_t *gr, uintptr_t *x, uintptr_t *y, uintptr_t *a, const char *sch, const char *opt,int l,int lo)\r
 {      char *s=new char[l+1];  memcpy(s,sch,l);        s[l]=0;\r
-char *o=new char[lo+1];        memcpy(o,opt,lo);       o[lo]=0;\r
-mgl_contd_xy(_GR_, _DA_(x), _DA_(y), _DA_(a), s, o);   delete []o;     delete []s;     }\r
+       char *o=new char[lo+1]; memcpy(o,opt,lo);       o[lo]=0;\r
+       mgl_contd_xy(_GR_, _DA_(x), _DA_(y), _DA_(a), s, o);    delete []o;     delete []s;     }\r
 //-----------------------------------------------------------------------------\r
 void mgl_contd_(uintptr_t *gr, uintptr_t *a, const char *sch, const char *opt,int l,int lo)\r
 {      char *s=new char[l+1];  memcpy(s,sch,l);        s[l]=0;\r
-char *o=new char[lo+1];        memcpy(o,opt,lo);       o[lo]=0;\r
-mgl_contd(_GR_, _DA_(a), s, o);        delete []o;     delete []s;     }\r
+       char *o=new char[lo+1]; memcpy(o,opt,lo);       o[lo]=0;\r
+       mgl_contd(_GR_, _DA_(a), s, o); delete []o;     delete []s;     }\r
 //-----------------------------------------------------------------------------\r
 //\r
 //     ContV series\r
@@ -869,24 +869,24 @@ void mgl_contv(HMGL gr, HCDT z, const char *sch, const char *opt)
 //-----------------------------------------------------------------------------\r
 void mgl_contv_xy_val_(uintptr_t *gr, uintptr_t *v, uintptr_t *x, uintptr_t *y, uintptr_t *a, const char *sch, const char *opt,int l,int lo)\r
 {      char *s=new char[l+1];  memcpy(s,sch,l);        s[l]=0;\r
-char *o=new char[lo+1];        memcpy(o,opt,lo);       o[lo]=0;\r
-mgl_contv_xy_val(_GR_, _DA_(v), _DA_(x), _DA_(y), _DA_(a), s, o);\r
-delete []o;    delete []s;     }\r
+       char *o=new char[lo+1]; memcpy(o,opt,lo);       o[lo]=0;\r
+       mgl_contv_xy_val(_GR_, _DA_(v), _DA_(x), _DA_(y), _DA_(a), s, o);\r
+       delete []o;     delete []s;     }\r
 //-----------------------------------------------------------------------------\r
 void mgl_contv_val_(uintptr_t *gr, uintptr_t *v, uintptr_t *a, const char *sch, const char *opt,int l,int lo)\r
 {      char *s=new char[l+1];  memcpy(s,sch,l);        s[l]=0;\r
-char *o=new char[lo+1];        memcpy(o,opt,lo);       o[lo]=0;\r
-mgl_contv_val(_GR_, _DA_(v), _DA_(a), s, o);   delete []o;     delete []s;     }\r
+       char *o=new char[lo+1]; memcpy(o,opt,lo);       o[lo]=0;\r
+       mgl_contv_val(_GR_, _DA_(v), _DA_(a), s, o);    delete []o;     delete []s;     }\r
 //-----------------------------------------------------------------------------\r
 void mgl_contv_xy_(uintptr_t *gr, uintptr_t *x, uintptr_t *y, uintptr_t *a, const char *sch, const char *opt,int l,int lo)\r
 {      char *s=new char[l+1];  memcpy(s,sch,l);        s[l]=0;\r
-char *o=new char[lo+1];        memcpy(o,opt,lo);       o[lo]=0;\r
-mgl_contv_xy(_GR_, _DA_(x), _DA_(y), _DA_(a), s, o);   delete []o;     delete []s;     }\r
+       char *o=new char[lo+1]; memcpy(o,opt,lo);       o[lo]=0;\r
+       mgl_contv_xy(_GR_, _DA_(x), _DA_(y), _DA_(a), s, o);    delete []o;     delete []s;     }\r
 //-----------------------------------------------------------------------------\r
 void mgl_contv_(uintptr_t *gr, uintptr_t *a, const char *sch, const char *opt,int l,int lo)\r
 {      char *s=new char[l+1];  memcpy(s,sch,l);        s[l]=0;\r
-char *o=new char[lo+1];        memcpy(o,opt,lo);       o[lo]=0;\r
-mgl_contv(_GR_, _DA_(a), s, o);        delete []o;     delete []s;     }\r
+       char *o=new char[lo+1]; memcpy(o,opt,lo);       o[lo]=0;\r
+       mgl_contv(_GR_, _DA_(a), s, o); delete []o;     delete []s;     }\r
 //-----------------------------------------------------------------------------\r
 //\r
 //     Cont3 series\r
@@ -1030,27 +1030,27 @@ void mgl_cont3(HMGL gr, HCDT a, const char *sch, float sVal, const char *opt)
        mgl_cont3_val(gr,&v,a,sch,sVal,0);\r
 }\r
 //-----------------------------------------------------------------------------\r
-void mgl_cont3_xyz_val_(uintptr_t *gr, uintptr_t *v, uintptr_t *x, uintptr_t *y, uintptr_t *z, uintptr_t *a, const char *dir, float *sVal, const char *sch, const char *opt,int l,int lo)\r
+void mgl_cont3_xyz_val_(uintptr_t *gr, uintptr_t *v, uintptr_t *x, uintptr_t *y, uintptr_t *z, uintptr_t *a, const char *sch, float *sVal, const char *opt,int l,int lo)\r
 {      char *s=new char[l+1];  memcpy(s,sch,l);        s[l]=0;\r
-char *o=new char[lo+1];        memcpy(o,opt,lo);       o[lo]=0;\r
-mgl_cont3_xyz_val(_GR_, _DA_(v), _DA_(x), _DA_(y), _DA_(z), _DA_(a), s, *sVal, o);\r
-delete []o;    delete []s;     }\r
+       char *o=new char[lo+1]; memcpy(o,opt,lo);       o[lo]=0;\r
+       mgl_cont3_xyz_val(_GR_, _DA_(v), _DA_(x), _DA_(y), _DA_(z), _DA_(a), s, *sVal, o);\r
+       delete []o;     delete []s;     }\r
 //-----------------------------------------------------------------------------\r
-void mgl_cont3_val_(uintptr_t *gr, uintptr_t *v, uintptr_t *a, const char *dir, float *sVal, const char *sch, const char *opt,int l,int lo)\r
+void mgl_cont3_val_(uintptr_t *gr, uintptr_t *v, uintptr_t *a, const char *sch, float *sVal, const char *opt,int l,int lo)\r
 {      char *s=new char[l+1];  memcpy(s,sch,l);        s[l]=0;\r
-char *o=new char[lo+1];        memcpy(o,opt,lo);       o[lo]=0;\r
-mgl_cont3_val(_GR_, _DA_(v), _DA_(a), s, *sVal, o);    delete []o;     delete []s;     }\r
+       char *o=new char[lo+1]; memcpy(o,opt,lo);       o[lo]=0;\r
+       mgl_cont3_val(_GR_, _DA_(v), _DA_(a), s, *sVal, o);     delete []o;     delete []s;     }\r
 //-----------------------------------------------------------------------------\r
-void mgl_cont3_xyz_(uintptr_t *gr, uintptr_t *x, uintptr_t *y, uintptr_t *z, uintptr_t *a, const char *dir, float *sVal, const char *sch, const char *opt,int l,int lo)\r
+void mgl_cont3_xyz_(uintptr_t *gr, uintptr_t *x, uintptr_t *y, uintptr_t *z, uintptr_t *a, const char *sch, float *sVal, const char *opt,int l,int lo)\r
 {      char *s=new char[l+1];  memcpy(s,sch,l);        s[l]=0;\r
-char *o=new char[lo+1];        memcpy(o,opt,lo);       o[lo]=0;\r
-mgl_cont3_xyz(_GR_, _DA_(x), _DA_(y), _DA_(z), _DA_(a), s, *sVal, o);\r
-delete []o;    delete []s;     }\r
+       char *o=new char[lo+1]; memcpy(o,opt,lo);       o[lo]=0;\r
+       mgl_cont3_xyz(_GR_, _DA_(x), _DA_(y), _DA_(z), _DA_(a), s, *sVal, o);\r
+       delete []o;     delete []s;     }\r
 //-----------------------------------------------------------------------------\r
-void mgl_cont3_(uintptr_t *gr, uintptr_t *a, const char *dir, float *sVal, const char *sch, const char *opt,int l,int lo)\r
+void mgl_cont3_(uintptr_t *gr, uintptr_t *a, const char *sch, float *sVal, const char *opt,int l,int lo)\r
 {      char *s=new char[l+1];  memcpy(s,sch,l);        s[l]=0;\r
-char *o=new char[lo+1];        memcpy(o,opt,lo);       o[lo]=0;\r
-mgl_cont3(_GR_, _DA_(a), s, *sVal, o); delete []o;     delete []s;     }\r
+       char *o=new char[lo+1]; memcpy(o,opt,lo);       o[lo]=0;\r
+       mgl_cont3(_GR_, _DA_(a), s, *sVal, o);  delete []o;     delete []s;     }\r
 //-----------------------------------------------------------------------------\r
 //\r
 //     Dens3 series\r
@@ -1063,6 +1063,7 @@ void mgl_dens3_xyz(HMGL gr, HCDT x, HCDT y, HCDT z, HCDT a, const char *sch, flo
        bool both = x->GetNx()*x->GetNy()*x->GetNz()==n*m*l && y->GetNx()*y->GetNy()*y->GetNz()==n*m*l && z->GetNx()*z->GetNy()*z->GetNz()==n*m*l;\r
        if(!(both || (x->GetNx()==n && y->GetNx()==m && z->GetNx()==l)))\r
        {       gr->SetWarn(mglWarnDim,"Dens3");        return; }\r
+       gr->SaveState(opt);\r
        static int cgid=1;      gr->StartGroup("Dens3",cgid++);\r
        char dir='y';\r
        if(sch && strchr(sch,'x'))      dir='x';\r
@@ -1091,7 +1092,7 @@ char *o=new char[lo+1];   memcpy(o,opt,lo);       o[lo]=0;
 mgl_dens3_xyz(_GR_, _DA_(x), _DA_(y), _DA_(z), _DA_(a), s, *sVal, o);\r
 delete []o;    delete []s;     }\r
 //-----------------------------------------------------------------------------\r
-void mgl_dens3_(uintptr_t *gr, uintptr_t *a, const char *dir, float *sVal, const char *sch, const char *opt,int l,int lo)\r
+void mgl_dens3_(uintptr_t *gr, uintptr_t *a, const char *sch, float *sVal, const char *opt,int l,int lo)\r
 {      char *s=new char[l+1];  memcpy(s,sch,l);        s[l]=0;\r
 char *o=new char[lo+1];        memcpy(o,opt,lo);       o[lo]=0;\r
 mgl_dens3(_GR_, _DA_(a), s, *sVal, o); delete []o;     delete []s;     }\r
@@ -1130,13 +1131,13 @@ void mgl_grid3(HMGL gr, HCDT a, const char *sch, float sVal, const char *opt)
        mgl_grid3_xyz(gr,&x,&y,&z,a,sch,sVal,0);\r
 }\r
 //-----------------------------------------------------------------------------\r
-void mgl_grid3_xyz_(uintptr_t *gr, uintptr_t *x, uintptr_t *y, uintptr_t *z, uintptr_t *a, const char *dir, float *sVal, const char *sch, const char *opt,int l,int lo)\r
+void mgl_grid3_xyz_(uintptr_t *gr, uintptr_t *x, uintptr_t *y, uintptr_t *z, uintptr_t *a, const char *sch, float *sVal, const char *opt,int l,int lo)\r
 {      char *s=new char[l+1];  memcpy(s,sch,l);        s[l]=0;\r
 char *o=new char[lo+1];        memcpy(o,opt,lo);       o[lo]=0;\r
 mgl_grid3_xyz(_GR_, _DA_(x), _DA_(y), _DA_(z), _DA_(a), s, *sVal, o);\r
 delete []o;    delete []s;     }\r
 //-----------------------------------------------------------------------------\r
-void mgl_grid3_(uintptr_t *gr, uintptr_t *a, const char *dir, float *sVal, const char *sch, const char *opt,int l,int lo)\r
+void mgl_grid3_(uintptr_t *gr, uintptr_t *a, const char *sch, float *sVal, const char *opt,int l,int lo)\r
 {      char *s=new char[l+1];  memcpy(s,sch,l);        s[l]=0;\r
 char *o=new char[lo+1];        memcpy(o,opt,lo);       o[lo]=0;\r
 mgl_grid3(_GR_, _DA_(a), s, *sVal, o); delete []o;     delete []s;     }\r
@@ -1199,25 +1200,25 @@ void mgl_contf3(HMGL gr, HCDT a, const char *sch, float sVal, const char *opt)
        mgl_contf3_val(gr,&v,a,sch,sVal,0);\r
 }\r
 //-----------------------------------------------------------------------------\r
-void mgl_contf3_xyz_val_(uintptr_t *gr, uintptr_t *v, uintptr_t *x, uintptr_t *y, uintptr_t *z, uintptr_t *a, const char *dir, float *sVal, const char *sch, const char *opt,int l,int lo)\r
+void mgl_contf3_xyz_val_(uintptr_t *gr, uintptr_t *v, uintptr_t *x, uintptr_t *y, uintptr_t *z, uintptr_t *a, const char *sch, float *sVal, const char *opt,int l,int lo)\r
 {      char *s=new char[l+1];  memcpy(s,sch,l);        s[l]=0;\r
 char *o=new char[lo+1];        memcpy(o,opt,lo);       o[lo]=0;\r
 mgl_contf3_xyz_val(_GR_, _DA_(v), _DA_(x), _DA_(y), _DA_(z), _DA_(a), s, *sVal, o);\r
 delete []o;    delete []s;     }\r
 //-----------------------------------------------------------------------------\r
-void mgl_contf3_val_(uintptr_t *gr, uintptr_t *v, uintptr_t *a, const char *dir, float *sVal, const char *sch, const char *opt,int l,int lo)\r
+void mgl_contf3_val_(uintptr_t *gr, uintptr_t *v, uintptr_t *a, const char *sch, float *sVal, const char *opt,int l,int lo)\r
 {      char *s=new char[l+1];  memcpy(s,sch,l);        s[l]=0;\r
 char *o=new char[lo+1];        memcpy(o,opt,lo);       o[lo]=0;\r
 mgl_contf3_val(_GR_, _DA_(v), _DA_(a), s, *sVal, o);\r
 delete []o;    delete []s;     }\r
 //-----------------------------------------------------------------------------\r
-void mgl_contf3_xyz_(uintptr_t *gr, uintptr_t *x, uintptr_t *y, uintptr_t *z, uintptr_t *a, const char *dir, float *sVal, const char *sch, const char *opt,int l,int lo)\r
+void mgl_contf3_xyz_(uintptr_t *gr, uintptr_t *x, uintptr_t *y, uintptr_t *z, uintptr_t *a, const char *sch, float *sVal, const char *opt,int l,int lo)\r
 {      char *s=new char[l+1];  memcpy(s,sch,l);        s[l]=0;\r
 char *o=new char[lo+1];        memcpy(o,opt,lo);       o[lo]=0;\r
 mgl_contf3_xyz(_GR_, _DA_(x), _DA_(y), _DA_(z), _DA_(a), s, *sVal, o);\r
 delete []o;    delete []s;     }\r
 //-----------------------------------------------------------------------------\r
-void mgl_contf3_(uintptr_t *gr, uintptr_t *a, const char *dir, float *sVal, const char *sch, const char *opt,int l,int lo)\r
+void mgl_contf3_(uintptr_t *gr, uintptr_t *a, const char *sch, float *sVal, const char *opt,int l,int lo)\r
 {      char *s=new char[l+1];  memcpy(s,sch,l);        s[l]=0;\r
 char *o=new char[lo+1];        memcpy(o,opt,lo);       o[lo]=0;\r
 mgl_contf3(_GR_, _DA_(a), s, *sVal, o);\r
@@ -1479,4 +1480,4 @@ void mgl_torus_(uintptr_t *gr, uintptr_t *r, uintptr_t *z, const char *pen, cons
 {      char *s=new char[l+1];  memcpy(s,pen,l);        s[l]=0;\r
 char *o=new char[lo+1];        memcpy(o,opt,lo);       o[lo]=0;\r
 mgl_torus(_GR_, _DA_(r), _DA_(z), s, o);       delete []o;     delete []s;     }\r
-//-----------------------------------------------------------------------------
\ No newline at end of file
+//-----------------------------------------------------------------------------
index fa1dd40328d16e8f2c59ea2fbeae91000ef855c8..2c673b5cc78b64b85dfd40560b45beedb901f116 100644 (file)
@@ -574,7 +574,7 @@ float mgl_data_linear(HCDT d, float x,float y,float z)
        const mglData *dd=dynamic_cast<const mglData *>(d);\r
        if(dd)\r
        {\r
-               long nx=dd->nx, ny=dd->ny, nz=dd->nz, d=ny>1?nx:0;\r
+               long nx=dd->nx, ny=dd->ny, nz=dd->nz, dn=ny>1?nx:0;\r
                kx = kx<nx-1 ? kx:nx-2; kx = kx>=0 ? kx:0;\r
                ky = ky<ny-1 ? ky:ny-2; ky = ky>=0 ? ky:0;\r
                kz = kz<nz-1 ? kz:nz-2; kz = kz>=0 ? kz:0;\r
@@ -583,8 +583,8 @@ float mgl_data_linear(HCDT d, float x,float y,float z)
                z -= kz;        if(nz==1)       z=0;\r
 \r
                const mreal *aa=dd->a+kx+nx*(ky+ny*kz), *bb = aa+(nz>1?nx*ny:0);\r
-               b0 = aa[0]*(1-x-y+x*y) + x*(1-y)*aa[1] + y*(1-x)*aa[d] + x*y*aa[1+d];\r
-               b1 = bb[0]*(1-x-y+x*y) + x*(1-y)*bb[1] + y*(1-x)*bb[d] + x*y*bb[1+d];\r
+               b0 = aa[0]*(1-x-y+x*y) + x*(1-y)*aa[1] + y*(1-x)*aa[dn] + x*y*aa[1+dn];\r
+               b1 = bb[0]*(1-x-y+x*y) + x*(1-y)*bb[1] + y*(1-x)*bb[dn] + x*y*bb[1+dn];\r
        }\r
        else\r
        {\r
index 58ad46494069ec62cd8aa8be3fb7a60643c54258..1e6d55e7fa20674f38b57e138bdf0916a266329f 100644 (file)
@@ -732,7 +732,6 @@ void *mgl_modify(void *par)
 }\r
 void mgl_data_modify(HMDT d, const char *eq,long dim)\r
 {\r
-mglNumThr=1;\r
        long nx=d->nx, ny=d->ny, nz=d->nz, par[3]={nx,ny,nz};\r
        mglFormula f(eq);\r
        if(dim<0)       dim=0;\r
index 1e1a422a8df27ea77fbb528fe92703b6abd9a0e7..2f5964f141c119a7393a5cd2324bb83b45c944a1 100644 (file)
@@ -503,6 +503,13 @@ typedef double (*func_2)(double, double);
 // evaluation of embedded (included) expressions\r
 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
+                       ,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
                        ,gsl_sf_bessel_Jnu,gsl_sf_bessel_Ynu,\r
@@ -536,6 +543,8 @@ mreal mglFormula::CalcIn(const mreal *a1) const
        {\r
                if(Kod<EQ_SIN)\r
                {\r
+                       // try to bypass calc b if a==0\r
+                       if(a==0 && z2[Kod-EQ_LT]!=3)    return z2[Kod-EQ_LT];\r
                        double b = Right->CalcIn(a1);\r
                        return !isnan(b) ? f2[Kod-EQ_LT](a,b) : NAN;\r
                }\r
index c68d9c15b814203d32daa194df716c18a8263e98..c28e3213e83a48e8de465afee9255dad7a3f3b51 100644 (file)
@@ -340,7 +340,7 @@ void mglCanvas::EndFrame()
 #define _GR_   ((mglCanvas *)(*gr))
 #define _Gr_   ((mglCanvas *)(gr))
 //-----------------------------------------------------------------------------
-void mgl_write_png(HMGL gr, const char *fname,const char *descr)
+void mgl_write_png(HMGL gr, const char *fname,const char *)
 {
        long w,h;       unsigned char *f=0, **p=0;
        p =_Gr_->GetRGBLines(w,h,f,true);
@@ -357,7 +357,7 @@ void mgl_write_png_(uintptr_t *gr, const char *fname,const char *descr,int l,int
        char *f=new char[n+1];  memcpy(f,descr,n);      f[n]=0;
        mgl_write_png(_GR_,s,f);        delete []s;             delete []f;     }
 //-----------------------------------------------------------------------------
-void mgl_write_png_solid(HMGL gr, const char *fname,const char *descr)
+void mgl_write_png_solid(HMGL gr, const char *fname,const char *)
 {
        long w,h;       unsigned char *f=0, **p=0;
        p =_Gr_->GetRGBLines(w,h,f);
@@ -391,7 +391,7 @@ void mgl_write_jpg_(uintptr_t *gr, const char *fname,const char *descr,int l,int
        char *f=new char[n+1];  memcpy(f,descr,n);      f[n]=0;
        mgl_write_jpg(_GR_,s,f);        delete []s;             delete []f;     }
 //-----------------------------------------------------------------------------
-void mgl_write_tga(HMGL gr, const char *fname,const char *descr)
+void mgl_write_tga(HMGL gr, const char *fname,const char *)
 {
        long w,h;       unsigned char *f=0, **p=0;
        p =_Gr_->GetRGBLines(w,h,f,true);
@@ -408,7 +408,7 @@ void mgl_write_tga_(uintptr_t *gr, const char *fname,const char *descr,int l,int
        char *f=new char[n+1];  memcpy(f,descr,n);      f[n]=0;
        mgl_write_tga(_GR_,s,f);        delete []s;             delete []f;     }
 //-----------------------------------------------------------------------------
-void mgl_write_bmp(HMGL gr, const char *fname,const char *descr)
+void mgl_write_bmp(HMGL gr, const char *fname,const char *)
 {
        long w,h;       unsigned char *f=0, **p=0;
        p =_Gr_->GetRGBLines(w,h,f);
@@ -425,7 +425,7 @@ void mgl_write_bmp_(uintptr_t *gr, const char *fname,const char *descr,int l,int
        char *f=new char[n+1];  memcpy(f,descr,n);      f[n]=0;
        mgl_write_bmp(_GR_,s,f);        delete []s;             delete []f;     }
 //-----------------------------------------------------------------------------
-void mgl_write_bps(HMGL gr, const char *fname,const char *descr)
+void mgl_write_bps(HMGL gr, const char *fname,const char *)
 {
        long w,h;       unsigned char *f=0, **p=0;
        p =_Gr_->GetRGBLines(w,h,f);
@@ -442,7 +442,7 @@ void mgl_write_bps_(uintptr_t *gr, const char *fname,const char *descr,int l,int
        char *f=new char[n+1];  memcpy(f,descr,n);      f[n]=0;
        mgl_write_bps(_GR_,s,f);        delete []s;             delete []f;     }
 //-----------------------------------------------------------------------------
-void mgl_write_gif(HMGL gr, const char *fname,const char *descr)
+void mgl_write_gif(HMGL gr, const char *fname,const char *)
 {
        long w,h;       unsigned char *f=0, **p=0;
        p =_Gr_->GetRGBLines(w,h,f);
index f94884c39423a29089e5dbd34486cfd0cc5ca14f..e761fbd3d45d93a102e9abd039e0397498eef7e6 100644 (file)
@@ -63,7 +63,7 @@ void put_line(HMGL gr, void *fp, bool gz, long i, float wp, mglColor cp,int st,
        const mglPnt pp = gr->GetPnt(gr->GetPrm(i).n1);
        float x0=pp.x, y0=pp.y;
        bool ok=true;
-       register unsigned long k = i,j; // first point
+       register long k = i,j;  // first point
        while(ok)
        {
                for(ok=false,j=i+1;j<gr->GetPrmNum();j++)
@@ -114,7 +114,7 @@ void put_line(HMGL gr, void *fp, bool gz, long i, float wp, mglColor cp,int st,
                                else if(p2.x==x0 && p2.y==y0)
                                {
                                        k=j;    q.type = -1;    x0 = p1.x;      y0=p1.y;
-                                       (fp, gz, nfmt,fc*x0,(neg?_Gr_->GetHeight()-y0:y0)*fc);
+                                       mgl_printf(fp, gz, nfmt,fc*x0,(neg?_Gr_->GetHeight()-y0:y0)*fc);
                                        if(m>10)        {       m=0;    mgl_printf(fp, gz, "\n");       }
                                        ok=true;        m++;
                                }
@@ -127,7 +127,7 @@ void put_line(HMGL gr, void *fp, bool gz, long i, float wp, mglColor cp,int st,
 //"np %d %d mt ", "%d %d ll ", "cp dr\n", "} def")
 void put_desc(HMGL gr, void *fp, bool gz, const char *pre, const char *ln1, const char *ln2, const char *ln3, const char *suf)
 {
-       register unsigned long i,j,n;
+       register long i,j,n;
        wchar_t *g;
        int *s;
        for(n=i=0;i<gr->GetPrmNum();i++)        if(gr->GetPrm(i).type==4)       n++;
@@ -207,7 +207,7 @@ void mgl_write_eps(HMGL gr, const char *fname,const char *descr)
        m_s=false,m_a=false,m_o=false,m_T=false,
        m_V=false,m_S=false,m_D=false,m_Y=false,m_l=false,
        m_L=false,m_r=false,m_R=false,m_X=false,m_P=false;
-       register unsigned long i;
+       register long i;
        // add mark definition if present
        for(i=0;i<gr->GetPrmNum();i++)
        {
@@ -383,7 +383,7 @@ void mgl_write_svg(HMGL gr, const char *fname,const char *descr)
        mgl_printf(fp, gz, "<g fill=\"none\" stroke=\"none\" stroke-width=\"0.5\">\n");
        // write primitives
        float wp=-1;
-       register unsigned long i;
+       register long i;
        int st=0;
        mglColor cp;
 
@@ -770,7 +770,7 @@ void mgl_write_tex(HMGL gr, const char *fname,const char *descr)
 
        // write primitives
        float wp=-1;
-       register unsigned long i;
+       register long i;
        int st=0;
        mglColor cp;
        char cname[16];
@@ -905,4 +905,4 @@ void mgl_write_tex(HMGL gr, const char *fname,const char *descr)
        for(i=0;i<gr->GetPrmNum();i++)
        {       mglPrim &q=gr->GetPrm(i);       if(q.type==-1)  q.type = 1;     }
        fclose(fp);
-}
\ No newline at end of file
+}
index f9268146a322722270736d22e942b2381e0ee9cd..dbf38aa9095fbe97094614e8447ec36f42a3aa11 100644 (file)
@@ -48,6 +48,30 @@ void mglTexture::GetRGBA(unsigned char *f)
        }\r
 }\r
 //-----------------------------------------------------------------------------\r
+// I'm not sure that it is good idea -- a lot of memory used, but gain only for small files
+/*void mgl_rearrange_pnt(HMGL gr, std::vector<size_t> &on, std::vector<size_t> &no, bool coor=false)
+{
+       // on -- for old-to-new index;  no -- for new-to-old index
+       on.clear();     on.resize(gr->GetPntNum(),-1);  no.clear();
+       register size_t i,j;
+       for(i=0;i<gr->GetPntNum();i++)  // collect data for groups
+       // it is rather expensive (extra 4b per primitive) but need for export to 3D
+       {
+               const mglPnt &q = gr->GetPnt(i);
+               if(coor)        for(j=0;j<no.size();j++)
+               {
+                       const mglPnt &p = gr->GetPnt(no[j]);
+                       if(p.x==q.x && p.y==q.y && p.z==q.z)    on[i]=j;
+               }
+               else    for(j=0;j<no.size();j++)
+               {
+                       const mglPnt &p = gr->GetPnt(no[j]);
+                       if(p.x==q.x && p.y==q.y && p.z==q.z && p.c==q.c && p.t==q.t)    on[i]=j;
+               }
+               if(on[j]<0)             {       no.push_back(i);        on[j]=no.size()-1;      }
+       }
+}*/
+//-----------------------------------------------------------------------------\r
 void mgl_obj_prim(const mglPrim &q, const mglPnt &p, FILE *fp, float size)\r
 {\r
        char type = q.n4;       float ss=size*0.35;\r
@@ -190,16 +214,16 @@ void mgl_obj_prim(const mglPrim &q, const mglPnt &p, FILE *fp, float size)
                                fprintf(fp,"l -2/%ld -1/%ld\n", i,i);\r
                                fprintf(fp,"l -1/%ld -3/%ld\n", i,i);   break;\r
                        case 'O':\r
-                               for(long j=0;j<=20;j++)\r
+                               for(j=0;j<=20;j++)\r
                                        fprintf(fp,"v %g %g %g\n",p.x+ss*cos(j*M_PI/10),p.y+ss*sin(j*M_PI/10),p.z);\r
-                               for(long j=0;j<20;j++)\r
+                               for(j=0;j<20;j++)\r
                                        fprintf(fp,"f %ld/%ld %ld/%ld %ld/%ld\n", j-21,i, j-20,i, i,i);\r
                                break;\r
                        case 'C':       fprintf(fp,"p %ld\n", i);\r
                        case 'o':\r
-                               for(long j=0;j<=20;j++)\r
+                               for(j=0;j<=20;j++)\r
                                        fprintf(fp,"v %g %g %g\n",p.x+ss*cos(j*M_PI/10),p.y+ss*sin(j*M_PI/10),p.z);\r
-                               for(long j=0;j<20;j++)\r
+                               for(j=0;j<20;j++)\r
                                        fprintf(fp,"l %ld/%ld %ld/%ld\n", j-21,i, j-20,i);\r
                                break;\r
                        }\r
@@ -218,13 +242,13 @@ void mgl_obj_prim(const mglPrim &q, const mglPnt &p, FILE *fp, float size)
 void mgl_write_obj(HMGL gr, const char *fname,const char *descr, int use_png)\r
 {\r
        if(gr->GetPrmNum()<=0)  return; // nothing to do\r
-       register unsigned long i,j;\r
+       register size_t i,j;\r
        long m1=0,m2=0,m;\r
        for(i=0;i<gr->Grp.size();i++)   // prepare array of indirect indexing\r
        {       m = gr->Grp[i].Id;      if(m<m1) m1=m;  if(m>m2) m2=m;  }\r
        long *ng = new long[m2-m1+1];\r
        for(i=0;i<gr->Grp.size();i++)   ng[gr->Grp[i].Id-m1] = i;\r
-       for(i=0;i<gr->GetPrmNum();i++)  // collect data for groups\r
+       for(i=0;i<size_t(gr->GetPrmNum());i++)  // collect data for groups\r
        // it is rather expensive (extra 4b per primitive) but need for export to 3D\r
        {\r
                m = gr->GetPrm(i).id-m1;\r
@@ -237,7 +261,7 @@ void mgl_write_obj(HMGL gr, const char *fname,const char *descr, int use_png)
        FILE *fp=fopen(fname,"wt");\r
        // vertices definition\r
        fprintf(fp,"# Created by MathGL library\n# Title: %s\n",descr ? descr : fname);\r
-       for(i=0;i<gr->GetPntNum();i++)\r
+       for(i=0;i<size_t(gr->GetPrmNum());i++)\r
        {\r
                mglPnt pp = gr->GetPnt(i);\r
                fprintf(fp,"v %g %g %g\n",pp.x,pp.y,pp.z);\r
@@ -248,13 +272,12 @@ void mgl_write_obj(HMGL gr, const char *fname,const char *descr, int use_png)
        // primitive definition in groups\r
        tname[len-4]=0; fprintf(fp,"# Primitives Definitions\nusemtl %s.mtl\n",tname);\r
        std::vector<long> p;\r
-       mglPrim q;\r
        for(i=0;i<gr->Grp.size();i++)\r
        {\r
                fprintf(fp,"g %s\n",gr->Grp[i].Lbl.c_str());    p = gr->Grp[i].p;\r
                for(j=0;j<p.size();j++)\r
                {\r
-                       const mglPrim q=gr->GetPrm(p[j]);\r
+                       const mglPrim &q=gr->GetPrm(p[j]);\r
                        mgl_obj_prim(q, gr->GetPnt(q.n1), fp, q.s*gr->FontFactor());\r
                }\r
                gr->Grp[i].p.clear();   // we don't need indexes anymore\r
@@ -454,8 +477,8 @@ bool mglCanvas::ExportMGLD(const char *fname, const char *descr)
        if(Pnt.size()<1 || Prm.size()<1)        return true;\r
        FILE *fp=fopen(fname,"wt");\r
        if(!fp) return true;\r
-       fprintf(fp,"MGLD %ld %ld\n# %s\n", Pnt.size(), Prm.size(), descr ? descr : fname);\r
-       register long i;\r
+       fprintf(fp,"MGLD %lu %lu\n# %s\n", Pnt.size(), Prm.size(), descr ? descr : fname);\r
+       register size_t i;\r
        fprintf(fp,"# Vertexes: x y z c t u v w r g b a\n");\r
        for(i=0;i<Pnt.size();i++)\r
        {\r
@@ -484,23 +507,24 @@ bool mglCanvas::ImportMGLD(const char *fname, bool add)
        FILE *fp=fopen(fname,"rt");\r
        if(!fp) return true;\r
        char *buf=new char[512];\r
-       fgets(buf,512,fp);\r
+       if(!fgets(buf,512,fp))  *buf=0;\r
        if(strncmp(buf,"MGLD",4))       {       delete []buf;   fclose(fp);     return true;    }\r
-       register long i,n,m;\r
-       sscanf(buf+5,"%ld%ld",&n,&m);\r
+       register size_t i;
+       size_t n,m;\r
+       sscanf(buf+5,"%lu%lu",&n,&m);\r
        if(n<=0 || m<=0)        {       delete []buf;   fclose(fp);     return true;    }\r
        if(!add)        {       Pnt.clear();    Prm.clear();    }\r
        Pnt.reserve(n); Prm.reserve(m);\r
        mglPnt p;       mglPrim q;\r
        for(i=0;i<n;)\r
        {\r
-               do {    fgets(buf,512,fp);      mgl_strtrim(buf);       } while(*buf=='#');\r
+               do {    if(!fgets(buf,512,fp))  *buf=0; mgl_strtrim(buf);       } while(*buf=='#');\r
                sscanf(buf,"%g%g%g%g%g%g%g%g%g%g%g%g", &p.x, &p.y, &p.z, &p.c, &p.t, &p.u, &p.v, &p.w, &p.r, &p.g, &p.b, &p.a);\r
                Pnt.push_back(p);       i++;\r
        }\r
        for(i=0;i<m;)\r
        {\r
-               do {    fgets(buf,512,fp);      mgl_strtrim(buf);       } while(*buf=='#');\r
+               do {    if(!fgets(buf,512,fp))  *buf=0; mgl_strtrim(buf);       } while(*buf=='#');\r
                sscanf(buf,"%d%ld%ld%ld%ld%d%g%g%g", &q.type, &q.n1, &q.n2, &q.n3, &q.n4, &q.id, &q.s, &q.w, &q.p);\r
                Prm.push_back(q);       i++;\r
        }\r
@@ -878,12 +902,3 @@ void mgl_write_x3d_(uintptr_t *gr, const char *fname,const char *descr,int l,int
 char *d=new char[n+1]; memcpy(d,descr,n);      d[n]=0;\r
 mgl_write_x3d(_GR_,s,d);       delete []s;             delete []d;     }\r
 //-----------------------------------------------------------------------------\r
-void mgl_write_wrl(HMGL gr, const char *fname,const char *descr)\r
-{\r
-       // TODO: Add export to X3D\r
-}\r
-void mgl_write_wrl_(uintptr_t *gr, const char *fname,const char *descr,int l,int n)\r
-{      char *s=new char[l+1];  memcpy(s,fname,l);      s[l]=0;\r
-char *d=new char[n+1]; memcpy(d,descr,n);      d[n]=0;\r
-mgl_write_wrl(_GR_,s,d);       delete []s;             delete []d;     }\r
-//-----------------------------------------------------------------------------\r
index cac407b89e23201f0198adb4e5e32b788bdfc6c6..9626b5acee68eba5a23a181c77e25e7e1fb3cda7 100644 (file)
@@ -111,7 +111,7 @@ float mglFont::Puts(const wchar_t *str,int font,int align, float col)
 {\r
        if(numg==0)     return 0;\r
        float ww=0,w=0,h = (align&4) ? 500./fact[0] : 0;\r
-       unsigned size = wcslen(str)+1,i,num=0;\r
+       size_t size = wcslen(str)+1,i,num=0;\r
        if(parse)\r
        {\r
                unsigned *wcs = new unsigned[size], *buf=wcs;\r
@@ -132,16 +132,16 @@ float mglFont::Puts(const wchar_t *str,int font,int align, float col)
        else\r
        {\r
                int s = (font/MGL_FONT_BOLD)&3;\r
-               long i,j;\r
+               long j;\r
                h *= fact[0]/fact[s];\r
-               for(i=0;i<int(size);i++)                // find width\r
+               for(i=0;i<size;i++)             // find width\r
                {\r
                        j = str[i]!=' ' ? Internal(str[i]) : Internal('!');\r
                        if(j==-1)       continue;\r
                        w+= width[s][j]/fact[s];\r
                }\r
                ww = w;         w *= -(align&3)/2.f;\r
-               if(gr)  for(i=0;i<int(size);i++)                // draw it\r
+               if(gr)  for(i=0;i<size;i++)             // draw it\r
                {\r
                        if(str[i]!=' ')\r
                        {\r
@@ -177,9 +177,9 @@ float mglFont::Width(const wchar_t *str,int font)
        }\r
        else\r
        {\r
-               long i,j;\r
+               long j;\r
                int s = (font/MGL_FONT_BOLD)&3;\r
-               for(i=0;i<int(size);i++)\r
+               for(i=0;i<size;i++)\r
                {\r
                        j = str[i]!=' ' ? Internal(str[i]) : Internal('!');\r
                        if(j==-1)       continue;\r
index 52c1957e4024c3a138a846902491f7d3ffe3a73f..851e14b72f6e69a0a126c963a70dc2408c7b75cd 100644 (file)
@@ -242,7 +242,6 @@ void mglCanvasGL::quad_draw(long k1, long k2, long k3, long k4, mglDrawReg *)
 void mglCanvasGL::line_draw(long k1, long k2, mglDrawReg *)\r
 {\r
        if(k1<0 || k2<0 || PDef==0)     return;\r
-       mglPnt p1=Pnt[k1], p2=Pnt[k2];\r
 /*     unsigned long pdef = PDef*0x10001;\r
        pdef = pdef << (int(100*pPos+0.5)%16);\r
        set_pen(pdef&0xffff,PenWidth);*/\r
index 6bf7d21b8d8e6d45ae2e5e65d6a071d03ecd5270..9eb01bc8f66d6f57b86a438b82b362411a93c695 100644 (file)
@@ -33,7 +33,7 @@ wchar_t *wcstokw32(wchar_t *wcs, const wchar_t *delim)        {       return wcstok(wcs,delim
 #endif
 void (*mgl_ask_func)(const wchar_t *, wchar_t *)=0;
 void mgl_ask_gets(const wchar_t *quest, wchar_t *res)
-{      printf("%ls\n",quest);  fgetws(res,1024,stdin); }
+{      printf("%ls\n",quest);  if(!fgetws(res,1024,stdin))     *res=0; }
 //-----------------------------------------------------------------------------
 mglFunc::mglFunc(long p, const wchar_t *f, mglFunc *prev)
 {
index f5dc55ed18b79dffcec332df0692b50923f29a7f..5ad1a6b53206653adaf3227eb6fcc3d16625211c 100644 (file)
@@ -156,7 +156,6 @@ long mglCanvas::ProjScale(int nf, long id)
 //-----------------------------------------------------------------------------\r
 void mglCanvas::LightScale()\r
 {\r
-       register float xx,yy,zz;\r
        register long i;\r
        for(i=0;i<10;i++)\r
        {\r
@@ -411,8 +410,8 @@ void mglCanvas::Combine(const mglCanvas *gr)
 }\r
 //-----------------------------------------------------------------------------\r
 #ifndef HAVE_MPI\r
-void mglCanvas::MPI_Send(int id)       {}      // TODO: add later\r
-void mglCanvas::MPI_Recv(int id)       {}      // TODO: add later\r
+void mglCanvas::MPI_Send(int /*id*/)   {}      // TODO: add later\r
+void mglCanvas::MPI_Recv(int /*id*/)   {}      // TODO: add later\r
 #endif\r
 //-----------------------------------------------------------------------------\r
 void mglCanvas::pnt_plot(long x,long y,float z,const unsigned char ci[4])\r
@@ -609,8 +608,8 @@ void mglCanvas::quad_draw(long k1, long k2, long k3, long k4, mglDrawReg *d)
        mglPoint n2 = mglPoint(p2.x-p4.x,p2.y-p4.y,p2.z-p4.z)^mglPoint(p3.x-p4.x,p3.y-p4.y,p3.z-p4.z);\r
        mglPoint nr = (n1+n2)*0.5;\r
 \r
-       register long i,j,g;\r
-       register float u,v,s,xx,yy,q;\r
+       register long i,j;\r
+       register float u,v,s,xx,yy,qu,qv;\r
        float x0 = p1.x, y0 = p1.y;\r
        for(i=x1;i<=x2;i++)     for(j=y1;j<=y2;j++)\r
        {\r
@@ -618,19 +617,25 @@ void mglCanvas::quad_draw(long k1, long k2, long k3, long k4, mglDrawReg *d)
                s = dsx*xx + dsy*yy + (dd+d3.y*xx-d3.x*yy)*(dd+d3.y*xx-d3.x*yy);\r
                if(s<0) continue;       // no solution\r
                s = sqrt(s);\r
-               q = d3.x*yy - d3.y*xx + dd + s;\r
-               u = q ? 2.f*(d2.y*xx - d2.x*yy)/q : -1.f;\r
-               q = d3.y*xx - d3.x*yy + dd + s;\r
-               v = q ? 2.f*(d1.x*yy - d1.y*xx)/q : -1.f;\r
-               g = u<0.f || u>1.f || v<0.f || v>1.f;\r
-               if(g)   // first root bad\r
+               qu = d3.x*yy - d3.y*xx + dd + s;\r
+               qv = d3.y*xx - d3.x*yy + dd + s;\r
+               u = v = -1.f;\r
+               if(qu && qv)\r
+               {\r
+                       u = 2.f*(d2.y*xx - d2.x*yy)/qu;\r
+                       v = 2.f*(d1.x*yy - d1.y*xx)/qv;\r
+               }\r
+               if(u*(1.f-u)<0.f || v*(1.f-v)<0.f)      // first root bad\r
                {\r
-                       q = d3.x*yy - d3.y*xx + dd - s;\r
-                       u = q ? 2.f*(d2.y*xx - d2.x*yy)/q : -1.f;\r
-                       q = d3.y*xx - d3.x*yy + dd - s;\r
-                       v = q ? 2.f*(d1.x*yy - d1.y*xx)/q : -1.f;\r
-                       g = u<0.f || u>1.f || v<0.f || v>1.f;\r
-                       if(g)   continue;       // second root bad\r
+                       qu = d3.x*yy - d3.y*xx + dd - s;\r
+                       qv = d3.y*xx - d3.x*yy + dd - s;\r
+                       u = v = -1.f;\r
+                       if(qu && qv)\r
+                       {\r
+                               u = 2.f*(d2.y*xx - d2.x*yy)/qu;\r
+                               v = 2.f*(d1.x*yy - d1.y*xx)/qv;\r
+                       }\r
+                       if(u*(1.f-u)<0.f || v*(1.f-v)<0.f)      continue;       // second root bad\r
                }\r
                p = p1+d1*u+d2*v+d3*(u*v);\r
                if(isnan(p.u) && !isnan(p.v))\r
index 3af4c9c81504599dc056ecc6a3b2b0875fd7d4e6..a22d8ed5869e224eb4f59415b3d4031fb9a79b3d 100644 (file)
@@ -1617,7 +1617,7 @@ void mgl_tape_xyz(HMGL gr, HCDT x, HCDT y, HCDT z, const char *pen, const char *
        float ll, rr = gr->SaveState(opt);\r
        if(rr==0 || isnan(rr))  rr = mgl_norm(gr->Max-gr->Min)*gr->BarWidth/25;\r
        m = x->GetNy() > y->GetNy() ? x->GetNy() : y->GetNy();  m = z->GetNy() > m ? z->GetNy() : m;\r
-       char mk=gr->SetPenPal(pen,&pal);        gr->Reserve(4*n*m);\r
+       gr->SetPenPal(pen,&pal);        gr->Reserve(4*n*m);\r
        mglPoint p1,p2,q1,q2,l,nn,qn=mglPoint(NAN,NAN);\r
        long n1=-1,n2=-1,n3=-1,n4=-1, m1=-1,m2=-1,m3=-1,m4=-1;\r
        bool sh = pen && strchr(pen,'!'), xo = pen && strchr(pen,'x'), zo = pen && strchr(pen,'z'), wire = pen && strchr(pen,'#');\r
index 6eb8878483a58df80d23c2d0bc33faeaa912d0c9..cf082e82e9753e4e84f08625580c93865df7d2e5 100644 (file)
@@ -686,7 +686,7 @@ void mgl_puts_fit_(uintptr_t* gr, mreal *x, mreal *y, mreal *z, const char *pref
 //-----------------------------------------------------------------------------\r
 void mgl_labelw_xyz(HMGL gr, HCDT x, HCDT y, HCDT z, const wchar_t *text, const char *fnt, const char *opt)\r
 {\r
-       long j,m,mx,my,mz,mr,n=y->GetNx();\r
+       long j,m,mx,my,mz,n=y->GetNx();\r
        if(x->GetNx()!=n || z->GetNx()!=n)\r
        {       gr->SetWarn(mglWarnDim,"Label");        return; }\r
        if(n<2) {       gr->SetWarn(mglWarnLow,"Label");        return; }\r
index 8260c911a5b9dd3a44f23bd18382650b027e6c21..70c387f52a12e424fcd848a37dba62e0bb2236d5 100644 (file)
@@ -111,6 +111,7 @@ void mgl_vect_xy(HMGL gr, HCDT x, HCDT y, HCDT ax, HCDT ay, const char *sch, con
        bool both = x->GetNx()==n && y->GetNx()==n && x->GetNy()==m && y->GetNy()==m;\r
        if(!(both || (x->GetNx()==n && y->GetNx()==m))) {       gr->SetWarn(mglWarnDim,"Vect"); return; }\r
 \r
+       gr->SaveState(opt);\r
        static int cgid=1;      gr->StartGroup("Vect",cgid++);\r
        bool dot = sch && strchr(sch,'.');\r
        bool fix = sch && strchr(sch,'f');\r
@@ -197,6 +198,8 @@ void mgl_vect_xyz(HMGL gr, HCDT x, HCDT y, HCDT z, HCDT ax, HCDT ay, HCDT az, co
        bool both = x->GetNx()*x->GetNy()*x->GetNz()==n*m*l && y->GetNx()*y->GetNy()*y->GetNz()==n*m*l && z->GetNx()*z->GetNy()*z->GetNz()==n*m*l;\r
        if(!(both || (x->GetNx()==n && y->GetNx()==m && z->GetNx()==l)))\r
        {       gr->SetWarn(mglWarnDim,"Vect"); return; }\r
+
+       gr->SaveState(opt);\r
        static int cgid=1;      gr->StartGroup("Vect3",cgid++);\r
        bool dot = sch && strchr(sch,'.');\r
        bool fix = sch && strchr(sch,'f');\r
index 680c09ce21b771859de4d178745c1d2cfb64893d..0d43264a6d934596dd35e0f400da03ea891d1581 100644 (file)
--- a/todo.txt
+++ b/todo.txt
@@ -66,7 +66,7 @@ Remove other setting if data name is changed.
 10. Add primitives by mouse at beginning of script + change its size/position by mouse + "attraction" points
 11. Drag&drop plot/group between inplots
 12. Create default plot dependently of selected row/column/range in data table
-13. Show plot at creation stage (if option is enabled -- can be long process!!!)
+13. Show plot at creation stage (if option is enabled -- can be size_t process!!!)
 14. Rotate/perspective/lighting/... of primitive list (without script re-execution)
 
 15. QTreeWidgetItem -- ICON (if,for,once,subplot,...); Cmd text; LINE - POS in group/line. After editing/changing --> put text to editor.
index 2dd43e1a1a3a7bab29047b9124183a1e458eb846..b71c10b81fac9e637f5443878ee7f425b8c6505d 100644 (file)
@@ -96,18 +96,18 @@ void Fl_MathGL::set_graph(mglCanvas *GR)
 void Fl_MathGL::draw()
 {
        const unsigned char *g = gr ? gr->GetBits() : 0;
-       int i, h=gr->GetHeight(), w=gr->GetWidth();
-       if(g)   fl_draw_image(g, x(), y(), wh, 3);
+       int i, hh=gr->GetHeight(), ww=gr->GetWidth();
+       if(g)   fl_draw_image(g, x(), y(), ww, hh, 3);
        if(flag&4)
        {
                char str[5]="0.0";
                fl_color(192,192,192);
                for(i=1;i<10;i++)
                {
-                       str[2] = '0'+10-i;      fl_draw(str,30,30+i*h/10);
-                       fl_line(30,30+i*h/10,30+w,30+i*h/10);
-                       str[2] = '0'+i; fl_draw(str,30+i*w/10,30+h);
-                       fl_line(30+i*w/10,30,30+i*w/10,30+h);
+                       str[2] = '0'+10-i;      fl_draw(str,30,30+i*hh/10);
+                       fl_line(30,30+i*hh/10,30+ww,30+i*hh/10);
+                       str[2] = '0'+i; fl_draw(str,30+i*ww/10,30+hh);
+                       fl_line(30+i*ww/10,30,30+i*ww/10,30+hh);
                }
 //             if(*MouseBuf)   fl_draw(MouseBuf,30,50);
        }
@@ -506,7 +506,7 @@ Fl_Menu_Item mgl_menuitems[] = {
        { 0,0,0,0,0,0,0,0,0 }
 };
 //-----------------------------------------------------------------------------
-Fl_MGLView::Fl_MGLView(int x, int y, int w, int h, char *label) : Fl_Window(x,y,w,h,label)
+Fl_MGLView::Fl_MGLView(int xx, int yy, int ww, int hh, char *lbl) : Fl_Window(xx,yy,ww,hh,lbl)
 {
        alpha = light = sshow = 0;      menu = 0;
        next = prev = reload = NULL;    delay = NULL;
index 35d405a0b5a1fa576cc6230237266fe6f08b3026..803f100d709ad3bafe99cd259c0fb4d67978239c 100644 (file)
@@ -429,18 +429,6 @@ void QMathGL::exportSTL(QString fname)
        }
 }
 //-----------------------------------------------------------------------------
-void QMathGL::exportWRL(QString fname)
-{
-       if(fname.isEmpty())     fname = gr->PlotId.c_str();
-       if(fname.isEmpty())     QMessageBox::critical(this, appName, tr("No filename."),QMessageBox::Ok,0,0);
-       else
-       {
-               setlocale(LC_ALL, "C");
-               mgl_write_wrl(gr,setExtension(fname,"svg").toAscii(), appName.toAscii());
-               setlocale(LC_ALL, "");
-       }
-}
-//-----------------------------------------------------------------------------
 void QMathGL::exportX3D(QString fname)
 {
        if(fname.isEmpty())     fname = gr->PlotId.c_str();
index 6efc66f438b027e99f2ce7a4f80e50a5c3c8de16..3e834096d127e2ead153079d7f2848eeae24d05c 100644 (file)
@@ -196,7 +196,8 @@ void *mgl_draw_calc(void *p)
 {\r
 #ifdef HAVE_PTHREAD\r
        ((mglDraw *)p)->Calc();\r
-#endif\r
+#endif
+       return 0;\r
 }\r
 //-----------------------------------------------------------------------------\r
 void mgl_draw_thr(void *p)\r