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.