MathGL Changelog

What's new in MathGL 2.4.4

Jul 9, 2019
  • mglData now have operator() which work as SubData() function.
  • Add 'minmax' for positions of local maximums and minimums.
  • Add ContGen() and ContFGen() to draw contour lines manually. Correspondingly 'cont' and 'contf' commands are extended.
  • Add 'conts' for getting coordinate of contour lines.
  • Extend 'put' for partial filling if data size(s) are smaller as destination.
  • Classes mglFormula and mglFormulaC now can read file with given sizes if string have the format ":fname:x1:x2:y1:y2:z1:z2". Here data is supposed in range [x1,x2]*[y1,y2]*[z1,z2] (by default [0,1]*[0,1]*[0,1]). Calc() in this case return the interpolated values.
  • Fix [xyz]range option for Area and Region.
  • Minor bugfixes.

New in MathGL 2.4.3 (Mar 22, 2019)

  • Add 'clabel' command -- draw labels for colorbar. Should be used *after* drawing colorbar!
  • Extend 'ctick' command
  • Add subpixel smoothing for masks
  • Boxes around text (style '@') now use actual height and position of the text.
  • Add mask to EPS export. Note, mask angles are reduced to 45*(0,1,...7) degrees for decreasing pattern size in the EPS.
  • Update default masks: '*' become dot, '^' become bricks, 'd' become plus, 'D' become tacks, ';' and 'j' change lengths. Note, you can use brush.ods to prepare user-defined masks.
  • Add styles '^' and '_' for command 'smooth' to find upper/lower bound of the data.
  • Improve FlowP() to draw both branches (in positive and negative time direction).
  • Improve CGI interface and update website.
  • Introduce struct mdual as interface for C and C++ complex numbers. It is implicitly converted to std::complex<> in C++. And need to call c2mdual() and mdual2c() in pure C. However mdual is binary compatible with C _Complex numbers.
  • Add flag in CMake to manually disable support of C99 complex numbers.
  • Bypass user-specified extension in base font family name.
  • Improve hints in mgllab and udav.
  • Add utility 'mgltask' for making output file with a set of copies of mask-file. It useful for making set of initial conditions with a few parameters varied in specified range.
  • Add example of OpenGL output.
  • Bugfix for approximate min and max position.
  • Bugfix for position of SVG output.
  • Compatibility fixes for new versions of CMake, compilers and libraries.
  • INCOMPATIBLE:
  • Formally pure C interface handle complex numbers by new way due to strict following of C/C++ standards. However, the MathGL library is binary compatible with previous version(s).

New in MathGL 2.4.2 (Mar 22, 2018)

  • Add custom dialog for FLTK widgets. This can be constructed from C/C++ code, or from MGL script using Special commentaries.
  • Add progress for displaying the progress of execution (by ’#’ symbols in console, or by progress-bar widget).
  • Add contp for contour lines on parametrically specified surface.
  • Add flow3 for flow threads of 3D vector field, which start from the plain.
  • Add variant of flow for drawing a flow thread, starting from specified point.
  • Add scaletext for disabling text size scaling in relative inplot-s (like columnplot, ...).
  • Add setup for setting all low-level flags.
  • Add coil for projecting periodical data.
  • Add modulo operation ‘%’ (x%y=fmod(x,y)) to the list of known operations in real-valued formulas.
  • Add style ‘.’ for cont to draw contour lines from saddle points.
  • Add style ‘.’ for flow to draw flow thread from saddle points.
  • Add option value in tube for setting number of edges manually.
  • Crop output of ode if NAN or INFINITY value occurs.
  • Remove style ‘~’ for plot and tens. Now, all curves try to omit points.
  • Add setup flag MGL_FULL_CURV which disable omitting points of curve.
  • Shift axis labels closer to axis.
  • Change size of LaTeX-like commands sup, sub to be the same as overset, underset.
  • Change ticks drawing in colorbar.
  • Add new section All samples of documentation with large set of samples for most of MathGL features.
  • Samples in documentation are generated automatically now (from sample.cpp).
  • INCOMPATIBLE: Make obsolete MGL command setsizescl. At this, the similar C/C++/Fortran/... functions still working.
  • Bugfixes.

New in MathGL 2.4.1 (Nov 3, 2017)

  • Add beltc plot, which is belt with manual coloring.
  • Add style ‘~’ for plot and tens to omit some points at output.
  • Add style ‘:’ for axis to draw lines through point (0,0,0).
  • Bugfixes.

New in MathGL 2.3.3 (Jun 11, 2015)

  • There are new functions, plot types and styles, improvement in MGL scripts and in mgltex, speeding up and bugfixes:
  • Update LaTeX package (thanks to Diego Sejas Viscarra)
  • Add surfca and surf3ca plots.
  • Add wavelet transforms.
  • Add attachlight for attaching light settings to inplots.
  • Add manual rotation angle for axis ticks (by "value" option).
  • Add mglDataS class which is similar to std::vector one.
  • Add missing mglDataC functions.
  • Add style ’%’ for color scheme along 2 coordinates (as in map).
  • If tick template start with ’&’ then long integer is passed instead of double.
  • Add style ’V’ for drawing text centered vertically.
  • Add style "dN" in smooth for averaging over (2*N+1)-th points.
  • Add TeX symbols "\quote", "–" and Cyrillic ones.
  • Add complex numbers in MGL – any expression started with ’!’ will have complex value(s).
  • Add rkstep command for Runge-Kutta step in MGL script.
  • Add functions ’min()’, ’max()’ to MGL parser and formula evaluation.
  • MGL command join now can join arbitrary number of data arrays.
  • Command stop is not required to be placed before func.
  • Add warning about writing to temporary arrays in MGL scripts.
  • Names ’rnd’,’nan’,’inf’ are reserved in MGL scripts now.
  • Add annotation for plot styles and options into header files.
  • Greatly improve the speed of formula parsing for MGL scripts
  • Update JS interface
  • Add binary font files for speeding up initialization and font loading
  • Exclude "pure" attribute for function due to compatibility reasons
  • Add mgl_set_size_scl() for additional scaling width and height of the image
  • Add options -S, -q for mglconv
  • Rearrange toolbuttons in UDAV.
  • Bugfix for flow and pipe functions
  • Other minor improvements, bugfixes and compatibility changes

New in MathGL 2.3.2 (Feb 11, 2015)

  • Update LaTeX package
  • Add reading files with complex numbers by read command.
  • Parallelize reading textual data files.
  • Add ’i’,’j’,’k’ variables for data filling (see fill).
  • Add saving images in QMathGL even if corresponding format support is disabled.
  • Add cmake option MGL_DEF_FONT to change default font name or use built-in one (if MGL_DEF_FONT is empty).
  • Compatibility changes and bugfixes.

New in MathGL 2.3.1 (Oct 23, 2014)

  • There are minor improvements and bugfixes:
  • Add LaTeX package mglTeX (author Diego Sejas Viscarra) for making figures directly from MGL script located in LaTeX file.
  • Add MGL command load for loading MGL commands from external DLL (or .so) module.
  • Add logo function to draw bitmap (logo), which is stretched along whole axis range.
  • Add MGL command reset which restore default settings and clear image (i.e. call DefaultPlotParam()).
  • Add option value to axis function, which allow to set rotation angle for tick labels.
  • Change y coordinate at x-z projection.
  • Improve projection of ’unrotatable’ objects (like legend, title, ...).
  • Add projection (ternary&8) which is the same as usual (ternary&4) but don’t print text on projections
  • Improve orientation of axis ticks and labels.
  • Add mglWnd::SetDrawFunc().
  • Add mgl_set_global_warn() and mgl_get_global_warn() for set/get messages of global scope.
  • Make copying private of mglGraph and derived.
  • Add virtual destructors.
  • Add some static functions for mglGraph.
  • Add option ‘-n’ to mglconv to disable automatic saving of the image.
  • Add option ‘-s’ to mglview and mglconv to run setup script before the main one.
  • Become compatible with giflib 5.1.
  • Add light scaling at MGLD import.
  • Add scaling of frames at Adjust().
  • Possible bugfix for 32bit gcc.
  • Update documentation and make other minor bugfixes and compatibility changes.

New in MathGL 2.3 (Aug 14, 2014)

  • There are major improvements and speeding up of core MathGL and UDAV.
  • Add background image, which allow in particular semi-transparent background color. Correspondingly add function rasterize for saving current image as background, and function background for loading background image from PNG or JPEG file.
  • Add primitives to draw polygon and angle arc.
  • Allow arbitrary factor for axis ticks (like, gr->SetTicks('x',M_PI,0,NAN,"\\pi"); or xtick pi '\pi').
  • Add function AddTick() for adding manual tick to the list of existed ones.
  • Add new styles and symbols:
  • arrow style ‘X’ (see Line styles);
  • color gradient (color scheme) for text string (see Color scheme);
  • manual dash style, like ‘{df090}’ (see Line styles);
  • manual mask style, like ‘{s00ff00182424f800}’ (see Color scheme);
  • styles ‘fFE0123456789+-’ for printing numbers in functions axis, colorbar, table, label;
  • style ‘!’ to disable ticks tuning in axis and colorbar;
  • style ‘!’ to draw grid lines at subticks coordinates too;
  • special symbol ‘\b’ which will be ignored at printing;
  • calligraphic TeX symbols, like ‘\calB’, ‘\calE’, ‘\calF’, ‘\calH’, ‘\calI’, ‘\calL’, ‘\calM’, ‘\calR’, ‘\ell’, ‘\scrg’, ‘\scro’.
  • dd ode solving functions for textual formulas.
  • Add function for global cubic spline interpolation, and function gspline to refill data using global spline.
  • Add functions random(dat) and gamma_inc(a,x) to the list of known functions for formula parsing
  • Add inf variable to the MGL and formula parsing
  • Allow reading JPEG files for import.
  • Function subdata now can handle NULL argument(s). Add variants of subdata with provided 1 and 2 arguments.
  • Warning messages and information are printed to stderr until call of mgl_suppress_warn(true); will disable it.
  • Add function version to check if MathGL version is valid.
  • Add move constructor(s) if compiler support C++11 rvalues.
  • Changes in algorithms:
  • Greatly increase speed of formula parsing (i.e. of functions modify, fill and similar), and speeding up many other places;
  • Improve algorithm for contours drawing and filling, taking special attention to quasi-random data;
  • Function Spline() now use 5-th order polynomials to keep continuity of 2nd derivative too;
  • Add function attributes pure or const, which potentially can speed up drawing;
  • Use spline instead of linear interpolation in functions flow and pipe;
  • Adjust columnplot and gridplot positions for non-zero distance between the inplots;
  • Improve colorbar labels drawing for the case of disabled label rotation;
  • Choose new scales for perspective;
  • Allow ’negative’ angles for text rotation;
  • Use new s-hull version for triangulation.
  • Add ViewAsRotate() function which handle arguments of view by the same way as rotate function, i.e View(tetx,tetz,tety) ViewAsRotate(-tetz,-tetx,-tety).
  • Function mglWindow::Adjust() for Quality&4==0 now show image in widgets even if draw function is absent (i.e. =NULL).
  • Make function mgl_get_curvs() to be exported. This function is used internally to connect line segments to a set of curves (in particular, for contour lines).
  • Improvements in UDAV:
  • Rearrange tool buttons;
  • Add features for manual dashing and manual mask in Style dialog;
  • Add dialog for new dialog for new inplots (including subplot, multiplot, columnplot, stickplot, gridplot);
  • Add option to use dots plot at image refreshing (for faster rotation etc);
  • Add new primitives (arc, polygon, rotated text) as mouse handled ones;
  • Add close button to data tabs;
  • Add button to stop script drawing and stop() slot for QMathGL;
  • Allow to delete/hide/unhide selected plot;
  • Allow to move selected plot between inplots;
  • Improve NewCommand dialog. Now it replace the script command if user change arguments only;
  • MGL commands perspective and fog now work correctly in UDAV;
  • Update icons to use Oxygen ones.

New in MathGL 2.2.2 (Mar 10, 2014)

  • Add mgl_region_3d() to draw region (or ribbon) between 2 curves. Correspondingly extend mglGraph::Region() function and MGL command ’region’.
  • Allow LGPL for MathGL widgets.
  • Improve export to TeX.
  • Add missing functions to Fortran interface.
  • Bugfix for legend with enabled lighting.
  • Minor bugfixes and memory leaks.

New in MathGL 2.2.1 (Jan 22, 2014)

  • Add Qt5 support.
  • Add Pascal interface.
  • Improve JavaScript interface.
  • Add function AddRange(char dir, mreal v1, mreal v2) and extend corresponding MGL commands '[xyzc]range'.
  • Add 'hypot' function for known functions in formula parsing.
  • Add style '~' to disable colorbar or axis labels. NOTE, axis style '_' is obsolete and should be replaced by '~'.
  • Change Aspect() if Ax=NAN. Now, Ay and Az set the ratio to optimal aspect (not exact value as previously).
  • Disable changes by View(),Zoom(),Perspective() for position of Title(), Legend(), Colorbar().
  • Partial support of perspective in CalcXYZ().
  • Speed up PDE solving.
  • Add complex versions of PDE, QO2d, QO3d.
  • Correct filled background for Box() in curved coordinates.
  • Allow nx=1 for Stem and Error.
  • Bugfix for drawing single axis.
  • Bugfix for missing options parsing for some of MGL commands.
  • Bugfix for .pmin suffix in MGL. Add mglData::MaximalNeg() and mglData::MinimalPos() functions. Add .nmin and .nmax suffixes.
  • Bugfix for colorbar labels.
  • Force using python 2.7 by default due to bug in Ubuntu. Debian sid works well with python 3.* too.
  • Minor bugfixes and memory leaks.

New in MathGL 2.2 (Nov 13, 2013)

  • Add OpenMP calls mostly everywhere (can work as replacement of pthreads - a bit faster since more loops is parallelized).
  • Greatly speed up consequent FFT and Hankel transforms. Add mgl_clear_fft() function for manual clearing of saved FFT/Hankel data.
  • Add OHLC() plot for drawing Open-High-Low-Close diagram
  • Add wxMathGL widget.
  • Add interface for Lua v.5.1.
  • Add mask for face drawing if one of symbols "-+=;oOsS~jdD*^" is specified in color scheme. This work only for export in bitmap images.
  • Add Quality=8 for dots drawing (extremely fast).
  • Add styles '4','6','8' for Cone() and Cones() to produce square, hex-, octo-prism.
  • Add style 't' for Cones() to produce tubes (cylinders).
  • Add style '^' for Legend() to left/right align legend if its coordinates are right/left from the center
  • Add style '' for aligning/centering boxes in Bars(), Barh(), BoxPlot(), Cones(). Also this plots become centered by default if nx sizes are the same for all data.
  • Add Dots() function which set independently both color and alpha of dots
  • Improve automatic axis position. Add style '^' for inverse automatic axis position.
  • Improve tick labeling. Add style TuneTicks&4 for zero filling of tick labels.
  • Add mglData::Refill() for filling by interpolation of parametrically dependent data
  • Add transparency for Area() and Region() plots.
  • Add mgl_clf_chr() function and extend 'clf' command. * Fourier now perform true inverse Fourier transform (instead of backward one).
  • Improve/change lighting from local sources. Add SetDiffuse() function.
  • C functions now return NULL if HMDT data cannot be created for given input argument(s).
  • Enable line width for Mesh() and Fall() plots.
  • Replace +INF and -INF by NAN in textual formula output.
  • Add manual compression of JSON.
  • Define WORDS_BIGENDIAN and HAVE_MEMRCHR (thanks to Dinar Valeev).
  • Bugfix for cleaning unused points.
  • Fix 'setsize' command at UDAV starting.
  • Rewrite MGL parsing by using std::wstring for avoiding possible bugs of wcs*() functions.
  • Minor bugfixes.
  • Update docs.

New in MathGL 2.1.3 (May 2, 2013)

  • Functions SinFFT, CosFFT, Hankel and so on, become multi-threaded
  • Use DFT instead of FFT if GSL support is disabled (much slow!).
  • Add Join() function for joining mglData arrays
  • Add Roots() function for root finding of nonlinear equation using provided guess(es)
  • Add mglExprC for parsing formula with complex numbers
  • Correctly read #QNAN values in data files
  • Speed up Dots() drawing
  • Add flag to disable tick labels at axis origin (see SetOriginTick())
  • Add MGL commands 'origintick', 'tickshift'
  • WriteJSON now use zlib if filename end at 'z' (like "test.jsonz")
  • Make separate libmgl-mpi
  • Add SetAutoRanges() function (duplicate corresponding options)
  • Add JSON sample usage via QtWebKit (thanks to DATADVANCE)
  • Bugfixes and memory leaks

New in MathGL 2.1.2 (Jan 28, 2013)

  • Exclude "local" functions from resulting library.
  • String in MGL script now can be concatenated with another string or data/numbers (like 'max(u)=',u.max,' a.u.').
  • Bugfix for colors in 3D PDF.
  • Bugfix for drawing in MPI mode.
  • If Aspect() function have NAN argument(s) then it try to select optimal aspect ratio.
  • Option 'size' in Legend() now change only text size (not mark size).
  • Option 'meshnum' now influence on Boxs() and Belt() functions
  • Adjust marks drawing (line width and dots).
  • Minor improvements and bugfixes.

New in MathGL 2.1.1 (Dec 27, 2012)

  • Bugfix for SetRange(val,val) function
  • Exclude export MGL to CPP
  • MGL parsing now produce errors for any wrong list of arguments
  • Add help message to mgl.cgi
  • Improve text rotation at View()
  • Make compatible with GIF library v.5.0
  • Bugfix for making MPI interface
  • Bugfix for running in Win32 mode
  • Update docs and MGL samples

New in MathGL 2.1 (Dec 13, 2012)

  • Add class mglDataC for complex data arrays.
  • Add mglData::Solve() for finding x-value where dat(x)=val.
  • Add mglData::Clean() for removing rows with duplicate values for given column.
  • Add Vect3() plot for drawing vectors on slice of 3d vector field.
  • Add Table() function for drawing table with data values.
  • Add ZoomAxis() for zooming/shifting axis range as whole.
  • Add WriteJSON() function for exporting in JSON format suitable for later drawing by JavaScript
  • Add JavaScript code for visualizing JSON data.
  • Add mgl.cgi tool which return PNG image for CGI request in form of MGL script.
  • Add MGL commands 'errbox', 'face'
  • Color can be specified as its RGB[A] values, i.e. like "{xFFFFFF}" or "{xFFFFFFFF}".
  • Color in color scheme may have position in range [0,1]. Format is {CN,pos} or {xFFFFFF,pos}.
  • Now pen width for marks is proportional to pen width of line multiplied by size of marks.
  • Now you can use different font-faces in the plot simultaneously.
  • Now Legend() automatically use several columns if it contain too many legend entries.
  • Add style '-' for legend for drawing them horizontally.
  • Vectors is drawn now even if only starting or ending points are placed in bounding box.
  • Strongly rewrite the algorithm of vector field plotting.
  • Grid lines for NAN origin values are always located at far-away edges.
  • Try correctly place axis and tick labels even for axis with inverse range (i.e. for v2

New in MathGL 2.0.2 (May 24, 2012)

  • Add 'U' style for Axis() which disable ticks rotation.
  • Bugfix for enable-opengl option.
  • Bugfix for lighting.

New in MathGL 1.11 (Nov 10, 2010)

  • Add new plot Grad() -- gradient of scalar field by flow threads.
  • Add new plot QuadPlot() -- plot of irregular quadrangle mesh (like TriPlot()).
  • Add new plot TriCont[V]() -- contour lines for irregular triangle mesh.
  • Add gradient filling in Area() and Region() plots if number of specified colors (colors in palette) is equal to 2*number of curves.
  • Allow 2 colors diagrams (in Bars(), Barh()) -- one for positive, one for negative.
  • Add style 'f' for Bars(), Barh() which draw diagrams like water-fall ones.
  • Move argument 'above' of Bars(), Barh() to string (if it contain 'a' symbol).
  • Add marks '', '#', '#*', '#x', '#+', '#.' for left/right wire/solid triangles, Y sign, squared + and x signs.
  • Add mini-dash for '=' line style symbol.
  • Colorbar position can be specified in sch string: '>' - right, '0)!
  • Add C/Fortran interface functions for widget features.
  • Allow to read compressed data files (like, *.dat.gz).
  • Allow to save compressed files with extensions "eps.gz" and "svgz" as output.
  • Font files can be compressed now by 'gzip'.
  • Reduce animation delay to 1 sec.
  • Add TeX symbol sample in documentation.
  • Now MathGL use standard random numbers generator: GSL one or simple rand() if NO_GSL is defined.
  • Now curves always start dashing from zero position.
  • Restrict usage of original and wrapper classes simultaneously.
  • Rename MGL command 'grid' to 'grid2' for case of plain grid drawing for data array(s).
  • Rename MGL command 'set_id' to 'idset'.
  • Disable color gradient in Vect() by default -- still enabled in VectC(), VectL().
  • Add extra options/comments for animation parameters in mgl2png.
  • Update printing in QMathGL.
  • mglGraphFLTK::Update() now force window redrawing.
  • Bugfix with newline symbol '\n'
  • Bugfix with wrong restore previous InPlot() after text with style 'a'.
  • Bugfix for label position for log-scale axis.
  • Bugfix for mglData::Insert().
  • Bugfix for text and marks drawing in OpenGL mode.
  • Bugfix for T-ticks orientation in Ternary plot.
  • Bugfix for text position with 'a' option after Rotate().
  • Bugfix for keeping bold/italic text formatting of next symbol.
  • Bugfix for Ternary axis with Min.y!=0.
  • Bugfix for multi-line labels.

New in MathGL 1.10.2.1 (Apr 30, 2010)

  • Add multi-line (i.e. separated by \n) text printing.
  • Ticks adjusting now correctly work with log-scaled axis.
  • Bug-fix with MGL options including bug with 'legend' option for automatic colors.
  • Bug-fix with 'A' option of text style.

New in MathGL 1.9 (Jul 4, 2009)

  • Improve export in EPS and SVG: lines are exported as single object, improve line dashing, text is exported by glyphs now. - Write new MGL parser which can handle arbitrary expression as argument for data and/or number. - Function mglGraph*::Window() now can handle NULL-pointer as function (draw built-in bitmap only). The window can be created from Fortran programs too. - Add new plot Traj() for drawing vectors along the curve. - Add new plot ContD() for drawing solid contours with manual colors (useful for phase diagrams). - Add new plot Radar() for drawing radar chart. - Add new plot Flow(mglPoint p, ...) for drawing the flow thread from a point. - Functions mglGraph::Vect() now have additional argument for kind of vector plot. Correspondingly mgl_vect_*() functions now have additional argument too! - Add function mglGraph::Axis() for predefined curvilinear coordinates. - Add function mglData::SubData() for indirect access to the data elements. - Add function mglData::Trace() for getting diagonal elements. - Add function for manual setting of ticks/subticks line style. - Now you can set colors for multiple curves (palette) directly in function style, i.e. like gr->Plot(y,"rgb;"). - Improve ticks drawing if RotatedText = false; - NOTE! Hide TickLen variable and change it to SetTickLen() function. Also add additional argument to mgl_set_tick_len() function. - You can now select base type for floating point numbers (double or float). - Legend now is drawn flat (without any rotation). - Function mglData::Sew() now handle NAN values correctly. - Add MGL command types for further UDAV developping. - Line width now don't influence on text printing. - Bug correction in marker drawing for EPS, SVG. - Bug with not always defined mglGraph::id. - Bug correction in configure (older compiler support, wrong glut.h demand). - Bug in lang/CMakeLists.txt (for making Python interface). - Better support for isnan() function on different compilers.