CMAKE_DEPENDENT_OPTION(enable-qt4 "Enable Qt4 widget" OFF "NOT enable-all-widgets" ON)
CMAKE_DEPENDENT_OPTION(enable-qt5 "Enable Qt5 widget" OFF "NOT enable-all-widgets" ON)
CMAKE_DEPENDENT_OPTION(enable-qt5asqt "Set Qt5 as default libmgl-qt" ON "enable-qt5" OFF)
+
+if(enable-qt4 OR enable-qt5)
+set(enable-qt ON)
+endif(enable-qt4 OR enable-qt5)
+
+CMAKE_DEPENDENT_OPTION(enable-json-sample "Enable JSON sample" ON "enable-qt" OFF)
MGL_DEPENDENT_OPTION(enable-python "Enable python interface" OFF "NOT enable-lgpl" ON "NOT enable-all-swig" ON)
MGL_DEPENDENT_OPTION(enable-lua "Enable Lua (v.5.1) interface" OFF "NOT enable-lgpl" ON "NOT enable-all-swig" ON)
MGL_DEPENDENT_OPTION(enable-octave "Enable octave interface" OFF "NOT enable-lgpl" ON "NOT enable-all-swig" ON)
set(MGL_INCLUDE_PATH "${CMAKE_INSTALL_PREFIX}/include/mgl2")
set(MGL_CGI_PATH "${CMAKE_INSTALL_PREFIX}/share/mathgl" CACHE STRING "Set CGI install directory")
-if(enable-qt4 OR enable-qt5)
-set(enable-qt ON)
-endif(enable-qt4 OR enable-qt5)
-
if(NOT WIN32)
# set(MGL_CGI_PATH "${CMAKE_INSTALL_PREFIX}/share/mathgl")
set(MGL_DATA_PATH "${CMAKE_INSTALL_PREFIX}/share/mathgl")
+2.2.2.1 Released 19 March 2014
+
+* Compatibility changes for MS VisualStudio 2010 and early.
+* Function SetRange(v1,v2) ignore NAN values now.
+* Add enable-json-sample for building json-samples on demand only.
+* Update docs.
+
+
2.2.2 Released 10 March 2014
* Add mgl_region_3d() to draw region (or ribbon) between 2 curves. Correspondingly extend mglGraph::Region() function and MGL command 'region'.
+++ /dev/null
-find . -name '.svn' -print0 | xargs -0 rm -rf
-find . -name '*~' -print0 | xargs -0 rm -f
-rm ./clean-svn
set(MGL_HAVE_QT4 1)
+if(enable-json-sample)
FIND_PACKAGE(Qt4 4.8 REQUIRED QtCore QtGui QtNetwork QtWebKit)
+else(enable-json-sample)
+FIND_PACKAGE(Qt4 4.8 REQUIRED QtCore QtGui)
+endif(enable-json-sample)
if(NOT QT4_FOUND)
message(SEND_ERROR "Couldn't find Qt4 library.")
endif(NOT QT4_FOUND)
find_package(Qt5Core REQUIRED)
find_package(Qt5Widgets REQUIRED)
find_package(Qt5Gui REQUIRED)
-find_package(Qt5Network REQUIRED)
-find_package(Qt5WebKit REQUIRED)
find_package(Qt5PrintSupport REQUIRED)
if(NOT Qt5Core_FOUND)
message(SEND_ERROR "Couldn't find Qt5 Core library.")
if(NOT Qt5Gui_FOUND)
message(SEND_ERROR "Couldn't find Qt5 Gui library.")
endif(NOT Qt5Gui_FOUND)
+if(NOT Qt5PrintSupport_FOUND)
+ message(SEND_ERROR "Couldn't find Qt5 PrintSupport library.")
+endif(NOT Qt5PrintSupport_FOUND)
+if(enable-json-sample)
+find_package(Qt5Network REQUIRED)
+find_package(Qt5WebKit REQUIRED)
if(NOT Qt5Network_FOUND)
message(SEND_ERROR "Couldn't find Qt5 Network library.")
endif(NOT Qt5Network_FOUND)
if(NOT Qt5WebKit_FOUND)
message(SEND_ERROR "Couldn't find Qt5 WebKit library.")
endif(NOT Qt5WebKit_FOUND)
-if(NOT Qt5PrintSupport_FOUND)
- message(SEND_ERROR "Couldn't find Qt5 PrintSupport library.")
-endif(NOT Qt5PrintSupport_FOUND)
+endif(enable-json-sample)
+
set(CMAKE_INCLUDE_CURRENT_DIR ON)
#include <mgl2/font.h>\r
void test(mglGraph *gr)\r
{\r
+ union {unsigned long b;double d;float f;} t; t.b=0;\r
+ t.d = NAN; printf("NANd: %g --> %lx\t",t.d,t.b); t.b=0;\r
+ t.f = NAN; printf("NANf: %g --> %lx\n",t.f,t.b); t.b=0;\r
+ \r
+ t.d = INFINITY; printf("INFd: %g --> %lx\t",t.d,t.b); t.b=0;\r
+ t.f = INFINITY; printf("INFf: %g --> %lx\n",t.f,t.b); t.b=0;\r
+\r
+const unsigned long mgl_nan[2] = {0x7fffffffffffffff, 0x7fffffff};\r
+#define NANd (*(double*)mgl_nan)\r
+#define NANf (*(float*)(mgl_nan+1))\r
+ t.d = NANd; printf("NANd: %g --> %lx\t",t.d,t.b); t.b=0;\r
+ t.f = NANf; printf("NANf: %g --> %lx\n",t.f,t.b); t.b=0;\r
+\r
+ \r
+const unsigned long mgl_inf[2] = {0x7ff0000000000000, 0x7f800000};\r
+#define INFd (*(double*)mgl_inf)\r
+#define INFf (*(float*)(mgl_inf+1))\r
+ t.d = INFd; printf("INFd: %g --> %lx\t",t.d,t.b); t.b=0;\r
+ t.f = INFf; printf("INFf: %g --> %lx\n",t.f,t.b); t.b=0;\r
+\r
+ return;\r
+\r
mglData y(50);\r
y.Modify("sin(10*x) + 10");\r
gr->SetRange('y', y);\r
{"vect", smgl_vect, mmgl_vect},
{"vecta", smgl_vecta, mmgl_vecta},
{"venn", smgl_venn, mmgl_venn},
-{"", NULL}};
+{"", NULL, NULL}};
//-----------------------------------------------------------------------------
~testFrame() {}\r
private:\r
enum { idMenuQuit = 1000 };\r
- void OnClose(wxCloseEvent& event) { Destroy(); }\r
- void OnQuit(wxCommandEvent& event) { Destroy(); }\r
+ void OnClose(wxCloseEvent& ) { Destroy(); }\r
+ void OnQuit(wxCommandEvent& ) { Destroy(); }\r
\r
wxScrolledWindow *scroll;\r
wxMathGL *mgl;\r
DECLARE_EVENT_TABLE()\r
};\r
//-----------------------------------------------------------------------------\r
-IMPLEMENT_APP(testApp);\r
+IMPLEMENT_APP(testApp)\r
//-----------------------------------------------------------------------------\r
bool testApp::OnInit()\r
{\r
//-----------------------------------------------------------------------------
/// Explicit scheme for 1 step of axial diffraction
void MGL_EXPORT mgl_difr_axial(dual *a,int n,int step,dual q,int Border,dual *tmp,int kk, double di);
+void MGL_EXPORT mgl_difr_axial_old(dual *a,int n,int step,dual q,int Border,dual *tmp1,dual *tmp2,int kk, double di); // restore for backward compatibility
/// Explicit scheme for 1 step of plane diffraction
void MGL_EXPORT mgl_difr_grid(dual *a,int n,int step,dual q,int Border,dual *tmp,int kk);
+void MGL_EXPORT mgl_difr_grid_old(dual *a,int n,int step,dual q,int Border,dual *tmp1,dual *tmp2,int kk); // restore for backward compatibility
//-----------------------------------------------------------------------------
extern "C" {
#endif
#include <float.h>\r
#include <math.h>\r
\r
-const unsigned long mgl_nan[2] = {0xffffffff, 0x7fffffff};\r
-#define NANd (*(double*)mgl_nan)\r
-#define NANf (*(float*)&(mgl_nan[1]))\r
+#ifdef WIN32\r
+const unsigned long long mgl_nan[2] = {0x7fffffffffffffff, 0x7fffffff};\r
+const unsigned long long mgl_inf[2] = {0x7ff0000000000000, 0x7f800000};\r
+#else\r
+const unsigned long mgl_nan[2] = {0x7fffffffffffffff, 0x7fffffff};\r
+const unsigned long mgl_inf[2] = {0x7ff0000000000000, 0x7f800000};\r
+#endif\r
+\r
+#define NANd (*(double*)mgl_nan)\r
+#define NANf (*(float*)(mgl_nan+1))\r
+#define INFd (*(double*)mgl_inf)\r
+#define INFf (*(float*)(mgl_inf+1))\r
\r
#if !defined(NAN)\r
#if MGL_USE_DOUBLE\r
#define NAN NANd\r
#else\r
-#define NAN NANd\r
+#define NAN NANf\r
+#endif\r
+#endif\r
+\r
+#if !defined(INFINITY)\r
+#if MGL_USE_DOUBLE\r
+#define INFINITY INFd\r
+#else\r
+#define INFINITY INFf\r
#endif\r
#endif\r
\r
{ mgl_glut_prev_frame(gr); }\r
inline void Animation() ///< Run slideshow (animation) of frames\r
{ mgl_glut_animation(gr); }\r
- inline int Run() {}; ///< Run main loop for event handling (placed for similarity to mglWnd)\r
+ inline int Run() {return 0;}; ///< Run main loop for event handling (placed for similarity to mglWnd)\r
};\r
//-----------------------------------------------------------------------------\r
#endif\r
-if(enable-qt)
+if(enable-json-sample)
set(json_src Backend.cpp MainWindow.cpp)
set(json_moc_hdr Backend.hpp MainWindow.hpp)
target_link_libraries(MglForJsTestBench mgl-qt ${QT_LIBRARIES})
endif(enable-qt5)
-endif(enable-qt)
+endif(enable-json-sample)
}
//-----------------------------------------------------------------------------
void MGL_EXPORT mgl_difr_grid(dual *a,int n,int step,dual q,int Border,dual *tmp,int kk)
+{ mgl_difr_grid_old(a,n,step,q,Border,tmp,tmp+n,kk); }
+void MGL_EXPORT mgl_difr_grid_old(dual *a,int n,int step,dual q,int Border,dual *b, dual *d,int kk)
{
const dual adt = dual(0.,1.)*q;
- dual *b = tmp, *d = tmp+n;
if(step==1) memcpy(b,a,n*sizeof(dual));
else for(long i=0;i<n;i++) b[i] = a[i*step];
for(long k=kk;k>0;k--) // 3 iterations
}
//-----------------------------------------------------------------------------
void MGL_EXPORT mgl_difr_axial(dual *a,int n,int step,dual q,int Border,dual *tmp,int kk, double di)
+{ mgl_difr_axial_old(a,n,step,q,Border,tmp,tmp+n,kk,di); }
+void MGL_EXPORT mgl_difr_axial_old(dual *a,int n,int step,dual q,int Border,dual *b,dual *d,int kk, double di)
{
int ii = di<0 ? -int(floor(di)) : 0;
register mreal ff= di==floor(di) ? 4. : 2.;
const dual adt = dual(0.,1.)*q;
- dual *b = tmp, *d = tmp+n;
if(step==1) memcpy(b,a,n*sizeof(dual));
else for(long i=0;i<n;i++) b[i] = a[i*step];
for(long k=kk;k>0;k--) // kk iterations
void mglBase::CRange(mreal v1,mreal v2,bool add)\r
{\r
if(v1==v2 && !add) return;\r
- if(!add) { Min.c = v1; Max.c = v2; }\r
+ if(!add)\r
+ {\r
+ if(v1==v1) Min.c = v1; \r
+ if(v2==v2) Max.c = v2; \r
+ }\r
else if(Min.c<Max.c)\r
{\r
if(Min.c>v1) Min.c=v1;\r
void mglBase::XRange(mreal v1,mreal v2,bool add)\r
{\r
if(v1==v2 && !add) return;\r
- if(!add) { Min.x = v1; Max.x = v2; }\r
+ if(!add)\r
+ {\r
+ if(v1==v1) Min.x = v1; \r
+ if(v2==v2) Max.x = v2; \r
+ }\r
else if(Min.x<Max.x)\r
{\r
if(Min.x>v1) Min.x=v1;\r
void mglBase::YRange(mreal v1,mreal v2,bool add)\r
{\r
if(v1==v2 && !add) return;\r
- if(!add) { Min.y = v1; Max.y = v2; }\r
+ if(!add)\r
+ {\r
+ if(v1==v1) Min.y = v1; \r
+ if(v2==v2) Max.y = v2; \r
+ }\r
else if(Min.y<Max.y)\r
{\r
if(Min.y>v1) Min.y=v1;\r
void mglBase::ZRange(mreal v1,mreal v2,bool add)\r
{\r
if(v1==v2 && !add) return;\r
- if(!add) { Min.z = v1; Max.z = v2; }\r
+ if(!add)\r
+ {\r
+ if(v1==v1) Min.z = v1; \r
+ if(v2==v2) Max.z = v2; \r
+ }\r
else if(Min.z<Max.z)\r
{\r
if(Min.z>v1) Min.z=v1;\r
for(long i=0;i<nx*ny;i++) for(long j=0;j<nz/2;j++)\r
{\r
register long i0 = i+j*nx*ny, j0 = i+(nz-1-j)*nx*ny;\r
- register dual b = a[i0]; a[i0] = a[j0]; a[j0] = b;\r
+ dual b = a[i0]; a[i0] = a[j0]; a[j0] = b;\r
}\r
}\r
if(strchr(dir,'y') && ny>1)\r
for(long i=0;i<nx*nz;i++) for(long j=0;j<ny/2;j++)\r
{\r
register long j0 = (i%nx)+nx*(ny*(i/nx)+j), i0 = j0+(ny-1-2*j)*nx;\r
- register dual b = a[j0]; a[j0] = a[i0]; a[i0] = b;\r
+ dual b = a[j0]; a[j0] = a[i0]; a[i0] = b;\r
}\r
}\r
if(strchr(dir,'x') && nx>1)\r
for(long j=0;j<ny*nz;j++) for(long i=0;i<nx/2;i++)\r
{\r
register long i0 = nx-1-i+j*nx, j0 = i+j*nx;\r
- register dual b = a[j0]; a[j0] = a[i0]; a[i0] = b;\r
+ dual b = a[j0]; a[j0] = a[i0]; a[i0] = b;\r
}\r
}\r
}\r
void MGL_EXPORT mgl_datac_diffr(HADT d, const char *how, mreal q)\r
{\r
if(!how || *how==0) return;\r
- long nx=d->nx,ny=d->ny,nz=d->nz,nn=nx*ny*nz,ll=strlen(how);\r
+ long nx=d->nx,ny=d->ny,nz=d->nz,ll=strlen(how);\r
long p[4]={0,0,(mglchr(how,'a')||mglchr(how,'r'))?1:0,0};\r
dual qq=q;\r
for(long i=0;i<ll;i++) if(how[i]>='0' && how[i]<='9') p[3] = how[i]-'0';\r
mx = -n1; my = n2<0 ? -n2 : nx; mz = n2<0 ? nx : ny;\r
if(n2>0 && ny==1) mz = n2;\r
b = new dual[mx*my*mz];\r
- register dual v;\r
+ dual v;\r
if(n2<0)\r
#pragma omp parallel for collapse(2)\r
for(long j=0;j<nx;j++) for(long i=0;i<mx*my;i++)\r
// MUST BE LAST ELLIPTIC FUNCTION\r
// not-ready\r
EQ_EN,\r
-EQ_CL, // Clausen function\r
+EQ_CL // Clausen function\r
};\r
//-----------------------------------------------------------------------------\r
#ifndef M_PI\r
else res = 1; return res;
}
//-----------------------------------------------------------------------------
-int MGL_NO_EXPORT mgls_drop(mglGraph *gr, long n, mglArg *a, const char *k, const char *opt)
+int MGL_NO_EXPORT mgls_drop(mglGraph *gr, long , mglArg *a, const char *k, const char *opt)
{
int res=0; gr->Self()->SaveState(opt);
if(!strcmp(k,"nnnnn"))
return res;
}
//-----------------------------------------------------------------------------
-int MGL_NO_EXPORT mgls_line(mglGraph *gr, long n, mglArg *a, const char *k, const char *opt)
+int MGL_NO_EXPORT mgls_line(mglGraph *gr, long , mglArg *a, const char *k, const char *opt)
{
int res=0; gr->Self()->SaveState(opt);
if(!strcmp(k,"nnnn"))
else res = 1; gr->Self()->LoadState(); return res;
}
//-----------------------------------------------------------------------------
-int MGL_NO_EXPORT mgls_errbox(mglGraph *gr, long n, mglArg *a, const char *k, const char *opt)
+int MGL_NO_EXPORT mgls_errbox(mglGraph *gr, long , mglArg *a, const char *k, const char *opt)
{
int res=0; gr->Self()->SaveState(opt);
if(!strcmp(k,"nnnn"))
else res = 1; return res;
}
//-----------------------------------------------------------------------------
-int MGL_NO_EXPORT mgls_read(mglGraph *gr, long n, mglArg *a, const char *k, const char *)
+int MGL_NO_EXPORT mgls_read(mglGraph *gr, long , mglArg *a, const char *k, const char *)
{
int res=0;
bool rr=true;
else res = 1; gr->Self()->LoadState(); return res;
}
//-----------------------------------------------------------------------------
-int MGL_NO_EXPORT mgls_import(mglGraph *gr, long , mglArg *a, const char *k, const char *)
+int MGL_NO_EXPORT mgls_import(mglGraph *, long , mglArg *a, const char *k, const char *)
{
int res=0;
if(!strcmp(k,"dss")) a[0].d->Import(a[1].s.c_str(), a[2].s.c_str());
else res = 1; return res;
}
//-----------------------------------------------------------------------------
-int MGL_NO_EXPORT mgls_ranges(mglGraph *gr, long n, mglArg *a, const char *k, const char *)
+int MGL_NO_EXPORT mgls_ranges(mglGraph *gr, long , mglArg *a, const char *k, const char *)
{
int res=0;
if(!strcmp(k,"nnnn")) gr->SetRanges(a[0].v,a[1].v, a[2].v,a[3].v);
// first string is comment (not used), second string have information\r
if(!gzgets(fp,str,256) || strncmp(str,"# font",6) || !gzgets(fp,str,256))\r
{ gzclose(fp); return false; }\r
- retVal = sscanf(str, "%d%f%d", &n, ff, &s);\r
+ retVal = sscanf(str, "%d%f%u", &n, ff, &s);\r
//Check sscanf read all data (3 items)\r
if(retVal != 3) { gzclose(fp); return false; }\r
\r
for(size_t i=0;i<numg;i++)\r
{\r
gzgets(fp,str,256);\r
- sscanf(str,"%u%d%d%u%d%u", &tmpi, &tmpw, &tmpnl, &tmppl, &tmpnt, &tmppt);\r
+ sscanf(str,"%d%d%d%u%d%u", &tmpi, &tmpw, &tmpnl, &tmppl, &tmpnt, &tmppt);\r
id[i] = tmpi; width[0][i] = tmpw;\r
numl[0][i] = tmpnl; ln[0][i] = tmppl;\r
numt[0][i] = tmpnt; tr[0][i] = tmppt;\r
if(!a || nx<1 || ny<1 || nz<1) return 0;
Treal _p[4][4];
register long i,j;
- register Treal fx=1, fy=1;
+ Treal fx=1, fy=1;
long kx=long(x),ky=long(y),kz=long(z);
Treal b=0;
x = x>0 ?(x<nx-1 ? x:nx-1):0;
if(!a || nx<1 || ny<1 || nz<1) return 0;
Treal _p[4][4];
register long i,j;
- register Treal fx=1, fy=1;
+ Treal fx=1, fy=1;
long kx=long(x),ky=long(y),kz=long(z);
Treal b=0;
x = x>0 ?(x<nx-1 ? x:nx-1):0;
nump = (long) pts.size();
return(nump);
-};
+}
/*
write out a set of points to disk
out.close();
return;
-};
+}
out.close();
return;
-};
+}
@anchor{yrange}
@anchor{zrange}
@anchor{crange}
-@deftypefn {MGL command} {} xrange @code{v1 v2}
-@deftypefnx {MGL command} {} yrange @code{v1 v2}
-@deftypefnx {MGL command} {} zrange @code{v1 v2}
-@deftypefnx {MGL command} {} crange @code{v1 v2}
+@deftypefn {MGL command} {} xrange @code{v1 v2} [@code{add=off}]
+@deftypefnx {MGL command} {} yrange @code{v1 v2} [@code{add=off}]
+@deftypefnx {MGL command} {} zrange @code{v1 v2} [@code{add=off}]
+@deftypefnx {MGL command} {} crange @code{v1 v2} [@code{add=off}]
@ifclear UDAV
@deftypefnx {Method on @code{mglGraph}} @code{void} SetRange (@code{char} dir, @code{mreal} v1, @code{mreal} v2)
+@deftypefnx {Method on @code{mglGraph}} @code{void} AddRange (@code{char} dir, @code{mreal} v1, @code{mreal} v2)
@deftypefnx {C function} @code{void} mgl_set_range_val (@code{HMGL} gr, @code{char} dir, @code{mreal} v1, @code{mreal} v2)
+@deftypefnx {C function} @code{void} mgl_add_range_val (@code{HMGL} gr, @code{char} dir, @code{mreal} v1, @code{mreal} v2)
@end ifclear
-Sets the range for @samp{x}-,@samp{y}-,@samp{z}- coordinate or coloring (@samp{c}). See also @ref{ranges}.
+Sets or adds the range for @samp{x}-,@samp{y}-,@samp{z}- coordinate or coloring (@samp{c}). If one of values is @code{NAN} then it is ignored. See also @ref{ranges}.
@end deftypefn
@anchor{yrange}
@anchor{zrange}
@anchor{crange}
-@deftypefn {Команда MGL} {} xrange @code{v1 v2}
-@deftypefnx {Команда MGL} {} yrange @code{v1 v2}
-@deftypefnx {Команда MGL} {} zrange @code{v1 v2}
-@deftypefnx {Команда MGL} {} crange @code{v1 v2}
+@deftypefn {Команда MGL} {} xrange @code{v1 v2} [@code{add=off}]
+@deftypefnx {Команда MGL} {} yrange @code{v1 v2} [@code{add=off}]
+@deftypefnx {Команда MGL} {} zrange @code{v1 v2} [@code{add=off}]
+@deftypefnx {Команда MGL} {} crange @code{v1 v2} [@code{add=off}]
@ifclear UDAV
@deftypefnx {Метод класса @code{mglGraph}} @code{void} SetRange (@code{char} dir, @code{mreal} v1, @code{mreal} v2)
+@deftypefnx {Метод класса @code{mglGraph}} @code{void} AddRange (@code{char} dir, @code{mreal} v1, @code{mreal} v2)
@deftypefnx {Функция С} @code{void} mgl_set_range_val (@code{HMGL} gr, @code{char} dir, @code{mreal} v1, @code{mreal} v2)
+@deftypefnx {Функция С} @code{void} mgl_add_range_val (@code{HMGL} gr, @code{char} dir, @code{mreal} v1, @code{mreal} v2)
@end ifclear
-Задает диапазон изменения @samp{x}-,@samp{y}-,@samp{z}-,@samp{c}-координат. См. также @ref{ranges}.
+Ð\97адаеÑ\82 диапазон изменениÑ\8f @samp{x}-,@samp{y}-,@samp{z}-,@samp{c}-кооÑ\80динаÑ\82. Ð\95Ñ\81ли одно из знаÑ\87ений Ñ\80авно @code{NAN}, Ñ\82о оно игноÑ\80иÑ\80Ñ\83еÑ\82Ñ\81Ñ\8f. Ð\9fаÑ\80амеÑ\82Ñ\80 @code{add=on} Ñ\83казÑ\8bваеÑ\82 добавлÑ\8fÑ\82Ñ\8c новÑ\8bй диапазон к Ñ\81Ñ\83Ñ\89еÑ\81Ñ\82вÑ\83Ñ\8eÑ\89емÑ\83 (не заменÑ\8fÑ\82Ñ\8c его). См. Ñ\82акже @ref{ranges}.
@end deftypefn
@deftypefn {Команда MGL} {} xrange dat [@code{add=off}]
@strong{Latest news}
@itemize
+@item @emph{19 March 2014.}
+New version (v.2.2.2.1) of @uref{http://sourceforge.net/projects/mathgl, MathGL} is released. There are compatibility changes for MS VisualStudio 2010 and early, and documentation update.
@item @emph{10 March 2014.}
New version (v.@value{VERSION}@value{MINVER}) of @uref{http://sourceforge.net/projects/mathgl, MathGL} is released. There are extend of 'region' plot, improve export to TeX, add missing Fortran functions, bugfixes, and other improvements, which denoted @ref{News, here}. Note, this release looks as bug free, but next release (v.2.3) will introduce a set of improvements which may not so stable at first time.
@item @emph{22 January 2014.}
@nav{}
@itemize
+@item
+@strong{19 March 2014.}
+New version (v.2.2.2.1) of @uref{http://sourceforge.net/projects/mathgl, MathGL} is released. There are compatibility changes for MS VisualStudio 2010 and early.
+@itemize @bullet
+@item Compatibility changes for MS VisualStudio 2010 and early.
+@item Function SetRange(v1,v2) ignore NAN values now.
+@item Add enable-json-sample for building json-samples on demand only.
+@item Update documentation.
+@end itemize
+
@item
@strong{10 March 2014.}
New version (v.2.2.2) of @uref{http://sourceforge.net/projects/mathgl, MathGL} is released. There are minor improvements and bugfixes:
@strong{Latest news}
@itemize
+@item @emph{19 March 2014.}
+New version (v.2.2.2.1) of @uref{http://sourceforge.net/projects/mathgl, MathGL} is released. There are compatibility changes for MS VisualStudio 2010 and early, and documentation update.
@item @emph{10 March 2014.}
New version (v.@value{VERSION}@value{MINVER}) of @uref{http://sourceforge.net/projects/mathgl, MathGL} is released. There are extend of 'region' plot, improve export to TeX, add missing Fortran functions, bugfixes, and other improvements, which denoted @ref{News, here}. Note, this release looks as bug free, but next release (v.2.3) will introduce a set of improvements which may not so stable at first time.
@item @emph{22 January 2014.}
@nav{}
@itemize
+@item
+@strong{19 March 2014.}
+New version (v.2.2.2.1) of @uref{http://sourceforge.net/projects/mathgl, MathGL} is released. There are compatibility changes for MS VisualStudio 2010 and early.
+New version (v.2.2.2.1) of @uref{http://sourceforge.net/projects/mathgl, MathGL} is released. There are compatibility changes for MS VisualStudio 2010 and early.
+@itemize @bullet
+@item Compatibility changes for MS VisualStudio 2010 and early.
+@item Function SetRange(v1,v2) ignore NAN values now.
+@item Add enable-json-sample for building json-samples on demand only.
+@item Update documentation.
+@end itemize
+
@item
@strong{10 March 2014.}
New version (v.2.2.2) of @uref{http://sourceforge.net/projects/mathgl, MathGL} is released. There are minor improvements and bugfixes:
20. Add mglDataVar, mglDataCol, mglDataFunc for handling special (temporary) data + add real(), imag(), conj() + accurate types in MGL + add 'expr'/'complex' in MGL
21. Check if Fortran versions possible for: mgl_data_info, mgl_datas_hdf, mgl_get_fit, mgl_get_mess, mgl_get_plotid
-
+22. Replace pthread by openmp in mgl_draw_thr() and similar
+23. Add function Rasterize() -- Finish() + clear points -- m.b. add background image for export, which will be cleared at Clf()???
============= DOCUMENTATION =============
#set_target_properties(udav PROPERTIES COMPILE_FLAGS "${CMAKE_CXX_FLAGS} -pthread")
if(enable-qt5)
target_link_libraries(udav mgl-qt5)
- qt5_use_modules(udav Core Widgets Gui Network WebKit PrintSupport)
+ qt5_use_modules(udav Core Widgets Gui PrintSupport)
else(enable-qt5)
target_link_libraries(udav mgl-qt4)
target_link_libraries(udav ${QT_LIBRARIES})
if(enable-qt5)
include(../cmake-qt5.txt)
target_link_libraries(mglview mgl-qt5)
- qt5_use_modules(mglview Core Widgets Gui Network WebKit PrintSupport)
+ qt5_use_modules(mglview Core Widgets Gui PrintSupport)
else(enable-qt5)
include(../cmake-qt4.txt)
target_link_libraries(mglview mgl-qt4)
}
}
//-----------------------------------------------------------------------------
-int main(int argc, char *argv[])
+int main()
{
mglGraph gr;
mglParse p(true);
set_target_properties(mgl-${mglqt}-static PROPERTIES CLEAN_DIRECT_OUTPUT 1)
set_target_properties(mgl-${mglqt}-static PROPERTIES COMPILE_FLAGS -DMGL_STATIC_DEFINE)
target_link_libraries(mgl-${mglqt} mgl)
- qt5_use_modules(mgl-${mglqt} Core Widgets Gui Network WebKit PrintSupport)
- qt5_use_modules(mgl-${mglqt}-static Core Widgets Gui Network WebKit PrintSupport)
+ qt5_use_modules(mgl-${mglqt} Core Widgets Gui PrintSupport)
+ qt5_use_modules(mgl-${mglqt}-static Core Widgets Gui PrintSupport)
if(enable-mgl2)
set_target_properties(mgl-${mglqt} PROPERTIES OUTPUT_NAME "mgl2-${mglqt}")
set_target_properties(mgl-${mglqt}-static PROPERTIES OUTPUT_NAME "mgl2-${mglqt}")
endif(enable-mgl2)
target_link_libraries(mgl-wnd mgl)
- qt5_use_modules(mgl-wnd Core Widgets Gui Network WebKit PrintSupport)
- qt5_use_modules(mgl-wnd-static Core Widgets Gui Network WebKit PrintSupport)
+ qt5_use_modules(mgl-wnd Core Widgets Gui PrintSupport)
+ qt5_use_modules(mgl-wnd-static Core Widgets Gui PrintSupport)
target_link_libraries(mgl-wnd ${FLTK_LIBRARIES})
install(
//-----------------------------------------------------------------------------\r
wxMathGL::~wxMathGL() { if(mgl_use_graph(gr,-1)<1) mgl_delete_graph(gr); }\r
//-----------------------------------------------------------------------------\r
-double wxMathGL::GetRatio() { return double(mgl_get_width(gr))/mgl_get_height(gr); };\r
+double wxMathGL::GetRatio() { return double(mgl_get_width(gr))/mgl_get_height(gr); }\r
//-----------------------------------------------------------------------------\r
void wxMathGL::SetGraph(HMGL GR)\r
{\r
gr=gg; mgl_use_graph(gg,1);\r
}\r
//-----------------------------------------------------------------------------\r
-void wxMathGL::OnPaint(wxPaintEvent& event)\r
+void wxMathGL::OnPaint(wxPaintEvent& )\r
{\r
wxPaintDC dc(this);\r
dc.DrawBitmap(pic,0,0);\r
else SetSize(mgl_get_width(gr), mgl_get_height(gr));\r
}\r
//-----------------------------------------------------------------------------\r
-void wxMathGL::OnNextSlide(wxTimerEvent& evt) { NextSlide(); }\r
+void wxMathGL::OnNextSlide(wxTimerEvent& ) { NextSlide(); }\r
//-----------------------------------------------------------------------------\r
void wxMathGL::SetPer(int p)\r
{ if(100*per!=p && p>=0 && p<100) { per = 0.01*p; Repaint(); } }\r
void wxMathGL::OnMouseDown(wxMouseEvent &ev)\r
{ xe=x0=ev.GetX(); ye=y0=ev.GetY(); ev.Skip(); }\r
//-----------------------------------------------------------------------------\r
-void wxMathGL::OnMouseLeftUp(wxMouseEvent &ev)\r
+void wxMathGL::OnMouseLeftUp(wxMouseEvent &)\r
{\r
if(zoom)\r
{\r
}\r
//-----------------------------------------------------------------------------\r
void wxMathGL::SetSize(int w, int h)\r
-{ mgl_set_size(gr,w,h); wxWindow::SetSize(w, h); Update(); };\r
+{ mgl_set_size(gr,w,h); wxWindow::SetSize(w, h); Update(); }\r
//-----------------------------------------------------------------------------\r
void wxMathGL::Adjust()\r
{\r