-Wall -Wsuggest-attribute=pure -Wsuggest-attribute=const

============= FAR FUTURE ================

1. Export to COLLADA or X3D !!!
2. Read DICOM, MAT, WFM files

3. Contour lines for bilinear interpolation (strong saddle-like faces) -- best way by adding curve primitive (type=5)?!?
4. 3D text (with depth), and text along 3D curve (for Quality=3) ???
5. Get true coordinates in CalcXYZ for curved equations too.
6. Extra markers for '&' and '&#' signs ?!? or user-defined signs

7. Improve z-order for rapidly oscillating surfaces (сравнение проекций центров на грань -- too slow)

8. Enable consecutive (as multiplication of matrices instead of single summary one) rotation of axis + the same in JS. Problem with widgets?!?

9. Export background image to svg ???

10. Frames by mouse in UDAV ???
	A. мысли о frame??? для группы графиков -- не "удалять" их, а запихивать в отдельный кадр -- вопрос что с анимацией???
	B. как делать анимацию (кадры) для мышиной версии ... список кадров, кнопки добавить в кадры + вставить из кадра

11. Parallel drawing in QMathGL (looks to complicated -- FLTK is better!)
12. \overline{\overline{a}} ???
13. Use arrow_plot_3d ???
14. Mask in SVG ???
15. Add quadratic and cubic Bezier curves as primitives (update export to SVG/EPS + simplify some functions) ?!?
16. Bypass realloc() ???
17. Add PGM|PPM export (see https://en.wikipedia.org/wiki/Netpbm_format)

18. Chord diagram ???
19. Dendrogram specified by string "{val, {lVal,{...},{...}}, {rVal,{...},{...}} }" with styles: 's' for hor/vert lines, or straight lines by default ???
20. Voronoi diagram ??? -- triangulation + coloring by point

18. Unicode/UTF8 in legend-option ?

============= NEW FEATURES =============

1. Centered curved text (see text2)
2. Quality=3 for mirror+shadows + arrow_plot_3d? Could be in bitmap only mode
3. Add "text3d x y z lx ly lz nx ny nz 'txt' ['stl'='' depth=0.1 depth2=nan]"
4. Flag to determine discontinuous surfaces in 'fsurf'
5. mgl.cgi -- add log-file{IP,time,script}, add file-password (enable I/O if pass is the same as in a file)

6. Recurrence plot u_{ij} = |a_i-a_j|<epsilon && Cross-reccurence plot u_{ij} = |a_i-b_j|<epsilon. See http://www.recurrence-plot.tk/crps.php
7. Calendar diagram -- 1D data as dens for 7-row (day) or 12-row (months) + divisions at month or year

10. Add simd instructions for openmp
11. Use FreeType for getting font/glyph information. This need quick drawing of quadratic and cubic Bezier curves (see example5.cpp). https://www.freetype.org/freetype2/docs/tutorial/step3.html -- add optimization of bezier curves by number of points. Use it as glyph definition or as default source for all/unknown glyphs!?

12. Triangulation in 3d + rewrite crust (test 2d version too). See https://en.wikipedia.org/wiki/Bowyer%E2%80%93Watson_algorithm

13. Algorithm of combining primitives with the same color to the larger one.
14. Add mgl_setup_paths(MGL_FONT_PATH, MGL_INSTALL_DIR) for replacing default paths

16. Add mgl_set_font_hscale() to MGL
22. Add "map res 'eqs' 'vars' ini ['how' A B C [D E]]" -- like "ode" but just simple mapping + progonka.

ZZ. Update *.i for new functions {before release!!!}

curve_draw: step?, bifurcation?, flow3d

============= DOCUMENTATION =============

A. Paper about MathGL!!!
B. Add chapter with real samples
C. Translate to Russian everything
D. Docs about JS interface

0. Update Qt and UDAV figures
1. Update installation (dll from mgl_script + Qt plugins/ + Win10)

2. Add more samples:
	* Example of 'contp', 'flowp'
	* Example of frame manipulation
	* Example of 'title' style '#'
	* Example of 'triplot'+'quadplot' with colors per-face
	* Example of 'tricontv'
	* Example of 'grad_xyz'
	* Example of 'flow', 'pipe' style '*'.
	* Example of 'fsurf'
	* Example of 'tile','tiles' styles 'x', 'z'
	* Example of 'lamerey' style '~'
	* Example of 'iris', extended
	* Example of wired 'area' and 'region' (2d case), 'region' with !z1||!z2 (?!?)
	* Example of 'step' with markers; 'barh', 'bars' (3d) style 'F'
	* Example of CalcXYZ()
	* Example of 'clf' with color, 'rasterize', 'loadbackground', 'logo'
	* Example of 'pde' in 3d, and 'qo3d'
	* Example of 'tridmat' in all 5 modes, and for real numbers too.
	* Example of "data" creation {'list', 'def*','ask','{OP DAT}'}
	* Example of 'rk_step'
	* Example of 'openhdf'
	* Extend examples of 'fit' and 'hist' in multi-dimension case.
	* Example of complex 'hankel' for PDE solving
	* Example of 'wavelet'
	* Example of time-values in formulas (like hh-mm-ss_DD.MM.YYYY or hh-mm-ss or DD.MM.YYYY)
	* Example of Step, Bars for x.nx = y.nx+1
	* Example of `dat <==> Transpose(dat).
	* Example of 'coil'
	* Example of 'roots'
	* Example of custom dialog
	* Example of 'progress'
	* Example of 'shuffle'
	* Example of 'brownian'
	
3. Docs about mgllab (overview, dialogs, ...)
4. Example of Evaluate + ".mx" ???

5. Docs about 'connect' ???
6. Update Widget() to return Fl_MGLView (not Fl_MathGL);
7. Add doc about mglWnd::Window();
8. Add docs about Fl_MGLView.

9. Docs and sample about 'tricontv'

19. Docs about mgltask: $1,$2,$3 loops, $0 is rnd, $R are formulas for R=a,b,...,z, which depend on v0=$0, v1=$1, v2=$2, v3=$3.

ZZ. Update time.texi {before release!!!}

как начать пользоваться (quickstart)
как скомпилировать и установить (building & installing)
как запустить (running)
как протестировать свои правки (testing)
как настроить (configuration)
какие есть примеры использования (examples)



Shortly, there are 3 steps:
1. Download binary for the platform you want to use (32bit or 64bit) and unpack it somewhere. Note, if mix 32bit and 64bit binaries in the same executable, when a compiler under Windows will not give warning about it, but yours program will be crushed!
2. Get all requires libraries (probably some of them is installed on your PC). Also you can just use MathgL utilities (like, http://downloads.sourceforge.net/mathgl/mgl_scripts-2.4.2.win64.7z) which contain all required DLLs.
3. Use MathGL libraries. For MinGW (or clang, or GNU gcc, and so on) compiler you just need to provide option -I path_incl, -L path_lib, where path_inc and path_lib are paths to MathGL include/ and lib/ folders. Alternatively, you can copy MathGL binaries to the MinGW folders (include/ to include/, lib/ to lib/ and so on) and do nothing special else. For Visual Studio you need to create the import library first. Finally, add the MathGL library to the project -- in MinGW compiler add option -lmgl (and similar ones if you use MathGL widgets).

Instead of steps 1-2, you can download sources and build the MathGL libraries with dependencies/features, which you need. Note, that minimal version have no external dependencies but support plot export to BMP, EPS and SVG only, have no special functions, nonlinear fitting and use slow Fourier transform. The build system use CMake and is rather standard. After building binaries, continue from step 3 :-).

============= mgllab ===========

* Manual data changing should be written into script ?!?
* Check: "You can shift axis range by pressing middle button and moving mouse. Also, you can zoom in/out axis range by using mouse wheel."
* Shift/Zoom/Perspective by mouse!!!
* 1d view -- over longer size + y-size for current slice only
* info about used memory for graphics
* "debug" mode?!? or breakpoints?!
* something strange with highlighting
* collect mouse clicks to draw line(s) and save it into data
* select 'bbox' by mouse
* dialog to visual construct "custom dialog" + read/add "##d" to the end of file.
* check manual dash/mask

* use mgl_default_graph() for drawing ???
* use mglDataList for viewing/changing in GUI data from external languages (like, Python, ...) ???

X. Own file-chooser dialog -- separate path and fname fields + add sorting by date|size ???
Y. Window with Zoom/Hidden ???

============= UDAV =============

1. Zoom rectangle after mouse selection

3. Manual data changing should be written into script
	a. Suggest to save into HDF5 if data changed manually
	b. Each manual change in cell produce command like 'put dat val i j k'
	c. Add command to insert as 'list'
	d. Reset script after saving to HDF5 or putting to main script
	e. Ask about script changes before closing data tab
4. List of constants into the list of data?!
5. Add color cycle ???
6. Color position in color scheme dialog
7. Select 'bbox' by mouse
9. Save data from the summary panel
10. Select subdata section (between NAN in curve) by mouse + adding it to script ?!!
11. Zoom in a region by middle mouse (if not in rotation mode)
* "debug" mode?!? or breakpoints?!
* collect mouse clicks to draw line(s) and save it into data
* Animation from ##c, ##a + remove old entries at "Put to script" (the same in mgllab)
* Custom dialog in QMathGL

* Check autoResize=true

* use mgl_default_graph() for drawing ???
* use mglDataList for viewing/changing in GUI data from external languages (like, Python, ...) ???

============= UNSURE ===========

1. GTK window/widgets ???
2. "Cut off" curves if text is printed inside it (for contour labels) ?!?
5. Check RunThr() in python/octave
6. Auto axis range for formulas, like AutoRange("y(x)") or AutoRange('x',"x(t)").
7. Use Hershey as built-in font ??? -- for smaller size only
