From f82a800771ec0279dd36e257831f876e3b57688a Mon Sep 17 00:00:00 2001 From: Dimitrios Eftaxiopoulos Date: Mon, 24 Dec 2012 21:58:17 +0200 Subject: [PATCH] Imported Upstream version 2.1.1 --- CMakeLists.txt | 30 +- ChangeLog.txt | 12 + examples/full_test.cpp | 19 +- examples/samples.cpp | 20 +- include/mgl2/base.h | 8 +- include/mgl2/define.h | 2 +- include/mgl2/mgl_cf.h | 11 +- include/mgl2/opengl.h | 12 +- include/mgl2/parser.h | 16 +- include/mgl2/qmathgl.h | 4 + lang/CMakeLists.txt | 8 +- src/CMakeLists.txt | 4 +- src/axis.cpp | 25 +- src/base.cpp | 4 +- src/canvas.cpp | 9 +- src/cont.cpp | 2 +- src/data.cpp | 2 +- src/exec.cpp | 5236 ++++++++++++++----------------------- src/export.cpp | 31 +- src/font.cpp | 8 +- src/opengl.cpp | 1 + src/parser.cpp | 98 +- src/pixel.cpp | 31 +- src/prim.cpp | 20 +- texinfo/CMakeLists.txt | 58 +- texinfo/classes.eps | 5344 ++++++++++++++++++++++++++++++++++++++ texinfo/concept_en.texi | 22 +- texinfo/concept_ru.texi | 24 +- texinfo/core_en.texi | 68 +- texinfo/core_ru.texi | 68 +- texinfo/data_en.texi | 30 +- texinfo/data_ru.texi | 28 +- texinfo/doc_en.texi | 22 +- texinfo/doc_ru.texi | 23 +- texinfo/ex_mgl_en.texi | 194 +- texinfo/ex_mgl_ru.texi | 194 +- texinfo/example_en.texi | 210 +- texinfo/example_ru.texi | 212 +- texinfo/formats_en.texi | 8 +- texinfo/formats_ru.texi | 8 +- texinfo/index.html | 2 +- texinfo/mathgl.js | 7 +- texinfo/mathgl_en.texi | 6 +- texinfo/mathgl_ru.texi | 6 +- texinfo/mgl_en.texi | 13 +- texinfo/mgl_ru.texi | 13 +- texinfo/other_en.texi | 10 +- texinfo/other_ru.texi | 10 +- texinfo/overview_en.texi | 18 +- texinfo/overview_ru.texi | 18 +- texinfo/parse_en.texi | 8 +- texinfo/parse_ru.texi | 8 +- texinfo/symbols_en.texi | 8 +- texinfo/symbols_ru.texi | 8 +- texinfo/udav_en.texi | 6 +- texinfo/udav_ru.texi | 6 +- texinfo/version_hist.txt | 31 + texinfo/web_en.texi | 386 +-- texinfo/web_fr.texi | 180 +- texinfo/web_ru.texi | 388 +-- texinfo/widget_en.texi | 12 +- texinfo/widget_ru.texi | 12 +- utils/mgl_test.html | 14 + utils/mglcgi.cpp | 1 + widgets/CMakeLists.txt | 20 +- widgets/glut.cpp | 1 + widgets/qt.cpp | 9 +- 67 files changed, 8606 insertions(+), 4721 deletions(-) create mode 100644 texinfo/classes.eps create mode 100644 texinfo/version_hist.txt create mode 100644 utils/mgl_test.html diff --git a/CMakeLists.txt b/CMakeLists.txt index 7f394c0..a5bd669 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 2.8.4) +cmake_minimum_required(VERSION 2.8) project( MathGL ) @@ -9,10 +9,12 @@ endif(NOT CMAKE_BUILD_TYPE) set(CMAKE_VERBOSE_MAKEFILE ON) set(MathGL_VERSION_MAJOR 2) -set(MathGL_VERSION_MINOR 1) +set(MathGL_VERSION_MINOR 1.1) include(CMakeDependentOption) +set(MGL_LIB_INSTALL_DIR "lib" CACHE STRING "Set library install directory") + option(enable-double "Enable double precision in MathGL library" ON) option(enable-simple "Slightly increase drawing speed but disable mglDataA class") option(enable-mpi "Enable mpi") @@ -173,30 +175,14 @@ else(enable-all OR enable-png) endif(enable-all OR enable-png) -# if(enable-u3d AND (NOT enable-lgpl) ) -# set(MGL_HAVE_U3D 1) -# find_library(U3D_LIB IDTF) -# if(NOT U3D_LIB) -# message(SEND_ERROR "Couldn't find U3D libraries.") -# endif(NOT U3D_LIB) -# find_path(U3D_INCLUDE_DIR u3d/SceneConverterLib.h) -# if(NOT U3D_INCLUDE_DIR) -# message(SEND_ERROR "Couldn't find U3D headers.") -# endif(NOT U3D_INCLUDE_DIR) -# message(STATUS "Found U3D libraries at: ${U3D_LIB}") -# message(STATUS "Found U3D headers: ${U3D_INCLUDE_DIR}") -# else(enable-u3d AND (NOT enable-lgpl) ) -# set(MGL_HAVE_U3D 0) -# endif(enable-u3d AND (NOT enable-lgpl) ) - -if((enable-all OR enable-pdf) AND (NOT enable-lgpl) ) +if( enable-all OR enable-pdf ) set(MGL_HAVE_PDF 1) if(NOT MGL_HAVE_PNG) message(SEND_ERROR "You have to enable PNG if you plan to use PDF export.") endif(NOT MGL_HAVE_PNG) find_library(HPDF_LIB hpdf) if(NOT HPDF_LIB) - message(SEND_ERROR "Couldn't find libHaru.") + message(SEND_ERROR "Couldn't find libHaru or libhpdf.") endif(NOT HPDF_LIB) find_path(HPDF_INCLUDE_DIR hpdf_u3d.h) if(NOT HPDF_INCLUDE_DIR) @@ -204,9 +190,9 @@ if((enable-all OR enable-pdf) AND (NOT enable-lgpl) ) endif(NOT HPDF_INCLUDE_DIR) # message(STATUS "Found libHaru library at: ${HPDF_LIB}") # message(STATUS "Found libHaru headers: ${HPDF_INCLUDE_DIR}") -else((enable-all OR enable-pdf) AND (NOT enable-lgpl) ) +else( enable-all OR enable-pdf ) set(MGL_HAVE_PDF 0) -endif((enable-all OR enable-pdf) AND (NOT enable-lgpl) ) +endif( enable-all OR enable-pdf ) if(enable-all OR enable-gif) set(MGL_HAVE_GIF 1) diff --git a/ChangeLog.txt b/ChangeLog.txt index e1894cc..9a9ce76 100644 --- a/ChangeLog.txt +++ b/ChangeLog.txt @@ -1,3 +1,15 @@ +2.1.1 Released 24 December 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 + 2.1 Released 13 December 2012 * Add class mglDataC for complex data arrays. diff --git a/examples/full_test.cpp b/examples/full_test.cpp index a40758f..521bc3d 100644 --- a/examples/full_test.cpp +++ b/examples/full_test.cpp @@ -64,6 +64,16 @@ void mgl_write_obj_old(HMGL gr, const char *fname,const char *descr, int use_png void save(mglGraph *gr,const char *name,const char *suf); void test(mglGraph *gr) { + gr->SetSize(800,600); + gr->SetTuneTicks(0); gr->SetRanges(1000,1000.1,10,10.001); + gr->SubPlot(3,2,0); gr->SetOrigin(1000,10); gr->Axis(); + gr->SubPlot(3,2,1); gr->SetOrigin(1000.1,10); gr->Axis(); + gr->SubPlot(3,2,2); gr->SetOrigin(1000.05,10); gr->Axis(); + gr->SubPlot(3,2,3); gr->SetOrigin(1000,10.001); gr->Axis(); + gr->SubPlot(3,2,4); gr->SetOrigin(1000.1,10.001); gr->Axis(); + gr->SubPlot(3,2,5); gr->SetOrigin(1000.05,10.001); gr->Axis(); + return; + mglParse par; par.AllowSetSize(true); setlocale(LC_CTYPE, ""); @@ -243,6 +253,7 @@ static struct option longopts[] = { "obj", no_argument, &type, 11 }, { "off", no_argument, &type, 12 }, { "prc", no_argument, &type, 5 }, + { "pdf", no_argument, &type, 9 }, { "solid", no_argument, &type, 3 }, { "srnd", no_argument, &srnd, 1 }, { "svg", no_argument, &type, 2 }, @@ -266,8 +277,8 @@ void usage() "--height=num - png picture height\n" "--mini - png picture is 200x150\n" "--big - png picture is 1920x1440\n" - "--idtf - output idtf\n" "--prc - output prc\n" + "--pdf - output pdf\n" "--eps - output EPS\n" "--eps - output LaTeX\n" "--jpeg - output JPEG\n" @@ -312,7 +323,7 @@ void save(mglGraph *gr,const char *name,const char *suf="") gr->WriteJPEG(buf); break; case 5: // PRC sprintf(buf,"%s%s.prc",name,suf); - gr->WritePRC(buf); break; + gr->WritePRC(buf,"",false); break; case 6: // GIF sprintf(buf,"%s%s.gif",name,suf); gr->WriteGIF(buf); break; @@ -322,6 +333,9 @@ void save(mglGraph *gr,const char *name,const char *suf="") sprintf(buf,"%s%s.png",name,suf); gr->WritePNG(buf,0,false); break; + case 9: // PDF + sprintf(buf,"%s%s.prc",name,suf); + gr->WritePRC(buf); remove(buf); break; case 11: // OBJ sprintf(buf,"%s%s.obj",name,suf); gr->WriteOBJ(buf); break; @@ -348,7 +362,6 @@ int main(int argc,char **argv) const char *suf = ""; char name[256]="", *tmp; int ch; -// mglGraphIDTF u3d; mglGraph *gr = NULL; mglSample *s=samp; #if !defined(_MSC_VER) && !defined(__BORLANDC__) diff --git a/examples/samples.cpp b/examples/samples.cpp index 9e94bf0..408118e 100644 --- a/examples/samples.cpp +++ b/examples/samples.cpp @@ -60,7 +60,7 @@ new ez 10 10 10 '0.2*(z-0.3)/$1-0.2*(z+0.3)/$2'\nreturn\n"; //----------------------------------------------------------------------------- const char *mmgl_solve="zrange 0 1\nnew x 20 30 '(x+2)/3*cos(pi*y)'\n" "new y 20 30 '(x+2)/3*sin(pi*y)'\nnew z 20 30 'exp(-6*x^2-2*sin(pi*y)^2)'\n\n" -"subplot 2 1 0:title 'Cartesian space':rotate 30 -40\naxis 'xyzU':box\nxlabel 'x':ylabel 'y'" +"subplot 2 1 0:title 'Cartesian space':rotate 30 -40\naxis 'xyzU':box\nxlabel 'x':ylabel 'y'\n" "origin 1 1:grid 'xy'\nmesh x y z\n\n" "# section along 'x' direction\nsolve u x 0.5 'x'\nvar v u.nx 0 1\n" "evaluate yy y u v\nevaluate xx x u v\nevaluate zz z u v\nplot xx yy zz 'k2o'\n\n" @@ -809,9 +809,9 @@ void smgl_fog(mglGraph *gr) } //----------------------------------------------------------------------------- const char *mmgl_map="new a 50 40 'x':new b 50 40 'y':zrange -2 2:text 0 0 '\\to'\n" -"subplot 2 1 0:text 0 1.1 '\\{x, y\\}' '' -2:box:map a b 'brgk' 0 0\n" +"subplot 2 1 0:text 0 1.1 '\\{x, y\\}' '' -2:box:map a b 'brgk'\n" "subplot 2 1 1:text 0 1.1 '\\{\\frac{x^3+y^3}{2}, \\frac{x-y}{2}\\}' '' -2\n" -"box:fill a '(x^3+y^3)/2':fill b '(x-y)/2':map a b 'brgk' 0 0\n"; +"box:fill a '(x^3+y^3)/2':fill b '(x-y)/2':map a b 'brgk'\n"; void smgl_map(mglGraph *gr) // example of mapping { mglData a(50, 40), b(50, 40); @@ -1101,7 +1101,7 @@ void smgl_several_light(mglGraph *gr) // several light sources } //----------------------------------------------------------------------------- const char *mmgl_surf3="call 'prepare3d'\nlight on:alpha on\n" -"subplot 2 2 0:title 'Surf3 plot (default)'\nrotate 50 60:box:surf3 c" +"subplot 2 2 0:title 'Surf3 plot (default)'\nrotate 50 60:box:surf3 c\n" "subplot 2 2 1:title '\"\\#\" style'\nrotate 50 60:box:surf3 c '#'\n" "subplot 2 2 2:title '\".\" style'\nrotate 50 60:box:surf3 c '.'\n"; void smgl_surf3(mglGraph *gr) @@ -1117,7 +1117,7 @@ void smgl_surf3(mglGraph *gr) gr->Rotate(50,60); gr->Box(); gr->Surf3(c,"."); } //----------------------------------------------------------------------------- -const char *mmgl_surf3a="call 'prepare3d'\ntitle 'Surf3 plot':rotate 50 60:light on:alpha on:box:surf3a c d"; +const char *mmgl_surf3a="call 'prepare3d'\ntitle 'Surf3A plot':rotate 50 60:light on:alpha on:box:surf3a c d"; void smgl_surf3a(mglGraph *gr) { mglData c,d; mgls_prepare3d(&c,&d); @@ -1126,7 +1126,7 @@ void smgl_surf3a(mglGraph *gr) gr->Box(); gr->Surf3A(c,d); } //----------------------------------------------------------------------------- -const char *mmgl_surf3c="call 'prepare3d'\ntitle 'Surf3 plot':rotate 50 60:light on:alpha on:box:surf3c c d"; +const char *mmgl_surf3c="call 'prepare3d'\ntitle 'Surf3C plot':rotate 50 60:light on:alpha on:box:surf3c c d"; void smgl_surf3c(mglGraph *gr) { mglData c,d; mgls_prepare3d(&c,&d); @@ -1436,7 +1436,7 @@ void smgl_cones(mglGraph *gr) gr->Rotate(50,60); gr->Box(); gr->Cones(ys,"a"); } //----------------------------------------------------------------------------- -const char *mmgl_aspect="subplot 2 2 0:box:text -1 1.1 'Just box' ':L'\ninplot 0.2 0.5 0.7 1:box:text 0 1.2 'InPlot example'\n" +const char *mmgl_aspect="subplot 2 2 0:box:text -1 1.1 'Just box' ':L'\ninplot 0.2 0.5 0.7 1 off:box:text 0 1.2 'InPlot example'\n" "subplot 2 2 1:title 'Rotate only':rotate 50 60:box\nsubplot 2 2 2:title 'Rotate and Aspect':rotate 50 60:aspect 1 1 2:box\n" "subplot 2 2 3:title 'Aspect in other direction':rotate 50 60:aspect 1 2 2:box\n"; void smgl_aspect(mglGraph *gr) // transformation @@ -1647,9 +1647,9 @@ const char *mmgl_primitives="subplot 2 2 0 '':title 'Line, Curve, Rhomb, Ellipse "cone 0 -0.3 0 0 0.7 0.5 0.2 0.1 'g@':text 0 -0.7 'with edges\\n('\\@' style)'\n" "cone 0.7 -0.3 0 0.7 0.7 0.5 0.2 0.1 'ry':text 0.7 -0.7 '\"arrow\" with\\n{}gradient'\n\n" "subplot 2 2 2 '':title 'Sphere and Drop'\nline -0.9 0 1 0.9 0 1\n" -"text -0.9 0.4 'sh=0':drop -0.9 0 0 1 0.5 'r' 0:ball -0.9 0 1 'k'n" -"text -0.3 0.6 'sh=0.33':drop -0.3 0 0 1 0.5 'r' 0.33:ball -0.3 0 1 'k'n" -"text 0.3 0.8 'sh=0.67':drop 0.3 0 0 1 0.5 'r' 0.67:ball 0.3 0 1 'k'n" +"text -0.9 0.4 'sh=0':drop -0.9 0 0 1 0.5 'r' 0:ball -0.9 0 1 'k'\n" +"text -0.3 0.6 'sh=0.33':drop -0.3 0 0 1 0.5 'r' 0.33:ball -0.3 0 1 'k'\n" +"text 0.3 0.8 'sh=0.67':drop 0.3 0 0 1 0.5 'r' 0.67:ball 0.3 0 1 'k'\n" "text 0.9 1. 'sh=1':drop 0.9 0 0 1 0.5 'r' 1:ball 0.9 0 1 'k'\n\n" "text -0.9 -1.1 'asp=0.33':drop -0.9 -0.7 0 1 0.5 'b' 0 0.33\n" "text -0.3 -1.1 'asp=0.67':drop -0.3 -0.7 0 1 0.5 'b' 0 0.67\n" diff --git a/include/mgl2/base.h b/include/mgl2/base.h index d66fbe7..e425797 100644 --- a/include/mgl2/base.h +++ b/include/mgl2/base.h @@ -244,16 +244,16 @@ public: void SetRanges(mglPoint v1, mglPoint v2); /// Set values of mglGraph::Cmin and mglGraph::Cmax as minimal and maximal values of data a void CRange(HCDT a, bool add = false, mreal fact=0); - inline void CRange(mreal v1,mreal v2) { if(v1!=v2) {Min.c=v1; Max.c=v2; RecalcCRange();} } + inline void CRange(mreal v1,mreal v2) { if(v1!=v2) {OMin.c=Min.c=v1; OMax.c=Max.c=v2; RecalcCRange();} } /// Set values of mglGraph::Min.x and mglGraph::Max.x as minimal and maximal values of data a void XRange(HCDT a, bool add = false, mreal fact=0); - inline void XRange(mreal v1,mreal v2) { if(v1!=v2) {Min.x=v1; Max.x=v2; RecalcBorder();} } + inline void XRange(mreal v1,mreal v2) { if(v1!=v2) {OMin.x=Min.x=v1; OMax.x=Max.x=v2; RecalcBorder();} } /// Set values of mglGraph::Min.x and mglGraph::Max.x as minimal and maximal values of data a void YRange(HCDT a, bool add = false, mreal fact=0); - inline void YRange(mreal v1,mreal v2) { if(v1!=v2) {Min.y=v1; Max.y=v2; RecalcBorder();} } + inline void YRange(mreal v1,mreal v2) { if(v1!=v2) {OMin.y=Min.y=v1; OMax.y=Max.y=v2; RecalcBorder();} } /// Set values of mglGraph::Min.x and mglGraph::Max.x as minimal and maximal values of data a void ZRange(HCDT a, bool add = false, mreal fact=0); - inline void ZRange(mreal v1,mreal v2) { if(v1!=v2) {Min.z=v1; Max.z=v2; RecalcBorder();} } + inline void ZRange(mreal v1,mreal v2) { if(v1!=v2) {OMin.z=Min.z=v1; OMax.z=Max.z=v2; RecalcBorder();} } /// Set ranges for automatic variables void SetAutoRanges(mreal x1, mreal x2, mreal y1=0, mreal y2=0, mreal z1=0, mreal z2=0, mreal c1=0, mreal c2=0); /// Set axis origin diff --git a/include/mgl2/define.h b/include/mgl2/define.h index fc4e279..249e6b8 100644 --- a/include/mgl2/define.h +++ b/include/mgl2/define.h @@ -22,7 +22,7 @@ //----------------------------------------------------------------------------- #include "mgl2/config.h" -#define MGL_VER2 1.0 +#define MGL_VER2 1.1 //----------------------------------------------------------------------------- #ifdef WIN32 //_MSC_VER needs this before math.h #define _USE_MATH_DEFINES diff --git a/include/mgl2/mgl_cf.h b/include/mgl2/mgl_cf.h index 279d647..a0f4902 100644 --- a/include/mgl2/mgl_cf.h +++ b/include/mgl2/mgl_cf.h @@ -40,7 +40,16 @@ #include //----------------------------------------------------------------------------- #if MGL_HAVE_OPENGL -#include +#ifdef __cplusplus +extern "C" { +#endif +//----------------------------------------------------------------------------- +HMGL mgl_create_graph_gl(); +uintptr_t mgl_create_graph_gl_(); +//----------------------------------------------------------------------------- +#ifdef __cplusplus +} +#endif #endif //----------------------------------------------------------------------------- #endif diff --git a/include/mgl2/opengl.h b/include/mgl2/opengl.h index a68aca1..c4687a1 100644 --- a/include/mgl2/opengl.h +++ b/include/mgl2/opengl.h @@ -20,9 +20,8 @@ #ifndef MGL_CANVAS_GL_H #define MGL_CANVAS_GL_H //----------------------------------------------------------------------------- -#ifdef __cplusplus #include "mgl2/canvas.h" - +//----------------------------------------------------------------------------- class mglCanvasGL : public mglCanvas { public: @@ -55,15 +54,6 @@ protected: void LightScale(); void set_pen(unsigned style,mreal width); }; -extern "C" { -#endif -//----------------------------------------------------------------------------- -HMGL mgl_create_graph_gl(); -uintptr_t mgl_create_graph_gl_(); -//----------------------------------------------------------------------------- -#ifdef __cplusplus -} -#endif //----------------------------------------------------------------------------- #endif diff --git a/include/mgl2/parser.h b/include/mgl2/parser.h index bd7d93f..3532a78 100644 --- a/include/mgl2/parser.h +++ b/include/mgl2/parser.h @@ -42,10 +42,12 @@ struct mglCommand const char *desc; ///< Short command description (can be NULL) const char *form; ///< Format of command arguments (can be NULL) /// Function for executing (plotting) - int (*exec)(mglGraph *gr, long n, mglArg *a, int k[10], const char *opt); - /// Function for exporting in C++ (can be NULL) - void (*save)(wchar_t out[1024], long n, mglArg *a, int k[10], const char *opt); - int type; ///< Type of command: 0 - data plot, 1 - other plot, 2 - setup, 3 - data handle, 4 - data create, 5 - subplot, 6 - program + int (*exec)(mglGraph *gr, long n, mglArg *a, const char *k, const char *opt); + /// Type of command: 0 - data plot, 1 - other plot, + /// 2 - setup, 3 - data handle, 4 - data create, 5 - subplot, 6 - program + /// 7 - 1d plot, 8 - 2d plot, 9 - 3d plot, 10 - dd plot, 11 - vector plot + /// 12 - axis, 13 - primitives, 14 - axis setup, 15 - text/legend, 16 - data transform + int type; }; extern mglCommand mgls_base_cmd[]; //----------------------------------------------------------------------------- @@ -112,10 +114,6 @@ public: inline int Parse(HMGL gr, const wchar_t *str, long pos=0) { mglGraph GR(gr); return Parse(&GR,str,pos); } int Parse(mglGraph *gr, const wchar_t *str, long pos=0); - /// Parse, execute and export it in C++ code the string of MGL script - inline int Export(wchar_t cpp_out[1024], HMGL gr, const wchar_t *str) - { mglGraph GR(gr); return Export(cpp_out,&GR,str); } - int Export(wchar_t cpp_out[1024], mglGraph *gr, const wchar_t *str); /// Execute MGL script file fname inline void Execute(HMGL gr, FILE *fp, bool print=false) { mglGraph GR(gr); Execute(&GR,fp,print); } @@ -165,8 +163,6 @@ public: private: // long parlen; ///< Length of parameter strings std::wstring par[40]; ///< Parameter for substituting instead of $1, ..., $9 - wchar_t *out; ///< Buffer for writing C++ code (if not NULL) -// wchar_t leg[128]; ///< Buffer for legend bool Once; ///< Flag for command which should be executed only once bool Skip; ///< Flag that commands should be skiped (inside 'once' block) int if_stack[40]; ///< Stack for if-else-endif commands diff --git a/include/mgl2/qmathgl.h b/include/mgl2/qmathgl.h index b4c4173..44b902b 100644 --- a/include/mgl2/qmathgl.h +++ b/include/mgl2/qmathgl.h @@ -70,6 +70,7 @@ public: bool getLight() {return light;} ///< Get lightning state bool getZoom() {return zoom;} ///< Get mouse zooming state bool getRotate(){return rotate;} ///< Get mouse rotation state + bool getViewYZ(){return viewYZ;} ///< Get mouse rotation axis bool isActive(int xs,int ys); ///< Check if active point is pressed public slots: @@ -86,6 +87,7 @@ public slots: void setLight(bool l); ///< Switch on/off lightning void setGrid(bool r); ///< Switch on/off grid drawing void imgSize(int w, int h); ///< Set image size + void setViewYZ(bool v); ///< Switch on/off rotation around Y and Z axis void setZoom(bool z); ///< Switch on/off mouse zooming void setRotate(bool r); ///< Switch on/off mouse rotation @@ -144,6 +146,7 @@ signals: void zoomChanged(bool); ///< Zooming changed (by toolbar) void rotateChanged(bool); ///< Rotation changed (by toolbar) void usePrimChanged(bool); ///< Use primitive changed (i.e. have or not drawing function) + void viewYZChanged(bool); ///< Rotation axis changed (by toolbar) void mouseClick(mreal,mreal,mreal); ///< Position of mouse click void frameChanged(int); ///< Need another frame to show void showWarn(QString); ///< Show warnings @@ -176,6 +179,7 @@ protected: bool zoom; ///< Mouse zoom state bool grid; ///< Grid drawing state bool rotate; ///< Mouse rotation state + bool viewYZ; ///< Set mouse rotation around Y and Z axis (instead of X and Z) mreal x1,x2,y1,y2; ///< Zoom in region mreal ax1,ax2,ay1,ay2; ///< Axis range zoom bool showMessage; ///< Flag for showing messages (enabled by each execute()) diff --git a/lang/CMakeLists.txt b/lang/CMakeLists.txt index a9205ba..9c1a717 100644 --- a/lang/CMakeLists.txt +++ b/lang/CMakeLists.txt @@ -17,6 +17,7 @@ if(MGL_HAVE_PYTHON) set(SWIG_MODULE_mathgl_EXTRA_DEPS numpy.i ${src_imp_dep}) SWIG_ADD_MODULE(mathgl python mathgl.i) SWIG_LINK_LIBRARIES(mathgl mgl ${PYTHON_LIBRARIES}) + set_target_properties(_mathgl PROPERTIES BUILD_WITH_INSTALL_RPATH ON) add_custom_command(OUTPUT mathgl.pyc COMMAND ${PYTHON_EXECUTABLE} -c \"from py_compile import compile\; compile('mathgl.py')\" WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/lang @@ -48,15 +49,16 @@ message(STATUS "${oct_prog} ${oct_host} ${oct_api}") SET(SWIG_MODULE_mgl-oct_EXTRA_DEPS numpy.i ${src_imp_dep}) SWIG_ADD_MODULE(mgl-oct octave mathgl.i) SWIG_LINK_LIBRARIES(mgl-oct mgl) - set_target_properties(mgl-oct PROPERTIES OUTPUT_NAME mathgl PREFIX "" SUFFIX ".oct") + set_target_properties(mgl-oct PROPERTIES OUTPUT_NAME mathgl PREFIX "" SUFFIX ".oct" BUILD_WITH_INSTALL_RPATH ON) + get_target_property(mgl-oct_filename mgl-oct LOCATION) add_custom_command(OUTPUT mathgl.tar.gz COMMAND ${CMAKE_COMMAND} -E make_directory ${mgl_pkg_dir} COMMAND ${CMAKE_COMMAND} -E copy ${MathGL_SOURCE_DIR}/COPYING ${MathGL_BINARY_DIR}/lang/${pkg_name} COMMAND ${CMAKE_COMMAND} -E copy ${MathGL_SOURCE_DIR}/lang/DESCRIPTION ${MathGL_BINARY_DIR}/lang/${pkg_name} COMMAND ${CMAKE_COMMAND} -E copy ${MathGL_SOURCE_DIR}/lang/INDEX ${MathGL_BINARY_DIR}/lang/${pkg_name} COMMAND ${CMAKE_COMMAND} -E copy ${MathGL_SOURCE_DIR}/lang/PKG_ADD_template ${MathGL_BINARY_DIR}/lang/${pkg_name} - COMMAND ${CMAKE_COMMAND} -E copy $ ${mgl_pkg_dir} - COMMAND ${oct_tar} cpzvf mathgl.tar.gz ${pkg_name} + COMMAND ${CMAKE_COMMAND} -E copy ${mgl-oct_filename} ${mgl_pkg_dir} + COMMAND ${oct_tar} cpzf mathgl.tar.gz ${pkg_name} WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/lang DEPENDS mgl-oct ) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index a9e5e7c..b9d9aac 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -115,6 +115,6 @@ set_target_properties(mgl PROPERTIES SOVERSION 7.0.0) install( TARGETS mgl mgl-static RUNTIME DESTINATION bin - ARCHIVE DESTINATION lib - LIBRARY DESTINATION lib + ARCHIVE DESTINATION ${MGL_LIB_INSTALL_DIR} + LIBRARY DESTINATION ${MGL_LIB_INSTALL_DIR} ) diff --git a/src/axis.cpp b/src/axis.cpp index 95035e2..7768fde 100644 --- a/src/axis.cpp +++ b/src/axis.cpp @@ -24,7 +24,8 @@ #include "mgl2/prim.h" //----------------------------------------------------------------------------- #define islog(a, b) (((a)>0 && (b)>10*(a)) || ((b)<0 && (a)<10*(b))) -#define sign(a) ((a)<0 ? -1:1) +// NOTE: I use <=0 for proper tick labels rotation. But this mirror labels for central origin! +#define sign(a) ((a)<=0 ? -1:1) //----------------------------------------------------------------------------- inline struct tm* mgl_localtime (const time_t *clock, struct tm *result, bool use_utc) { if (!clock || !result) return NULL; @@ -101,9 +102,9 @@ void mglCanvas::SetTicksVal(char dir, HCDT v, const wchar_t *lbl, bool add) //----------------------------------------------------------------------------- void mglCanvas::SetTicksVal(char dir, HCDT v, const char *lbl, bool add) { - long ll=strlen(lbl); - wchar_t *wcs = new wchar_t[ll+1]; - mbstowcs(wcs,lbl,ll); wcs[ll]=0; + long ll=mbstowcs(0,lbl,0)+1; + wchar_t *wcs = new wchar_t[ll]; + mbstowcs(wcs,lbl,ll); SetTicksVal(dir,v,wcs,add); delete []wcs; } @@ -153,7 +154,7 @@ void mglCanvas::SetTicksVal(char dir, HCDT v, const char **lbl, bool add) if(!v || !lbl) { aa.f = 0; return; } aa.f = 2; aa.ns=0; aa.ds=0; register size_t i,n=v->GetNx(),l=0; - for(i=0;il) l=strlen(lbl[i]); + for(i=0;il) l=mbstowcs(0,lbl[i],0)+1; wchar_t *str=new wchar_t[l+1]; for(i=0;i0 ? 't':'T'; + if(ts>0 && tet && nn.x==0) pos[2]='R'; text_plot(kk[i], aa.txt[i].text.c_str(), pos, -1, aa.sh+0.07,CDef,tet?false:true); } delete []w; delete []kk; @@ -632,7 +633,7 @@ void mglCanvas::Grid(const char *dir, const char *pen, const char *opt) if(!dir || !dir[0]) dir="xyz"; AdjustTicks(dir,false); SetPenPal(pen); - // TODO: Ternary axis labeling ... + static int cgid=1; StartGroup("AxisGrid",cgid++); if(strchr(dir,'x')) DrawGrid(ax); if(strchr(dir,'y')) DrawGrid(ay); @@ -689,7 +690,7 @@ void mglCanvas::DrawGrid(mglAxis &aa) //----------------------------------------------------------------------------- void mglCanvas::Label(char dir, const char *str, mreal pos, const char *opt) { - size_t s = strlen(str)+1; + size_t s = mbstowcs(0,str,0)+1; wchar_t *wcs = new wchar_t[s]; mbstowcs(wcs,str,s); Labelw(dir, wcs, pos, opt); diff --git a/src/base.cpp b/src/base.cpp index 71085bf..083a829 100644 --- a/src/base.cpp +++ b/src/base.cpp @@ -1134,8 +1134,8 @@ void mglBase::AddLegend(const wchar_t *text,const char *style) //----------------------------------------------------------------------------- void mglBase::AddLegend(const char *str,const char *style) { - if(!str) return; - size_t s = strlen(str)+1; + if(!str || *str==0) return; + size_t s = mbstowcs(0,str,0)+1; wchar_t *wcs = new wchar_t[s]; mbstowcs(wcs,str,s); AddLegend(wcs, style); diff --git a/src/canvas.cpp b/src/canvas.cpp index 6494512..9e92f5a 100644 --- a/src/canvas.cpp +++ b/src/canvas.cpp @@ -426,6 +426,7 @@ pthread_mutex_lock(&mutexPtx); mglColor mc(ch); if(!ch) mc = col<0 ? mglColor(char(0.5-col)):Txt[long(col)].GetC(col); +// if(!get(MGL_ENABLE_RTEXT)) mglPrim a(6); a.n1 = p; a.n2 = int(255*mc.r) + 256*(int(255*mc.g) + 256*int(255*mc.b)); mglText txt(text,font); @@ -464,7 +465,9 @@ pthread_mutex_unlock(&mutexPtx); void mglCanvas::Glyph(mreal x, mreal y, mreal f, int s, long j, mreal col) { mglPrim a(4); // NOTE: no projection since text_plot() did it - a.s = fscl/B.pf; a.w = ftet; a.p = f/fnt->GetFact(s&3); + a.s = fscl/B.pf; + a.w = get(MGL_ENABLE_RTEXT)?ftet:1e5; + a.p = f/fnt->GetFact(s&3); mreal cc = col<0 ? AddTexture(char(0.5-col)):col; if(cc<0) cc = CDef; a.n1 = AddPnt(mglPoint(B.x,B.y,B.z), cc, mglPoint(x,y,NAN), -1, -1); @@ -735,7 +738,7 @@ void mglCanvas::Legend(const std::vector &leg, mreal x, mreal y, const nrow = 1+(n-1)/j; ncol = (n+nrow-1)/nrow; } - x = x*(iw-w*ncol-2*dx)+B.x-iw/2+dx; // TODO bypass very long legends + x = x*(iw-w*ncol-2*dx)+B.x-iw/2+dx; y = y*(ih-h*nrow-2*dy)+B.y-ih/2+dy; // draw it long k1=0,k2=0,k3=0,k4=0; @@ -876,7 +879,7 @@ void mglCanvas::Table(mreal x, mreal y, HCDT val, const wchar_t *text, const cha void mglCanvas::Title(const char *title,const char *stl,mreal size) { if(!title) title=""; - size_t s = strlen(title)+1; + size_t s = mbstowcs(0,title,0)+1; wchar_t *wcs = new wchar_t[s]; mbstowcs(wcs,title,s); Title(wcs, stl,size); diff --git a/src/cont.cpp b/src/cont.cpp index 08d0c64..250baab 100644 --- a/src/cont.cpp +++ b/src/cont.cpp @@ -148,7 +148,7 @@ void mgl_textw_y(HMGL gr, HCDT y, const wchar_t *text, const char *font, const c //----------------------------------------------------------------------------- void mgl_text_xyz(HMGL gr, HCDT x, HCDT y, HCDT z,const char *text, const char *font, const char *opt) { - size_t s = strlen(text)+1; + size_t s = mbstowcs(0,text,0)+1; wchar_t *wcs = new wchar_t[s]; mbstowcs(wcs,text,s); mgl_textw_xyz(gr,x,y,z, wcs, font, opt); diff --git a/src/data.cpp b/src/data.cpp index 90cb1c8..9e11465 100644 --- a/src/data.cpp +++ b/src/data.cpp @@ -930,7 +930,7 @@ mreal mglSpline3(const mreal *a, long nx, long ny, long nz, mreal x, mreal y, mr else if(nz>3 && kz==nz-2) { kk=2; } for(long k=0;k<4;k++) { - mglFillP(kx, ky, a+(kz+k-kk)*nx*ny, nx, ny, _p); + if(kz+k-kkAddLegend(a[0].w.c_str(),a[1].s.c_str()); - else return 1; - return 0; + int res=0; + if(!strcmp(k,"ss")) gr->AddLegend(a[0].w.c_str(),a[1].s.c_str()); + else res = 1; return res; } -void mglc_addlegend(wchar_t out[1024], long , mglArg *a, int k[10], const char *) -{ if(k[0]==2 && k[1]==2) mglprintf(out,1024,L"gr->AddLegend(L\"%ls\", \"%s\");",a[0].w.c_str(),a[1].s.c_str()); } //----------------------------------------------------------------------------- -int mgls_addto(mglGraph *, long , mglArg *a, int k[10], const char *) +int mgls_addto(mglGraph *, long , mglArg *a, const char *k, const char *) { - if(k[0]==1 && k[1]==1) *(a[0].d) += *(a[1].d); - else if(k[0]==1 && k[1]==3) *(a[0].d) += a[1].v; - else return 1; - return 0; -} -void mglc_addto(wchar_t out[1024], long , mglArg *a, int k[10], const char *) -{ - if(k[0]==1 && k[1]==1) mglprintf(out,1024,L"%s += %s;",a[0].s.c_str(), a[1].s.c_str()); - else if(k[0]==1 && k[1]==3) mglprintf(out,1024,L"%s += %g;",a[0].s.c_str(), a[1].v); + int res=0; + if(!strcmp(k,"dd")) *(a[0].d) += *(a[1].d); + else if(!strcmp(k,"dn"))*(a[0].d) += a[1].v; + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_sort(mglGraph *, long , mglArg *a, int k[10], const char *) -{ - if(k[0]==1 && k[1]==3) a[0].d->Sort(a[1].v, k[2]==3?a[2].v:-1); - else return 1; - return 0; -} -void mglc_sort(wchar_t out[1024], long , mglArg *a, int k[10], const char *) +int mgls_sort(mglGraph *, long , mglArg *a, const char *k, const char *) { - if(k[0]==1 && k[1]==3) mglprintf(out,1024,L"%s.Sort(%d,%d);",a[0].s.c_str(), a[1].v, k[2]==3?a[2].v:-1); + int res=0; + if(!strcmp(k,"dn")) a[0].d->Sort(a[1].v, -1); + else if(!strcmp(k,"dnn")) a[0].d->Sort(a[1].v, a[2].v); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_alpha(mglGraph *gr, long , mglArg *a, int k[10], const char *) +int mgls_alpha(mglGraph *gr, long , mglArg *a, const char *k, const char *) { - gr->Alpha(k[0]==3 ? a[0].v!=0 : true); return 0; -} -void mglc_alpha(wchar_t out[1024], long , mglArg *a, int k[10], const char *) -{ - mglprintf(out,1024,L"gr->Alpha(%s);",(k[0]==3&&a[0].v!=0)?"true":"false"); + int res=0; + if(!strcmp(k,"")) gr->Alpha(true); + else if(!strcmp(k,"n")) gr->Alpha(a[0].v!=0); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_plotid(mglGraph *gr, long , mglArg *a, int k[10], const char *) -{ - if(k[0]==2) gr->SetPlotId(a[1].s.c_str()); - else return 1; - return 0; -} -void mglc_plotid(wchar_t out[1024], long , mglArg *a, int k[10], const char *) +int mgls_plotid(mglGraph *gr, long , mglArg *a, const char *k, const char *) { - if(k[0]==2) mglprintf(out,1024,L"gr->SetPlotId(\"%s\");",a[0].s.c_str()); + int res=0; + if(!strcmp(k,"s")) gr->SetPlotId(a[1].s.c_str()); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_alphadef(mglGraph *gr, long , mglArg *a, int k[10], const char *) +int mgls_alphadef(mglGraph *gr, long , mglArg *a, const char *k, const char *) { - if(k[0]==3) gr->SetAlphaDef(a[0].v); else return 1; - return 0; + int res=0; + if(!strcmp(k,"n")) gr->SetAlphaDef(a[0].v); + else res = 1; return res; } -void mglc_alphadef(wchar_t out[1024], long , mglArg *a, int k[10], const char *) -{ if(k[0]==3) mglprintf(out,1024,L"gr->SetAlphaDef(%g);",a[0].v); } //----------------------------------------------------------------------------- -int mgls_ambient(mglGraph *gr, long , mglArg *a, int k[10], const char *) +int mgls_ambient(mglGraph *gr, long , mglArg *a, const char *k, const char *) { - if(k[0]==3) gr->SetAmbient(a[0].v); else return 1; - return 0; + int res=0; + if(!strcmp(k,"n")) gr->SetAmbient(a[0].v); + else res = 1; return res; } -void mglc_ambient(wchar_t out[1024], long , mglArg *a, int k[10], const char *) -{ if(k[0]==3) mglprintf(out,1024,L"gr->SetAmbient(%g);",a[0].v); } //----------------------------------------------------------------------------- -int mgls_area(mglGraph *gr, long , mglArg *a, int k[10], const char *opt) +int mgls_area(mglGraph *gr, long , mglArg *a, const char *k, const char *opt) { - if(k[0]!=1) return 1; - else if(k[1]!=1) gr->Area(*(a[0].d),k[1]==2?a[1].s.c_str():"",opt); - else if(k[2]!=1) gr->Area(*(a[0].d),*(a[1].d),k[2]==2?a[2].s.c_str():"",opt); - else gr->Area(*(a[0].d),*(a[1].d),*(a[2].d),k[3]==2?a[3].s.c_str():"",opt); - return 0; -} -void mglc_area(wchar_t out[1024], long , mglArg *a, int k[10], const char *opt) -{ - if(k[0]!=1) return; - else if(k[1]!=1) - mglprintf(out,1024,L"gr->Area(%s, \"%s\", \"%s\");",a[0].s.c_str(), k[1]==2?a[1].s.c_str():"",opt); - else if(k[2]!=1) - mglprintf(out,1024,L"gr->Area(%s, %s, \"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(), k[2]==2?a[2].s.c_str():"",opt); - else mglprintf(out,1024,L"gr->Area(%s, %s, %s, \"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), k[3]==2?a[3].s.c_str():"",opt); + int res=0; + if(!strcmp(k,"d")) gr->Area(*(a[0].d),"",opt); + else if(!strcmp(k,"ds")) gr->Area(*(a[0].d),a[1].s.c_str(),opt); + else if(!strcmp(k,"dd")) gr->Area(*(a[0].d),*(a[1].d),"",opt); + else if(!strcmp(k,"dds")) gr->Area(*(a[0].d),*(a[1].d),a[2].s.c_str(),opt); + else if(!strcmp(k,"ddd")) gr->Area(*(a[0].d),*(a[1].d),*(a[2].d),"",opt); + else if(!strcmp(k,"ddds")) gr->Area(*(a[0].d),*(a[1].d),*(a[2].d),a[3].s.c_str(),opt); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_aspect(mglGraph *gr, long , mglArg *a, int k[10], const char *) -{ - if(k[0]==3 && k[1]==3) gr->Aspect(a[0].v, a[1].v, k[2]==3?a[2].v:1); - else return 1; - return 0; -} -void mglc_aspect(wchar_t out[1024], long , mglArg *a, int k[10], const char *) +int mgls_aspect(mglGraph *gr, long , mglArg *a, const char *k, const char *) { - if(k[0]==3 && k[1]==3) - mglprintf(out,1024,L"gr->Aspect(%g, %g, %g);", a[0].v, a[1].v, k[2]==3?a[2].v:1); + int res=0; + if(!strcmp(k,"nn")) gr->Aspect(a[0].v, a[1].v, 1); + else if(!strcmp(k,"nnn")) gr->Aspect(a[0].v, a[1].v, a[2].v); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_axial(mglGraph *gr, long , mglArg *a, int k[10], const char *opt) +int mgls_axial(mglGraph *gr, long , mglArg *a, const char *k, const char *opt) { - if(k[0]!=1) return 1; - else if(k[1]!=1) gr->Axial(*(a[0].d),k[1]==2?a[1].s.c_str():"",opt); - else if(k[1]==1 && k[2]==1) - gr->Axial(*(a[0].d),*(a[1].d),*(a[2].d),k[3]==2?a[3].s.c_str():"",opt); - else return 1; - return 0; -} -void mglc_axial(wchar_t out[1024], long , mglArg *a, int k[10], const char *opt) -{ - if(k[0]!=1) return; - else if(k[1]!=1) - mglprintf(out,1024,L"gr->Axial(%s, \"%s\", \"%s\");", a[0].s.c_str(),k[1]==2?a[1].s.c_str():"",opt); - else if(k[1]==1 && k[2]==1) - mglprintf(out,1024,L"gr->Axial(%s, %s, %s, \"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), k[3]==2?a[3].s.c_str():"",opt); + int res=0; + if(!strcmp(k,"d")) gr->Axial(*(a[0].d),"",opt); + else if(!strcmp(k,"ds")) gr->Axial(*(a[0].d),a[1].s.c_str(),opt); + else if(!strcmp(k,"ddd")) gr->Axial(*(a[0].d),*(a[1].d),*(a[2].d),"",opt); + else if(!strcmp(k,"ddds")) gr->Axial(*(a[0].d),*(a[1].d),*(a[2].d),a[3].s.c_str(),opt); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_axis(mglGraph *gr, long , mglArg *a, int k[10], const char *opt) -{ - if(k[0]==2 && k[1]==2 && k[2]==2) gr->SetFunc(a[0].s.c_str(),a[1].s.c_str(),a[2].s.c_str(),k[3]==2?a[3].s.c_str():""); - else if(k[0]==2) gr->Axis(a[0].s.c_str(), k[1]==2?a[1].s.c_str():"",opt); - else if(k[0]==3) gr->SetCoor(iint(a[0].v)); - else if(k[0]==0) gr->Axis("xyz","",opt); - else return 1; - return 0; -} -void mglc_axis(wchar_t out[1024], long , mglArg *a, int k[10], const char *opt) +int mgls_axis(mglGraph *gr, long , mglArg *a, const char *k, const char *opt) { - if(k[0]==2 && k[1]==2 && k[2]==2) - mglprintf(out,1024,L"gr->SetFunc(\"%s\", \"%s\", \"%s\", \"%s\");", a[0].s.c_str(),a[1].s.c_str(),a[2].s.c_str(),k[2]==2?a[2].s.c_str():"",k[3]==2?a[3].s.c_str():""); - else if(k[0]==2) mglprintf(out,1024,L"gr->Axis(\"%s\", \"%s\",\"%s\");", a[0].s.c_str(), k[1]==2?a[1].s.c_str():"",opt); - else if(k[0]==3) mglprintf(out,1024,L"gr->SetCoor(\"%d\");", iint(a[0].v)); - else if(k[0]==0) mglprintf(out,1024,L"gr->Axis(\"xyz\",\"\",\"%s\");",opt); + int res=0; + if(!strcmp(k,"")) gr->Axis("xyz","",opt); + else if(!strcmp(k,"s")) gr->Axis(a[0].s.c_str(), "",opt); + else if(!strcmp(k,"ss")) gr->Axis(a[0].s.c_str(), a[1].s.c_str(),opt); + else if(!strcmp(k,"sss")) gr->SetFunc(a[0].s.c_str(),a[1].s.c_str(),a[2].s.c_str(),""); + else if(!strcmp(k,"ssss")) gr->SetFunc(a[0].s.c_str(),a[1].s.c_str(),a[2].s.c_str(),a[3].s.c_str()); + else if(!strcmp(k,"n")) gr->SetCoor(iint(a[0].v)); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_ball(mglGraph *gr, long , mglArg *a, int k[10], const char *) -{ - if(k[0]==3 && k[1]==3 && k[2]==3) - gr->Mark(mglPoint(a[0].v,a[1].v,a[2].v),k[3]==2 ? a[3].s.c_str():"r."); - else if(k[0]==3 && k[1]==3) - gr->Mark(mglPoint(a[0].v,a[1].v,NAN),k[2]==2 ? a[2].s.c_str():"r."); - else return 1; - return 0; -} -void mglc_ball(wchar_t out[1024], long , mglArg *a, int k[10], const char *) +int mgls_ball(mglGraph *gr, long , mglArg *a, const char *k, const char *) { - if(k[0]==3 && k[1]==3 && k[2]==3) - mglprintf(out,1024,L"gr->Mark(mglPoint(%g, %g, %g), \"%s\");", a[0].v,a[1].v,a[2].v,k[3]==2 ? a[3].s.c_str():"r."); - else if(k[0]==3 && k[1]==3) - mglprintf(out,1024,L"gr->Mark(mglPoint(%g, %g, NAN), \"%s\");", a[0].v, a[1].v, k[2]==2 ? a[2].s.c_str():"r."); + int res=0; + if(!strcmp(k,"nn")) gr->Mark(mglPoint(a[0].v,a[1].v,NAN),"r."); + else if(!strcmp(k,"nns")) gr->Mark(mglPoint(a[0].v,a[1].v,NAN),a[2].s.c_str()); + else if(!strcmp(k,"nnn")) gr->Mark(mglPoint(a[0].v,a[1].v,a[2].v),"r."); + else if(!strcmp(k,"nnns")) gr->Mark(mglPoint(a[0].v,a[1].v,a[2].v),a[3].s.c_str()); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_box(mglGraph *gr, long , mglArg *a, int k[10], const char *) +int mgls_box(mglGraph *gr, long , mglArg *a, const char *k, const char *) { - gr->Box(k[0]==2 ? a[0].s.c_str() : "", k[1]!=3 || a[1].v); return 0; + int res=0; + if(!strcmp(k,"")) gr->Box(); + else if(!strcmp(k,"s")) gr->Box(a[0].s.c_str()); + else if(!strcmp(k,"sn")) gr->Box(a[0].s.c_str(), a[1].v); + else res = 1; return res; } -void mglc_box(wchar_t out[1024], long , mglArg *a, int k[10], const char *) -{ mglprintf(out,1024,L"gr->Box(\"%s\", %s);", k[0]==2 ? a[0].s.c_str() : "", k[1]!=3 || a[1].v ? "true":"false"); } //----------------------------------------------------------------------------- -int mgls_bars(mglGraph *gr, long , mglArg *a, int k[10], const char *opt) -{ - if(k[0]!=1) return 1; - else if(k[1]!=1) gr->Bars(*(a[0].d), k[1]==2?a[1].s.c_str():"",opt); - else if(k[2]!=1) gr->Bars(*(a[0].d), *(a[1].d), k[2]==2?a[2].s.c_str():"",opt); - else gr->Bars(*(a[0].d), *(a[1].d), *(a[2].d), k[3]==2?a[3].s.c_str():"",opt); - return 0; -} -void mglc_bars(wchar_t out[1024], long , mglArg *a, int k[10], const char *opt) +int mgls_bars(mglGraph *gr, long , mglArg *a, const char *k, const char *opt) { - if(k[0]!=1) return; - else if(k[1]!=1) - mglprintf(out,1024,L"gr->Bars(%s, \"%s\", \"%s\");", a[0].s.c_str(), k[1]==2?a[1].s.c_str():"",opt); - else if(k[2]!=1) - mglprintf(out,1024,L"gr->Bars(%s, %s, \"%s\", \"%s\");",a[0].s.c_str(), a[1].s.c_str(), k[2]==2?a[2].s.c_str():"",opt); - else - mglprintf(out,1024,L"gr->Bars(%s, %s, %s, \"%s\", \"%s\");",a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), k[3]==2?a[3].s.c_str():"",opt); + int res=0; + if(!strcmp(k,"d")) gr->Bars(*(a[0].d), "",opt); + else if(!strcmp(k,"ds")) gr->Bars(*(a[0].d), a[1].s.c_str(),opt); + else if(!strcmp(k,"dd")) gr->Bars(*(a[0].d), *(a[1].d), "",opt); + else if(!strcmp(k,"dds")) gr->Bars(*(a[0].d), *(a[1].d), a[2].s.c_str(),opt); + else if(!strcmp(k,"ddd")) gr->Bars(*(a[0].d), *(a[1].d), *(a[2].d), "",opt); + else if(!strcmp(k,"ddds")) gr->Bars(*(a[0].d), *(a[1].d), *(a[2].d), a[3].s.c_str(),opt); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_barh(mglGraph *gr, long , mglArg *a, int k[10], const char *opt) -{ - if(k[0]!=1) return 1; - else if(k[1]!=1) gr->Barh(*(a[0].d), k[1]==2?a[1].s.c_str():"",opt); - else gr->Barh(*(a[0].d), *(a[1].d), k[2]==2?a[2].s.c_str():"",opt); - return 0; -} -void mglc_barh(wchar_t out[1024], long , mglArg *a, int k[10], const char *opt) +int mgls_barh(mglGraph *gr, long , mglArg *a, const char *k, const char *opt) { - if(k[0]!=1) return; - else if(k[1]!=1) - mglprintf(out,1024,L"gr->Barh(%s, \"%s\", \"%s\");", a[0].s.c_str(), k[1]==2?a[1].s.c_str():"",opt); - else - mglprintf(out,1024,L"gr->Barh(%s, %s, \"%s\", \"%s\");",a[0].s.c_str(), a[1].s.c_str(), k[2]==2?a[2].s.c_str():"",opt); + int res=0; + if(!strcmp(k,"d")) gr->Barh(*(a[0].d), "",opt); + else if(!strcmp(k,"ds")) gr->Barh(*(a[0].d), a[1].s.c_str(),opt); + else if(!strcmp(k,"dd")) gr->Barh(*(a[0].d), *(a[1].d), "",opt); + else if(!strcmp(k,"dds")) gr->Barh(*(a[0].d), *(a[1].d), a[2].s.c_str(),opt); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_cones(mglGraph *gr, long , mglArg *a, int k[10], const char *opt) +int mgls_cones(mglGraph *gr, long , mglArg *a, const char *k, const char *opt) { - if(k[0]!=1) return 1; - else if(k[1]!=1) gr->Cones(*(a[0].d), k[1]==2?a[1].s.c_str():"",opt); - else if(k[2]!=1) gr->Cones(*(a[0].d), *(a[1].d), k[2]==2?a[2].s.c_str():"",opt); - else gr->Cones(*(a[0].d), *(a[1].d), *(a[2].d), k[3]==2?a[3].s.c_str():"",opt); - return 0; -} -void mglc_cones(wchar_t out[1024], long , mglArg *a, int k[10], const char *opt) -{ - if(k[0]!=1) return; - else if(k[1]!=1) - mglprintf(out,1024,L"gr->Cones(%s, \"%s\", \"%s\");", a[0].s.c_str(), k[1]==2?a[1].s.c_str():"",opt); - else if(k[2]!=1) - mglprintf(out,1024,L"gr->Cones(%s, %s, \"%s\", \"%s\");",a[0].s.c_str(), a[1].s.c_str(), k[2]==2?a[2].s.c_str():"",opt); - else - mglprintf(out,1024,L"gr->Cones(%s, %s, %s, \"%s\", \"%s\");",a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), k[3]==2?a[3].s.c_str():"",opt); + int res=0; + if(!strcmp(k,"d")) gr->Cones(*(a[0].d), "",opt); + else if(!strcmp(k,"ds")) gr->Cones(*(a[0].d), a[1].s.c_str(),opt); + else if(!strcmp(k,"dd")) gr->Cones(*(a[0].d), *(a[1].d), "",opt); + else if(!strcmp(k,"dds")) gr->Cones(*(a[0].d), *(a[1].d), a[2].s.c_str(),opt); + else if(!strcmp(k,"ddd")) gr->Cones(*(a[0].d), *(a[1].d), *(a[2].d), "",opt); + else if(!strcmp(k,"ddds")) gr->Cones(*(a[0].d), *(a[1].d), *(a[2].d), a[3].s.c_str(),opt); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_belt(mglGraph *gr, long , mglArg *a, int k[10], const char *opt) -{ - if(k[0]!=1) return 1; - else if(k[1]!=1) gr->Belt(*(a[0].d),k[1]==2?a[1].s.c_str():"",opt); - else if(k[1]==1 && k[2]==1) gr->Belt(*(a[0].d),*(a[1].d),*(a[2].d),k[3]==2?a[3].s.c_str():"",opt); - else return 1; - return 0; -} -void mglc_belt(wchar_t out[1024], long , mglArg *a, int k[10], const char *opt) +int mgls_belt(mglGraph *gr, long , mglArg *a, const char *k, const char *opt) { - if(k[0]!=1) return; - else if(k[1]!=1) - mglprintf(out,1024,L"gr->Belt(%s, \"%s\", \"%s\");", a[0].s.c_str(),k[1]==2?a[1].s.c_str():"",opt); - else if(k[1]==1 && k[2]==1) - mglprintf(out,1024,L"gr->Belt(%s, %s, %s, \"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), k[3]==2?a[3].s.c_str():"",opt); + int res=0; + if(!strcmp(k,"d")) gr->Belt(*(a[0].d),"",opt); + else if(!strcmp(k,"ds")) gr->Belt(*(a[0].d),a[1].s.c_str(),opt); + else if(!strcmp(k,"ddd")) gr->Belt(*(a[0].d),*(a[1].d),*(a[2].d),"",opt); + else if(!strcmp(k,"ddds")) gr->Belt(*(a[0].d),*(a[1].d),*(a[2].d),a[3].s.c_str(),opt); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_boxs(mglGraph *gr, long , mglArg *a, int k[10], const char *opt) +int mgls_boxs(mglGraph *gr, long , mglArg *a, const char *k, const char *opt) { - if(k[0]!=1) return 1; - else if(k[1]!=1) gr->Boxs(*(a[0].d),k[1]==2?a[1].s.c_str():"",opt); - else if(k[1]==1 && k[2]==1) gr->Boxs(*(a[0].d),*(a[1].d),*(a[2].d),k[3]==2?a[3].s.c_str():"",opt); - else return 1; - return 0; -} -void mglc_boxs(wchar_t out[1024], long , mglArg *a, int k[10], const char *opt) -{ - if(k[0]!=1) return; - else if(k[1]!=1) - mglprintf(out,1024,L"gr->Boxs(%s, \"%s\", \"%s\");", a[0].s.c_str(),k[1]==2?a[1].s.c_str():"",opt); - else if(k[1]==1 && k[2]==1) - mglprintf(out,1024,L"gr->Boxs(%s, %s, %s, \"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), k[3]==2?a[3].s.c_str():"",opt); + int res=0; + if(!strcmp(k,"d")) gr->Boxs(*(a[0].d),"",opt); + else if(!strcmp(k,"ds")) gr->Boxs(*(a[0].d),a[1].s.c_str(),opt); + else if(!strcmp(k,"ddd")) gr->Boxs(*(a[0].d),*(a[1].d),*(a[2].d),"",opt); + else if(!strcmp(k,"ddds")) gr->Boxs(*(a[0].d),*(a[1].d),*(a[2].d),a[3].s.c_str(),opt); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_beam(mglGraph *gr, long , mglArg *a, int k[10], const char *) // NOTE beam can be made obsolete ??? -{ - if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==1 && k[4]==3) - gr->Beam(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),a[4].v, - k[5]==2? a[5].s.c_str():"",k[6]==3?iint(a[6].v):0, iint(k[7]==3?a[7].v:3)); - if(k[0]==3 && k[1]==1 && k[2]==1 && k[3]==1 && k[4]==1 && k[5]==3) - gr->Beam(a[0].v,*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),a[5].v, - k[6]==2? a[6].s.c_str():"",k[7]==3?iint(a[7].v):0); - else return 1; - return 0; -} -void mglc_beam(wchar_t out[1024], long , mglArg *a, int k[10], const char *) +int mgls_beam(mglGraph *gr, long , mglArg *a, const char *k, const char *) // NOTE beam can be made obsolete ??? { - if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==1 && k[4]==3) - mglprintf(out,1024,L"gr->Beam(%s, %s, %s, %s, %g, \"%s\", %d, %d);", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), a[3].s.c_str(), a[4].v, k[5]==2? a[5].s.c_str():"",k[6]==3?iint(a[6].v):0, iint(k[7]==3?a[7].v:3)); + int res=0; + if(!strcmp(k,"ddddn")) + gr->Beam(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),a[4].v,"",0, 3); + else if(!strcmp(k,"ddddns")) + gr->Beam(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),a[4].v,a[5].s.c_str(),0, 3); + else if(!strcmp(k,"ddddnsn")) + gr->Beam(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),a[4].v,a[5].s.c_str(),iint(a[6].v), 3); + else if(!strcmp(k,"ddddnsnn")) + gr->Beam(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),a[4].v,a[5].s.c_str(),iint(a[6].v), iint(a[7].v)); + else if(!strcmp(k,"nddddn")) + gr->Beam(a[0].v,*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),a[5].v,"",0); + else if(!strcmp(k,"nddddns")) + gr->Beam(a[0].v,*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),a[5].v,a[6].s.c_str(),0); + else if(!strcmp(k,"nddddnsn")) + gr->Beam(a[0].v,*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),a[5].v,a[6].s.c_str(),iint(a[7].v)); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_clearlegend(mglGraph *gr, long , mglArg *, int [10], const char *) -{ gr->ClearLegend(); return 0; } -void mglc_clearlegend(wchar_t out[1024], long , mglArg *, int [10], const char *) -{ mglprintf(out,1024,L"gr->ClearLegend();"); } -//----------------------------------------------------------------------------- -int mgls_clf(mglGraph *gr, long , mglArg *, int [10], const char *) -{ gr->Clf(); return 0; } -void mglc_clf(wchar_t out[1024], long , mglArg *, int [10], const char *) -{ mglprintf(out,1024,L"gr->Clf();"); } -//----------------------------------------------------------------------------- -int mgls_chart(mglGraph *gr, long , mglArg *a, int k[10], const char *opt) -{ - if(k[0]==1) gr->Chart(*(a[0].d), k[1]==2?a[1].s.c_str():"",opt); - else return 1; - return 0; -} -void mglc_chart(wchar_t out[1024], long , mglArg *a, int k[10], const char *opt) +int mgls_clearlegend(mglGraph *gr, long , mglArg *, const char *k, const char *) { - if(k[0]==3 && k[1]==3) mglprintf(out,1024,L"gr->Chart(%s, \"%s\", \"%s\");", a[0].s.c_str(), k[1]==2?a[1].s.c_str():"",opt); + int res=0; + if(!strcmp(k,"")) gr->ClearLegend(); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_cloud(mglGraph *gr, long , mglArg *a, int k[10], const char *opt) +int mgls_clf(mglGraph *gr, long , mglArg *, const char *k, const char *) { - if(k[0]!=1) return 1; - else if(k[1]!=1) gr->Cloud(*(a[0].d),k[1]==2?a[1].s.c_str():"",opt); - else if(k[1]==1 && k[2]==1 && k[3]==1) - gr->Cloud(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),k[4]==2?a[4].s.c_str():"",opt); - return 0; -} -void mglc_cloud(wchar_t out[1024], long , mglArg *a, int k[10], const char *opt) -{ - if(k[0]!=1) return; - else if(k[1]!=1) - mglprintf(out,1024,L"gr->Cloud(%s,\"%s\", \"%s\");",a[0].s.c_str(), k[1]==2?a[1].s.c_str():"",opt); - else if(k[1]==1 && k[2]==1 && k[3]==1) - mglprintf(out,1024,L"gr->Cloud(%s, %s, %s, %s, \"%s\", \"%s\");", a[0].s.c_str(),a[1].s.c_str(),a[2].s.c_str(),a[3].s.c_str(),k[4]==2?a[4].s.c_str():"",opt); + int res=0; + if(!strcmp(k,"")) gr->Clf(); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_crange(mglGraph *gr, long , mglArg *a, int k[10], const char *) -{ - if(k[0]==1) gr->SetRange('c',*(a[0].d),k[1]==3 && a[1].v!=0); - else if(k[0]==3 && k[1]==3) gr->SetRange('c', a[0].v, a[1].v); - else return 1; - return 0; -} -void mglc_crange(wchar_t out[1024], long , mglArg *a, int k[10], const char *) +int mgls_chart(mglGraph *gr, long , mglArg *a, const char *k, const char *opt) { - if(k[0]==1) - mglprintf(out,1024,L"gr->SetRange('c', %s, %s);",a[0].s.c_str(), (k[1]==3 && a[1].v!=0)?"true":"false"); - else if(k[0]==3 && k[1]==3) - mglprintf(out,1024,L"gr->SetRange('c', %g, %g);", a[0].v, a[1].v); + int res=0; + if(!strcmp(k,"d")) gr->Chart(*(a[0].d), "",opt); + else if(!strcmp(k,"ds")) gr->Chart(*(a[0].d), a[1].s.c_str(),opt); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_crop(mglGraph *, long , mglArg *a, int k[10], const char *) +int mgls_cloud(mglGraph *gr, long , mglArg *a, const char *k, const char *opt) { - if(k[0]==1 && k[1]==3 && k[2]==3 && k[3]==2) - a[0].d->Crop(iint(a[1].v),iint(a[2].v),a[3].s.c_str()[0]); - else return 1; - return 0; + int res=0; + if(!strcmp(k,"d")) gr->Cloud(*(a[0].d),"",opt); + else if(!strcmp(k,"ds")) gr->Cloud(*(a[0].d),a[1].s.c_str(),opt); + else if(!strcmp(k,"dddd")) gr->Cloud(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),"",opt); + else if(!strcmp(k,"dddds")) gr->Cloud(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),a[4].s.c_str(),opt); + else res = 1; return res; } -void mglc_crop(wchar_t out[1024], long , mglArg *a, int k[10], const char *) +//----------------------------------------------------------------------------- +int mgls_crange(mglGraph *gr, long , mglArg *a, const char *k, const char *) { - if(k[0]==1 && k[1]==3 && k[2]==3 && k[3]==2) - mglprintf(out,1024,L"%s.Crop(%d, %d, '%c');",a[0].s.c_str(), iint(a[1].v), iint(a[2].v), a[3].s.c_str()[0]); + int res=0; + if(!strcmp(k,"d")) gr->SetRange('c',*(a[0].d)); + else if(!strcmp(k,"dn")) gr->SetRange('c',*(a[0].d),a[1].v); + else if(!strcmp(k,"nn")) gr->SetRange('c', a[0].v, a[1].v); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_clean(mglGraph *, long , mglArg *a, int k[10], const char *) +int mgls_crop(mglGraph *, long , mglArg *a, const char *k, const char *) { - if(k[0]==1 && k[1]==3) - a[0].d->Clean(iint(a[1].v)); - else return 1; - return 0; + int res=0; + if(!strcmp(k,"dnns")) a[0].d->Crop(iint(a[1].v),iint(a[2].v),a[3].s.c_str()[0]); + else res = 1; return res; } -void mglc_clean(wchar_t out[1024], long , mglArg *a, int k[10], const char *) +//----------------------------------------------------------------------------- +int mgls_clean(mglGraph *, long , mglArg *a, const char *k, const char *) { - if(k[0]==1 && k[1]==3) - mglprintf(out,1024,L"%s.Clean(%d);",a[0].s.c_str(), iint(a[1].v)); + int res=0; + if(!strcmp(k,"dn")) a[0].d->Clean(iint(a[1].v)); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_cumsum(mglGraph *, long , mglArg *a, int k[10], const char *) +int mgls_cumsum(mglGraph *, long , mglArg *a, const char *k, const char *) { - if(k[0]==1 && k[1]==2) a[0].d->CumSum(a[1].s.c_str()); - else return 1; - return 0; + int res=0; + if(!strcmp(k,"ds")) a[0].d->CumSum(a[1].s.c_str()); + else res = 1; return res; } -void mglc_cumsum(wchar_t out[1024], long , mglArg *a, int k[10], const char *) -{ if(k[0]==1 && k[1]==2) mglprintf(out,1024,L"%s.CumSum(\"%s\");",a[0].s.c_str(), a[1].s.c_str()); } //----------------------------------------------------------------------------- -int mgls_curve(mglGraph *gr, long n, mglArg *a, int [10], const char *) +int mgls_curve(mglGraph *gr, long , mglArg *a, const char *k, const char *) { - register long i; - for(i=0;i<12;i++) if(i>=n || a[i].type!=2) break; - if(i==12) - gr->Curve(mglPoint(a[0].v,a[1].v,a[2].v), - mglPoint(a[3].v,a[4].v,a[5].v), - mglPoint(a[6].v,a[7].v,a[8].v), - mglPoint(a[9].v,a[10].v,a[11].v), - (n>12 && a[12].type==1) ? a[12].s.c_str() : 0); - else if(i==8) + int res=0; + if(!strcmp(k,"nnnnnnnn")) gr->Curve(mglPoint(a[0].v,a[1].v,NAN), mglPoint(a[2].v,a[3].v), mglPoint(a[4].v,a[5].v,NAN), - mglPoint(a[6].v,a[7].v), - (n>8 && a[8].type==1) ? a[8].s.c_str() : 0); - return 0; -} -void mglc_curve(wchar_t out[1024], long n, mglArg *a, int [10], const char *) -{ - register long i; - for(i=0;i<12;i++) if(i>=n || a[i].type!=2) break; - if(i==12) - mglprintf(out,1024,L"gr->Curve(mglPoint(%g, %g, %g), mglPoint(%g, %g, %g), mglPoint(%g, %g, %g), mglPoint(%g, %g, %g), \"%s\");", a[0].v, a[1].v, a[2].v, a[3].v, a[4].v, a[5].v, a[6].v, a[7].v, a[8].v, a[9].v, a[10].v, a[11].v, (n>12 && a[12].type==1) ? a[12].s.c_str() : ""); - else if(i==8) - mglprintf(out,1024,L"gr->Curve(mglPoint(%g, %g, NAN), mglPoint(%g, %g), mglPoint(%g, %g, NAN), mglPoint(%g, %g), \"%s\");", a[0].v, a[1].v, a[2].v, a[3].v, a[4].v, a[5].v, a[6].v, a[7].v, (n>8 && a[8].type==1) ? a[8].s.c_str() : ""); + mglPoint(a[6].v,a[7].v)); + else if(!strcmp(k,"nnnnnnnns")) + gr->Curve(mglPoint(a[0].v,a[1].v,NAN), + mglPoint(a[2].v,a[3].v), + mglPoint(a[4].v,a[5].v,NAN), + mglPoint(a[6].v,a[7].v), a[8].s.c_str()); + else if(!strcmp(k,"nnnnnnnnnnnn")) + gr->Curve(mglPoint(a[0].v,a[1].v,a[2].v), + mglPoint(a[3].v,a[4].v,a[5].v), + mglPoint(a[6].v,a[7].v,a[8].v), + mglPoint(a[9].v,a[10].v,a[11].v)); + else if(!strcmp(k,"nnnnnnnnnnnns")) + gr->Curve(mglPoint(a[0].v,a[1].v,a[2].v), + mglPoint(a[3].v,a[4].v,a[5].v), + mglPoint(a[6].v,a[7].v,a[8].v), + mglPoint(a[9].v,a[10].v,a[11].v), a[12].s.c_str()); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_cut(mglGraph *gr, long n, mglArg *a, int k[10], const char *) +int mgls_cut(mglGraph *gr, long , mglArg *a, const char *k, const char *) { - if(k[0]==3 && n == 1) gr->SetCut(a[0].v != 0); - else if(k[0]==3 && k[1]==3 && k[2]==3 && k[3]==3 && k[4]==3 && k[5]==3) + int res=0; + if(!strcmp(k,"n")) gr->SetCut(a[0].v != 0); + else if(!strcmp(k,"nnnnnn")) gr->SetCutBox(mglPoint(a[0].v,a[1].v,a[2].v), mglPoint(a[3].v,a[4].v,a[5].v)); - else if(k[0]==2 && n == 1) gr->CutOff(a[0].s.c_str()); - else return 1; - return 0; -} -void mglc_cut(wchar_t out[1024], long n, mglArg *a, int k[10], const char *) -{ - if(k[0]==3 && n == 1) mglprintf(out,1024,L"gr->SetCut(%s);",(a[0].v != 0)?"true":"false"); - else if(k[0]==3 && k[1]==3 && k[2]==3 && k[3]==3 && k[4]==3 && k[5]==3) - mglprintf(out,1024,L"gr->SetCutBox(mglPoint(%g, %g, %g), mglPoint(%g, %g, %g));", a[0].v, a[1].v, a[2].v, a[3].v, a[4].v, a[5].v); - else if(k[0]==2 && n == 1) - mglprintf(out,1024,L"gr->CutOff(\"%s\");", a[0].s.c_str()); -} + else if(!strcmp(k,"s")) gr->CutOff(a[0].s.c_str()); + else res = 1; return res; +} +//----------------------------------------------------------------------------- +int mgls_crust(mglGraph *gr, long , mglArg *a, const char *k, const char *opt) +{ + int res=0; + if(!strcmp(k,"ddd")) gr->Crust(*(a[0].d),*(a[1].d),*(a[2].d),"",opt); + else if(!strcmp(k,"ddds")) gr->Crust(*(a[0].d),*(a[1].d),*(a[2].d),a[3].s.c_str(),opt); + else res = 1; return res; +} +//----------------------------------------------------------------------------- +int mgls_colorbar(mglGraph *gr, long , mglArg *a, const char *k, const char *) +{ + int res=0; + if(!strcmp(k,"")) gr->Colorbar(); + else if(!strcmp(k,"s")) gr->Colorbar(a[0].s.c_str()); + else if(!strcmp(k,"d")) gr->Colorbar(*(a[0].d)); + else if(!strcmp(k,"ds")) gr->Colorbar(*(a[0].d), a[1].s.c_str()); + else if(!strcmp(k,"snn")) gr->Colorbar(a[0].s.c_str(), a[1].v, a[2].v); + else if(!strcmp(k,"snnn")) gr->Colorbar(a[0].s.c_str(), a[1].v, a[2].v, a[3].v,1); + else if(!strcmp(k,"snnnn")) gr->Colorbar(a[0].s.c_str(), a[1].v, a[2].v, a[3].v,a[4].v); + else if(!strcmp(k,"dsnn")) gr->Colorbar(*(a[0].d), a[1].s.c_str(), a[2].v, a[3].v); + else if(!strcmp(k,"dsnnn")) gr->Colorbar(*(a[0].d), a[1].s.c_str(), a[2].v, a[3].v, a[4].v,1); + else if(!strcmp(k,"dsnnnn")) + gr->Colorbar(*(a[0].d), a[1].s.c_str(), a[2].v, a[3].v, a[4].v,a[5].v); + else res = 1; return res; +} +//----------------------------------------------------------------------------- +int mgls_copy(mglGraph *gr, long , mglArg *a, const char *k, const char *) +{ + int res=0; + if(!strcmp(k,"dd")) a[0].d->Set(*(a[1].d)); + else if(!strcmp(k,"dds")) + { a[0].d->Set(*(a[1].d)); gr->Fill(*(a[0].d), a[2].s.c_str()); } + else if(!strcmp(k,"dn")) *(a[0].d) = a[1].v; + else res = 1; return res; +} +//----------------------------------------------------------------------------- +int mgls_cont(mglGraph *gr, long , mglArg *a, const char *k, const char *opt) +{ + int res=0; + if(!strcmp(k,"d")) gr->Cont(*(a[0].d),"",opt); + else if(!strcmp(k,"ds")) gr->Cont(*(a[0].d),a[1].s.c_str(),opt); + else if(!strcmp(k,"dd")) gr->Cont(*(a[0].d), *(a[1].d), "",opt); + else if(!strcmp(k,"dds")) gr->Cont(*(a[0].d), *(a[1].d), a[2].s.c_str(),opt); + else if(!strcmp(k,"ddd")) gr->Cont(*(a[0].d), *(a[1].d), *(a[2].d), "",opt); + else if(!strcmp(k,"ddds")) gr->Cont(*(a[0].d), *(a[1].d), *(a[2].d), a[3].s.c_str(),opt); + else if(!strcmp(k,"dddd")) gr->Cont(*(a[0].d), *(a[1].d), *(a[2].d), *(a[3].d), "",opt); + else if(!strcmp(k,"dddds")) gr->Cont(*(a[0].d), *(a[1].d), *(a[2].d), *(a[3].d), a[4].s.c_str(),opt); + else res = 1; return res; +} +//----------------------------------------------------------------------------- +int mgls_contv(mglGraph *gr, long , mglArg *a, const char *k, const char *opt) +{ + int res=0; + if(!strcmp(k,"d")) gr->ContV(*(a[0].d),"",opt); + else if(!strcmp(k,"ds")) gr->ContV(*(a[0].d),a[1].s.c_str(),opt); + else if(!strcmp(k,"dd")) gr->ContV(*(a[0].d), *(a[1].d), "",opt); + else if(!strcmp(k,"dds")) gr->ContV(*(a[0].d), *(a[1].d), a[2].s.c_str(),opt); + else if(!strcmp(k,"ddd")) gr->ContV(*(a[0].d), *(a[1].d), *(a[2].d), "",opt); + else if(!strcmp(k,"ddds")) gr->ContV(*(a[0].d), *(a[1].d), *(a[2].d), a[3].s.c_str(),opt); + else if(!strcmp(k,"dddd")) gr->ContV(*(a[0].d), *(a[1].d), *(a[2].d), *(a[3].d), "",opt); + else if(!strcmp(k,"dddds")) gr->ContV(*(a[0].d), *(a[1].d), *(a[2].d), *(a[3].d), a[4].s.c_str(),opt); + else res = 1; return res; +} //----------------------------------------------------------------------------- -int mgls_crust(mglGraph *gr, long , mglArg *a, int k[10], const char *opt) -{ - if(k[0]==1 && k[1]==1 && k[2]==1) - gr->Crust(*(a[0].d),*(a[1].d),*(a[2].d),k[3]==2?a[3].s.c_str():"",opt); - else return 1; - return 0; -} -void mglc_crust(wchar_t out[1024], long , mglArg *a, int k[10], const char *opt) +int mgls_contf(mglGraph *gr, long , mglArg *a, const char *k, const char *opt) { - if(k[0]==1 && k[1]==1 && k[2]==1) - mglprintf(out,1024,L"gr->Crust(%s, %s, %s, \"%s\", \"%s\");",a[0].s.c_str(),a[1].s.c_str(),a[2].s.c_str(),k[3]==2?a[3].s.c_str():"",opt); + int res=0; + if(!strcmp(k,"d")) gr->ContF(*(a[0].d),"",opt); + else if(!strcmp(k,"ds")) gr->ContF(*(a[0].d),a[1].s.c_str(),opt); + else if(!strcmp(k,"dd")) gr->ContF(*(a[0].d), *(a[1].d), "",opt); + else if(!strcmp(k,"dds")) gr->ContF(*(a[0].d), *(a[1].d), a[2].s.c_str(),opt); + else if(!strcmp(k,"ddd")) gr->ContF(*(a[0].d), *(a[1].d), *(a[2].d), "",opt); + else if(!strcmp(k,"ddds")) gr->ContF(*(a[0].d), *(a[1].d), *(a[2].d), a[3].s.c_str(),opt); + else if(!strcmp(k,"dddd")) gr->ContF(*(a[0].d), *(a[1].d), *(a[2].d), *(a[3].d), "",opt); + else if(!strcmp(k,"dddds")) gr->ContF(*(a[0].d), *(a[1].d), *(a[2].d), *(a[3].d), a[4].s.c_str(),opt); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_colorbar(mglGraph *gr, long , mglArg *a, int k[10], const char *) +int mgls_contd(mglGraph *gr, long , mglArg *a, const char *k, const char *opt) { - if(k[0]==1 && k[1]==2 && k[2]==3 && k[3]==3) - gr->Colorbar(*(a[0].d), a[1].s.c_str(), a[2].v, a[3].v, k[4]==3?a[4].v:1, k[5]==3?a[5].v:1); - else if(k[0]==2 && k[1]==3 && k[2]==3) - gr->Colorbar(a[0].s.c_str(), a[1].v, a[2].v, k[3]==3?a[3].v:1, k[4]==3?a[4].v:1); - else if(k[0]==1) gr->Colorbar(*(a[0].d), k[1]==2 ? a[1].s.c_str():""); - else gr->Colorbar(k[0]==2 ? a[0].s.c_str():""); - return 0; -} -void mglc_colorbar(wchar_t out[1024], long , mglArg *a, int k[10], const char *) -{ - if(k[0]==1 && k[1]==2 && k[2]==3 && k[3]==3) - mglprintf(out,1024,L"gr->Colorbar(%s, \"%s\", %g, %g, %g, %g);",a[0].s.c_str(), a[1].s.c_str(), a[2].v, a[3].v, k[4]==3?a[4].v:1, k[5]==3?a[5].v:1); - else if(k[0]==2 && k[1]==3 && k[2]==3) - mglprintf(out,1024,L"gr->Colorbar(\"%s\", %g, %g, %g, %g);",a[0].s.c_str(), a[1].v, a[2].v, k[3]==3?a[3].v:1, k[4]==3?a[4].v:1); - else if(k[0]==1) - mglprintf(out,1024,L"gr->Colorbar(%s, \"%s\");",a[0].s.c_str(), k[1]==2 ? a[1].s.c_str():""); - else - mglprintf(out,1024,L"gr->Colorbar(\"%s\");",k[0]==2 ? a[0].s.c_str():""); + int res=0; + if(!strcmp(k,"d")) gr->ContD(*(a[0].d),"",opt); + else if(!strcmp(k,"ds")) gr->ContD(*(a[0].d),a[1].s.c_str(),opt); + else if(!strcmp(k,"dd")) gr->ContD(*(a[0].d), *(a[1].d), "",opt); + else if(!strcmp(k,"dds")) gr->ContD(*(a[0].d), *(a[1].d), a[2].s.c_str(),opt); + else if(!strcmp(k,"ddd")) gr->ContD(*(a[0].d), *(a[1].d), *(a[2].d), "",opt); + else if(!strcmp(k,"ddds")) gr->ContD(*(a[0].d), *(a[1].d), *(a[2].d), a[3].s.c_str(),opt); + else if(!strcmp(k,"dddd")) gr->ContD(*(a[0].d), *(a[1].d), *(a[2].d), *(a[3].d), "",opt); + else if(!strcmp(k,"dddds")) gr->ContD(*(a[0].d), *(a[1].d), *(a[2].d), *(a[3].d), a[4].s.c_str(),opt); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_copy(mglGraph *gr, long , mglArg *a, int k[10], const char *) +int mgls_cont3(mglGraph *gr, long , mglArg *a, const char *k, const char *opt) { - if(k[0]==1 && k[1]==1) - { - a[0].d->Set(*(a[1].d)); - if(k[2]==2) gr->Fill(*(a[0].d), a[2].s.c_str()); - } - else if(k[0]==1 && k[1]==3) *(a[0].d) = a[1].v; - else return 1; - return 0; -} -void mglc_copy(wchar_t out[1024], long , mglArg *a, int k[10], const char *) -{ - if(k[0]==1 && k[1]==1 && k[2]==2) - mglprintf(out,1024,L"%s.Set(%s);\tgr->Fill(%s,\"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str()); - else if(k[0]==1 && k[1]==1) - mglprintf(out,1024,L"%s.Set(%s);", a[0].s.c_str(), a[1].s.c_str()); - else if(k[0]==1 && k[1]==3) - mglprintf(out,1024,L"%s = %g;", a[0].s.c_str(), a[1].v); -} -//----------------------------------------------------------------------------- -int mgls_cont(mglGraph *gr, long , mglArg *a, int k[10], const char *opt) -{ - if(k[0]!=1) return 1; - else if(k[1]!=1) gr->Cont(*(a[0].d),k[1]==2?a[1].s.c_str():"",opt); - else if(k[1]==1 && k[2]!=1) - gr->Cont(*(a[0].d), *(a[1].d), k[2]==2?a[2].s.c_str():"",opt); - else if(k[1]==1 && k[2]==1 && k[3]!=1) - gr->Cont(*(a[0].d), *(a[1].d), *(a[2].d), k[3]==2?a[3].s.c_str():"",opt); - else if(k[1]==1 && k[2]==1 && k[3]==1 && k[4]!=1) - gr->Cont(*(a[0].d), *(a[1].d), *(a[2].d), *(a[3].d), k[4]==2?a[4].s.c_str():"",opt); - else return 1; - return 0; -} -void mglc_cont(wchar_t out[1024], long , mglArg *a, int k[10], const char *opt) -{ - if(k[0]!=1) return; - else if(k[1]!=1) - mglprintf(out,1024,L"gr->Cont(%s, \"%s\", \"%s\");", a[0].s.c_str(), k[1]==2?a[1].s.c_str():"",opt); - else if(k[1]==1 && k[2]!=1) - mglprintf(out,1024,L"gr->Cont(%s, %s, \"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(), k[2]==2?a[2].s.c_str():"",opt); - else if(k[1]==1 && k[2]==1 && k[3]!=1) - mglprintf(out,1024,L"gr->Cont(%s, %s, %s, \"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), k[3]==2?a[3].s.c_str():"",opt); - else if(k[1]==1 && k[2]==1 && k[3]==1 && k[4]!=1) - mglprintf(out,1024,L"gr->Cont(%s, %s, %s, %s, \"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), a[3].s.c_str(), k[4]==2?a[4].s.c_str():"",opt); -} -//----------------------------------------------------------------------------- -int mgls_contv(mglGraph *gr, long , mglArg *a, int k[10], const char *opt) -{ - if(k[0]!=1) return 1; - else if(k[1]!=1) gr->ContV(*(a[0].d),k[1]==2?a[1].s.c_str():"",opt); - else if(k[1]==1 && k[2]!=1) - gr->ContV(*(a[0].d), *(a[1].d), k[2]==2?a[2].s.c_str():"",opt); - else if(k[1]==1 && k[2]==1 && k[3]!=1) - gr->ContV(*(a[0].d), *(a[1].d), *(a[2].d), k[3]==2?a[3].s.c_str():"",opt); - else if(k[1]==1 && k[2]==1 && k[3]==1 && k[4]!=1) - gr->ContV(*(a[0].d), *(a[1].d), *(a[2].d), *(a[3].d), k[4]==2?a[4].s.c_str():"",opt); - else return 1; - return 0; -} -void mglc_contv(wchar_t out[1024], long , mglArg *a, int k[10], const char *opt) -{ - if(k[0]!=1) return; - else if(k[1]!=1) - mglprintf(out,1024,L"gr->ContV(%s, \"%s\", \"%s\");", a[0].s.c_str(), k[1]==2?a[1].s.c_str():"",opt); - else if(k[1]==1 && k[2]!=1) - mglprintf(out,1024,L"gr->ContV(%s, %s, \"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(), k[2]==2?a[2].s.c_str():"",opt); - else if(k[1]==1 && k[2]==1 && k[3]!=1) - mglprintf(out,1024,L"gr->ContV(%s, %s, %s, \"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), k[3]==2?a[3].s.c_str():"",opt); - else if(k[1]==1 && k[2]==1 && k[3]==1 && k[4]!=1) - mglprintf(out,1024,L"gr->ContV(%s, %s, %s, %s, \"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), a[3].s.c_str(), k[4]==2?a[4].s.c_str():"",opt); -} -//----------------------------------------------------------------------------- -int mgls_contf(mglGraph *gr, long , mglArg *a, int k[10], const char *opt) -{ - if(k[0]!=1) return 1; - else if(k[1]!=1) - gr->ContF(*(a[0].d),k[1]==2?a[1].s.c_str():"",opt); - else if(k[1]==1 && k[2]!=1) - gr->ContF(*(a[0].d), *(a[1].d), k[2]==2?a[2].s.c_str():"",opt); - else if(k[1]==1 && k[2]==1 && k[3]!=1) - gr->ContF(*(a[0].d), *(a[1].d), *(a[2].d), k[3]==2?a[3].s.c_str():"",opt); - else if(k[1]==1 && k[2]==1 && k[3]==1 && k[4]!=1) - gr->ContF(*(a[0].d), *(a[1].d), *(a[2].d), *(a[3].d), k[4]==2?a[4].s.c_str():"",opt); - else return 1; - return 0; -} -void mglc_contf(wchar_t out[1024], long , mglArg *a, int k[10], const char *opt) -{ - if(k[0]!=1) return; - else if(k[1]!=1) - mglprintf(out,1024,L"gr->ContF(%s, \"%s\", \"%s\");", a[0].s.c_str(), k[1]==2?a[1].s.c_str():"",opt); - else if(k[1]==1 && k[2]!=1) - mglprintf(out,1024,L"gr->ContF(%s, %s, \"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(), k[2]==2?a[2].s.c_str():"",opt); - else if(k[1]==1 && k[2]==1 && k[3]!=1) - mglprintf(out,1024,L"gr->ContF(%s, %s, %s, \"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), k[3]==2?a[3].s.c_str():"",opt); - else if(k[1]==1 && k[2]==1 && k[3]==1 && k[4]!=1) - mglprintf(out,1024,L"gr->ContF(%s, %s, %s, %s, \"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), a[3].s.c_str(), k[4]==2?a[4].s.c_str():"",opt); -} -//----------------------------------------------------------------------------- -int mgls_contd(mglGraph *gr, long , mglArg *a, int k[10], const char *opt) -{ - if(k[0]!=1) return 1; - else if(k[1]!=1) - gr->ContD(*(a[0].d),k[1]==2?a[1].s.c_str():"",opt); - else if(k[1]==1 && k[2]!=1) - gr->ContD(*(a[0].d), *(a[1].d), k[2]==2?a[2].s.c_str():"",opt); - else if(k[1]==1 && k[2]==1 && k[3]!=1) - gr->ContD(*(a[0].d), *(a[1].d), *(a[2].d), k[3]==2?a[3].s.c_str():"",opt); - else if(k[1]==1 && k[2]==1 && k[3]==1 && k[4]!=1) - gr->ContD(*(a[0].d), *(a[1].d), *(a[2].d), *(a[3].d), k[4]==2?a[4].s.c_str():"",opt); - else return 1; - return 0; -} -void mglc_contd(wchar_t out[1024], long , mglArg *a, int k[10], const char *opt) -{ - if(k[0]!=1) return; - else if(k[1]!=1) - mglprintf(out,1024,L"gr->ContD(%s, \"%s\", \"%s\");", a[0].s.c_str(), k[1]==2?a[1].s.c_str():"",opt); - else if(k[1]==1 && k[2]!=1) - mglprintf(out,1024,L"gr->ContD(%s, %s, \"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(), k[2]==2?a[2].s.c_str():"",opt); - else if(k[1]==1 && k[2]==1 && k[3]!=1) - mglprintf(out,1024,L"gr->ContD(%s, %s, %s, \"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), k[3]==2?a[3].s.c_str():"",opt); - else if(k[1]==1 && k[2]==1 && k[3]==1 && k[4]!=1) - mglprintf(out,1024,L"gr->ContD(%s, %s, %s, %s, \"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), a[3].s.c_str(), k[4]==2?a[4].s.c_str():"",opt); + int res=0; + if(!strcmp(k,"d")) gr->Cont3(*(a[0].d), "", -1,opt); + else if(!strcmp(k,"ds")) gr->Cont3(*(a[0].d), a[1].s.c_str(), -1,opt); + else if(!strcmp(k,"dsn")) gr->Cont3(*(a[0].d), a[1].s.c_str(), iint(a[2].v),opt); + else if(!strcmp(k,"dd")) gr->Cont3(*(a[0].d), *(a[1].d), "", -1,opt); + else if(!strcmp(k,"dds")) gr->Cont3(*(a[0].d), *(a[1].d), a[2].s.c_str(),-1,opt); + else if(!strcmp(k,"ddsn")) gr->Cont3(*(a[0].d), *(a[1].d), a[2].s.c_str(),iint(a[3].v),opt); + else if(!strcmp(k,"dddd")) gr->Cont3(*(a[0].d), *(a[1].d), *(a[2].d), *(a[3].d), "", -1,opt); + else if(!strcmp(k,"dddds")) gr->Cont3(*(a[0].d), *(a[1].d), *(a[2].d), *(a[3].d), a[4].s.c_str(),-1,opt); + else if(!strcmp(k,"ddddsn")) gr->Cont3(*(a[0].d), *(a[1].d), *(a[2].d), *(a[3].d), a[4].s.c_str(),iint(a[5].v),opt); + else if(!strcmp(k,"ddddd")) gr->Cont3(*(a[0].d), *(a[1].d), *(a[2].d), *(a[3].d), *(a[4].d), "", -1,opt); + else if(!strcmp(k,"ddddds")) gr->Cont3(*(a[0].d), *(a[1].d), *(a[2].d), *(a[3].d), *(a[4].d), a[5].s.c_str(),-1,opt); + else if(!strcmp(k,"dddddsn"))gr->Cont3(*(a[0].d), *(a[1].d), *(a[2].d), *(a[3].d), *(a[4].d), a[5].s.c_str(),iint(a[6].v),opt); + else res = 1; return res; } -//----------------------------------------------------------------------------- -int mgls_cont3(mglGraph *gr, long , mglArg *a, int k[10], const char *opt) +//----------------------------------------------------------------------------- +int mgls_contf3(mglGraph *gr, long , mglArg *a, const char *k, const char *opt) +{ + int res=0; + if(!strcmp(k,"d")) gr->ContF3(*(a[0].d), "", -1,opt); + else if(!strcmp(k,"ds")) gr->ContF3(*(a[0].d), a[1].s.c_str(), -1,opt); + else if(!strcmp(k,"dsn")) gr->ContF3(*(a[0].d), a[1].s.c_str(), iint(a[2].v),opt); + else if(!strcmp(k,"dd")) gr->ContF3(*(a[0].d), *(a[1].d), "", -1,opt); + else if(!strcmp(k,"dds")) gr->ContF3(*(a[0].d), *(a[1].d), a[2].s.c_str(),-1,opt); + else if(!strcmp(k,"ddsn")) gr->ContF3(*(a[0].d), *(a[1].d), a[2].s.c_str(),iint(a[3].v),opt); + else if(!strcmp(k,"dddd")) gr->ContF3(*(a[0].d), *(a[1].d), *(a[2].d), *(a[3].d), "", -1,opt); + else if(!strcmp(k,"dddds")) gr->ContF3(*(a[0].d), *(a[1].d), *(a[2].d), *(a[3].d), a[4].s.c_str(),-1,opt); + else if(!strcmp(k,"ddddsn")) gr->ContF3(*(a[0].d), *(a[1].d), *(a[2].d), *(a[3].d), a[4].s.c_str(),iint(a[5].v),opt); + else if(!strcmp(k,"ddddd")) gr->ContF3(*(a[0].d), *(a[1].d), *(a[2].d), *(a[3].d), *(a[4].d), "", -1,opt); + else if(!strcmp(k,"ddddds")) gr->ContF3(*(a[0].d), *(a[1].d), *(a[2].d), *(a[3].d), *(a[4].d), a[5].s.c_str(),-1,opt); + else if(!strcmp(k,"dddddsn"))gr->ContF3(*(a[0].d), *(a[1].d), *(a[2].d), *(a[3].d), *(a[4].d), a[5].s.c_str(),iint(a[6].v),opt); + else res = 1; return res; +} +//----------------------------------------------------------------------------- +int mgls_contx(mglGraph *gr, long , mglArg *a, const char *k, const char *opt) { - if(k[0]!=1) return 1; - else if(k[1]==1 && k[2]==1 && k[3]==1 && k[4]==1) - gr->Cont3(*(a[0].d), *(a[1].d), *(a[2].d), *(a[3].d), *(a[4].d), k[5]==2?a[5].s.c_str():"", k[6]==3?iint(a[6].v):-1,opt); - else if(k[1]==1 && k[2]==1 && k[3]==1) - gr->Cont3(*(a[0].d), *(a[1].d), *(a[2].d), *(a[3].d), k[4]==2?a[4].s.c_str():"", k[5]==3?iint(a[5].v):-1,opt); - else if(k[1]==1) - gr->Cont3(*(a[0].d), *(a[1].d), k[2]==2?a[2].s.c_str():"", k[3]==3?iint(a[3].v):-1,opt); - else gr->Cont3(*(a[0].d), k[1]==2?a[1].s.c_str():"", k[2]==3?iint(a[2].v):-1,opt); - return 0; + int res=0; + if(!strcmp(k,"d")) gr->ContX(*(a[0].d),"",NAN,opt); + else if(!strcmp(k,"ds")) gr->ContX(*(a[0].d),a[1].s.c_str(),NAN,opt); + else if(!strcmp(k,"dsn")) gr->ContX(*(a[0].d),a[1].s.c_str(),a[2].v,opt); + else res = 1; return res; } -void mglc_cont3(wchar_t out[1024], long , mglArg *a, int k[10], const char *opt) -{ - if(k[0]!=1) return; - else if(k[1]==1 && k[2]==1 && k[3]==1 && k[4]==1) - mglprintf(out,1024,L"gr->Cont3(%s, %s, %s, %s, %s, \"%s\", %d, \"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), a[3].s.c_str(), a[4].s.c_str(), k[5]==2?a[5].s.c_str():"", k[6]==3?iint(a[6].v):-1,opt); - else if(k[1]==1 && k[2]==1 && k[3]==1) - mglprintf(out,1024,L"gr->Cont3(%s, %s, %s, %s, \"%s\", %d, \"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), a[3].s.c_str(), k[4]==2?a[4].s.c_str():"", k[5]==3?iint(a[5].v):-1,opt); - else if(k[1]==1) - mglprintf(out,1024,L"gr->Cont3(%s, %s, \"%s\", %d, \"%s\");", a[0].s.c_str(), a[1].s.c_str(), k[2]==2?a[2].s.c_str():"", k[3]==3?iint(a[3].v):-1,opt); - else mglprintf(out,1024,L"gr->Cont3(%s, \"%s\", %d, \"%s\");", a[0].s.c_str(), k[1]==2?a[1].s.c_str():"", k[2]==3?iint(a[2].v):-1,opt); +//----------------------------------------------------------------------------- +int mgls_contfx(mglGraph *gr, long , mglArg *a, const char *k, const char *opt) +{ + int res=0; + if(!strcmp(k,"d")) gr->ContFX(*(a[0].d),"",NAN,opt); + else if(!strcmp(k,"ds")) gr->ContFX(*(a[0].d),a[1].s.c_str(),NAN,opt); + else if(!strcmp(k,"dsn")) gr->ContFX(*(a[0].d),a[1].s.c_str(),a[2].v,opt); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_contf3(mglGraph *gr, long , mglArg *a, int k[10], const char *opt) -{ - if(k[0]!=1) return 1; - else if(k[1]==1 && k[2]==1 && k[3]==1 && k[4]==1) - gr->ContF3(*(a[0].d), *(a[1].d), *(a[2].d), *(a[3].d), *(a[4].d), k[5]==2?a[5].s.c_str():"", k[6]==3?iint(a[6].v):-1,opt); - else if(k[1]==1 && k[2]==1 && k[3]==1) - gr->ContF3(*(a[0].d), *(a[1].d), *(a[2].d), *(a[3].d), k[4]==2?a[4].s.c_str():"", k[5]==3?iint(a[5].v):-1,opt); - else if(k[1]==1) - gr->ContF3(*(a[0].d), *(a[1].d), k[2]==2?a[2].s.c_str():"", k[3]==3?iint(a[3].v):-1,opt); - else gr->ContF3(*(a[0].d), k[1]==2?a[1].s.c_str():"", k[2]==3?iint(a[2].v):-1,opt); - return 0; -} -void mglc_contf3(wchar_t out[1024], long , mglArg *a, int k[10], const char *opt) +int mgls_conty(mglGraph *gr, long , mglArg *a, const char *k, const char *opt) { - if(k[0]!=1) return; - else if(k[1]==1 && k[2]==1 && k[3]==1 && k[4]==1) - mglprintf(out,1024,L"gr->ContF3(%s, %s, %s, %s, %s, \"%s\", %d, \"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), a[3].s.c_str(), a[4].s.c_str(), k[5]==2?a[5].s.c_str():"", k[6]==3?iint(a[6].v):-1,opt); - else if(k[1]==1 && k[2]==1 && k[3]==1) - mglprintf(out,1024,L"gr->ContF3(%s, %s, %s, %s, \"%s\", %d, \"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), a[3].s.c_str(), k[4]==2?a[4].s.c_str():"", k[5]==3?iint(a[5].v):-1,opt); - else if(k[1]==1) - mglprintf(out,1024,L"gr->ContF3(%s, %s, \"%s\", %d, \"%s\");", a[0].s.c_str(), a[1].s.c_str(), k[2]==2?a[2].s.c_str():"", k[3]==3?iint(a[3].v):-1,opt); - else mglprintf(out,1024,L"gr->ContF3(%s, \"%s\", %d, \"%s\");", a[0].s.c_str(), k[1]==2?a[1].s.c_str():"", k[2]==3?iint(a[2].v):-1,opt); + int res=0; + if(!strcmp(k,"d")) gr->ContY(*(a[0].d),"",NAN,opt); + else if(!strcmp(k,"ds")) gr->ContY(*(a[0].d),a[1].s.c_str(),NAN,opt); + else if(!strcmp(k,"dsn")) gr->ContY(*(a[0].d),a[1].s.c_str(),a[2].v,opt); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_contx(mglGraph *gr, long , mglArg *a, int k[10], const char *opt) +int mgls_contfy(mglGraph *gr, long , mglArg *a, const char *k, const char *opt) { - if(k[0]==1) gr->ContX(*(a[0].d),k[1]==2?a[1].s.c_str():"",k[2]==3?a[2].v:NAN,opt); - else return 1; - return 0; -} -void mglc_contx(wchar_t out[1024], long , mglArg *a, int k[10], const char *opt) -{ - if(k[0]==1) - mglprintf(out,1024,L"gr->ContX(%s, \"%s\", %g, \"%s\");", a[0].s.c_str(), k[1]==2?a[1].s.c_str():"", k[2]==3?a[2].v:NAN,opt); + int res=0; + if(!strcmp(k,"d")) gr->ContFY(*(a[0].d),"",NAN,opt); + else if(!strcmp(k,"ds")) gr->ContFY(*(a[0].d),a[1].s.c_str(),NAN,opt); + else if(!strcmp(k,"dsn")) gr->ContFY(*(a[0].d),a[1].s.c_str(),a[2].v,opt); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_contfx(mglGraph *gr, long , mglArg *a, int k[10], const char *opt) -{ - if(k[0]==1) gr->ContFX(*(a[0].d),k[1]==2?a[1].s.c_str():"",k[2]==3?a[2].v:NAN,opt); - else return 1; - return 0; -} -void mglc_contfx(wchar_t out[1024], long , mglArg *a, int k[10], const char *opt) +int mgls_contz(mglGraph *gr, long , mglArg *a, const char *k, const char *opt) { - if(k[0]==1) - mglprintf(out,1024,L"gr->ContFX(%s, \"%s\", %g, \"%s\");", a[0].s.c_str(), k[1]==2?a[1].s.c_str():"", k[2]==3?a[2].v:NAN,opt); + int res=0; + if(!strcmp(k,"d")) gr->ContZ(*(a[0].d),"",NAN,opt); + else if(!strcmp(k,"ds")) gr->ContZ(*(a[0].d),a[1].s.c_str(),NAN,opt); + else if(!strcmp(k,"dsn")) gr->ContZ(*(a[0].d),a[1].s.c_str(),a[2].v,opt); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_conty(mglGraph *gr, long , mglArg *a, int k[10], const char *opt) +int mgls_contfz(mglGraph *gr, long , mglArg *a, const char *k, const char *opt) { - if(k[0]==1) gr->ContY(*(a[0].d),k[1]==2?a[1].s.c_str():"",k[2]==3?a[2].v:NAN,opt); - else return 1; - return 0; -} -void mglc_conty(wchar_t out[1024], long , mglArg *a, int k[10], const char *opt) -{ - if(k[0]==1) - mglprintf(out,1024,L"gr->ContY(%s, \"%s\", %g, \"%s\");", a[0].s.c_str(), k[1]==2?a[1].s.c_str():"", k[2]==3?a[2].v:NAN,opt); + int res=0; + if(!strcmp(k,"d")) gr->ContFZ(*(a[0].d),"",NAN,opt); + else if(!strcmp(k,"ds")) gr->ContFZ(*(a[0].d),a[1].s.c_str(),NAN,opt); + else if(!strcmp(k,"dsn")) gr->ContFZ(*(a[0].d),a[1].s.c_str(),a[2].v,opt); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_contfy(mglGraph *gr, long , mglArg *a, int k[10], const char *opt) +int mgls_cone(mglGraph *gr, long , mglArg *a, const char *k, const char *) { - if(k[0]==1) gr->ContFY(*(a[0].d),k[1]==2?a[1].s.c_str():"",k[2]==3?a[2].v:NAN,opt); - else return 1; - return 0; -} -void mglc_contfy(wchar_t out[1024], long , mglArg *a, int k[10], const char *opt) -{ - if(k[0]==1) - mglprintf(out,1024,L"gr->ContFY(%s, \"%s\", %g, \"%s\");", a[0].s.c_str(), k[1]==2?a[1].s.c_str():"", k[2]==3?a[2].v:NAN,opt); + int res=0; + if(!strcmp(k,"nnnnnnn")) gr->Cone(mglPoint(a[0].v,a[1].v,a[2].v), mglPoint(a[3].v,a[4].v,a[5].v), a[6].v); + else if(!strcmp(k,"nnnnnnns")) gr->Cone(mglPoint(a[0].v,a[1].v,a[2].v), mglPoint(a[3].v,a[4].v,a[5].v), a[6].v,-1, a[7].s.c_str()); + else if(!strcmp(k,"nnnnnnnn")) gr->Cone(mglPoint(a[0].v,a[1].v,a[2].v), mglPoint(a[3].v,a[4].v,a[5].v), a[6].v, a[7].v); + else if(!strcmp(k,"nnnnnnnns")) gr->Cone(mglPoint(a[0].v,a[1].v,a[2].v), mglPoint(a[3].v,a[4].v,a[5].v), a[6].v, a[7].v, a[8].s.c_str()); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_contz(mglGraph *gr, long , mglArg *a, int k[10], const char *opt) -{ - if(k[0]==1) gr->ContZ(*(a[0].d),k[1]==2?a[1].s.c_str():"",k[2]==3?a[2].v:NAN,opt); - else return 1; - return 0; -} -void mglc_contz(wchar_t out[1024], long , mglArg *a, int k[10], const char *opt) +int mgls_ellipse(mglGraph *gr, long , mglArg *a, const char *k, const char *) { - if(k[0]==1) - mglprintf(out,1024,L"gr->ContZ(%s, \"%s\", %g, \"%s\");", a[0].s.c_str(), k[1]==2?a[1].s.c_str():"", k[2]==3?a[2].v:NAN,opt); + int res=0; + if(!strcmp(k,"nnnnn")) + gr->Ellipse(mglPoint(a[0].v,a[1].v,NAN), mglPoint(a[2].v,a[3].v,NAN), a[4].v); + else if(!strcmp(k,"nnnnns")) + gr->Ellipse(mglPoint(a[0].v,a[1].v,NAN), mglPoint(a[2].v,a[3].v,NAN), a[4].v, a[5].s.c_str()); + else if(!strcmp(k,"nnnnnnn")) + gr->Ellipse(mglPoint(a[0].v,a[1].v,a[2].v), mglPoint(a[3].v,a[4].v,a[5].v), a[6].v); + else if(!strcmp(k,"nnnnnnns")) + gr->Ellipse(mglPoint(a[0].v,a[1].v,a[2].v), mglPoint(a[3].v,a[4].v,a[5].v), a[6].v, a[7].s.c_str()); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_contfz(mglGraph *gr, long , mglArg *a, int k[10], const char *opt) +int mgls_circle(mglGraph *gr, long , mglArg *a, const char *k, const char *) { - if(k[0]==1) gr->ContFZ(*(a[0].d),k[1]==2?a[1].s.c_str():"",k[2]==3?a[2].v:NAN,opt); - else return 1; - return 0; -} -void mglc_contfz(wchar_t out[1024], long , mglArg *a, int k[10], const char *opt) -{ - if(k[0]==1) - mglprintf(out,1024,L"gr->ContFZ(%s, \"%s\", %g, \"%s\");", a[0].s.c_str(), k[1]==2?a[1].s.c_str():"", k[2]==3?a[2].v:NAN,opt); + int res=0; + if(!strcmp(k,"nnn")) gr->Circle(mglPoint(a[0].v,a[1].v, NAN), a[2].v); + else if(!strcmp(k,"nnns")) gr->Circle(mglPoint(a[0].v,a[1].v, NAN), a[2].v, a[3].s.c_str()); + else if(!strcmp(k,"nnnn")) gr->Circle(mglPoint(a[0].v,a[1].v,a[2].v), a[3].v); + else if(!strcmp(k,"nnnns")) gr->Circle(mglPoint(a[0].v,a[1].v,a[2].v), a[3].v, a[4].s.c_str()); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_cone(mglGraph *gr, long , mglArg *a, int [10], const char *) -{ - bool ok=true; - for(int i=0;i<7;i++) if(a[i].type!=2) ok=false; - if(ok) - { - if(a[7].type==2) - gr->Cone(mglPoint(a[0].v,a[1].v,a[2].v), mglPoint(a[3].v,a[4].v,a[5].v), - a[6].v, a[7].v, (a[8].type==1) ? a[8].s.c_str() : 0); - else - gr->Cone(mglPoint(a[0].v,a[1].v,a[2].v), mglPoint(a[3].v,a[4].v,a[5].v), - a[6].v, -1, (a[7].type==1) ? a[7].s.c_str() : 0); - } - else return 1; - return 0; -} -void mglc_cone(wchar_t out[1024], long , mglArg *a, int [10], const char *) +int mgls_rhomb(mglGraph *gr, long , mglArg *a, const char *k, const char *) { - bool ok=true; - for(int i=0;i<7;i++) if(a[i].type!=2) ok=false; - if(ok) - { - if(a[7].type==2) - mglprintf(out,1024,L"gr->Cone(mglPoint(%g, %g, %g), mglPoint(%g, %g, %g), %g, %g, \"%s\");", a[0].v,a[1].v,a[2].v, a[3].v,a[4].v,a[5].v, a[6].v, a[7].v, (a[8].type==2) ? a[8].s.c_str() : ""); - else - mglprintf(out,1024,L"gr->Cone(mglPoint(%g, %g, %g), mglPoint(%g, %g, %g), %g, -1, \"%s\");", a[0].v,a[1].v,a[2].v, a[3].v,a[4].v,a[5].v, a[6].v, (a[7].type==2) ? a[7].s.c_str() : ""); - } + int res=0; + if(!strcmp(k,"nnnnn")) + gr->Rhomb(mglPoint(a[0].v,a[1].v,NAN), mglPoint(a[2].v,a[3].v,NAN), a[4].v); + else if(!strcmp(k,"nnnnns")) + gr->Rhomb(mglPoint(a[0].v,a[1].v,NAN), mglPoint(a[2].v,a[3].v,NAN), a[4].v, a[5].s.c_str()); + else if(!strcmp(k,"nnnnnnn")) + gr->Rhomb(mglPoint(a[0].v,a[1].v,a[2].v), mglPoint(a[3].v,a[4].v,a[5].v), a[6].v); + else if(!strcmp(k,"nnnnnnns")) + gr->Rhomb(mglPoint(a[0].v,a[1].v,a[2].v), mglPoint(a[3].v,a[4].v,a[5].v), a[6].v, a[7].s.c_str()); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_ellipse(mglGraph *gr, long , mglArg *a, int [10], const char *) -{ - int i; - for(i=0;i<7;i++) if(a[i].type!=2) - { i--; break; } - if(i==6) - gr->Ellipse(mglPoint(a[0].v,a[1].v,a[2].v), mglPoint(a[3].v,a[4].v,a[5].v), - a[6].v, a[7].type==1?a[7].s.c_str():"r"); - else if(i==4) - gr->Ellipse(mglPoint(a[0].v,a[1].v,NAN), mglPoint(a[2].v,a[3].v,NAN), - a[4].v, a[5].type==1?a[5].s.c_str():"r"); - else return 1; - return 0; -} -void mglc_ellipse(wchar_t out[1024], long , mglArg *a, int [10], const char *) +int mgls_dens(mglGraph *gr, long , mglArg *a, const char *k, const char *opt) { - int i; - for(i=0;i<7;i++) if(a[i].type!=2) { i--; break; } - if(i==6) - mglprintf(out,1024,L"gr->Ellipse(mglPoint(%g, %g, %g), mglPoint(%g, %g, %g), %g, \"%s\");", a[0].v,a[1].v,a[2].v, a[3].v,a[4].v,a[5].v, a[6].v, (a[7].type==1) ? a[7].s.c_str() : "r"); - else if(i==4) - mglprintf(out,1024,L"gr->Ellipse(mglPoint(%g, %g, NAN), mglPoint(%g, %g, NAN), %g, \"%s\");", a[0].v,a[1].v,a[2].v,a[3].v,a[4].v, (a[5].type==1) ? a[5].s.c_str() : "r"); + int res=0; + if(!strcmp(k,"d")) gr->Dens(*(a[0].d),"",opt); + else if(!strcmp(k,"ds")) gr->Dens(*(a[0].d),a[1].s.c_str(),opt); + else if(!strcmp(k,"ddd")) gr->Dens(*(a[0].d), *(a[1].d), *(a[2].d), "",opt); + else if(!strcmp(k,"ddds")) gr->Dens(*(a[0].d), *(a[1].d), *(a[2].d), a[3].s.c_str(),opt); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_circle(mglGraph *gr, long , mglArg *a, int [10], const char *) -{ - int i; - for(i=0;i<4;i++) if(a[i].type!=2) { i--; break; } - if(i==3) - gr->Circle(mglPoint(a[0].v,a[1].v,a[2].v), a[3].v, a[4].type==1?a[4].s.c_str():"r"); - else if(i==2) - gr->Circle(mglPoint(a[0].v,a[1].v, NAN), a[2].v, a[3].type==1?a[3].s.c_str():"r"); - else return 1; - return 0; -} -void mglc_circle(wchar_t out[1024], long , mglArg *a, int [10], const char *) +int mgls_dens3(mglGraph *gr, long , mglArg *a, const char *k, const char *opt) { - int i; - for(i=0;i<4;i++) if(a[i].type!=2) - { i--; break; } - if(i==3) - mglprintf(out,1024,L"gr->Circle(mglPoint(%g, %g, %g), %g, \"%s\");", a[0].v,a[1].v,a[2].v, a[3].v, (a[4].type==1) ? a[4].s.c_str() : "r"); - else if(i==2) - mglprintf(out,1024,L"gr->Circle(mglPoint(%g, %g, NAN), %g, \"%s\");", a[0].v,a[1].v, a[2].v, (a[3].type==1) ? a[3].s.c_str() : "r"); + int res=0; + if(!strcmp(k,"d")) gr->Dens3(*(a[0].d),"",-1,opt); + else if(!strcmp(k,"ds")) gr->Dens3(*(a[0].d),a[1].s.c_str(),-1,opt); + else if(!strcmp(k,"dsn")) gr->Dens3(*(a[0].d),a[1].s.c_str(),iint(a[2].v),opt); + else if(!strcmp(k,"dddd")) gr->Dens3(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),"", -1,opt); + else if(!strcmp(k,"dddds")) gr->Dens3(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),a[4].s.c_str(),-1,opt); + else if(!strcmp(k,"ddddsn")) gr->Dens3(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),a[4].s.c_str(),iint(a[5].v),opt); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_rhomb(mglGraph *gr, long , mglArg *a, int [10], const char *) +int mgls_densx(mglGraph *gr, long , mglArg *a, const char *k, const char *opt) { - int i; - for(i=0;i<7;i++) if(a[i].type!=2) - { i--; break; } - if(i==6) - gr->Rhomb(mglPoint(a[0].v,a[1].v,a[2].v), mglPoint(a[3].v,a[4].v,a[5].v), - a[6].v, a[7].type==1?a[7].s.c_str():"r"); - else if(i==4) - gr->Rhomb(mglPoint(a[0].v,a[1].v,NAN), mglPoint(a[2].v,a[3].v,NAN), - a[4].v, a[5].type==1?a[5].s.c_str():"r"); - else return 1; - return 0; -} -void mglc_rhomb(wchar_t out[1024], long , mglArg *a, int [10], const char *) -{ - int i; - for(i=0;i<7;i++) if(a[i].type!=2) - { i--; break; } - if(i==6) - mglprintf(out,1024,L"gr->Rhomb(mglPoint(%g, %g, %g), mglPoint(%g, %g, %g), %g, \"%s\");", a[0].v,a[1].v,a[2].v, a[3].v,a[4].v,a[5].v, a[6].v, (a[7].type==1) ? a[7].s.c_str() : "r"); - else if(i==4) - mglprintf(out,1024,L"gr->Rhomb(mglPoint(%g, %g, NAN), mglPoint(%g, %g, NAN), %g, \"%s\");", a[0].v,a[1].v,a[2].v, a[3].v,a[4].v, (a[5].type==1) ? a[5].s.c_str() : "r"); + int res=0; + if(!strcmp(k,"d")) gr->DensX(*(a[0].d),"",NAN,opt); + else if(!strcmp(k,"ds")) gr->DensX(*(a[0].d),a[1].s.c_str(),NAN,opt); + else if(!strcmp(k,"dsn")) gr->DensX(*(a[0].d),a[1].s.c_str(),a[2].v,opt); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_dens(mglGraph *gr, long , mglArg *a, int k[10], const char *opt) -{ - if(k[0]!=1) return 1; - else if(k[1]!=1) gr->Dens(*(a[0].d),k[1]==2?a[1].s.c_str():"",opt); - else if(k[1]==1 && k[2]==1 && k[3]!=1) - gr->Dens(*(a[0].d), *(a[1].d), *(a[2].d), k[3]==2?a[3].s.c_str():"",opt); - else return 1; - return 0; -} -void mglc_dens(wchar_t out[1024], long , mglArg *a, int k[10], const char *opt) +int mgls_densy(mglGraph *gr, long , mglArg *a, const char *k, const char *opt) { - if(k[0]!=1) return; - else if(k[1]!=1) - mglprintf(out,1024,L"gr->Dens(%s,\"%s\", \"%s\");", a[0].s.c_str(), k[1]==2?a[1].s.c_str():"",opt); - else if(k[1]==1 && k[2]==1 && k[3]!=1) - mglprintf(out,1024,L"gr->Dens(%s, %s, %s, \"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), k[3]==2?a[3].s.c_str():"",opt); + int res=0; + if(!strcmp(k,"d")) gr->DensY(*(a[0].d),"",NAN,opt); + else if(!strcmp(k,"ds")) gr->DensY(*(a[0].d),a[1].s.c_str(),NAN,opt); + else if(!strcmp(k,"dsn")) gr->DensY(*(a[0].d),a[1].s.c_str(),a[2].v,opt); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_dens3(mglGraph *gr, long , mglArg *a, int k[10], const char *opt) +int mgls_densz(mglGraph *gr, long , mglArg *a, const char *k, const char *opt) { - if(k[0]!=1) return 1; - else if(k[1]==1 && k[2]==1 && k[3]==1) - gr->Dens3(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),k[4]==2?a[4].s.c_str():"", k[5]==3?iint(a[5].v):-1,opt); - else gr->Dens3(*(a[0].d),k[1]==2?a[1].s.c_str():"",k[2]==3?iint(a[2].v):-1,opt); - return 0; -} -void mglc_dens3(wchar_t out[1024], long , mglArg *a, int k[10], const char *opt) -{ - if(k[0]!=1) return; - else if(k[1]==1 && k[2]==1 && k[3]==1) - mglprintf(out,1024,L"gr->Dens3(%s, %s, %s, %s, \"%s\", %d, \"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), a[3].s.c_str(), k[4]==2?a[4].s.c_str():"", k[5]==3?iint(a[5].v):-1,opt); - else mglprintf(out,1024,L"gr->Dens3(%s, \"%s\", %d, \"%s\");", a[0].s.c_str(), k[1]==2?a[1].s.c_str():"",k[2]==3?iint(a[2].v):-1,opt); + int res=0; + if(!strcmp(k,"d")) gr->DensZ(*(a[0].d),"",NAN,opt); + else if(!strcmp(k,"ds")) gr->DensZ(*(a[0].d),a[1].s.c_str(),NAN,opt); + else if(!strcmp(k,"dsn")) gr->DensZ(*(a[0].d),a[1].s.c_str(),a[2].v,opt); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_densx(mglGraph *gr, long , mglArg *a, int k[10], const char *opt) -{ - if(k[0]==1) gr->DensX(*(a[0].d),k[1]==2?a[1].s.c_str():"",k[2]==3?a[2].v:NAN,opt); - else return 1; - return 0; -} -void mglc_densx(wchar_t out[1024], long , mglArg *a, int k[10], const char *opt) +int mgls_divto(mglGraph *, long , mglArg *a, const char *k, const char *) { - if(k[0]==1) mglprintf(out,1024,L"gr->DensX(%s, \"%s\", %g, \"%s\");", a[0].s.c_str(), k[1]==2?a[1].s.c_str():"", k[2]==3?a[2].v:NAN,opt); + int res=0; + if(!strcmp(k,"dd")) *(a[0].d) /= *(a[1].d); + else if(!strcmp(k,"dn")) *(a[0].d) /= a[1].v; + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_densy(mglGraph *gr, long , mglArg *a, int k[10], const char *opt) +int mgls_multo(mglGraph *, long , mglArg *a, const char *k, const char *) { - if(k[0]==1) gr->DensY(*(a[0].d),k[1]==2?a[1].s.c_str():"",k[2]==3?a[2].v:NAN,opt); - else return 1; - return 0; -} -void mglc_densy(wchar_t out[1024], long , mglArg *a, int k[10], const char *opt) -{ - if(k[0]==1) mglprintf(out,1024,L"gr->DensY(%s, \"%s\", %g, \"%s\");", a[0].s.c_str(), k[1]==2?a[1].s.c_str():"", k[2]==3?a[2].v:NAN,opt); + int res=0; + if(!strcmp(k,"dd")) *(a[0].d) *= *(a[1].d); + else if(!strcmp(k,"dn")) *(a[0].d) *= a[1].v; + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_densz(mglGraph *gr, long , mglArg *a, int k[10], const char *opt) -{ - if(k[0]==1) gr->DensZ(*(a[0].d),k[1]==2?a[1].s.c_str():"",k[2]==3?a[2].v:NAN,opt); - else return 1; - return 0; -} -void mglc_densz(wchar_t out[1024], long , mglArg *a, int k[10], const char *opt) +int mgls_subto(mglGraph *, long , mglArg *a, const char *k, const char *) { - if(k[0]==1) mglprintf(out,1024,L"gr->DensZ(%s, \"%s\", %g, \"%s\");", a[0].s.c_str(), k[1]==2?a[1].s.c_str():"", k[2]==3?a[2].v:NAN,opt); + int res=0; + if(!strcmp(k,"dd")) *(a[0].d) -= *(a[1].d); + else if(!strcmp(k,"dn")) *(a[0].d) -= a[1].v; + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_divto(mglGraph *, long , mglArg *a, int k[10], const char *) +int mgls_dots(mglGraph *gr, long , mglArg *a, const char *k, const char *opt) { - if(k[0]==1 && k[1]==1) *(a[0].d) /= *(a[1].d); - else if(k[0]==1 && k[1]==3) *(a[0].d) /= a[1].v; - else return 1; - return 0; -} -void mglc_divto(wchar_t out[1024], long , mglArg *a, int k[10], const char *) -{ - if(k[0]==1 && k[1]==1) mglprintf(out,1024,L"%s /= %s;",a[0].s.c_str(), a[1].s.c_str()); - else if(k[0]==1 && k[1]==3) mglprintf(out,1024,L"%s /= %g;",a[0].s.c_str(), a[1].v); + int res=0; + if(!strcmp(k,"ddd")) gr->Dots(*(a[0].d),*(a[1].d),*(a[2].d),"",opt); + else if(!strcmp(k,"ddds")) gr->Dots(*(a[0].d),*(a[1].d),*(a[2].d),a[3].s.c_str(),opt); + else if(!strcmp(k,"dddd")) gr->Dots(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),"",opt); + else if(!strcmp(k,"dddds")) gr->Dots(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),a[4].s.c_str(),opt); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_multo(mglGraph *, long , mglArg *a, int k[10], const char *) +int mgls_diff(mglGraph *, long , mglArg *a, const char *k, const char *) { - if(k[0]==1 && k[1]==1) *(a[0].d) *= *(a[1].d); - else if(k[0]==1 && k[1]==3) *(a[0].d) *= a[1].v; - else return 1; - return 0; -} -void mglc_multo(wchar_t out[1024], long , mglArg *a, int k[10], const char *) -{ - if(k[0]==1 && k[1]==1) mglprintf(out,1024,L"%s *= %s;",a[0].s.c_str(), a[1].s.c_str()); - else if(k[0]==1 && k[1]==3) mglprintf(out,1024,L"%s *= %g;",a[0].s.c_str(), a[1].v); + int res=0; + if(!strcmp(k,"ds")) a[0].d->Diff(a[1].s.c_str()); + else if(!strcmp(k,"ddd")) a[0].d->Diff(*(a[1].d), *(a[2].d)); + else if(!strcmp(k,"dddd")) a[0].d->Diff(*(a[1].d), *(a[2].d), *(a[3].d)); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_subto(mglGraph *, long , mglArg *a, int k[10], const char *) -{ - if(k[0]==1 && k[1]==1) *(a[0].d) -= *(a[1].d); - else if(k[0]==1 && k[1]==3) *(a[0].d) -= a[1].v; - else return 1; - return 0; -} -void mglc_subto(wchar_t out[1024], long , mglArg *a, int k[10], const char *) +int mgls_diff2(mglGraph *, long , mglArg *a, const char *k, const char *) { - if(k[0]==1 && k[1]==1) mglprintf(out,1024,L"%s -= %s;",a[0].s.c_str(), a[1].s.c_str()); - else if(k[0]==1 && k[1]==3) mglprintf(out,1024,L"%s -= %g;",a[0].s.c_str(), a[1].v); + int res=0; + if(!strcmp(k,"ds")) a[0].d->Diff2(a[1].s.c_str()); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_dots(mglGraph *gr, long , mglArg *a, int k[10], const char *opt) +int mgls_drop(mglGraph *gr, long n, mglArg *a, const char *k, const char *) { - if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==1) - gr->Dots(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),k[4]==2?a[4].s.c_str():"",opt); - else if(k[0]==1 && k[1]==1 && k[2]==1) - gr->Dots(*(a[0].d),*(a[1].d),*(a[2].d),k[3]==2?a[3].s.c_str():"",opt); - else return 1; - return 0; -} -void mglc_dots(wchar_t out[1024], long , mglArg *a, int k[10], const char *opt) -{ - if(k[0]==1 && k[1]==1 && k[2]==1) - mglprintf(out,1024,L"gr->Dots(%s, %s, %s, \"%s\", \"%s\");",a[0].s.c_str(),a[1].s.c_str(),a[2].s.c_str(),k[3]==2?a[3].s.c_str():"",opt); + int res=0; + if(!strcmp(k,"nnnnn")) + gr->Drop(mglPoint(a[0].v,a[1].v), mglPoint(a[2].v,a[3].v), a[4].v); + else if(!strcmp(k,"nnnnns")) + gr->Drop(mglPoint(a[0].v,a[1].v), mglPoint(a[2].v,a[3].v), a[4].v, a[5].s.c_str()); + else if(!strcmp(k,"nnnnnsn")) + gr->Drop(mglPoint(a[0].v,a[1].v), mglPoint(a[2].v,a[3].v), a[4].v, a[5].s.c_str(), a[6].v); + else if(!strcmp(k,"nnnnnsnn")) + gr->Drop(mglPoint(a[0].v,a[1].v), mglPoint(a[2].v,a[3].v), a[4].v, a[5].s.c_str(), a[6].v, a[7].v); + else if(!strcmp(k,"nnnnnnn")) + gr->Drop(mglPoint(a[0].v,a[1].v,a[2].v), mglPoint(a[3].v,a[4].v,a[5].v), a[6].v); + else if(!strcmp(k,"nnnnnnns")) + gr->Drop(mglPoint(a[0].v,a[1].v,a[2].v), mglPoint(a[3].v,a[4].v,a[5].v), a[6].v, a[7].s.c_str()); + else if(!strcmp(k,"nnnnnnnsn")) + gr->Drop(mglPoint(a[0].v,a[1].v,a[2].v), mglPoint(a[3].v,a[4].v,a[5].v), a[6].v, a[7].s.c_str(), a[8].v); + else if(!strcmp(k,"nnnnnnnsnn")) + gr->Drop(mglPoint(a[0].v,a[1].v,a[2].v), mglPoint(a[3].v,a[4].v,a[5].v), a[6].v, a[7].s.c_str(), a[8].v, a[9].v); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_diff(mglGraph *, long , mglArg *a, int k[10], const char *) -{ - if(k[0]==1 && k[1]==2) a[0].d->Diff(a[1].s.c_str()); - else if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==1) - a[0].d->Diff(*(a[1].d), *(a[2].d), *(a[3].d)); - else if(k[0]==1 && k[1]==1 && k[2]==1) - a[0].d->Diff(*(a[1].d), *(a[2].d)); - else return 1; - return 0; -} -void mglc_diff(wchar_t out[1024], long , mglArg *a, int k[10], const char *) +int mgls_dew(mglGraph *gr, long , mglArg *a, const char *k, const char *opt) { - if(k[0]==1 && k[1]==2) mglprintf(out,1024,L"%s.Diff(\"%s\");", a[0].s.c_str(), a[1].s.c_str()); - else if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==1) - mglprintf(out,1024,L"%s.Diff(%s, %s, %s);", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), a[3].s.c_str()); - else if(k[0]==1 && k[1]==1 && k[2]==1) - mglprintf(out,1024,L"%s.Diff(%s, %s);", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str()); + int res=0; + if(!strcmp(k,"dd")) gr->Dew(*(a[0].d),*(a[1].d),"",opt); + else if(!strcmp(k,"dds")) gr->Dew(*(a[0].d),*(a[1].d),a[2].s.c_str(),opt); + else if(!strcmp(k,"dddd")) gr->Dew(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),"",opt); + else if(!strcmp(k,"dddds")) gr->Dew(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),a[4].s.c_str(),opt); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_diff2(mglGraph *, long , mglArg *a, int k[10], const char *) +int mgls_fall(mglGraph *gr, long , mglArg *a, const char *k, const char *opt) { - if(k[0]==1 && k[1]==2) a[0].d->Diff2(a[1].s.c_str()); - else return 1; - return 0; -} -void mglc_diff2(wchar_t out[1024], long , mglArg *a, int k[10], const char *) -{ - if(k[0]==1 && k[1]==2) mglprintf(out,1024,L"%s.Diff2(\"%s\");", a[0].s.c_str(), a[1].s.c_str()); + int res=0; + if(!strcmp(k,"d")) gr->Fall(*(a[0].d),"",opt); + else if(!strcmp(k,"ds")) gr->Fall(*(a[0].d),a[1].s.c_str(),opt); + else if(!strcmp(k,"ddd")) gr->Fall(*(a[0].d),*(a[1].d),*(a[2].d),"",opt); + else if(!strcmp(k,"ddds")) gr->Fall(*(a[0].d),*(a[1].d),*(a[2].d),a[3].s.c_str(),opt); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_drop(mglGraph *gr, long n, mglArg *a, int k[10], const char *) -{ - register int i; - for(i=0;i<7;i++) if(k[i]!=3) break; - if(i==7) - gr->Drop(mglPoint(a[0].v,a[1].v,a[2].v), mglPoint(a[3].v,a[4].v,a[5].v), a[6].v, - k[7]==2 ? a[7].s.c_str():"b", k[8]==3 ? a[8].v:1., (n>9 && a[9].type==2) ? a[9].v:1.); - else if(i==5) - gr->Drop(mglPoint(a[0].v,a[1].v), mglPoint(a[2].v,a[3].v), a[4].v, - k[5]==2 ? a[5].s.c_str():"b", k[6]==3 ? a[6].v:1., k[7]==3 ? a[7].v:1.); - else return 1; - return 0; -} -void mglc_drop(wchar_t out[1024], long n, mglArg *a, int k[10], const char *) +int mgls_mesh(mglGraph *gr, long , mglArg *a, const char *k, const char *opt) { - register int i; - for(i=0;i<7;i++) if(k[i]!=3) break; - if(i==7) - mglprintf(out,1024,L"gr->Drop(mglPoint(%g, %g, %g), mglPoint(%g, %g, %g), %g, \"%s\", %g, %g);", a[0].v,a[1].v,a[2].v, a[3].v,a[4].v,a[5].v, a[6].v, k[7]==2 ? a[7].s.c_str():"b", k[8]==3 ? a[8].v:1., (n>9 && a[9].type==2) ? a[9].v:1.); - else if(i==5) - mglprintf(out,1024,L"gr->Drop(mglPoint(%g, %g), mglPoint(%g, %g), %g, \"%s\", %g, %g);", a[0].v,a[1].v, a[2].v,a[3].v, a[4].v, k[5]==2 ? a[5].s.c_str():"b", k[6]==3 ? a[6].v:1., k[7]==3 ? a[7].v:1.); + int res=0; + if(!strcmp(k,"d")) gr->Mesh(*(a[0].d),"",opt); + else if(!strcmp(k,"ds")) gr->Mesh(*(a[0].d),a[1].s.c_str(),opt); + else if(!strcmp(k,"ddd")) gr->Mesh(*(a[0].d),*(a[1].d),*(a[2].d),"",opt); + else if(!strcmp(k,"ddds")) gr->Mesh(*(a[0].d),*(a[1].d),*(a[2].d),a[3].s.c_str(),opt); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_dew(mglGraph *gr, long , mglArg *a, int k[10], const char *opt) +int mgls_surf(mglGraph *gr, long , mglArg *a, const char *k, const char *opt) { - if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==1) - gr->Dew(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),k[4]==2?a[4].s.c_str():"",opt); - else if(k[0]==1 && k[1]==1) gr->Dew(*(a[0].d),*(a[1].d),k[2]==2?a[2].s.c_str():"",opt); - else return 1; - return 0; -} -void mglc_dew(wchar_t out[1024], long , mglArg *a, int k[10], const char *opt) -{ - if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==1) - mglprintf(out,1024,L"gr->Dew(%s, %s, %s, %s, \"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), a[3].s.c_str(), k[4]==2?a[4].s.c_str():"",opt); - else if(k[0]==1 && k[1]==1) - mglprintf(out,1024,L"gr->Dew(%s, %s, \"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(), k[2]==2?a[2].s.c_str():"",opt); + int res=0; + if(!strcmp(k,"d")) gr->Surf(*(a[0].d),"",opt); + else if(!strcmp(k,"ds")) gr->Surf(*(a[0].d),a[1].s.c_str(),opt); + else if(!strcmp(k,"ddd")) gr->Surf(*(a[0].d),*(a[1].d),*(a[2].d),"",opt); + else if(!strcmp(k,"ddds")) gr->Surf(*(a[0].d),*(a[1].d),*(a[2].d),a[3].s.c_str(),opt); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_fall(mglGraph *gr, long , mglArg *a, int k[10], const char *opt) -{ - if(k[0]!=1) return 1; - else if(k[1]!=1) gr->Fall(*(a[0].d),k[1]==2?a[1].s.c_str():"",opt); - else if(k[1]==1 && k[2]==1) gr->Fall(*(a[0].d),*(a[1].d),*(a[2].d),k[3]==2?a[3].s.c_str():"",opt); - else return 1; - return 0; -} -void mglc_fall(wchar_t out[1024], long , mglArg *a, int k[10], const char *opt) +int mgls_surfc(mglGraph *gr, long , mglArg *a, const char *k, const char *opt) { - if(k[0]!=1) return; - else if(k[1]!=1) - mglprintf(out,1024,L"gr->Fall(%s, \"%s\", \"%s\");", a[0].s.c_str(),k[1]==2?a[1].s.c_str():"",opt); - else if(k[1]==1 && k[2]==1) - mglprintf(out,1024,L"gr->Fall(%s, %s, %s, \"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), k[3]==2?a[3].s.c_str():"",opt); + int res=0; + if(!strcmp(k,"dd")) gr->SurfC(*(a[0].d),*(a[1].d),"",opt); + else if(!strcmp(k,"dds")) gr->SurfC(*(a[0].d),*(a[1].d),a[2].s.c_str(),opt); + else if(!strcmp(k,"dddd")) gr->SurfC(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),"",opt); + else if(!strcmp(k,"dddds")) gr->SurfC(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),a[4].s.c_str(),opt); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_mesh(mglGraph *gr, long , mglArg *a, int k[10], const char *opt) -{ - if(k[0]!=1) return 1; - else if(k[1]!=1) gr->Mesh(*(a[0].d),k[1]==2?a[1].s.c_str():"",opt); - else if(k[1]==1 && k[2]==1) gr->Mesh(*(a[0].d),*(a[1].d),*(a[2].d),k[3]==2?a[3].s.c_str():"",opt); - else return 1; - return 0; -} -void mglc_mesh(wchar_t out[1024], long , mglArg *a, int k[10], const char *opt) -{ - if(k[0]!=1) return; - else if(k[1]!=1) - mglprintf(out,1024,L"gr->Mesh(%s, \"%s\", \"%s\");", a[0].s.c_str(),k[1]==2?a[1].s.c_str():"",opt); - else if(k[1]==1 && k[2]==1) - mglprintf(out,1024,L"gr->Mesh(%s, %s, %s, \"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), k[3]==2?a[3].s.c_str():"",opt); -} -//----------------------------------------------------------------------------- -int mgls_surf(mglGraph *gr, long , mglArg *a, int k[10], const char *opt) -{ - if(k[0]!=1) return 1; - else if(k[1]!=1) gr->Surf(*(a[0].d),k[1]==2?a[1].s.c_str():"",opt); - else if(k[1]==1 && k[2]==1) gr->Surf(*(a[0].d),*(a[1].d),*(a[2].d),k[3]==2?a[3].s.c_str():"",opt); - else return 1; - return 0; -} -void mglc_surf(wchar_t out[1024], long , mglArg *a, int k[10], const char *opt) -{ - if(k[0]!=1) return; - else if(k[1]!=1) - mglprintf(out,1024,L"gr->Surf(%s, \"%s\", \"%s\");", a[0].s.c_str(),k[1]==2?a[1].s.c_str():"",opt); - else if(k[1]==1 && k[2]==1) - mglprintf(out,1024,L"gr->Surf(%s, %s, %s, \"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), k[3]==2?a[3].s.c_str():"",opt); -} -//----------------------------------------------------------------------------- -int mgls_surfc(mglGraph *gr, long , mglArg *a, int k[10], const char *opt) -{ - if(k[0]!=1 || k[1]!=1) return 1; - else if(k[2]!=1) gr->SurfC(*(a[0].d),*(a[1].d),k[2]==2?a[2].s.c_str():"",opt); - else if(k[2]==1 && k[3]==1) gr->SurfC(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),k[4]==2?a[4].s.c_str():"",opt); - else return 1; - return 0; -} -void mglc_surfc(wchar_t out[1024], long , mglArg *a, int k[10], const char *opt) -{ - if(k[0]!=1 || k[1]!=1) return; - else if(k[2]!=1) - mglprintf(out,1024,L"gr->SurfC(%s, %s, \"%s\", \"%s\");", a[0].s.c_str(),a[1].s.c_str(),k[2]==2?a[2].s.c_str():"",opt); - else if(k[2]==1 && k[3]==1) - mglprintf(out,1024,L"gr->SurfC(%s, %s, %s, %s, \"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), a[3].s.c_str(), k[4]==2?a[4].s.c_str():"",opt); -} -//----------------------------------------------------------------------------- -int mgls_surfa(mglGraph *gr, long , mglArg *a, int k[10], const char *opt) -{ - if(k[0]!=1 || k[1]!=1) return 1; - else if(k[2]!=1) gr->SurfA(*(a[0].d),*(a[1].d),k[2]==2?a[2].s.c_str():"",opt); - else if(k[2]==1 && k[3]==1) gr->SurfA(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),k[4]==2?a[4].s.c_str():"",opt); - else return 1; - return 0; -} -void mglc_surfa(wchar_t out[1024], long , mglArg *a, int k[10], const char *opt) -{ - if(k[0]!=1 || k[1]!=1) return; - else if(k[2]!=1) - mglprintf(out,1024,L"gr->SurfA(%s, %s, \"%s\", \"%s\");", a[0].s.c_str(),a[1].s.c_str(),k[2]==2?a[2].s.c_str():"",opt); - else if(k[2]==1 && k[3]==1) - mglprintf(out,1024,L"gr->SurfA(%s, %s, %s, %s, \"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), a[3].s.c_str(), k[4]==2?a[4].s.c_str():"",opt); -} -//----------------------------------------------------------------------------- -int mgls_flow(mglGraph *gr, long , mglArg *a, int k[10], const char *opt) -{ - int i; - for(i=0;i<7;i++) if(k[i]!=1) break; - if(i==2) - gr->Flow(*(a[0].d),*(a[1].d),k[2]==2?a[2].s.c_str():"",opt); - else if(i==4) - gr->Flow(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),k[4]==2?a[4].s.c_str():"",opt); - else if(i==3) - gr->Flow(*(a[0].d),*(a[1].d),*(a[2].d),k[3]==2?a[3].s.c_str():"",opt); - else if(i==6) - gr->Flow(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),*(a[5].d),k[6]==2?a[6].s.c_str():"",opt); - else if(k[0]==3 && k[1]==3 && k[2]==1 && k[3]==1 && k[4]==1 && k[5]==1) - gr->FlowP(mglPoint(a[0].v,a[1].v,k[7]==3?a[7].v:NAN), - *(a[2].d),*(a[3].d),*(a[4].d),*(a[5].d),k[6]==2?a[6].s.c_str():"",opt); - else if(k[0]==3 && k[1]==3 && k[2]==1 && k[3]==1) - gr->FlowP(mglPoint(a[0].v,a[1].v,k[5]==3?a[5].v:NAN), - *(a[2].d),*(a[3].d),k[4]==2?a[4].s.c_str():"",opt); - else if(k[0]==3 && k[1]==3 && k[2]==3 && k[3]==1 && k[4]==1 && k[5]==1 && k[6]==1 && k[7]==1 && k[8]==1) - gr->FlowP(mglPoint(a[0].v,a[1].v,a[2].v), - *(a[3].d),*(a[4].d),*(a[5].d),*(a[6].d),*(a[7].d),*(a[8].d),k[9]==2?a[9].s.c_str():"",opt); - else if(k[0]==3 && k[1]==3 && k[2]==3 && k[3]==1 && k[4]==1 && k[5]==1) - gr->FlowP(mglPoint(a[0].v,a[1].v,a[2].v), - *(a[3].d),*(a[4].d),*(a[5].d),k[6]==2?a[6].s.c_str():"",opt); - else return 1; - return 0; -} -void mglc_flow(wchar_t out[1024], long , mglArg *a, int k[10], const char *opt) -{ - int i; - for(i=0;i<7;i++) if(k[i]!=1) break; - if(i==2) - mglprintf(out,1024,L"gr->Flow(%s, %s, \"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(), k[2]==2?a[2].s.c_str():"",opt); - else if(i==4) - mglprintf(out,1024,L"gr->Flow(%s, %s, %s, %s, \"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), a[3].s.c_str(), k[4]==2?a[4].s.c_str():"",opt); - else if(i==3) - mglprintf(out,1024,L"gr->Flow(%s, %s, %s, \"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), k[3]==2?a[3].s.c_str():"",opt); - else if(i==6) - mglprintf(out,1024,L"gr->Flow(%s, %s, %s, %s, %s, %s, \"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), a[3].s.c_str(), a[4].s.c_str(), a[5].s.c_str(), k[6]==2?a[6].s.c_str():"",opt); - else if(k[0]==3 && k[1]==3 && k[2]==1 && k[3]==1 && k[4]==1 && k[5]==1) - mglprintf(out,1024,L"gr->FlowP(mglPoint(%g,%g,%g), %s, %s, %s, %s, \"%s\", \"%s\");", - a[0].v,a[1].v,k[7]==3?a[7].v:NAN,a[2].s.c_str(),a[3].s.c_str(),a[4].s.c_str(),a[5].s.c_str(),k[6]==2?a[6].s.c_str():"",opt); - else if(k[0]==3 && k[1]==3 && k[2]==1 && k[3]==1) - mglprintf(out,1024,L"gr->FlowP(mglPoint(%g,%g,%g), %s, %s, \"%s\", \"%s\");", - a[0].v,a[1].v,k[5]==3?a[5].v:NAN,a[2].s.c_str(),a[3].s.c_str(),k[4]==2?a[4].s.c_str():"",opt); - else if(k[0]==3 && k[1]==3 && k[2]==3 && k[3]==1 && k[4]==1 && k[5]==1 && k[6]==1 && k[7]==1 && k[8]==1) - mglprintf(out,1024,L"gr->FlowP(mglPoint(%g,%g,%g), %s, %s, %s, %s, %s, %s, \"%s\", \"%s\");", - a[0].v,a[1].v,a[2].v,a[3].s.c_str(),a[4].s.c_str(),a[5].s.c_str(),a[6].s.c_str(),a[7].s.c_str(),a[8].s.c_str(),k[9]==2?a[9].s.c_str():"",opt); - else if(k[0]==3 && k[1]==3 && k[2]==3 && k[3]==1 && k[4]==1 && k[5]==1) - mglprintf(out,1024,L"gr->FlowP(mglPoint(%g,%g,%g), %s, %s, %s, \"%s\", \"%s\");", - a[0].v,a[1].v,a[2].v,a[3].s.c_str(),a[4].s.c_str(),a[5].s.c_str(),k[6]==2?a[6].s.c_str():"",opt); -} -//----------------------------------------------------------------------------- -int mgls_grad(mglGraph *gr, long , mglArg *a, int k[10], const char *opt) -{ - int i; - for(i=0;i<7;i++) if(k[i]!=1) break; - if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==1) - gr->Grad(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d), k[4]==2?a[4].s.c_str():"",opt); - else if(k[0]==1 && k[1]==1 && k[2]==1) - gr->Grad(*(a[0].d),*(a[1].d),*(a[2].d), k[3]==2?a[3].s.c_str():"",opt); - else if(k[0]==1) - gr->Grad(*(a[0].d), k[1]==2?a[1].s.c_str():"",opt); - else return 1; - return 0; -} -void mglc_grad(wchar_t out[1024], long , mglArg *a, int k[10], const char *opt) -{ - if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==1) - mglprintf(out,1024,L"gr->Grad(%s, %s, %s, %s, \"%s\", \"%s\");", - a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), a[3].s.c_str(), k[4]==2?a[4].s.c_str():"",opt); - else if(k[0]==1 && k[1]==1 && k[2]==1) - mglprintf(out,1024,L"gr->Grad(%s, %s, %s, \"%s\", \"%s\");", - a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), k[3]==2?a[3].s.c_str():"",opt); - else if(k[0]==1) - mglprintf(out,1024,L"gr->Grad(%s, \"%s\", \"%s\");", a[0].s.c_str(), k[1]==2?a[1].s.c_str():"",opt); -} -//----------------------------------------------------------------------------- -int mgls_fill(mglGraph *gr, long , mglArg *a, int k[10], const char *opt) -{ - if(k[0]==1 && k[1]==2) - { - if(k[2]==1 && a[2].d && k[3]==1 && a[3].d) - gr->Fill(*(a[0].d),a[1].s.c_str(), *(a[2].d), *(a[3].d),opt); - else if(k[2]==1 && a[2].d) - gr->Fill(*(a[0].d),a[1].s.c_str(), *(a[2].d),opt); - else gr->Fill(*(a[0].d),a[1].s.c_str(),opt); - } - else if(k[0]==1 && k[1]==3 && k[2]==3) - a[0].d->Fill(a[1].v,a[2].v,k[3]==2?a[3].s.c_str()[0]:'x'); - else return 1; - return 0; -} -void mglc_fill(wchar_t out[1024], long , mglArg *a, int k[10], const char *opt) +int mgls_surfa(mglGraph *gr, long , mglArg *a, const char *k, const char *opt) { - if(k[0]==1 && k[1]==2) - mglprintf(out,1024,L"gr->Fill(%s,\"%s\", %s, %s, \"%s\");", a[0].s.c_str(), a[1].s.c_str(), k[2]==1?a[2].s.c_str():"", k[3]==1?a[3].s.c_str():"",opt); - else if(k[0]==1 && k[1]==3 && k[2]==3) - mglprintf(out,1024,L"%s.Fill(%g, %g, '%c');", a[0].s.c_str(), a[1].v,a[2].v, k[3]==2?a[3].s.c_str()[0]:'x'); + int res=0; + if(!strcmp(k,"dd")) gr->SurfA(*(a[0].d),*(a[1].d),"",opt); + else if(!strcmp(k,"dds")) gr->SurfA(*(a[0].d),*(a[1].d),a[2].s.c_str(),opt); + else if(!strcmp(k,"dddd")) gr->SurfA(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),"",opt); + else if(!strcmp(k,"dddds")) gr->SurfA(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),a[4].s.c_str(),opt); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_fillsample(mglGraph *, long , mglArg *a, int k[10], const char *) +int mgls_flow(mglGraph *gr, long , mglArg *a, const char *k, const char *opt) { - if(k[0]==1 && k[1]==2) a[0].d->FillSample(a[1].s.c_str()); - else return 1; - return 0; -} -void mglc_fillsample(wchar_t out[1024], long , mglArg *a, int k[10], const char *) -{ - if(k[0]==1 && k[1]==2) - mglprintf(out,1024,L"%s.FillSample(\"%s\");", a[0].s.c_str(), a[1].s.c_str()); + int res=0; + if(!strcmp(k,"dd")) gr->Flow(*(a[0].d),*(a[1].d),"",opt); + else if(!strcmp(k,"dds")) gr->Flow(*(a[0].d),*(a[1].d),a[2].s.c_str(),opt); + else if(!strcmp(k,"ddd")) gr->Flow(*(a[0].d),*(a[1].d),*(a[2].d),"",opt); + else if(!strcmp(k,"ddds")) gr->Flow(*(a[0].d),*(a[1].d),*(a[2].d),a[3].s.c_str(),opt); + else if(!strcmp(k,"dddd")) gr->Flow(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),"",opt); + else if(!strcmp(k,"dddds")) gr->Flow(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),a[4].s.c_str(),opt); + else if(!strcmp(k,"dddddd")) + gr->Flow(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),*(a[5].d),"",opt); + else if(!strcmp(k,"dddddds")) + gr->Flow(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),*(a[5].d),a[6].s.c_str(),opt); + else if(!strcmp(k,"nndd")) + gr->FlowP(mglPoint(a[0].v,a[1].v,NAN), *(a[2].d),*(a[3].d),"",opt); + else if(!strcmp(k,"nndds")) + gr->FlowP(mglPoint(a[0].v,a[1].v,NAN), *(a[2].d),*(a[3].d),a[4].s.c_str(),opt); + else if(!strcmp(k,"nndddd")) + gr->FlowP(mglPoint(a[0].v,a[1].v,NAN), *(a[2].d),*(a[3].d),*(a[4].d),*(a[5].d),"",opt); + else if(!strcmp(k,"nndddds")) + gr->FlowP(mglPoint(a[0].v,a[1].v,NAN), *(a[2].d),*(a[3].d),*(a[4].d),*(a[5].d),a[6].s.c_str(),opt); + else if(!strcmp(k,"nnnddd")) + gr->FlowP(mglPoint(a[0].v,a[1].v,a[2].v), *(a[3].d),*(a[4].d),*(a[5].d),"",opt); + else if(!strcmp(k,"nnnddds")) + gr->FlowP(mglPoint(a[0].v,a[1].v,a[2].v), *(a[3].d),*(a[4].d),*(a[5].d),a[6].s.c_str(),opt); + else if(!strcmp(k,"nnndddddd")) + gr->FlowP(mglPoint(a[0].v,a[1].v,a[2].v), *(a[3].d),*(a[4].d),*(a[5].d),*(a[6].d),*(a[7].d),*(a[8].d),"",opt); + else if(!strcmp(k,"nnndddddds")) + gr->FlowP(mglPoint(a[0].v,a[1].v,a[2].v), *(a[3].d),*(a[4].d),*(a[5].d),*(a[6].d),*(a[7].d),*(a[8].d),a[9].s.c_str(),opt); + else res = 1; + return res; } //----------------------------------------------------------------------------- -int mgls_fog(mglGraph *gr, long , mglArg *a, int k[10], const char *) -{ - if(k[0]==3) gr->Fog(a[0].v,k[1]==3?a[1].v:0.25); - else return 1; - return 0; -} -void mglc_fog(wchar_t out[1024], long , mglArg *a, int k[10], const char *) +int mgls_grad(mglGraph *gr, long , mglArg *a, const char *k, const char *opt) { - if(k[0]==3) mglprintf(out,1024,L"gr->Fog(%g, %g);", a[0].v,k[1]==3?a[1].v:0.25); + int res=0; + if(!strcmp(k,"d")) gr->Grad(*(a[0].d), "",opt); + else if(!strcmp(k,"ds")) gr->Grad(*(a[0].d), a[1].s.c_str(),opt); + else if(!strcmp(k,"ddd")) gr->Grad(*(a[0].d),*(a[1].d),*(a[2].d), "",opt); + else if(!strcmp(k,"ddds")) gr->Grad(*(a[0].d),*(a[1].d),*(a[2].d), a[3].s.c_str(),opt); + else if(!strcmp(k,"dddd")) gr->Grad(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d), "",opt); + else if(!strcmp(k,"dddds")) gr->Grad(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d), a[4].s.c_str(),opt); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_font(mglGraph *gr, long , mglArg *a, int k[10], const char *) +int mgls_fill(mglGraph *gr, long , mglArg *a, const char *k, const char *opt) { - if(k[0]==2) - { gr->SetFontDef(a[0].s.c_str()); if(k[1]==3) gr->SetFontSize(a[1].v); } - else return 1; - return 0; -} -void mglc_font(wchar_t out[1024], long , mglArg *a, int k[10], const char *) -{ - if(k[0]==2 && k[1]==3) - mglprintf(out,1024,L"gr->SetFontDef(\"%s\");\tgr->SetFontSize(%g);", a[0].s.c_str(), a[1].v); - else if(k[0]==2) - mglprintf(out,1024,L"gr->SetFontDef(\"%s\");",a[0].s.c_str()); + int res=0; + if(!strcmp(k,"dnn")) a[0].d->Fill(a[1].v,a[2].v); + else if(!strcmp(k,"dnns")) a[0].d->Fill(a[1].v,a[2].v,a[3].s.c_str()[0]); + else if(!strcmp(k,"ds")) gr->Fill(*(a[0].d),a[1].s.c_str(),opt); + else if(!strcmp(k,"dsd")) gr->Fill(*(a[0].d),a[1].s.c_str(), *(a[2].d),opt); + else if(!strcmp(k,"dsdd")) gr->Fill(*(a[0].d),a[1].s.c_str(), *(a[2].d), *(a[3].d),opt); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_loadfont(mglGraph *gr, long , mglArg *a, int k[10], const char *) -{ - if(k[0]==2 && a[0].s.c_str()[0]) gr->LoadFont(a[0].s.c_str()); - else gr->RestoreFont(); - return 0; -} -void mglc_loadfont(wchar_t out[1024], long , mglArg *a, int k[10], const char *) +int mgls_fillsample(mglGraph *, long , mglArg *a, const char *k, const char *) { - if(k[0]==2 && a[0].s.c_str()[0]) - mglprintf(out,1024,L"gr->LoadFont(\"%s\");", a[0].s.c_str()); - else - mglprintf(out,1024,L"gr->RestoreFont();"); + int res=0; + if(!strcmp(k,"ds")) a[0].d->FillSample(a[1].s.c_str()); + else res = 1; return res; +} +//----------------------------------------------------------------------------- +int mgls_fog(mglGraph *gr, long , mglArg *a, const char *k, const char *) +{ + int res=0; + if(!strcmp(k,"n")) gr->Fog(a[0].v); + else if(!strcmp(k,"nn")) gr->Fog(a[0].v,a[1].v); + else res = 1; return res; +} +//----------------------------------------------------------------------------- +int mgls_font(mglGraph *gr, long , mglArg *a, const char *k, const char *) +{ + int res=0; + if(!strcmp(k,"s")) gr->SetFontDef(a[0].s.c_str()); + else if(!strcmp(k,"sn")) + { gr->SetFontDef(a[0].s.c_str()); gr->SetFontSize(a[1].v); } + else res = 1; return res; +} +//----------------------------------------------------------------------------- +int mgls_loadfont(mglGraph *gr, long , mglArg *a, const char *k, const char *) +{ + int res=0; + if(!strcmp(k,"") || (!strcmp(k,"s") && a[0].s[0]==0)) gr->RestoreFont(); + else if(!strcmp(k,"s")) gr->LoadFont(a[0].s.c_str()); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_grid(mglGraph *gr, long , mglArg *a, int k[10], const char *opt) +int mgls_grid(mglGraph *gr, long , mglArg *a, const char *k, const char *opt) { - gr->Grid(k[0]==2?a[0].s.c_str():"xyzt", k[1]==2?a[1].s.c_str():"B-",opt); - return 0; -} -void mglc_grid(wchar_t out[1024], long , mglArg *a, int k[10], const char *opt) -{ - mglprintf(out,1024,L"gr->Grid(\"%s\", \"%s\", \"%s\");", k[0]==2?a[0].s.c_str():"xyz", k[1]==2?a[1].s.c_str():"B-",opt); + int res=0; + if(!strcmp(k,"")) gr->Grid("xyzt", "B",opt); + else if(!strcmp(k,"s")) gr->Grid(a[0].s.c_str(), "B",opt); + else if(!strcmp(k,"ss"))gr->Grid(a[0].s.c_str(), a[1].s.c_str(),opt); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_grid2(mglGraph *gr, long , mglArg *a, int k[10], const char *opt) -{ - if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]!=1) - gr->Grid(*(a[0].d), *(a[1].d), *(a[2].d), k[3]==2?a[3].s.c_str():"",opt); - else if(k[0]==1) gr->Grid(*(a[0].d),k[1]==2?a[1].s.c_str():"",opt); - else return 1; - return 0; -} -void mglc_grid2(wchar_t out[1024], long , mglArg *a, int k[10], const char *opt) +int mgls_grid2(mglGraph *gr, long , mglArg *a, const char *k, const char *opt) { - if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]!=1) - mglprintf(out,1024,L"gr->Grid(%s, %s, %s, \"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), k[3]==2?a[3].s.c_str():"",opt); - else if(k[0]==1) - mglprintf(out,1024,L"gr->Grid(%s,\"%s\", \"%s\");", a[0].s.c_str(), k[1]==2?a[1].s.c_str():"",opt); + int res=0; + if(!strcmp(k,"d")) gr->Grid(*(a[0].d),"",opt); + else if(!strcmp(k,"ds")) gr->Grid(*(a[0].d),a[1].s.c_str(),opt); + else if(!strcmp(k,"ddd")) gr->Grid(*(a[0].d), *(a[1].d), *(a[2].d), "",opt); + else if(!strcmp(k,"ddds")) gr->Grid(*(a[0].d), *(a[1].d), *(a[2].d), a[3].s.c_str(),opt); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_grid3(mglGraph *gr, long , mglArg *a, int k[10], const char *opt) +int mgls_grid3(mglGraph *gr, long , mglArg *a, const char *k, const char *opt) { - if(k[0]!=1) return 1; - else if(k[1]==1 && k[2]==1 && k[3]==1) - gr->Grid3(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),k[4]==2?a[4].s.c_str():"", k[5]==3?iint(a[5].v):-1,opt); - else gr->Grid3(*(a[0].d),k[1]==2?a[1].s.c_str():"",k[2]==3?iint(a[2].v):-1,opt); - return 0; -} -void mglc_grid3(wchar_t out[1024], long , mglArg *a, int k[10], const char *opt) -{ - if(k[0]!=1) return; - else if(k[1]==1 && k[2]==1 && k[3]==1) - mglprintf(out,1024,L"gr->Grid3(%s, %s, %s, %s, \"%s\", %d, \"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), a[3].s.c_str(), k[4]==2?a[4].s.c_str():"", k[5]==3?iint(a[5].v):-1,opt); - else mglprintf(out,1024,L"gr->Grid3(%s, \"%s\", %d, \"%s\");", a[0].s.c_str(), k[1]==2?a[1].s.c_str():"",k[2]==3?iint(a[2].v):-1,opt); + int res=0; + if(!strcmp(k,"d")) gr->Grid3(*(a[0].d),"",-1,opt); + else if(!strcmp(k,"ds")) gr->Grid3(*(a[0].d),a[1].s.c_str(),-1,opt); + else if(!strcmp(k,"dsn")) gr->Grid3(*(a[0].d),a[1].s.c_str(),iint(a[2].v),opt); + else if(!strcmp(k,"dddd")) gr->Grid3(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),"",-1,opt); + else if(!strcmp(k,"dddds")) gr->Grid3(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),a[4].s.c_str(),-1,opt); + else if(!strcmp(k,"ddddsn"))gr->Grid3(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),a[4].s.c_str(),iint(a[5].v),opt); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_light(mglGraph *gr, long , mglArg *a, int k[10], const char *) -{ - if(k[0]==0) gr->Light(true); - else if(k[0]!=3) return 1; - else if(k[1]!=3) gr->Light(a[0].v!=0); - else if(k[2]==3 && k[3]==3 && k[4]==3 && k[5]==3 && k[6]==3) - gr->AddLight(iint(a[0].v),mglPoint(a[1].v,a[2].v,a[3].v),mglPoint(a[4].v,a[5].v,a[6].v), k[7]==2?a[7].s.c_str()[0]:'w',k[8]==3?a[8].v:0.5,k[9]==3?a[9].v:0); - else if(k[2]==3 && k[3]==3) - gr->AddLight(iint(a[0].v),mglPoint(a[1].v,a[2].v,a[3].v), k[4]==2?a[4].s.c_str()[0]:'w',k[5]==3?a[5].v:0.5,k[6]==3?a[6].v:0); - else gr->Light(iint(a[0].v),a[1].v!=0); - return 0; -} -void mglc_light(wchar_t out[1024], long , mglArg *a, int k[10], const char *) +int mgls_light(mglGraph *gr, long , mglArg *a, const char *k, const char *) { - if(k[0]==0) mglprintf(out,1024,L"gr->Light(true);"); - else if(k[0]!=3) return; - else if(k[1]!=3) mglprintf(out,1024,L"gr->Light(%s);", a[0].v!=0 ? "true":"false"); - else if(k[2]==3 && k[3]==3 && k[4]==3 && k[5]==3 && k[6]==3) - mglprintf(out,1024,L"gr->AddLight(%d, mglPoint(%g, %g, %g), mglPoint(%g, %g, %g), '%c', %g, %g);", iint(a[0].v), a[1].v, a[2].v, a[3].v, a[4].v, a[5].v, a[6].v, k[7]==2?a[7].s.c_str()[0]:'w', k[8]==3?a[8].v:0.5, k[9]==3?a[9].v:0); - else if(k[2]==3 && k[3]==3) - mglprintf(out,1024,L"gr->AddLight(%d, mglPoint(%g, %g, %g), '%c', %g, %g);", iint(a[0].v), a[1].v, a[2].v, a[3].v, k[4]==2?a[4].s.c_str()[0]:'w', k[5]==3?a[5].v:0.5, k[6]==3?a[6].v:0); - else mglprintf(out,1024,L"gr->Light(%d, %s);", iint(a[0].v), a[1].v!=0 ? "true":"false"); + int res=0; + if(!strcmp(k,"")) gr->Light(true); + else if(!strcmp(k,"n")) gr->Light(a[0].v!=0); + else if(!strcmp(k,"nn")) gr->Light(iint(a[0].v),a[1].v!=0); + else if(!strcmp(k,"nnnn")) gr->AddLight(iint(a[0].v),mglPoint(a[1].v,a[2].v,a[3].v)); + else if(!strcmp(k,"nnnns")) gr->AddLight(iint(a[0].v),mglPoint(a[1].v,a[2].v,a[3].v), a[4].s.c_str()[0]); + else if(!strcmp(k,"nnnnsn"))gr->AddLight(iint(a[0].v),mglPoint(a[1].v,a[2].v,a[3].v), a[4].s.c_str()[0],a[5].v); + else if(!strcmp(k,"nnnnsnn")) + gr->AddLight(iint(a[0].v),mglPoint(a[1].v,a[2].v,a[3].v), a[4].s.c_str()[0],a[5].v,a[6].v); + else if(!strcmp(k,"nnnnnnn")) + gr->AddLight(iint(a[0].v),mglPoint(a[1].v,a[2].v,a[3].v),mglPoint(a[4].v,a[5].v,a[6].v)); + else if(!strcmp(k,"nnnnnnns")) + gr->AddLight(iint(a[0].v),mglPoint(a[1].v,a[2].v,a[3].v),mglPoint(a[4].v,a[5].v,a[6].v), a[7].s.c_str()[0]); + else if(!strcmp(k,"nnnnnnnsn")) + gr->AddLight(iint(a[0].v),mglPoint(a[1].v,a[2].v,a[3].v),mglPoint(a[4].v,a[5].v,a[6].v), a[7].s.c_str()[0],a[8].v); + else if(!strcmp(k,"nnnnnnnsnn")) + gr->AddLight(iint(a[0].v),mglPoint(a[1].v,a[2].v,a[3].v),mglPoint(a[4].v,a[5].v,a[6].v), a[7].s.c_str()[0],a[8].v,a[9].v); + return res; } //----------------------------------------------------------------------------- -int mgls_line(mglGraph *gr, long n, mglArg *a, int [10], const char *) +int mgls_line(mglGraph *gr, long n, mglArg *a, const char *k, const char *) { - int i; - if(n>5) - { - bool ok=true; - for(i=0;i<6;i++) if(a[i].type!=2) ok=false; - if(ok) - gr->Line(mglPoint(a[0].v,a[1].v,a[2].v), - mglPoint(a[3].v,a[4].v,a[5].v), - (n==7 && a[6].type==1) ? a[6].s.c_str() : 0, 100); - else return 1; - } - else if(n>3) - { - bool ok=true; - for(i=0;i<4;i++) if(a[i].type!=2) ok=false; - if(ok) - gr->Line(mglPoint(a[0].v,a[1].v,NAN), mglPoint(a[2].v,a[3].v,NAN), - (n==5 && a[4].type==1) ? a[4].s.c_str() : 0, 100); - else return 1; - } - else return 1; - return 0; -} -void mglc_line(wchar_t out[1024], long n, mglArg *a, int [10], const char *) -{ - int i; - if(n>5) - { - bool ok=true; - for(i=0;i<6;i++) if(a[i].type!=2) ok=false; - if(ok) - mglprintf(out,1024,L"gr->Line(mglPoint(%g, %g, %g), mglPoint(%g, %g, %g), \"%s\", 100);", a[0].v,a[1].v,a[2].v, a[3].v,a[4].v,a[5].v, (n==7 && a[6].type==1) ? a[6].s.c_str() : ""); - } - else if(n>3) - { - bool ok=true; - for(i=0;i<4;i++) if(a[i].type!=2) ok=false; - if(ok) - mglprintf(out,1024,L"gr->Line(mglPoint(%g, %g, gr->Min.z), mglPoint(%g, %g, gr->Min.z), \"%s\", 100);", a[0].v,a[1].v,a[2].v, a[3].v, (n==5 && a[4].type==1) ? a[4].s.c_str() : ""); - } + int res=0; + if(!strcmp(k,"nnnn")) + gr->Line(mglPoint(a[0].v,a[1].v,NAN), mglPoint(a[2].v,a[3].v,NAN)); + else if(!strcmp(k,"nnnns")) + gr->Line(mglPoint(a[0].v,a[1].v,NAN), mglPoint(a[2].v,a[3].v,NAN), a[4].s.c_str()); + else if(!strcmp(k,"nnnnnn")) + gr->Line(mglPoint(a[0].v,a[1].v,a[2].v), mglPoint(a[3].v,a[4].v,a[5].v)); + else if(!strcmp(k,"nnnnnns")) + gr->Line(mglPoint(a[0].v,a[1].v,a[2].v), mglPoint(a[3].v,a[4].v,a[5].v), a[6].s.c_str()); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_errbox(mglGraph *gr, long n, mglArg *a, int [10], const char *) +int mgls_errbox(mglGraph *gr, long n, mglArg *a, const char *k, const char *) { - int i; - if(n>5) - { - bool ok=true; - for(i=0;i<6;i++) if(a[i].type!=2) ok=false; - if(ok) - gr->Error(mglPoint(a[0].v,a[1].v,a[2].v), - mglPoint(a[3].v,a[4].v,a[5].v), - (n==7 && a[6].type==1) ? a[6].s.c_str() : ""); - else return 1; - } - else if(n>3) - { - bool ok=true; - for(i=0;i<4;i++) if(a[i].type!=2) ok=false; - if(ok) - gr->Error(mglPoint(a[0].v,a[1].v,NAN), mglPoint(a[2].v,a[3].v,NAN), - (n==5 && a[4].type==1) ? a[4].s.c_str() : ""); - else return 1; - } - else return 1; - return 0; -} -void mglc_errbox(wchar_t out[1024], long n, mglArg *a, int [10], const char *) -{ - int i; - if(n>5) - { - bool ok=true; - for(i=0;i<6;i++) if(a[i].type!=2) ok=false; - if(ok) - mglprintf(out,1024,L"gr->Error(mglPoint(%g, %g, %g), mglPoint(%g, %g, %g), \"%s\");", a[0].v,a[1].v,a[2].v, a[3].v,a[4].v,a[5].v, (n==7 && a[6].type==1) ? a[6].s.c_str() : ""); - } - else if(n>3) - { - bool ok=true; - for(i=0;i<4;i++) if(a[i].type!=2) ok=false; - if(ok) - mglprintf(out,1024,L"gr->Error(mglPoint(%g, %g, gr->Min.z), mglPoint(%g, %g, gr->Min.z), \"%s\");", a[0].v,a[1].v,a[2].v, a[3].v, (n==5 && a[4].type==1) ? a[4].s.c_str() : ""); - } + int res=0; + if(!strcmp(k,"nnnn")) + gr->Error(mglPoint(a[0].v,a[1].v,NAN), mglPoint(a[2].v,a[3].v,NAN)); + else if(!strcmp(k,"nnnns")) + gr->Error(mglPoint(a[0].v,a[1].v,NAN), mglPoint(a[2].v,a[3].v,NAN), a[4].s.c_str()); + else if(!strcmp(k,"nnnnnn")) + gr->Error(mglPoint(a[0].v,a[1].v,a[2].v), mglPoint(a[3].v,a[4].v,a[5].v)); + else if(!strcmp(k,"nnnnnns")) + gr->Error(mglPoint(a[0].v,a[1].v,a[2].v), mglPoint(a[3].v,a[4].v,a[5].v), a[6].s.c_str()); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_legend(mglGraph *gr, long , mglArg *a, int k[10], const char *opt) -{ - if(k[0]==3 && k[1]==3) - gr->Legend(a[0].v, a[1].v, k[2]==2?a[2].s.c_str():"#", opt); - else - gr->Legend(k[0]==3?iint(a[0].v):3, k[1]==2?a[1].s.c_str():"#", opt); - return 0; -} -void mglc_legend(wchar_t out[1024], long , mglArg *a, int k[10], const char *opt) +int mgls_legend(mglGraph *gr, long , mglArg *a, const char *k, const char *opt) { - if(k[0]==3 && k[1]==3) - mglprintf(out,1024,L"gr->Legend(%g, %g, \"%s\", \"%s\");", a[0].v, a[1].v, k[2]==2?a[2].s.c_str():"#", opt); - else - mglprintf(out,1024,L"gr->Legend(%d, \"%s\", \"%s\");", k[0]==3?iint(a[0].v):3, k[1]==2?a[1].s.c_str():"#", opt); + int res=0; + if(!strcmp(k,"")) gr->Legend(3, "#", opt); + else if(!strcmp(k,"n")) gr->Legend(iint(a[0].v), "#", opt); + else if(!strcmp(k,"ns")) gr->Legend(iint(a[0].v), a[1].s.c_str(), opt); + else if(!strcmp(k,"nn")) gr->Legend(a[0].v, a[1].v, "#", opt); + else if(!strcmp(k,"nns")) gr->Legend(a[0].v, a[1].v, a[2].s.c_str(), opt); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_barwidth(mglGraph *gr, long , mglArg *a, int k[10], const char *) +int mgls_barwidth(mglGraph *gr, long , mglArg *a, const char *k, const char *) { - if(k[0]==3) gr->SetBarWidth(a[0].v); - else return 1; - return 0; -} -void mglc_barwidth(wchar_t out[1024], long , mglArg *a, int k[10], const char *) -{ - if(k[0]==3) mglprintf(out,1024,L"gr->SetBarWidth(%g);", a[0].v); + int res=0; + if(!strcmp(k,"n")) gr->SetBarWidth(a[0].v); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_legendmarks(mglGraph *gr, long , mglArg *a, int k[10], const char *) -{ - if(k[0]==3) gr->SetLegendMarks(iint(a[0].v)); - else return 1; - return 0; -} -void mglc_legendmarks(wchar_t out[1024], long , mglArg *a, int k[10], const char *) +int mgls_legendmarks(mglGraph *gr, long , mglArg *a, const char *k, const char *) { - if(k[0]==3) mglprintf(out,1024,L"gr->SetLegendMarks(%d);", iint(a[0].v)); + int res=0; + if(!strcmp(k,"n")) gr->SetLegendMarks(iint(a[0].v)); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_modify(mglGraph *, long , mglArg *a, int k[10], const char *) +int mgls_modify(mglGraph *, long , mglArg *a, const char *k, const char *) { - if(k[0]==1 && k[1]==2 && k[2]==1 && k[3]==1) - a[0].d->Modify(a[1].s.c_str(),*(a[2].d),*(a[3].d)); - else if(k[0]==1 && k[1]==2 && k[2]==1) - a[0].d->Modify(a[1].s.c_str(),*(a[2].d)); - else if(k[0]==1 && k[1]==2) - a[0].d->Modify(a[1].s.c_str(), k[2]==3 ? iint(a[2].v):0); - else return 1; - return 0; -} -void mglc_modify(wchar_t out[1024], long , mglArg *a, int k[10], const char *) -{ - if(k[0]==1 && k[1]==2 && k[2]==1 && k[3]==1) - mglprintf(out,1024,L"%s.Modify(\"%s\", %s, %s);", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), a[3].s.c_str()); - else if(k[0]==1 && k[1]==2 && k[2]==1) - mglprintf(out,1024,L"%s.Modify(\"%s\", %s);", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str()); - else if(k[0]==1 && k[1]==2) - mglprintf(out,1024,L"%s.Modify(\"%s\", %d);", a[0].s.c_str(), a[1].s.c_str(), k[2]==3 ? iint(a[2].v):0); + int res=0; + if(!strcmp(k,"ds")) a[0].d->Modify(a[1].s.c_str()); + else if(!strcmp(k,"dsn")) a[0].d->Modify(a[1].s.c_str(), iint(a[2].v)); + else if(!strcmp(k,"dsd")) a[0].d->Modify(a[1].s.c_str(),*(a[2].d)); + else if(!strcmp(k,"dsdd")) a[0].d->Modify(a[1].s.c_str(),*(a[2].d),*(a[3].d)); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_max(mglGraph *, long , mglArg *a, int k[10], const char *) -{ - if(k[0]==1 && k[1]==1 && k[2]==2) *(a[0].d) = a[1].d->Max(a[2].s.c_str()); - else return 1; - return 0; -} -void mglc_max(wchar_t out[1024], long , mglArg *a, int k[10], const char *) +int mgls_max(mglGraph *, long , mglArg *a, const char *k, const char *) { - if(k[0]==1 && k[1]==1 && k[2]==2) - mglprintf(out,1024,L"%s = %s.Max(\"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str()); + int res=0; + if(!strcmp(k,"dds")) *(a[0].d) = a[1].d->Max(a[2].s.c_str()); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_min(mglGraph *, long , mglArg *a, int k[10], const char *) -{ - if(k[0]==1 && k[1]==1 && k[2]==2) *(a[0].d) = a[1].d->Min(a[2].s.c_str()); - else return 1; - return 0; -} -void mglc_min(wchar_t out[1024], long , mglArg *a, int k[10], const char *) +int mgls_min(mglGraph *, long , mglArg *a, const char *k, const char *) { - if(k[0]==1 && k[1]==1 && k[2]==2) - mglprintf(out,1024,L"%s = %s.Min(\"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str()); + int res=0; + if(!strcmp(k,"dds")) *(a[0].d) = a[1].d->Min(a[2].s.c_str()); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_sum(mglGraph *, long , mglArg *a, int k[10], const char *) +int mgls_sum(mglGraph *, long , mglArg *a, const char *k, const char *) { - if(k[0]==1 && k[1]==1 && k[2]==2) *(a[0].d) = a[1].d->Sum(a[2].s.c_str()); - else return 1; - return 0; -} -void mglc_sum(wchar_t out[1024], long , mglArg *a, int k[10], const char *) -{ - if(k[0]==1 && k[1]==1 && k[2]==2) - mglprintf(out,1024,L"%s = %s.Sum(\"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str()); + int res=0; + if(!strcmp(k,"dds")) *(a[0].d) = a[1].d->Sum(a[2].s.c_str()); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_meshnum(mglGraph *gr, long , mglArg *a, int k[10], const char *) -{ - if(k[0]==3) gr->SetMeshNum(a[0].v); else return 1; - return 0; -} -void mglc_meshnum(wchar_t out[1024], long , mglArg *a, int k[10], const char *) +int mgls_meshnum(mglGraph *gr, long , mglArg *a, const char *k, const char *) { - if(k[0]==3) mglprintf(out,1024,L"gr->SetMeshNum(%d);", iint(a[0].v)); + int res=0; + if(!strcmp(k,"n")) gr->SetMeshNum(a[0].v); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_facenum(mglGraph *gr, long , mglArg *a, int k[10], const char *) +int mgls_facenum(mglGraph *gr, long , mglArg *a, const char *k, const char *) { - if(k[0]==3) gr->SetFaceNum(a[0].v); else return 1; - return 0; -} -void mglc_facenum(wchar_t out[1024], long , mglArg *a, int k[10], const char *) -{ - if(k[0]==3) mglprintf(out,1024,L"gr->SetFaceNum(%d);", iint(a[0].v)); + int res=0; + if(!strcmp(k,"n")) gr->SetFaceNum(a[0].v); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_quality(mglGraph *gr, long , mglArg *a, int k[10], const char *) -{ - gr->SetQuality(k[0]==3?iint(a[0].v):2); - return 0; -} -void mglc_quality(wchar_t out[1024], long , mglArg *a, int k[10], const char *) +int mgls_quality(mglGraph *gr, long , mglArg *a, const char *k, const char *) { - if(k[0]==3) mglprintf(out,1024,L"gr->SetQuality(%d);", k[0]==3?iint(a[0].v):2); + int res=0; + if(!strcmp(k,"")) gr->SetQuality(); + else if(!strcmp(k,"n")) gr->SetQuality(iint(a[0].v)); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_marksize(mglGraph *gr, long , mglArg *a, int k[10], const char *) +int mgls_marksize(mglGraph *gr, long , mglArg *a, const char *k, const char *) { - if(k[0]==3) gr->SetMarkSize(a[0].v); else return 1; - return 0; -} -void mglc_marksize(wchar_t out[1024], long , mglArg *a, int k[10], const char *) -{ - if(k[0]==3) mglprintf(out,1024,L"gr->SetMarkSize(%g);", a[0].v); + int res=0; + if(!strcmp(k,"n")) gr->SetMarkSize(a[0].v); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_mark(mglGraph *gr, long , mglArg *a, int k[10], const char *opt) -{ - if(k[0]!=1 || k[1]!=1) return 1; - else if(k[2]!=1) gr->Mark(*(a[0].d),*(a[1].d),k[2]==2?a[2].s.c_str():"",opt); - else if(k[3]!=1) gr->Mark(*(a[0].d),*(a[1].d),*(a[2].d),k[3]==2?a[3].s.c_str():"",opt); - else gr->Mark(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),k[4]==2?a[4].s.c_str():"",opt); - return 0; -} -void mglc_mark(wchar_t out[1024], long , mglArg *a, int k[10], const char *opt) +int mgls_mark(mglGraph *gr, long , mglArg *a, const char *k, const char *opt) { - if(k[0]!=1 || k[1]!=1) return; - else if(k[2]!=1) - mglprintf(out,1024,L"gr->Mark(%s, %s, \"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(), k[2]==2?a[2].s.c_str():"",opt); - else if(k[3]!=1) - mglprintf(out,1024,L"gr->Mark(%s, %s, %s, \"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), k[3]==2?a[3].s.c_str():"",opt); - else - mglprintf(out,1024,L"gr->Mark(%s, %s, %s, %s, \"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), a[3].s.c_str(), k[4]==2?a[4].s.c_str():"",opt); + int res=0; + if(!strcmp(k,"dd")) gr->Mark(*(a[0].d), *(a[1].d), "",opt); + else if(!strcmp(k,"dds")) gr->Mark(*(a[0].d), *(a[1].d), a[2].s.c_str(),opt); + else if(!strcmp(k,"ddd")) gr->Mark(*(a[0].d), *(a[1].d), *(a[2].d), "",opt); + else if(!strcmp(k,"ddds")) gr->Mark(*(a[0].d), *(a[1].d), *(a[2].d), a[3].s.c_str(),opt); + else if(!strcmp(k,"dddd")) gr->Mark(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d), "",opt); + else if(!strcmp(k,"dddds")) gr->Mark(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d), a[4].s.c_str(),opt); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_map(mglGraph *gr, long , mglArg *a, int k[10], const char *opt) +int mgls_map(mglGraph *gr, long , mglArg *a, const char *k, const char *opt) { - if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==1) - gr->Map(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),k[4]==2?a[4].s.c_str():"",opt); - else if(k[0]==1 && k[1]==1) - gr->Map(*(a[0].d),*(a[1].d),k[2]==2?a[2].s.c_str():"",opt); - else return 1; - return 0; -} -void mglc_map(wchar_t out[1024], long , mglArg *a, int k[10], const char *opt) -{ - if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==1) - mglprintf(out,1024,L"gr->Map(%s, %s, %s, %s, \"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), a[3].s.c_str(), k[4]==2?a[4].s.c_str():"",opt); - else if(k[0]==1 && k[1]==1) - mglprintf(out,1024,L"gr->Map(%s, %s, \"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(), k[2]==2?a[2].s.c_str():"",opt); + int res=0; + if(!strcmp(k,"dd")) gr->Map(*(a[0].d),*(a[1].d),"",opt); + else if(!strcmp(k,"dds")) gr->Map(*(a[0].d),*(a[1].d),a[2].s.c_str(),opt); + else if(!strcmp(k,"dddd")) gr->Map(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),"",opt); + else if(!strcmp(k,"dddds")) gr->Map(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),a[4].s.c_str(),opt); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_read(mglGraph *gr, long n, mglArg *a, int k[10], const char *) +int mgls_read(mglGraph *gr, long n, mglArg *a, const char *k, const char *) { + int res=0; bool rr=true; - if(k[0]!=1 || k[1]!=2) return 1; - else if(n==2) rr=a[0].d->Read(a[1].s.c_str()); - else rr=a[0].d->Read(a[1].s.c_str(), k[2]==3?iint(a[2].v):1, - k[3]==3?iint(a[3].v):1, k[4]==3?iint(a[4].v):1); + if(!strcmp(k,"ds")) rr=a[0].d->Read(a[1].s.c_str()); + else if(!strcmp(k,"dsn")) rr=a[0].d->Read(a[1].s.c_str(), iint(a[2].v)); + else if(!strcmp(k,"dsnn")) rr=a[0].d->Read(a[1].s.c_str(), iint(a[2].v),iint(a[3].v)); + else if(!strcmp(k,"dsnnn")) rr=a[0].d->Read(a[1].s.c_str(), iint(a[2].v),iint(a[3].v),iint(a[4].v)); if(!rr) gr->SetWarn(mglWarnFile,"Read"); - return 0; -} -void mglc_read(wchar_t out[1024], long n, mglArg *a, int k[10], const char *) -{ - if(k[0]!=1 || k[1]!=2) return; - else if(n==2) mglprintf(out,1024,L"%s.Read(\"%s\");", a[0].s.c_str(), a[1].s.c_str()); - else - mglprintf(out,1024,L"%s.Read(\"%s\", %d, %d, %d);", a[0].s.c_str(), a[1].s.c_str(), k[2]==3?iint(a[2].v):1, k[3]==3?iint(a[3].v):1, k[4]==3?iint(a[4].v):1); + return res; } //----------------------------------------------------------------------------- -int mgls_readmat(mglGraph *gr, long , mglArg *a, int k[10], const char *) +int mgls_readmat(mglGraph *gr, long , mglArg *a, const char *k, const char *) { + int res=0; bool rr=true; - if(k[0]!=1 || k[1]!=2) return 1; - else rr=a[0].d->ReadMat(a[1].s.c_str(), k[2]==3?iint(a[2].v):2); + if(!strcmp(k,"ds")) rr=a[0].d->ReadMat(a[1].s.c_str()); + else if(!strcmp(k,"dsn")) rr=a[0].d->ReadMat(a[1].s.c_str(), iint(a[2].v)); + else res = 1; if(!rr) gr->SetWarn(mglWarnFile,"ReadMat"); - return 0; -} -void mglc_readmat(wchar_t out[1024], long , mglArg *a, int k[10], const char *) -{ - if(k[0]==1 && k[1]==2) - mglprintf(out,1024,L"%s.ReadMat(\"%s\", %d);", a[0].s.c_str(), a[1].s.c_str(), k[2]==3?iint(a[2].v):2); + return res; } //----------------------------------------------------------------------------- -int mgls_readall(mglGraph *, long , mglArg *a, int k[10], const char *) +int mgls_readall(mglGraph *gr, long , mglArg *a, const char *k, const char *) { - if(k[0]!=1 || k[1]!=2) return 1; - else if(k[2]==3 && k[3]==3) - a[0].d->ReadRange(a[1].s.c_str(), a[2].v, a[3].v, k[4]==3?a[4].v:1.f, k[5]==3?(a[5].v!=0) : false); - else a[0].d->ReadAll(a[1].s.c_str(), k[2]==3?(a[2].v!=0) : false); - return 0; -} -void mglc_readall(wchar_t out[1024], long , mglArg *a, int k[10], const char *) -{ - if(k[0]!=1 || k[1]!=2) return; - else if(k[2]==3 && k[3]==3) - mglprintf(out,1024,L"%s.ReadRange(\"%s\", %g, %g, %g, %s);", a[0].s.c_str(), a[1].s.c_str(), a[2].v, a[3].v, k[4]==3?a[4].v:1.f, (k[5]==3&&a[5].v!=0)?"true":"false"); - else - mglprintf(out,1024,L"%s.ReadAll(\"%s\", %s);", a[0].s.c_str(), a[1].s.c_str(), (k[2]==3&&a[2].v!=0)?"true":"false"); + int res=0; + bool rr=true; + if(!strcmp(k,"ds")) rr=a[0].d->ReadAll(a[1].s.c_str()); + else if(!strcmp(k,"dsn")) rr=a[0].d->ReadAll(a[1].s.c_str(), a[2].v); + else if(!strcmp(k,"dsnn")) rr=a[0].d->ReadRange(a[1].s.c_str(), a[2].v, a[3].v); + else if(!strcmp(k,"dsnnn")) rr=a[0].d->ReadRange(a[1].s.c_str(), a[2].v, a[3].v, a[4].v); + else if(!strcmp(k,"dsnnnn"))rr=a[0].d->ReadRange(a[1].s.c_str(), a[2].v, a[3].v, a[4].v, a[5].v); + else res = 1; + if(!rr) gr->SetWarn(mglWarnFile,"ReadMat"); + return res; } //----------------------------------------------------------------------------- -int mgls_readhdf(mglGraph *, long , mglArg *a, int k[10], const char *) +int mgls_readhdf(mglGraph *, long , mglArg *a, const char *k, const char *) { - if(k[0]==1 && k[1]==2 && k[2]==2) a[0].d->ReadHDF(a[1].s.c_str(), a[2].s.c_str()); - else return 1; - return 0; -} -void mglc_readhdf(wchar_t out[1024], long , mglArg *a, int k[10], const char *) -{ - if(k[0]==1 && k[1]==2 && k[2]==2) mglprintf(out,1024,L"%s.ReadHDF(\"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str()); + int res=0; + if(!strcmp(k,"dss")) a[0].d->ReadHDF(a[1].s.c_str(), a[2].s.c_str()); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_savehdf(mglGraph *, long , mglArg *a, int k[10], const char *) -{ - if(k[0]==1 && k[1]==2 && k[2]==2) a[0].d->SaveHDF(a[1].s.c_str(), a[2].s.c_str()); - else return 1; - return 0; -} -void mglc_savehdf(wchar_t out[1024], long , mglArg *a, int k[10], const char *) +int mgls_savehdf(mglGraph *, long , mglArg *a, const char *k, const char *) { - if(k[0]==1 && k[1]==2 && k[2]==2) - mglprintf(out,1024,L"%s.SaveHDF(\"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str()); + int res=0; + if(!strcmp(k,"dss")) a[0].d->SaveHDF(a[1].s.c_str(), a[2].s.c_str()); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_rect(mglGraph *gr, long n, mglArg *a, int [10], const char *) -{ - long i; - if(n>5) - { - bool ok=true; - for(i=0;i<6;i++) if(a[i].type!=2) ok=false; - if(ok) - { - if(a[0].v==a[3].v) gr->Face(mglPoint(a[0].v,a[1].v,a[2].v), - mglPoint(a[0].v,a[4].v,a[2].v), - mglPoint(a[3].v,a[1].v,a[5].v), - mglPoint(a[3].v,a[4].v,a[5].v), - (n==7 && a[6].type==1) ? a[6].s.c_str() : 0); - else gr->Face(mglPoint(a[0].v,a[1].v,a[2].v), - mglPoint(a[0].v,a[4].v,a[5].v), - mglPoint(a[3].v,a[1].v,a[2].v), - mglPoint(a[3].v,a[4].v,a[5].v), - (n==7 && a[6].type==1) ? a[6].s.c_str() : 0); - } - else return 1; - } - else if(n>3) - { - bool ok=true; - for(i=0;i<4;i++) if(a[i].type!=2) ok=false; - if(ok) - gr->Face(mglPoint(a[0].v,a[1].v,NAN), mglPoint(a[0].v,a[3].v,NAN), - mglPoint(a[2].v,a[1].v,NAN), mglPoint(a[2].v,a[3].v,NAN), - (n==5 && a[4].type==1) ? a[4].s.c_str() : 0); - else return 1; - } - else return 1; - return 0; -} -void mglc_rect(wchar_t out[1024], long n, mglArg *a, int [10], const char *) +int mgls_rect(mglGraph *gr, long , mglArg *a, const char *k, const char *) { + int res=0; long i; - if(n>5) - { - bool ok=true; - for(i=0;i<6;i++) if(a[i].type!=2) ok=false; - if(ok) - { - if(a[0].v==a[3].v) - mglprintf(out,1024,L"gr->Face(mglPoint(%g, %g, %g), mglPoint(%g, %g, %g), mglPoint(%g, %g, %g), mglPoint(%g, %g, %g), \"%s\");", - a[0].v,a[1].v,a[2].v, a[0].v,a[4].v,a[2].v, a[3].v,a[1].v,a[5].v, a[3].v,a[4].v,a[5].v, (n==7 && a[6].type==1) ? a[6].s.c_str() : ""); - else - mglprintf(out,1024,L"gr->Face(mglPoint(%g, %g, %g), mglPoint(%g, %g, %g), mglPoint(%g, %g, %g), mglPoint(%g, %g, %g), \"%s\");", - a[0].v,a[1].v,a[2].v, a[0].v,a[4].v,a[5].v, a[3].v,a[1].v,a[2].v, a[3].v,a[4].v,a[5].v, (n==7 && a[6].type==1) ? a[6].s.c_str() : ""); - } - } - else if(n>3) + if(!strcmp(k,"nnnn")) + gr->Face(mglPoint(a[0].v,a[1].v,NAN), mglPoint(a[0].v,a[3].v,NAN), + mglPoint(a[2].v,a[1].v,NAN), mglPoint(a[2].v,a[3].v,NAN)); + else if(!strcmp(k,"nnnns")) + gr->Face(mglPoint(a[0].v,a[1].v,NAN), mglPoint(a[0].v,a[3].v,NAN), + mglPoint(a[2].v,a[1].v,NAN), mglPoint(a[2].v,a[3].v,NAN),a[4].s.c_str()); + else if(!strncmp(k,"nnnnnn",6)) { - bool ok=true; - for(i=0;i<4;i++) if(a[i].type!=2) ok=false; - if(ok) - mglprintf(out,1024,L"gr->Face(mglPoint(%g, %g, NAN), mglPoint(%g, %g, NAN), mglPoint(%g, %g, NAN), mglPoint(%g, %g, NAN), \"%s\", 2);", - a[0].v,a[1].v, a[0].v,a[3].v, a[2].v,a[1].v, a[2].v,a[3].v, (n==5 && a[4].type==1) ? a[4].s.c_str() : ""); + if(a[0].v==a[3].v) gr->Face(mglPoint(a[0].v,a[1].v,a[2].v), + mglPoint(a[0].v,a[4].v,a[2].v), + mglPoint(a[3].v,a[1].v,a[5].v), + mglPoint(a[3].v,a[4].v,a[5].v), + k[6]=='s' ? a[6].s.c_str() : 0); + else gr->Face(mglPoint(a[0].v,a[1].v,a[2].v), + mglPoint(a[0].v,a[4].v,a[5].v), + mglPoint(a[3].v,a[1].v,a[2].v), + mglPoint(a[3].v,a[4].v,a[5].v), + k[6]=='s' ? a[6].s.c_str() : 0); } + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_face(mglGraph *gr, long n, mglArg *a, int [10], const char *) +int mgls_face(mglGraph *gr, long , mglArg *a, const char *k, const char *) { - long i; - bool ok=true; - if(n>11) - { - for(i=0;i<12;i++) if(a[i].type!=2) ok=false; - if(ok) gr->Face(mglPoint(a[0].v,a[1].v,a[2].v), mglPoint(a[3].v,a[4].v,a[5].v), - mglPoint(a[6].v,a[7].v,a[8].v), mglPoint(a[9].v,a[10].v,a[11].v), - (n==13 && a[12].type==1) ? a[12].s.c_str() : 0); - } - else if(n>7) - { - for(i=0;i<8;i++) if(a[i].type!=2) ok=false; - if(ok) gr->Face(mglPoint(a[0].v,a[1].v,NAN), mglPoint(a[2].v,a[3].v,NAN), - mglPoint(a[4].v,a[5].v,NAN), mglPoint(a[6].v,a[7].v,NAN), - (n==9 && a[8].type==1) ? a[8].s.c_str() : 0); - } - else ok=false; - return ok?0:1; -} -void mglc_face(wchar_t out[1024], long n, mglArg *a, int [10], const char *) -{ - long i; - bool ok=true; - if(n>11) - { - for(i=0;i<12;i++) if(a[i].type!=2) ok=false; - if(ok) - mglprintf(out,1024,L"gr->Face(mglPoint(%g, %g, %g), mglPoint(%g, %g, %g), mglPoint(%g, %g, %g), mglPoint(%g, %g, %g), \"%s\");", - a[0].v,a[1].v,a[2].v, a[3].v,a[4].v,a[5].v, a[6].v,a[7].v,a[8].v, a[9].v,a[10].v,a[11].v, - (n==13 && a[12].type==1) ? a[12].s.c_str() : ""); - } - else if(n>7) - { - for(i=0;i<8;i++) if(a[i].type!=2) ok=false; - if(ok) - mglprintf(out,1024,L"gr->Face(mglPoint(%g, %g, NAN), mglPoint(%g, %g, NAN), mglPoint(%g, %g, NAN), mglPoint(%g, %g, NAN), \"%s\", 2);", - a[0].v,a[1].v, a[2].v,a[3].v, a[4].v,a[5].v, a[6].v,a[7].v, (n==9 && a[8].type==1) ? a[8].s.c_str() : ""); - } + int res=0; + if(!strcmp(k,"nnnnnnnn")) + gr->Face(mglPoint(a[0].v,a[1].v,NAN), mglPoint(a[2].v,a[3].v,NAN), + mglPoint(a[4].v,a[5].v,NAN), mglPoint(a[6].v,a[7].v,NAN)); + else if(!strcmp(k,"nnnnnnnns")) + gr->Face(mglPoint(a[0].v,a[1].v,NAN), mglPoint(a[2].v,a[3].v,NAN), + mglPoint(a[4].v,a[5].v,NAN), mglPoint(a[6].v,a[7].v,NAN), a[8].s.c_str()); + else if(!strcmp(k,"nnnnnnnnnnnn")) + gr->Face(mglPoint(a[0].v,a[1].v,a[2].v), mglPoint(a[3].v,a[4].v,a[5].v), + mglPoint(a[6].v,a[7].v,a[8].v), mglPoint(a[9].v,a[10].v,a[11].v)); + else if(!strcmp(k,"nnnnnnnnnnnns")) + gr->Face(mglPoint(a[0].v,a[1].v,a[2].v), mglPoint(a[3].v,a[4].v,a[5].v), + mglPoint(a[6].v,a[7].v,a[8].v), mglPoint(a[9].v,a[10].v,a[11].v), a[12].s.c_str()); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_resize(mglGraph *, long , mglArg *a, int k[10], const char *) -{ - if(k[0]==1 && k[1]==1) - *(a[0].d) = a[1].d->Resize(k[2]==3?iint(a[2].v):1, - k[3]==3?iint(a[3].v):1, k[4]==3?iint(a[4].v):1); - else return 1; - return 0; -} -void mglc_resize(wchar_t out[1024], long , mglArg *a, int k[10], const char *) +int mgls_resize(mglGraph *, long , mglArg *a, const char *k, const char *) { - if(k[0]==1 && k[1]==1) - mglprintf(out,1024,L"%s = %s.Resize(%d, %d, %d);", a[0].s.c_str(), a[1].s.c_str(), k[2]==3?iint(a[2].v):1, k[3]==3?iint(a[3].v):1, k[4]==3?iint(a[4].v):1); + int res=0; + if(!strcmp(k,"ddn")) *(a[0].d) = a[1].d->Resize(iint(a[2].v), 1, 1); + else if(!strcmp(k,"ddnn")) *(a[0].d) = a[1].d->Resize(iint(a[2].v), iint(a[3].v), 1); + else if(!strcmp(k,"ddnnn")) *(a[0].d) = a[1].d->Resize(iint(a[2].v), iint(a[3].v), iint(a[4].v)); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_rotate(mglGraph *gr, long , mglArg *a, int k[10], const char *) +int mgls_rotate(mglGraph *gr, long , mglArg *a, const char *k, const char *) { - if(k[0]==3 && k[1]==3 && k[2]==3 && k[3]==3) - gr->RotateN(a[0].v, a[1].v, a[2].v, a[3].v); - else if(k[0]==3 && k[1]==3) - gr->Rotate(a[0].v, a[1].v, k[2]==3?a[2].v:0); - else return 1; - return 0; -} -void mglc_rotate(wchar_t out[1024], long , mglArg *a, int k[10], const char *) -{ - if(k[0]==3 && k[1]==3 && k[2]==3 && k[3]==3) - mglprintf(out,1024,L"gr->RotateN(%g, %g, %g, %g);", a[0].v, a[1].v, a[2].v, a[3].v); - else if(k[0]==3 && k[1]==3) - mglprintf(out,1024,L"gr->Rotate(%g, %g, %g);", a[0].v, a[1].v, k[2]==3?a[2].v:0); + int res=0; + if(!strcmp(k,"nn")) gr->Rotate(a[0].v, a[1].v, 0); + else if(!strcmp(k,"nnn")) gr->Rotate(a[0].v, a[1].v, a[2].v); + else if(!strcmp(k,"nnnn")) gr->RotateN(a[0].v, a[1].v, a[2].v, a[3].v); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_rotatetext(mglGraph *gr, long , mglArg *a, int k[10], const char *) -{ - if(k[0]==3) gr->SetRotatedText(a[0].v!=0); - else return 1; - return 0; -} -void mglc_rotatetext(wchar_t out[1024], long , mglArg *a, int k[10], const char *) +int mgls_rotatetext(mglGraph *gr, long , mglArg *a, const char *k, const char *) { - if(k[0]==3) mglprintf(out,1024,L"gr->SetRotatedText(%s);", (a[0].v!=0)?"true":"false"); + int res=0; + if(!strcmp(k,"n")) gr->SetRotatedText(a[0].v!=0); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_tuneticks(mglGraph *gr, long , mglArg *a, int k[10], const char *) +int mgls_tuneticks(mglGraph *gr, long , mglArg *a, const char *k, const char *) { - if(k[0]==3) gr->SetTuneTicks(a[0].v!=0,k[1]==3?a[1].v:1.15); - else return 1; - return 0; -} -void mglc_tuneticks(wchar_t out[1024], long , mglArg *a, int k[10], const char *) -{ - if(k[0]==3) mglprintf(out,1024,L"gr->SetTuneTicks(%s, %g);", (a[0].v!=0)?"true":"false", k[1]==3?a[1].v:1.15); + int res=0; + if(!strcmp(k,"n")) gr->SetTuneTicks(a[0].v!=0); + else if(!strcmp(k,"nn")) gr->SetTuneTicks(a[0].v!=0,a[1].v); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_ticktime(mglGraph *gr, long , mglArg *a, int k[10], const char *) +int mgls_ticktime(mglGraph *gr, long , mglArg *a, const char *k, const char *) { - if(k[0]==2) gr->SetTicksTime(a[0].s[0],k[1]==3?a[1].v:0,k[2]==2?a[2].s.c_str():""); - else return 1; - return 0; -} -void mglc_ticktime(wchar_t out[1024], long , mglArg *a, int k[10], const char *) -{ - if(k[0]==3) mglprintf(out,1024,L"gr->SetTickTime('%c', %g, \"%s\");", a[0].s[0],k[1]==3?a[1].v:0,k[2]==2?a[2].s.c_str():""); + int res=0; + if(!strcmp(k,"s")) gr->SetTicksTime(a[0].s[0]); + else if(!strcmp(k,"sn")) gr->SetTicksTime(a[0].s[0],a[1].v); + else if(!strcmp(k,"sns")) gr->SetTicksTime(a[0].s[0],a[1].v,a[2].s.c_str()); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_save(mglGraph *, long , mglArg *a, int k[10], const char *) -{ - if(k[0]==1 && k[1]==2) a[0].d->Save(a[1].s.c_str()); - else return 1; - return 0; -} -void mglc_save(wchar_t out[1024], long , mglArg *a, int k[10], const char *) +int mgls_save(mglGraph *, long , mglArg *a, const char *k, const char *) { - if(k[0]==1 && k[1]==2) mglprintf(out,1024,L"%s.Save(\"%s\");", a[0].s.c_str(), a[1].s.c_str()); + int res=0; + if(!strcmp(k,"ds")) a[0].d->Save(a[1].s.c_str()); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_smooth(mglGraph *, long , mglArg *a, int k[10], const char *) -{ - if(k[0]==1) a[0].d->Smooth(k[1]==2?a[1].s.c_str():"xyz"); - else return 1; - return 0; -} -void mglc_smooth(wchar_t out[1024], long , mglArg *a, int k[10], const char *) +int mgls_smooth(mglGraph *, long , mglArg *a, const char *k, const char *) { - if(k[0]==1) - mglprintf(out,1024,L"%s.Smooth(\"%s\");", a[0].s.c_str(), k[1]==2?a[1].s.c_str():"xyz"); + int res=0; + if(!strcmp(k,"d")) a[0].d->Smooth(); + else if(!strcmp(k,"ds")) a[0].d->Smooth(a[1].s.c_str()); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_swap(mglGraph *, long , mglArg *a, int k[10], const char *) -{ - if(k[0]==1 && k[1]==2) a[0].d->Swap(a[1].s.c_str()); - else return 1; - return 0; -} -void mglc_swap(wchar_t out[1024], long , mglArg *a, int k[10], const char *) +int mgls_swap(mglGraph *, long , mglArg *a, const char *k, const char *) { - if(k[0]==1 && k[1]==2) mglprintf(out,1024,L"%s.Swap(\"%s\");", a[0].s.c_str(), a[1].s.c_str()); + int res=0; + if(!strcmp(k,"ds")) a[0].d->Swap(a[1].s.c_str()); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_idset(mglGraph *, long , mglArg *a, int k[10], const char *) +int mgls_idset(mglGraph *, long , mglArg *a, const char *k, const char *) { - if(k[0]==1 && k[1]==2) a[0].d->SetColumnId(a[1].s.c_str()); - else return 1; - return 0; -} -void mglc_idset(wchar_t out[1024], long , mglArg *a, int k[10], const char *) -{ - if(k[0]==1 && k[1]==2) mglprintf(out,1024,L"%s.SetColumnId(\"%s\");", a[0].s.c_str(), a[1].s.c_str()); + int res=0; + if(!strcmp(k,"ds")) a[0].d->SetColumnId(a[1].s.c_str()); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_stem(mglGraph *gr, long , mglArg *a, int k[10], const char *opt) -{ - if(k[0]!=1) return 1; - else if(k[1]!=1) gr->Stem(*(a[0].d),k[1]==2?a[1].s.c_str():"",opt); - else if(k[2]!=1) gr->Stem(*(a[0].d),*(a[1].d),k[2]==2?a[2].s.c_str():"",opt); - else gr->Stem(*(a[0].d),*(a[1].d),*(a[2].d),k[3]==2?a[3].s.c_str():"",opt); - return 0; -} -void mglc_stem(wchar_t out[1024], long , mglArg *a, int k[10], const char *opt) +int mgls_stem(mglGraph *gr, long , mglArg *a, const char *k, const char *opt) { - if(k[0]!=1) return; - else if(k[1]!=1) - mglprintf(out,1024,L"gr->Stem(%s, \"%s\", \"%s\");",a[0].s.c_str(), k[1]==2?a[1].s.c_str():"",opt); - else if(k[2]!=1) - mglprintf(out,1024,L"gr->Stem(%s, %s, \"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(), k[2]==2?a[2].s.c_str():"",opt); - else mglprintf(out,1024,L"gr->Stem(%s, %s, %s, \"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), k[3]==2?a[3].s.c_str():"",opt); + int res=0; + if(!strcmp(k,"d")) gr->Stem(*(a[0].d),"",opt); + else if(!strcmp(k,"ds")) gr->Stem(*(a[0].d),a[1].s.c_str(),opt); + else if(!strcmp(k,"dd")) gr->Stem(*(a[0].d),*(a[1].d),"",opt); + else if(!strcmp(k,"dds")) gr->Stem(*(a[0].d),*(a[1].d),a[2].s.c_str(),opt); + else if(!strcmp(k,"ddd")) gr->Stem(*(a[0].d),*(a[1].d),*(a[2].d),"",opt); + else if(!strcmp(k,"ddds")) gr->Stem(*(a[0].d),*(a[1].d),*(a[2].d),a[3].s.c_str(),opt); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_step(mglGraph *gr, long , mglArg *a, int k[10], const char *opt) +int mgls_step(mglGraph *gr, long , mglArg *a, const char *k, const char *opt) { - if(k[0]!=1) return 1; - else if(k[1]!=1) gr->Step(*(a[0].d),k[1]==2?a[1].s.c_str():"",opt); - else if(k[2]!=1) gr->Step(*(a[0].d),*(a[1].d),k[2]==2?a[2].s.c_str():"",opt); - else gr->Step(*(a[0].d),*(a[1].d),*(a[2].d),k[3]==2?a[3].s.c_str():"",opt); - return 0; -} -void mglc_step(wchar_t out[1024], long , mglArg *a, int k[10], const char *opt) -{ - if(k[0]!=1) return; - else if(k[1]!=1) - mglprintf(out,1024,L"gr->Step(%s, \"%s\", \"%s\");",a[0].s.c_str(), k[1]==2?a[1].s.c_str():"",opt); - else if(k[2]!=1) - mglprintf(out,1024,L"gr->Step(%s, %s, \"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(), k[2]==2?a[2].s.c_str():"",opt); - else mglprintf(out,1024,L"gr->Step(%s, %s, %s, \"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), k[3]==2?a[3].s.c_str():"",opt); + int res=0; + if(!strcmp(k,"d")) gr->Step(*(a[0].d),"",opt); + else if(!strcmp(k,"ds")) gr->Step(*(a[0].d),a[1].s.c_str(),opt); + else if(!strcmp(k,"dd")) gr->Step(*(a[0].d),*(a[1].d),"",opt); + else if(!strcmp(k,"dds")) gr->Step(*(a[0].d),*(a[1].d),a[2].s.c_str(),opt); + else if(!strcmp(k,"ddd")) gr->Step(*(a[0].d),*(a[1].d),*(a[2].d),"",opt); + else if(!strcmp(k,"ddds")) gr->Step(*(a[0].d),*(a[1].d),*(a[2].d),a[3].s.c_str(),opt); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_plot(mglGraph *gr, long , mglArg *a, int k[10], const char *opt) -{ - if(k[0]!=1) return 1; - else if(k[1]!=1) gr->Plot(*(a[0].d),k[1]==2?a[1].s.c_str():"",opt); - else if(k[2]!=1) gr->Plot(*(a[0].d),*(a[1].d),k[2]==2?a[2].s.c_str():"",opt); - else gr->Plot(*(a[0].d),*(a[1].d),*(a[2].d),k[3]==2?a[3].s.c_str():"",opt); - return 0; -} -void mglc_plot(wchar_t out[1024], long , mglArg *a, int k[10], const char *opt) +int mgls_plot(mglGraph *gr, long , mglArg *a, const char *k, const char *opt) { - if(k[0]!=1) return; - else if(k[1]!=1) - mglprintf(out,1024,L"gr->Plot(%s, \"%s\", \"%s\");",a[0].s.c_str(), k[1]==2?a[1].s.c_str():"",opt); - else if(k[2]!=1) - mglprintf(out,1024,L"gr->Plot(%s, %s, \"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(), k[2]==2?a[2].s.c_str():"",opt); - else mglprintf(out,1024,L"gr->Plot(%s, %s, %s, \"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), k[3]==2?a[3].s.c_str():"",opt); + int res=0; + if(!strcmp(k,"d")) gr->Plot(*(a[0].d),"",opt); + else if(!strcmp(k,"ds")) gr->Plot(*(a[0].d),a[1].s.c_str(),opt); + else if(!strcmp(k,"dd")) gr->Plot(*(a[0].d),*(a[1].d),"",opt); + else if(!strcmp(k,"dds")) gr->Plot(*(a[0].d),*(a[1].d),a[2].s.c_str(),opt); + else if(!strcmp(k,"ddd")) gr->Plot(*(a[0].d),*(a[1].d),*(a[2].d),"",opt); + else if(!strcmp(k,"ddds")) gr->Plot(*(a[0].d),*(a[1].d),*(a[2].d),a[3].s.c_str(),opt); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_tape(mglGraph *gr, long , mglArg *a, int k[10], const char *opt) +int mgls_tape(mglGraph *gr, long , mglArg *a, const char *k, const char *opt) { - if(k[0]!=1) return 1; - else if(k[1]!=1) gr->Tape(*(a[0].d),k[1]==2?a[1].s.c_str():"",opt); - else if(k[2]!=1) gr->Tape(*(a[0].d),*(a[1].d),k[2]==2?a[2].s.c_str():"",opt); - else gr->Tape(*(a[0].d),*(a[1].d),*(a[2].d),k[3]==2?a[3].s.c_str():"",opt); - return 0; -} -void mglc_tape(wchar_t out[1024], long , mglArg *a, int k[10], const char *opt) -{ - if(k[0]!=1) return; - else if(k[1]!=1) - mglprintf(out,1024,L"gr->Tape(%s, \"%s\", \"%s\");",a[0].s.c_str(), k[1]==2?a[1].s.c_str():"",opt); - else if(k[2]!=1) - mglprintf(out,1024,L"gr->Tape(%s, %s, \"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(), k[2]==2?a[2].s.c_str():"",opt); - else mglprintf(out,1024,L"gr->Tape(%s, %s, %s, \"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), k[3]==2?a[3].s.c_str():"",opt); + int res=0; + if(!strcmp(k,"d")) gr->Tape(*(a[0].d),"",opt); + else if(!strcmp(k,"ds")) gr->Tape(*(a[0].d),a[1].s.c_str(),opt); + else if(!strcmp(k,"dd")) gr->Tape(*(a[0].d),*(a[1].d),"",opt); + else if(!strcmp(k,"dds")) gr->Tape(*(a[0].d),*(a[1].d),a[2].s.c_str(),opt); + else if(!strcmp(k,"ddd")) gr->Tape(*(a[0].d),*(a[1].d),*(a[2].d),"",opt); + else if(!strcmp(k,"ddds")) gr->Tape(*(a[0].d),*(a[1].d),*(a[2].d),a[3].s.c_str(),opt); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_boxplot(mglGraph *gr, long , mglArg *a, int k[10], const char *opt) -{ - if(k[0]!=1) return 1; - else if(k[1]!=1) gr->BoxPlot(*(a[0].d),k[1]==2?a[1].s.c_str():"",opt); - else if(k[2]!=1) gr->BoxPlot(*(a[0].d),*(a[1].d),k[2]==2?a[2].s.c_str():"",opt); - return 0; -} -void mglc_boxplot(wchar_t out[1024], long , mglArg *a, int k[10], const char *opt) +int mgls_boxplot(mglGraph *gr, long , mglArg *a, const char *k, const char *opt) { - if(k[0]!=1) return; - else if(k[1]!=1) - mglprintf(out,1024,L"gr->BoxPlot(%s, \"%s\", \"%s\");",a[0].s.c_str(), k[1]==2?a[1].s.c_str():"",opt); - else if(k[2]!=1) - mglprintf(out,1024,L"gr->BoxPlot(%s, %s, \"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(), k[2]==2?a[2].s.c_str():"",opt); + int res=0; + if(!strcmp(k,"d")) gr->BoxPlot(*(a[0].d),"",opt); + else if(!strcmp(k,"ds")) gr->BoxPlot(*(a[0].d),a[1].s.c_str(),opt); + else if(!strcmp(k,"dd")) gr->BoxPlot(*(a[0].d),*(a[1].d),"",opt); + else if(!strcmp(k,"dds")) gr->BoxPlot(*(a[0].d),*(a[1].d),a[2].s.c_str(),opt); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_candle(mglGraph *gr, long , mglArg *a, int k[10], const char *opt) +int mgls_candle(mglGraph *gr, long , mglArg *a, const char *k, const char *opt) { - if(k[0]!=1) return 1; - else if(k[1]==1 && k[2]==1 && k[3]==1 && k[4]==1) - gr->Candle(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),k[5]==2?a[5].s.c_str():"",opt); - else if(k[1]==1 && k[2]==1 && k[3]==1) - gr->Candle(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),k[4]==2?a[4].s.c_str():"",opt); - else if(k[1]==1 && k[2]==1) - gr->Candle(*(a[0].d),*(a[1].d),*(a[2].d),k[3]==2?a[3].s.c_str():"",opt); - else if(k[1]==1) - gr->Candle(*(a[0].d),*(a[1].d),k[2]==2?a[2].s.c_str():"",opt); - else - gr->Candle(*(a[0].d),k[1]==2?a[1].s.c_str():"",opt); - return 0; -} -void mglc_candle(wchar_t out[1024], long , mglArg *a, int k[10], const char *opt) -{ - if(k[0]!=1) return; - else if(k[1]==1 && k[2]==1 && k[3]==1 && k[4]==1) - mglprintf(out,1024,L"gr->Candle(%s, %s, %s, %s, %s, \"%s\", \"%s\");",a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), a[3].s.c_str(), a[4].s.c_str(), k[5]==2?a[5].s.c_str():"",opt); - else if(k[1]==1 && k[2]==1 && k[3]==1) - mglprintf(out,1024,L"gr->Candle(%s, %s, %s, %s, \"%s\", \"%s\");",a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), a[3].s.c_str(),k[4]==2?a[4].s.c_str():"",opt); - else if(k[1]==1 && k[2]==1) - mglprintf(out,1024,L"gr->Candle(%s, %s, %s, \"%s\", \"%s\");",a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), k[3]==2?a[3].s.c_str():"",opt); - else if(k[1]==1) - mglprintf(out,1024,L"gr->Candle(%s, %s, \"%s\", \"%s\");",a[0].s.c_str(), a[1].s.c_str(), k[2]==2?a[2].s.c_str():"",opt); - else - mglprintf(out,1024,L"gr->Candle(%s, \"%s\", \"%s\");",a[0].s.c_str(), k[1]==2?a[1].s.c_str():"",opt); + int res=0; + if(!strcmp(k,"d")) gr->Candle(*(a[0].d),"",opt); + else if(!strcmp(k,"ds")) gr->Candle(*(a[0].d),a[1].s.c_str(),opt); + else if(!strcmp(k,"dd")) gr->Candle(*(a[0].d),*(a[1].d),"",opt); + else if(!strcmp(k,"dds")) gr->Candle(*(a[0].d),*(a[1].d),a[2].s.c_str(),opt); + else if(!strcmp(k,"ddd")) gr->Candle(*(a[0].d),*(a[1].d),*(a[2].d),"",opt); + else if(!strcmp(k,"ddds")) gr->Candle(*(a[0].d),*(a[1].d),*(a[2].d),a[3].s.c_str(),opt); + else if(!strcmp(k,"dddd")) gr->Candle(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),"",opt); + else if(!strcmp(k,"dddds")) gr->Candle(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),a[4].s.c_str(),opt); + else if(!strcmp(k,"ddddd")) gr->Candle(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),"",opt); + else if(!strcmp(k,"ddddds"))gr->Candle(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),a[5].s.c_str(),opt); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_radar(mglGraph *gr, long , mglArg *a, int k[10], const char *opt) -{ - if(k[0]==1) gr->Radar(*(a[0].d), k[1]==2?a[1].s.c_str():"",opt); - else return 1; - return 0; -} -void mglc_radar(wchar_t out[1024], long , mglArg *a, int k[10], const char *opt) +int mgls_radar(mglGraph *gr, long , mglArg *a, const char *k, const char *opt) { - if(k[0]==1) - mglprintf(out,1024,L"gr->Radar(%s, \"%s\", \"%s\");",a[0].s.c_str(), k[1]==2?a[1].s.c_str():"",opt); + int res=0; + if(!strcmp(k,"d")) gr->Radar(*(a[0].d),"",opt); + else if(!strcmp(k,"ds")) gr->Radar(*(a[0].d),a[1].s.c_str(),opt); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_squeeze(mglGraph *, long , mglArg *a, int k[10], const char *) +int mgls_squeeze(mglGraph *, long , mglArg *a, const char *k, const char *) { - if(k[0]==1 && k[1]==3) - a[0].d->Squeeze(iint(a[1].v), k[2]==3?iint(a[2].v):1, k[3]==3?iint(a[3].v):1, k[4]==3 && a[4].v>0); - else return 1; - return 0; -} -void mglc_squeeze(wchar_t out[1024], long , mglArg *a, int k[10], const char *) -{ - if(k[0]==1 && k[1]==3) - mglprintf(out,1024,L"%s.Squeeze(%d, %d, %d, %s);", a[0].s.c_str(), iint(a[1].v), - k[2]==3?iint(a[2].v):1, k[3]==3?iint(a[3].v):1, k[4]==3 && a[4].v>0 ? "true":"false"); + int res=0; + if(!strcmp(k,"dn")) a[0].d->Squeeze(iint(a[1].v)); + else if(!strcmp(k,"dnn")) a[0].d->Squeeze(iint(a[1].v), iint(a[2].v)); + else if(!strcmp(k,"dnnn")) a[0].d->Squeeze(iint(a[1].v), iint(a[2].v),iint(a[3].v)); + else if(!strcmp(k,"dnnnn")) a[0].d->Squeeze(iint(a[1].v), iint(a[2].v),iint(a[3].v), a[4].v); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_stfad(mglGraph *, long , mglArg *a, int k[10], const char *) -{ - if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==3) - *(a[0].d) = mglSTFA(*(a[1].d),*(a[2].d), iint(a[3].v), k[4]==2?a[4].s.c_str()[0]:'x'); - else return 1; - return 0; -} -void mglc_stfad(wchar_t out[1024], long , mglArg *a, int k[10], const char *) +int mgls_stfad(mglGraph *, long , mglArg *a, const char *k, const char *) { - if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==3) - mglprintf(out,1024,L"%s = mglSTFA(%s, %s, %d, '%c');", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), iint(a[3].v), k[4]==2?a[4].s.c_str()[0]:'x'); + int res=0; + if(!strcmp(k,"dddn")) + *(a[0].d) = mglSTFA(*(a[1].d),*(a[2].d), iint(a[3].v)); + else if(!strcmp(k,"dddns")) + *(a[0].d) = mglSTFA(*(a[1].d),*(a[2].d), iint(a[3].v), a[4].s.c_str()[0]); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_setsize(mglGraph *gr, long , mglArg *a, int k[10], const char *) +int mgls_setsize(mglGraph *gr, long , mglArg *a, const char *k, const char *) { - if(k[0]==3 && k[1]==3 && a[1].v>1 && a[0].v>1) + int res=0; + if(!strcmp(k,"nn") && a[1].v>1 && a[0].v>1) gr->SetSize(iint(a[0].v), iint(a[1].v)); - else return 1; - return 0; -} -void mglc_setsize(wchar_t out[1024], long , mglArg *a, int k[10], const char *) -{ - if(k[0]==3 && k[1]==3 && a[1].v>1 && a[0].v>1) - mglprintf(out,1024,L"gr->SetSize(%d, %d);", iint(a[0].v), iint(a[1].v)); -} -//----------------------------------------------------------------------------- -int mgls_sphere(mglGraph *gr, long , mglArg *a, int k[10], const char *) -{ - int i; - for(i=0;i<7;i++) if(k[i]!=3) break; - if(i==4) - gr->Sphere(mglPoint(a[0].v,a[1].v,a[2].v), a[3].v, k[4]==2 ? a[4].s.c_str():"r"); - else if(i==3) - gr->Sphere(mglPoint(a[0].v,a[1].v), a[2].v, k[3]==2 ? a[3].s.c_str():"r"); - else return 1; - return 0; -} -void mglc_sphere(wchar_t out[1024], long , mglArg *a, int k[10], const char *) -{ - int i; - for(i=0;i<7;i++) if(k[i]!=3) break; - if(i==4) - mglprintf(out,1024,L"gr->Sphere(mglPoint(%g, %g, %g), %g, \"%s\");", a[0].v,a[1].v,a[2].v, a[3].v, k[4]==2 ? a[4].s.c_str():"r"); - else if(i==3) - mglprintf(out,1024,L"gr->Sphere(mglPoint(%g, %g), %g, \"%s\");", a[0].v,a[1].v, a[2].v, k[3]==2 ? a[3].s.c_str():"r"); -} -//----------------------------------------------------------------------------- -int mgls_stfa(mglGraph *gr, long , mglArg *a, int k[10], const char *opt) -{ - if(k[0]==1 && k[1]==1 && k[2]==3) - gr->STFA(*(a[0].d),*(a[1].d), iint(a[2].v), k[3]==2?a[3].s.c_str():"",opt); - else if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==1 && k[4]==3) - gr->STFA(*(a[0].d),*(a[1].d), *(a[2].d),*(a[3].d), iint(a[4].v), k[5]==2?a[5].s.c_str():"",opt); - else return 1; - return 0; -} -void mglc_stfa(wchar_t out[1024], long , mglArg *a, int k[10], const char *opt) -{ - if(k[0]==1 && k[1]==1 && k[2]==3) - mglprintf(out,1024,L"gr->STFA(%s, %s, %d, \"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(), iint(a[2].v), k[3]==2?a[3].s.c_str():"",opt); - else if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==1 && k[4]==3) - mglprintf(out,1024,L"gr->STFA(%s, %s, %s, %s, %d, \"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), a[3].s.c_str(), iint(a[4].v), k[5]==2?a[5].s.c_str():"",opt); -} -//----------------------------------------------------------------------------- -int mgls_surf3(mglGraph *gr, long , mglArg *a, int k[10], const char *opt) -{ - if(k[0]!=1) return 1; - else if(k[1]==0) gr->Surf3(*(a[0].d),"",opt); - else if(k[1]==1 && k[2]==1 && k[3]==1 && k[4]==3) - gr->Surf3(a[4].v,*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d), - k[5]==2? a[5].s.c_str():"",opt); - else if(k[1]==3) gr->Surf3(a[1].v,*(a[0].d),k[2]==2? a[2].s.c_str():"",opt); - else if(k[1]==2) gr->Surf3(*(a[0].d),a[1].s.c_str(),opt); - else if(k[1]==1 && k[2]==1 && k[3]==1) - gr->Surf3(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d), k[4]==2? a[4].s.c_str():"",opt); - else return 1; - return 0; -} -void mglc_surf3(wchar_t out[1024], long , mglArg *a, int k[10], const char *opt) + else res = 1; return res; +} +//----------------------------------------------------------------------------- +int mgls_sphere(mglGraph *gr, long , mglArg *a, const char *k, const char *) { - if(k[0]!=1) return; - else if(k[1]==0) mglprintf(out,1024,L"gr->Surf3(%s,\"\",\"%s\");", a[0].s.c_str(),opt); - else if(k[1]==1 && k[2]==1 && k[3]==1 && k[4]==3) - mglprintf(out,1024,L"gr->Surf3(%g, %s, %s, %s, %s, \"%s\", \"%s\");", a[4].v, a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), a[3].s.c_str(), k[5]==2?a[5].s.c_str():"",opt); - else if(k[1]==3) - mglprintf(out,1024,L"gr->Surf3(%g, %s, \"%s\", \"%s\");", a[1].v, a[0].s.c_str(), k[2]==2? a[2].s.c_str():"",opt); - else if(k[1]==2) - mglprintf(out,1024,L"gr->Surf3(%s, \"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(),opt); - else if(k[1]==1 && k[2]==1 && k[3]==1) - mglprintf(out,1024,L"gr->Surf3(%s, %s, %s, %s, \"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), a[3].s.c_str(), k[4]==2?a[4].s.c_str():"",opt); + int res=0; + if(!strcmp(k,"nnn")) gr->Sphere(mglPoint(a[0].v,a[1].v), a[2].v); + else if(!strcmp(k,"nnns")) gr->Sphere(mglPoint(a[0].v,a[1].v), a[2].v, a[3].s.c_str()); + else if(!strcmp(k,"nnnn")) gr->Sphere(mglPoint(a[0].v,a[1].v,a[2].v), a[3].v); + else if(!strcmp(k,"nnnns")) gr->Sphere(mglPoint(a[0].v,a[1].v,a[2].v), a[3].v, a[4].s.c_str()); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_surf3c(mglGraph *gr, long , mglArg *a, int k[10], const char *opt) -{ - if(k[0]!=1 || k[1]!=1) return 1; - else if(k[2]==0) gr->Surf3C(*(a[0].d),*(a[1].d),"",opt); - else if(k[2]==1 && k[3]==1 && k[4]==1 && k[5]==3) - gr->Surf3C(a[5].v,*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d), - k[6]==2? a[6].s.c_str():"",opt); - else if(k[2]==3) gr->Surf3C(a[2].v,*(a[0].d),*(a[1].d),k[3]==2? a[3].s.c_str():"",opt); - else if(k[2]==2) gr->Surf3C(*(a[0].d),*(a[1].d),a[2].s.c_str(),opt); - else if(k[2]==1 && k[3]==1 && k[4]==1) - gr->Surf3C(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d), k[5]==2? a[5].s.c_str():"",opt); - else return 1; - return 0; -} -void mglc_surf3c(wchar_t out[1024], long , mglArg *a, int k[10], const char *opt) +int mgls_stfa(mglGraph *gr, long , mglArg *a, const char *k, const char *opt) { - if(k[0]!=1 || k[1]!=1) return; - else if(k[2]==0) mglprintf(out,1024,L"gr->Surf3C(%s, %s, \"\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(),opt); - else if(k[2]==1 && k[3]==1 && k[4]==1 && k[5]==3) - mglprintf(out,1024,L"gr->Surf3C(%g, %s, %s, %s, %s, %s, \"%s\", \"%s\");", a[5].v, a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), a[3].s.c_str(), a[4].s.c_str(), k[6]==2? a[6].s.c_str():"",opt); - else if(k[2]==3) - mglprintf(out,1024,L"gr->Surf3C(%g, %s, %s, \"%s\", \"%s\");", a[2].v, a[0].s.c_str(), a[1].s.c_str(), k[3]==2?a[3].s.c_str():"",opt); - else if(k[2]==2) - mglprintf(out,1024,L"gr->Surf3C(%s, %s, \"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(),opt); - else if(k[2]==1 && k[3]==1 && k[4]==1) - mglprintf(out,1024,L"gr->Surf3C(%s, %s, %s, %s, %s, \"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), a[3].s.c_str(), a[4].s.c_str(), k[5]==2?a[5].s.c_str():"",opt); + int res=0; + if(!strcmp(k,"ddn")) + gr->STFA(*(a[0].d),*(a[1].d), iint(a[2].v), "",opt); + else if(!strcmp(k,"ddns")) + gr->STFA(*(a[0].d),*(a[1].d), iint(a[2].v), a[3].s.c_str(),opt); + else if(!strcmp(k,"ddddn")) + gr->STFA(*(a[0].d),*(a[1].d), *(a[2].d),*(a[3].d), iint(a[4].v), "",opt); + else if(!strcmp(k,"ddddns")) + gr->STFA(*(a[0].d),*(a[1].d), *(a[2].d),*(a[3].d), iint(a[4].v), a[5].s.c_str(),opt); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_surf3a(mglGraph *gr, long , mglArg *a, int k[10], const char *opt) +int mgls_surf3(mglGraph *gr, long , mglArg *a, const char *k, const char *opt) { - if(k[0]!=1 || k[1]!=1) return 1; - else if(k[2]==0) gr->Surf3A(*(a[0].d),*(a[1].d),"",opt); - else if(k[2]==1 && k[3]==1 && k[4]==1 && k[5]==3) - gr->Surf3A(a[5].v,*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d), - k[6]==2? a[6].s.c_str():"",opt); - else if(k[2]==3) gr->Surf3A(a[2].v,*(a[0].d),*(a[1].d),k[3]==2? a[3].s.c_str():"",opt); - else if(k[2]==2) gr->Surf3A(*(a[0].d),*(a[1].d),a[2].s.c_str(),opt); - else if(k[2]==1 && k[3]==1 && k[4]==1) - gr->Surf3A(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d), - k[5]==2? a[5].s.c_str():"",opt); - else return 1; - return 0; -} -void mglc_surf3a(wchar_t out[1024], long , mglArg *a, int k[10], const char *opt) -{ - if(k[0]!=1 || k[1]!=1) return; - else if(k[2]==0) mglprintf(out,1024,L"gr->Surf3A(%s, %s, \"\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(),opt); - else if(k[2]==1 && k[3]==1 && k[4]==1 && k[5]==3) - mglprintf(out,1024,L"gr->Surf3A(%g, %s, %s, %s, %s, %s, \"%s\", \"%s\");", a[5].v, a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), a[3].s.c_str(), a[4].s.c_str(), k[6]==2? a[6].s.c_str():"",opt); - else if(k[2]==3) - mglprintf(out,1024,L"gr->Surf3A(%g, %s, %s, \"%s\", \"%s\");", a[2].v, a[0].s.c_str(), a[1].s.c_str(), k[3]==2?a[3].s.c_str():"",opt); - else if(k[2]==2) - mglprintf(out,1024,L"gr->Surf3A(%s, %s, \"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(),opt); - else if(k[2]==1 && k[3]==1 && k[4]==1) - mglprintf(out,1024,L"gr->Surf3A(%s, %s, %s, %s, %s, \"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), a[3].s.c_str(), a[4].s.c_str(), k[5]==2?a[5].s.c_str():"",opt); + int res=0; + if(!strcmp(k,"d")) gr->Surf3(*(a[0].d),"",opt); + else if(!strcmp(k,"ds")) gr->Surf3(*(a[0].d),a[1].s.c_str(),opt); + else if(!strcmp(k,"dn")) gr->Surf3(a[1].v,*(a[0].d),"",opt); + else if(!strcmp(k,"dns")) gr->Surf3(a[1].v,*(a[0].d),a[2].s.c_str(),opt); + else if(!strcmp(k,"dddd")) gr->Surf3(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d), "",opt); + else if(!strcmp(k,"dddds")) gr->Surf3(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d), a[4].s.c_str(),opt); + else if(!strcmp(k,"ddddn")) gr->Surf3(a[4].v,*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),"",opt); + else if(!strcmp(k,"ddddns"))gr->Surf3(a[4].v,*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),a[5].s.c_str(),opt); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_subplot(mglGraph *gr, long , mglArg *a, int k[10], const char *) -{ - if(k[0]==3 && k[1]==3 && k[2]==3) - gr->SubPlot(iint(a[0].v), iint(a[1].v), iint(a[2].v), k[3]==2?a[3].s.c_str():"<>_^", k[4]==3?a[4].v:0, k[5]==3?a[5].v:0); - else return 1; - return 0; -} -void mglc_subplot(wchar_t out[1024], long , mglArg *a, int k[10], const char *) +int mgls_surf3c(mglGraph *gr, long , mglArg *a, const char *k, const char *opt) { - if(k[0]==3 && k[1]==3 && k[2]==3) - mglprintf(out,1024,L"gr->SubPlot(%d, %d, %d, \"%s\", %g, %g);", iint(a[0].v), iint(a[1].v), iint(a[2].v), k[3]==2?a[3].s.c_str():"<>_^", k[4]==3?a[3].v:0, k[5]==3?a[4].v:0); + int res=0; + if(!strcmp(k,"dd")) gr->Surf3C(*(a[0].d),*(a[1].d),"",opt); + else if(!strcmp(k,"dds")) gr->Surf3C(*(a[0].d),*(a[1].d),a[2].s.c_str(),opt); + else if(!strcmp(k,"ddn")) gr->Surf3C(a[2].v,*(a[0].d),*(a[1].d),"",opt); + else if(!strcmp(k,"ddns")) gr->Surf3C(a[2].v,*(a[0].d),*(a[1].d),a[3].s.c_str(),opt); + else if(!strcmp(k,"ddddd")) + gr->Surf3C(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d), "",opt); + else if(!strcmp(k,"ddddds")) + gr->Surf3C(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d), a[5].s.c_str(),opt); + else if(!strcmp(k,"dddddn")) + gr->Surf3C(a[5].v,*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),"",opt); + else if(!strcmp(k,"dddddns")) + gr->Surf3C(a[5].v,*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),a[6].s.c_str(),opt); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_multiplot(mglGraph *gr, long , mglArg *a, int k[10], const char *) +int mgls_surf3a(mglGraph *gr, long , mglArg *a, const char *k, const char *opt) { - if(k[0]==3 && k[1]==3 && k[2]==3 && k[3]==3 && k[4]==3) - gr->MultiPlot(iint(a[0].v), iint(a[1].v), iint(a[2].v), iint(a[3].v), iint(a[4].v), k[5]==2?a[3].s.c_str():"<>_^"); - else return 1; - return 0; -} -void mglc_multiplot(wchar_t out[1024], long , mglArg *a, int k[10], const char *) -{ - if(k[0]==3 && k[1]==3 && k[2]==3 && k[3]==3 && k[4]==3) - mglprintf(out,1024,L"gr->MultiPlot(%d, %d, %d, %d, %d, \"%s\");", iint(a[0].v), iint(a[1].v), iint(a[2].v), iint(a[3].v), iint(a[4].v), k[5]==2?a[3].s.c_str():"<>_^"); + int res=0; + if(!strcmp(k,"dd")) gr->Surf3A(*(a[0].d),*(a[1].d),"",opt); + else if(!strcmp(k,"dds")) gr->Surf3A(*(a[0].d),*(a[1].d),a[2].s.c_str(),opt); + else if(!strcmp(k,"ddn")) gr->Surf3A(a[2].v,*(a[0].d),*(a[1].d),"",opt); + else if(!strcmp(k,"ddns")) gr->Surf3A(a[2].v,*(a[0].d),*(a[1].d),a[3].s.c_str(),opt); + else if(!strcmp(k,"ddddd")) + gr->Surf3A(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d), "",opt); + else if(!strcmp(k,"ddddds")) + gr->Surf3A(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d), a[5].s.c_str(),opt); + else if(!strcmp(k,"dddddn")) + gr->Surf3A(a[5].v,*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),"",opt); + else if(!strcmp(k,"dddddns")) + gr->Surf3A(a[5].v,*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),a[6].s.c_str(),opt); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_title(mglGraph *gr, long , mglArg *a, int k[10], const char *) -{ - if(k[0]==2) gr->Title(a[0].w.c_str(), k[1]==2?a[1].s.c_str():"", k[2]==3?a[2].v:-2); - else return 1; - return 0; -} -void mglc_title(wchar_t out[1024], long , mglArg *a, int k[10], const char *) +int mgls_subplot(mglGraph *gr, long , mglArg *a, const char *k, const char *) { - if(k[0]==2) - mglprintf(out,1024,L"gr->Title(L\"%ls\", \"%s\", %g);", a[0].w.c_str(), k[1]==2?a[1].s.c_str():"#", k[2]==3?a[2].v:-2); + int res=0; + if(!strcmp(k,"nnn")) gr->SubPlot(iint(a[0].v), iint(a[1].v), iint(a[2].v)); + else if(!strcmp(k,"nnns")) gr->SubPlot(iint(a[0].v), iint(a[1].v), iint(a[2].v), a[3].s.c_str()); + else if(!strcmp(k,"nnnsnn")) gr->SubPlot(iint(a[0].v), iint(a[1].v), iint(a[2].v), a[3].s.c_str(), a[4].v,a[5].v); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_column(mglGraph *, long , mglArg *a, int k[10], const char *) +int mgls_multiplot(mglGraph *gr, long , mglArg *a, const char *k, const char *) { - if(k[0]==1 && k[1]==1 && k[2]==2) *(a[0].d) = a[1].d->Column(a[2].s.c_str()); - else return 1; - return 0; -} -void mglc_column(wchar_t out[1024], long , mglArg *a, int k[10], const char *) -{ - if(k[0]==1 && k[1]==1 && k[2]==2) - mglprintf(out,1024,L"%s = %s.Column(\"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str()); + int res=0; + if(!strcmp(k,"nnnnn")) + gr->MultiPlot(iint(a[0].v), iint(a[1].v), iint(a[2].v), iint(a[3].v), iint(a[4].v)); + else if(!strcmp(k,"nnnnns")) + gr->MultiPlot(iint(a[0].v), iint(a[1].v), iint(a[2].v), iint(a[3].v), iint(a[4].v), a[3].s.c_str()); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_subdata(mglGraph *, long , mglArg *a, int k[10], const char *) -{ - if(k[0]==1 && k[1]==1 && k[2]==3) - *(a[0].d) = a[1].d->SubData(iint(a[2].v), k[3]==3?iint(a[3].v):-1, k[4]==3?iint(a[4].v):-1); - else return 1; - return 0; -} -void mglc_subdata(wchar_t out[1024], long , mglArg *a, int k[10], const char *) +int mgls_title(mglGraph *gr, long , mglArg *a, const char *k, const char *) { - if(k[0]==1 && k[1]==1 && k[2]==3) - mglprintf(out,1024,L"%s = %s.SubData(%d, %d, %d);", a[0].s.c_str(), a[1].s.c_str(), iint(a[2].v), k[3]==3?iint(a[3].v):-1, k[4]==3?iint(a[4].v):-1); + int res=0; + if(!strcmp(k,"s")) gr->Title(a[0].w.c_str()); + else if(!strcmp(k,"ss")) gr->Title(a[0].w.c_str(), a[1].s.c_str()); + else if(!strcmp(k,"ssn")) gr->Title(a[0].w.c_str(), a[1].s.c_str(),a[2].v); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_trace(mglGraph *, long , mglArg *a, int k[10], const char *) +int mgls_column(mglGraph *, long , mglArg *a, const char *k, const char *) { - if(k[0]==1 && k[1]==1) *(a[0].d) = a[1].d->Trace(); - else return 1; - return 0; -} -void mglc_trace(wchar_t out[1024], long , mglArg *a, int k[10], const char *) -{ - if(k[0]==1 && k[1]==1) mglprintf(out,1024,L"%s = %s.Trace();", a[0].s.c_str(), a[1].s.c_str()); + int res=0; + if(!strcmp(k,"dds")) *(a[0].d) = a[1].d->Column(a[2].s.c_str()); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_tile(mglGraph *gr, long , mglArg *a, int k[10], const char *opt) +int mgls_subdata(mglGraph *, long , mglArg *a, const char *k, const char *) { - if(k[0]!=1) return 1; - else if(k[1]!=1) gr->Tile(*(a[0].d), k[1]==2? a[1].s.c_str():"",opt); - else if(k[1]==1 && k[2]==1) - gr->Tile(*(a[0].d),*(a[1].d),*(a[2].d),k[3]==2? a[3].s.c_str():"",opt); - else return 1; - return 0; -} -void mglc_tile(wchar_t out[1024], long , mglArg *a, int k[10], const char *opt) -{ - if(k[0]!=1) return; - else if(k[1]!=1) - mglprintf(out,1024,L"gr->Tile(%s, \"%s\", \"%s\");", a[0].s.c_str(), k[1]==2?a[1].s.c_str():"",opt); - else if(k[1]==1 && k[2]==1) - mglprintf(out,1024,L"gr->Tile(%s, %s, %s, \"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), k[3]==2?a[3].s.c_str():"",opt); + int res=0; + if(!strcmp(k,"ddn")) *(a[0].d) = a[1].d->SubData(iint(a[2].v)); + else if(!strcmp(k,"ddnn")) *(a[0].d) = a[1].d->SubData(iint(a[2].v), iint(a[3].v)); + else if(!strcmp(k,"ddnnn")) *(a[0].d) = a[1].d->SubData(iint(a[2].v), iint(a[3].v), iint(a[4].v)); + else res = 1; + return res; } //----------------------------------------------------------------------------- -int mgls_tiles(mglGraph *gr, long , mglArg *a, int k[10], const char *opt) -{ - if(k[0]!=1) return 1; - else if(k[1]==1 && k[2]!=1) - gr->TileS(*(a[0].d),*(a[1].d),k[2]==2?a[2].s.c_str():"",opt); - else if(k[1]==1 && k[2]==1 && k[3]==1) - gr->TileS(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),k[4]==2? a[4].s.c_str():"",opt); - else return 1; - return 0; -} -void mglc_tiles(wchar_t out[1024], long , mglArg *a, int k[10], const char *opt) +int mgls_trace(mglGraph *, long , mglArg *a, const char *k, const char *) { - if(k[0]!=1) return; - else if(k[1]==1 && k[2]!=1) - mglprintf(out,1024,L"gr->TileS(%s, %s, \"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(), k[2]==2?a[2].s.c_str():"",opt); - else if(k[1]==1 && k[2]==1 && k[3]==1) - mglprintf(out,1024,L"gr->TileS(%s, %s, %s, %s, \"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), a[3].s.c_str(), k[4]==2?a[4].s.c_str():"",opt); + int res=0; + if(!strcmp(k,"dd")) *(a[0].d) = a[1].d->Trace(); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_text(mglGraph *gr, long , mglArg *a, int k[10], const char *opt) // NOTE don't use options -- Puts can be part of group +int mgls_tile(mglGraph *gr, long , mglArg *a, const char *k, const char *opt) { - if(k[0]==3 && k[1]==3 && k[2]==3 && k[3]==2) - gr->Putsw(mglPoint(a[0].v,a[1].v,a[2].v),a[3].w.c_str(), - (k[4]==2 && a[4].s.c_str()[0]!=0)?a[4].s.c_str():"",k[5]==3?a[5].v:-1); - else if(k[0]==3 && k[1]==3 && k[2]==2) - gr->Putsw(mglPoint(a[0].v,a[1].v,NAN),a[2].w.c_str(), - (k[3]==2 && a[3].s.c_str()[0]!=0)?a[3].s.c_str():"",k[4]==3?a[4].v:-1); - else if(k[0]==3 && k[1]==3 && k[2]==3 && k[3]==3 && k[4]==3 && k[5]==3 && k[6]==2) - gr->Putsw(mglPoint(a[0].v,a[1].v,a[2].v), mglPoint(a[3].v,a[4].v,a[5].v), a[6].w.c_str(), k[7]==2?a[7].s.c_str():":L", k[8]==3?a[8].v:-1); - else if(k[0]==3 && k[1]==3 && k[2]==3 && k[3]==3 && k[4]==2) - gr->Putsw(mglPoint(a[0].v,a[1].v), mglPoint(a[2].v,a[3].v), a[4].w.c_str(), k[5]==2?a[5].s.c_str():":L", k[6]==3?a[6].v:-1); - else if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==2) - gr->Text(*(a[0].d),*(a[1].d),*(a[2].d),a[3].w.c_str(),k[4]==2?a[4].s.c_str():"",opt); - else if(k[0]==1 && k[1]==1 && k[2]==2) - gr->Text(*(a[0].d),*(a[1].d),a[2].w.c_str(),k[3]==2?a[3].s.c_str():"",opt); - else if(k[0]==1 && k[1]==2) - gr->Text(*(a[0].d),a[1].w.c_str(),k[2]==2?a[2].s.c_str():"",opt); - else return 1; - return 0; -} -void mglc_text(wchar_t out[1024], long , mglArg *a, int k[10], const char *opt) -{ - if(k[0]==3 && k[1]==3 && k[2]==3 && k[3]==2) - mglprintf(out,1024,L"gr->Puts(mglPoint(%g, %g, %g), L\"%ls\", \"%s\", %g);", a[0].v, a[1].v, a[2].v, a[3].w.c_str(), (k[4]==2 && a[4].s.c_str()[0]!=0)?a[4].s.c_str():"", k[5]==3?a[5].v:-1); - else if(k[0]==3 && k[1]==3 && k[2]==2) - mglprintf(out,1024,L"gr->Puts(mglPoint(%g, %g, NAN), L\"%ls\", \"%s\", %g);", a[0].v, a[1].v, a[2].w.c_str(), (k[3]==2 && a[3].s.c_str()[0]!=0)?a[3].s.c_str():"", k[4]==3?a[4].v:-1); - else if(k[0]==3 && k[1]==3 && k[2]==3 && k[3]==3 && k[4]==3 && k[5]==3 && k[6]==2) - mglprintf(out,1024,L"gr->Puts(mglPoint(%g, %g, %g), mglPoint(%g, %g, %g), L\"%ls\", \"%s\", %g);", a[0].v, a[1].v, a[2].v, a[3].v, a[4].v, a[5].v, a[6].w.c_str(), k[7]==2?a[7].s.c_str():":L", k[8]==3?a[8].v:-1); - else if(k[0]==3 && k[1]==3 && k[2]==3 && k[3]==3 && k[4]==2) - mglprintf(out,1024,L"gr->Puts(mglPoint(%g, %g), mglPoint(%g, %g), L\"%ls\", \"%s\", %g);", a[0].v, a[1].v, a[2].v, a[3].v, a[4].w.c_str(), k[5]==2?a[5].s.c_str():":L", k[6]==3?a[6].v:-1); - else if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==2) - mglprintf(out,1024,L"gr->Text(%s, %s, %s, L\"%ls\", \"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), a[3].w.c_str(), k[4]==2?a[4].s.c_str():"",opt); - else if(k[0]==1 && k[1]==1 && k[2]==2) - mglprintf(out,1024,L"gr->Text(%s, %s, L\"%ls\", \"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].w.c_str(), k[3]==2?a[3].s.c_str():"",opt); - else if(k[0]==1 && k[1]==2) - mglprintf(out,1024,L"gr->Text(%s, L\"%ls\", \"%s\", \"%s\");", a[0].s.c_str(), a[1].w.c_str(), k[2]==2?a[2].s.c_str():"",opt); + int res=0; + if(!strcmp(k,"d")) gr->Tile(*(a[0].d),"",opt); + else if(!strcmp(k,"ds")) gr->Tile(*(a[0].d),a[1].s.c_str(),opt); + else if(!strcmp(k,"ddd")) gr->Tile(*(a[0].d), *(a[1].d), *(a[2].d), "",opt); + else if(!strcmp(k,"ddds")) gr->Tile(*(a[0].d), *(a[1].d), *(a[2].d), a[3].s.c_str(),opt); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_torus(mglGraph *gr, long , mglArg *a, int k[10], const char *opt) -{ - if(k[0]==1 && k[1]==1) gr->Torus(*(a[0].d),*(a[1].d),k[2]==2?a[2].s.c_str():"",opt); - else return 1; - return 0; -} -void mglc_torus(wchar_t out[1024], long , mglArg *a, int k[10], const char *opt) +int mgls_tiles(mglGraph *gr, long , mglArg *a, const char *k, const char *opt) { - if(k[0]==1 && k[1]==1) mglprintf(out,1024,L"gr->Torus(%s, %s, \"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(), k[2]==2?a[2].s.c_str():"",opt); + int res=0; + if(!strcmp(k,"dd")) gr->TileS(*(a[0].d),*(a[1].d),"",opt); + else if(!strcmp(k,"dds")) gr->TileS(*(a[0].d),*(a[1].d),a[2].s.c_str(),opt); + else if(!strcmp(k,"dddd")) gr->TileS(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),"",opt); + else if(!strcmp(k,"dddds")) gr->TileS(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),a[4].s.c_str(),opt); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_transptype(mglGraph *gr, long , mglArg *a, int k[10], const char *) +int mgls_text(mglGraph *gr, long , mglArg *a, const char *k, const char *opt) // NOTE don't use options -- Puts can be part of group { - if(k[0]==3) gr->SetTranspType(a[0].v); - else return 1; - return 0; -} -void mglc_transptype(wchar_t out[1024], long , mglArg *a, int k[10], const char *) -{ - if(k[0]==3) mglprintf(out,1024,L"gr->SetTranspType(%d);", iint(a[0].v)); + int res=0; + if(!strcmp(k,"nns")) gr->Putsw(mglPoint(a[0].v,a[1].v,NAN),a[2].w.c_str()); + else if(!strcmp(k,"nnss")) gr->Putsw(mglPoint(a[0].v,a[1].v,NAN),a[2].w.c_str(), a[3].s.c_str()); + else if(!strcmp(k,"nnssn")) gr->Putsw(mglPoint(a[0].v,a[1].v,NAN),a[2].w.c_str(), a[3].s.c_str(),a[4].v); + else if(!strcmp(k,"nnns")) gr->Putsw(mglPoint(a[0].v,a[1].v,a[2].v),a[3].w.c_str()); + else if(!strcmp(k,"nnnss")) gr->Putsw(mglPoint(a[0].v,a[1].v,a[2].v),a[3].w.c_str(), a[4].s.c_str()); + else if(!strcmp(k,"nnnssn")) gr->Putsw(mglPoint(a[0].v,a[1].v,a[2].v),a[3].w.c_str(), a[4].s.c_str(),a[5].v); + else if(!strcmp(k,"nnnns")) gr->Putsw(mglPoint(a[0].v,a[1].v,NAN), mglPoint(a[2].v,a[3].v), a[4].w.c_str()); + else if(!strcmp(k,"nnnnss")) gr->Putsw(mglPoint(a[0].v,a[1].v,NAN), mglPoint(a[2].v,a[3].v), a[4].w.c_str(), a[5].s.c_str()); + else if(!strcmp(k,"nnnnssn")) gr->Putsw(mglPoint(a[0].v,a[1].v,NAN), mglPoint(a[2].v,a[3].v), a[4].w.c_str(), a[5].s.c_str(),a[6].v); + else if(!strcmp(k,"nnnnnns")) gr->Putsw(mglPoint(a[0].v,a[1].v,a[2].v), mglPoint(a[3].v,a[4].v,a[5].v), a[6].w.c_str()); + else if(!strcmp(k,"nnnnnnss")) gr->Putsw(mglPoint(a[0].v,a[1].v,a[2].v), mglPoint(a[3].v,a[4].v,a[5].v), a[6].w.c_str(), a[7].s.c_str()); + else if(!strcmp(k,"nnnnnnssn")) gr->Putsw(mglPoint(a[0].v,a[1].v,a[2].v), mglPoint(a[3].v,a[4].v,a[5].v), a[6].w.c_str(), a[7].s.c_str(),a[8].v); + else if(!strcmp(k,"ds")) gr->Text(*(a[0].d),a[1].w.c_str(),"",opt); + else if(!strcmp(k,"dss")) gr->Text(*(a[0].d),a[1].w.c_str(),a[2].s.c_str(),opt); + else if(!strcmp(k,"dds")) gr->Text(*(a[0].d),*(a[1].d),a[2].w.c_str(),"",opt); + else if(!strcmp(k,"ddss")) gr->Text(*(a[0].d),*(a[1].d),a[2].w.c_str(),a[3].s.c_str(),opt); + else if(!strcmp(k,"ddds")) gr->Text(*(a[0].d),*(a[1].d),*(a[2].d),a[3].w.c_str(),"",opt); + else if(!strcmp(k,"dddss")) gr->Text(*(a[0].d),*(a[1].d),*(a[2].d),a[3].w.c_str(),a[4].s.c_str(),opt); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_fourier(mglGraph *, long , mglArg *a, int k[10], const char *) -{ - if(k[0]==1 && k[1]==1 && k[2]==2) - mglFourier(*(a[0].d),*(a[1].d),a[2].s.c_str()); - else return 1; - return 0; -} -void mglc_fourier(wchar_t out[1024], long , mglArg *a, int k[10], const char *) +int mgls_torus(mglGraph *gr, long , mglArg *a, const char *k, const char *opt) { - if(k[0]==1 && k[1]==1 && k[2]==2) - mglprintf(out,1024,L"mglFourier(%s, %s, \"%s\");",a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str()); + int res=0; + if(!strcmp(k,"dd")) gr->Torus(*(a[0].d),*(a[1].d),"",opt); + else if(!strcmp(k,"dds")) gr->Torus(*(a[0].d),*(a[1].d),a[2].s.c_str(),opt); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_transform(mglGraph *, long , mglArg *a, int k[10], const char *) +int mgls_transptype(mglGraph *gr, long , mglArg *a, const char *k, const char *) { - if(k[0]==1 && k[1]==2 && k[2]==1 && k[3]==1) - *(a[0].d) = mglTransform(*(a[2].d),*(a[3].d),a[1].s.c_str()); - else return 1; - return 0; -} -void mglc_transform(wchar_t out[1024], long , mglArg *a, int k[10], const char *) -{ - if(k[0]==1 && k[1]==2 && k[2]==1 && k[3]==1) - mglprintf(out,1024,L"%s = mglTransform(%s, %s, \"%s\");",a[0].s.c_str(), a[2].s.c_str(), a[3].s.c_str(), a[1].s.c_str()); + int res=0; + if(!strcmp(k,"n")) gr->SetTranspType(a[0].v); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_transforma(mglGraph *, long , mglArg *a, int k[10], const char *) +int mgls_fourier(mglGraph *, long , mglArg *a, const char *k, const char *) { - if(k[0]==1 && k[1]==2 && k[2]==1 && k[3]==1) - *(a[0].d) = mglTransformA(*(a[2].d),*(a[3].d),a[1].s.c_str()); - else return 1; - return 0; -} -void mglc_transforma(wchar_t out[1024], long , mglArg *a, int k[10], const char *) -{ - if(k[0]==1 && k[1]==2 && k[2]==1 && k[3]==1) - mglprintf(out,1024,L"%s = mglTransformA(%s, %s, \"%s\");",a[0].s.c_str(), a[2].s.c_str(), a[3].s.c_str(), a[1].s.c_str()); + int res=0; + if(!strcmp(k,"dds")) mglFourier(*(a[0].d),*(a[1].d),a[2].s.c_str()); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_tube(mglGraph *gr, long , mglArg *a, int k[10], const char *opt) -{ - if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==1) - gr->Tube(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),k[4]==2?a[4].s.c_str():"",opt); - else if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==3) - gr->Tube(*(a[0].d),*(a[1].d),*(a[2].d),a[3].v,k[4]==2?a[4].s.c_str():"",opt); - else if(k[0]==1 && k[1]==1 && k[2]==1) - gr->Tube(*(a[0].d),*(a[1].d),*(a[2].d),k[3]==2?a[3].s.c_str():"",opt); - else if(k[0]==1 && k[1]==1 && k[2]==3) - gr->Tube(*(a[0].d),*(a[1].d),a[2].v,k[3]==2?a[3].s.c_str():"",opt); - else if(k[0]==1 && k[1]==1) - gr->Tube(*(a[0].d),*(a[1].d),k[2]==2?a[2].s.c_str():"",opt); - else if(k[0]==1 && k[1]==3) - gr->Tube(*(a[0].d),a[1].v,k[2]==2?a[2].s.c_str():"",opt); - else return 1; - return 0; -} -void mglc_tube(wchar_t out[1024], long , mglArg *a, int k[10], const char *opt) +int mgls_transform(mglGraph *, long , mglArg *a, const char *k, const char *) { - if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==1) - mglprintf(out,1024,L"gr->Tube(%s, %s, %s, %s, \"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), a[3].s.c_str(), k[4]==2?a[4].s.c_str():"",opt); - else if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==3) - mglprintf(out,1024,L"gr->Tube(%s, %s, %s, %g, \"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), a[3].v, k[4]==2?a[4].s.c_str():"",opt); - else if(k[0]==1 && k[1]==1 && k[2]==1) - mglprintf(out,1024,L"gr->Tube(%s, %s, %s, \"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), k[3]==2?a[3].s.c_str():"",opt); - else if(k[0]==1 && k[1]==1 && k[2]==3) - mglprintf(out,1024,L"gr->Tube(%s, %s, %g, \"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].v, k[3]==2?a[3].s.c_str():"",opt); - else if(k[0]==1 && k[1]==1) - mglprintf(out,1024,L"gr->Tube(%s, %s, \"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(), k[2]==2?a[2].s.c_str():"",opt); - else if(k[0]==1 && k[1]==3) - mglprintf(out,1024,L"gr->Tube(%s, %g, \"%s\", \"%s\");", a[0].s.c_str(), a[1].v, k[2]==2?a[2].s.c_str():"",opt); + int res=0; + if(!strcmp(k,"dsdd")) *(a[0].d) = mglTransform(*(a[2].d),*(a[3].d),a[1].s.c_str()); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_textmark(mglGraph *gr, long , mglArg *a, int k[10], const char *opt) -{ - if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==1 && k[4]==2) - gr->TextMark(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),a[4].w.c_str(),k[5]==2?a[5].s.c_str():"",opt); - else if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==2) - gr->TextMark(*(a[0].d),*(a[1].d),*(a[2].d),a[3].w.c_str(),k[4]==2?a[4].s.c_str():"",opt); - else if(k[0]==1 && k[1]==1 && k[2]==2) - gr->TextMark(*(a[0].d),*(a[1].d),a[2].w.c_str(),k[3]==2?a[3].s.c_str():"",opt); - else if(k[0]==1 && k[1]==2) - gr->TextMark(*(a[0].d),a[1].w.c_str(),k[2]==2?a[2].s.c_str():"",opt); - else return 1; - return 0; -} -void mglc_textmark(wchar_t out[1024], long , mglArg *a, int k[10], const char *opt) +int mgls_transforma(mglGraph *, long , mglArg *a, const char *k, const char *) { - if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==1 && k[4]==2) - mglprintf(out,1024,L"gr->TextMark(%s, %s, %s, %s, L\"%ls\", \"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), a[3].s.c_str(), a[4].w.c_str(), k[5]==2?a[5].s.c_str():"",opt); - else if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==2) - mglprintf(out,1024,L"gr->TextMark(%s, %s, %s, L\"%ls\", \"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), a[3].w.c_str(), k[4]==2?a[4].s.c_str():"",opt); - else if(k[0]==1 && k[1]==1 && k[2]==2) - mglprintf(out,1024,L"gr->TextMark(%s, %s, L\"%ls\", \"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].w.c_str(), k[3]==2?a[3].s.c_str():"",opt); - else if(k[0]==1 && k[1]==2) - mglprintf(out,1024,L"gr->TextMark(%s, L\"%ls\", \"%s\", \"%s\");", a[0].s.c_str(), a[1].w.c_str(), k[2]==2?a[2].s.c_str():"",opt); + int res=0; + if(!strcmp(k,"dsdd")) *(a[0].d) = mglTransformA(*(a[2].d),*(a[3].d),a[1].s.c_str()); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_triplot(mglGraph *gr, long , mglArg *a, int k[10], const char *opt) -{ - if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==1 && k[4]==1) - gr->TriPlot(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),k[5]==2?a[5].s.c_str():"",opt); - else if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==1) - gr->TriPlot(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),k[4]==2?a[4].s.c_str():"",opt); - else if(k[0]==1 && k[1]==1 && k[2]==1) - gr->TriPlot(*(a[0].d),*(a[1].d),*(a[2].d),k[3]==2?a[3].s.c_str():"",opt); - else return 1; - return 0; -} -void mglc_triplot(wchar_t out[1024], long , mglArg *a, int k[10], const char *opt) +int mgls_tube(mglGraph *gr, long , mglArg *a, const char *k, const char *opt) { - if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==1 && k[4]==1) - mglprintf(out,1024,L"gr->TriPlot(%s, %s, %s, %s, %s, \"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), a[3].s.c_str(), a[4].s.c_str(), k[5]==2?a[5].s.c_str():"",opt); - else if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==1) - mglprintf(out,1024,L"gr->TriPlot(%s, %s, %s, %s, \"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), a[3].s.c_str(), k[4]==2?a[4].s.c_str():"",opt); - else if(k[0]==1 && k[1]==1 && k[2]==1) - mglprintf(out,1024,L"gr->TriPlot(%s, %s, %s, \"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), k[3]==2?a[3].s.c_str():"",opt); + int res=0; + if(!strcmp(k,"dn")) + gr->Tube(*(a[0].d),a[1].v,"",opt); + else if(!strcmp(k,"dns")) + gr->Tube(*(a[0].d),a[1].v,a[2].s.c_str(),opt); + else if(!strcmp(k,"dd")) + gr->Tube(*(a[0].d),*(a[1].d),"",opt); + else if(!strcmp(k,"dds")) + gr->Tube(*(a[0].d),*(a[1].d),a[2].s.c_str(),opt); + else if(!strcmp(k,"ddn")) + gr->Tube(*(a[0].d),*(a[1].d),a[2].v,"",opt); + else if(!strcmp(k,"ddns")) + gr->Tube(*(a[0].d),*(a[1].d),a[2].v,a[3].s.c_str(),opt); + else if(!strcmp(k,"ddd")) + gr->Tube(*(a[0].d),*(a[1].d),*(a[2].d),"",opt); + else if(!strcmp(k,"ddds")) + gr->Tube(*(a[0].d),*(a[1].d),*(a[2].d),a[3].s.c_str(),opt); + else if(!strcmp(k,"dddn")) + gr->Tube(*(a[0].d),*(a[1].d),*(a[2].d),a[3].v,"",opt); + else if(!strcmp(k,"dddns")) + gr->Tube(*(a[0].d),*(a[1].d),*(a[2].d),a[3].v,a[4].s.c_str(),opt); + else if(!strcmp(k,"dddd")) + gr->Tube(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),"",opt); + else if(!strcmp(k,"dddds")) + gr->Tube(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),a[4].s.c_str(),opt); + else res = 1; return res; +} +//----------------------------------------------------------------------------- +int mgls_textmark(mglGraph *gr, long , mglArg *a, const char *k, const char *opt) +{ + int res=0; + if(!strcmp(k,"ds")) gr->TextMark(*(a[0].d),a[1].w.c_str(),"",opt); + else if(!strcmp(k,"dss")) gr->TextMark(*(a[0].d),a[1].w.c_str(),a[2].s.c_str(),opt); + else if(!strcmp(k,"dds")) gr->TextMark(*(a[0].d),*(a[1].d),a[2].w.c_str(),"",opt); + else if(!strcmp(k,"ddss")) gr->TextMark(*(a[0].d),*(a[1].d),a[2].w.c_str(),a[3].s.c_str(),opt); + else if(!strcmp(k,"ddds")) gr->TextMark(*(a[0].d),*(a[1].d),*(a[2].d),a[3].w.c_str(),"",opt); + else if(!strcmp(k,"dddss")) gr->TextMark(*(a[0].d),*(a[1].d),*(a[2].d),a[3].w.c_str(),a[4].s.c_str(),opt); + else if(!strcmp(k,"dddds")) gr->TextMark(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),a[4].w.c_str(),"",opt); + else if(!strcmp(k,"ddddss"))gr->TextMark(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),a[4].w.c_str(),a[5].s.c_str(),opt); + else res = 1; return res; +} +//----------------------------------------------------------------------------- +int mgls_triplot(mglGraph *gr, long , mglArg *a, const char *k, const char *opt) +{ + int res=0; + if(!strcmp(k,"ddd")) gr->TriPlot(*(a[0].d),*(a[1].d),*(a[2].d),"",opt); + else if(!strcmp(k,"ddds")) gr->TriPlot(*(a[0].d),*(a[1].d),*(a[2].d),a[3].s.c_str(),opt); + else if(!strcmp(k,"dddd")) gr->TriPlot(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),"",opt); + else if(!strcmp(k,"dddds")) gr->TriPlot(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),a[4].s.c_str(),opt); + else if(!strcmp(k,"ddddd")) gr->TriPlot(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),"",opt); + else if(!strcmp(k,"ddddds"))gr->TriPlot(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),a[5].s.c_str(),opt); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_quadplot(mglGraph *gr, long , mglArg *a, int k[10], const char *opt) +int mgls_quadplot(mglGraph *gr, long , mglArg *a, const char *k, const char *opt) { - if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==1 && k[4]==1) - gr->QuadPlot(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),k[5]==2?a[5].s.c_str():"",opt); - else if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==1) - gr->QuadPlot(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),k[4]==2?a[4].s.c_str():"",opt); - else if(k[0]==1 && k[1]==1 && k[2]==1) - gr->QuadPlot(*(a[0].d),*(a[1].d),*(a[2].d),k[3]==2?a[3].s.c_str():"",opt); - else return 1; - return 0; -} -void mglc_quadplot(wchar_t out[1024], long , mglArg *a, int k[10], const char *opt) -{ - if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==1 && k[4]==1) - mglprintf(out,1024,L"gr->QuadPlot(%s, %s, %s, %s, %s, \"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), a[3].s.c_str(), a[4].s.c_str(), k[5]==2?a[5].s.c_str():"",opt); - else if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==1) - mglprintf(out,1024,L"gr->QuadPlot(%s, %s, %s, %s, \"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), a[3].s.c_str(), k[4]==2?a[4].s.c_str():"",opt); - else if(k[0]==1 && k[1]==1 && k[2]==1) - mglprintf(out,1024,L"gr->QuadPlot(%s, %s, %s, \"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), k[3]==2?a[3].s.c_str():"",opt); -} -//----------------------------------------------------------------------------- -int mgls_tricont(mglGraph *gr, long , mglArg *a, int k[10], const char *opt) -{ - if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==1 && k[4]==1 && k[5]==1) - gr->TriContV(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),*(a[5].d),k[6]==2?a[6].s.c_str():"",opt); - else if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==1 && k[4]==1) - gr->TriContV(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),k[5]==2?a[5].s.c_str():"",opt); - else if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==1) - gr->TriCont(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),k[4]==2?a[4].s.c_str():"",opt); - else return 1; - return 0; -} -void mglc_tricont(wchar_t out[1024], long , mglArg *a, int k[10], const char *opt) -{ - if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==1 && k[4]==1 && k[5]==1) - mglprintf(out,1024,L"gr->TriContV(%s, %s, %s, %s, %s, %s, \"%s\", \"%s\");", - a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), a[3].s.c_str(), a[4].s.c_str(), a[5].s.c_str(), k[6]==2?a[6].s.c_str():"",opt); - else if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==1 && k[4]==1) - mglprintf(out,1024,L"gr->TriContV(%s, %s, %s, %s, %s, \"%s\", \"%s\");", - a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), a[3].s.c_str(), a[4].s.c_str(), k[5]==2?a[5].s.c_str():"",opt); - else if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==1) - mglprintf(out,1024,L"gr->TriCont(%s, %s, %s, %s, \"%s\", \"%s\");", - a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), a[3].s.c_str(), k[4]==2?a[4].s.c_str():"",opt); -} -//----------------------------------------------------------------------------- -int mgls_ternary(mglGraph *gr, long , mglArg *a, int k[10], const char *) -{ - if(k[0]==3) gr->Ternary(int(a[0].v)); - else return 1; - return 0; -} -void mglc_ternary(wchar_t out[1024], long , mglArg *a, int k[10], const char *) -{ - if(k[0]==3) mglprintf(out,1024,L"gr->Ternary(%d);", int(a[0].v)); + int res=0; + if(!strcmp(k,"ddd")) gr->QuadPlot(*(a[0].d),*(a[1].d),*(a[2].d),"",opt); + else if(!strcmp(k,"ddds")) gr->QuadPlot(*(a[0].d),*(a[1].d),*(a[2].d),a[3].s.c_str(),opt); + else if(!strcmp(k,"dddd")) gr->QuadPlot(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),"",opt); + else if(!strcmp(k,"dddds")) gr->QuadPlot(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),a[4].s.c_str(),opt); + else if(!strcmp(k,"ddddd")) gr->QuadPlot(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),"",opt); + else if(!strcmp(k,"ddddds"))gr->QuadPlot(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),a[5].s.c_str(),opt); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_transpose(mglGraph *, long , mglArg *a, int k[10], const char *) -{ - if(k[0]==1) a[0].d->Transpose(k[1]==2?a[1].s.c_str():"yxz"); - else return 1; - return 0; -} -void mglc_transpose(wchar_t out[1024], long , mglArg *a, int k[10], const char *) +int mgls_tricont(mglGraph *gr, long , mglArg *a, const char *k, const char *opt) { - if(k[0]==1) mglprintf(out,1024,L"%s.Transpose(\"%s\");", a[0].s.c_str(), k[1]==2?a[1].s.c_str():"yxz"); + int res=0; + if(!strcmp(k,"dddd")) + gr->TriCont(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),"",opt); + else if(!strcmp(k,"dddds")) + gr->TriCont(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),a[4].s.c_str(),opt); + else if(!strcmp(k,"ddddd")) + gr->TriContV(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),"",opt); + else if(!strcmp(k,"ddddds")) + gr->TriContV(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),a[5].s.c_str(),opt); + else if(!strcmp(k,"dddddd")) + gr->TriContV(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),*(a[5].d),"",opt); + else if(!strcmp(k,"dddddds")) + gr->TriContV(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),*(a[5].d),a[6].s.c_str(),opt); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_vect(mglGraph *gr, long , mglArg *a, int k[10], const char *opt) -{ - int i; - for(i=0;i<7;i++) if(k[i]!=1) break; - if(i==2) - gr->Vect(*(a[0].d),*(a[1].d),k[2]==2?a[2].s.c_str():"",opt); - else if(i==4) - gr->Vect(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),k[4]==2?a[4].s.c_str():"",opt); - else if(i==3) - gr->Vect(*(a[0].d),*(a[1].d),*(a[2].d),k[3]==2?a[3].s.c_str():"",opt); - else if(i==6) - gr->Vect(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),*(a[5].d),k[6]==2?a[6].s.c_str():"",opt); - else return 1; - return 0; -} -void mglc_vect(wchar_t out[1024], long , mglArg *a, int k[10], const char *opt) -{ - int i; - for(i=0;i<7;i++) if(k[i]!=1) break; - if(i==2) - mglprintf(out,1024,L"gr->Vect(%s, %s, \"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(), k[2]==2?a[2].s.c_str():"",opt); - else if(i==4) - mglprintf(out,1024,L"gr->Vect(%s, %s, %s, %s, \"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), a[3].s.c_str(), k[4]==2?a[4].s.c_str():"",opt); - else if(i==3) - mglprintf(out,1024,L"gr->Vect(%s, %s, %s, \"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), k[3]==2?a[3].s.c_str():"",opt); - else if(i==6) - mglprintf(out,1024,L"gr->Vect(%s, %s, %s, %s, %s, %s, \"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), a[3].s.c_str(), a[4].s.c_str(), a[5].s.c_str(), k[6]==2?a[6].s.c_str():"",opt); +int mgls_ternary(mglGraph *gr, long , mglArg *a, const char *k, const char *) +{ + int res=0; + if(!strcmp(k,"n")) gr->Ternary(int(a[0].v)); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_vect3(mglGraph *gr, long , mglArg *a, int k[10], const char *opt) -{ - int i; - for(i=0;i<7;i++) if(k[i]!=1) break; - if(i==3) - gr->Vect3(*(a[0].d),*(a[1].d),*(a[2].d),k[3]==2?a[3].s.c_str():"",k[4]==3?a[4].v:-1,opt); - else if(i==6) - gr->Vect3(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),*(a[5].d),k[6]==2?a[6].s.c_str():"",k[7]==3?a[7].v:-1,opt); - else return 1; - return 0; -} -void mglc_vect3(wchar_t out[1024], long , mglArg *a, int k[10], const char *opt) -{ - int i; - for(i=0;i<7;i++) if(k[i]!=1) break; - if(i==3) - mglprintf(out,1024,L"gr->Vect3(%s, %s, %s, \"%s\", %g, \"%s\");", - a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), k[3]==2?a[3].s.c_str():"",k[4]==3?a[4].v:-1,opt); - else if(i==6) - mglprintf(out,1024,L"gr->Vect3(%s, %s, %s, %s, %s, %s, \"%s\", %g, \"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), - a[3].s.c_str(), a[4].s.c_str(), a[5].s.c_str(), k[6]==2?a[6].s.c_str():"",k[7]==3?a[7].v:-1,opt); +int mgls_transpose(mglGraph *, long , mglArg *a, const char *k, const char *) +{ + int res=0; + if(!strcmp(k,"d")) a[0].d->Transpose(); + else if(!strcmp(k,"ds")) a[0].d->Transpose(a[1].s.c_str()); + else res = 1; return res; +} +//----------------------------------------------------------------------------- +int mgls_vect(mglGraph *gr, long , mglArg *a, const char *k, const char *opt) +{ + int res=0; + if(!strcmp(k,"dd")) gr->Vect(*(a[0].d),*(a[1].d),"",opt); + else if(!strcmp(k,"dds")) gr->Vect(*(a[0].d),*(a[1].d),a[2].s.c_str(),opt); + else if(!strcmp(k,"ddd")) gr->Vect(*(a[0].d),*(a[1].d),*(a[2].d),"",opt); + else if(!strcmp(k,"ddds")) gr->Vect(*(a[0].d),*(a[1].d),*(a[2].d),a[3].s.c_str(),opt); + else if(!strcmp(k,"dddd")) gr->Vect(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),"",opt); + else if(!strcmp(k,"dddds")) gr->Vect(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),a[4].s.c_str(),opt); + else if(!strcmp(k,"dddddd")) gr->Vect(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),*(a[5].d),"",opt); + else if(!strcmp(k,"dddddds")) gr->Vect(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),*(a[5].d),a[6].s.c_str(),opt); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_traj(mglGraph *gr, long , mglArg *a, int k[10], const char *opt) -{ - int i; - for(i=0;i<7;i++) if(k[i]!=1) break; - if(i==4) - gr->Traj(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),k[4]==2?a[4].s.c_str():"",opt); - else if(i==6) - gr->Traj(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),*(a[5].d),k[6]==2?a[6].s.c_str():"",opt); - else return 1; - return 0; -} -void mglc_traj(wchar_t out[1024], long , mglArg *a, int k[10], const char *opt) +int mgls_vect3(mglGraph *gr, long , mglArg *a, const char *k, const char *opt) { - int i; - for(i=0;i<7;i++) if(k[i]!=1) break; - if(i==4) - mglprintf(out,1024,L"gr->Traj(%s, %s, %s, %s, \"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), a[3].s.c_str(), k[4]==2?a[4].s.c_str():"",opt); - else if(i==6) - mglprintf(out,1024,L"gr->Traj(%s, %s, %s, %s, %s, %s, \"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), a[3].s.c_str(), a[4].s.c_str(), a[5].s.c_str(), k[6]==2?a[6].s.c_str():"",opt); + int res=0; + if(!strcmp(k,"ddd")) + gr->Vect3(*(a[0].d),*(a[1].d),*(a[2].d),"",-1,opt); + else if(!strcmp(k,"ddds")) + gr->Vect3(*(a[0].d),*(a[1].d),*(a[2].d),a[3].s.c_str(),-1,opt); + else if(!strcmp(k,"dddsn")) + gr->Vect3(*(a[0].d),*(a[1].d),*(a[2].d),a[3].s.c_str(),a[4].v,opt); + else if(!strcmp(k,"dddddd")) + gr->Vect3(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),*(a[5].d),"",-1,opt); + else if(!strcmp(k,"dddddds")) + gr->Vect3(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),*(a[5].d),a[6].s.c_str(),-1,opt); + else if(!strcmp(k,"ddddddsn")) + gr->Vect3(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),*(a[5].d),a[6].s.c_str(),a[7].v,opt); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_xlabel(mglGraph *gr, long , mglArg *a, int k[10], const char *opt) +int mgls_traj(mglGraph *gr, long , mglArg *a, const char *k, const char *opt) { - if(k[0]==2) gr->Label('x', a[0].w.c_str(), k[1]==3?a[1].v:1, opt); - else return 1; - return 0; -} -void mglc_xlabel(wchar_t out[1024], long , mglArg *a, int k[10], const char *opt) -{ - if(k[0]==2) mglprintf(out,1024,L"gr->Label('x', L\"%ls\", %g, \"%ls\");", a[0].w.c_str(), k[1]==3?a[1].v:1, opt); + int res=0; + if(!strcmp(k,"dddd")) + gr->Traj(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),"",opt); + else if(!strcmp(k,"dddds")) + gr->Traj(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),a[4].s.c_str(),opt); + else if(!strcmp(k,"dddddd")) + gr->Traj(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),*(a[5].d),"",opt); + else if(!strcmp(k,"dddddds")) + gr->Traj(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),*(a[5].d),a[6].s.c_str(),opt); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_ylabel(mglGraph *gr, long , mglArg *a, int k[10], const char *opt) -{ - if(k[0]==2) gr->Label('y', a[0].w.c_str(), k[1]==3?a[1].v:1, opt); - else return 1; - return 0; -} -void mglc_ylabel(wchar_t out[1024], long , mglArg *a, int k[10], const char *opt) +int mgls_xlabel(mglGraph *gr, long , mglArg *a, const char *k, const char *opt) { - if(k[0]==2) mglprintf(out,1024,L"gr->Label('y', L\"%ls\", %g, \"%ls\");", a[0].w.c_str(), k[1]==3?a[1].v:1, opt); + int res=0; + if(!strcmp(k,"s")) gr->Label('x', a[0].w.c_str(), 1, opt); + else if(!strcmp(k,"sn")) gr->Label('x', a[0].w.c_str(), a[1].v, opt); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_zlabel(mglGraph *gr, long , mglArg *a, int k[10], const char *opt) -{ - if(k[0]==2) gr->Label('z', a[0].w.c_str(), k[1]==3?a[1].v:1, opt); - else return 1; - return 0; -} -void mglc_zlabel(wchar_t out[1024], long , mglArg *a, int k[10], const char *opt) +int mgls_ylabel(mglGraph *gr, long , mglArg *a, const char *k, const char *opt) { - if(k[0]==2) mglprintf(out,1024,L"gr->Label('z', L\"%ls\", %g, \"%ls\");", a[0].w.c_str(), k[1]==3?a[1].v:1, opt); + int res=0; + if(!strcmp(k,"s")) gr->Label('y', a[0].w.c_str(), 1, opt); + else if(!strcmp(k,"sn")) gr->Label('y', a[0].w.c_str(), a[1].v, opt); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_tlabel(mglGraph *gr, long , mglArg *a, int k[10], const char *opt) +int mgls_zlabel(mglGraph *gr, long , mglArg *a, const char *k, const char *opt) { - if(k[0]==2) gr->Label('t', a[0].w.c_str(), k[1]==3?a[1].v:1, opt); - else return 1; - return 0; -} -void mglc_tlabel(wchar_t out[1024], long , mglArg *a, int k[10], const char *opt) -{ - if(k[0]==2) mglprintf(out,1024,L"gr->Label('t', L\"%ls\", %g, \"%ls\");", a[0].w.c_str(), k[1]==3?a[1].v:1, opt); + int res=0; + if(!strcmp(k,"s")) gr->Label('z', a[0].w.c_str(), 1, opt); + else if(!strcmp(k,"sn")) gr->Label('z', a[0].w.c_str(), a[1].v, opt); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_label(mglGraph *gr, long , mglArg *a, int k[10], const char *opt) -{ - if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==2) - gr->Label(*(a[0].d), *(a[1].d), *(a[2].d), a[3].w.c_str(), k[4]==2?a[4].s.c_str():"",opt); - else if(k[0]==1 && k[1]==1 && k[2]==2) - gr->Label(*(a[0].d), *(a[1].d), a[2].w.c_str(), k[3]==2?a[3].s.c_str():"",opt); - else if(k[0]==1 && k[1]==2) - gr->Label(*(a[0].d), a[1].w.c_str(), k[2]==2?a[2].s.c_str():"",opt); - else return 1; - return 0; -} -void mglc_label(wchar_t out[1024], long , mglArg *a, int k[10], const char *opt) +int mgls_tlabel(mglGraph *gr, long , mglArg *a, const char *k, const char *opt) { - if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==2) - mglprintf(out,1024,L"gr->Label(%s, %s, %s, L\"%ls\", \"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), a[3].w.c_str(), k[4]==2?a[4].s.c_str():"",opt); - else if(k[0]==1 && k[1]==1 && k[2]==2) - mglprintf(out,1024,L"gr->Label(%s, %s, L\"%ls\", \"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].w.c_str(), k[3]==2?a[3].s.c_str():"",opt); - else if(k[0]==1 && k[1]==2) - mglprintf(out,1024,L"gr->Label(%s, L\"%ls\", \"%s\", \"%s\");", a[0].s.c_str(), a[1].w.c_str(), k[2]==2?a[2].s.c_str():"",opt); + int res=0; + if(!strcmp(k,"s")) gr->Label('t', a[0].w.c_str(), 1, opt); + else if(!strcmp(k,"sn")) gr->Label('t', a[0].w.c_str(), a[1].v, opt); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_table(mglGraph *gr, long , mglArg *a, int k[10], const char *opt) +int mgls_label(mglGraph *gr, long , mglArg *a, const char *k, const char *opt) { - if(k[0]==3 && k[1]==3 && k[2]==1) - gr->Table(a[0].v, a[1].v, *(a[2].d), k[3]==2?a[3].w.c_str():L"", k[4]==2?a[4].s.c_str():"#|",opt); - else if(k[0]==1) - gr->Table(*(a[0].d), k[1]==2?a[1].w.c_str():L"", k[2]==2?a[2].s.c_str():"#|",opt); - else return 1; - return 0; -} -void mglc_table(wchar_t out[1024], long , mglArg *a, int k[10], const char *opt) -{ - if(k[0]==3 && k[1]==3 && k[2]==1) - mglprintf(out,1024,L"gr->Table(%g, %g, %s, L\"%ls\", \"%s\", \"%s\");", a[0].v, a[1].v, a[2].s.c_str(), k[3]==2?a[3].w.c_str():L"", k[4]==2?a[4].s.c_str():"|#",opt); - else if(k[0]==1) - mglprintf(out,1024,L"gr->Table(%s, L\"%ls\", \"%s\", \"%s\");", a[0].s.c_str(), k[1]==2?a[1].w.c_str():L"", k[2]==2?a[2].s.c_str():"|#",opt); + int res=0; + if(!strcmp(k,"ds")) gr->Label(*(a[0].d), a[1].w.c_str(), "",opt); + else if(!strcmp(k,"dss")) gr->Label(*(a[0].d), a[1].w.c_str(), a[2].s.c_str(),opt); + else if(!strcmp(k,"dds")) gr->Label(*(a[0].d), *(a[1].d), a[2].w.c_str(), "",opt); + else if(!strcmp(k,"ddss")) gr->Label(*(a[0].d), *(a[1].d), a[2].w.c_str(), a[3].s.c_str(),opt); + else if(!strcmp(k,"ddds")) gr->Label(*(a[0].d), *(a[1].d), *(a[2].d), a[3].w.c_str(), "",opt); + else if(!strcmp(k,"dddss")) gr->Label(*(a[0].d), *(a[1].d), *(a[2].d), a[3].w.c_str(), a[4].s.c_str(),opt); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_xrange(mglGraph *gr, long , mglArg *a, int k[10], const char *) -{ - if(k[0]==1) gr->SetRange('x',*(a[0].d),k[1]==3?(a[1].v!=0):false); - else if(k[0]==3 && k[1]==3) gr->SetRange('x',a[0].v,a[1].v); - else return 1; - return 0; -} -void mglc_xrange(wchar_t out[1024], long , mglArg *a, int k[10], const char *) +int mgls_table(mglGraph *gr, long , mglArg *a, const char *k, const char *opt) { - if(k[0]==1) - mglprintf(out,1024,L"gr->SetRange('x', %s, %s);", a[0].s.c_str(), (k[1]==3&&a[1].v!=0)?"true":"false"); - else if(k[0]==3 && k[1]==3) - mglprintf(out,1024,L"gr->SetRange('x', %g, %g));", a[0].v, a[1].v); + int res=0; + if(!strcmp(k,"d")) gr->Table(*(a[0].d), L"", "#|",opt); + else if(!strcmp(k,"ds")) gr->Table(*(a[0].d), a[1].w.c_str(), "#|",opt); + else if(!strcmp(k,"dss")) gr->Table(*(a[0].d), a[1].w.c_str(), a[2].s.c_str(),opt); + else if(!strcmp(k,"nnd")) gr->Table(a[0].v, a[1].v, *(a[2].d), L"", "#|",opt); + else if(!strcmp(k,"nnds")) gr->Table(a[0].v, a[1].v, *(a[2].d), a[3].w.c_str(), "#|",opt); + else if(!strcmp(k,"nndss")) gr->Table(a[0].v, a[1].v, *(a[2].d), a[3].w.c_str(), a[4].s.c_str(),opt); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_yrange(mglGraph *gr, long , mglArg *a, int k[10], const char *) +int mgls_xrange(mglGraph *gr, long , mglArg *a, const char *k, const char *) { - if(k[0]==1) gr->SetRange('y',*(a[0].d),k[1]==3?(a[1].v!=0):false); - else if(k[0]==3 && k[1]==3) gr->SetRange('y',a[0].v,a[1].v); - else return 1; - return 0; -} -void mglc_yrange(wchar_t out[1024], long , mglArg *a, int k[10], const char *) -{ - if(k[0]==1) - mglprintf(out,1024,L"gr->SetRange('y', %s, %s);", a[0].s.c_str(), (k[1]==3&&a[1].v!=0)?"true":"false"); - else if(k[0]==3 && k[1]==3) - mglprintf(out,1024,L"gr->SetRange('y', %g, %g));", a[0].v, a[1].v); + int res=0; + if(!strcmp(k,"d")) gr->SetRange('x',*(a[0].d)); + else if(!strcmp(k,"dn")) gr->SetRange('x',*(a[0].d),a[1].v); + else if(!strcmp(k,"nn")) gr->SetRange('x', a[0].v, a[1].v); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_zrange(mglGraph *gr, long , mglArg *a, int k[10], const char *) +int mgls_yrange(mglGraph *gr, long , mglArg *a, const char *k, const char *) { - if(k[0]==1) gr->SetRange('z',*(a[0].d),k[1]==3?(a[1].v!=0):false); - else if(k[0]==3 && k[1]==3) gr->SetRange('z',a[0].v,a[1].v); - else return 1; - return 0; + int res=0; + if(!strcmp(k,"d")) gr->SetRange('y',*(a[0].d)); + else if(!strcmp(k,"dn")) gr->SetRange('y',*(a[0].d),a[1].v); + else if(!strcmp(k,"nn")) gr->SetRange('y', a[0].v, a[1].v); + else res = 1; return res; } -void mglc_zrange(wchar_t out[1024], long , mglArg *a, int k[10], const char *) +//----------------------------------------------------------------------------- +int mgls_zrange(mglGraph *gr, long , mglArg *a, const char *k, const char *) { - if(k[0]==1) - mglprintf(out,1024,L"gr->SetRange('z', %s, %s);", a[0].s.c_str(), (k[1]==3&&a[1].v!=0)?"true":"false"); - else if(k[0]==3 && k[1]==3) - mglprintf(out,1024,L"gr->SetRange('z', %g, %g));", a[0].v, a[1].v); + int res=0; + if(!strcmp(k,"d")) gr->SetRange('z',*(a[0].d)); + else if(!strcmp(k,"dn")) gr->SetRange('z',*(a[0].d),a[1].v); + else if(!strcmp(k,"nn")) gr->SetRange('z', a[0].v, a[1].v); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_xtick(mglGraph *gr, long n, mglArg *a, int k[10], const char *) +int mgls_xtick(mglGraph *gr, long n, mglArg *a, const char *k, const char *) { - if(k[0]==1 && k[1]==2) gr->SetTicksVal('x', *(a[0].d), a[1].w.c_str(), k[2]==3 && a[2].v); - else if(k[0]==3 && k[1]==2) + int res=0; + if(!strcmp(k,"n")) gr->SetTicks('x', a[0].v); + else if(!strcmp(k,"nn")) gr->SetTicks('x', a[0].v, iint(a[1].v)); + else if(!strcmp(k,"nnn")) gr->SetTicks('x', a[0].v, iint(a[1].v), a[2].v); + else if(!strcmp(k,"s")) gr->SetTickTempl('x',a[0].w.c_str()); + else if(!strcmp(k,"ds")) gr->SetTicksVal('x', *(a[0].d), a[1].w.c_str()); + else if(!strcmp(k,"dsn")) gr->SetTicksVal('x', *(a[0].d), a[1].w.c_str(), a[2].v); + else if(!strncmp(k,"ns",2)) { mreal v[50]; std::wstring s; int i; for(i=0;i<50 && iSetTicksVal('x',mglData(i,v),s.c_str()); } - else if(k[0]==3) - gr->SetTicks('x', a[0].v, k[1]==3?iint(a[1].v):0, k[2]==3?a[2].v:NAN); - else if(k[0]==2) gr->SetTickTempl('x',a[0].w.c_str()); - else return 1; - return 0; -} -void mglc_xtick(wchar_t out[1024], long , mglArg *a, int k[10], const char *) -{ - if(k[0]==3 && k[1]==3 && k[2]==3) - mglprintf(out,1024,L"gr->SetTicks('x', %g, %d, %g);", a[0].v, iint(a[1].v),a[2].v); - else if(k[0]==3 && k[1]==3) - mglprintf(out,1024,L"gr->SetTicks('x', %g, %d);", a[0].v, iint(a[1].v)); - else if(k[0]==3 && k[1]==2) - mglprintf(out,1024,L"gr->SetTicksVal('x', %g, \"%s\");", a[0].v, a[1].s.c_str()); // TODO: Many labels in C++ output of xtick - else if(k[0]==3) mglprintf(out,1024,L"gr->SetTicks('x', %g);", a[0].v); - else if(k[0]==2) - mglprintf(out,1024,L"gr->SetTickTempl('x',L\"%ls\");", a[0].w.c_str()); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_ytick(mglGraph *gr, long n, mglArg *a, int k[10], const char *) +int mgls_ytick(mglGraph *gr, long n, mglArg *a, const char *k, const char *) { - if(k[0]==1 && k[1]==2) gr->SetTicksVal('x', *(a[0].d), a[1].w.c_str(), k[2]==3 && a[2].v); - else if(k[0]==3 && k[1]==2) + int res=0; + if(!strcmp(k,"n")) gr->SetTicks('y', a[0].v); + else if(!strcmp(k,"nn")) gr->SetTicks('y', a[0].v, iint(a[1].v)); + else if(!strcmp(k,"nnn")) gr->SetTicks('y', a[0].v, iint(a[1].v), a[2].v); + else if(!strcmp(k,"s")) gr->SetTickTempl('y',a[0].w.c_str()); + else if(!strcmp(k,"ds")) gr->SetTicksVal('y', *(a[0].d), a[1].w.c_str()); + else if(!strcmp(k,"dsn")) gr->SetTicksVal('y', *(a[0].d), a[1].w.c_str(), a[2].v); + else if(!strncmp(k,"ns",2)) { mreal v[50]; std::wstring s; int i; for(i=0;i<50 && iSetTicksVal('y',mglData(i,v),s.c_str()); } - else if(k[0]==3) - gr->SetTicks('y', a[0].v, k[1]==3?iint(a[1].v):0, k[2]==3?a[2].v:NAN); - else if(k[0]==2) gr->SetTickTempl('y',a[0].w.c_str()); - else return 1; - return 0; -} -void mglc_ytick(wchar_t out[1024], long , mglArg *a, int k[10], const char *) -{ - if(k[0]==3 && k[1]==3 && k[2]==3) - mglprintf(out,1024,L"gr->SetTicks('y', %g, %d, %g);", a[0].v, iint(a[1].v),a[2].v); - else if(k[0]==3 && k[1]==3) - mglprintf(out,1024,L"gr->SetTicks('y', %g, %d);", a[0].v, iint(a[1].v)); - else if(k[0]==3 && k[1]==2) - mglprintf(out,1024,L"gr->SetTicksVal('y', %g, \"%s\");", a[0].v, a[1].s.c_str()); // TODO: Many labels in C++ output of ytick - else if(k[0]==3) mglprintf(out,1024,L"gr->SetTicks('y', %g);", a[0].v); - else if(k[0]==2) mglprintf(out,1024,L"gr->SetTickTempl('y',L\"%ls\");", a[0].w.c_str()); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_ztick(mglGraph *gr, long n, mglArg *a, int k[10], const char *) +int mgls_ztick(mglGraph *gr, long n, mglArg *a, const char *k, const char *) { - if(k[0]==1 && k[1]==2) gr->SetTicksVal('x', *(a[0].d), a[1].w.c_str(), k[2]==3 && a[2].v); - else if(k[0]==3 && k[1]==2) + int res=0; + if(!strcmp(k,"n")) gr->SetTicks('z', a[0].v); + else if(!strcmp(k,"nn")) gr->SetTicks('z', a[0].v, iint(a[1].v)); + else if(!strcmp(k,"nnn")) gr->SetTicks('z', a[0].v, iint(a[1].v), a[2].v); + else if(!strcmp(k,"s")) gr->SetTickTempl('z',a[0].w.c_str()); + else if(!strcmp(k,"ds")) gr->SetTicksVal('z', *(a[0].d), a[1].w.c_str()); + else if(!strcmp(k,"dsn")) gr->SetTicksVal('z', *(a[0].d), a[1].w.c_str(), a[2].v); + else if(!strncmp(k,"ns",2)) { mreal v[50]; std::wstring s; int i; for(i=0;i<50 && iSetTicksVal('z',mglData(i,v),s.c_str()); } - else if(k[0]==3) - gr->SetTicks('z', a[0].v, k[1]==3?iint(a[1].v):0, k[2]==3?a[2].v:NAN); - else if(k[0]==2) gr->SetTickTempl('z',a[0].w.c_str()); - else return 1; - return 0; -} -void mglc_ztick(wchar_t out[1024], long , mglArg *a, int k[10], const char *) -{ - if(k[0]==3 && k[1]==3 && k[2]==3) - mglprintf(out,1024,L"gr->SetTicks('z', %g, %d, %g);", a[0].v, iint(a[1].v),a[2].v); - else if(k[0]==3 && k[1]==3) - mglprintf(out,1024,L"gr->SetTicks('z', %g, %d);", a[0].v, iint(a[1].v)); - else if(k[0]==3 && k[1]==2) - mglprintf(out,1024,L"gr->SetTicksVal('z', %g, \"%s\");", a[0].v, a[1].s.c_str()); // TODO: Many labels in C++ output of ztick - else if(k[0]==3) mglprintf(out,1024,L"gr->SetTicks('z', %g);", a[0].v); - else if(k[0]==2) mglprintf(out,1024,L"gr->SetTickTempl('z',L\"%ls\");", a[0].s.c_str()); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_error(mglGraph *gr, long , mglArg *a, int k[10], const char *opt) -{ - if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==1) - gr->Error(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d), k[4]==2?a[4].s.c_str():"",opt); - else if(k[0]==1 && k[1]==1 && k[2]==1) - gr->Error(*(a[0].d),*(a[1].d),*(a[2].d), k[3]==2?a[3].s.c_str():"",opt); - else if(k[0]==1 && k[1]==1) - gr->Error(*(a[0].d),*(a[1].d), k[2]==2?a[2].s.c_str():"",opt); - else return 1; - return 0; -} -void mglc_error(wchar_t out[1024], long , mglArg *a, int k[10], const char *opt) +int mgls_error(mglGraph *gr, long , mglArg *a, const char *k, const char *opt) { - if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==1) - mglprintf(out,1024,L"gr->Error(%s, %s, %s, %s, \"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), a[3].s.c_str(), k[4]==2?a[4].s.c_str():"",opt); - else if(k[0]==1 && k[1]==1 && k[2]==1) - mglprintf(out,1024,L"gr->Error(%s, %s, %s, \"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), k[3]==2?a[3].s.c_str():"",opt); - else if(k[0]==1 && k[1]==1) - mglprintf(out,1024,L"gr->Error(%s, %s, \"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(), k[2]==2?a[2].s.c_str():"",opt); + int res=0; + if(!strcmp(k,"dd")) gr->Error(*(a[0].d),*(a[1].d), "",opt); + else if(!strcmp(k,"dds")) gr->Error(*(a[0].d),*(a[1].d), a[2].s.c_str(),opt); + else if(!strcmp(k,"ddd")) gr->Error(*(a[0].d),*(a[1].d),*(a[2].d), "",opt); + else if(!strcmp(k,"ddds")) gr->Error(*(a[0].d),*(a[1].d),*(a[2].d), a[3].s.c_str(),opt); + else if(!strcmp(k,"dddd")) gr->Error(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d), "",opt); + else if(!strcmp(k,"dddds")) gr->Error(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d), a[4].s.c_str(),opt); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_extend(mglGraph *, long , mglArg *a, int k[10], const char *) +int mgls_extend(mglGraph *, long , mglArg *a, const char *k, const char *) { - if(k[0]==1 && k[1]==3) a[0].d->Extend(iint(a[1].v),k[2]==3?iint(a[2].v):0); - else return 1; - return 0; -} -void mglc_extend(wchar_t out[1024], long , mglArg *a, int k[10], const char *) -{ - if(k[0]==1 && k[1]==3) - mglprintf(out,1024,L"%s.Extend(%d, %d);", a[0].s.c_str(), iint(a[1].v), k[2]==3?iint(a[2].v):0); + int res=0; + if(!strcmp(k,"dn")) a[0].d->Extend(iint(a[1].v)); + else if(!strcmp(k,"dnn")) a[0].d->Extend(iint(a[1].v),iint(a[2].v)); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_datas(mglGraph *gr, long , mglArg *a, int k[10], const char *) +int mgls_datas(mglGraph *gr, long , mglArg *a, const char *k, const char *) { - if(k[0]==2) + int res=0; + if(!strcmp(k,"s")) { char *buf=new char[1024]; mgl_datas_hdf(a[0].s.c_str(),buf,1024); gr->SetWarn(-1,buf); delete []buf; } - else return 1; - return 0; -} -void mglc_datas(wchar_t out[1024], long , mglArg *a, int k[10], const char *) -{ - if(k[0]==2) mglprintf(out,1024,L"{char b[1024]; mgl_datas_hdf(\"%s\"s,b,1024); gr->SetWarn(-1,b);}",a[0].s.c_str()); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_info(mglGraph *gr, long , mglArg *a, int k[10], const char *) +int mgls_info(mglGraph *gr, long , mglArg *a, const char *k, const char *) { - if(k[0]==1) gr->SetWarn(-1,a[0].d->PrintInfo()); - else if(k[0]==2) gr->SetWarn(-1,a[0].s.c_str()); - else + int res=0; + if(!strcmp(k,"d")) gr->SetWarn(-1,a[0].d->PrintInfo()); + else if(!strcmp(k,"s")) gr->SetWarn(-1,a[0].s.c_str()); + else if(!strcmp(k,"n")) { char buf[128]; sprintf(buf,"value = %g",a[0].v); gr->SetWarn(-1,buf); } - return 0; -} -void mglc_info(wchar_t out[1024], long , mglArg *a, int k[10], const char *) -{ - if(k[0]==1) mglprintf(out,1024,L"gr->SetWarn(-1,%s.PrintInfo());", a[0].s.c_str()); - if(k[0]==2) mglprintf(out,1024,L"gr->SetWarn(-1,\"%s\");",a[0].s.c_str()); - else mglprintf(out,1024,L"gr->SetWarn(-1,\"value = %g\");",a[0].v); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_integrate(mglGraph *, long , mglArg *a, int k[10], const char *) -{ - if(k[0]==1 && k[1]==2) a[0].d->Integral(a[1].s.c_str()); - else return 1; - return 0; -} -void mglc_integrate(wchar_t out[1024], long , mglArg *a, int k[10], const char *) +int mgls_integrate(mglGraph *, long , mglArg *a, const char *k, const char *) { - if(k[0]==1 && k[1]==2) mglprintf(out,1024,L"%s.Integral(\"%s\");", a[0].s.c_str(), a[1].s.c_str()); + int res=0; + if(!strcmp(k,"ds")) a[0].d->Integral(a[1].s.c_str()); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_inplot(mglGraph *gr, long , mglArg *a, int k[10], const char *) -{ - if(k[0]==3 && k[1]==3 && k[2]==3 && k[3]==3) - gr->InPlot(a[0].v, a[1].v, a[2].v, a[3].v, k[4]==3&&a[4].v!=0); - else return 1; - return 0; -} -void mglc_inplot(wchar_t out[1024], long , mglArg *a, int k[10], const char *) +int mgls_inplot(mglGraph *gr, long , mglArg *a, const char *k, const char *) { - if(k[0]==3 && k[1]==3 && k[2]==3 && k[3]==3) - mglprintf(out,1024,L"gr->InPlot(%g, %g, %g, %g, %s);", a[0].v, a[1].v, a[2].v, a[3].v, k[4]==3&&a[4].v!=0 ? "true":"false"); + int res=0; + if(!strcmp(k,"nnnn")) gr->InPlot(a[0].v, a[1].v, a[2].v, a[3].v); + else if(!strcmp(k,"nnnnn")) gr->InPlot(a[0].v, a[1].v, a[2].v, a[3].v, a[4].v!=0); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_columnplot(mglGraph *gr, long , mglArg *a, int k[10], const char *) +int mgls_columnplot(mglGraph *gr, long , mglArg *a, const char *k, const char *) { - if(k[0]==3 && k[1]==3) gr->ColumnPlot(iint(a[0].v), iint(a[1].v), k[2]==3?a[2].v:0); - else return 1; - return 0; -} -void mglc_columnplot(wchar_t out[1024], long , mglArg *a, int k[10], const char *) -{ - if(k[0]==3 && k[1]==3) - mglprintf(out,1024,L"gr->ColumnPlot(%d, %d, %g);", iint(a[0].v), iint(a[1].v), k[2]==3?a[2].v:0); + int res=0; + if(!strcmp(k,"nn")) gr->ColumnPlot(iint(a[0].v), iint(a[1].v)); + else if(!strcmp(k,"nnn")) gr->ColumnPlot(iint(a[0].v), iint(a[1].v), a[2].v); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_gridplot(mglGraph *gr, long , mglArg *a, int k[10], const char *) -{ - if(k[0]==3 && k[1]==3 && k[2]==3) gr->GridPlot(iint(a[0].v), iint(a[1].v), iint(a[2].v), k[3]==3?a[3].v:0); - else return 1; - return 0; -} -void mglc_gridplot(wchar_t out[1024], long , mglArg *a, int k[10], const char *) +int mgls_gridplot(mglGraph *gr, long , mglArg *a, const char *k, const char *) { - if(k[0]==3 && k[1]==3) - mglprintf(out,1024,L"gr->GridPlot(%d, %d, %d, %g);", iint(a[0].v), iint(a[1].v), iint(a[2].v), k[3]==3?a[3].v:0); + int res=0; + if(!strcmp(k,"nnn")) gr->GridPlot(iint(a[0].v), iint(a[1].v), iint(a[2].v)); + else if(!strcmp(k,"nnnn")) gr->GridPlot(iint(a[0].v), iint(a[1].v), iint(a[2].v), a[3].v); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_stickplot(mglGraph *gr, long , mglArg *a, int k[10], const char *) +int mgls_stickplot(mglGraph *gr, long , mglArg *a, const char *k, const char *) { - if(k[0]==3 && k[1]==3 && k[2]==3 && k[3]==3) - gr->StickPlot(iint(a[0].v), iint(a[1].v), a[2].v, a[3].v); - else return 1; - return 0; -} -void mglc_stickplot(wchar_t out[1024], long , mglArg *a, int k[10], const char *) -{ - if(k[0]==3 && k[1]==3 && k[2]==3 && k[3]==3) - mglprintf(out,1024,L"gr->StickPlot(%d, %d, %g, %g);", - iint(a[0].v), iint(a[1].v), a[2].v, a[3].v); + int res=0; + if(!strcmp(k,"nnnn")) gr->StickPlot(iint(a[0].v), iint(a[1].v), a[2].v, a[3].v); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_pipe(mglGraph *gr, long , mglArg *a, int k[10], const char *opt) -{ - int i; - for(i=0;i<7;i++) if(k[i]!=1) break; - if(i==2) - gr->Pipe(*(a[0].d),*(a[1].d),k[2]==2?a[2].s.c_str():"",k[3]==3?a[3].v:0.05,opt); - else if(i==4) - gr->Pipe(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),k[4]==2?a[4].s.c_str():"",k[5]==3?a[5].v:0.05,opt); - else if(i==3) - gr->Pipe(*(a[0].d),*(a[1].d),*(a[2].d),k[3]==2?a[3].s.c_str():"",k[4]==3?a[4].v:0.05,opt); - else if(i==6) - gr->Pipe(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),*(a[5].d), - k[6]==2?a[6].s.c_str():"",k[7]==3?a[7].v:0.05,opt); - else return 1; - return 0; -} -void mglc_pipe(wchar_t out[1024], long , mglArg *a, int k[10], const char *opt) +int mgls_pipe(mglGraph *gr, long , mglArg *a, const char *k, const char *opt) { - int i; - for(i=0;i<7;i++) if(k[i]!=1) break; - if(i==2) - mglprintf(out,1024,L"gr->Pipe(%s, %s, \"%s\", %g, \"%s\");", a[0].s.c_str(), a[1].s.c_str(), k[2]==2?a[2].s.c_str():"", k[3]==3?a[3].v:0.05,opt); - else if(i==4) - mglprintf(out,1024,L"gr->Pipe(%s, %s, %s, %s, \"%s\", %g, \"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), a[3].s.c_str(), k[4]==2?a[4].s.c_str():"", k[5]==3?a[5].v:0.05,opt); - else if(i==3) - mglprintf(out,1024,L"gr->Pipe(%s, %s, %s, \"%s\", %g, \"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), k[3]==2?a[3].s.c_str():"", k[4]==3?a[4].v:0.05,opt); - else if(i==6) - mglprintf(out,1024,L"gr->Pipe(%s, %s, %s, %s, %s, %s, \"%s\", %g, \"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), a[3].s.c_str(), a[4].s.c_str(), a[5].s.c_str(), k[6]==2?a[6].s.c_str():"", k[7]==3?a[7].v:0.05,opt); + int res=0; + if(!strcmp(k,"dd")) gr->Pipe(*(a[0].d),*(a[1].d),"",0.05,opt); + else if(!strcmp(k,"dds")) gr->Pipe(*(a[0].d),*(a[1].d),a[2].s.c_str(),0.05,opt); + else if(!strcmp(k,"ddsn")) gr->Pipe(*(a[0].d),*(a[1].d),a[2].s.c_str(),a[3].v,opt); + else if(!strcmp(k,"dddd")) + gr->Pipe(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),"",0.05,opt); + else if(!strcmp(k,"dddds")) + gr->Pipe(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),a[4].s.c_str(),0.05,opt); + else if(!strcmp(k,"ddddsn")) + gr->Pipe(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),a[4].s.c_str(),a[5].v,opt); + else if(!strcmp(k,"ddd")) + gr->Pipe(*(a[0].d),*(a[1].d),*(a[2].d),"",0.05,opt); + else if(!strcmp(k,"ddds")) + gr->Pipe(*(a[0].d),*(a[1].d),*(a[2].d),a[3].s.c_str(),0.05,opt); + else if(!strcmp(k,"dddsn")) + gr->Pipe(*(a[0].d),*(a[1].d),*(a[2].d),a[3].s.c_str(),a[4].v,opt); + else if(!strcmp(k,"dddddd")) + gr->Pipe(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),*(a[5].d),"",0.05,opt); + else if(!strcmp(k,"dddddds")) + gr->Pipe(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),*(a[5].d),a[6].s.c_str(),0.05,opt); + else if(!strcmp(k,"ddddddsn")) + gr->Pipe(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),*(a[5].d),a[6].s.c_str(),a[7].v,opt); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_origin(mglGraph *gr, long , mglArg *a, int k[10], const char *) +int mgls_origin(mglGraph *gr, long , mglArg *a, const char *k, const char *) { - if(k[0]==3 && k[1]==3) gr->SetOrigin(a[0].v,a[1].v,k[2]==3?a[2].v:NAN); - else return 1; - return 0; -} -void mglc_origin(wchar_t out[1024], long , mglArg *a, int k[10], const char *) -{ - if(k[0]==3 && k[1]==3) - mglprintf(out,1024,L"gr->SetOrigin(%g, %g, %g);", a[0].v, a[1].v, k[2]==3?a[2].v:NAN); + int res=0; + if(!strcmp(k,"nn")) gr->SetOrigin(a[0].v,a[1].v,NAN); + else if(!strcmp(k,"nnn")) gr->SetOrigin(a[0].v,a[1].v,a[2].v); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_norm(mglGraph *, long , mglArg *a, int k[10], const char *) -{ - if(k[0]==1 && k[1]==3 && k[2]==3) - a[0].d->Norm(a[1].v,a[2].v,k[3]==3?a[3].v!=0:false,k[4]==3?iint(a[4].v):0); - else return 1; - return 0; -} -void mglc_norm(wchar_t out[1024], long , mglArg *a, int k[10], const char *) +int mgls_norm(mglGraph *, long , mglArg *a, const char *k, const char *) { - if(k[0]==1 && k[1]==3 && k[2]==3) - mglprintf(out,1024,L"%s.Norm(%g, %g, %s, %d);", a[0].s.c_str(), a[1].v, a[2].v, (k[3]==3&&a[3].v!=0)?"true":"false", k[4]==3?iint(a[4].v):0); + int res=0; + if(!strcmp(k,"dnn")) a[0].d->Norm(a[1].v,a[2].v); + else if(!strcmp(k,"dnnn")) a[0].d->Norm(a[1].v,a[2].v,a[3].v!=0); + else if(!strcmp(k,"dnnnn")) a[0].d->Norm(a[1].v,a[2].v,a[3].v!=0,iint(a[4].v)); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_hist(mglGraph *gr, long , mglArg *a, int k[10], const char *opt) +int mgls_hist(mglGraph *gr, long , mglArg *a, const char *k, const char *opt) { - if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==3 && k[4]==3 && k[5]==3) - *(a[0].d) = a[1].d->Hist(*(a[2].d), int(a[3].v+0.5), a[4].v, a[5].v, k[6]==3?int(a[6].v+0.5):0); - else if(k[0]==1 && k[1]==1 && k[2]==3 && k[3]==3 && k[4]==3) - *(a[0].d) = a[1].d->Hist(int(a[2].v+0.5), a[3].v, a[4].v, k[5]==3?int(a[5].v+0.5):0); - else if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==1 && k[4]==1) - *(a[0].d) = gr->Hist(*(a[1].d), *(a[2].d), *(a[3].d), *(a[4].d),opt); - else if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==1) - *(a[0].d) = gr->Hist(*(a[1].d), *(a[2].d), *(a[3].d),opt); - else if(k[0]==1 && k[1]==1 && k[2]==1) - *(a[0].d) = gr->Hist(*(a[1].d), *(a[2].d),opt); - else return 1; - return 0; -} -void mglc_hist(wchar_t out[1024], long , mglArg *a, int k[10], const char *opt) -{ - if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==3 && k[4]==3 && k[5]==3) - mglprintf(out,1024,L"%s = %s.Hist(%s, %d, %g, %g, %d);", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), iint(a[3].v), a[4].v, a[5].v, k[6]==3?iint(a[6].v):0); - else if(k[0]==1 && k[1]==1 && k[2]==3 && k[3]==3 && k[4]==3) - mglprintf(out,1024,L"%s = %s.Hist(%d, %g, %g, %d);", a[0].s.c_str(), a[1].s.c_str(), iint(a[2].v), a[3].v, a[4].v, k[5]==3?iint(a[5].v):0); - else if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==1 && k[4]==1) - mglprintf(out,1024,L"%s = gr->Hist(%s, %s, %s, %s, \"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), a[3].s.c_str(), a[4].s.c_str(),opt); - else if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==1) - mglprintf(out,1024,L"%s = gr->Hist(%s, %s, %s, \"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), a[3].s.c_str(),opt); - else if(k[0]==1 && k[1]==1 && k[2]==1) - mglprintf(out,1024,L"%s = gr->Hist(%s, %s, \"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(),opt); + int res=0; + if(!strcmp(k,"ddd")) *(a[0].d) = gr->Hist(*(a[1].d), *(a[2].d),opt); + else if(!strcmp(k,"dddd")) *(a[0].d) = gr->Hist(*(a[1].d), *(a[2].d), *(a[3].d),opt); + else if(!strcmp(k,"ddddd")) *(a[0].d) = gr->Hist(*(a[1].d), *(a[2].d), *(a[3].d), *(a[4].d),opt); + else if(!strcmp(k,"ddnnn")) *(a[0].d) = a[1].d->Hist(int(a[2].v+0.5), a[3].v, a[4].v); + else if(!strcmp(k,"ddnnnn")) *(a[0].d) = a[1].d->Hist(int(a[2].v+0.5), a[3].v, a[4].v, int(a[5].v+0.5)); + else if(!strcmp(k,"dddnnn")) *(a[0].d) = a[1].d->Hist(*(a[2].d), int(a[3].v+0.5), a[4].v, a[5].v); + else if(!strcmp(k,"dddnnnn")) *(a[0].d) = a[1].d->Hist(*(a[2].d), int(a[3].v+0.5), a[4].v, a[5].v, int(a[6].v+0.5)); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_mirror(mglGraph *, long , mglArg *a, int k[10], const char *) +int mgls_mirror(mglGraph *, long , mglArg *a, const char *k, const char *) { - if(k[0]==1 && k[1]==2) a[0].d->Mirror(a[1].s.c_str()); - else return 1; - return 0; + int res=0; + if(!strcmp(k,"ds")) a[0].d->Mirror(a[1].s.c_str()); + else res = 1; return res; } -void mglc_mirror(wchar_t out[1024], long , mglArg *a, int k[10], const char *) -{ if(k[0]==1 && k[1]==2) mglprintf(out,1024,L"%s.Mirror(\"%s\");", a[0].s.c_str(), a[1].s.c_str()); } //----------------------------------------------------------------------------- -int mgls_hankel(mglGraph *, long , mglArg *a, int k[10], const char *) +int mgls_hankel(mglGraph *, long , mglArg *a, const char *k, const char *) { - if(k[0]==1 && k[1]==2) a[0].d->Hankel(a[1].s.c_str()); else return 1; - return 0; + int res=0; + if(!strcmp(k,"ds")) a[0].d->Hankel(a[1].s.c_str()); + else res = 1; return res; } -void mglc_hankel(wchar_t out[1024], long , mglArg *a, int k[10], const char *) -{ if(k[0]==1 && k[1]==2) mglprintf(out,1024,L"%s.Hankel('%s');", a[0].s.c_str(), a[1].s.c_str()); } //----------------------------------------------------------------------------- -int mgls_sinfft(mglGraph *, long , mglArg *a, int k[10], const char *) +int mgls_sinfft(mglGraph *, long , mglArg *a, const char *k, const char *) { - if(k[0]==1 && k[1]==2) a[0].d->SinFFT(a[1].s.c_str()); else return 1; - return 0; + int res=0; + if(!strcmp(k,"ds")) a[0].d->SinFFT(a[1].s.c_str()); + else res = 1; return res; } -void mglc_sinfft(wchar_t out[1024], long , mglArg *a, int k[10], const char *) -{ if(k[0]==1 && k[1]==2) mglprintf(out,1024,L"%s.SinFFT('%s');", a[0].s.c_str(), a[1].s.c_str()); } //----------------------------------------------------------------------------- -int mgls_cosfft(mglGraph *, long , mglArg *a, int k[10], const char *) +int mgls_cosfft(mglGraph *, long , mglArg *a, const char *k, const char *) { - if(k[0]==1 && k[1]==2) a[0].d->CosFFT(a[1].s.c_str()); else return 1; - return 0; + int res=0; + if(!strcmp(k,"ds")) a[0].d->CosFFT(a[1].s.c_str()); + else res = 1; return res; } -void mglc_cosfft(wchar_t out[1024], long , mglArg *a, int k[10], const char *) -{ if(k[0]==1 && k[1]==2) mglprintf(out,1024,L"%s.CosFFT('%s');", a[0].s.c_str(), a[1].s.c_str()); } //----------------------------------------------------------------------------- -int mgls_new(mglGraph *gr, long , mglArg *a, int k[10], const char *opt) +int mgls_new(mglGraph *gr, long , mglArg *a, const char *k, const char *opt) { - if(k[0]==1 && k[1]==3 && k[2]==3 && k[3]==3) - { a[0].d->Create(iint(a[1].v),iint(a[2].v),iint(a[3].v)); - if(k[4]==2) a[0].d->Fill(gr->Self(),a[4].s.c_str(),opt); } - else if(k[0]==1 && k[1]==3 && k[2]==3) - { a[0].d->Create(iint(a[1].v),iint(a[2].v)); - if(k[3]==2) a[0].d->Fill(gr->Self(),a[3].s.c_str(),opt); } - else if(k[0]==1 && k[1]==3) + int res=0; + if(!strcmp(k,"dn")) a[0].d->Create(iint(a[1].v)); + else if(!strcmp(k,"dns")) { a[0].d->Create(iint(a[1].v)); - if(k[2]==2) a[0].d->Fill(gr->Self(),a[2].s.c_str(),opt); } - else return 1; - return 0; -} -void mglc_new(wchar_t out[1024], long , mglArg *a, int k[10], const char *opt) -{ - if(k[0]==1 && k[1]==3 && k[2]==3 && k[3]==3) - { - mglprintf(out,1024,L"%s.Create(%d, %d, %d);", a[0].s.c_str(), iint(a[1].v),iint(a[2].v),iint(a[3].v)); - if(k[4]==2) mglprintf(out,1024,L"%s.Fill(gr,\"%s\",\"%s\");",a[4].s.c_str(),opt); - } - else if(k[0]==1 && k[1]==3 && k[2]==3) - { - mglprintf(out,1024,L"%s.Create(%d, %d);", a[0].s.c_str(), iint(a[1].v),iint(a[2].v)); - if(k[3]==2) mglprintf(out,1024,L"%s.Fill(gr,\"%s\",\"%s\");",a[3].s.c_str(),opt); - } - else if(k[0]==1 && k[1]==3) - { - mglprintf(out,1024,L"%s.Create(%d);", a[0].s.c_str(), iint(a[1].v)); - if(k[2]==2) mglprintf(out,1024,L"%s.Fill(gr,\"%s\",\"%s\");",a[2].s.c_str(),opt); - } + a[0].d->Fill(gr->Self(),a[2].s.c_str(),opt); } + else if(!strcmp(k,"dnn")) a[0].d->Create(iint(a[1].v),iint(a[2].v)); + else if(!strcmp(k,"dnns")) + { a[0].d->Create(iint(a[1].v),iint(a[2].v)); + a[0].d->Fill(gr->Self(),a[3].s.c_str(),opt); } + else if(!strcmp(k,"dnnn")) a[0].d->Create(iint(a[1].v),iint(a[2].v),iint(a[3].v)); + else if(!strcmp(k,"dnnns")) + { a[0].d->Create(iint(a[1].v),iint(a[2].v),iint(a[3].v)); + a[0].d->Fill(gr->Self(),a[4].s.c_str(),opt); } + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_var(mglGraph *, long , mglArg *a, int k[10], const char *) +int mgls_var(mglGraph *, long , mglArg *a, const char *k, const char *) { - if(k[0]==1 && k[1]==3 && k[2]==3) - { a[0].d->Create(iint(a[1].v)); a[0].d->Fill(a[2].v, k[3]==3?a[3].v:NAN); } - else return 1; - return 0; -} -void mglc_var(wchar_t out[1024], long , mglArg *a, int k[10], const char *) -{ - if(k[0]==1 && k[1]==3 && k[2]==3) - mglprintf(out,1024,L"%s.Create(%d);\t%s.Fill(%g,%g);",a[0].s.c_str(), iint(a[1].v), a[0].s.c_str(), a[2].v, k[3]==3?a[3].v:NAN); + int res=0; + if(!strcmp(k,"dnn")) + { a[0].d->Create(iint(a[1].v)); a[0].d->Fill(a[2].v, NAN); } + else if(!strcmp(k,"dnnn")) + { a[0].d->Create(iint(a[1].v)); a[0].d->Fill(a[2].v, a[3].v); } + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_chdir(mglGraph *gr, long , mglArg *a, int k[10], const char *) +int mgls_chdir(mglGraph *gr, long , mglArg *a, const char *k, const char *) { - if(k[0]==2) - { int r=chdir(a[0].s.c_str()); if(r) gr->SetWarn(mglWarnFile,"chdir"); } - else return 1; - return 0; + int res=0; + if(!strcmp(k,"s")) + { if(chdir(a[0].s.c_str())) gr->SetWarn(mglWarnFile,"chdir"); } + else res = 1; return res; } -void mglc_chdir(wchar_t out[1024], long , mglArg *a, int k[10], const char *) -{ if(k[0]==2) mglprintf(out,1024,L"chdir(\"%s\");", a[0].s.c_str()); } //----------------------------------------------------------------------------- -int mgls_perspective(mglGraph *gr, long , mglArg *a, int k[10], const char *) +int mgls_perspective(mglGraph *gr, long , mglArg *a, const char *k, const char *) { - if(k[0]==3) gr->Perspective(a[0].v); - else return 1; - return 0; + int res=0; + if(!strcmp(k,"n")) gr->Perspective(a[0].v); + else res = 1; return res; } -void mglc_perspective(wchar_t out[1024], long , mglArg *a, int k[10], const char *) -{ if(k[0]==3) mglprintf(out,1024,L"gr->Perspective(%g);", a[0].v); } //----------------------------------------------------------------------------- -int mgls_facex(mglGraph *gr, long , mglArg *a, int k[10], const char *) -{ - if(k[0]==3 && k[1]==3 && k[2]==3 && k[3]==3 && k[4]==3) - gr->FaceX(mglPoint(a[0].v, a[1].v, a[2].v), a[3].v, a[4].v, k[5]==2?a[5].s.c_str():"", k[6]==3?a[6].v:0, k[7]==3?a[7].v:0); - else return 1; - return 0; -} -void mglc_facex(wchar_t out[1024], long , mglArg *a, int k[10], const char *) +int mgls_facex(mglGraph *gr, long , mglArg *a, const char *k, const char *) { - if(k[0]==3 && k[1]==3 && k[2]==3 && k[3]==3 && k[4]==3) - mglprintf(out,1024,L"gr->FaceX(mglPoint(%g, %g, %g), %g, %g, \"%s\", %g, %g);", a[0].v, a[1].v, a[2].v, a[3].v, a[4].v, k[5]==2?a[5].s.c_str():"", k[6]==3?a[6].v:0, k[7]==3?a[7].v:0); + int res=0; + if(!strcmp(k,"nnnnn")) gr->FaceX(mglPoint(a[0].v, a[1].v, a[2].v), a[3].v, a[4].v); + else if(!strcmp(k,"nnnnns")) gr->FaceX(mglPoint(a[0].v, a[1].v, a[2].v), a[3].v, a[4].v, a[5].s.c_str()); + else if(!strcmp(k,"nnnnnsnn")) gr->FaceX(mglPoint(a[0].v, a[1].v, a[2].v), a[3].v, a[4].v, a[5].s.c_str(),a[6].v,a[7].v); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_facey(mglGraph *gr, long , mglArg *a, int k[10], const char *) +int mgls_facey(mglGraph *gr, long , mglArg *a, const char *k, const char *) { - if(k[0]==3 && k[1]==3 && k[2]==3 && k[3]==3 && k[4]==3) - gr->FaceY(mglPoint(a[0].v, a[1].v, a[2].v), a[3].v, a[4].v, k[5]==2?a[5].s.c_str():"", k[6]==3?a[6].v:0, k[7]==3?a[7].v:0); - else return 1; - return 0; -} -void mglc_facey(wchar_t out[1024], long , mglArg *a, int k[10], const char *) -{ - if(k[0]==3 && k[1]==3 && k[2]==3 && k[3]==3 && k[4]==3) - mglprintf(out,1024,L"gr->FaceY(mglPoint(%g, %g, %g), %g, %g, \"%s\", %g, %g);", a[0].v, a[1].v, a[2].v, a[3].v, a[4].v, k[5]==2?a[5].s.c_str():"", k[6]==3?a[6].v:0, k[7]==3?a[7].v:0); + int res=0; + if(!strcmp(k,"nnnnn")) gr->FaceY(mglPoint(a[0].v, a[1].v, a[2].v), a[3].v, a[4].v); + else if(!strcmp(k,"nnnnns")) gr->FaceY(mglPoint(a[0].v, a[1].v, a[2].v), a[3].v, a[4].v, a[5].s.c_str()); + else if(!strcmp(k,"nnnnnsnn")) gr->FaceY(mglPoint(a[0].v, a[1].v, a[2].v), a[3].v, a[4].v, a[5].s.c_str(),a[6].v,a[7].v); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_facez(mglGraph *gr, long , mglArg *a, int k[10], const char *) -{ - if(k[0]==3 && k[1]==3 && k[2]==3 && k[3]==3 && k[4]==3) - gr->FaceZ(mglPoint(a[0].v, a[1].v, a[2].v), a[3].v, a[4].v, k[5]==2?a[5].s.c_str():"", k[6]==3?a[6].v:0, k[7]==3?a[7].v:0); - else return 1; - return 0; -} -void mglc_facez(wchar_t out[1024], long , mglArg *a, int k[10], const char *) +int mgls_facez(mglGraph *gr, long , mglArg *a, const char *k, const char *) { - if(k[0]==3 && k[1]==3 && k[2]==3 && k[3]==3 && k[4]==3) - mglprintf(out,1024,L"gr->FaceZ(mglPoint(%g, %g, %g), %g, %g, \"%s\", %g, %g);", a[0].v, a[1].v, a[2].v, a[3].v, a[4].v, k[5]==2?a[5].s.c_str():"", k[6]==3?a[6].v:0, k[7]==3?a[7].v:0); + int res=0; + if(!strcmp(k,"nnnnn")) gr->FaceZ(mglPoint(a[0].v, a[1].v, a[2].v), a[3].v, a[4].v); + else if(!strcmp(k,"nnnnns")) gr->FaceZ(mglPoint(a[0].v, a[1].v, a[2].v), a[3].v, a[4].v, a[5].s.c_str()); + else if(!strcmp(k,"nnnnnsnn")) gr->FaceZ(mglPoint(a[0].v, a[1].v, a[2].v), a[3].v, a[4].v, a[5].s.c_str(),a[6].v,a[7].v); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_normsl(mglGraph *, long , mglArg *a, int k[10], const char *) -{ - if(k[0]==1 && k[1]==3 && k[2]==3) - a[0].d->NormSl(a[1].v, a[2].v, k[3]==2?a[3].s.c_str()[0]:'z', k[4]==3?a[4].v!=0:true, k[5]==3?a[5].v!=0:false); - else return 1; - return 0; -} -void mglc_normsl(wchar_t out[1024], long , mglArg *a, int k[10], const char *) +int mgls_normsl(mglGraph *, long , mglArg *a, const char *k, const char *) { - if(k[0]==1 && k[1]==3 && k[2]==3) - mglprintf(out,1024,L"%s.NormSl(%g, %g, '%c', %s, %s);", a[0].s.c_str(), a[1].v, a[2].v, k[3]==2?a[3].s.c_str()[0]:'z', (k[4]!=3||a[4].v!=0)?"true":"false", (k[5]==3&&a[5].v!=0)?"true":"false"); + int res=0; + if(!strcmp(k,"dnn")) a[0].d->NormSl(a[1].v, a[2].v); + else if(!strcmp(k,"dnns")) a[0].d->NormSl(a[1].v, a[2].v, a[3].s.c_str()[0]); + else if(!strcmp(k,"dnnsn")) a[0].d->NormSl(a[1].v, a[2].v, a[3].s.c_str()[0],a[4].v); + else if(!strcmp(k,"dnnsnn"))a[0].d->NormSl(a[1].v, a[2].v, a[3].s.c_str()[0],a[4].v,a[5].v); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_momentum(mglGraph *, long , mglArg *a, int k[10], const char *) -{ - if(k[0]==1 && k[1]==1 && k[2]==2) - *(a[0].d) = a[1].d->Momentum(k[3]==2?a[3].s.c_str()[0]:'z', a[2].s.c_str()); - else return 1; - return 0; -} -void mglc_momentum(wchar_t out[1024], long , mglArg *a, int k[10], const char *) +int mgls_momentum(mglGraph *, long , mglArg *a, const char *k, const char *) { - if(k[0]==1 && k[1]==1 && k[2]==2) - mglprintf(out,1024,L"%s = %s.Momentum('%c', \"%s\");", a[0].s.c_str(), a[1].s.c_str(), k[3]==2?a[3].s.c_str()[0]:'z', a[2].s.c_str()); + int res=0; + if(!strcmp(k,"dds")) *(a[0].d) = a[1].d->Momentum('z', a[2].s.c_str()); + else if(!strcmp(k,"ddss")) *(a[0].d) = a[1].d->Momentum(a[3].s.c_str()[0], a[2].s.c_str()); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_fit(mglGraph *gr, long , mglArg *a, int k[10], const char *opt) +int mgls_fit(mglGraph *gr, long , mglArg *a, const char *k, const char *opt) { - if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==1 && k[4]==1&& k[5]==2 && k[6]==2 && k[7]==1 && a[7].d->nx>=long(strlen(a[6].s.c_str()))) + int res=0; + if(!strcmp(k,"dddddssd")) *(a[0].d) = gr->Fit(*(a[1].d), *(a[2].d), *(a[3].d), *(a[4].d), a[5].s.c_str(), a[6].s.c_str(), *(a[7].d),opt); - else if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==1 && k[4]==1&& k[5]==2 && k[6]==2) + else if(!strcmp(k,"dddddss")) *(a[0].d) = gr->Fit(*(a[1].d), *(a[2].d), *(a[3].d), *(a[4].d), a[5].s.c_str(), a[6].s.c_str(),opt); - else if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==1 && k[4]==2 && k[5]==2 && k[6]==1 && a[6].d->nx>=long(strlen(a[5].s.c_str()))) + else if(!strcmp(k,"ddddssd")) *(a[0].d) = gr->Fit(*(a[1].d), *(a[2].d), *(a[3].d), a[4].s.c_str(), a[5].s.c_str(), *(a[6].d),opt); - else if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==1 && k[4]==2 && k[5]==2) + else if(!strcmp(k,"ddddss")) *(a[0].d) = gr->Fit(*(a[1].d), *(a[2].d), *(a[3].d), a[4].s.c_str(), a[5].s.c_str(),opt); - else if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==2 && k[4]==2 && k[5]==1 && a[5].d->nx>=long(strlen(a[4].s.c_str()))) + else if(!strcmp(k,"dddssd")) *(a[0].d) = gr->Fit(*(a[1].d), *(a[2].d), a[3].s.c_str(), a[4].s.c_str(), *(a[5].d),opt); - else if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==2 && k[4]==2) + else if(!strcmp(k,"dddss")) *(a[0].d) = gr->Fit(*(a[1].d), *(a[2].d), a[3].s.c_str(), a[4].s.c_str(),opt); - else if(k[0]==1 && k[1]==1 && k[2]==2 && k[3]==2 && k[4]==1 && a[4].d->nx>=long(strlen(a[3].s.c_str()))) + else if(!strcmp(k,"ddssd")) *(a[0].d) = gr->Fit(*(a[1].d), a[2].s.c_str(), a[3].s.c_str(), *(a[4].d),opt); - else if(k[0]==1 && k[1]==1 && k[2]==2 && k[3]==2) + else if(!strcmp(k,"ddss")) *(a[0].d) = gr->Fit(*(a[1].d), a[2].s.c_str(), a[3].s.c_str(),opt); - else return 1; - return 0; -} -void mglc_fit(wchar_t out[1024], long , mglArg *a, int k[10], const char *opt) -{ - if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==1 && k[4]==1&& k[5]==2 && k[6]==2) - mglprintf(out,1024,L"%s = gr->Fit(%s, %s, %s, %s, \"%s\", \"%s\", %s, \"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), a[3].s.c_str(), a[4].s.c_str(), a[5].s.c_str(), a[6].s.c_str(), k[7]==1?a[7].s.c_str():"",opt); - else if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==1 && k[4]==2 && k[5]==2) - mglprintf(out,1024,L"%s = gr->Fit(%s, %s, %s, \"%s\", \"%s\", %s, \"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), a[3].s.c_str(), a[4].s.c_str(), a[5].s.c_str(), k[6]==1?a[6].s.c_str():"",opt); - else if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==2 && k[4]==2) - mglprintf(out,1024,L"%s = gr->Fit(%s, %s, \"%s\", \"%s\", %s, \"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), a[3].s.c_str(), a[4].s.c_str(), k[5]==1?a[5].s.c_str():"",opt); - else if(k[0]==1 && k[1]==1 && k[2]==2 && k[3]==2) - mglprintf(out,1024,L"%s = gr->Fit(%s, \"%s\", \"%s\", %s, \"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), a[3].s.c_str(), k[4]==1?a[5].s.c_str():"",opt); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_fits(mglGraph *gr, long , mglArg *a, int k[10], const char *opt) +int mgls_fits(mglGraph *gr, long , mglArg *a, const char *k, const char *opt) { - if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==1 && k[4]==1 && k[5]==1 && k[6]==2 && k[7]==2 && k[8]==1 && a[8].d->nx>=long(strlen(a[7].s.c_str()))) + int res=0; + if(!strcmp(k,"ddddddssd")) *(a[0].d) = gr->FitS(*(a[1].d), *(a[2].d), *(a[3].d), *(a[4].d), *(a[5].d), a[6].s.c_str(), a[7].s.c_str(), *(a[8].d),opt); - else if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==1 && k[4]==1 && k[5]==1 && k[6]==2 && k[7]==2) + else if(!strcmp(k,"ddddddss")) *(a[0].d) = gr->FitS(*(a[1].d), *(a[2].d), *(a[3].d), *(a[4].d), *(a[5].d), a[6].s.c_str(), a[7].s.c_str(),opt); - else if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==1 && k[4]==1 && k[5]==2 && k[6]==2 && k[7]==1 && a[7].d->nx>=long(strlen(a[6].s.c_str()))) + else if(!strcmp(k,"dddddssd")) *(a[0].d) = gr->FitS(*(a[1].d), *(a[2].d), *(a[3].d), *(a[4].d), a[5].s.c_str(), a[6].s.c_str(), *(a[7].d),opt); - else if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==1 && k[4]==1 && k[5]==2 && k[6]==2) + else if(!strcmp(k,"dddddss")) *(a[0].d) = gr->FitS(*(a[1].d), *(a[2].d), *(a[3].d), *(a[4].d), a[5].s.c_str(), a[6].s.c_str(),opt); - else if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==1 && k[4]==2 && k[5]==2 && k[6]==1 && a[6].d->nx>=long(strlen(a[5].s.c_str()))) + else if(!strcmp(k,"ddddssd")) *(a[0].d) = gr->FitS(*(a[1].d), *(a[2].d), *(a[3].d), a[4].s.c_str(), a[5].s.c_str(), *(a[6].d),opt); - else if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==1 && k[4]==2 && k[5]==2) + else if(!strcmp(k,"ddddss")) *(a[0].d) = gr->FitS(*(a[1].d), *(a[2].d), *(a[3].d), a[4].s.c_str(), a[5].s.c_str(),opt); - else if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==2 && k[4]==2 && k[5]==1 && a[5].d->nx>=long(strlen(a[4].s.c_str()))) + else if(!strcmp(k,"dddssd")) *(a[0].d) = gr->FitS(*(a[1].d), *(a[2].d), a[3].s.c_str(), a[4].s.c_str(), *(a[5].d),opt); - else if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==2 && k[4]==2) + else if(!strcmp(k,"dddss")) *(a[0].d) = gr->FitS(*(a[1].d), *(a[2].d), a[3].s.c_str(), a[4].s.c_str(),opt); - else return 1; - return 0; -} -void mglc_fits(wchar_t out[1024], long , mglArg *a, int k[10], const char *opt) -{ - if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==1 && k[4]==1 && k[5]==1 && k[6]==2 && k[7]==2) - mglprintf(out,1024,L"%s = gr->FitS(%s, %s, %s, %s, %s, \"%s\", \"%s\", %s, \"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), a[3].s.c_str(), a[4].s.c_str(), a[5].s.c_str(), a[6].s.c_str(), a[7].s.c_str(), (k[8]==1 && a[8].d->nx>=long(strlen(a[7].s.c_str())))?a[8].s.c_str():"",opt); - else if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==1 && k[4]==1 && k[5]==2 && k[6]==2) - mglprintf(out,1024,L"%s = gr->FitS(%s, %s, %s, %s, \"%s\", \"%s\", %s, \"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), a[3].s.c_str(), a[4].s.c_str(), a[5].s.c_str(), a[6].s.c_str(), (k[7]==1 && a[7].d->nx>=long(strlen(a[6].s.c_str())))?a[7].s.c_str():"",opt); - else if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==1 && k[4]==2 && k[5]==2) - mglprintf(out,1024,L"%s = gr->FitS(%s, %s, %s, \"%s\", \"%s\", %s, \"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), a[3].s.c_str(), a[4].s.c_str(), a[5].s.c_str(), (k[6]==1 && a[6].d->nx>=long(strlen(a[5].s.c_str())))?a[6].s.c_str():"",opt); - else if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==2 && k[4]==2) - mglprintf(out,1024,L"%s = gr->FitS(%s, %s, \"%s\", \"%s\", %s, \"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), a[3].s.c_str(), a[4].s.c_str(), (k[5]==1 && a[5].d->nx>=long(strlen(a[4].s.c_str())))?a[5].s.c_str():"",opt); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_putsfit(mglGraph *gr, long , mglArg *a, int k[10], const char *) -{ - if(k[0]==3 && k[1]==3 && k[2]==3) - gr->PutsFit(mglPoint(a[0].v,a[1].v,a[2].v), k[3]==2?a[3].s.c_str():"", k[4]==2?a[4].s.c_str():"", k[5]==3?a[5].v:-1); - else if(k[0]==3 && k[1]==3) - gr->PutsFit(mglPoint(a[0].v,a[1].v), k[2]==2?a[2].s.c_str():"", k[3]==2?a[3].s.c_str():"", k[4]==3?a[4].v:-1); - else return 1; - return 0; -} -void mglc_putsfit(wchar_t out[1024], long , mglArg *a, int k[10], const char *) +int mgls_putsfit(mglGraph *gr, long , mglArg *a, const char *k, const char *) { - if(k[0]==3 && k[1]==3 && k[2]==3) - mglprintf(out,1024,L"gr->PutsFit(mglPoint(%g, %g, %g), \"%s\", \"%s\", %g);", a[0].v,a[1].v,a[2].v, k[3]==2?a[3].s.c_str():"", k[4]==2?a[4].s.c_str():"", k[5]==3?a[5].v:-1); - else if(k[0]==3 && k[1]==3) - mglprintf(out,1024,L"gr->PutsFit(mglPoint(%g, %g), \"%s\", \"%s\", %g);", a[0].v,a[1].v, k[2]==2?a[2].s.c_str():"", k[3]==2?a[3].s.c_str():"", k[4]==3?a[4].v:-1); + int res=0; + if(!strcmp(k,"nn")) gr->PutsFit(mglPoint(a[0].v,a[1].v)); + else if(!strcmp(k,"nns")) gr->PutsFit(mglPoint(a[0].v,a[1].v), a[2].s.c_str()); + else if(!strcmp(k,"nnss")) gr->PutsFit(mglPoint(a[0].v,a[1].v), a[2].s.c_str(),a[3].s.c_str()); + else if(!strcmp(k,"nnssn")) gr->PutsFit(mglPoint(a[0].v,a[1].v), a[2].s.c_str(),a[3].s.c_str(),a[4].v); + else if(!strcmp(k,"nnn")) gr->PutsFit(mglPoint(a[0].v,a[1].v,a[2].v)); + else if(!strcmp(k,"nnns")) gr->PutsFit(mglPoint(a[0].v,a[1].v,a[2].v), a[3].s.c_str()); + else if(!strcmp(k,"nnnss")) gr->PutsFit(mglPoint(a[0].v,a[1].v,a[2].v), a[3].s.c_str(),a[4].s.c_str()); + else if(!strcmp(k,"nnnssn"))gr->PutsFit(mglPoint(a[0].v,a[1].v,a[2].v), a[3].s.c_str(),a[4].s.c_str(),a[5].v); + else res = 1; + return res; } //----------------------------------------------------------------------------- -int mgls_arrowsize(mglGraph *gr, long , mglArg *a, int k[10], const char *) +int mgls_arrowsize(mglGraph *gr, long , mglArg *a, const char *k, const char *) { - if(k[0]==3) gr->SetArrowSize(a[0].v); - else return 1; - return 0; -} -void mglc_arrowsize(wchar_t out[1024], long , mglArg *a, int k[10], const char *) -{ - if(k[0]==3) mglprintf(out,1024,L"gr->SetArrowSize(%g);", a[0].v); + int res=0; + if(!strcmp(k,"n")) gr->SetArrowSize(a[0].v); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_rearrange(mglGraph *, long , mglArg *a, int k[10], const char *) -{ - if(k[0]==1 && k[1]==3) - a[0].d->Rearrange(iint(a[1].v), k[2]==3?iint(a[2].v):0, k[3]==3?iint(a[3].v):0); - else return 1; - return 0; -} -void mglc_rearrange(wchar_t out[1024], long , mglArg *a, int k[10], const char *) +int mgls_rearrange(mglGraph *, long , mglArg *a, const char *k, const char *) { - if(k[0]==1 && k[1]==3) - mglprintf(out,1024,L"%s.Rearrange(%d, %d, %d);",a[0].s.c_str(), iint(a[1].v), k[2]==3?iint(a[2].v):0, k[3]==3?iint(a[3].v):0); + int res=0; + if(!strcmp(k,"dn")) a[0].d->Rearrange(iint(a[1].v)); + else if(!strcmp(k,"dnn")) a[0].d->Rearrange(iint(a[1].v), iint(a[2].v)); + else if(!strcmp(k,"dnnn")) a[0].d->Rearrange(iint(a[1].v), iint(a[2].v), iint(a[3].v)); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_ctick(mglGraph *gr, long , mglArg *a, int k[10], const char *) +int mgls_ctick(mglGraph *gr, long , mglArg *a, const char *k, const char *) { - if(k[0]==2) gr->SetTickTempl('c',a[0].w.c_str()); - else if(k[0]==3) gr->SetTicks('c',a[0].v); - else return 1; - return 0; -} -void mglc_ctick(wchar_t out[1024], long , mglArg *a, int k[10], const char *) -{ - if(k[0]==2) mglprintf(out,1024,L"gr->SetTickTempl('c',L\"%ls\");", a[0].w.c_str()); - else if(k[0]==3) mglprintf(out,1024,L"gr->SetTicks('c',%g);", a[0].v); + int res=0; + if(!strcmp(k,"s")) gr->SetTickTempl('c',a[0].w.c_str()); + else if(!strcmp(k,"n")) gr->SetTicks('c',a[0].v); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_fplot(mglGraph *gr, long , mglArg *a, int k[10], const char *opt) -{ - if(k[0]==2 && k[1]==2 && k[2]==2) - gr->FPlot(a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), k[3]==2?a[3].s.c_str():"",opt); - else if(k[0]==2) gr->FPlot(a[0].s.c_str(), k[1]==2?a[1].s.c_str():"",opt); - else return 1; - return 0; -} -void mglc_fplot(wchar_t out[1024], long , mglArg *a, int k[10], const char *opt) +int mgls_fplot(mglGraph *gr, long , mglArg *a, const char *k, const char *opt) { - if(k[0]==2 && k[1]==2 && k[2]==2) - mglprintf(out,1024,L"gr->FPlot(\"%s\", \"%s\", \"%s\", \"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), k[3]==2?a[3].s.c_str():"",opt); - else if(k[0]==2) - mglprintf(out,1024,L"gr->FPlot(\"%s\", \"%s\", \"%s\");", a[0].s.c_str(), k[1]==2?a[1].s.c_str():"",opt); + int res=0; + if(!strcmp(k,"s")) gr->FPlot(a[0].s.c_str(), "",opt); + else if(!strcmp(k,"ss")) gr->FPlot(a[0].s.c_str(), a[1].s.c_str(),opt); + else if(!strcmp(k,"sss")) gr->FPlot(a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), "",opt); + else if(!strcmp(k,"ssss")) gr->FPlot(a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), a[3].s.c_str(),opt); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_fsurf(mglGraph *gr, long , mglArg *a, int k[10], const char *opt) +int mgls_fsurf(mglGraph *gr, long , mglArg *a, const char *k, const char *opt) { - if(k[0]==2 && k[1]==2 && k[2]==2) gr->FSurf(a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), k[3]==2?a[3].s.c_str():"",opt); - else if(k[0]==2) gr->FSurf(a[0].s.c_str(), k[1]==2?a[1].s.c_str():"",opt); - else return 1; - return 0; -} -void mglc_fsurf(wchar_t out[1024], long , mglArg *a, int k[10], const char *opt) -{ - if(k[0]==2 && k[1]==2 && k[2]==2) - mglprintf(out,1024,L"gr->FSurf(\"%s\", \"%s\", \"%s\", \"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), k[3]==2?a[3].s.c_str():"",opt); - else if(k[0]==2) - mglprintf(out,1024,L"gr->FSurf(\"%s\", \"%s\", \"%s\");", a[0].s.c_str(), k[1]==2?a[1].s.c_str():"",opt); + int res=0; + if(!strcmp(k,"s")) gr->FSurf(a[0].s.c_str(), "",opt); + else if(!strcmp(k,"ss")) gr->FSurf(a[0].s.c_str(), a[1].s.c_str(),opt); + else if(!strcmp(k,"sss")) gr->FSurf(a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), "",opt); + else if(!strcmp(k,"ssss")) gr->FSurf(a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), a[3].s.c_str(),opt); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_fgets(mglGraph *gr, long , mglArg *a, int k[10], const char *) // NOTE don't use options -- Puts can be part of group +int mgls_fgets(mglGraph *gr, long , mglArg *a, const char *k, const char *) // NOTE don't use options -- Puts can be part of group { + int res=0; char buf[1024]; FILE *fp; - if((k[0]==3 && k[1]==3 && k[2]==3 && k[3]==2) || (k[0]==3 && k[1]==3 && k[2]==2)) + if(!strncmp(k,"nns",3)) + { + int i, n = (k[3]=='n'?iint(a[3].v):0); + fp = fopen(a[2].s.c_str(),"rt"); + if(!fp) + { + gr->SetWarn(mglWarnOpen,a[2].s.c_str()); + return res; +} + for(i=0;iSetWarn(mglWarnOpen,(a[2].s+" - line "+b).c_str()); + fclose(fp); return res; + } + fclose(fp); + gr->Puts(mglPoint(a[0].v,a[1].v,NAN),buf, (k[4]=='s')?a[4].s.c_str():"", k[5]=='n'?a[5].v:-1); + } + else if(!strncmp(k,"nnns",4)) { - int i, j=k[2]==3?1:0, n = (k[j+3]==3?iint(a[j+3].v):0); - mreal vv = k[2]==3 ? a[2].v:NAN; - fp = fopen(a[j+2].s.c_str(),"rt"); + int i, n = (k[4]=='n'?iint(a[4].v):0); + fp = fopen(a[3].s.c_str(),"rt"); if(!fp) { - gr->SetWarn(mglWarnOpen,a[j+2].s.c_str()); - return 0; + gr->SetWarn(mglWarnOpen,a[3].s.c_str()); + return res; } for(i=0;iSetWarn(mglWarnOpen,(a[j+2].s+" - line "+b).c_str()); - fclose(fp); return 0; + gr->SetWarn(mglWarnOpen,(a[3].s+" - line "+b).c_str()); + fclose(fp); return res; } fclose(fp); - gr->Puts(mglPoint(a[0].v,a[1].v,vv),buf, (k[j+4]==2)?a[j+4].s.c_str():"", k[j+5]==3?a[j+5].v:-1); + gr->Puts(mglPoint(a[0].v,a[1].v,a[2].v),buf, (k[5]=='s')?a[5].s.c_str():"", k[6]=='n'?a[6].v:-1); } - else return 1; - return 0; + else res = 1; return res; } -void mglc_fgets(wchar_t [1024], long , mglArg *, int [10], const char *) {} //----------------------------------------------------------------------------- -int mgls_import(mglGraph *, long , mglArg *a, int k[10], const char *) +int mgls_import(mglGraph *gr, long , mglArg *a, const char *k, const char *) { - if(k[0]==1 && k[1]==2 && k[2]==2) - a[0].d->Import(a[1].s.c_str(), a[2].s.c_str(), k[3]==3?a[3].v:0, k[4]==3?a[4].v:1); - else return 1; - return 0; -} -void mglc_import(wchar_t out[1024], long , mglArg *a, int k[10], const char *) -{ - if(k[0]==1 && k[1]==2 && k[2]==2) - mglprintf(out,1024,L"%s->Import(%s, %s, %g, %g);", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), k[3]==3?a[3].v:0, k[4]==3?a[4].v:1); + int res=0; + if(!strcmp(k,"dss")) a[0].d->Import(a[1].s.c_str(), a[2].s.c_str()); + else if(!strcmp(k,"dssnn")) a[0].d->Import(a[1].s.c_str(), a[2].s.c_str(), a[3].v,a[4].v); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_export(mglGraph *, long , mglArg *a, int k[10], const char *) -{ - if(k[0]==1 && k[1]==2 && k[2]==2) - a[0].d->Export(a[1].s.c_str(), a[2].s.c_str(), k[3]==3?a[3].v:0, k[4]==3?a[4].v:1); - else return 1; - return 0; -} -void mglc_export(wchar_t out[1024], long , mglArg *a, int k[10], const char *) +int mgls_export(mglGraph *, long , mglArg *a, const char *k, const char *) { - if(k[0]==1 && k[1]==2 && k[2]==2) - mglprintf(out,1024,L"%s->Export(%s, %s, %g, %g);", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), k[3]==3?a[3].v:0, k[4]==3?a[4].v:1); + int res=0; + if(!strcmp(k,"dss")) a[0].d->Export(a[1].s.c_str(), a[2].s.c_str()); + else if(!strcmp(k,"dssnn")) a[0].d->Export(a[1].s.c_str(), a[2].s.c_str(), a[3].v,a[4].v); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_write(mglGraph *gr, long , mglArg *a, int k[10], const char *) +int mgls_write(mglGraph *gr, long , mglArg *a, const char *k, const char *) { - gr->WriteFrame(k[0]==2?a[0].s.c_str():"", "MathGL"); - return 0; -} -void mglc_write(wchar_t out[1024], long , mglArg *a, int k[10], const char *) -{ - mglprintf(out,1024,L"gr->WriteFrame(\"%s\", \"MathGL\");", k[0]==2?a[0].s.c_str():""); + int res=0; + if(!strcmp(k,"")) gr->WriteFrame("", "MathGL"); + else if(!strcmp(k,"s")) gr->WriteFrame(a[0].s.c_str(), "MathGL"); + return res; } //----------------------------------------------------------------------------- -int mgls_region(mglGraph *gr, long , mglArg *a, int k[10], const char *opt) -{ - if(k[0]==1 && k[1]==1 && k[2]==1) - gr->Region(*(a[0].d),*(a[1].d),*(a[2].d),k[3]==2?a[3].s.c_str():"",opt); - else if(k[0]==1 && k[1]==1) - gr->Region(*(a[0].d),*(a[1].d),k[2]==2?a[2].s.c_str():"",opt); - else return 1; - return 0; -} -void mglc_region(wchar_t out[1024], long , mglArg *a, int k[10], const char *opt) +int mgls_region(mglGraph *gr, long , mglArg *a, const char *k, const char *opt) { - if(k[0]==1 && k[1]==1 && k[2]==1) - mglprintf(out,1024,L"gr->Region(%s, %s, %s, \"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), k[3]==2?a[3].s.c_str():"",opt); - else if(k[0]==1 && k[1]==1) - mglprintf(out,1024,L"gr->Region(%s, %s, \"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(), k[2]==2?a[2].s.c_str():"",opt); + int res=0; + if(!strcmp(k,"dd")) gr->Region(*(a[0].d),*(a[1].d),"",opt); + else if(!strcmp(k,"dds")) gr->Region(*(a[0].d),*(a[1].d),a[2].s.c_str(),opt); + else if(!strcmp(k,"ddd")) gr->Region(*(a[0].d),*(a[1].d),*(a[2].d),"",opt); + else if(!strcmp(k,"ddds")) gr->Region(*(a[0].d),*(a[1].d),*(a[2].d),a[3].s.c_str(),opt); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_envelop(mglGraph *, long , mglArg *a, int k[10], const char *) +int mgls_envelop(mglGraph *, long , mglArg *a, const char *k, const char *) { - if(k[0]==1) a[0].d->Envelop(k[1]==2 ? a[1].s.c_str()[0] : 'x'); - else return 1; - return 0; -} -void mglc_envelop(wchar_t out[1024], long , mglArg *a, int k[10], const char *) -{ - if(k[0]==1) mglprintf(out,1024,L"%s.Envelop('%c');",a[0].s.c_str(), k[1]==2?a[1].s.c_str()[0]:'x'); + int res=0; + if(!strcmp(k,"d")) a[0].d->Envelop(); + else if(!strcmp(k,"ds")) a[0].d->Envelop(a[1].s.c_str()[0]); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_sew(mglGraph *, long , mglArg *a, int k[10], const char *) +int mgls_sew(mglGraph *, long , mglArg *a, const char *k, const char *) { - if(k[0]==1) a[0].d->Sew(k[1]==2?a[1].s.c_str():"xyz", k[2]==3 ? a[2].v : 2*M_PI); - else return 1; - return 0; -} -void mglc_sew(wchar_t out[1024], long , mglArg *a, int k[10], const char *) -{ - if(k[0]==1) mglprintf(out,1024,L"%s.Sew(\"%s\", %g);", a[0].s.c_str(), k[1]==2?a[1].s.c_str():"xyz", k[2]==3 ? a[2].v : 2*M_PI); + int res=0; + if(!strcmp(k,"d")) a[0].d->Sew(); + else if(!strcmp(k,"ds")) a[0].d->Sew(a[1].s.c_str()); + else if(!strcmp(k,"dsn")) a[0].d->Sew(a[1].s.c_str(), a[2].v); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_evaluate(mglGraph *, long , mglArg *a, int k[10], const char *) -{ - if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==1 && k[4]==1) - *(a[0].d) = a[1].d->Evaluate(*(a[2].d), *(a[3].d), *(a[4].d), k[5]!=3 || a[5].v!=0); - else if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==1) - *(a[0].d) = a[1].d->Evaluate(*(a[2].d), *(a[3].d), k[4]!=3 || a[4].v!=0); - else if(k[0]==1 && k[1]==1 && k[2]==1) - *(a[0].d) = a[1].d->Evaluate(*(a[2].d), k[3]!=3 || a[3].v!=0); - else return 1; - return 0; -} -void mglc_evaluate(wchar_t out[1024], long , mglArg *a, int k[10], const char *) +int mgls_evaluate(mglGraph *, long , mglArg *a, const char *k, const char *) { - if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==1 && k[4]==1) - mglprintf(out,1024,L"%s=%s.Evaluate(%s, %s, %s, %d);", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), a[3].s.c_str(), a[4].s.c_str(), k[5]!=3 || a[5].v!=0); - else if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==1) - mglprintf(out,1024,L"%s=%s.Evaluate(%s, %s, %d);", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), a[3].s.c_str(), k[4]!=3 || a[4].v!=0); - else if(k[0]==1 && k[1]==1 && k[2]==1) - mglprintf(out,1024,L"%s=%s.Evaluate(%s, %d);", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), k[3]!=3 || a[3].v!=0); + int res=0; + if(!strcmp(k,"ddd")) *(a[0].d) = a[1].d->Evaluate(*(a[2].d)); + else if(!strcmp(k,"dddn")) *(a[0].d) = a[1].d->Evaluate(*(a[2].d), a[3].v!=0); + else if(!strcmp(k,"dddd")) *(a[0].d) = a[1].d->Evaluate(*(a[2].d), *(a[3].d)); + else if(!strcmp(k,"ddddn")) *(a[0].d) = a[1].d->Evaluate(*(a[2].d), *(a[3].d), a[4].v!=0); + else if(!strcmp(k,"ddddd")) *(a[0].d) = a[1].d->Evaluate(*(a[2].d), *(a[3].d), *(a[4].d)); + else if(!strcmp(k,"dddddn"))*(a[0].d) = a[1].d->Evaluate(*(a[2].d), *(a[3].d), *(a[4].d), a[5].v!=0); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_solve(mglGraph *, long , mglArg *a, int k[10], const char *) +int mgls_solve(mglGraph *, long , mglArg *a, const char *k, const char *) { - if(k[0]==1 && k[1]==1 && k[2]==3 && k[3]==2 && k[4]==1) - *(a[0].d) = a[1].d->Solve(a[2].v, a[3].s[0], *(a[4].d), k[5]!=3 || a[5].v!=0); - else if(k[0]==1 && k[1]==1 && k[2]==3 && k[3]==2) - *(a[0].d) = a[1].d->Solve(a[2].v, a[3].s[0], k[4]!=3 || a[4].v!=0); - else return 1; - return 0; -} -void mglc_solve(wchar_t out[1024], long , mglArg *a, int k[10], const char *) -{ - if(k[0]==1 && k[1]==1 && k[2]==3 && k[3]==2 && k[4]==1) - mglprintf(out,1024,L"%s=%s.Solve(%g, '%c', %s, %d);", a[0].s.c_str(), a[1].s.c_str(), a[2].v, a[3].s[0], a[4].s.c_str(), k[5]!=3 || a[5].v!=0); - else if(k[0]==1 && k[1]==1 && k[2]==3 && k[3]==2) - mglprintf(out,1024,L"%s=%s.Solve(%g, '%c', %d);", a[0].s.c_str(), a[1].s.c_str(), a[2].v, a[3].s[0], k[4]!=3 || a[4].v!=0); + int res=0; + if(!strcmp(k,"ddns")) *(a[0].d) = a[1].d->Solve(a[2].v, a[3].s[0]); + else if(!strcmp(k,"ddnsn")) *(a[0].d) = a[1].d->Solve(a[2].v, a[3].s[0], a[4].v!=0); + else if(!strcmp(k,"ddnsd")) *(a[0].d) = a[1].d->Solve(a[2].v, a[3].s[0], *(a[4].d)); + else if(!strcmp(k,"ddnsdn"))*(a[0].d) = a[1].d->Solve(a[2].v, a[3].s[0], *(a[4].d), a[5].v!=0); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_put(mglGraph *, long , mglArg *a, int k[10], const char *) -{ - if(k[1]==3 && k[0]==1) - a[0].d->Put(a[1].v, k[2]==3?iint(a[2].v):-1, k[3]==3?iint(a[3].v):-1, k[4]==3?iint(a[4].v):-1); - else if(k[0]==1 && k[1]==1) - a[0].d->Put(*(a[1].d), k[2]==3?iint(a[2].v):-1, k[3]==3?iint(a[3].v):-1, k[4]==3?iint(a[4].v):-1); - else return 1; - return 0; -} -void mglc_put(wchar_t out[1024], long , mglArg *a, int k[10], const char *) +int mgls_put(mglGraph *, long , mglArg *a, const char *k, const char *) { - if(k[0]==1 && k[1]==3) - mglprintf(out,1024,L"%s.Put(%g, %d, %d, %d);", a[0].s.c_str(), a[1].v, k[2]==3?iint(a[2].v):-1, k[3]==3?iint(a[3].v):-1, k[4]==3?iint(a[4].v):-1); - else if(k[0]==1 && k[1]==1) - mglprintf(out,1024,L"%s.Put(%s, %d, %d, %d);", a[0].s.c_str(), a[1].s.c_str(), k[2]==3?iint(a[2].v):-1, k[3]==3?iint(a[3].v):-1, k[4]==3?iint(a[4].v):-1); + int res=0; + if(!strcmp(k,"dn")) a[0].d->Put(a[1].v); + else if(!strcmp(k,"dnn")) a[0].d->Put(a[1].v, iint(a[2].v)); + else if(!strcmp(k,"dnnn")) a[0].d->Put(a[1].v, iint(a[2].v),iint(a[3].v)); + else if(!strcmp(k,"dnnnn")) a[0].d->Put(a[1].v, iint(a[2].v),iint(a[3].v),iint(a[4].v)); + else if(!strcmp(k,"dd")) a[0].d->Put(*(a[1].d)); + else if(!strcmp(k,"ddn")) a[0].d->Put(*(a[1].d), iint(a[2].v)); + else if(!strcmp(k,"ddnn")) a[0].d->Put(*(a[1].d), iint(a[2].v),iint(a[3].v)); + else if(!strcmp(k,"ddnnn")) a[0].d->Put(*(a[1].d), iint(a[2].v),iint(a[3].v),iint(a[4].v)); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_palette(mglGraph *gr, long , mglArg *a, int k[10], const char *) +int mgls_palette(mglGraph *gr, long , mglArg *a, const char *k, const char *) { - if(k[0]==2) gr->SetPalette(a[0].s.c_str()); - else return 1; - return 0; -} -void mglc_palette(wchar_t out[1024], long , mglArg *a, int k[10], const char *) -{ - if(k[0]==2) mglprintf(out,1024,L"gr->SetPalette(\"%s\");", a[0].s.c_str()); + int res=0; + if(!strcmp(k,"s")) gr->SetPalette(a[0].s.c_str()); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_combine(mglGraph *, long , mglArg *a, int k[10], const char *) -{ - if(k[0]==1 && k[1]==1 && k[2]==1) - *(a[0].d) = a[1].d->Combine(*(a[2].d)); - else return 1; - return 0; -} -void mglc_combine(wchar_t out[1024], long , mglArg *a, int k[10], const char *) +int mgls_combine(mglGraph *, long , mglArg *a, const char *k, const char *) { - if(k[0]==1 && k[1]==1 && k[2]==1) - mglprintf(out,1024,L"%s = %s.Combine(%s);",a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str()); + int res=0; + if(!strcmp(k,"ddd")) *(a[0].d) = a[1].d->Combine(*(a[2].d)); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_pde(mglGraph *gr, long , mglArg *a, int k[10], const char *opt) +int mgls_pde(mglGraph *gr, long , mglArg *a, const char *k, const char *opt) { - if(k[0]==1 && k[1]==2 && k[2]==1 && k[3]==1) - *(a[0].d) = gr->PDE(a[1].s.c_str(), *(a[2].d), *(a[3].d), k[4]==3?a[4].v:0.1, k[5]==3?a[5].v:100,opt); - else return 1; - return 0; -} -void mglc_pde(wchar_t out[1024], long , mglArg *a, int k[10], const char *opt) -{ - if(k[0]==1 && k[1]==2 && k[2]==1 && k[3]==1) - mglprintf(out,1024,L"%s = gr->PDE(\"%s\", %s, %s, %g, %g, \"%s\");",a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), a[3].s.c_str(), k[4]==3?a[4].v:0.1, k[5]==3?a[5].v:100,opt); + int res=0; + if(!strcmp(k,"dsdd")) + *(a[0].d) = gr->PDE(a[1].s.c_str(), *(a[2].d), *(a[3].d), 0.1,100,opt); + else if(!strcmp(k,"dsddn")) + *(a[0].d) = gr->PDE(a[1].s.c_str(), *(a[2].d), *(a[3].d), a[4].v,100,opt); + else if(!strcmp(k,"dsddnn")) + *(a[0].d) = gr->PDE(a[1].s.c_str(), *(a[2].d), *(a[3].d), a[4].v,a[5].v,opt); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_qo2d(mglGraph *, long , mglArg *a, int k[10], const char *) -{ - if(k[0]==1 && k[1]==2 && k[2]==1 && k[3]==1 && k[4]==1) - *(a[0].d) = mglData(true, mgl_qo2d_solve(a[1].s.c_str(), a[2].d, a[3].d, a[4].d, k[5]==3?a[5].v:1, k[6]==3?a[6].v:100, k[7]==1?a[7].d:0, k[8]==1?a[8].d:0)); - else return 1; - return 0; -} -void mglc_qo2d(wchar_t out[1024], long , mglArg *a, int k[10], const char *) +int mgls_qo2d(mglGraph *, long , mglArg *a, const char *k, const char *) { - if(k[0]==1 && k[1]==2 && k[2]==1 && k[3]==1) - mglprintf(out,1024,L"%s = mglQO2d(\"%s\", %s, %s, %s, %g, %g, %s, %s);",a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), a[3].s.c_str(), a[4].s.c_str(), k[5]==3?a[5].v:1, k[6]==3?a[6].v:100, k[7]==1?a[7].s.c_str():"NULL", k[8]==1?a[8].s.c_str():"NULL"); + int res=0; + if(!strcmp(k,"dsddd")) + *(a[0].d) = mglData(true, mgl_qo2d_solve(a[1].s.c_str(), a[2].d, a[3].d, a[4].d, 1,100, 0,0)); + else if(!strcmp(k,"dsdddn")) + *(a[0].d) = mglData(true, mgl_qo2d_solve(a[1].s.c_str(), a[2].d, a[3].d, a[4].d, a[5].v,100, 0,0)); + else if(!strcmp(k,"dsdddnn")) + *(a[0].d) = mglData(true, mgl_qo2d_solve(a[1].s.c_str(), a[2].d, a[3].d, a[4].d, a[5].v,a[6].v, 0,0)); + else if(!strcmp(k,"dsdddnndd")) + *(a[0].d) = mglData(true, mgl_qo2d_solve(a[1].s.c_str(), a[2].d, a[3].d, a[4].d, a[5].v,a[6].v, a[7].d,a[8].d)); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_ray(mglGraph *, long , mglArg *a, int k[10], const char *) -{ - if(k[0]==1 && k[1]==2 && k[2]==3 && k[3]==3 && k[4]==3 && k[5]==3 && k[6]==3 && k[7]==3) - *(a[0].d) = mglRay(a[1].s.c_str(), mglPoint(a[2].v, a[3].v, a[4].v), mglPoint(a[5].v, a[6].v, a[7].v), k[8]==3?a[8].v:0.1, k[9]==3?a[9].v:10); - else return 1; - return 0; -} -void mglc_ray(wchar_t out[1024], long , mglArg *a, int k[10], const char *) +int mgls_ray(mglGraph *, long , mglArg *a, const char *k, const char *) { - if(k[0]==1 && k[1]==2 && k[2]==3 && k[3]==3 && k[4]==3 && k[5]==3 && k[6]==3 && k[7]==3) - mglprintf(out,1024,L"%s = mglRay(\"%s\", mglPoint(%g, %g, %g), mglPoint(%g, %g, %g), %g, %g);",a[0].s.c_str(), a[1].s.c_str(), a[2].v, a[3].v, a[4].v, a[5].v, a[6].v, a[7].v, k[8]==3?a[8].v:0.1, k[9]==3?a[9].v:10); + int res=0; + if(!strcmp(k,"dsnnnn")) + *(a[0].d) = mglRay(a[1].s.c_str(), mglPoint(a[2].v, a[3].v), mglPoint(a[4].v, a[5].v)); + else if(!strcmp(k,"dsnnnnnn")) + *(a[0].d) = mglRay(a[1].s.c_str(), mglPoint(a[2].v, a[3].v, a[4].v), mglPoint(a[5].v, a[6].v, a[7].v)); + else if(!strcmp(k,"dsnnnnnnn")) + *(a[0].d) = mglRay(a[1].s.c_str(), mglPoint(a[2].v, a[3].v, a[4].v), mglPoint(a[5].v, a[6].v, a[7].v), a[8].v); + else if(!strcmp(k,"dsnnnnnnnn")) + *(a[0].d) = mglRay(a[1].s.c_str(), mglPoint(a[2].v, a[3].v, a[4].v), mglPoint(a[5].v, a[6].v, a[7].v), a[8].v,a[9].v); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_jacobian(mglGraph *, long , mglArg *a, int k[10], const char *) -{ - if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==1) - *(a[0].d) = mglJacobian(*(a[1].d), *(a[2].d), *(a[3].d)); - else if(k[0]==1 && k[1]==1 && k[2]==1) - *(a[0].d) = mglJacobian(*(a[1].d), *(a[2].d)); - else return 1; - return 0; -} -void mglc_jacobian(wchar_t out[1024], long , mglArg *a, int k[10], const char *) +int mgls_jacobian(mglGraph *, long , mglArg *a, const char *k, const char *) { - if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==1) - mglprintf(out,1024,L"%s = mglJacobian(%s, %s, %s);", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), a[3].s.c_str()); - else if(k[0]==1 && k[1]==1 && k[2]==1) - mglprintf(out,1024,L"%s = mglJacobian(%s, %s);", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str()); + int res=0; + if(!strcmp(k,"ddd")) *(a[0].d) = mglJacobian(*(a[1].d), *(a[2].d)); + else if(!strcmp(k,"dddd")) *(a[0].d) = mglJacobian(*(a[1].d), *(a[2].d), *(a[3].d)); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_tens(mglGraph *gr, long , mglArg *a, int k[10], const char *opt) -{ - if(k[0]!=1 || k[1]!=1) return 1; - else if(k[2]!=1) gr->Tens(*(a[0].d),*(a[1].d), k[2]==2?a[2].s.c_str():"",opt); - else if(k[3]!=1) gr->Tens(*(a[0].d),*(a[1].d),*(a[2].d), k[3]==2?a[3].s.c_str():"",opt); - else gr->Tens(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d), k[4]==2?a[4].s.c_str():"",opt); - return 0; -} -void mglc_tens(wchar_t out[1024], long , mglArg *a, int k[10], const char *opt) +int mgls_tens(mglGraph *gr, long , mglArg *a, const char *k, const char *opt) { - if(k[0]!=1 || k[1]!=1) return; - else if(k[2]!=1) - mglprintf(out,1024,L"gr->Tens(%s, %s, \"%s\", \"%s\");",a[0].s.c_str(), a[1].s.c_str(), k[2]==2?a[2].s.c_str():"",opt); - else if(k[3]!=1) - mglprintf(out,1024,L"gr->Tens(%s, %s, %s, \"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), k[3]==2?a[3].s.c_str():"",opt); - else mglprintf(out,1024,L"gr->Plot(%s, %s, %s, %s, \"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), a[3].s.c_str(), k[4]==2?a[4].s.c_str():"",opt); + int res=0; + if(!strcmp(k,"dd")) gr->Tens(*(a[0].d),*(a[1].d), "",opt); + else if(!strcmp(k,"dds")) gr->Tens(*(a[0].d),*(a[1].d), a[2].s.c_str(),opt); + else if(!strcmp(k,"ddd")) gr->Tens(*(a[0].d),*(a[1].d),*(a[2].d), "",opt); + else if(!strcmp(k,"ddds")) gr->Tens(*(a[0].d),*(a[1].d),*(a[2].d), a[3].s.c_str(),opt); + else if(!strcmp(k,"dddd")) gr->Tens(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d), "",opt); + else if(!strcmp(k,"dddds")) gr->Tens(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d), a[4].s.c_str(),opt); + return res; } //----------------------------------------------------------------------------- -int mgls_ticklen(mglGraph *gr, long , mglArg *a, int k[10], const char *) +int mgls_ticklen(mglGraph *gr, long , mglArg *a, const char *k, const char *) { - if(k[0]==3) gr->SetTickLen(a[0].v, k[1]==3?a[1].v:1); else return 1; - return 0; + int res=0; + if(!strcmp(k,"n")) gr->SetTickLen(a[0].v); + else if(!strcmp(k,"nn")) gr->SetTickLen(a[0].v, a[1].v); + else res = 1; return res; } -void mglc_ticklen(wchar_t out[1024], long , mglArg *a, int k[10], const char *) -{ if(k[0]==3) mglprintf(out,1024,L"gr->SetTickLen(%g,%g);", a[0].v, k[1]==3?a[1].v:1); } //----------------------------------------------------------------------------- -int mgls_axisstl(mglGraph *gr, long , mglArg *a, int k[10], const char *) +int mgls_axisstl(mglGraph *gr, long , mglArg *a, const char *k, const char *) { - if(k[0]==2) - gr->SetAxisStl(a[0].s.c_str(), k[1]==2?a[1].s.c_str():"", k[2]==2?a[2].s.c_str():""); - else return 1; - return 0; + int res=0; + if(!strcmp(k,"")) gr->SetAxisStl(); + else if(!strcmp(k,"s")) gr->SetAxisStl(a[0].s.c_str()); + else if(!strcmp(k,"ss")) gr->SetAxisStl(a[0].s.c_str(), a[1].s.c_str()); + else if(!strcmp(k,"sss")) gr->SetAxisStl(a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str()); + else res = 1; return res; } -void mglc_axisstl(wchar_t out[1024], long , mglArg *a, int k[10], const char *) -{ if(k[0]==2) mglprintf(out,1024,L"gr->SetAxisStl(\"%s\",\"%s\",\"%s\");", a[0].s.c_str(), k[1]==2?a[1].s.c_str():"", k[2]==2?a[2].s.c_str():""); } //----------------------------------------------------------------------------- -int mgls_ranges(mglGraph *gr, long n, mglArg *a, int k[10], const char *) +int mgls_ranges(mglGraph *gr, long n, mglArg *a, const char *k, const char *) { - register int i; - if(n==6) - { - bool ok=true; - for(i=0;i<6;i++) if(k[i]!=3) ok = false; - if(ok) gr->SetRanges(a[0].v,a[1].v,a[2].v, a[3].v,a[4].v,a[5].v); - else return 1; - } - else if(k[0]==3 && k[1]==3 && k[2]==3 && k[3]==3) - gr->SetRanges(a[0].v,a[1].v, a[2].v,a[3].v); - else if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==1) - gr->SetRanges(*(a[0].d),*(a[1].d), *(a[2].d),*(a[3].d)); - else if(k[0]==1 && k[1]==1 && k[2]==1) - gr->SetRanges(*(a[0].d),*(a[1].d), *(a[2].d)); - else if(k[0]==1 && k[1]==1) - gr->SetRanges(*(a[0].d),*(a[1].d)); - else return 1; - return 0; -} -void mglc_ranges(wchar_t out[1024], long n, mglArg *a, int k[10], const char *) -{ - register int i; - if(n==6) - { - bool ok=true; - for(i=0;i<6;i++) if(k[i]!=3) ok = false; - if(ok) mglprintf(out,1024,L"gr->SetRanges(%g, %g, %g, %g, %g, %g);", a[0].v, a[1].v, a[2].v, a[3].v, a[4].v, a[5].v); - } - else if(k[0]==3 && k[1]==3 && k[2]==3 && k[3]==3) - mglprintf(out,1024,L"gr->SetRanges(%g, %g, %g, %g);", a[0].v, a[1].v, a[2].v, a[3].v); - else if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==1) - mglprintf(out,1024,L"gr->SetRanges(%s, %s, %s, %s);", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), a[3].s.c_str()); - else if(k[0]==1 && k[1]==1 && k[2]==1) - mglprintf(out,1024,L"gr->SetRanges(%s, %s, %s);", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str()); - else if(k[0]==1 && k[1]==1) - mglprintf(out,1024,L"gr->SetRanges(%s, %s);", a[0].s.c_str(), a[1].s.c_str()); + int res=0; + if(!strcmp(k,"nnnn")) gr->SetRanges(a[0].v,a[1].v, a[2].v,a[3].v); + else if(!strcmp(k,"nnnnnn"))gr->SetRanges(a[0].v,a[1].v,a[2].v, a[3].v,a[4].v,a[5].v); + else if(!strcmp(k,"dd")) gr->SetRanges(*(a[0].d),*(a[1].d)); + else if(!strcmp(k,"ddd")) gr->SetRanges(*(a[0].d),*(a[1].d), *(a[2].d)); + else if(!strcmp(k,"dddd")) gr->SetRanges(*(a[0].d),*(a[1].d), *(a[2].d),*(a[3].d)); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_adjust(mglGraph *gr, long , mglArg *a, int k[10], const char *) -{ gr->Adjust(k[0]==2?a[0].s.c_str():"xyzc"); return 0; } -void mglc_adjust(wchar_t out[1024], long , mglArg *a, int k[10], const char *) -{ mglprintf(out,1024,L"gr->Adjust(\"%s\");",k[0]==2?a[0].s.c_str():"xyzc"); } -//----------------------------------------------------------------------------- -int mgls_insert(mglGraph *, long , mglArg *a, int k[10], const char *) +int mgls_adjust(mglGraph *gr, long , mglArg *a, const char *k, const char *) { - if(k[0]==1 && k[1]==2) a[0].d->Insert(a[1].s.c_str()[0], k[2]==3 ? iint(a[2].v):0, k[3]==3 ? iint(a[3].v):1); - else return 1; - return 0; -} -void mglc_insert(wchar_t out[1024], long , mglArg *a, int k[10], const char *) -{ - if(k[0]==1 && k[1]==2) mglprintf(out,1024,L"%s.Insert('%c', %d, %d);", - a[0].s.c_str(), a[1].s.c_str()[0], k[2]==3 ? iint(a[2].v):0, k[3]==3 ? iint(a[3].v):1); + int res=0; + if(!strcmp(k,"")) gr->Adjust(); + else if(!strcmp(k,"s")) gr->Adjust(a[0].s.c_str()); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_delete(mglGraph *, long , mglArg *a, int k[10], const char *) +int mgls_insert(mglGraph *, long , mglArg *a, const char *k, const char *) { - if(k[0]==1 && k[1]==2) a[0].d->Delete(a[1].s.c_str()[0], k[2]==3 ? iint(a[2].v):0, k[3]==3 ? iint(a[3].v):1); - else return 1; - return 0; -} -void mglc_delete(wchar_t out[1024], long , mglArg *a, int k[10], const char *) -{ - if(k[0]==1 && k[1]==2) mglprintf(out,1024,L"%s.Delete('%c', %d, %d);", - a[0].s.c_str(), a[1].s.c_str()[0], k[2]==3 ? iint(a[2].v):0, k[3]==3 ? iint(a[3].v):1); + int res=0; + if(!strcmp(k,"ds")) a[0].d->Insert(a[1].s.c_str()[0]); + else if(!strcmp(k,"dsn")) a[0].d->Insert(a[1].s.c_str()[0], iint(a[2].v)); + else if(!strcmp(k,"dsnn")) a[0].d->Insert(a[1].s.c_str()[0], iint(a[2].v), iint(a[3].v)); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_roll(mglGraph *, long , mglArg *a, int k[10], const char *) -{ - if(k[0]==1 && k[1]==2 && k[2]==3) a[0].d->Roll(a[1].s.c_str()[0], iint(a[2].v)); - else return 1; - return 0; -} -void mglc_roll(wchar_t out[1024], long , mglArg *a, int k[10], const char *) +int mgls_delete(mglGraph *, long , mglArg *a, const char *k, const char *) { - if(k[0]==1 && k[1]==2 && k[2]==3) mglprintf(out,1024,L"%s.Roll('%c', %d);", - a[0].s.c_str(), a[1].s.c_str()[0], iint(a[2].v)); + int res=0; + if(!strcmp(k,"ds")) a[0].d->Delete(a[1].s.c_str()[0]); + else if(!strcmp(k,"dsn")) a[0].d->Delete(a[1].s.c_str()[0], iint(a[2].v)); + else if(!strcmp(k,"dsnn")) a[0].d->Delete(a[1].s.c_str()[0], iint(a[2].v), iint(a[3].v)); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_datagrid(mglGraph *gr, long , mglArg *a, int k[10], const char *opt) +int mgls_roll(mglGraph *, long , mglArg *a, const char *k, const char *) { - if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==1) - gr->DataGrid(*(a[0].d), *(a[1].d), *(a[2].d), *(a[3].d),opt); - else return 1; - return 0; + int res=0; + if(!strcmp(k,"dsn")) a[0].d->Roll(a[1].s.c_str()[0], iint(a[2].v)); + else res = 1; return res; } -void mglc_datagrid(wchar_t out[1024], long , mglArg *a, int k[10], const char *opt) +//----------------------------------------------------------------------------- +int mgls_datagrid(mglGraph *gr, long , mglArg *a, const char *k, const char *opt) { - if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==1) - mglprintf(out,1024,L"gr->DataGrid(%s, %s, %s, %s, \"%s\");",a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), a[3].s.c_str(),opt); + int res=0; + if(!strcmp(k,"dddd")) gr->DataGrid(*(a[0].d), *(a[1].d), *(a[2].d), *(a[3].d),opt); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_triangulate(mglGraph *, long , mglArg *a, int k[10], const char *) +int mgls_triangulate(mglGraph *, long , mglArg *a, const char *k, const char *) { - if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==1) - *(a[0].d) = mglTriangulation(*(a[1].d), *(a[2].d), *(a[3].d)); - else if(k[0]==1 && k[1]==1 && k[2]==1) + int res=0; + if(!strcmp(k,"ddd")) *(a[0].d) = mglTriangulation(*(a[1].d), *(a[2].d)); - else return 1; - return 0; -} -void mglc_triangulate(wchar_t out[1024], long , mglArg *a, int k[10], const char *) -{ - if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==1) - mglprintf(out,1024,L"%s = mglTriangulation(%s, %s, %s);",a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), a[3].s.c_str()); - else if(k[0]==1 && k[1]==1 && k[2]==1) - mglprintf(out,1024,L"%s = mglTriangulation(%s, %s);",a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str()); + else if(!strcmp(k,"dddd")) + *(a[0].d) = mglTriangulation(*(a[1].d), *(a[2].d), *(a[3].d)); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_view(mglGraph *gr, long , mglArg *a, int k[10], const char *) -{ - if(k[0]==3 && k[1]==3) - gr->View(a[0].v, a[1].v, k[2]==3?a[2].v:0); - else return 1; - return 0; -} -void mglc_view(wchar_t out[1024], long , mglArg *a, int k[10], const char *) +int mgls_view(mglGraph *gr, long , mglArg *a, const char *k, const char *) { - if(k[0]==3 && k[1]==3) - mglprintf(out,1024,L"gr->View(%g, %g, %g);", a[0].v, a[1].v, k[2]==3?a[2].v:0); + int res=0; + if(!strcmp(k,"nn")) gr->View(a[0].v, a[1].v); + else if(!strcmp(k,"nnn")) gr->View(a[0].v, a[1].v, a[2].v); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_zoom(mglGraph *gr, long , mglArg *a, int k[10], const char *) +int mgls_zoom(mglGraph *gr, long , mglArg *a, const char *k, const char *) { - if(k[0]==3 && k[1]==3 && k[2]==3 && k[3]==3) - gr->Zoom(a[0].v, a[1].v, a[2].v, a[3].v); - else return 1; - return 0; -} -void mglc_zoom(wchar_t out[1024], long , mglArg *a, int k[10], const char *) -{ - if(k[0]==3 && k[1]==3 && k[2]==3 && k[3]==3) - mglprintf(out,1024,L"gr->Zoom(%g, %g, %g, %g);", a[0].v, a[1].v, a[2].v, a[3].v); + int res=0; + if(!strcmp(k,"nnnn")) gr->Zoom(a[0].v, a[1].v, a[2].v, a[3].v); + else res = 1; return res; } //----------------------------------------------------------------------------- -int mgls_zoomaxis(mglGraph *gr, long , mglArg *a, int k[10], const char *) -{ - int i; - for(i=0;i<8;i++) if(k[i]!=3) break; - if(i==8) gr->ZoomAxis(mglPoint(a[0].v, a[1].v, a[2].v, a[3].v), mglPoint(a[4].v, a[5].v, a[6].v, a[7].v)); - else if(i==6) gr->ZoomAxis(mglPoint(a[0].v, a[1].v, a[2].v), mglPoint(a[3].v, a[4].v, a[5].v)); - else if(i==4) gr->ZoomAxis(mglPoint(a[0].v, a[1].v), mglPoint(a[2].v, a[3].v)); - else if(i==2) gr->ZoomAxis(mglPoint(a[0].v), mglPoint(a[1].v)); - else return 1; - return 0; -} -void mglc_zoomaxis(wchar_t out[1024], long , mglArg *a, int k[10], const char *) +int mgls_zoomaxis(mglGraph *gr, long , mglArg *a, const char *k, const char *) { - int i; - for(i=0;i<8;i++) if(k[i]!=3) break; - if(i==8) - mglprintf(out,1024,L"gr->ZoomAxis(mglPoint(%g, %g, %g, %g),mglPoint(%g, %g, %g, %g));", a[0].v, a[1].v, a[2].v, a[3].v, a[4].v, a[5].v, a[6].v, a[7].v); - else if(i==6) - mglprintf(out,1024,L"gr->ZoomAxis(mglPoint(%g, %g, %g),mglPoint(%g, %g, %g));", a[0].v, a[1].v, a[2].v, a[3].v, a[4].v, a[5].v); - else if(i==4) - mglprintf(out,1024,L"gr->ZoomAxis(mglPoint(%g, %g),mglPoint(%g, %g));", a[0].v, a[1].v, a[2].v, a[3].v); - else if(i==2) - mglprintf(out,1024,L"gr->ZoomAxis(mglPoint(%g),mglPoint(%g));", a[0].v, a[1].v); + int res=0; + if(!strcmp(k,"nn")) gr->ZoomAxis(mglPoint(a[0].v), mglPoint(a[1].v)); + else if(!strcmp(k,"nnnn")) gr->ZoomAxis(mglPoint(a[0].v, a[1].v), mglPoint(a[2].v, a[3].v)); + else if(!strcmp(k,"nnnnnn")) gr->ZoomAxis(mglPoint(a[0].v, a[1].v, a[2].v), mglPoint(a[3].v, a[4].v, a[5].v)); + else if(!strcmp(k,"nnnnnnnn")) gr->ZoomAxis(mglPoint(a[0].v, a[1].v, a[2].v, a[3].v), mglPoint(a[4].v, a[5].v, a[6].v, a[7].v)); + else res = 1; return res; } //----------------------------------------------------------------------------- mglCommand mgls_base_cmd[] = { - {"addlegend","Add legend entry","addlegend 'txt' 'fmt'", mgls_addlegend, mglc_addlegend,15}, - {"addto","Add data or number","addto Var Dat|Var num", mgls_addto, mglc_addto,3}, - {"adjust","Adjust ticks for best view","adjust ['dir']", mgls_adjust, mglc_adjust,14}, - {"alpha","Switch on/off transparency","alpha [val]", mgls_alpha, mglc_alpha,2}, - {"alphadef","Set default transparency","alphadef val", mgls_alphadef, mglc_alphadef,2}, - {"ambient","Set ambient light brightness","ambient val", mgls_ambient, mglc_ambient,2}, - {"area","Draw area plot for 1D data","area Ydat ['fmt']|Xdat Ydat ['fmt']|Xdat Ydat Zdat ['fmt']", mgls_area, mglc_area,7}, - {"arrowsize","Set size of arrows","arrowsize val", mgls_arrowsize, mglc_arrowsize,2}, - {"ask","Define parameter from user input","ask $N 'question'", 0, 0, 6}, - {"aspect","Set aspect ration","aspect valx valy [valz]", mgls_aspect, mglc_aspect,5}, - {"axial","Draw surfaces of contour lines rotation","axial Zdat ['fmt' num]|Xdat Ydat Zdat ['fmt' num]", mgls_axial, mglc_axial,8}, - {"axis","Setup or draw axis","axis ['dir' 'fmt']|'fx' 'fy' 'fz' ['fc']|how", mgls_axis, mglc_axis,12}, - {"axisstl","Set axis and tick style","axisstl 'stl' ['sub']", mgls_axisstl, mglc_axisstl,14}, - {"ball","Draw point (ball)","ball posx posy ['fmt']|posx posy posz ['fmt']", mgls_ball, mglc_ball,13}, - {"barh","Draw horizontal bars for 1D data", "barh Ydat ['fmt' above]|Xdat Ydat ['fmt' above]", mgls_barh, mglc_barh,7}, - {"bars","Draw bars for 1D data","bars Ydat ['fmt' above]|Xdat Ydat ['fmt' above]|Xdat Ydat Zdat ['fmt' above]", mgls_bars, mglc_bars,7}, - {"barwidth","Set default bars width","barwidth val", mgls_barwidth, mglc_barwidth,2}, - {"beam","Draw quasioptical beam","beam Tr G1 G2 Adat r ['sch' flag num] ", mgls_beam, mglc_beam,9}, - {"belt","Draw belts","belt Zdat ['fmt']|Xdat Ydat Zdat ['fmt']", mgls_belt, mglc_belt,8}, - {"box","Draw bounding box","box ['fmt' ticks]", mgls_box, mglc_box,12}, - {"boxplot","Draw boxplot for 2D data","boxplot Ydat ['fmt']|Xdat Ydat ['fmt']", mgls_boxplot, mglc_boxplot,7}, - {"boxs","Draw boxes","boxs Zdat ['fmt']|Xdat Ydat Zdat ['fmt']", mgls_boxs, mglc_boxs,8}, - {"break","Break for-cycle","break", 0, 0, 6}, - {"call","Execute script in external file","call 'name' [args]", 0, 0, 6}, - {"candle","Draw candlestick chart","candle candle Vdat1 ['fmt']|Vdat1 Vdat2 ['fmt']|Vdat1 Ydat1 Ydat2 ['fmt']||Vdat1 Vdat2 Ydat1 Ydat2 ['fmt']|Xdat Vdat1 Vdat2 Ydat1 Ydat2 ['fmt']", mgls_candle, mglc_candle,7}, - {"chart","Draw chart","chart Dat ['fmt']", mgls_chart, mglc_chart,7}, - {"chdir","Change current directory","chdir 'path'", mgls_chdir, mglc_chdir,2}, - {"circle","Draw circle","circle x y r ['fmt']|x y z r ['fmt']", mgls_circle, mglc_circle,13}, - {"clean","Remove duplicate rows","clean Dat id", mgls_clean, mglc_clean,3}, - {"clearlegend","Clear legend antries","clearlegend", mgls_clearlegend, mglc_clearlegend,15}, - {"clf","Clear picture","clf", mgls_clf, mglc_clf,12}, - {"cloud","Draw cloud","cloud Adat ['fmt']|Xdat Ydat Zdat Adat ['fmt']", mgls_cloud, mglc_cloud,9}, - {"colorbar","Draw colorbar","colorbar ['fmt' pos]|Vdat ['fmt' pos]|'sch' pos x y [w h]|Vdat 'sch' pos x y [w h]", mgls_colorbar, mglc_colorbar,12}, - {"column","Get data column filled by formula on column ids","column Res Dat 'eq'", mgls_column, mglc_column,4}, - {"columnplot","Set position of plot inside cell of column", "columnplot num ind [d]", mgls_columnplot, mglc_columnplot,5}, - {"combine", "Direct multiplication of arrays", "combine Res Adat Bdat", mgls_combine, mglc_combine,4}, - {"cone","Draw cone","cone x1 y1 z1 x2 y2 z2 r1 [r2 'fmt' edge]", mgls_cone, mglc_cone,13}, - {"cones","Draw cones for 1D data","cones Ydat ['fmt' above]|Xdat Ydat ['fmt' above]|Xdat Ydat Zdat ['fmt' above]", mgls_cones, mglc_cones,7}, - {"cont","Draw contour lines","cont Zdat ['fmt' num zpos]|Vdat Zdat ['fmt' zpos]|Xdat Ydat Zdat ['fmt' num zpos]|Vdat Xdat Ydat Zdat ['fmt' zpos]", mgls_cont, mglc_cont,8}, - {"cont3","Draw contour lines for 3D data","cont3 Adat 'dir' [val 'fmt' num]|Vdat Adat 'dir' [val 'fmt']|Xdat Ydat Zdat Adat 'dir' [val 'fmt' num]|Vdat Xdat Ydat Zdar Adat 'dir' [val 'fmt']", mgls_cont3, mglc_cont3,9}, - {"contd","Draw solid contours with manual colors","contd Zdat ['fmt' num zpos]|Vdat Zdat ['fmt' zpos]|Xdat Ydat Zdat ['fmt' num zpos]|Vdat Xdat Ydat Zdat ['fmt' zpos]", mgls_contd, mglc_contd,8}, - {"contf","Draw solid contours","contf Zdat ['fmt' num zpos]|Vdat Zdat ['fmt' zpos]|Xdat Ydat Zdat ['fmt' num zpos]|Vdat Xdat Ydat Zdat ['fmt' zpos]", mgls_contf, mglc_contf,8}, - {"contf3","Draw solid contour lines for 3D data","contf3 Adat 'dir' [val 'fmt' num]|Vdat Adat 'dir' [val 'fmt']|Xdat Ydat Zdat Adat 'dir' [val 'fmt' num]|Vdat Xdat Ydat Zdar Adat 'dir' [val 'fmt']", mgls_contf3, mglc_contf3,9}, - {"contfx","Draw solid contour lines at x-slice (or x-plane)","contfx Dat ['fmt' pos num]", mgls_contfx, mglc_contfx,0}, - {"contfy","Draw solid contour lines at y-slice (or y-plane)","contfy Dat ['fmt' pos num]", mgls_contfy, mglc_contfy,0}, - {"contfz","Draw solid contour lines at z-slice (or z-plane)","contfz Dat ['fmt' pos num]", mgls_contfz, mglc_contfz,0}, - {"continue","Skip commands and iterate for-cycle again","continue", 0, 0, 6}, - {"contv","Draw contour tubes","contv Zdat ['fmt' num zpos]|Vdat Zdat ['fmt' zpos]|Xdat Ydat Zdat ['fmt' num zpos]|Vdat Xdat Ydat Zdat ['fmt' zpos]", mgls_contv, mglc_contv,0}, - {"contx","Draw contour lines at x-slice (or x-plane)","contx Dat ['fmt' pos num]", mgls_contx, mglc_contx,0}, - {"conty","Draw contour lines at y-slice (or y-plane)","conty Dat ['fmt' pos num]", mgls_conty, mglc_conty,0}, - {"contz","Draw contour lines at z-slice (or z-plane)","contz Dat ['fmt' pos num]", mgls_contz, mglc_contz,0}, - {"copy","Copy data from another variable","copy Dat1 Dat2 ['eq' onaxis]", mgls_copy, mglc_copy,4}, - {"cosfft","Cos-Fourier transform at some direction","cosfft Dat 'dir'", mgls_cosfft, mglc_cosfft,16}, - {"crange","Set color range","crange Dat [sym] | c1 c2", mgls_crange, mglc_crange,14}, - {"crop","Crop edge of data","crop Dat n1 n2 'dir'", mgls_crop, mglc_crop,16}, - {"crust","Draw reconstructed surface for arbitrary data points","crust Xdat Ydat Zdat ['fmt']", mgls_crust, mglc_crust,0}, - {"ctick","Set ticks for colorbar","ctick 'tmpl' | dx", mgls_ctick, mglc_ctick,14}, - {"cumsum","Cumulative summation","cumsum Dat 'dir'", mgls_cumsum, mglc_cumsum,16}, - {"curve","Draw curve","curve x1 y1 dx1 dy1 x2 y2 dx2 dy2 ['fmt']|x1 y1 z1 dx1 dy1 dz1 x2 y2 z2 dx2 dy2 dz2 ['fmt']", mgls_curve, mglc_curve,13}, - {"cut","Setup plot points cutting","cut val|x1 y1 z1 x2 y2 z2|'cond'", mgls_cut, mglc_cut,2}, - {"datagrid","Fill data by triangulated values","datagrid Var Xdat Ydat Zdat", mgls_datagrid, mglc_datagrid,3}, - {"datas","Print list of data names in HDF file","datas 'fname'", mgls_datas, mglc_datas,3}, - {"defchr","Define parameter as character","defchr $N val", 0, 0, 6}, - {"define","Define constant or parameter","define $N sth | Var val", 0, 0, 6}, - {"defnum","Define parameter as numerical value","defnum $N val", 0, 0, 6}, - {"defpal","Define parameter as palette color","defpal $N val", 0, 0, 6}, - {"delete","Delete slice of data","delete Dat 'dir' [pos=0 num=1]", mgls_delete, mglc_delete,3}, - {"dens","Draw density plot","dens Zdat ['fmt' zpos]|Xdat Ydat Zdat ['fmt' zpos]", mgls_dens, mglc_dens,8}, - {"dens3","Draw density plot at slices of 3D data","dens3 Adat 'dir' [pos 'fmt']|Xdat Ydat Zdat Adat 'dir' [pos 'fmt']", mgls_dens3, mglc_dens3,9}, - {"densx","Draw density plot at x-slice (or x-plane)","densx Dat ['fmt' pos]", mgls_densx, mglc_densx,0}, - {"densy","Draw density plot at y-slice (or y-plane)","densy Dat ['fmt' pos]", mgls_densy, mglc_densy,0}, - {"densz","Draw density plot at z-slice (or z-plane)","densz Dat ['fmt' pos]", mgls_densz, mglc_densz,0}, - {"dew","Draw dew plot","dew Udat Vdat ['fmt']|Xdat Ydat Udat Vdat ['fmt']", mgls_dew, mglc_dew,11}, - {"diff","Numerically differentiate data","diff Var 'dir'", mgls_diff, mglc_diff,16}, - {"diff2","Numerically double differentiate data","diff2 Var 'dir'", mgls_diff2, mglc_diff2,16}, - {"divto","Divide by data or number","divto Var Dat|Var num", mgls_divto, mglc_divto,3}, - {"dots","Draw dots for arbitrary data points","dots Xdat Ydat Zdat ['fmt']", mgls_dots, mglc_dots,9}, - {"drop","Draw drop","drop x0 y0 dx dy r ['col' sh asp]|x0 y0 z0 dx dy dz r ['col' sh asp]", mgls_drop, mglc_drop,13}, - {"ellipse","Draw ellipse","ellipse x1 y1 x2 y2 r ['fmt']|x1 y1 z1 x2 y2 z2 r ['fmt']", mgls_ellipse, mglc_ellipse,13}, - {"else","Execute if condition is false","else", 0, 0, 6}, - {"elseif","Conditional operator","elseif val|Dat ['cond']", 0, 0, 6}, - {"endif","Finish if/else block","endif", 0, 0, 6}, - {"envelop","Find envelop for the data","envelop Dat ['dir']", mgls_envelop, mglc_envelop,16}, - {"errbox","Draw error box","errbox x y ex ey ['fmt']|x y z ex ey ez ['fmt']", mgls_errbox, mglc_errbox,13}, - {"error","Draw error boxes","error Ydat Yerr ['fmt']|Xdat Ydat Yerr ['fmt']|Xdat Ydat Xerr Yerr ['fmt']", mgls_error, mglc_error,7}, - {"evaluate","Evaluate (interpolate) values of array Dat at points i=idat,j=jdat,k=kdat","evaluate Res Dat Idat [norm]|Res Dat Idat Jdat [norm]|Res Dat Idat Jdat Kdat [norm]", mgls_evaluate, mglc_evaluate,4}, - {"export","Export data to PNG picture","export Dat 'fname' 'sch' [v1 v2]", mgls_import, mglc_import,3}, - {"extend","Extend data array","extend Dat dim1 [dim2]", mgls_extend, mglc_extend,3}, - {"face","Draw face (quadrangle)","face x1 y1 x2 y2 x3 y3 x4 y4 ['fmt']|x1 y1 z1 x2 y2 z2 x3 y3 z3 x4 y4 z4 ['fmt']", mgls_face, mglc_face,13}, - {"facenum","Set number of visible faces","facenum val", mgls_facenum, mglc_facenum,2}, - {"facex","Draw face perpendicular to x-axis","facex x0 y0 z0 wy wz ['fmt' d1 d2]", mgls_facex, mglc_facex,13}, - {"facey","Draw face perpendicular to y-axis","facex x0 y0 z0 wx wz ['fmt' d1 d2]", mgls_facey, mglc_facey,13}, - {"facez","Draw face perpendicular to z-axis","facex x0 y0 z0 wy wz ['fmt' d1 d2]", mgls_facez, mglc_facez,13}, - {"fall","Draw waterfalls","fall Zdat ['fmt']|Xdat Ydat Zdat ['fmt']", mgls_fall, mglc_fall,8}, - {"fgets","Print string from file","fgets x y z 'fname' [pos=0 'fmt' size]|x y z 'fname' [pos=0 'fmt' size]", mgls_fgets, mglc_fgets,15}, - {"fill","Fill data linearly in range [v1, v2]","fill Var v1 v2 ['dir'] | Var 'eq' [Vdat Wdat]", mgls_fill, mglc_fill,3}, - {"fillsample","Fill x-,k-samples for transforms","fillsample Var 'how'", mgls_fillsample, mglc_fillsample,3}, - {"fit","Fit data to formula","fit Res A 'eq' 'var' [Ini]|Res X A 'eq' 'var' [Ini]|Res X Y A 'eq' 'var' [Ini]|Res X Y Z A 'eq' 'var' [Ini]", mgls_fit, mglc_fit,4}, - {"fits","Fit data to formula","fits Res A S 'eq' 'var' [Ini]|Res X A S 'eq' 'var' [Ini]|Res X Y A S 'eq' 'var' [Ini]|Res X Y Z A S 'eq' 'var' [Ini]", mgls_fits, mglc_fits,4}, + {"addlegend","Add legend entry","addlegend 'txt' 'fmt'", mgls_addlegend,15}, + {"addto","Add data or number","addto Var Dat|Var num", mgls_addto ,3}, + {"adjust","Adjust ticks for best view","adjust ['dir']", mgls_adjust ,14}, + {"alpha","Switch on/off transparency","alpha [val]", mgls_alpha ,2}, + {"alphadef","Set default transparency","alphadef val", mgls_alphadef ,2}, + {"ambient","Set ambient light brightness","ambient val", mgls_ambient ,2}, + {"area","Draw area plot for 1D data","area Ydat ['fmt']|Xdat Ydat ['fmt']|Xdat Ydat Zdat ['fmt']", mgls_area ,7}, + {"arrowsize","Set size of arrows","arrowsize val", mgls_arrowsize ,2}, + {"ask","Define parameter from user input","ask $N 'question'", 0, 6}, + {"aspect","Set aspect ration","aspect valx valy [valz]", mgls_aspect ,5}, + {"axial","Draw surfaces of contour lines rotation","axial Zdat ['fmt' num]|Xdat Ydat Zdat ['fmt' num]", mgls_axial ,8}, + {"axis","Setup or draw axis","axis ['dir' 'fmt']|'fx' 'fy' 'fz' ['fc']|how", mgls_axis ,12}, + {"axisstl","Set axis and tick style","axisstl 'stl' ['sub']", mgls_axisstl ,14}, + {"ball","Draw point (ball)","ball posx posy ['fmt']|posx posy posz ['fmt']", mgls_ball ,13}, + {"barh","Draw horizontal bars for 1D data", "barh Ydat ['fmt' above]|Xdat Ydat ['fmt' above]", mgls_barh ,7}, + {"bars","Draw bars for 1D data","bars Ydat ['fmt' above]|Xdat Ydat ['fmt' above]|Xdat Ydat Zdat ['fmt' above]", mgls_bars ,7}, + {"barwidth","Set default bars width","barwidth val", mgls_barwidth ,2}, + {"beam","Draw quasioptical beam","beam Tr G1 G2 Adat r ['sch' flag num] ", mgls_beam ,9}, + {"belt","Draw belts","belt Zdat ['fmt']|Xdat Ydat Zdat ['fmt']", mgls_belt ,8}, + {"box","Draw bounding box","box ['fmt' ticks]", mgls_box ,12}, + {"boxplot","Draw boxplot for 2D data","boxplot Ydat ['fmt']|Xdat Ydat ['fmt']", mgls_boxplot ,7}, + {"boxs","Draw boxes","boxs Zdat ['fmt']|Xdat Ydat Zdat ['fmt']", mgls_boxs ,8}, + {"break","Break for-cycle","break", 0, 6}, + {"call","Execute script in external file","call 'name' [args]", 0, 6}, + {"candle","Draw candlestick chart","candle candle Vdat1 ['fmt']|Vdat1 Vdat2 ['fmt']|Vdat1 Ydat1 Ydat2 ['fmt']||Vdat1 Vdat2 Ydat1 Ydat2 ['fmt']|Xdat Vdat1 Vdat2 Ydat1 Ydat2 ['fmt']", mgls_candle ,7}, + {"chart","Draw chart","chart Dat ['fmt']", mgls_chart ,7}, + {"chdir","Change current directory","chdir 'path'", mgls_chdir ,2}, + {"circle","Draw circle","circle x y r ['fmt']|x y z r ['fmt']", mgls_circle ,13}, + {"clean","Remove duplicate rows","clean Dat id", mgls_clean ,3}, + {"clearlegend","Clear legend antries","clearlegend", mgls_clearlegend ,15}, + {"clf","Clear picture","clf", mgls_clf ,12}, + {"cloud","Draw cloud","cloud Adat ['fmt']|Xdat Ydat Zdat Adat ['fmt']", mgls_cloud ,9}, + {"colorbar","Draw colorbar","colorbar ['fmt' pos]|Vdat ['fmt' pos]|'sch' pos x y [w h]|Vdat 'sch' pos x y [w h]", mgls_colorbar ,12}, + {"column","Get data column filled by formula on column ids","column Res Dat 'eq'", mgls_column ,4}, + {"columnplot","Set position of plot inside cell of column", "columnplot num ind [d]", mgls_columnplot ,5}, + {"combine", "Direct multiplication of arrays", "combine Res Adat Bdat", mgls_combine ,4}, + {"cone","Draw cone","cone x1 y1 z1 x2 y2 z2 r1 [r2 'fmt' edge]", mgls_cone ,13}, + {"cones","Draw cones for 1D data","cones Ydat ['fmt' above]|Xdat Ydat ['fmt' above]|Xdat Ydat Zdat ['fmt' above]", mgls_cones ,7}, + {"cont","Draw contour lines","cont Zdat ['fmt' num zpos]|Vdat Zdat ['fmt' zpos]|Xdat Ydat Zdat ['fmt' num zpos]|Vdat Xdat Ydat Zdat ['fmt' zpos]", mgls_cont ,8}, + {"cont3","Draw contour lines for 3D data","cont3 Adat 'dir' [val 'fmt' num]|Vdat Adat 'dir' [val 'fmt']|Xdat Ydat Zdat Adat 'dir' [val 'fmt' num]|Vdat Xdat Ydat Zdar Adat 'dir' [val 'fmt']", mgls_cont3 ,9}, + {"contd","Draw solid contours with manual colors","contd Zdat ['fmt' num zpos]|Vdat Zdat ['fmt' zpos]|Xdat Ydat Zdat ['fmt' num zpos]|Vdat Xdat Ydat Zdat ['fmt' zpos]", mgls_contd ,8}, + {"contf","Draw solid contours","contf Zdat ['fmt' num zpos]|Vdat Zdat ['fmt' zpos]|Xdat Ydat Zdat ['fmt' num zpos]|Vdat Xdat Ydat Zdat ['fmt' zpos]", mgls_contf ,8}, + {"contf3","Draw solid contour lines for 3D data","contf3 Adat 'dir' [val 'fmt' num]|Vdat Adat 'dir' [val 'fmt']|Xdat Ydat Zdat Adat 'dir' [val 'fmt' num]|Vdat Xdat Ydat Zdar Adat 'dir' [val 'fmt']", mgls_contf3 ,9}, + {"contfx","Draw solid contour lines at x-slice (or x-plane)","contfx Dat ['fmt' pos num]", mgls_contfx ,0}, + {"contfy","Draw solid contour lines at y-slice (or y-plane)","contfy Dat ['fmt' pos num]", mgls_contfy ,0}, + {"contfz","Draw solid contour lines at z-slice (or z-plane)","contfz Dat ['fmt' pos num]", mgls_contfz ,0}, + {"continue","Skip commands and iterate for-cycle again","continue", 0, 6}, + {"contv","Draw contour tubes","contv Zdat ['fmt' num zpos]|Vdat Zdat ['fmt' zpos]|Xdat Ydat Zdat ['fmt' num zpos]|Vdat Xdat Ydat Zdat ['fmt' zpos]", mgls_contv ,0}, + {"contx","Draw contour lines at x-slice (or x-plane)","contx Dat ['fmt' pos num]", mgls_contx ,0}, + {"conty","Draw contour lines at y-slice (or y-plane)","conty Dat ['fmt' pos num]", mgls_conty ,0}, + {"contz","Draw contour lines at z-slice (or z-plane)","contz Dat ['fmt' pos num]", mgls_contz ,0}, + {"copy","Copy data from another variable","copy Dat1 Dat2 ['eq' onaxis]", mgls_copy ,4}, + {"cosfft","Cos-Fourier transform at some direction","cosfft Dat 'dir'", mgls_cosfft ,16}, + {"crange","Set color range","crange Dat [sym] | c1 c2", mgls_crange ,14}, + {"crop","Crop edge of data","crop Dat n1 n2 'dir'", mgls_crop ,16}, + {"crust","Draw reconstructed surface for arbitrary data points","crust Xdat Ydat Zdat ['fmt']", mgls_crust ,0}, + {"ctick","Set ticks for colorbar","ctick 'tmpl' | dx", mgls_ctick ,14}, + {"cumsum","Cumulative summation","cumsum Dat 'dir'", mgls_cumsum ,16}, + {"curve","Draw curve","curve x1 y1 dx1 dy1 x2 y2 dx2 dy2 ['fmt']|x1 y1 z1 dx1 dy1 dz1 x2 y2 z2 dx2 dy2 dz2 ['fmt']", mgls_curve ,13}, + {"cut","Setup plot points cutting","cut val|x1 y1 z1 x2 y2 z2|'cond'", mgls_cut ,2}, + {"datagrid","Fill data by triangulated values","datagrid Var Xdat Ydat Zdat", mgls_datagrid ,3}, + {"datas","Print list of data names in HDF file","datas 'fname'", mgls_datas ,3}, + {"defchr","Define parameter as character","defchr $N val", 0, 6}, + {"define","Define constant or parameter","define $N sth | Var val", 0, 6}, + {"defnum","Define parameter as numerical value","defnum $N val", 0, 6}, + {"defpal","Define parameter as palette color","defpal $N val", 0, 6}, + {"delete","Delete slice of data","delete Dat 'dir' [pos=0 num=1]", mgls_delete ,3}, + {"dens","Draw density plot","dens Zdat ['fmt' zpos]|Xdat Ydat Zdat ['fmt' zpos]", mgls_dens ,8}, + {"dens3","Draw density plot at slices of 3D data","dens3 Adat 'dir' [pos 'fmt']|Xdat Ydat Zdat Adat 'dir' [pos 'fmt']", mgls_dens3 ,9}, + {"densx","Draw density plot at x-slice (or x-plane)","densx Dat ['fmt' pos]", mgls_densx ,0}, + {"densy","Draw density plot at y-slice (or y-plane)","densy Dat ['fmt' pos]", mgls_densy ,0}, + {"densz","Draw density plot at z-slice (or z-plane)","densz Dat ['fmt' pos]", mgls_densz ,0}, + {"dew","Draw dew plot","dew Udat Vdat ['fmt']|Xdat Ydat Udat Vdat ['fmt']", mgls_dew ,11}, + {"diff","Numerically differentiate data","diff Var 'dir'", mgls_diff ,16}, + {"diff2","Numerically double differentiate data","diff2 Var 'dir'", mgls_diff2 ,16}, + {"divto","Divide by data or number","divto Var Dat|Var num", mgls_divto ,3}, + {"dots","Draw dots for arbitrary data points","dots Xdat Ydat Zdat ['fmt']", mgls_dots ,9}, + {"drop","Draw drop","drop x0 y0 dx dy r ['col' sh asp]|x0 y0 z0 dx dy dz r ['col' sh asp]", mgls_drop ,13}, + {"ellipse","Draw ellipse","ellipse x1 y1 x2 y2 r ['fmt']|x1 y1 z1 x2 y2 z2 r ['fmt']", mgls_ellipse ,13}, + {"else","Execute if condition is false","else", 0, 6}, + {"elseif","Conditional operator","elseif val|Dat ['cond']", 0, 6}, + {"endif","Finish if/else block","endif", 0, 6}, + {"envelop","Find envelop for the data","envelop Dat ['dir']", mgls_envelop ,16}, + {"errbox","Draw error box","errbox x y ex ey ['fmt']|x y z ex ey ez ['fmt']", mgls_errbox ,13}, + {"error","Draw error boxes","error Ydat Yerr ['fmt']|Xdat Ydat Yerr ['fmt']|Xdat Ydat Xerr Yerr ['fmt']", mgls_error ,7}, + {"evaluate","Evaluate (interpolate) values of array Dat at points i=idat,j=jdat,k=kdat","evaluate Res Dat Idat [norm]|Res Dat Idat Jdat [norm]|Res Dat Idat Jdat Kdat [norm]", mgls_evaluate ,4}, + {"export","Export data to PNG picture","export Dat 'fname' 'sch' [v1 v2]", mgls_import ,3}, + {"extend","Extend data array","extend Dat dim1 [dim2]", mgls_extend ,3}, + {"face","Draw face (quadrangle)","face x1 y1 x2 y2 x3 y3 x4 y4 ['fmt']|x1 y1 z1 x2 y2 z2 x3 y3 z3 x4 y4 z4 ['fmt']", mgls_face ,13}, + {"facenum","Set number of visible faces","facenum val", mgls_facenum ,2}, + {"facex","Draw face perpendicular to x-axis","facex x0 y0 z0 wy wz ['fmt' d1 d2]", mgls_facex ,13}, + {"facey","Draw face perpendicular to y-axis","facex x0 y0 z0 wx wz ['fmt' d1 d2]", mgls_facey ,13}, + {"facez","Draw face perpendicular to z-axis","facex x0 y0 z0 wy wz ['fmt' d1 d2]", mgls_facez ,13}, + {"fall","Draw waterfalls","fall Zdat ['fmt']|Xdat Ydat Zdat ['fmt']", mgls_fall ,8}, + {"fgets","Print string from file","fgets x y z 'fname' [pos=0 'fmt' size]|x y z 'fname' [pos=0 'fmt' size]", mgls_fgets ,15}, + {"fill","Fill data linearly in range [v1, v2]","fill Var v1 v2 ['dir'] | Var 'eq' [Vdat Wdat]", mgls_fill ,3}, + {"fillsample","Fill x-,k-samples for transforms","fillsample Var 'how'", mgls_fillsample ,3}, + {"fit","Fit data to formula","fit Res A 'eq' 'var' [Ini]|Res X A 'eq' 'var' [Ini]|Res X Y A 'eq' 'var' [Ini]|Res X Y Z A 'eq' 'var' [Ini]", mgls_fit ,4}, + {"fits","Fit data to formula","fits Res A S 'eq' 'var' [Ini]|Res X A S 'eq' 'var' [Ini]|Res X Y A S 'eq' 'var' [Ini]|Res X Y Z A S 'eq' 'var' [Ini]", mgls_fits ,4}, {"flow","Draw flow threads for vector field","flow Udat Vdat ['fmt' num]|Xdat Ydat Udat Vdat ['fmt' num]|Udat Vdat Wdat ['fmt' num]|Xdat Ydat Zdat Udat Vdat ['fmt' num]|\ - x0 y0 Udat Vdat ['fmt']|x0 y0 Xdat Ydat Udat Vdat ['fmt']|x0 y0 z0 Udat Vdat Wdat ['fmt']|x0 y0 z0 Xdat Ydat Zdat Udat Vdat Wdat ['fmt']", mgls_flow, mglc_flow,11}, - {"fog","Switch on/off fog","fog val [pos]", mgls_fog, mglc_fog,2}, - {"font","Setup font","font 'fmt' [size]", mgls_font, mglc_font,15}, - {"for","For cycle","for $N v1 v2 [dv] | $N Dat", 0, 0, 6}, - {"fourier","In-place Fourier transform","fourier ReDat ImDat 'dir'", mgls_fourier, mglc_fourier, 16}, - {"fplot","Plot curve by formula","fplot 'y_x' ['fmt']|'x_t' 'y_t' 'z_t' ['fmt']", mgls_fplot, mglc_fplot,1}, - {"fsurf","Plot surface by formula","fsurf 'z_xy' ['fmt']|'x_uv' 'y_uv' 'z_uv' ['fmt']", mgls_fsurf, mglc_fsurf,1}, - {"func","Start function definition and stop execution of main script","func 'name' [narg]", 0, 0, 6}, - {"grad","Draw gradient lines for scalar field","grad Phi ['fmt' num]|Xdat Ydat Phi ['fmt' num]|Xdat Ydat Zdat Phi ['fmt' num]", mgls_grad, mglc_grad,8}, - {"grid","Draw grid","grid ['dir' 'fmt']", mgls_grid, mglc_grid,12}, - {"grid2","Draw grid for data array(s)","grid Zdat ['fmt']|Xdat Ydat Zdat ['fmt']", mgls_grid2, mglc_grid2,8}, - {"grid3","Draw grid at slices of 3D data","grid3 Adat 'dir' [pos 'fmt']|Xdat Ydat Zdat Adat 'dir' [pos 'fmt']", mgls_grid3, mglc_grid3,9}, - {"gridplot","Set position of plot inside cell of matrix", "gridplot nx ny ind [d]", mgls_gridplot, mglc_gridplot,5}, - {"hankel","Hankel transform at some direction","hankel Dat 'dir'", mgls_hankel, mglc_hankel,16}, - {"hist","Create histogram (distribution) of data values","hist Res Dat num v1 v2 [nsub]|Res Dat Wdat num v1 v2 [nsub]", mgls_hist, mglc_hist,4}, - {"idset","Set column id for data","idset Dat 'ids'", mgls_idset, mglc_idset,3}, - {"if","Conditional operator","if val|Dat ['cond']", 0, 0, 6}, - {"import","Import data from PNG picture","import Dat 'fname' 'scheme' [v1 v2]", mgls_import, mglc_import,4}, - {"info","Print information about data","info Dat [detail]|'message'", mgls_info, mglc_info,3}, - {"inplot","Set position of plot in picture","x1 x2 y1 y2 [rel]", mgls_inplot, mglc_inplot,5}, - {"insert","Insert slice of data","insert Dat 'dir' [pos=0 num=1]", mgls_insert, mglc_insert,3}, - {"integrate","Integrate data","integrate Dat 'dir'", mgls_integrate, mglc_integrate,16}, - {"jacobian","Get Jacobian","jacobian Res Xdat Ydat [Zdat]", mgls_jacobian, mglc_jacobian,4}, - {"label","Draw label at arbitrary position","label Ydat 'txt' ['fmt'='']|Xdat Ydat 'txt' ['fmt'='']|Xdat Ydat Zdat 'txt' ['fmt'='']", mgls_label, mglc_label,7}, - {"legend","Draw legend","legend [pos 'fmt']|x y ['fmt']", mgls_legend, mglc_legend,15}, - {"legendmarks","Set number of marks in the legend","legendmarks val", mgls_legendmarks, mglc_legendmarks,15}, - {"light","Setup light","light [val] | val num | num xpos ypos zpos ['fmt' br]", mgls_light, mglc_light,2}, - {"line","Draw line","line x1 y1 x2 y2 ['fmt']|x1 y1 z1 x2 y2 z2 ['fmt']", mgls_line, mglc_line,13}, - {"list","Creates new variable from list of numbers or data","list Var v1 ...|Var D1 ...", 0, 0, 6}, - {"loadfont","Load fontfaces","loadfont ['face']", mgls_loadfont, mglc_loadfont,15}, - {"map","Draw mapping plot","map Udat Vdat ['fmt']|Xdat Ydat Udat Vdat ['fmt']", mgls_map, mglc_map,10}, - {"mark","Draw mark plot for 1D data","mark Ydat Rdat ['fmt']|Xdat Ydat Rdat ['fmt']|Xdat Ydat Zdat Rdat ['fmt']", mgls_mark, mglc_mark,7}, - {"marksize","Set size of markers","marksize val", mgls_marksize, mglc_marksize,2}, - {"max","Find maximal value over direction","max Res Dat 'dir'", mgls_max, mglc_max,4}, - {"mesh","Draw mesh surface","mesh Zdat ['fmt']|Xdat Ydat Zdat ['fmt']", mgls_mesh, mglc_mesh,8}, - {"meshnum","Set number of lines in mesh/fall/vect and so on","meshnum val", mgls_meshnum, mglc_meshnum,2}, - {"min","Find minimal value over direction","min Res Dat 'dir'", mgls_min, mglc_min,4}, - {"mirror","Mirror data at some direction","mirror Dat 'dir'", mgls_mirror, mglc_mirror,16}, - {"modify","Modify data values by formula","modify Dat 'eq' [num] | Dat 'eq' Vdat [Wdat]", mgls_modify, mglc_modify,3}, - {"momentum","Get momentum along direction","momentum Res Dat 'how' ['dir']", mgls_momentum, mglc_momentum,4}, - {"multiplot","Set position of plot","multiplot m n pos dx dy 'style'", mgls_multiplot, mglc_multiplot,5}, - {"multo","Multiply by data or number","multo Var Dat|Var num", mgls_multo, mglc_multo,3}, - {"new","Create new data","new Dat nx ny nz ['eq']|new Dat nx ny ['eq']|new Dat nx ['eq']", mgls_new, mglc_new,4}, - {"next","Start next for-cycle iteration","next", 0, 0, 6}, - {"norm","Normalize data","norm Dat v1 v2 [sym dim]", mgls_norm, mglc_norm,16}, - {"normsl","Normalize data slice by slice","normsl Dat v1 v2 ['dir' keep sym] ", mgls_normsl, mglc_normsl,16}, - {"once","Start/close commands which should executed only once","once val", 0, 0, 6}, - {"origin","Set axis origin","origin x0 y0 [z0]", mgls_origin, mglc_origin,14}, - {"palette","Set palette for 1D plots","palette 'colors'", mgls_palette, mglc_palette,2}, - {"pde","Solve PDE","pde Res 'ham' IniRe IniIm [dz k0]", mgls_pde, mglc_pde,4}, - {"perspective","Set perspective","perspective val", mgls_perspective, mglc_perspective,2}, - {"pipe","Draw flow pipes for vector field","pipe Udat Vdat ['fmt' rad num]|Xdat Ydat Udat Vdat ['fmt' rad num]|Udat Vdat Wdat ['fmt' rad num]|Xdat Ydat Zdat Udat Vdat Wdat ['fmt' rad num]", mgls_pipe, mglc_pipe,11}, - {"plot","Draw usual plot for 1D data","plot Ydat ['fmt']|Xdat Ydat ['fmt']|Xdat Ydat Zdat ['fmt']", mgls_plot, mglc_plot,7}, - {"plotid","Set default filename","plotid 'name'", mgls_plotid, mglc_plotid,2}, - {"put","Put value (numeric or array) to given data element","put Dat val [i j k] | Dat Val [i j k]", mgls_put, mglc_put,3}, - {"putsfit","Print fitted formula","putsfit x y ['pre' 'font' size]|x y z ['pre' 'font' size]", mgls_putsfit, mglc_putsfit,15}, - {"qo2d","Solve PDE in accompanied coordinates","qo2d Res 'ham' IniRe IniIm Ray [r k0 Xout Yout]", mgls_qo2d, mglc_qo2d,4}, - {"quadplot","Draw surface of quadrangles","quadplot Idat Xdat Ydat ['fmt']|Idat Xdat Ydat Zdat ['fmt']|Idat Xdat Ydat Zdat Cdat ['fmt'] ", mgls_quadplot, mglc_quadplot,0}, - {"quality","Set plot quality","quality [val]", mgls_quality, mglc_quality,2}, - {"radar","Draw radar chart","radar Rdat ['fmt']", mgls_radar, mglc_radar,7}, - {"ranges","Set axis ranges","ranges x1 x2 y1 y2 [z1 z2]", mgls_ranges, mglc_ranges,14}, - {"ray","Solve Hamiltonian ODE (find GO ray or trajectory)","ray Res 'ham' x0 y0 z0 px0 py0 pz0 [dz=0.1 tmax=10]", mgls_ray, mglc_ray,4}, - {"read","Read data from file","read Dat 'file' [nx ny nz]", mgls_read, mglc_read,4}, - {"readall","Read and join data from several files","readall Dat 'templ' [slice]", mgls_readall, mglc_readall,4}, - {"readhdf","Read data from HDF5 file","readhdf Dat 'file' 'id'", mgls_readhdf, mglc_readhdf,4}, - {"readmat","Read data from file with sizes specified in first row","readmat Dat 'file' [dim]", mgls_readmat, mglc_readmat,4}, - {"rearrange","Rearrange data dimensions","rearrange Dat mx [my mz]", mgls_rearrange, mglc_rearrange,3}, - {"rect","Draw rectangle","rect x1 y1 x2 y2 ['fmt']|x1 y1 z1 x2 y2 z2 ['fmt']", mgls_rect, mglc_rect,13}, - {"region","Draw filled region between 2 curves","region Ydat1 Ydat2 ['fmt' inside]|Xdat Ydat1 Ydat2 ['fmt' inside]", mgls_region, mglc_region,7}, - {"resize","Resize data","resize Res Dat mx [my mz]", mgls_resize, mglc_resize,4}, - {"return","Return from function","return", 0, 0, 6}, - {"rhomb","Draw rhombus","rhomb x1 y1 x2 y2 r ['fmt']|x1 y1 z1 x2 y2 z2 r ['fmt']", mgls_rhomb, mglc_rhomb,13}, - {"roll","Roll data along direction","roll Dat 'dir' num", mgls_roll, mglc_roll,16}, - {"rotate","Rotate plot","rotate tetz tetx [tety] | tet x y z", mgls_rotate, mglc_rotate,5}, - {"rotatetext","Set to auto rotate text or not","rotatetext val", mgls_rotatetext, mglc_rotatetext,15}, - {"save","Save data to file","save Dat 'file'", mgls_save, mglc_save,3}, - {"savehdf","Save data to HDF5 file","savehdf Dat 'file' 'id'", mgls_savehdf, mglc_savehdf,3}, - {"setsize","Set picture size","setsize width height", mgls_setsize, mglc_setsize,2}, - {"sew","Remove jump into the data, like phase jumps","sew Dat ['dir' da]", mgls_sew, mglc_sew,16}, - {"sinfft","Sin-Fourier transform at some direction","sinfft Dat 'dir'", mgls_sinfft, mglc_sinfft,16}, - {"smooth","Smooth data","smooth Dat [kind 'dir']", mgls_smooth, mglc_smooth,16}, - {"solve","Find root Dat_{i,j,k}=val (inverse evaluate)","solve Res Dat val 'dir' [Idat norm]", mgls_solve, mglc_solve,4}, - {"sort","Sort data by values in column","sort Dat idx [idy]", mgls_sort, mglc_sort,3}, - {"sphere","Draw sphere","sphere x0 y0 r ['fmt']|x0 y0 z0 r ['fmt']", mgls_sphere, mglc_sphere,13}, - {"squeeze","Squeeze data","squeeze Dat kx [ky kz]", mgls_squeeze, mglc_squeeze,3}, - {"stem","Draw stem plot for 1D data","stem Ydat ['fmt']|Xdat Ydat ['fmt']|Xdat Ydat Zdat ['fmt']", mgls_stem, mglc_stem,7}, - {"step","Draw step plot for 1D data","step Ydat ['fmt']|Xdat Ydat ['fmt']|Xdat Ydat Zdat ['fmt']", mgls_step, mglc_step,7}, - {"stfa","Draw STFA diagram","stfa Udat Vdat dn ['fmt']|Xdat Ydat Udat Vdat dn ['fmt']", mgls_stfa, mglc_stfa,10}, - {"stfad","Do STFA transform","stfad Res Real Imag dn ['dir']", mgls_stfad, mglc_stfad,4}, - {"stickplot","Set position of plot inside cell of stick", "stickplot num ind tet phi", mgls_stickplot, mglc_stickplot,5}, - {"stop","Stop execution","stop", 0, 0, 6}, - {"subdata","Extract sub-array","subdata Res Dat nx [ny nz]", mgls_subdata, mglc_subdata,4}, - {"subplot","Set position of plot","subplot m n pos ['style' dx dy]", mgls_subplot, mglc_subplot,5}, - {"subto","Subtract data or number","subto Var Dat|Var num", mgls_subto, mglc_subto,3}, - {"sum","Find summation over direction","sum Res Dat 'dir'", mgls_sum, mglc_sum,4}, - {"surf","Draw solid surface","surf Zdat ['fmt']|Xdat Ydat Zdat ['fmt']", mgls_surf, mglc_surf,8}, - {"surf3","Draw isosurface for 3D data","surf3 Adat ['fmt' num]|Xdat Ydat Zdat Adat ['fmt' num]|Adat val ['fmt']|Xdat Ydat Zdat Adat val ['fmt']", mgls_surf3, mglc_surf3,9}, - {"surf3a","Draw isosurface for 3D data transpared by other data","surf3a Adat Cdat ['fmt' num]|Xdat Ydat Zdat Adat Cdat ['fmt' num]|Adat Cdat val ['fmt']|Xdat Ydat Zdat Adat Cdat val ['fmt']", mgls_surf3a, mglc_surf3a,10}, - {"surf3c","Draw isosurface for 3D data colored by other data","surf3c Adat Cdat ['fmt' num]|Xdat Ydat Zdat Adat Cdat ['fmt' num]|Adat Cdat val ['fmt']|Xdat Ydat Zdat Adat Cdat val ['fmt']", mgls_surf3c, mglc_surf3c,10}, - {"surfa","Draw solid surface transpared by other data","surfa Zdat Cdat ['fmt']|Xdat Ydat Zdat Cdat ['fmt']", mgls_surfa, mglc_surfa,10}, - {"surfc","Draw solid surface colored by other data","surfc Zdat Cdat ['fmt']|Xdat Ydat Zdat Cdat ['fmt']", mgls_surfc, mglc_surfc,10}, - {"swap","Swap data (usefull after Fourier transform)","swap Dat 'dir'", mgls_swap, mglc_swap,16}, - {"table","Draw table with data values","table Dat ['txt' 'fmt']|x y Dat ['txt' 'fmt']", mgls_table, mglc_table,7}, - {"tape","Draw binormales for 1D data","tape Ydat ['fmt']|Xdat Ydat ['fmt']|Xdat Ydat Zdat ['fmt']", mgls_tape, mglc_tape,7}, - {"tens","Draw tension plot for 1D data","tens Ydat Cdat ['fmt']|Xdat Ydat Cdat ['fmt']|Xdat Ydat Zdat Cdat ['fmt']", mgls_tens, mglc_tens,7}, - {"ternary","Switch on/off to use ternary axis","ternary val", mgls_ternary, mglc_ternary,14}, - {"text","Draw text at some position or along curve","text x y 'txt' ['fmt' size]|x y z 'txt' ['fmt' size]|x y dx dy 'txt' ['fmt' size]|x y z dx dy dz 'txt' ['fmt' size]|Ydat 'txt' ['font' sise]|Xdat Ydat 'txt' ['font' sise]", mgls_text, mglc_text,15}, - {"textmark","Draw TeX mark at point position","textmark Ydat Rdat 'text' ['fmt']|Xdat Ydat Rdat 'text' ['fmt']|Xdat Ydat Zdat Rdat 'text' ['fmt']", mgls_textmark, mglc_textmark,7}, - {"ticklen","Set tick length","ticklen val [stt]", mgls_ticklen, mglc_ticklen,14}, - {"ticktime","Set ticks in time format","ticktime 'dir' [dv 'tmpl']", mgls_ticktime, mglc_ticktime,14}, - {"tile","Draw horizontal tiles","tile Zdat ['fmt']|Xdat Ydat Zdat ['fmt']", mgls_tile, mglc_tile,8}, - {"tiles","Draw horizontal tiles with variable size","tiles Zdat Rdat ['fmt']|Xdat Ydat Zdat Rdat ['fmt']", mgls_tiles, mglc_tiles,10}, - {"title","Add title for current subplot/inplot","title 'txt' ['fmt' size]", mgls_title, mglc_title,5}, - {"tlabel","Draw label for t-axis","tlabel 'txt' [pos]", mgls_tlabel, mglc_tlabel,12}, - {"torus","Draw surface of curve rotation","torus Rdat ['fmt']|Zdat Rdat ['fmt']", mgls_torus, mglc_torus,7}, - {"trace","Get trace of array","trace Res Dat", mgls_trace, mglc_trace,4}, - {"traj","Draw vectors along a curve","traj Xdat Ydat Udat Vdat ['fmt' len]|Xdat Ydat Zdat Udat Vdat Wdat ['fmt' len]", mgls_traj, mglc_traj,11}, - {"transform","Do integral transform of data","transform Res 'how' Rdat Idat", mgls_transform, mglc_transform,4}, - {"transforma","Do integral transform of data","transforma Res 'how' Adat Pdat", mgls_transforma, mglc_transforma,4}, - {"transpose","Transpose data array","transpose Dat ['dir']", mgls_transpose, mglc_transpose,16}, - {"transptype","Set type transparency","transptype val", mgls_transptype, mglc_transptype,2}, - {"triangulate","Find triangles of randomly placed points","triangulate Res Xdat Ydat [er]|Res Xdat Ydat Zdat [er]", mgls_triangulate, mglc_triangulate,4}, - {"tricont","Draw contour lines for surface of triangles","tricont Vdat Idat Xdat Ydat ['fmt']|Vdat Idat Xdat Ydat Zdat ['fmt']|Vdat Idat Xdat Ydat Zdat Cdat ['fmt'] ", mgls_tricont, mglc_tricont,0}, - {"triplot","Draw surface of triangles","triplot Idat Xdat Ydat ['fmt']|Idat Xdat Ydat Zdat ['fmt']|Idat Xdat Ydat Zdat Cdat ['fmt'] ", mgls_triplot, mglc_triplot,0}, - {"tube","Draw curve by tube","tube Ydat Rdat ['fmt']|Ydat rval ['fmt']|Xdat Ydat Rdat ['fmt']|Xdat Ydat rval ['fmt']|Xdat Ydat Zdat Rdat ['fmt']|Xdat Ydat Zdat rval ['fmt']", mgls_tube, mglc_tube,7}, - {"tuneticks","Set ticks tuning","tuneticks val [fctr]", mgls_tuneticks, mglc_tuneticks,14}, - {"var","Create new 1D data and fill it in range","var Dat nx x1 [x2]", mgls_var, mglc_var,4}, - {"vect","Draw vector field","vect Udat Vdat ['fmt']|Xdat Ydat Udat Vdat ['fmt']|Udat Vdat Wdat ['fmt']|Xdat Ydat Zdat Udat Vdat Wdat ['fmt']", mgls_vect, mglc_vect,11}, - {"vect3","Draw vector field at slices of 3D data","vect Udat Vdat Wdat ['fmt' sval]|Xdat Ydat Zdat Udat Vdat Wdat ['fmt' sval]", mgls_vect3, mglc_vect3,11}, - {"view","Change view angles - use 'rotate' for plot rotation","view tetz tetx [tety]", mgls_view, mglc_view,5}, - {"write","Write current image to graphical file","write 'fname' [solid]", mgls_write, mglc_write,2}, - {"xlabel","Draw label for x-axis","xlabel 'txt' [pos]", mgls_xlabel, mglc_xlabel,12}, - {"xrange","Set range for x-axis","xrange Dat [add] | x1 x2", mgls_xrange, mglc_xrange,14}, - {"xtick","Set ticks for x-axis","xtick dx [sx tx] | 'tmpl' | Xdat 'lbl' [add] | v1 'lbl1' ...", mgls_xtick, mglc_xtick,14}, - {"ylabel","Draw label for y-axis","ylabel 'txt' [pos]", mgls_ylabel, mglc_ylabel,12}, - {"yrange","Set range for y-axis","yrange Dat [add] | y1 y2", mgls_yrange, mglc_yrange,14}, - {"ytick","Set ticks for y-axis","ytick dy [sy ty] | 'tmpl' | Ydat 'lbl' [add] | v1 'lbl1' ...", mgls_ytick, mglc_ytick,14}, - {"zlabel","Draw label for z-axis","zlabel 'txt' [pos]", mgls_zlabel, mglc_zlabel,12}, - {"zoom","Zoom plot region","zoom x1 x2 y1 y2", mgls_zoom, mglc_zoom,5}, - {"zoomaxis","Zoom axis range","zoomaxis x1 x2|x1 x2 y1 y2|x1 x2 y1 y2 z1 z2|x1 x2 y1 y2 z1 z2 c1 c2", mgls_zoomaxis, mglc_zoomaxis,14}, - {"zrange","Set range for z-axis","yrange Dat [add] | z1 z2", mgls_zrange, mglc_zrange,14}, - {"ztick","Set ticks for z-axis","ztick dz [sz tz] | 'tmpl' | Zdat 'lbl' [add] | v1 'lbl1' ...", mgls_ztick, mglc_ztick,14}, -{"","","",NULL,NULL,0}}; + x0 y0 Udat Vdat ['fmt']|x0 y0 Xdat Ydat Udat Vdat ['fmt']|x0 y0 z0 Udat Vdat Wdat ['fmt']|x0 y0 z0 Xdat Ydat Zdat Udat Vdat Wdat ['fmt']", mgls_flow ,11}, + {"fog","Switch on/off fog","fog val [pos]", mgls_fog ,2}, + {"font","Setup font","font 'fmt' [size]", mgls_font ,15}, + {"for","For cycle","for $N v1 v2 [dv] | $N Dat", 0, 6}, + {"fourier","In-place Fourier transform","fourier ReDat ImDat 'dir'", mgls_fourier , 16}, + {"fplot","Plot curve by formula","fplot 'y_x' ['fmt']|'x_t' 'y_t' 'z_t' ['fmt']", mgls_fplot ,1}, + {"fsurf","Plot surface by formula","fsurf 'z_xy' ['fmt']|'x_uv' 'y_uv' 'z_uv' ['fmt']", mgls_fsurf ,1}, + {"func","Start function definition and stop execution of main script","func 'name' [narg]", 0, 6}, + {"grad","Draw gradient lines for scalar field","grad Phi ['fmt' num]|Xdat Ydat Phi ['fmt' num]|Xdat Ydat Zdat Phi ['fmt' num]", mgls_grad ,8}, + {"grid","Draw grid","grid ['dir' 'fmt']", mgls_grid ,12}, + {"grid2","Draw grid for data array(s)","grid Zdat ['fmt']|Xdat Ydat Zdat ['fmt']", mgls_grid2 ,8}, + {"grid3","Draw grid at slices of 3D data","grid3 Adat 'dir' [pos 'fmt']|Xdat Ydat Zdat Adat 'dir' [pos 'fmt']", mgls_grid3 ,9}, + {"gridplot","Set position of plot inside cell of matrix", "gridplot nx ny ind [d]", mgls_gridplot ,5}, + {"hankel","Hankel transform at some direction","hankel Dat 'dir'", mgls_hankel ,16}, + {"hist","Create histogram (distribution) of data values","hist Res Dat num v1 v2 [nsub]|Res Dat Wdat num v1 v2 [nsub]", mgls_hist ,4}, + {"idset","Set column id for data","idset Dat 'ids'", mgls_idset ,3}, + {"if","Conditional operator","if val|Dat ['cond']", 0, 6}, + {"import","Import data from PNG picture","import Dat 'fname' 'scheme' [v1 v2]", mgls_import ,4}, + {"info","Print information about data","info Dat [detail]|'message'", mgls_info ,3}, + {"inplot","Set position of plot in picture","x1 x2 y1 y2 [rel]", mgls_inplot ,5}, + {"insert","Insert slice of data","insert Dat 'dir' [pos=0 num=1]", mgls_insert ,3}, + {"integrate","Integrate data","integrate Dat 'dir'", mgls_integrate ,16}, + {"jacobian","Get Jacobian","jacobian Res Xdat Ydat [Zdat]", mgls_jacobian ,4}, + {"label","Draw label at arbitrary position","label Ydat 'txt' ['fmt'='']|Xdat Ydat 'txt' ['fmt'='']|Xdat Ydat Zdat 'txt' ['fmt'='']", mgls_label ,7}, + {"legend","Draw legend","legend [pos 'fmt']|x y ['fmt']", mgls_legend ,15}, + {"legendmarks","Set number of marks in the legend","legendmarks val", mgls_legendmarks ,15}, + {"light","Setup light","light [val] | val num | num xpos ypos zpos ['fmt' br]", mgls_light ,2}, + {"line","Draw line","line x1 y1 x2 y2 ['fmt']|x1 y1 z1 x2 y2 z2 ['fmt']", mgls_line ,13}, + {"list","Creates new variable from list of numbers or data","list Var v1 ...|Var D1 ...", 0, 6}, + {"loadfont","Load fontfaces","loadfont ['face']", mgls_loadfont ,15}, + {"map","Draw mapping plot","map Udat Vdat ['fmt']|Xdat Ydat Udat Vdat ['fmt']", mgls_map ,10}, + {"mark","Draw mark plot for 1D data","mark Ydat Rdat ['fmt']|Xdat Ydat Rdat ['fmt']|Xdat Ydat Zdat Rdat ['fmt']", mgls_mark ,7}, + {"marksize","Set size of markers","marksize val", mgls_marksize ,2}, + {"max","Find maximal value over direction","max Res Dat 'dir'", mgls_max ,4}, + {"mesh","Draw mesh surface","mesh Zdat ['fmt']|Xdat Ydat Zdat ['fmt']", mgls_mesh ,8}, + {"meshnum","Set number of lines in mesh/fall/vect and so on","meshnum val", mgls_meshnum ,2}, + {"min","Find minimal value over direction","min Res Dat 'dir'", mgls_min ,4}, + {"mirror","Mirror data at some direction","mirror Dat 'dir'", mgls_mirror ,16}, + {"modify","Modify data values by formula","modify Dat 'eq' [num] | Dat 'eq' Vdat [Wdat]", mgls_modify ,3}, + {"momentum","Get momentum along direction","momentum Res Dat 'how' ['dir']", mgls_momentum ,4}, + {"multiplot","Set position of plot","multiplot m n pos dx dy 'style'", mgls_multiplot ,5}, + {"multo","Multiply by data or number","multo Var Dat|Var num", mgls_multo ,3}, + {"new","Create new data","new Dat nx ny nz ['eq']|new Dat nx ny ['eq']|new Dat nx ['eq']", mgls_new ,4}, + {"next","Start next for-cycle iteration","next", 0, 6}, + {"norm","Normalize data","norm Dat v1 v2 [sym dim]", mgls_norm ,16}, + {"normsl","Normalize data slice by slice","normsl Dat v1 v2 ['dir' keep sym] ", mgls_normsl ,16}, + {"once","Start/close commands which should executed only once","once val", 0, 6}, + {"origin","Set axis origin","origin x0 y0 [z0]", mgls_origin ,14}, + {"palette","Set palette for 1D plots","palette 'colors'", mgls_palette ,2}, + {"pde","Solve PDE","pde Res 'ham' IniRe IniIm [dz k0]", mgls_pde ,4}, + {"perspective","Set perspective","perspective val", mgls_perspective ,2}, + {"pipe","Draw flow pipes for vector field","pipe Udat Vdat ['fmt' rad num]|Xdat Ydat Udat Vdat ['fmt' rad num]|Udat Vdat Wdat ['fmt' rad num]|Xdat Ydat Zdat Udat Vdat Wdat ['fmt' rad num]", mgls_pipe ,11}, + {"plot","Draw usual plot for 1D data","plot Ydat ['fmt']|Xdat Ydat ['fmt']|Xdat Ydat Zdat ['fmt']", mgls_plot ,7}, + {"plotid","Set default filename","plotid 'name'", mgls_plotid ,2}, + {"put","Put value (numeric or array) to given data element","put Dat val [i j k] | Dat Val [i j k]", mgls_put ,3}, + {"putsfit","Print fitted formula","putsfit x y ['pre' 'font' size]|x y z ['pre' 'font' size]", mgls_putsfit ,15}, + {"qo2d","Solve PDE in accompanied coordinates","qo2d Res 'ham' IniRe IniIm Ray [r k0 Xout Yout]", mgls_qo2d ,4}, + {"quadplot","Draw surface of quadrangles","quadplot Idat Xdat Ydat ['fmt']|Idat Xdat Ydat Zdat ['fmt']|Idat Xdat Ydat Zdat Cdat ['fmt'] ", mgls_quadplot ,0}, + {"quality","Set plot quality","quality [val]", mgls_quality ,2}, + {"radar","Draw radar chart","radar Rdat ['fmt']", mgls_radar ,7}, + {"ranges","Set axis ranges","ranges x1 x2 y1 y2 [z1 z2]", mgls_ranges ,14}, + {"ray","Solve Hamiltonian ODE (find GO ray or trajectory)","ray Res 'ham' x0 y0 z0 px0 py0 pz0 [dz=0.1 tmax=10]", mgls_ray ,4}, + {"read","Read data from file","read Dat 'file' [nx ny nz]", mgls_read ,4}, + {"readall","Read and join data from several files","readall Dat 'templ' [slice]", mgls_readall ,4}, + {"readhdf","Read data from HDF5 file","readhdf Dat 'file' 'id'", mgls_readhdf ,4}, + {"readmat","Read data from file with sizes specified in first row","readmat Dat 'file' [dim]", mgls_readmat ,4}, + {"rearrange","Rearrange data dimensions","rearrange Dat mx [my mz]", mgls_rearrange ,3}, + {"rect","Draw rectangle","rect x1 y1 x2 y2 ['fmt']|x1 y1 z1 x2 y2 z2 ['fmt']", mgls_rect ,13}, + {"region","Draw filled region between 2 curves","region Ydat1 Ydat2 ['fmt' inside]|Xdat Ydat1 Ydat2 ['fmt' inside]", mgls_region ,7}, + {"resize","Resize data","resize Res Dat mx [my mz]", mgls_resize ,4}, + {"return","Return from function","return", 0, 6}, + {"rhomb","Draw rhombus","rhomb x1 y1 x2 y2 r ['fmt']|x1 y1 z1 x2 y2 z2 r ['fmt']", mgls_rhomb ,13}, + {"roll","Roll data along direction","roll Dat 'dir' num", mgls_roll ,16}, + {"rotate","Rotate plot","rotate tetz tetx [tety] | tet x y z", mgls_rotate ,5}, + {"rotatetext","Set to auto rotate text or not","rotatetext val", mgls_rotatetext ,15}, + {"save","Save data to file","save Dat 'file'", mgls_save ,3}, + {"savehdf","Save data to HDF5 file","savehdf Dat 'file' 'id'", mgls_savehdf ,3}, + {"setsize","Set picture size","setsize width height", mgls_setsize ,2}, + {"sew","Remove jump into the data, like phase jumps","sew Dat ['dir' da]", mgls_sew ,16}, + {"sinfft","Sin-Fourier transform at some direction","sinfft Dat 'dir'", mgls_sinfft ,16}, + {"smooth","Smooth data","smooth Dat [kind 'dir']", mgls_smooth ,16}, + {"solve","Find root Dat_{i,j,k}=val (inverse evaluate)","solve Res Dat val 'dir' [Idat norm]", mgls_solve ,4}, + {"sort","Sort data by values in column","sort Dat idx [idy]", mgls_sort ,3}, + {"sphere","Draw sphere","sphere x0 y0 r ['fmt']|x0 y0 z0 r ['fmt']", mgls_sphere ,13}, + {"squeeze","Squeeze data","squeeze Dat kx [ky kz]", mgls_squeeze ,3}, + {"stem","Draw stem plot for 1D data","stem Ydat ['fmt']|Xdat Ydat ['fmt']|Xdat Ydat Zdat ['fmt']", mgls_stem ,7}, + {"step","Draw step plot for 1D data","step Ydat ['fmt']|Xdat Ydat ['fmt']|Xdat Ydat Zdat ['fmt']", mgls_step ,7}, + {"stfa","Draw STFA diagram","stfa Udat Vdat dn ['fmt']|Xdat Ydat Udat Vdat dn ['fmt']", mgls_stfa ,10}, + {"stfad","Do STFA transform","stfad Res Real Imag dn ['dir']", mgls_stfad ,4}, + {"stickplot","Set position of plot inside cell of stick", "stickplot num ind tet phi", mgls_stickplot ,5}, + {"stop","Stop execution","stop", 0, 6}, + {"subdata","Extract sub-array","subdata Res Dat nx [ny nz]", mgls_subdata ,4}, + {"subplot","Set position of plot","subplot m n pos ['style' dx dy]", mgls_subplot ,5}, + {"subto","Subtract data or number","subto Var Dat|Var num", mgls_subto ,3}, + {"sum","Find summation over direction","sum Res Dat 'dir'", mgls_sum ,4}, + {"surf","Draw solid surface","surf Zdat ['fmt']|Xdat Ydat Zdat ['fmt']", mgls_surf ,8}, + {"surf3","Draw isosurface for 3D data","surf3 Adat ['fmt' num]|Xdat Ydat Zdat Adat ['fmt' num]|Adat val ['fmt']|Xdat Ydat Zdat Adat val ['fmt']", mgls_surf3 ,9}, + {"surf3a","Draw isosurface for 3D data transpared by other data","surf3a Adat Cdat ['fmt' num]|Xdat Ydat Zdat Adat Cdat ['fmt' num]|Adat Cdat val ['fmt']|Xdat Ydat Zdat Adat Cdat val ['fmt']", mgls_surf3a ,10}, + {"surf3c","Draw isosurface for 3D data colored by other data","surf3c Adat Cdat ['fmt' num]|Xdat Ydat Zdat Adat Cdat ['fmt' num]|Adat Cdat val ['fmt']|Xdat Ydat Zdat Adat Cdat val ['fmt']", mgls_surf3c ,10}, + {"surfa","Draw solid surface transpared by other data","surfa Zdat Cdat ['fmt']|Xdat Ydat Zdat Cdat ['fmt']", mgls_surfa ,10}, + {"surfc","Draw solid surface colored by other data","surfc Zdat Cdat ['fmt']|Xdat Ydat Zdat Cdat ['fmt']", mgls_surfc ,10}, + {"swap","Swap data (usefull after Fourier transform)","swap Dat 'dir'", mgls_swap ,16}, + {"table","Draw table with data values","table Dat ['txt' 'fmt']|x y Dat ['txt' 'fmt']", mgls_table ,7}, + {"tape","Draw binormales for 1D data","tape Ydat ['fmt']|Xdat Ydat ['fmt']|Xdat Ydat Zdat ['fmt']", mgls_tape ,7}, + {"tens","Draw tension plot for 1D data","tens Ydat Cdat ['fmt']|Xdat Ydat Cdat ['fmt']|Xdat Ydat Zdat Cdat ['fmt']", mgls_tens ,7}, + {"ternary","Switch on/off to use ternary axis","ternary val", mgls_ternary ,14}, + {"text","Draw text at some position or along curve","text x y 'txt' ['fmt' size]|x y z 'txt' ['fmt' size]|x y dx dy 'txt' ['fmt' size]|x y z dx dy dz 'txt' ['fmt' size]|Ydat 'txt' ['font' sise]|Xdat Ydat 'txt' ['font' sise]", mgls_text ,15}, + {"textmark","Draw TeX mark at point position","textmark Ydat Rdat 'text' ['fmt']|Xdat Ydat Rdat 'text' ['fmt']|Xdat Ydat Zdat Rdat 'text' ['fmt']", mgls_textmark ,7}, + {"ticklen","Set tick length","ticklen val [stt]", mgls_ticklen ,14}, + {"ticktime","Set ticks in time format","ticktime 'dir' [dv 'tmpl']", mgls_ticktime ,14}, + {"tile","Draw horizontal tiles","tile Zdat ['fmt']|Xdat Ydat Zdat ['fmt']", mgls_tile ,8}, + {"tiles","Draw horizontal tiles with variable size","tiles Zdat Rdat ['fmt']|Xdat Ydat Zdat Rdat ['fmt']", mgls_tiles ,10}, + {"title","Add title for current subplot/inplot","title 'txt' ['fmt' size]", mgls_title ,5}, + {"tlabel","Draw label for t-axis","tlabel 'txt' [pos]", mgls_tlabel ,12}, + {"torus","Draw surface of curve rotation","torus Rdat ['fmt']|Zdat Rdat ['fmt']", mgls_torus ,7}, + {"trace","Get trace of array","trace Res Dat", mgls_trace ,4}, + {"traj","Draw vectors along a curve","traj Xdat Ydat Udat Vdat ['fmt' len]|Xdat Ydat Zdat Udat Vdat Wdat ['fmt' len]", mgls_traj ,11}, + {"transform","Do integral transform of data","transform Res 'how' Rdat Idat", mgls_transform ,4}, + {"transforma","Do integral transform of data","transforma Res 'how' Adat Pdat", mgls_transforma ,4}, + {"transpose","Transpose data array","transpose Dat ['dir']", mgls_transpose ,16}, + {"transptype","Set type transparency","transptype val", mgls_transptype ,2}, + {"triangulate","Find triangles of randomly placed points","triangulate Res Xdat Ydat [er]|Res Xdat Ydat Zdat [er]", mgls_triangulate ,4}, + {"tricont","Draw contour lines for surface of triangles","tricont Vdat Idat Xdat Ydat ['fmt']|Vdat Idat Xdat Ydat Zdat ['fmt']|Vdat Idat Xdat Ydat Zdat Cdat ['fmt'] ", mgls_tricont ,0}, + {"triplot","Draw surface of triangles","triplot Idat Xdat Ydat ['fmt']|Idat Xdat Ydat Zdat ['fmt']|Idat Xdat Ydat Zdat Cdat ['fmt'] ", mgls_triplot ,0}, + {"tube","Draw curve by tube","tube Ydat Rdat ['fmt']|Ydat rval ['fmt']|Xdat Ydat Rdat ['fmt']|Xdat Ydat rval ['fmt']|Xdat Ydat Zdat Rdat ['fmt']|Xdat Ydat Zdat rval ['fmt']", mgls_tube ,7}, + {"tuneticks","Set ticks tuning","tuneticks val [fctr]", mgls_tuneticks ,14}, + {"var","Create new 1D data and fill it in range","var Dat nx x1 [x2]", mgls_var ,4}, + {"vect","Draw vector field","vect Udat Vdat ['fmt']|Xdat Ydat Udat Vdat ['fmt']|Udat Vdat Wdat ['fmt']|Xdat Ydat Zdat Udat Vdat Wdat ['fmt']", mgls_vect ,11}, + {"vect3","Draw vector field at slices of 3D data","vect Udat Vdat Wdat ['fmt' sval]|Xdat Ydat Zdat Udat Vdat Wdat ['fmt' sval]", mgls_vect3 ,11}, + {"view","Change view angles - use 'rotate' for plot rotation","view tetz tetx [tety]", mgls_view ,5}, + {"write","Write current image to graphical file","write 'fname' [solid]", mgls_write ,2}, + {"xlabel","Draw label for x-axis","xlabel 'txt' [pos]", mgls_xlabel ,12}, + {"xrange","Set range for x-axis","xrange Dat [add] | x1 x2", mgls_xrange ,14}, + {"xtick","Set ticks for x-axis","xtick dx [sx tx] | 'tmpl' | Xdat 'lbl' [add] | v1 'lbl1' ...", mgls_xtick,14}, + {"ylabel","Draw label for y-axis","ylabel 'txt' [pos]", mgls_ylabel,12}, + {"yrange","Set range for y-axis","yrange Dat [add] | y1 y2", mgls_yrange,14}, + {"ytick","Set ticks for y-axis","ytick dy [sy ty] | 'tmpl' | Ydat 'lbl' [add] | v1 'lbl1' ...", mgls_ytick,14}, + {"zlabel","Draw label for z-axis","zlabel 'txt' [pos]", mgls_zlabel,12}, + {"zoom","Zoom plot region","zoom x1 x2 y1 y2", mgls_zoom,5}, + {"zoomaxis","Zoom axis range","zoomaxis x1 x2|x1 x2 y1 y2|x1 x2 y1 y2 z1 z2|x1 x2 y1 y2 z1 z2 c1 c2", mgls_zoomaxis,14}, + {"zrange","Set range for z-axis","yrange Dat [add] | z1 z2", mgls_zrange ,14}, + {"ztick","Set ticks for z-axis","ztick dz [sz tz] | 'tmpl' | Zdat 'lbl' [add] | v1 'lbl1' ...", mgls_ztick,14}, +{"","","",NULL,0}}; //----------------------------------------------------------------------------- diff --git a/src/export.cpp b/src/export.cpp index d95e12a..82a9de0 100644 --- a/src/export.cpp +++ b/src/export.cpp @@ -226,7 +226,11 @@ int mgl_bps_save(const char *fname, int w, int h, unsigned char **p) int mgl_gif_save(const char *fname, int w, int h, unsigned char **l) { #if MGL_HAVE_GIF +#if GIFLIB_MAJOR>=5 + GifFileType *fg = EGifOpenFileName(fname, 0, 0); +#else GifFileType *fg = EGifOpenFileName(fname, 0); +#endif // define colormap GifColorType col[256]; memset(col,0,256*sizeof(GifColorType)); @@ -240,9 +244,15 @@ int mgl_gif_save(const char *fname, int w, int h, unsigned char **l) col[m].Blue =51*k; } // write header +#if GIFLIB_MAJOR>=5 + ColorMapObject *gmap = GifMakeMapObject(256, col); + EGifPutScreenDesc(fg, w, h, 256,0,gmap); + GifFreeMapObject(gmap); +#else ColorMapObject *gmap = MakeMapObject(256, col); EGifPutScreenDesc(fg, w, h, 256,0,gmap); FreeMapObject(gmap); +#endif // write frame EGifPutImageDesc(fg, 0, 0, w, h, 0, 0); GifPixelType *line = new GifPixelType[w*h]; @@ -271,10 +281,15 @@ void mglCanvas::StartGIF(const char *fname, int ms) { #if MGL_HAVE_GIF if(gif) EGifCloseFile(gif); - EGifSetGifVersion("89a"); std::string fn=fname; if(fn.empty()) { fn=PlotId+".gif"; fname = fn.c_str(); } +#if GIFLIB_MAJOR>=5 + gif = EGifOpenFileName(fname, 0, 0); + EGifSetGifVersion(gif,true); +#else + EGifSetGifVersion("89a"); gif = EGifOpenFileName(fname, 0); +#endif // get picture sizes // NOTE: you shouldn't call SetSize() after StartGIF() !!! long width, height; @@ -293,15 +308,29 @@ void mglCanvas::StartGIF(const char *fname, int ms) col[m].Blue =51*k; } // write header +#if GIFLIB_MAJOR>=5 + ColorMapObject *gmap = GifMakeMapObject(256, col); + EGifPutScreenDesc(gif, width, height, 256,0,gmap); + GifFreeMapObject(gmap); +#else ColorMapObject *gmap = MakeMapObject(256, col); EGifPutScreenDesc(gif, width, height, 256,0,gmap); FreeMapObject(gmap); +#endif // put animation parameters ms /= 10; unsigned char ext1[11] = {0x4E, 0x45, 0x54, 0x53, 0x43, 0x41, 0x50, 0x45, 0x32, 0x2E, 0x30}, ext3[3] = {0x01, 0xff, 0xff}, ext2[9] = {0x08, ms%256, ms/256, 0xff}; +#if GIFLIB_MAJOR>=5 + EGifPutExtensionLeader(gif,0xff); + EGifPutExtensionBlock(gif,11,ext1); + EGifPutExtensionBlock(gif,3,ext3); + EGifPutExtensionTrailer(gif); + EGifPutExtension(gif,0xf9,4,ext2); +#else EGifPutExtensionFirst(gif,0xff,11,ext1); EGifPutExtensionLast(gif,0xff,3,ext3); EGifPutExtension(gif,0xf9,4,ext2); +#endif #else mglGlobalMess += "GIF support was disabled. Please, enable it and rebuild MathGL.\n"; #endif diff --git a/src/font.cpp b/src/font.cpp index 1d8cbb0..894472b 100644 --- a/src/font.cpp +++ b/src/font.cpp @@ -70,7 +70,7 @@ float mglFont::Puts(const char *str,const char *how,float col) const { int font=0, align=1; char cc=mglGetStyle(how,&font,&align); - size_t size = strlen(str)+1; + size_t size = mbstowcs(0,str,0)+1; wchar_t *wcs = new wchar_t[size]; mbstowcs(wcs,str,size); float w = Puts(wcs,font,align,cc?-cc:col); @@ -82,7 +82,7 @@ float mglFont::Width(const char *str,const char *how) const { int font=0; mglGetStyle(how,&font); - size_t size = strlen(str)+1; + size_t size = mbstowcs(0,str,0)+1; wchar_t *wcs = new wchar_t[size]; mbstowcs(wcs,str,size); float w = Width(wcs,font); @@ -687,7 +687,7 @@ bool mglFont::read_main(const char *fname, unsigned &cur) return true; } //----------------------------------------------------------------------------- -extern std::string mglGlobalMess; ///< Buffer for receiving global messages +//extern std::string mglGlobalMess; ///< Buffer for receiving global messages bool mglFont::Load(const char *base, const char *path) { // base = 0; @@ -715,7 +715,7 @@ bool mglFont::Load(const char *base, const char *path) sprintf(str,"%s%c%s.vfm",path,sep,base?base:""); if(!(base && *base) || !read_main(str,cur)) { - mglGlobalMess += "Load built-in font.\n"; +// mglGlobalMess += "Load built-in font.\n"; read_def(cur); setlocale(LC_NUMERIC,oldLocale); if(buf) delete []buf; return true; } diff --git a/src/opengl.cpp b/src/opengl.cpp index 31f78f2..825eb2e 100644 --- a/src/opengl.cpp +++ b/src/opengl.cpp @@ -7,6 +7,7 @@ #include #endif #include "mgl2/opengl.h" +#include "mgl2/mgl_cf.h" #include //----------------------------------------------------------------------------- /// Create mglGraph object in OpenGL mode. diff --git a/src/parser.cpp b/src/parser.cpp index fac8f1e..ee71736 100644 --- a/src/parser.cpp +++ b/src/parser.cpp @@ -125,9 +125,14 @@ mglCommand *mglParser::FindCommand(const wchar_t *com) // return values : 0 -- OK, 1 -- wrong arguments, 2 -- wrong command, 3 -- unclosed string int mglParser::Exec(mglGraph *gr, const wchar_t *com, long n, mglArg *a, const wchar_t *var, const wchar_t *opt) { - int k[10], i; - for(i=0;i<10;i++) k[i] = itype==6) return 2; if(rts->type == 4) @@ -136,7 +141,7 @@ int mglParser::Exec(mglGraph *gr, const wchar_t *com, long n, mglArg *a, const w mglVar *v = AddVar(var); v->Create(1,1,1); a[0].type = 0; a[0].d = v; - a[0].w = var; k[0] = 1; + a[0].w = var; k[0] = 'd'; } char *o=0; if(opt && *opt) // TODO: parse arguments of options @@ -145,8 +150,7 @@ int mglParser::Exec(mglGraph *gr, const wchar_t *com, long n, mglArg *a, const w o = new char[len+1]; for(i=0;isave(out, n, a, k, o); - int res=rts->exec(gr, n, a, k, o); + int res=rts->exec(gr, n, a, k.c_str(), o); if(o) delete []o; return res; } @@ -171,7 +175,7 @@ mglParser::mglParser(bool setsize) { DataList=0; NumList=0; // wchar_t *par[40]; ///< Parameter for substituting instead of $1, ..., $9 - out=0; InUse = 1; + InUse = 1; Skip=Stop=for_br=false; memset(for_stack,0,40*sizeof(int)); memset(if_stack,0,40*sizeof(int)); @@ -198,13 +202,18 @@ void mglParser::DeleteAll() if(DataList) { while(DataList->next) delete DataList->next; - delete DataList; + delete DataList; DataList = 0; + } + if(NumList) + { + while(NumList->next) delete NumList->next; + delete NumList; NumList = 0; } } //----------------------------------------------------------------------------- void mglParser::AddParam(int n, const char *str) { - unsigned s = strlen(str)+1; + unsigned s = mbstowcs(0,str,0)+1; wchar_t *wcs = new wchar_t[s]; mbstowcs(wcs,str,s); AddParam(n,wcs); @@ -213,7 +222,7 @@ void mglParser::AddParam(int n, const char *str) //----------------------------------------------------------------------------- int mglParser::Parse(mglGraph *gr, const char *str, long pos) { - size_t s = strlen(str)+1; + size_t s = mbstowcs(0,str,0)+1; wchar_t *wcs = new wchar_t[s]; mbstowcs(wcs,str,s); int r = Parse(gr,wcs,pos); @@ -222,7 +231,7 @@ int mglParser::Parse(mglGraph *gr, const char *str, long pos) //----------------------------------------------------------------------------- mglVar *mglParser::AddVar(const char *str) { - size_t s = strlen(str)+1; + size_t s = mbstowcs(0,str,0)+1; wchar_t *wcs = new wchar_t[s]; mbstowcs(wcs,str,s); mglVar *v = AddVar(wcs); @@ -233,7 +242,7 @@ mglVar *mglParser::AddVar(const char *str) mglVar *mglParser::FindVar(const char *str) { if(!str || *str==0) return DataList; - size_t s = strlen(str)+1; + size_t s = mbstowcs(0,str,0)+1; wchar_t *wcs = new wchar_t[s]; mbstowcs(wcs,str,s); mglVar *v = FindVar(wcs); @@ -243,7 +252,7 @@ mglVar *mglParser::FindVar(const char *str) //----------------------------------------------------------------------------- mglNum *mglParser::AddNum(const char *str) { - size_t s = strlen(str)+1; + size_t s = mbstowcs(0,str,0)+1; wchar_t *wcs = new wchar_t[s]; mbstowcs(wcs,str,s); mglNum *v = AddNum(wcs); @@ -253,7 +262,7 @@ mglNum *mglParser::AddNum(const char *str) //----------------------------------------------------------------------------- mglNum *mglParser::FindNum(const char *str) { - size_t s = strlen(str)+1; + size_t s = mbstowcs(0,str,0)+1; wchar_t *wcs = new wchar_t[s]; mbstowcs(wcs,str,s); mglNum *v = FindNum(wcs); @@ -512,6 +521,7 @@ int mglParser::Parse(mglGraph *gr, const wchar_t *string, long pos) size_t lstr = wcslen(string)+2+GetParLen(string); wchar_t *str, *arg[1024],*t; wchar_t *s = new wchar_t[lstr]; + memset(s,0,lstr*sizeof(wchar_t)); wcscpy(s,string); mgl_wcstrim(s); str = s; long n,k=0,m=0,mm=0; // try parse ':' -- several commands in line @@ -759,12 +769,17 @@ int mglParser::ParseDat(mglGraph *gr, const wchar_t *string, mglData &res) mglArg *a = new mglArg[k+1]; FillArg(gr, k, arg, a+1); a[0].type=0; a[0].d=&res; // alocate new arrays and execute the command itself - int kk[10], i; - for(i=0;i<10;i++) kk[i] = i<=k ? a[i].type + 1 : 0; - for(i=0;i<=k;i++) a[i].s.assign(a[i].w.begin(),a[i].w.end()); + int i; + std::string kk; + const char *id="dsn"; + for(i=0;itype!=4) return 2; - n = rts->exec(gr, k, a, kk, 0); + n = rts->exec(gr, k, a, kk.c_str(), 0); delete []a; } delete []s; return n; @@ -778,10 +793,8 @@ int mglParser::FlowExec(mglGraph *, const wchar_t *com, long m, mglArg *a) if(a[0].type==2) { n = 0; - if(a[0].v) - { Skip = !Once; if(out) mglprintf(out,1024,L"if(!once)\t{\tonce = true;"); } - else - { Skip = Once = false; if(out) mglprintf(out,1024,L"}"); } + if(a[0].v) Skip = !Once; + else Skip = Once = false; } else n = 1; } @@ -789,33 +802,22 @@ int mglParser::FlowExec(mglGraph *, const wchar_t *com, long m, mglArg *a) { int cond; if(a[0].type==2) - { - n = 0; cond = (a[0].v!=0)?3:0; - if(out) mglprintf(out,1024,L"if(%g!=0)\t{", a[0].v); - } + { n = 0; cond = (a[0].v!=0)?3:0; } else if(a[0].type==0) { n = 0; a[1].s.assign(a[1].w.begin(),a[1].w.end()); cond = a[0].d->FindAny((m>1 && a[1].type==1) ? a[1].s.c_str():"u")?3:0; - if(out) mglprintf(out,1024,L"if(%ls.FindAny(\"%s\"))\t{", - a[0].w.c_str(), (m>1 && a[1].type==1) ? a[1].s.c_str():"u"); } else n = 1; if(n==0) { if_stack[if_pos] = cond; if_pos = if_pos<39 ? if_pos+1 : 39; } } else if(!Skip && !wcscmp(com,L"endif")) - { - if_pos = if_pos>0 ? if_pos-1 : 0; - n = 0; if(out) mglprintf(out,1024,L"}"); - } + { if_pos = if_pos>0 ? if_pos-1 : 0; n = 0; } else if(!Skip && !wcscmp(com,L"else")) { if(if_pos>0) - { - n=0; if_stack[if_pos-1] = (if_stack[if_pos-1]&2)?2:3; - if(out) mglprintf(out,1024,L"}\telse\t{"); - } + { n=0; if_stack[if_pos-1] = (if_stack[if_pos-1]&2)?2:3; } else n = 1; } else if(!Skip && !wcscmp(com,L"elseif")) @@ -824,16 +826,11 @@ int mglParser::FlowExec(mglGraph *, const wchar_t *com, long m, mglArg *a) if(if_pos<1 || m<1) n = 1; else if(if_stack[if_pos-1]&2) { n = 0; cond = 2; } else if(a[0].type==2) - { - n = 0; cond = (a[0].v!=0)?3:0; - if(out) mglprintf(out,1024,L"else if(%g!=0)\t{", a[0].v); - } + { n = 0; cond = (a[0].v!=0)?3:0; } else if(a[0].type==0) { n = 0; a[1].s.assign(a[1].w.begin(),a[1].w.end()); cond = a[0].d->FindAny((m>1 && a[1].type==1) ? a[1].s.c_str():"u")?3:0; - if(out) mglprintf(out,1024,L"else if(%ls.FindAny(\"%s\"))\t{", - a[0].w.c_str(), (m>1 && a[1].type==1) ? a[1].s.c_str():"u"); } else n = 1; if(n==0) if_stack[if_pos-1] = cond; @@ -841,7 +838,6 @@ int mglParser::FlowExec(mglGraph *, const wchar_t *com, long m, mglArg *a) else if(!ifskip() && !Skip && !wcscmp(com,L"break")) { if(if_pos==if_for[0]) if_pos = if_pos>0 ? if_pos-1 : 0; - if(out) mglprintf(out,1024,L"break;"); for_br = true; } else if(!skip() && !wcscmp(com, L"return")) // parse command "delete" { @@ -870,7 +866,6 @@ int mglParser::FlowExec(mglGraph *, const wchar_t *com, long m, mglArg *a) for_stack[39] = 0; for_br=false; } } - if(out) mglprintf(out,1024,L"}"); } else if(!ifskip() && !Skip && !wcscmp(com,L"continue")) { @@ -887,7 +882,6 @@ int mglParser::FlowExec(mglGraph *, const wchar_t *com, long m, mglArg *a) } else for_br = true; } - if(out) mglprintf(out,1024,L"continue;"); } return n+1; } @@ -960,22 +954,14 @@ void mglParser::Execute(mglGraph *gr, const wchar_t *text) //----------------------------------------------------------------------------- void mglParser::Execute(mglGraph *gr, const char *text) { - size_t s = strlen(text)+1; + size_t s = mbstowcs(0,text,0)+1; wchar_t *wcs = new wchar_t[s]; + memset(wcs,0,s*sizeof(wchar_t)); mbstowcs(wcs,text,s); Execute(gr, wcs); delete []wcs; } //----------------------------------------------------------------------------- -int mglParser::Export(wchar_t cpp_out[1024], mglGraph *gr, const wchar_t *str) -{ - *op1 = *op2 = 0; - out = cpp_out; - int res = Parse(gr, str); - out = 0; - return res; -} -//----------------------------------------------------------------------------- void mglParser::DeleteVar(mglVar *v) { if(!v) return; @@ -1095,7 +1081,7 @@ long mgl_parser_cmd_num(HMPR pr) //--------------------------------------------------------------------------- HMDT mgl_parser_calc(HMPR pr, const char *formula) { - size_t s = strlen(formula)+1; + size_t s = mbstowcs(0,formula,0)+1; wchar_t *wcs = new wchar_t[s]; mbstowcs(wcs,formula,s); HMDT d = mgl_parser_calcw(pr,wcs); diff --git a/src/pixel.cpp b/src/pixel.cpp index 4c07e9b..b3a8856 100644 --- a/src/pixel.cpp +++ b/src/pixel.cpp @@ -297,10 +297,9 @@ void mglCanvas::pxl_primdr(size_t id, size_t , const void *) else { nx=ny=1; id=0; } mglDrawReg d; d.set(this,nx,ny,id); - mglPrim p; for(i=0;i90) phi+=180; + } + else phi=0; mreal pf=sqrt((Bp.b[0]*Bp.b[0]+Bp.b[1]*Bp.b[1]+Bp.b[3]*Bp.b[3]+Bp.b[4]*Bp.b[4])/2), f = P->p*pf; #if MGL_HAVE_PTHREAD @@ -1006,8 +1009,6 @@ void mglCanvas::glyph_draw(const mglPrim *P, mglDrawReg *d) #endif Push(); B.clear(); B.b[0] = B.b[4] = B.b[8] = P->s; -// mreal cw=cos(phi), sw=-sin(phi); -// mreal tet = 180/M_PI*atan2(-Bp.b[3]*cw-Bp.b[4]*sw, Bp.b[0]*cw+Bp.b[1]*sw); RotateN(phi,0,0,1); B.x=p.x; B.y=p.y; B.z=p.z; B.pf = 1; p.u *= pf; p.v *= pf; diff --git a/src/prim.cpp b/src/prim.cpp index 813bb02..d04fec0 100644 --- a/src/prim.cpp +++ b/src/prim.cpp @@ -566,9 +566,9 @@ void mgl_putsw(HMGL gr, double x, double y, double z,const wchar_t *text, const //----------------------------------------------------------------------------- void mgl_puts_dir(HMGL gr, double x, double y, double z, double dx, double dy, double dz, const char *text, const char *font, double size) { - long len = strlen(text); + long len = mbstowcs(0,text,0)+1; wchar_t *buf = new wchar_t[len+1]; - mbstowcs(buf,text,len); buf[len]=0; + mbstowcs(buf,text,len); mgl_putsw_dir(gr, x, y, z, dx, dy, dz, buf, font, size); delete []buf; } @@ -671,19 +671,19 @@ void mgl_textmarkw(HMGL gr, HCDT y, const wchar_t *text, const char *fnt, const } //----------------------------------------------------------------------------- void mgl_textmark_xyzr(HMGL gr, HCDT x, HCDT y, HCDT z, HCDT r, const char *str, const char *fnt, const char *opt) -{ long s = strlen(str)+1; wchar_t *wcs = new wchar_t[s]; mbstowcs(wcs,str,s); +{ long s = mbstowcs(0,str,0)+1; wchar_t *wcs = new wchar_t[s]; mbstowcs(wcs,str,s); mgl_textmarkw_xyzr(gr, x, y, z, r, wcs, fnt, opt); delete []wcs; } //----------------------------------------------------------------------------- void mgl_textmark_xyr(HMGL gr, HCDT x, HCDT y, HCDT r, const char *str, const char *fnt, const char *opt) -{ long s = strlen(str)+1; wchar_t *wcs = new wchar_t[s]; mbstowcs(wcs,str,s); +{ long s = mbstowcs(0,str,0)+1; wchar_t *wcs = new wchar_t[s]; mbstowcs(wcs,str,s); mgl_textmarkw_xyr(gr, x, y, r, wcs, fnt, opt); delete []wcs; } //----------------------------------------------------------------------------- void mgl_textmark_yr(HMGL gr, HCDT y, HCDT r, const char *str, const char *fnt, const char *opt) -{ long s = strlen(str)+1; wchar_t *wcs = new wchar_t[s]; mbstowcs(wcs,str,s); +{ long s = mbstowcs(0,str,0)+1; wchar_t *wcs = new wchar_t[s]; mbstowcs(wcs,str,s); mgl_textmarkw_yr(gr, y, r, wcs, fnt, opt); delete []wcs; } //----------------------------------------------------------------------------- void mgl_textmark(HMGL gr, HCDT y, const char *str, const char *fnt, const char *opt) -{ long s = strlen(str)+1; wchar_t *wcs = new wchar_t[s]; mbstowcs(wcs,str,s); +{ long s = mbstowcs(0,str,0)+1; wchar_t *wcs = new wchar_t[s]; mbstowcs(wcs,str,s); mgl_textmarkw(gr, y, wcs, fnt, opt); delete []wcs; } //----------------------------------------------------------------------------- void mgl_textmark_xyzr_(uintptr_t *gr, uintptr_t *x, uintptr_t *y, uintptr_t *z, uintptr_t *r, const char *text, const char *fnt, const char *opt, int l,int n,int lo) @@ -777,15 +777,15 @@ void mgl_labelw_y(HMGL gr, HCDT y, const wchar_t *text, const char *fnt, const c } //----------------------------------------------------------------------------- void mgl_label_xyz(HMGL gr, HCDT x, HCDT y, HCDT z, const char *str, const char *fnt, const char *opt) -{ long s = strlen(str)+1; wchar_t *wcs = new wchar_t[s]; mbstowcs(wcs,str,s); +{ long s = mbstowcs(0,str,0)+1; wchar_t *wcs = new wchar_t[s]; mbstowcs(wcs,str,s); mgl_labelw_xyz(gr, x, y, z, wcs, fnt, opt); delete []wcs; } //----------------------------------------------------------------------------- void mgl_label_xy(HMGL gr, HCDT x, HCDT y, const char *str, const char *fnt, const char *opt) -{ long s = strlen(str)+1; wchar_t *wcs = new wchar_t[s]; mbstowcs(wcs,str,s); +{ long s = mbstowcs(0,str,0)+1; wchar_t *wcs = new wchar_t[s]; mbstowcs(wcs,str,s); mgl_labelw_xy(gr, x, y, wcs, fnt, opt); delete []wcs; } //----------------------------------------------------------------------------- void mgl_label_y(HMGL gr, HCDT y, const char *str, const char *fnt, const char *opt) -{ long s = strlen(str)+1; wchar_t *wcs = new wchar_t[s]; mbstowcs(wcs,str,s); +{ long s = mbstowcs(0,str,0)+1; wchar_t *wcs = new wchar_t[s]; mbstowcs(wcs,str,s); mgl_labelw_y(gr, y, wcs, fnt, opt); delete []wcs; } //----------------------------------------------------------------------------- void mgl_label_xyz_(uintptr_t *gr, uintptr_t *x, uintptr_t *y, uintptr_t *z, const char *text, const char *fnt, const char *opt, int l,int n,int lo) @@ -821,7 +821,7 @@ void mgl_table(HMGL gr, double x, double y, HCDT val, const char *text, const ch { if(!text) mgl_tablew(gr,x,y,val,L"",fnt,opt); else - { long s = strlen(text)+1; wchar_t *wcs = new wchar_t[s]; mbstowcs(wcs,text,s); + { long s = mbstowcs(0,text,0)+1; wchar_t *wcs = new wchar_t[s]; mbstowcs(wcs,text,s); mgl_tablew(gr, x, y, val, wcs, fnt, opt); delete []wcs; } } //----------------------------------------------------------------------------- diff --git a/texinfo/CMakeLists.txt b/texinfo/CMakeLists.txt index 299b4d8..66001a9 100644 --- a/texinfo/CMakeLists.txt +++ b/texinfo/CMakeLists.txt @@ -12,6 +12,7 @@ if(MGL_HAVE_DOC) set(MGL_PNG_N ) set(MGL_PNG_S ) set(MGL_PNG_J ) + set(MGL_PNG_D ) set(MGL_OUT ${CMAKE_BINARY_DIR}/texinfo) set(MGL_TEX ${CMAKE_SOURCE_DIR}/texinfo) @@ -19,6 +20,7 @@ if(MGL_HAVE_DOC) file(MAKE_DIRECTORY ${MGL_OUT}/png) file(MAKE_DIRECTORY ${MGL_OUT}/small) file(MAKE_DIRECTORY ${MGL_OUT}/json) + file(MAKE_DIRECTORY ${MGL_OUT}/pdf) file(COPY ${MGL_TEX}/qt.png ${MGL_TEX}/fltk.png ${MGL_TEX}/classes.png ${MGL_TEX}/emblem_sm.png ${MGL_TEX}/datadvance.png DESTINATION ${MGL_OUT}) file(COPY ${MGL_TEX}/toc_ru.html ${MGL_TEX}/toc_fr.html ${MGL_TEX}/toc_en.html ${MGL_TEX}/title.html ${MGL_TEX}/index.html ${MGL_TEX}/json.html ${MGL_TEX}/mathgl.js DESTINATION ${MGL_OUT}) @@ -32,19 +34,27 @@ if(MGL_HAVE_DOC) foreach(SAMPLE ${MGL_PNG}) set(MGL_PNG_N ${MGL_PNG_N} ${MGL_OUT}/png/${SAMPLE}.png) add_custom_command(OUTPUT ${MGL_OUT}/png/${SAMPLE}.png - COMMAND ${CMAKE_BINARY_DIR}/examples/mgl_example -kind=${SAMPLE} + COMMAND mgl_example -kind=${SAMPLE} DEPENDS mgl_example WORKING_DIRECTORY ${MGL_OUT}/png ) set(MGL_PNG_S ${MGL_PNG_S} ${MGL_OUT}/small/${SAMPLE}-sm.png) add_custom_command(OUTPUT ${MGL_OUT}/small/${SAMPLE}-sm.png - COMMAND ${CMAKE_BINARY_DIR}/examples/mgl_example -kind=${SAMPLE} -mini + COMMAND mgl_example -kind=${SAMPLE} -mini DEPENDS mgl_example WORKING_DIRECTORY ${MGL_OUT}/small ) set(MGL_PNG_J ${MGL_PNG_J} ${MGL_OUT}/json/${SAMPLE}.json) add_custom_command(OUTPUT ${MGL_OUT}/json/${SAMPLE}.json - COMMAND ${CMAKE_BINARY_DIR}/examples/mgl_example -json -kind=${SAMPLE} + COMMAND mgl_example -json -kind=${SAMPLE} +# COMMAND ${CMAKE_BINARY_DIR}/examples/mgl_example -json -kind=${SAMPLE} DEPENDS mgl_example WORKING_DIRECTORY ${MGL_OUT}/json ) +if(MGL_HAVE_PDF) + set(MGL_PNG_D ${MGL_PNG_D} ${MGL_OUT}/pdf/${SAMPLE}.pdf) + add_custom_command(OUTPUT ${MGL_OUT}/pdf/${SAMPLE}.pdf + COMMAND mgl_example -pdf -kind=${SAMPLE} + DEPENDS mgl_example + WORKING_DIRECTORY ${MGL_OUT}/pdf ) +endif(MGL_HAVE_PDF) endforeach(SAMPLE) set(list_texi_files_en overview_en.texi example_en.texi ex_mgl_en.texi parse_en.texi formats_en.texi udav_en.texi symbols_en.texi @@ -52,18 +62,11 @@ if(MGL_HAVE_DOC) set(list_texi_files_ru overview_ru.texi example_ru.texi ex_mgl_ru.texi parse_ru.texi formats_ru.texi udav_ru.texi symbols_ru.texi core_ru.texi concept_ru.texi widget_ru.texi data_ru.texi other_ru.texi appendix_ru.texi fdl.texi ) - add_custom_command(OUTPUT ${MGL_OUT}/web_en.pdf - COMMAND ${findtp} -I ${MGL_OUT}/png ${MGL_TEX}/web_en.texi - COMMAND ${findtp} -I ${MGL_OUT}/png ${MGL_TEX}/web_en.texi - COMMAND ${findtp} -I ${MGL_OUT}/png ${MGL_TEX}/web_en.texi - DEPENDS web_en.texi ${MGL_PNG_S} - WORKING_DIRECTORY ${MGL_OUT} - ) - add_custom_command(OUTPUT ${MGL_OUT}/web_en/web_en.html - COMMAND ${findth} -I=${MGL_OUT}/png --split=section -o web_en ${MGL_TEX}/web_en.texi - DEPENDS web_en.texi ${MGL_PNG_S} ${MGL_PNG_J} - WORKING_DIRECTORY ${MGL_OUT} - ) +# add_custom_command(OUTPUT ${MGL_OUT}/web_en/web_en.html +# COMMAND ${findth} -I=${MGL_OUT}/png --split=section -o web_en ${MGL_TEX}/web_en.texi +# DEPENDS web_en.texi ${MGL_PNG_S} ${MGL_PNG_J} +# WORKING_DIRECTORY ${MGL_OUT} +# ) add_custom_command(OUTPUT ${MGL_OUT}/mathgl_en.info COMMAND ${findmi} --no-validate ${MGL_TEX}/mathgl_en.texi @@ -77,7 +80,7 @@ if(MGL_HAVE_DOC) ) add_custom_command(OUTPUT ${MGL_OUT}/doc_en/doc_en.html COMMAND ${findth} -I=${MGL_OUT}/png --split=section --frames -o doc_en ${MGL_TEX}/doc_en.texi - DEPENDS ${list_texi_files_en} doc_en.texi ${MGL_PNG_N} + DEPENDS ${list_texi_files_en} doc_en.texi ${MGL_PNG_N} web_en.texi ${MGL_PNG_S} ${MGL_PNG_J} ${MGL_PNG_D} WORKING_DIRECTORY ${MGL_OUT} ) add_custom_command(OUTPUT ${MGL_OUT}/mgl_en.html @@ -102,18 +105,11 @@ if(MGL_HAVE_DOC) WORKING_DIRECTORY ${MGL_OUT} ) - add_custom_command(OUTPUT ${MGL_OUT}/web_ru.pdf - COMMAND ${findtp} -I ${MGL_OUT}/png ${MGL_TEX}/web_ru.texi - COMMAND ${findtp} -I ${MGL_OUT}/png ${MGL_TEX}/web_ru.texi - COMMAND ${findtp} -I ${MGL_OUT}/png ${MGL_TEX}/web_ru.texi - DEPENDS web_ru.texi ${MGL_PNG_S} - WORKING_DIRECTORY ${MGL_OUT} - ) - add_custom_command(OUTPUT ${MGL_OUT}/web_ru/web_ru.html - COMMAND ${findth} -I=${MGL_OUT}/png --split=section -o web_ru ${MGL_TEX}/web_ru.texi - DEPENDS web_ru.texi ${MGL_PNG_S} ${MGL_PNG_J} - WORKING_DIRECTORY ${MGL_OUT} - ) +# add_custom_command(OUTPUT ${MGL_OUT}/web_ru/web_ru.html +# COMMAND ${findth} -I=${MGL_OUT}/png --split=section -o web_ru ${MGL_TEX}/web_ru.texi +# DEPENDS web_ru.texi ${MGL_PNG_S} ${MGL_PNG_J} +# WORKING_DIRECTORY ${MGL_OUT} +# ) add_custom_command(OUTPUT ${MGL_OUT}/mathgl_ru.info COMMAND ${findmi} --no-validate ${MGL_TEX}/mathgl_ru.texi @@ -127,7 +123,7 @@ if(MGL_HAVE_DOC) ) add_custom_command(OUTPUT ${MGL_OUT}/doc_ru/doc_ru.html COMMAND ${findth} -I=${MGL_OUT}/png --split=section --frames -o doc_ru ${MGL_TEX}/doc_ru.texi - DEPENDS ${list_texi_files_ru} doc_ru.texi ${MGL_PNG_N} + DEPENDS ${list_texi_files_ru} doc_ru.texi ${MGL_PNG_N} web_ru.texi ${MGL_PNG_S} ${MGL_PNG_J} ${MGL_PNG_D} WORKING_DIRECTORY ${MGL_OUT} ) add_custom_command(OUTPUT ${MGL_OUT}/mgl_ru.html @@ -152,7 +148,7 @@ if(MGL_HAVE_DOC) DEPENDS ${MGL_OUT}/mathgl_en/mathgl_en.html DEPENDS ${MGL_OUT}/doc_en/doc_en.html - DEPENDS ${MGL_OUT}/web_en/web_en.html +# DEPENDS ${MGL_OUT}/web_en/web_en.html # DEPENDS ${MGL_OUT}/mathgl_ru.info # DEPENDS ${MGL_OUT}/mathgl_ru.pdf @@ -160,7 +156,7 @@ if(MGL_HAVE_DOC) DEPENDS ${MGL_OUT}/mathgl_ru/mathgl_ru.html DEPENDS ${MGL_OUT}/doc_ru/doc_ru.html - DEPENDS ${MGL_OUT}/web_ru/web_ru.html +# DEPENDS ${MGL_OUT}/web_ru/web_ru.html ) # add_custom_target(clean # COMMAND rm -f * */* diff --git a/texinfo/classes.eps b/texinfo/classes.eps new file mode 100644 index 0000000..9732a29 --- /dev/null +++ b/texinfo/classes.eps @@ -0,0 +1,5344 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: /home/balakin/progr/mathgl-code/mathgl-2x/texinfo/classes.eps +%%Creator: Dia v0.97.2 +%%CreationDate: Tue Nov 27 12:21:29 2012 +%%For: balakin +%%Orientation: Portrait +%%Magnification: 1.0000 +%%BoundingBox: 0 0 682 387 +%%BeginSetup +%%EndSetup +%%EndComments +%%BeginProlog +[ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright +/parenleft /parenright /asterisk /plus /comma /hyphen /period /slash /zero /one +/two /three /four /five /six /seven /eight /nine /colon /semicolon +/less /equal /greater /question /at /A /B /C /D /E +/F /G /H /I /J /K /L /M /N /O +/P /Q /R /S /T /U /V /W /X /Y +/Z /bracketleft /backslash /bracketright /asciicircum /underscore /quoteleft /a /b /c +/d /e /f /g /h /i /j /k /l /m +/n /o /p /q /r /s /t /u /v /w +/x /y /z /braceleft /bar /braceright /asciitilde /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/space /exclamdown /cent /sterling /currency /yen /brokenbar /section /dieresis /copyright +/ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron /degree /plusminus /twosuperior /threesuperior +/acute /mu /paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf +/threequarters /questiondown /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla +/Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis /Eth /Ntilde +/Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex +/Udieresis /Yacute /Thorn /germandbls /agrave /aacute /acircumflex /atilde /adieresis /aring +/ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis +/eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave +/uacute /ucircumflex /udieresis /yacute /thorn /ydieresis] /isolatin1encoding exch def +/cp {closepath} bind def +/c {curveto} bind def +/f {fill} bind def +/a {arc} bind def +/ef {eofill} bind def +/ex {exch} bind def +/gr {grestore} bind def +/gs {gsave} bind def +/sa {save} bind def +/rs {restore} bind def +/l {lineto} bind def +/m {moveto} bind def +/rm {rmoveto} bind def +/n {newpath} bind def +/s {stroke} bind def +/sh {show} bind def +/slc {setlinecap} bind def +/slj {setlinejoin} bind def +/slw {setlinewidth} bind def +/srgb {setrgbcolor} bind def +/rot {rotate} bind def +/sc {scale} bind def +/sd {setdash} bind def +/ff {findfont} bind def +/sf {setfont} bind def +/scf {scalefont} bind def +/sw {stringwidth pop} bind def +/tr {translate} bind def + +/ellipsedict 8 dict def +ellipsedict /mtrx matrix put +/ellipse +{ ellipsedict begin + /endangle exch def + /startangle exch def + /yrad exch def + /xrad exch def + /y exch def + /x exch def /savematrix mtrx currentmatrix def + x y tr xrad yrad sc + 0 0 1 startangle endangle arc + savematrix setmatrix + end +} def + +/mergeprocs { +dup length +3 -1 roll +dup +length +dup +5 1 roll +3 -1 roll +add +array cvx +dup +3 -1 roll +0 exch +putinterval +dup +4 2 roll +putinterval +} bind def +/dpi_x 300 def +/dpi_y 300 def +/conicto { + /to_y exch def + /to_x exch def + /conic_cntrl_y exch def + /conic_cntrl_x exch def + currentpoint + /p0_y exch def + /p0_x exch def + /p1_x p0_x conic_cntrl_x p0_x sub 2 3 div mul add def + /p1_y p0_y conic_cntrl_y p0_y sub 2 3 div mul add def + /p2_x p1_x to_x p0_x sub 1 3 div mul add def + /p2_y p1_y to_y p0_y sub 1 3 div mul add def + p1_x p1_y p2_x p2_y to_x to_y curveto +} bind def +/start_ol { gsave 1.1 dpi_x div dup scale} bind def +/end_ol { closepath fill grestore } bind def +16.590756 -16.590756 scale +0.050000 -19.950000 translate +%%EndProlog + + +0.678431 0.847059 0.901961 srgb +n 0.000000 -0.000000 m 0.000000 1.900000 l 7.000000 1.900000 l 7.000000 -0.000000 l f +0.100000 slw +[0.200000] 0 sd +[0.200000] 0 sd +0 slj +0.000000 0.000000 0.000000 srgb +n 0.000000 -0.000000 m 0.000000 1.900000 l 7.000000 1.900000 l 7.000000 -0.000000 l cp s +gsave 2.116250 1.145000 translate 0.035278 -0.035278 scale +start_ol +2549 2204 moveto +2714 2485 2942 2618 conicto +3171 2752 3482 2752 conicto +3899 2752 4125 2464 conicto +4352 2177 4352 1646 conicto +4352 0 lineto +3904 0 lineto +3904 1632 lineto +3904 2006 3769 2187 conicto +3634 2368 3356 2368 conicto +3017 2368 2820 2146 conicto +2624 1925 2624 1542 conicto +2624 0 lineto +2176 0 lineto +2176 1632 lineto +2176 2008 2041 2188 conicto +1906 2368 1624 2368 conicto +1289 2368 1092 2145 conicto +896 1922 896 1542 conicto +896 0 lineto +448 0 lineto +448 2688 lineto +896 2688 lineto +896 2304 lineto +1046 2534 1255 2643 conicto +1465 2752 1753 2752 conicto +2044 2752 2247 2611 conicto +2451 2471 2549 2204 conicto +end_ol grestore +gsave 2.738161 1.145000 translate 0.035278 -0.035278 scale +start_ol +2176 1375 moveto +2176 1848 1982 2108 conicto +1789 2368 1439 2368 conicto +1091 2368 897 2108 conicto +704 1848 704 1375 conicto +704 904 897 644 conicto +1091 384 1439 384 conicto +1789 384 1982 644 conicto +2176 904 2176 1375 conicto +2624 347 moveto +2624 -347 2323 -685 conicto +2023 -1024 1404 -1024 conicto +1174 -1024 971 -992 conicto +768 -961 576 -896 conicto +576 -448 lineto +766 -546 951 -593 conicto +1137 -640 1329 -640 conicto +1754 -640 1965 -415 conicto +2176 -190 2176 264 conicto +2176 448 lineto +2042 223 1833 111 conicto +1624 0 1332 0 conicto +848 0 552 376 conicto +256 753 256 1375 conicto +256 1999 552 2375 conicto +848 2752 1332 2752 conicto +1624 2752 1833 2640 conicto +2042 2529 2176 2304 conicto +2176 2688 lineto +2624 2688 lineto +2624 347 lineto +end_ol grestore +gsave 3.145281 1.145000 translate 0.035278 -0.035278 scale +start_ol +448 3712 moveto +896 3712 lineto +896 0 lineto +448 0 lineto +448 3712 lineto +end_ol grestore +gsave 3.322609 1.145000 translate 0.035278 -0.035278 scale +start_ol +960 1728 moveto +960 384 lineto +1696 384 lineto +2071 384 2251 550 conicto +2432 716 2432 1057 conicto +2432 1401 2251 1564 conicto +2071 1728 1696 1728 conicto +960 1728 lineto +960 3136 moveto +960 2112 lineto +1639 2112 lineto +1975 2112 2139 2238 conicto +2304 2365 2304 2624 conicto +2304 2881 2139 3008 conicto +1975 3136 1639 3136 conicto +960 3136 lineto +448 3520 moveto +1673 3520 lineto +2222 3520 2519 3300 conicto +2816 3080 2816 2674 conicto +2816 2360 2658 2174 conicto +2500 1989 2193 1943 conicto +2549 1866 2746 1621 conicto +2944 1376 2944 1009 conicto +2944 526 2625 263 conicto +2306 0 1718 0 conicto +448 0 lineto +448 3520 lineto +end_ol grestore +gsave 3.762198 1.145000 translate 0.035278 -0.035278 scale +start_ol +1622 1344 moveto +1104 1344 904 1225 conicto +704 1106 704 818 conicto +704 589 854 454 conicto +1004 320 1262 320 conicto +1618 320 1833 572 conicto +2048 825 2048 1244 conicto +2048 1344 lineto +1622 1344 lineto +2496 1513 moveto +2496 0 lineto +2048 0 lineto +2048 384 lineto +1900 154 1679 45 conicto +1458 -64 1138 -64 conicto +733 -64 494 162 conicto +256 389 256 769 conicto +256 1213 555 1438 conicto +854 1664 1448 1664 conicto +2048 1664 lineto +2048 1712 lineto +2048 2025 1851 2196 conicto +1655 2368 1300 2368 conicto +1074 2368 860 2320 conicto +646 2272 448 2176 conicto +448 2560 lineto +687 2656 912 2704 conicto +1138 2752 1351 2752 conicto +1927 2752 2211 2444 conicto +2496 2137 2496 1513 conicto +end_ol grestore +gsave 4.154327 1.145000 translate 0.035278 -0.035278 scale +start_ol +2112 2560 moveto +2112 2176 lineto +1932 2272 1738 2320 conicto +1544 2368 1336 2368 conicto +1020 2368 862 2269 conicto +704 2170 704 1972 conicto +704 1821 814 1735 conicto +925 1649 1260 1571 conicto +1403 1538 lineto +1857 1438 2048 1255 conicto +2240 1072 2240 744 conicto +2240 371 1954 153 conicto +1668 -64 1167 -64 conicto +958 -64 732 -16 conicto +506 32 256 128 conicto +256 576 lineto +491 448 719 384 conicto +947 320 1170 320 conicto +1470 320 1631 425 conicto +1792 531 1792 722 conicto +1792 900 1678 994 conicto +1564 1089 1177 1177 conicto +1032 1212 lineto +621 1298 438 1476 conicto +256 1654 256 1964 conicto +256 2341 520 2546 conicto +784 2752 1269 2752 conicto +1509 2752 1721 2704 conicto +1933 2656 2112 2560 conicto +end_ol grestore +gsave 4.486512 1.145000 translate 0.035278 -0.035278 scale +start_ol +2752 1480 moveto +2752 1280 lineto +704 1280 lineto +733 811 978 565 conicto +1223 320 1660 320 conicto +1914 320 2152 384 conicto +2390 448 2624 576 conicto +2624 192 lineto +2388 67 2140 1 conicto +1893 -64 1639 -64 conicto +1001 -64 628 309 conicto +256 683 256 1320 conicto +256 1979 613 2365 conicto +970 2752 1576 2752 conicto +2120 2752 2436 2410 conicto +2752 2068 2752 1480 conicto +2304 1600 moveto +2299 1950 2099 2159 conicto +1900 2368 1572 2368 conicto +1200 2368 976 2166 conicto +753 1964 719 1597 conicto +2304 1600 lineto +end_ol grestore +0.678431 0.847059 0.901961 srgb +n 0.000000 3.000000 m 0.000000 4.900000 l 7.000000 4.900000 l 7.000000 3.000000 l f +0.100000 slw +[] 0 sd +[] 0 sd +0 slj +0.000000 0.000000 0.000000 srgb +n 0.000000 3.000000 m 0.000000 4.900000 l 7.000000 4.900000 l 7.000000 3.000000 l cp s +gsave 1.721250 4.145000 translate 0.035278 -0.035278 scale +start_ol +2549 2204 moveto +2714 2485 2942 2618 conicto +3171 2752 3482 2752 conicto +3899 2752 4125 2464 conicto +4352 2177 4352 1646 conicto +4352 0 lineto +3904 0 lineto +3904 1632 lineto +3904 2006 3769 2187 conicto +3634 2368 3356 2368 conicto +3017 2368 2820 2146 conicto +2624 1925 2624 1542 conicto +2624 0 lineto +2176 0 lineto +2176 1632 lineto +2176 2008 2041 2188 conicto +1906 2368 1624 2368 conicto +1289 2368 1092 2145 conicto +896 1922 896 1542 conicto +896 0 lineto +448 0 lineto +448 2688 lineto +896 2688 lineto +896 2304 lineto +1046 2534 1255 2643 conicto +1465 2752 1753 2752 conicto +2044 2752 2247 2611 conicto +2451 2471 2549 2204 conicto +end_ol grestore +gsave 2.343161 4.145000 translate 0.035278 -0.035278 scale +start_ol +2176 1375 moveto +2176 1848 1982 2108 conicto +1789 2368 1439 2368 conicto +1091 2368 897 2108 conicto +704 1848 704 1375 conicto +704 904 897 644 conicto +1091 384 1439 384 conicto +1789 384 1982 644 conicto +2176 904 2176 1375 conicto +2624 347 moveto +2624 -347 2323 -685 conicto +2023 -1024 1404 -1024 conicto +1174 -1024 971 -992 conicto +768 -961 576 -896 conicto +576 -448 lineto +766 -546 951 -593 conicto +1137 -640 1329 -640 conicto +1754 -640 1965 -415 conicto +2176 -190 2176 264 conicto +2176 448 lineto +2042 223 1833 111 conicto +1624 0 1332 0 conicto +848 0 552 376 conicto +256 753 256 1375 conicto +256 1999 552 2375 conicto +848 2752 1332 2752 conicto +1624 2752 1833 2640 conicto +2042 2529 2176 2304 conicto +2176 2688 lineto +2624 2688 lineto +2624 347 lineto +end_ol grestore +gsave 2.750281 4.145000 translate 0.035278 -0.035278 scale +start_ol +448 3712 moveto +896 3712 lineto +896 0 lineto +448 0 lineto +448 3712 lineto +end_ol grestore +gsave 2.927609 4.145000 translate 0.035278 -0.035278 scale +start_ol +3136 3264 moveto +3136 2752 lineto +2892 2977 2616 3088 conicto +2340 3200 2030 3200 conicto +1418 3200 1093 2829 conicto +768 2459 768 1759 conicto +768 1061 1093 690 conicto +1418 320 2030 320 conicto +2340 320 2616 431 conicto +2892 543 3136 768 conicto +3136 256 lineto +2882 96 2599 16 conicto +2316 -64 2000 -64 conicto +1189 -64 722 424 conicto +256 913 256 1759 conicto +256 2607 722 3095 conicto +1189 3584 2000 3584 conicto +2320 3584 2603 3504 conicto +2887 3424 3136 3264 conicto +end_ol grestore +gsave 3.374689 4.145000 translate 0.035278 -0.035278 scale +start_ol +1622 1344 moveto +1104 1344 904 1225 conicto +704 1106 704 818 conicto +704 589 854 454 conicto +1004 320 1262 320 conicto +1618 320 1833 572 conicto +2048 825 2048 1244 conicto +2048 1344 lineto +1622 1344 lineto +2496 1513 moveto +2496 0 lineto +2048 0 lineto +2048 384 lineto +1900 154 1679 45 conicto +1458 -64 1138 -64 conicto +733 -64 494 162 conicto +256 389 256 769 conicto +256 1213 555 1438 conicto +854 1664 1448 1664 conicto +2048 1664 lineto +2048 1712 lineto +2048 2025 1851 2196 conicto +1655 2368 1300 2368 conicto +1074 2368 860 2320 conicto +646 2272 448 2176 conicto +448 2560 lineto +687 2656 912 2704 conicto +1138 2752 1351 2752 conicto +1927 2752 2211 2444 conicto +2496 2137 2496 1513 conicto +end_ol grestore +gsave 3.766818 4.145000 translate 0.035278 -0.035278 scale +start_ol +2688 1646 moveto +2688 0 lineto +2240 0 lineto +2240 1632 lineto +2240 2001 2093 2184 conicto +1947 2368 1654 2368 conicto +1302 2368 1099 2146 conicto +896 1925 896 1542 conicto +896 0 lineto +448 0 lineto +448 2688 lineto +896 2688 lineto +896 2304 lineto +1053 2529 1266 2640 conicto +1479 2752 1757 2752 conicto +2217 2752 2452 2471 conicto +2688 2191 2688 1646 conicto +end_ol grestore +gsave 4.171432 4.145000 translate 0.035278 -0.035278 scale +start_ol +128 2688 moveto +586 2688 lineto +1408 432 lineto +2230 2688 lineto +2688 2688 lineto +1702 0 lineto +1114 0 lineto +128 2688 lineto +end_ol grestore +gsave 4.551076 4.145000 translate 0.035278 -0.035278 scale +start_ol +1622 1344 moveto +1104 1344 904 1225 conicto +704 1106 704 818 conicto +704 589 854 454 conicto +1004 320 1262 320 conicto +1618 320 1833 572 conicto +2048 825 2048 1244 conicto +2048 1344 lineto +1622 1344 lineto +2496 1513 moveto +2496 0 lineto +2048 0 lineto +2048 384 lineto +1900 154 1679 45 conicto +1458 -64 1138 -64 conicto +733 -64 494 162 conicto +256 389 256 769 conicto +256 1213 555 1438 conicto +854 1664 1448 1664 conicto +2048 1664 lineto +2048 1712 lineto +2048 2025 1851 2196 conicto +1655 2368 1300 2368 conicto +1074 2368 860 2320 conicto +646 2272 448 2176 conicto +448 2560 lineto +687 2656 912 2704 conicto +1138 2752 1351 2752 conicto +1927 2752 2211 2444 conicto +2496 2137 2496 1513 conicto +end_ol grestore +gsave 4.943205 4.145000 translate 0.035278 -0.035278 scale +start_ol +2112 2560 moveto +2112 2176 lineto +1932 2272 1738 2320 conicto +1544 2368 1336 2368 conicto +1020 2368 862 2269 conicto +704 2170 704 1972 conicto +704 1821 814 1735 conicto +925 1649 1260 1571 conicto +1403 1538 lineto +1857 1438 2048 1255 conicto +2240 1072 2240 744 conicto +2240 371 1954 153 conicto +1668 -64 1167 -64 conicto +958 -64 732 -16 conicto +506 32 256 128 conicto +256 576 lineto +491 448 719 384 conicto +947 320 1170 320 conicto +1470 320 1631 425 conicto +1792 531 1792 722 conicto +1792 900 1678 994 conicto +1564 1089 1177 1177 conicto +1032 1212 lineto +621 1298 438 1476 conicto +256 1654 256 1964 conicto +256 2341 520 2546 conicto +784 2752 1269 2752 conicto +1509 2752 1721 2704 conicto +1933 2656 2112 2560 conicto +end_ol grestore +0.678431 0.847059 0.901961 srgb +n 0.000000 6.000000 m 0.000000 7.900000 l 7.000000 7.900000 l 7.000000 6.000000 l f +0.100000 slw +[0.200000] 0 sd +[0.200000] 0 sd +0 slj +0.000000 0.000000 0.000000 srgb +n 0.000000 6.000000 m 0.000000 7.900000 l 7.000000 7.900000 l 7.000000 6.000000 l cp s +gsave 0.998750 7.145000 translate 0.035278 -0.035278 scale +start_ol +2549 2204 moveto +2714 2485 2942 2618 conicto +3171 2752 3482 2752 conicto +3899 2752 4125 2464 conicto +4352 2177 4352 1646 conicto +4352 0 lineto +3904 0 lineto +3904 1632 lineto +3904 2006 3769 2187 conicto +3634 2368 3356 2368 conicto +3017 2368 2820 2146 conicto +2624 1925 2624 1542 conicto +2624 0 lineto +2176 0 lineto +2176 1632 lineto +2176 2008 2041 2188 conicto +1906 2368 1624 2368 conicto +1289 2368 1092 2145 conicto +896 1922 896 1542 conicto +896 0 lineto +448 0 lineto +448 2688 lineto +896 2688 lineto +896 2304 lineto +1046 2534 1255 2643 conicto +1465 2752 1753 2752 conicto +2044 2752 2247 2611 conicto +2451 2471 2549 2204 conicto +end_ol grestore +gsave 1.620661 7.145000 translate 0.035278 -0.035278 scale +start_ol +2176 1375 moveto +2176 1848 1982 2108 conicto +1789 2368 1439 2368 conicto +1091 2368 897 2108 conicto +704 1848 704 1375 conicto +704 904 897 644 conicto +1091 384 1439 384 conicto +1789 384 1982 644 conicto +2176 904 2176 1375 conicto +2624 347 moveto +2624 -347 2323 -685 conicto +2023 -1024 1404 -1024 conicto +1174 -1024 971 -992 conicto +768 -961 576 -896 conicto +576 -448 lineto +766 -546 951 -593 conicto +1137 -640 1329 -640 conicto +1754 -640 1965 -415 conicto +2176 -190 2176 264 conicto +2176 448 lineto +2042 223 1833 111 conicto +1624 0 1332 0 conicto +848 0 552 376 conicto +256 753 256 1375 conicto +256 1999 552 2375 conicto +848 2752 1332 2752 conicto +1624 2752 1833 2640 conicto +2042 2529 2176 2304 conicto +2176 2688 lineto +2624 2688 lineto +2624 347 lineto +end_ol grestore +gsave 2.027781 7.145000 translate 0.035278 -0.035278 scale +start_ol +448 3712 moveto +896 3712 lineto +896 0 lineto +448 0 lineto +448 3712 lineto +end_ol grestore +gsave 2.205109 7.145000 translate 0.035278 -0.035278 scale +start_ol +3136 3264 moveto +3136 2752 lineto +2892 2977 2616 3088 conicto +2340 3200 2030 3200 conicto +1418 3200 1093 2829 conicto +768 2459 768 1759 conicto +768 1061 1093 690 conicto +1418 320 2030 320 conicto +2340 320 2616 431 conicto +2892 543 3136 768 conicto +3136 256 lineto +2882 96 2599 16 conicto +2316 -64 2000 -64 conicto +1189 -64 722 424 conicto +256 913 256 1759 conicto +256 2607 722 3095 conicto +1189 3584 2000 3584 conicto +2320 3584 2603 3504 conicto +2887 3424 3136 3264 conicto +end_ol grestore +gsave 2.652189 7.145000 translate 0.035278 -0.035278 scale +start_ol +1622 1344 moveto +1104 1344 904 1225 conicto +704 1106 704 818 conicto +704 589 854 454 conicto +1004 320 1262 320 conicto +1618 320 1833 572 conicto +2048 825 2048 1244 conicto +2048 1344 lineto +1622 1344 lineto +2496 1513 moveto +2496 0 lineto +2048 0 lineto +2048 384 lineto +1900 154 1679 45 conicto +1458 -64 1138 -64 conicto +733 -64 494 162 conicto +256 389 256 769 conicto +256 1213 555 1438 conicto +854 1664 1448 1664 conicto +2048 1664 lineto +2048 1712 lineto +2048 2025 1851 2196 conicto +1655 2368 1300 2368 conicto +1074 2368 860 2320 conicto +646 2272 448 2176 conicto +448 2560 lineto +687 2656 912 2704 conicto +1138 2752 1351 2752 conicto +1927 2752 2211 2444 conicto +2496 2137 2496 1513 conicto +end_ol grestore +gsave 3.044318 7.145000 translate 0.035278 -0.035278 scale +start_ol +2688 1646 moveto +2688 0 lineto +2240 0 lineto +2240 1632 lineto +2240 2001 2093 2184 conicto +1947 2368 1654 2368 conicto +1302 2368 1099 2146 conicto +896 1925 896 1542 conicto +896 0 lineto +448 0 lineto +448 2688 lineto +896 2688 lineto +896 2304 lineto +1053 2529 1266 2640 conicto +1479 2752 1757 2752 conicto +2217 2752 2452 2471 conicto +2688 2191 2688 1646 conicto +end_ol grestore +gsave 3.448932 7.145000 translate 0.035278 -0.035278 scale +start_ol +128 2688 moveto +586 2688 lineto +1408 432 lineto +2230 2688 lineto +2688 2688 lineto +1702 0 lineto +1114 0 lineto +128 2688 lineto +end_ol grestore +gsave 3.828576 7.145000 translate 0.035278 -0.035278 scale +start_ol +1622 1344 moveto +1104 1344 904 1225 conicto +704 1106 704 818 conicto +704 589 854 454 conicto +1004 320 1262 320 conicto +1618 320 1833 572 conicto +2048 825 2048 1244 conicto +2048 1344 lineto +1622 1344 lineto +2496 1513 moveto +2496 0 lineto +2048 0 lineto +2048 384 lineto +1900 154 1679 45 conicto +1458 -64 1138 -64 conicto +733 -64 494 162 conicto +256 389 256 769 conicto +256 1213 555 1438 conicto +854 1664 1448 1664 conicto +2048 1664 lineto +2048 1712 lineto +2048 2025 1851 2196 conicto +1655 2368 1300 2368 conicto +1074 2368 860 2320 conicto +646 2272 448 2176 conicto +448 2560 lineto +687 2656 912 2704 conicto +1138 2752 1351 2752 conicto +1927 2752 2211 2444 conicto +2496 2137 2496 1513 conicto +end_ol grestore +gsave 4.220705 7.145000 translate 0.035278 -0.035278 scale +start_ol +2112 2560 moveto +2112 2176 lineto +1932 2272 1738 2320 conicto +1544 2368 1336 2368 conicto +1020 2368 862 2269 conicto +704 2170 704 1972 conicto +704 1821 814 1735 conicto +925 1649 1260 1571 conicto +1403 1538 lineto +1857 1438 2048 1255 conicto +2240 1072 2240 744 conicto +2240 371 1954 153 conicto +1668 -64 1167 -64 conicto +958 -64 732 -16 conicto +506 32 256 128 conicto +256 576 lineto +491 448 719 384 conicto +947 320 1170 320 conicto +1470 320 1631 425 conicto +1792 531 1792 722 conicto +1792 900 1678 994 conicto +1564 1089 1177 1177 conicto +1032 1212 lineto +621 1298 438 1476 conicto +256 1654 256 1964 conicto +256 2341 520 2546 conicto +784 2752 1269 2752 conicto +1509 2752 1721 2704 conicto +1933 2656 2112 2560 conicto +end_ol grestore +gsave 4.552890 7.145000 translate 0.035278 -0.035278 scale +start_ol +192 3520 moveto +676 3520 lineto +1420 545 lineto +2162 3520 lineto +2700 3520 lineto +3444 545 lineto +4186 3520 lineto +4672 3520 lineto +3783 0 lineto +3181 0 lineto +2434 3056 lineto +1681 0 lineto +1079 0 lineto +192 3520 lineto +end_ol grestore +gsave 5.184797 7.145000 translate 0.035278 -0.035278 scale +start_ol +2688 1646 moveto +2688 0 lineto +2240 0 lineto +2240 1632 lineto +2240 2001 2093 2184 conicto +1947 2368 1654 2368 conicto +1302 2368 1099 2146 conicto +896 1925 896 1542 conicto +896 0 lineto +448 0 lineto +448 2688 lineto +896 2688 lineto +896 2304 lineto +1053 2529 1266 2640 conicto +1479 2752 1757 2752 conicto +2217 2752 2452 2471 conicto +2688 2191 2688 1646 conicto +end_ol grestore +gsave 5.589411 7.145000 translate 0.035278 -0.035278 scale +start_ol +2176 2304 moveto +2176 3712 lineto +2624 3712 lineto +2624 0 lineto +2176 0 lineto +2176 384 lineto +2040 157 1832 46 conicto +1624 -64 1332 -64 conicto +855 -64 555 324 conicto +256 712 256 1344 conicto +256 1976 555 2364 conicto +855 2752 1332 2752 conicto +1624 2752 1832 2641 conicto +2040 2531 2176 2304 conicto +704 1344 moveto +704 865 900 592 conicto +1096 320 1439 320 conicto +1782 320 1979 592 conicto +2176 865 2176 1344 conicto +2176 1823 1979 2095 conicto +1782 2368 1439 2368 conicto +1096 2368 900 2095 conicto +704 1823 704 1344 conicto +end_ol grestore +0.678431 0.847059 0.901961 srgb +n 8.000000 5.000000 m 8.000000 6.900000 l 15.000000 6.900000 l 15.000000 5.000000 l f +0.100000 slw +[] 0 sd +[] 0 sd +0 slj +0.000000 0.000000 0.000000 srgb +n 8.000000 5.000000 m 8.000000 6.900000 l 15.000000 6.900000 l 15.000000 5.000000 l cp s +gsave 9.295000 6.145000 translate 0.035278 -0.035278 scale +start_ol +2549 2204 moveto +2714 2485 2942 2618 conicto +3171 2752 3482 2752 conicto +3899 2752 4125 2464 conicto +4352 2177 4352 1646 conicto +4352 0 lineto +3904 0 lineto +3904 1632 lineto +3904 2006 3769 2187 conicto +3634 2368 3356 2368 conicto +3017 2368 2820 2146 conicto +2624 1925 2624 1542 conicto +2624 0 lineto +2176 0 lineto +2176 1632 lineto +2176 2008 2041 2188 conicto +1906 2368 1624 2368 conicto +1289 2368 1092 2145 conicto +896 1922 896 1542 conicto +896 0 lineto +448 0 lineto +448 2688 lineto +896 2688 lineto +896 2304 lineto +1046 2534 1255 2643 conicto +1465 2752 1753 2752 conicto +2044 2752 2247 2611 conicto +2451 2471 2549 2204 conicto +end_ol grestore +gsave 9.916911 6.145000 translate 0.035278 -0.035278 scale +start_ol +2176 1375 moveto +2176 1848 1982 2108 conicto +1789 2368 1439 2368 conicto +1091 2368 897 2108 conicto +704 1848 704 1375 conicto +704 904 897 644 conicto +1091 384 1439 384 conicto +1789 384 1982 644 conicto +2176 904 2176 1375 conicto +2624 347 moveto +2624 -347 2323 -685 conicto +2023 -1024 1404 -1024 conicto +1174 -1024 971 -992 conicto +768 -961 576 -896 conicto +576 -448 lineto +766 -546 951 -593 conicto +1137 -640 1329 -640 conicto +1754 -640 1965 -415 conicto +2176 -190 2176 264 conicto +2176 448 lineto +2042 223 1833 111 conicto +1624 0 1332 0 conicto +848 0 552 376 conicto +256 753 256 1375 conicto +256 1999 552 2375 conicto +848 2752 1332 2752 conicto +1624 2752 1833 2640 conicto +2042 2529 2176 2304 conicto +2176 2688 lineto +2624 2688 lineto +2624 347 lineto +end_ol grestore +gsave 10.324031 6.145000 translate 0.035278 -0.035278 scale +start_ol +448 3712 moveto +896 3712 lineto +896 0 lineto +448 0 lineto +448 3712 lineto +end_ol grestore +gsave 10.501359 6.145000 translate 0.035278 -0.035278 scale +start_ol +3136 3264 moveto +3136 2752 lineto +2892 2977 2616 3088 conicto +2340 3200 2030 3200 conicto +1418 3200 1093 2829 conicto +768 2459 768 1759 conicto +768 1061 1093 690 conicto +1418 320 2030 320 conicto +2340 320 2616 431 conicto +2892 543 3136 768 conicto +3136 256 lineto +2882 96 2599 16 conicto +2316 -64 2000 -64 conicto +1189 -64 722 424 conicto +256 913 256 1759 conicto +256 2607 722 3095 conicto +1189 3584 2000 3584 conicto +2320 3584 2603 3504 conicto +2887 3424 3136 3264 conicto +end_ol grestore +gsave 10.948439 6.145000 translate 0.035278 -0.035278 scale +start_ol +1622 1344 moveto +1104 1344 904 1225 conicto +704 1106 704 818 conicto +704 589 854 454 conicto +1004 320 1262 320 conicto +1618 320 1833 572 conicto +2048 825 2048 1244 conicto +2048 1344 lineto +1622 1344 lineto +2496 1513 moveto +2496 0 lineto +2048 0 lineto +2048 384 lineto +1900 154 1679 45 conicto +1458 -64 1138 -64 conicto +733 -64 494 162 conicto +256 389 256 769 conicto +256 1213 555 1438 conicto +854 1664 1448 1664 conicto +2048 1664 lineto +2048 1712 lineto +2048 2025 1851 2196 conicto +1655 2368 1300 2368 conicto +1074 2368 860 2320 conicto +646 2272 448 2176 conicto +448 2560 lineto +687 2656 912 2704 conicto +1138 2752 1351 2752 conicto +1927 2752 2211 2444 conicto +2496 2137 2496 1513 conicto +end_ol grestore +gsave 11.340568 6.145000 translate 0.035278 -0.035278 scale +start_ol +2688 1646 moveto +2688 0 lineto +2240 0 lineto +2240 1632 lineto +2240 2001 2093 2184 conicto +1947 2368 1654 2368 conicto +1302 2368 1099 2146 conicto +896 1925 896 1542 conicto +896 0 lineto +448 0 lineto +448 2688 lineto +896 2688 lineto +896 2304 lineto +1053 2529 1266 2640 conicto +1479 2752 1757 2752 conicto +2217 2752 2452 2471 conicto +2688 2191 2688 1646 conicto +end_ol grestore +gsave 11.745182 6.145000 translate 0.035278 -0.035278 scale +start_ol +128 2688 moveto +586 2688 lineto +1408 432 lineto +2230 2688 lineto +2688 2688 lineto +1702 0 lineto +1114 0 lineto +128 2688 lineto +end_ol grestore +gsave 12.124826 6.145000 translate 0.035278 -0.035278 scale +start_ol +1622 1344 moveto +1104 1344 904 1225 conicto +704 1106 704 818 conicto +704 589 854 454 conicto +1004 320 1262 320 conicto +1618 320 1833 572 conicto +2048 825 2048 1244 conicto +2048 1344 lineto +1622 1344 lineto +2496 1513 moveto +2496 0 lineto +2048 0 lineto +2048 384 lineto +1900 154 1679 45 conicto +1458 -64 1138 -64 conicto +733 -64 494 162 conicto +256 389 256 769 conicto +256 1213 555 1438 conicto +854 1664 1448 1664 conicto +2048 1664 lineto +2048 1712 lineto +2048 2025 1851 2196 conicto +1655 2368 1300 2368 conicto +1074 2368 860 2320 conicto +646 2272 448 2176 conicto +448 2560 lineto +687 2656 912 2704 conicto +1138 2752 1351 2752 conicto +1927 2752 2211 2444 conicto +2496 2137 2496 1513 conicto +end_ol grestore +gsave 12.516955 6.145000 translate 0.035278 -0.035278 scale +start_ol +2112 2560 moveto +2112 2176 lineto +1932 2272 1738 2320 conicto +1544 2368 1336 2368 conicto +1020 2368 862 2269 conicto +704 2170 704 1972 conicto +704 1821 814 1735 conicto +925 1649 1260 1571 conicto +1403 1538 lineto +1857 1438 2048 1255 conicto +2240 1072 2240 744 conicto +2240 371 1954 153 conicto +1668 -64 1167 -64 conicto +958 -64 732 -16 conicto +506 32 256 128 conicto +256 576 lineto +491 448 719 384 conicto +947 320 1170 320 conicto +1470 320 1631 425 conicto +1792 531 1792 722 conicto +1792 900 1678 994 conicto +1564 1089 1177 1177 conicto +1032 1212 lineto +621 1298 438 1476 conicto +256 1654 256 1964 conicto +256 2341 520 2546 conicto +784 2752 1269 2752 conicto +1509 2752 1721 2704 conicto +1933 2656 2112 2560 conicto +end_ol grestore +gsave 12.849140 6.145000 translate 0.035278 -0.035278 scale +start_ol +2816 504 moveto +2816 1472 lineto +2048 1472 lineto +2048 1856 lineto +3328 1856 lineto +3328 325 lineto +3052 133 2720 34 conicto +2388 -64 2011 -64 conicto +1187 -64 721 417 conicto +256 899 256 1759 conicto +256 2621 725 3102 conicto +1195 3584 2028 3584 conicto +2375 3584 2687 3503 conicto +3000 3422 3264 3264 conicto +3264 2752 lineto +2998 2975 2699 3087 conicto +2400 3200 2071 3200 conicto +1420 3200 1094 2838 conicto +768 2476 768 1759 conicto +768 1044 1084 682 conicto +1400 320 2030 320 conicto +2276 320 2469 365 conicto +2662 410 2816 504 conicto +end_ol grestore +gsave 13.343671 6.145000 translate 0.035278 -0.035278 scale +start_ol +448 3520 moveto +960 3520 lineto +960 384 lineto +2688 384 lineto +2688 0 lineto +448 0 lineto +448 3520 lineto +end_ol grestore +1.000000 1.000000 1.000000 srgb +n 16.000000 5.000000 m 16.000000 6.900000 l 23.000000 6.900000 l 23.000000 5.000000 l f +0.100000 slw +[] 0 sd +[] 0 sd +0 slj +0.000000 0.000000 0.000000 srgb +n 16.000000 5.000000 m 16.000000 6.900000 l 23.000000 6.900000 l 23.000000 5.000000 l cp s +gsave 16.882500 6.145000 translate 0.035278 -0.035278 scale +start_ol +2549 2204 moveto +2714 2485 2942 2618 conicto +3171 2752 3482 2752 conicto +3899 2752 4125 2464 conicto +4352 2177 4352 1646 conicto +4352 0 lineto +3904 0 lineto +3904 1632 lineto +3904 2006 3769 2187 conicto +3634 2368 3356 2368 conicto +3017 2368 2820 2146 conicto +2624 1925 2624 1542 conicto +2624 0 lineto +2176 0 lineto +2176 1632 lineto +2176 2008 2041 2188 conicto +1906 2368 1624 2368 conicto +1289 2368 1092 2145 conicto +896 1922 896 1542 conicto +896 0 lineto +448 0 lineto +448 2688 lineto +896 2688 lineto +896 2304 lineto +1046 2534 1255 2643 conicto +1465 2752 1753 2752 conicto +2044 2752 2247 2611 conicto +2451 2471 2549 2204 conicto +end_ol grestore +gsave 17.504411 6.145000 translate 0.035278 -0.035278 scale +start_ol +2176 1375 moveto +2176 1848 1982 2108 conicto +1789 2368 1439 2368 conicto +1091 2368 897 2108 conicto +704 1848 704 1375 conicto +704 904 897 644 conicto +1091 384 1439 384 conicto +1789 384 1982 644 conicto +2176 904 2176 1375 conicto +2624 347 moveto +2624 -347 2323 -685 conicto +2023 -1024 1404 -1024 conicto +1174 -1024 971 -992 conicto +768 -961 576 -896 conicto +576 -448 lineto +766 -546 951 -593 conicto +1137 -640 1329 -640 conicto +1754 -640 1965 -415 conicto +2176 -190 2176 264 conicto +2176 448 lineto +2042 223 1833 111 conicto +1624 0 1332 0 conicto +848 0 552 376 conicto +256 753 256 1375 conicto +256 1999 552 2375 conicto +848 2752 1332 2752 conicto +1624 2752 1833 2640 conicto +2042 2529 2176 2304 conicto +2176 2688 lineto +2624 2688 lineto +2624 347 lineto +end_ol grestore +gsave 17.911531 6.145000 translate 0.035278 -0.035278 scale +start_ol +448 3712 moveto +896 3712 lineto +896 0 lineto +448 0 lineto +448 3712 lineto +end_ol grestore +gsave 18.088859 6.145000 translate 0.035278 -0.035278 scale +start_ol +3136 3264 moveto +3136 2752 lineto +2892 2977 2616 3088 conicto +2340 3200 2030 3200 conicto +1418 3200 1093 2829 conicto +768 2459 768 1759 conicto +768 1061 1093 690 conicto +1418 320 2030 320 conicto +2340 320 2616 431 conicto +2892 543 3136 768 conicto +3136 256 lineto +2882 96 2599 16 conicto +2316 -64 2000 -64 conicto +1189 -64 722 424 conicto +256 913 256 1759 conicto +256 2607 722 3095 conicto +1189 3584 2000 3584 conicto +2320 3584 2603 3504 conicto +2887 3424 3136 3264 conicto +end_ol grestore +gsave 18.535939 6.145000 translate 0.035278 -0.035278 scale +start_ol +1622 1344 moveto +1104 1344 904 1225 conicto +704 1106 704 818 conicto +704 589 854 454 conicto +1004 320 1262 320 conicto +1618 320 1833 572 conicto +2048 825 2048 1244 conicto +2048 1344 lineto +1622 1344 lineto +2496 1513 moveto +2496 0 lineto +2048 0 lineto +2048 384 lineto +1900 154 1679 45 conicto +1458 -64 1138 -64 conicto +733 -64 494 162 conicto +256 389 256 769 conicto +256 1213 555 1438 conicto +854 1664 1448 1664 conicto +2048 1664 lineto +2048 1712 lineto +2048 2025 1851 2196 conicto +1655 2368 1300 2368 conicto +1074 2368 860 2320 conicto +646 2272 448 2176 conicto +448 2560 lineto +687 2656 912 2704 conicto +1138 2752 1351 2752 conicto +1927 2752 2211 2444 conicto +2496 2137 2496 1513 conicto +end_ol grestore +gsave 18.928068 6.145000 translate 0.035278 -0.035278 scale +start_ol +2688 1646 moveto +2688 0 lineto +2240 0 lineto +2240 1632 lineto +2240 2001 2093 2184 conicto +1947 2368 1654 2368 conicto +1302 2368 1099 2146 conicto +896 1925 896 1542 conicto +896 0 lineto +448 0 lineto +448 2688 lineto +896 2688 lineto +896 2304 lineto +1053 2529 1266 2640 conicto +1479 2752 1757 2752 conicto +2217 2752 2452 2471 conicto +2688 2191 2688 1646 conicto +end_ol grestore +gsave 19.332682 6.145000 translate 0.035278 -0.035278 scale +start_ol +128 2688 moveto +586 2688 lineto +1408 432 lineto +2230 2688 lineto +2688 2688 lineto +1702 0 lineto +1114 0 lineto +128 2688 lineto +end_ol grestore +gsave 19.712326 6.145000 translate 0.035278 -0.035278 scale +start_ol +1622 1344 moveto +1104 1344 904 1225 conicto +704 1106 704 818 conicto +704 589 854 454 conicto +1004 320 1262 320 conicto +1618 320 1833 572 conicto +2048 825 2048 1244 conicto +2048 1344 lineto +1622 1344 lineto +2496 1513 moveto +2496 0 lineto +2048 0 lineto +2048 384 lineto +1900 154 1679 45 conicto +1458 -64 1138 -64 conicto +733 -64 494 162 conicto +256 389 256 769 conicto +256 1213 555 1438 conicto +854 1664 1448 1664 conicto +2048 1664 lineto +2048 1712 lineto +2048 2025 1851 2196 conicto +1655 2368 1300 2368 conicto +1074 2368 860 2320 conicto +646 2272 448 2176 conicto +448 2560 lineto +687 2656 912 2704 conicto +1138 2752 1351 2752 conicto +1927 2752 2211 2444 conicto +2496 2137 2496 1513 conicto +end_ol grestore +gsave 20.104455 6.145000 translate 0.035278 -0.035278 scale +start_ol +2112 2560 moveto +2112 2176 lineto +1932 2272 1738 2320 conicto +1544 2368 1336 2368 conicto +1020 2368 862 2269 conicto +704 2170 704 1972 conicto +704 1821 814 1735 conicto +925 1649 1260 1571 conicto +1403 1538 lineto +1857 1438 2048 1255 conicto +2240 1072 2240 744 conicto +2240 371 1954 153 conicto +1668 -64 1167 -64 conicto +958 -64 732 -16 conicto +506 32 256 128 conicto +256 576 lineto +491 448 719 384 conicto +947 320 1170 320 conicto +1470 320 1631 425 conicto +1792 531 1792 722 conicto +1792 900 1678 994 conicto +1564 1089 1177 1177 conicto +1032 1212 lineto +621 1298 438 1476 conicto +256 1654 256 1964 conicto +256 2341 520 2546 conicto +784 2752 1269 2752 conicto +1509 2752 1721 2704 conicto +1933 2656 2112 2560 conicto +end_ol grestore +gsave 20.436640 6.145000 translate 0.035278 -0.035278 scale +start_ol +2816 504 moveto +2816 1472 lineto +2048 1472 lineto +2048 1856 lineto +3328 1856 lineto +3328 325 lineto +3052 133 2720 34 conicto +2388 -64 2011 -64 conicto +1187 -64 721 417 conicto +256 899 256 1759 conicto +256 2621 725 3102 conicto +1195 3584 2028 3584 conicto +2375 3584 2687 3503 conicto +3000 3422 3264 3264 conicto +3264 2752 lineto +2998 2975 2699 3087 conicto +2400 3200 2071 3200 conicto +1420 3200 1094 2838 conicto +768 2476 768 1759 conicto +768 1044 1084 682 conicto +1400 320 2030 320 conicto +2276 320 2469 365 conicto +2662 410 2816 504 conicto +end_ol grestore +gsave 20.931171 6.145000 translate 0.035278 -0.035278 scale +start_ol +448 3520 moveto +960 3520 lineto +960 384 lineto +2688 384 lineto +2688 0 lineto +448 0 lineto +448 3520 lineto +end_ol grestore +gsave 21.255864 6.145000 translate 0.035278 -0.035278 scale +start_ol +448 3520 moveto +960 3520 lineto +960 1383 lineto +960 817 1156 568 conicto +1353 320 1793 320 conicto +2231 320 2427 568 conicto +2624 817 2624 1383 conicto +2624 3520 lineto +3136 3520 lineto +3136 1324 lineto +3136 637 2796 286 conicto +2456 -64 1793 -64 conicto +1128 -64 788 286 conicto +448 637 448 1324 conicto +448 3520 lineto +end_ol grestore +gsave 21.722920 6.145000 translate 0.035278 -0.035278 scale +start_ol +-64 3520 moveto +3008 3520 lineto +3008 3136 lineto +1728 3136 lineto +1728 0 lineto +1216 0 lineto +1216 3136 lineto +-64 3136 lineto +-64 3520 lineto +end_ol grestore +1.000000 1.000000 1.000000 srgb +n 5.000000 9.000000 m 5.000000 10.900000 l 12.000000 10.900000 l 12.000000 9.000000 l f +0.100000 slw +[] 0 sd +[] 0 sd +0 slj +0.000000 0.000000 0.000000 srgb +n 5.000000 9.000000 m 5.000000 10.900000 l 12.000000 10.900000 l 12.000000 9.000000 l cp s +gsave 5.997500 10.145000 translate 0.035278 -0.035278 scale +start_ol +2549 2204 moveto +2714 2485 2942 2618 conicto +3171 2752 3482 2752 conicto +3899 2752 4125 2464 conicto +4352 2177 4352 1646 conicto +4352 0 lineto +3904 0 lineto +3904 1632 lineto +3904 2006 3769 2187 conicto +3634 2368 3356 2368 conicto +3017 2368 2820 2146 conicto +2624 1925 2624 1542 conicto +2624 0 lineto +2176 0 lineto +2176 1632 lineto +2176 2008 2041 2188 conicto +1906 2368 1624 2368 conicto +1289 2368 1092 2145 conicto +896 1922 896 1542 conicto +896 0 lineto +448 0 lineto +448 2688 lineto +896 2688 lineto +896 2304 lineto +1046 2534 1255 2643 conicto +1465 2752 1753 2752 conicto +2044 2752 2247 2611 conicto +2451 2471 2549 2204 conicto +end_ol grestore +gsave 6.619411 10.145000 translate 0.035278 -0.035278 scale +start_ol +2176 1375 moveto +2176 1848 1982 2108 conicto +1789 2368 1439 2368 conicto +1091 2368 897 2108 conicto +704 1848 704 1375 conicto +704 904 897 644 conicto +1091 384 1439 384 conicto +1789 384 1982 644 conicto +2176 904 2176 1375 conicto +2624 347 moveto +2624 -347 2323 -685 conicto +2023 -1024 1404 -1024 conicto +1174 -1024 971 -992 conicto +768 -961 576 -896 conicto +576 -448 lineto +766 -546 951 -593 conicto +1137 -640 1329 -640 conicto +1754 -640 1965 -415 conicto +2176 -190 2176 264 conicto +2176 448 lineto +2042 223 1833 111 conicto +1624 0 1332 0 conicto +848 0 552 376 conicto +256 753 256 1375 conicto +256 1999 552 2375 conicto +848 2752 1332 2752 conicto +1624 2752 1833 2640 conicto +2042 2529 2176 2304 conicto +2176 2688 lineto +2624 2688 lineto +2624 347 lineto +end_ol grestore +gsave 7.026531 10.145000 translate 0.035278 -0.035278 scale +start_ol +448 3712 moveto +896 3712 lineto +896 0 lineto +448 0 lineto +448 3712 lineto +end_ol grestore +gsave 7.203859 10.145000 translate 0.035278 -0.035278 scale +start_ol +3136 3264 moveto +3136 2752 lineto +2892 2977 2616 3088 conicto +2340 3200 2030 3200 conicto +1418 3200 1093 2829 conicto +768 2459 768 1759 conicto +768 1061 1093 690 conicto +1418 320 2030 320 conicto +2340 320 2616 431 conicto +2892 543 3136 768 conicto +3136 256 lineto +2882 96 2599 16 conicto +2316 -64 2000 -64 conicto +1189 -64 722 424 conicto +256 913 256 1759 conicto +256 2607 722 3095 conicto +1189 3584 2000 3584 conicto +2320 3584 2603 3504 conicto +2887 3424 3136 3264 conicto +end_ol grestore +gsave 7.650939 10.145000 translate 0.035278 -0.035278 scale +start_ol +1622 1344 moveto +1104 1344 904 1225 conicto +704 1106 704 818 conicto +704 589 854 454 conicto +1004 320 1262 320 conicto +1618 320 1833 572 conicto +2048 825 2048 1244 conicto +2048 1344 lineto +1622 1344 lineto +2496 1513 moveto +2496 0 lineto +2048 0 lineto +2048 384 lineto +1900 154 1679 45 conicto +1458 -64 1138 -64 conicto +733 -64 494 162 conicto +256 389 256 769 conicto +256 1213 555 1438 conicto +854 1664 1448 1664 conicto +2048 1664 lineto +2048 1712 lineto +2048 2025 1851 2196 conicto +1655 2368 1300 2368 conicto +1074 2368 860 2320 conicto +646 2272 448 2176 conicto +448 2560 lineto +687 2656 912 2704 conicto +1138 2752 1351 2752 conicto +1927 2752 2211 2444 conicto +2496 2137 2496 1513 conicto +end_ol grestore +gsave 8.043068 10.145000 translate 0.035278 -0.035278 scale +start_ol +2688 1646 moveto +2688 0 lineto +2240 0 lineto +2240 1632 lineto +2240 2001 2093 2184 conicto +1947 2368 1654 2368 conicto +1302 2368 1099 2146 conicto +896 1925 896 1542 conicto +896 0 lineto +448 0 lineto +448 2688 lineto +896 2688 lineto +896 2304 lineto +1053 2529 1266 2640 conicto +1479 2752 1757 2752 conicto +2217 2752 2452 2471 conicto +2688 2191 2688 1646 conicto +end_ol grestore +gsave 8.447682 10.145000 translate 0.035278 -0.035278 scale +start_ol +128 2688 moveto +586 2688 lineto +1408 432 lineto +2230 2688 lineto +2688 2688 lineto +1702 0 lineto +1114 0 lineto +128 2688 lineto +end_ol grestore +gsave 8.827326 10.145000 translate 0.035278 -0.035278 scale +start_ol +1622 1344 moveto +1104 1344 904 1225 conicto +704 1106 704 818 conicto +704 589 854 454 conicto +1004 320 1262 320 conicto +1618 320 1833 572 conicto +2048 825 2048 1244 conicto +2048 1344 lineto +1622 1344 lineto +2496 1513 moveto +2496 0 lineto +2048 0 lineto +2048 384 lineto +1900 154 1679 45 conicto +1458 -64 1138 -64 conicto +733 -64 494 162 conicto +256 389 256 769 conicto +256 1213 555 1438 conicto +854 1664 1448 1664 conicto +2048 1664 lineto +2048 1712 lineto +2048 2025 1851 2196 conicto +1655 2368 1300 2368 conicto +1074 2368 860 2320 conicto +646 2272 448 2176 conicto +448 2560 lineto +687 2656 912 2704 conicto +1138 2752 1351 2752 conicto +1927 2752 2211 2444 conicto +2496 2137 2496 1513 conicto +end_ol grestore +gsave 9.219455 10.145000 translate 0.035278 -0.035278 scale +start_ol +2112 2560 moveto +2112 2176 lineto +1932 2272 1738 2320 conicto +1544 2368 1336 2368 conicto +1020 2368 862 2269 conicto +704 2170 704 1972 conicto +704 1821 814 1735 conicto +925 1649 1260 1571 conicto +1403 1538 lineto +1857 1438 2048 1255 conicto +2240 1072 2240 744 conicto +2240 371 1954 153 conicto +1668 -64 1167 -64 conicto +958 -64 732 -16 conicto +506 32 256 128 conicto +256 576 lineto +491 448 719 384 conicto +947 320 1170 320 conicto +1470 320 1631 425 conicto +1792 531 1792 722 conicto +1792 900 1678 994 conicto +1564 1089 1177 1177 conicto +1032 1212 lineto +621 1298 438 1476 conicto +256 1654 256 1964 conicto +256 2341 520 2546 conicto +784 2752 1269 2752 conicto +1509 2752 1721 2704 conicto +1933 2656 2112 2560 conicto +end_ol grestore +gsave 9.551640 10.145000 translate 0.035278 -0.035278 scale +start_ol +448 3520 moveto +2496 3520 lineto +2496 3136 lineto +960 3136 lineto +960 2112 lineto +2368 2112 lineto +2368 1728 lineto +960 1728 lineto +960 0 lineto +448 0 lineto +448 3520 lineto +end_ol grestore +gsave 9.918790 10.145000 translate 0.035278 -0.035278 scale +start_ol +448 3520 moveto +960 3520 lineto +960 384 lineto +2688 384 lineto +2688 0 lineto +448 0 lineto +448 3520 lineto +end_ol grestore +gsave 10.188533 10.145000 translate 0.035278 -0.035278 scale +start_ol +-64 3520 moveto +3008 3520 lineto +3008 3136 lineto +1728 3136 lineto +1728 0 lineto +1216 0 lineto +1216 3136 lineto +-64 3136 lineto +-64 3520 lineto +end_ol grestore +gsave 10.578165 10.145000 translate 0.035278 -0.035278 scale +start_ol +448 3520 moveto +960 3520 lineto +960 2032 lineto +2528 3520 lineto +3136 3520 lineto +1402 1879 lineto +3264 0 lineto +2641 0 lineto +960 1695 lineto +960 0 lineto +448 0 lineto +448 3520 lineto +end_ol grestore +1.000000 1.000000 1.000000 srgb +n 5.000000 15.000000 m 5.000000 16.900000 l 12.000000 16.900000 l 12.000000 15.000000 l f +0.100000 slw +[] 0 sd +[] 0 sd +0 slj +0.000000 0.000000 0.000000 srgb +n 5.000000 15.000000 m 5.000000 16.900000 l 12.000000 16.900000 l 12.000000 15.000000 l cp s +gsave 6.186250 16.145000 translate 0.035278 -0.035278 scale +start_ol +2549 2204 moveto +2714 2485 2942 2618 conicto +3171 2752 3482 2752 conicto +3899 2752 4125 2464 conicto +4352 2177 4352 1646 conicto +4352 0 lineto +3904 0 lineto +3904 1632 lineto +3904 2006 3769 2187 conicto +3634 2368 3356 2368 conicto +3017 2368 2820 2146 conicto +2624 1925 2624 1542 conicto +2624 0 lineto +2176 0 lineto +2176 1632 lineto +2176 2008 2041 2188 conicto +1906 2368 1624 2368 conicto +1289 2368 1092 2145 conicto +896 1922 896 1542 conicto +896 0 lineto +448 0 lineto +448 2688 lineto +896 2688 lineto +896 2304 lineto +1046 2534 1255 2643 conicto +1465 2752 1753 2752 conicto +2044 2752 2247 2611 conicto +2451 2471 2549 2204 conicto +end_ol grestore +gsave 6.808161 16.145000 translate 0.035278 -0.035278 scale +start_ol +2176 1375 moveto +2176 1848 1982 2108 conicto +1789 2368 1439 2368 conicto +1091 2368 897 2108 conicto +704 1848 704 1375 conicto +704 904 897 644 conicto +1091 384 1439 384 conicto +1789 384 1982 644 conicto +2176 904 2176 1375 conicto +2624 347 moveto +2624 -347 2323 -685 conicto +2023 -1024 1404 -1024 conicto +1174 -1024 971 -992 conicto +768 -961 576 -896 conicto +576 -448 lineto +766 -546 951 -593 conicto +1137 -640 1329 -640 conicto +1754 -640 1965 -415 conicto +2176 -190 2176 264 conicto +2176 448 lineto +2042 223 1833 111 conicto +1624 0 1332 0 conicto +848 0 552 376 conicto +256 753 256 1375 conicto +256 1999 552 2375 conicto +848 2752 1332 2752 conicto +1624 2752 1833 2640 conicto +2042 2529 2176 2304 conicto +2176 2688 lineto +2624 2688 lineto +2624 347 lineto +end_ol grestore +gsave 7.215281 16.145000 translate 0.035278 -0.035278 scale +start_ol +448 3712 moveto +896 3712 lineto +896 0 lineto +448 0 lineto +448 3712 lineto +end_ol grestore +gsave 7.392609 16.145000 translate 0.035278 -0.035278 scale +start_ol +3136 3264 moveto +3136 2752 lineto +2892 2977 2616 3088 conicto +2340 3200 2030 3200 conicto +1418 3200 1093 2829 conicto +768 2459 768 1759 conicto +768 1061 1093 690 conicto +1418 320 2030 320 conicto +2340 320 2616 431 conicto +2892 543 3136 768 conicto +3136 256 lineto +2882 96 2599 16 conicto +2316 -64 2000 -64 conicto +1189 -64 722 424 conicto +256 913 256 1759 conicto +256 2607 722 3095 conicto +1189 3584 2000 3584 conicto +2320 3584 2603 3504 conicto +2887 3424 3136 3264 conicto +end_ol grestore +gsave 7.839689 16.145000 translate 0.035278 -0.035278 scale +start_ol +1622 1344 moveto +1104 1344 904 1225 conicto +704 1106 704 818 conicto +704 589 854 454 conicto +1004 320 1262 320 conicto +1618 320 1833 572 conicto +2048 825 2048 1244 conicto +2048 1344 lineto +1622 1344 lineto +2496 1513 moveto +2496 0 lineto +2048 0 lineto +2048 384 lineto +1900 154 1679 45 conicto +1458 -64 1138 -64 conicto +733 -64 494 162 conicto +256 389 256 769 conicto +256 1213 555 1438 conicto +854 1664 1448 1664 conicto +2048 1664 lineto +2048 1712 lineto +2048 2025 1851 2196 conicto +1655 2368 1300 2368 conicto +1074 2368 860 2320 conicto +646 2272 448 2176 conicto +448 2560 lineto +687 2656 912 2704 conicto +1138 2752 1351 2752 conicto +1927 2752 2211 2444 conicto +2496 2137 2496 1513 conicto +end_ol grestore +gsave 8.231818 16.145000 translate 0.035278 -0.035278 scale +start_ol +2688 1646 moveto +2688 0 lineto +2240 0 lineto +2240 1632 lineto +2240 2001 2093 2184 conicto +1947 2368 1654 2368 conicto +1302 2368 1099 2146 conicto +896 1925 896 1542 conicto +896 0 lineto +448 0 lineto +448 2688 lineto +896 2688 lineto +896 2304 lineto +1053 2529 1266 2640 conicto +1479 2752 1757 2752 conicto +2217 2752 2452 2471 conicto +2688 2191 2688 1646 conicto +end_ol grestore +gsave 8.636432 16.145000 translate 0.035278 -0.035278 scale +start_ol +128 2688 moveto +586 2688 lineto +1408 432 lineto +2230 2688 lineto +2688 2688 lineto +1702 0 lineto +1114 0 lineto +128 2688 lineto +end_ol grestore +gsave 9.016076 16.145000 translate 0.035278 -0.035278 scale +start_ol +1622 1344 moveto +1104 1344 904 1225 conicto +704 1106 704 818 conicto +704 589 854 454 conicto +1004 320 1262 320 conicto +1618 320 1833 572 conicto +2048 825 2048 1244 conicto +2048 1344 lineto +1622 1344 lineto +2496 1513 moveto +2496 0 lineto +2048 0 lineto +2048 384 lineto +1900 154 1679 45 conicto +1458 -64 1138 -64 conicto +733 -64 494 162 conicto +256 389 256 769 conicto +256 1213 555 1438 conicto +854 1664 1448 1664 conicto +2048 1664 lineto +2048 1712 lineto +2048 2025 1851 2196 conicto +1655 2368 1300 2368 conicto +1074 2368 860 2320 conicto +646 2272 448 2176 conicto +448 2560 lineto +687 2656 912 2704 conicto +1138 2752 1351 2752 conicto +1927 2752 2211 2444 conicto +2496 2137 2496 1513 conicto +end_ol grestore +gsave 9.408205 16.145000 translate 0.035278 -0.035278 scale +start_ol +2112 2560 moveto +2112 2176 lineto +1932 2272 1738 2320 conicto +1544 2368 1336 2368 conicto +1020 2368 862 2269 conicto +704 2170 704 1972 conicto +704 1821 814 1735 conicto +925 1649 1260 1571 conicto +1403 1538 lineto +1857 1438 2048 1255 conicto +2240 1072 2240 744 conicto +2240 371 1954 153 conicto +1668 -64 1167 -64 conicto +958 -64 732 -16 conicto +506 32 256 128 conicto +256 576 lineto +491 448 719 384 conicto +947 320 1170 320 conicto +1470 320 1631 425 conicto +1792 531 1792 722 conicto +1792 900 1678 994 conicto +1564 1089 1177 1177 conicto +1032 1212 lineto +621 1298 438 1476 conicto +256 1654 256 1964 conicto +256 2341 520 2546 conicto +784 2752 1269 2752 conicto +1509 2752 1721 2704 conicto +1933 2656 2112 2560 conicto +end_ol grestore +gsave 9.740390 16.145000 translate 0.035278 -0.035278 scale +start_ol +192 3520 moveto +676 3520 lineto +1420 545 lineto +2162 3520 lineto +2700 3520 lineto +3444 545 lineto +4186 3520 lineto +4672 3520 lineto +3783 0 lineto +3181 0 lineto +2434 3056 lineto +1681 0 lineto +1079 0 lineto +192 3520 lineto +end_ol grestore +gsave 10.372297 16.145000 translate 0.035278 -0.035278 scale +start_ol +320 3520 moveto +827 3520 lineto +1694 2202 lineto +2565 3520 lineto +3072 3520 lineto +1932 1830 lineto +3136 0 lineto +2625 0 lineto +1637 1508 lineto +641 0 lineto +128 0 lineto +1425 1879 lineto +320 3520 lineto +end_ol grestore +1.000000 1.000000 1.000000 srgb +n 5.000000 12.000000 m 5.000000 13.900000 l 12.000000 13.900000 l 12.000000 12.000000 l f +0.100000 slw +[] 0 sd +[] 0 sd +0 slj +0.000000 0.000000 0.000000 srgb +n 5.000000 12.000000 m 5.000000 13.900000 l 12.000000 13.900000 l 12.000000 12.000000 l cp s +gsave 6.273750 13.145000 translate 0.035278 -0.035278 scale +start_ol +2549 2204 moveto +2714 2485 2942 2618 conicto +3171 2752 3482 2752 conicto +3899 2752 4125 2464 conicto +4352 2177 4352 1646 conicto +4352 0 lineto +3904 0 lineto +3904 1632 lineto +3904 2006 3769 2187 conicto +3634 2368 3356 2368 conicto +3017 2368 2820 2146 conicto +2624 1925 2624 1542 conicto +2624 0 lineto +2176 0 lineto +2176 1632 lineto +2176 2008 2041 2188 conicto +1906 2368 1624 2368 conicto +1289 2368 1092 2145 conicto +896 1922 896 1542 conicto +896 0 lineto +448 0 lineto +448 2688 lineto +896 2688 lineto +896 2304 lineto +1046 2534 1255 2643 conicto +1465 2752 1753 2752 conicto +2044 2752 2247 2611 conicto +2451 2471 2549 2204 conicto +end_ol grestore +gsave 6.895661 13.145000 translate 0.035278 -0.035278 scale +start_ol +2176 1375 moveto +2176 1848 1982 2108 conicto +1789 2368 1439 2368 conicto +1091 2368 897 2108 conicto +704 1848 704 1375 conicto +704 904 897 644 conicto +1091 384 1439 384 conicto +1789 384 1982 644 conicto +2176 904 2176 1375 conicto +2624 347 moveto +2624 -347 2323 -685 conicto +2023 -1024 1404 -1024 conicto +1174 -1024 971 -992 conicto +768 -961 576 -896 conicto +576 -448 lineto +766 -546 951 -593 conicto +1137 -640 1329 -640 conicto +1754 -640 1965 -415 conicto +2176 -190 2176 264 conicto +2176 448 lineto +2042 223 1833 111 conicto +1624 0 1332 0 conicto +848 0 552 376 conicto +256 753 256 1375 conicto +256 1999 552 2375 conicto +848 2752 1332 2752 conicto +1624 2752 1833 2640 conicto +2042 2529 2176 2304 conicto +2176 2688 lineto +2624 2688 lineto +2624 347 lineto +end_ol grestore +gsave 7.302781 13.145000 translate 0.035278 -0.035278 scale +start_ol +448 3712 moveto +896 3712 lineto +896 0 lineto +448 0 lineto +448 3712 lineto +end_ol grestore +gsave 7.480109 13.145000 translate 0.035278 -0.035278 scale +start_ol +3136 3264 moveto +3136 2752 lineto +2892 2977 2616 3088 conicto +2340 3200 2030 3200 conicto +1418 3200 1093 2829 conicto +768 2459 768 1759 conicto +768 1061 1093 690 conicto +1418 320 2030 320 conicto +2340 320 2616 431 conicto +2892 543 3136 768 conicto +3136 256 lineto +2882 96 2599 16 conicto +2316 -64 2000 -64 conicto +1189 -64 722 424 conicto +256 913 256 1759 conicto +256 2607 722 3095 conicto +1189 3584 2000 3584 conicto +2320 3584 2603 3504 conicto +2887 3424 3136 3264 conicto +end_ol grestore +gsave 7.927189 13.145000 translate 0.035278 -0.035278 scale +start_ol +1622 1344 moveto +1104 1344 904 1225 conicto +704 1106 704 818 conicto +704 589 854 454 conicto +1004 320 1262 320 conicto +1618 320 1833 572 conicto +2048 825 2048 1244 conicto +2048 1344 lineto +1622 1344 lineto +2496 1513 moveto +2496 0 lineto +2048 0 lineto +2048 384 lineto +1900 154 1679 45 conicto +1458 -64 1138 -64 conicto +733 -64 494 162 conicto +256 389 256 769 conicto +256 1213 555 1438 conicto +854 1664 1448 1664 conicto +2048 1664 lineto +2048 1712 lineto +2048 2025 1851 2196 conicto +1655 2368 1300 2368 conicto +1074 2368 860 2320 conicto +646 2272 448 2176 conicto +448 2560 lineto +687 2656 912 2704 conicto +1138 2752 1351 2752 conicto +1927 2752 2211 2444 conicto +2496 2137 2496 1513 conicto +end_ol grestore +gsave 8.319318 13.145000 translate 0.035278 -0.035278 scale +start_ol +2688 1646 moveto +2688 0 lineto +2240 0 lineto +2240 1632 lineto +2240 2001 2093 2184 conicto +1947 2368 1654 2368 conicto +1302 2368 1099 2146 conicto +896 1925 896 1542 conicto +896 0 lineto +448 0 lineto +448 2688 lineto +896 2688 lineto +896 2304 lineto +1053 2529 1266 2640 conicto +1479 2752 1757 2752 conicto +2217 2752 2452 2471 conicto +2688 2191 2688 1646 conicto +end_ol grestore +gsave 8.723932 13.145000 translate 0.035278 -0.035278 scale +start_ol +128 2688 moveto +586 2688 lineto +1408 432 lineto +2230 2688 lineto +2688 2688 lineto +1702 0 lineto +1114 0 lineto +128 2688 lineto +end_ol grestore +gsave 9.103576 13.145000 translate 0.035278 -0.035278 scale +start_ol +1622 1344 moveto +1104 1344 904 1225 conicto +704 1106 704 818 conicto +704 589 854 454 conicto +1004 320 1262 320 conicto +1618 320 1833 572 conicto +2048 825 2048 1244 conicto +2048 1344 lineto +1622 1344 lineto +2496 1513 moveto +2496 0 lineto +2048 0 lineto +2048 384 lineto +1900 154 1679 45 conicto +1458 -64 1138 -64 conicto +733 -64 494 162 conicto +256 389 256 769 conicto +256 1213 555 1438 conicto +854 1664 1448 1664 conicto +2048 1664 lineto +2048 1712 lineto +2048 2025 1851 2196 conicto +1655 2368 1300 2368 conicto +1074 2368 860 2320 conicto +646 2272 448 2176 conicto +448 2560 lineto +687 2656 912 2704 conicto +1138 2752 1351 2752 conicto +1927 2752 2211 2444 conicto +2496 2137 2496 1513 conicto +end_ol grestore +gsave 9.495705 13.145000 translate 0.035278 -0.035278 scale +start_ol +2112 2560 moveto +2112 2176 lineto +1932 2272 1738 2320 conicto +1544 2368 1336 2368 conicto +1020 2368 862 2269 conicto +704 2170 704 1972 conicto +704 1821 814 1735 conicto +925 1649 1260 1571 conicto +1403 1538 lineto +1857 1438 2048 1255 conicto +2240 1072 2240 744 conicto +2240 371 1954 153 conicto +1668 -64 1167 -64 conicto +958 -64 732 -16 conicto +506 32 256 128 conicto +256 576 lineto +491 448 719 384 conicto +947 320 1170 320 conicto +1470 320 1631 425 conicto +1792 531 1792 722 conicto +1792 900 1678 994 conicto +1564 1089 1177 1177 conicto +1032 1212 lineto +621 1298 438 1476 conicto +256 1654 256 1964 conicto +256 2341 520 2546 conicto +784 2752 1269 2752 conicto +1509 2752 1721 2704 conicto +1933 2656 2112 2560 conicto +end_ol grestore +gsave 9.827890 13.145000 translate 0.035278 -0.035278 scale +start_ol +1890 3200 moveto +1375 3200 1071 2813 conicto +768 2426 768 1759 conicto +768 1094 1071 707 conicto +1375 320 1890 320 conicto +2406 320 2707 707 conicto +3008 1094 3008 1759 conicto +3008 2426 2707 2813 conicto +2406 3200 1890 3200 conicto +2553 67 moveto +3181 -640 lineto +2607 -640 lineto +2087 -55 lineto +2009 -59 1968 -61 conicto +1927 -64 1889 -64 conicto +1146 -64 701 431 conicto +256 927 256 1759 conicto +256 2593 701 3088 conicto +1146 3584 1890 3584 conicto +2632 3584 3076 3088 conicto +3520 2592 3520 1758 conicto +3520 1146 3271 710 conicto +3023 274 2553 67 conicto +end_ol grestore +gsave 10.332417 13.145000 translate 0.035278 -0.035278 scale +start_ol +-64 3520 moveto +3008 3520 lineto +3008 3136 lineto +1728 3136 lineto +1728 0 lineto +1216 0 lineto +1216 3136 lineto +-64 3136 lineto +-64 3520 lineto +end_ol grestore +0.100000 slw +[] 0 sd +[] 0 sd +0 slc +n 3.500000 3.000000 m 3.500000 2.386803 l s +[] 0 sd +0 slj +0 slc +n 3.500000 2.011803 m 3.750000 2.511803 l 3.500000 2.386803 l 3.250000 2.511803 l ef +n 3.500000 2.011803 m 3.750000 2.511803 l 3.500000 2.386803 l 3.250000 2.511803 l cp s +0.100000 slw +[] 0 sd +[] 0 sd +0 slc +n 3.500000 6.000000 m 3.500000 5.386803 l s +[] 0 sd +0 slj +0 slc +n 3.500000 5.011803 m 3.750000 5.511803 l 3.500000 5.386803 l 3.250000 5.511803 l ef +n 3.500000 5.011803 m 3.750000 5.511803 l 3.500000 5.386803 l 3.250000 5.511803 l cp s +0.100000 slw +[] 0 sd +[] 0 sd +0 slc +n 9.750000 5.000000 m 7.454781 4.123644 l s +[] 0 sd +0 slj +0 slc +n 7.104449 3.989880 m 7.660733 3.934677 l 7.454781 4.123644 l 7.482383 4.401786 l ef +n 7.104449 3.989880 m 7.660733 3.934677 l 7.454781 4.123644 l 7.482383 4.401786 l cp s +0.100000 slw +[] 0 sd +[] 0 sd +0 slc +n 16.000000 5.950000 m 15.486803 5.950000 l s +[] 0 sd +0 slj +0 slc +n 15.111803 5.950000 m 15.611803 5.700000 l 15.486803 5.950000 l 15.611803 6.200000 l ef +n 15.111803 5.950000 m 15.611803 5.700000 l 15.486803 5.950000 l 15.611803 6.200000 l cp s +0.000000 1.000000 0.000000 srgb +n 17.000000 9.000000 m 17.000000 10.900000 l 22.000000 10.900000 l 22.000000 9.000000 l f +0.100000 slw +[] 0 sd +[] 0 sd +0 slj +0.000000 0.000000 0.000000 srgb +n 17.000000 9.000000 m 17.000000 10.900000 l 22.000000 10.900000 l 22.000000 9.000000 l cp s +gsave 18.021250 10.145000 translate 0.035278 -0.035278 scale +start_ol +1890 3200 moveto +1375 3200 1071 2813 conicto +768 2426 768 1759 conicto +768 1094 1071 707 conicto +1375 320 1890 320 conicto +2406 320 2707 707 conicto +3008 1094 3008 1759 conicto +3008 2426 2707 2813 conicto +2406 3200 1890 3200 conicto +2553 67 moveto +3181 -640 lineto +2607 -640 lineto +2087 -55 lineto +2009 -59 1968 -61 conicto +1927 -64 1889 -64 conicto +1146 -64 701 431 conicto +256 927 256 1759 conicto +256 2593 701 3088 conicto +1146 3584 1890 3584 conicto +2632 3584 3076 3088 conicto +3520 2592 3520 1758 conicto +3520 1146 3271 710 conicto +3023 274 2553 67 conicto +end_ol grestore +gsave 18.525777 10.145000 translate 0.035278 -0.035278 scale +start_ol +448 3520 moveto +1202 3520 lineto +2079 1148 lineto +2961 3520 lineto +3712 3520 lineto +3712 0 lineto +3200 0 lineto +3200 3095 lineto +2314 704 lineto +1846 704 lineto +960 3095 lineto +960 0 lineto +448 0 lineto +448 3520 lineto +end_ol grestore +gsave 19.077756 10.145000 translate 0.035278 -0.035278 scale +start_ol +1622 1344 moveto +1104 1344 904 1225 conicto +704 1106 704 818 conicto +704 589 854 454 conicto +1004 320 1262 320 conicto +1618 320 1833 572 conicto +2048 825 2048 1244 conicto +2048 1344 lineto +1622 1344 lineto +2496 1513 moveto +2496 0 lineto +2048 0 lineto +2048 384 lineto +1900 154 1679 45 conicto +1458 -64 1138 -64 conicto +733 -64 494 162 conicto +256 389 256 769 conicto +256 1213 555 1438 conicto +854 1664 1448 1664 conicto +2048 1664 lineto +2048 1712 lineto +2048 2025 1851 2196 conicto +1655 2368 1300 2368 conicto +1074 2368 860 2320 conicto +646 2272 448 2176 conicto +448 2560 lineto +687 2656 912 2704 conicto +1138 2752 1351 2752 conicto +1927 2752 2211 2444 conicto +2496 2137 2496 1513 conicto +end_ol grestore +gsave 19.469885 10.145000 translate 0.035278 -0.035278 scale +start_ol +896 3456 moveto +896 2688 lineto +1792 2688 lineto +1792 2368 lineto +896 2368 lineto +896 902 lineto +896 572 984 478 conicto +1073 384 1345 384 conicto +1792 384 lineto +1792 0 lineto +1345 0 lineto +836 0 642 194 conicto +448 389 448 902 conicto +448 2368 lineto +128 2368 lineto +128 2688 lineto +448 2688 lineto +448 3456 lineto +896 3456 lineto +end_ol grestore +gsave 19.719652 10.145000 translate 0.035278 -0.035278 scale +start_ol +2688 1646 moveto +2688 0 lineto +2240 0 lineto +2240 1632 lineto +2240 2001 2093 2184 conicto +1947 2368 1654 2368 conicto +1302 2368 1099 2146 conicto +896 1925 896 1542 conicto +896 0 lineto +448 0 lineto +448 3712 lineto +896 3712 lineto +896 2304 lineto +1053 2529 1266 2640 conicto +1479 2752 1757 2752 conicto +2217 2752 2452 2471 conicto +2688 2191 2688 1646 conicto +end_ol grestore +gsave 20.124266 10.145000 translate 0.035278 -0.035278 scale +start_ol +2816 504 moveto +2816 1472 lineto +2048 1472 lineto +2048 1856 lineto +3328 1856 lineto +3328 325 lineto +3052 133 2720 34 conicto +2388 -64 2011 -64 conicto +1187 -64 721 417 conicto +256 899 256 1759 conicto +256 2621 725 3102 conicto +1195 3584 2028 3584 conicto +2375 3584 2687 3503 conicto +3000 3422 3264 3264 conicto +3264 2752 lineto +2998 2975 2699 3087 conicto +2400 3200 2071 3200 conicto +1420 3200 1094 2838 conicto +768 2476 768 1759 conicto +768 1044 1084 682 conicto +1400 320 2030 320 conicto +2276 320 2469 365 conicto +2662 410 2816 504 conicto +end_ol grestore +gsave 20.618797 10.145000 translate 0.035278 -0.035278 scale +start_ol +448 3520 moveto +960 3520 lineto +960 384 lineto +2688 384 lineto +2688 0 lineto +448 0 lineto +448 3520 lineto +end_ol grestore +0.000000 1.000000 0.000000 srgb +n 17.000000 12.000000 m 17.000000 13.900000 l 22.000000 13.900000 l 22.000000 12.000000 l f +0.100000 slw +[] 0 sd +[] 0 sd +0 slj +0.000000 0.000000 0.000000 srgb +n 17.000000 12.000000 m 17.000000 13.900000 l 22.000000 13.900000 l 22.000000 12.000000 l cp s +gsave 17.841250 13.145000 translate 0.035278 -0.035278 scale +start_ol +448 3520 moveto +2496 3520 lineto +2496 3136 lineto +960 3136 lineto +960 2112 lineto +2368 2112 lineto +2368 1728 lineto +960 1728 lineto +960 0 lineto +448 0 lineto +448 3520 lineto +end_ol grestore +gsave 18.208401 13.145000 translate 0.035278 -0.035278 scale +start_ol +448 3712 moveto +896 3712 lineto +896 0 lineto +448 0 lineto +448 3712 lineto +end_ol grestore +gsave 18.385729 13.145000 translate 0.035278 -0.035278 scale +start_ol +2496 -832 moveto +2496 -1152 lineto +-64 -1152 lineto +-64 -832 lineto +2496 -832 lineto +end_ol grestore +gsave 18.705429 13.145000 translate 0.035278 -0.035278 scale +start_ol +448 3520 moveto +1202 3520 lineto +2079 1148 lineto +2961 3520 lineto +3712 3520 lineto +3712 0 lineto +3200 0 lineto +3200 3095 lineto +2314 704 lineto +1846 704 lineto +960 3095 lineto +960 0 lineto +448 0 lineto +448 3520 lineto +end_ol grestore +gsave 19.257407 13.145000 translate 0.035278 -0.035278 scale +start_ol +1622 1344 moveto +1104 1344 904 1225 conicto +704 1106 704 818 conicto +704 589 854 454 conicto +1004 320 1262 320 conicto +1618 320 1833 572 conicto +2048 825 2048 1244 conicto +2048 1344 lineto +1622 1344 lineto +2496 1513 moveto +2496 0 lineto +2048 0 lineto +2048 384 lineto +1900 154 1679 45 conicto +1458 -64 1138 -64 conicto +733 -64 494 162 conicto +256 389 256 769 conicto +256 1213 555 1438 conicto +854 1664 1448 1664 conicto +2048 1664 lineto +2048 1712 lineto +2048 2025 1851 2196 conicto +1655 2368 1300 2368 conicto +1074 2368 860 2320 conicto +646 2272 448 2176 conicto +448 2560 lineto +687 2656 912 2704 conicto +1138 2752 1351 2752 conicto +1927 2752 2211 2444 conicto +2496 2137 2496 1513 conicto +end_ol grestore +gsave 19.649537 13.145000 translate 0.035278 -0.035278 scale +start_ol +896 3456 moveto +896 2688 lineto +1792 2688 lineto +1792 2368 lineto +896 2368 lineto +896 902 lineto +896 572 984 478 conicto +1073 384 1345 384 conicto +1792 384 lineto +1792 0 lineto +1345 0 lineto +836 0 642 194 conicto +448 389 448 902 conicto +448 2368 lineto +128 2368 lineto +128 2688 lineto +448 2688 lineto +448 3456 lineto +896 3456 lineto +end_ol grestore +gsave 19.899303 13.145000 translate 0.035278 -0.035278 scale +start_ol +2688 1646 moveto +2688 0 lineto +2240 0 lineto +2240 1632 lineto +2240 2001 2093 2184 conicto +1947 2368 1654 2368 conicto +1302 2368 1099 2146 conicto +896 1925 896 1542 conicto +896 0 lineto +448 0 lineto +448 3712 lineto +896 3712 lineto +896 2304 lineto +1053 2529 1266 2640 conicto +1479 2752 1757 2752 conicto +2217 2752 2452 2471 conicto +2688 2191 2688 1646 conicto +end_ol grestore +gsave 20.303917 13.145000 translate 0.035278 -0.035278 scale +start_ol +2816 504 moveto +2816 1472 lineto +2048 1472 lineto +2048 1856 lineto +3328 1856 lineto +3328 325 lineto +3052 133 2720 34 conicto +2388 -64 2011 -64 conicto +1187 -64 721 417 conicto +256 899 256 1759 conicto +256 2621 725 3102 conicto +1195 3584 2028 3584 conicto +2375 3584 2687 3503 conicto +3000 3422 3264 3264 conicto +3264 2752 lineto +2998 2975 2699 3087 conicto +2400 3200 2071 3200 conicto +1420 3200 1094 2838 conicto +768 2476 768 1759 conicto +768 1044 1084 682 conicto +1400 320 2030 320 conicto +2276 320 2469 365 conicto +2662 410 2816 504 conicto +end_ol grestore +gsave 20.798448 13.145000 translate 0.035278 -0.035278 scale +start_ol +448 3520 moveto +960 3520 lineto +960 384 lineto +2688 384 lineto +2688 0 lineto +448 0 lineto +448 3520 lineto +end_ol grestore +0.000000 1.000000 0.000000 srgb +n 17.000000 15.000000 m 17.000000 16.900000 l 22.000000 16.900000 l 22.000000 15.000000 l f +0.100000 slw +[] 0 sd +[] 0 sd +0 slj +0.000000 0.000000 0.000000 srgb +n 17.000000 15.000000 m 17.000000 16.900000 l 22.000000 16.900000 l 22.000000 15.000000 l cp s +gsave 17.822500 16.145000 translate 0.035278 -0.035278 scale +start_ol +192 2688 moveto +631 2688 lineto +1179 590 lineto +1725 2688 lineto +2243 2688 lineto +2791 590 lineto +3337 2688 lineto +3776 2688 lineto +3077 0 lineto +2560 0 lineto +1985 2203 lineto +1408 0 lineto +891 0 lineto +192 2688 lineto +end_ol grestore +gsave 18.344506 16.145000 translate 0.035278 -0.035278 scale +start_ol +2624 2688 moveto +1666 1380 lineto +2688 0 lineto +2169 0 lineto +1389 1056 lineto +632 0 lineto +128 0 lineto +1134 1406 lineto +192 2688 lineto +705 2688 lineto +1408 1730 lineto +2111 2688 lineto +2624 2688 lineto +end_ol grestore +gsave 18.724150 16.145000 translate 0.035278 -0.035278 scale +start_ol +448 3520 moveto +1202 3520 lineto +2079 1148 lineto +2961 3520 lineto +3712 3520 lineto +3712 0 lineto +3200 0 lineto +3200 3095 lineto +2314 704 lineto +1846 704 lineto +960 3095 lineto +960 0 lineto +448 0 lineto +448 3520 lineto +end_ol grestore +gsave 19.276129 16.145000 translate 0.035278 -0.035278 scale +start_ol +1622 1344 moveto +1104 1344 904 1225 conicto +704 1106 704 818 conicto +704 589 854 454 conicto +1004 320 1262 320 conicto +1618 320 1833 572 conicto +2048 825 2048 1244 conicto +2048 1344 lineto +1622 1344 lineto +2496 1513 moveto +2496 0 lineto +2048 0 lineto +2048 384 lineto +1900 154 1679 45 conicto +1458 -64 1138 -64 conicto +733 -64 494 162 conicto +256 389 256 769 conicto +256 1213 555 1438 conicto +854 1664 1448 1664 conicto +2048 1664 lineto +2048 1712 lineto +2048 2025 1851 2196 conicto +1655 2368 1300 2368 conicto +1074 2368 860 2320 conicto +646 2272 448 2176 conicto +448 2560 lineto +687 2656 912 2704 conicto +1138 2752 1351 2752 conicto +1927 2752 2211 2444 conicto +2496 2137 2496 1513 conicto +end_ol grestore +gsave 19.668258 16.145000 translate 0.035278 -0.035278 scale +start_ol +896 3456 moveto +896 2688 lineto +1792 2688 lineto +1792 2368 lineto +896 2368 lineto +896 902 lineto +896 572 984 478 conicto +1073 384 1345 384 conicto +1792 384 lineto +1792 0 lineto +1345 0 lineto +836 0 642 194 conicto +448 389 448 902 conicto +448 2368 lineto +128 2368 lineto +128 2688 lineto +448 2688 lineto +448 3456 lineto +896 3456 lineto +end_ol grestore +gsave 19.918025 16.145000 translate 0.035278 -0.035278 scale +start_ol +2688 1646 moveto +2688 0 lineto +2240 0 lineto +2240 1632 lineto +2240 2001 2093 2184 conicto +1947 2368 1654 2368 conicto +1302 2368 1099 2146 conicto +896 1925 896 1542 conicto +896 0 lineto +448 0 lineto +448 3712 lineto +896 3712 lineto +896 2304 lineto +1053 2529 1266 2640 conicto +1479 2752 1757 2752 conicto +2217 2752 2452 2471 conicto +2688 2191 2688 1646 conicto +end_ol grestore +gsave 20.322639 16.145000 translate 0.035278 -0.035278 scale +start_ol +2816 504 moveto +2816 1472 lineto +2048 1472 lineto +2048 1856 lineto +3328 1856 lineto +3328 325 lineto +3052 133 2720 34 conicto +2388 -64 2011 -64 conicto +1187 -64 721 417 conicto +256 899 256 1759 conicto +256 2621 725 3102 conicto +1195 3584 2028 3584 conicto +2375 3584 2687 3503 conicto +3000 3422 3264 3264 conicto +3264 2752 lineto +2998 2975 2699 3087 conicto +2400 3200 2071 3200 conicto +1420 3200 1094 2838 conicto +768 2476 768 1759 conicto +768 1044 1084 682 conicto +1400 320 2030 320 conicto +2276 320 2469 365 conicto +2662 410 2816 504 conicto +end_ol grestore +gsave 20.817170 16.145000 translate 0.035278 -0.035278 scale +start_ol +448 3520 moveto +960 3520 lineto +960 384 lineto +2688 384 lineto +2688 0 lineto +448 0 lineto +448 3520 lineto +end_ol grestore +0.100000 slw +[0.200000] 0 sd +[0.200000] 0 sd +0 slc +0.627451 0.125490 0.941176 srgb +n 16.513197 9.950000 m 12.536425 9.950000 l s +[] 0 sd +0 slj +0 slc +n 16.888197 9.950000 m 16.388197 10.200000 l 16.513197 9.950000 l 16.388197 9.700000 l ef +n 16.888197 9.950000 m 16.388197 10.200000 l 16.513197 9.950000 l 16.388197 9.700000 l cp s +[] 0 sd +0 slj +0 slc +n 12.161425 9.950000 m 12.661425 9.700000 l 12.536425 9.950000 l 12.661425 10.200000 l ef +n 12.161425 9.950000 m 12.661425 9.700000 l 12.536425 9.950000 l 12.661425 10.200000 l cp s +0.100000 slw +[0.200000] 0 sd +[0.200000] 0 sd +0 slc +n 16.513197 12.950000 m 12.486803 12.950000 l s +[] 0 sd +0 slj +0 slc +n 16.888197 12.950000 m 16.388197 13.200000 l 16.513197 12.950000 l 16.388197 12.700000 l ef +n 16.888197 12.950000 m 16.388197 13.200000 l 16.513197 12.950000 l 16.388197 12.700000 l cp s +[] 0 sd +0 slj +0 slc +n 12.111803 12.950000 m 12.611803 12.700000 l 12.486803 12.950000 l 12.611803 13.200000 l ef +n 12.111803 12.950000 m 12.611803 12.700000 l 12.486803 12.950000 l 12.611803 13.200000 l cp s +0.100000 slw +[0.200000] 0 sd +[0.200000] 0 sd +0 slc +n 16.513197 15.950000 m 12.486803 15.950000 l s +[] 0 sd +0 slj +0 slc +n 16.888197 15.950000 m 16.388197 16.200000 l 16.513197 15.950000 l 16.388197 15.700000 l ef +n 16.888197 15.950000 m 16.388197 16.200000 l 16.513197 15.950000 l 16.388197 15.700000 l cp s +[] 0 sd +0 slj +0 slc +n 12.111803 15.950000 m 12.611803 15.700000 l 12.486803 15.950000 l 12.611803 16.200000 l ef +n 12.111803 15.950000 m 12.611803 15.700000 l 12.486803 15.950000 l 12.611803 16.200000 l cp s +0.000000 0.000000 0.000000 srgb +gsave 16.946250 19.000000 translate 0.035278 -0.035278 scale +start_ol +256 5568 moveto +1023 5568 lineto +2203 861 lineto +3380 5568 lineto +4233 5568 lineto +5413 861 lineto +6589 5568 lineto +7360 5568 lineto +5950 0 lineto +4996 0 lineto +3812 4833 lineto +2616 0 lineto +1662 0 lineto +256 5568 lineto +end_ol grestore +gsave 17.927829 19.000000 translate 0.035278 -0.035278 scale +start_ol +704 4224 moveto +1408 4224 lineto +1408 0 lineto +704 0 lineto +704 4224 lineto +704 5824 moveto +1408 5824 lineto +1408 4928 lineto +704 4928 lineto +704 5824 lineto +end_ol grestore +gsave 18.210065 19.000000 translate 0.035278 -0.035278 scale +start_ol +3520 3584 moveto +3520 5824 lineto +4224 5824 lineto +4224 0 lineto +3520 0 lineto +3520 640 lineto +3302 250 2969 61 conicto +2636 -128 2170 -128 conicto +1407 -128 927 489 conicto +448 1106 448 2112 conicto +448 3118 927 3735 conicto +1407 4352 2170 4352 conicto +2636 4352 2969 4163 conicto +3302 3974 3520 3584 conicto +1152 2112 moveto +1152 1334 1467 891 conicto +1783 448 2334 448 conicto +2886 448 3203 891 conicto +3520 1334 3520 2112 conicto +3520 2890 3203 3333 conicto +2886 3776 2334 3776 conicto +1783 3776 1467 3333 conicto +1152 2890 1152 2112 conicto +end_ol grestore +gsave 18.854458 19.000000 translate 0.035278 -0.035278 scale +start_ol +3520 2174 moveto +3520 2937 3208 3356 conicto +2897 3776 2334 3776 conicto +1775 3776 1463 3356 conicto +1152 2937 1152 2174 conicto +1152 1415 1463 995 conicto +1775 576 2334 576 conicto +2897 576 3208 995 conicto +3520 1415 3520 2174 conicto +4224 520 moveto +4224 -553 3745 -1076 conicto +3267 -1600 2279 -1600 conicto +1914 -1600 1589 -1537 conicto +1265 -1474 960 -1344 conicto +960 -704 lineto +1264 -868 1560 -946 conicto +1857 -1024 2165 -1024 conicto +2844 -1024 3182 -671 conicto +3520 -318 3520 396 conicto +3520 768 lineto +3306 382 2971 191 conicto +2636 0 2170 0 conicto +1396 0 922 595 conicto +448 1191 448 2174 conicto +448 3161 922 3756 conicto +1396 4352 2170 4352 conicto +2636 4352 2971 4161 conicto +3306 3970 3520 3584 conicto +3520 4224 lineto +4224 4224 lineto +4224 520 lineto +end_ol grestore +gsave 19.498851 19.000000 translate 0.035278 -0.035278 scale +start_ol +4352 2304 moveto +4352 1984 lineto +1152 1984 lineto +1197 1234 1581 841 conicto +1965 448 2650 448 conicto +3047 448 3420 544 conicto +3793 640 4160 832 conicto +4160 192 lineto +3791 36 3403 -46 conicto +3015 -128 2616 -128 conicto +1616 -128 1032 466 conicto +448 1061 448 2074 conicto +448 3122 1006 3737 conicto +1565 4352 2513 4352 conicto +3363 4352 3857 3801 conicto +4352 3250 4352 2304 conicto +3648 2496 moveto +3640 3080 3329 3428 conicto +3018 3776 2506 3776 conicto +1925 3776 1576 3439 conicto +1228 3103 1175 2492 conicto +3648 2496 lineto +end_ol grestore +gsave 20.123267 19.000000 translate 0.035278 -0.035278 scale +start_ol +1408 5440 moveto +1408 4224 lineto +2816 4224 lineto +2816 3712 lineto +1408 3712 lineto +1408 1395 lineto +1408 873 1547 724 conicto +1687 576 2114 576 conicto +2816 576 lineto +2816 0 lineto +2114 0 lineto +1313 0 1008 300 conicto +704 601 704 1395 conicto +704 3712 lineto +192 3712 lineto +192 4224 lineto +704 4224 lineto +704 5440 lineto +1408 5440 lineto +end_ol grestore +gsave 20.520390 19.000000 translate 0.035278 -0.035278 scale +start_ol +3392 4096 moveto +3392 3456 lineto +3106 3616 2797 3696 conicto +2489 3776 2158 3776 conicto +1655 3776 1403 3613 conicto +1152 3450 1152 3123 conicto +1152 2875 1334 2733 conicto +1517 2591 2068 2463 conicto +2303 2409 lineto +3033 2250 3340 1960 conicto +3648 1671 3648 1152 conicto +3648 561 3186 216 conicto +2725 -128 1917 -128 conicto +1581 -128 1216 -64 conicto +852 0 448 128 conicto +448 832 lineto +830 640 1200 544 conicto +1571 448 1934 448 conicto +2420 448 2682 616 conicto +2944 785 2944 1091 conicto +2944 1375 2756 1526 conicto +2568 1677 1931 1817 conicto +1692 1875 lineto +1033 2013 740 2299 conicto +448 2585 448 3085 conicto +448 3691 866 4021 conicto +1285 4352 2054 4352 conicto +2436 4352 2772 4288 conicto +3108 4224 3392 4096 conicto +end_ol grestore +0.100000 slw +[0.200000] 0 sd +[0.200000] 0 sd +1 slj +n 17.000000 8.000000 m 22.000000 8.000000 l s +n 17.000000 18.000000 m 22.000000 18.000000 l s +n 17.000000 9.000000 1.000000 1.000000 180.000000 270.000000 ellipse s +n 22.000000 9.000000 1.000000 1.000000 270.000000 360.000000 ellipse s +n 16.000000 9.000000 m 16.000000 17.000000 l s +n 23.000000 9.000000 m 23.000000 17.000000 l s +n 17.000000 17.000000 1.000000 1.000000 90.000000 180.000000 ellipse s +n 22.000000 17.000000 1.000000 1.000000 0.000000 90.000000 ellipse s +1.000000 0.647059 0.000000 srgb +n 28.000000 1.000000 m 28.000000 2.900000 l 33.000000 2.900000 l 33.000000 1.000000 l f +0.100000 slw +[] 0 sd +[] 0 sd +0 slj +0.000000 0.000000 0.000000 srgb +n 28.000000 1.000000 m 28.000000 2.900000 l 33.000000 2.900000 l 33.000000 1.000000 l cp s +gsave 28.915000 2.145000 translate 0.035278 -0.035278 scale +start_ol +2549 2204 moveto +2714 2485 2942 2618 conicto +3171 2752 3482 2752 conicto +3899 2752 4125 2464 conicto +4352 2177 4352 1646 conicto +4352 0 lineto +3904 0 lineto +3904 1632 lineto +3904 2006 3769 2187 conicto +3634 2368 3356 2368 conicto +3017 2368 2820 2146 conicto +2624 1925 2624 1542 conicto +2624 0 lineto +2176 0 lineto +2176 1632 lineto +2176 2008 2041 2188 conicto +1906 2368 1624 2368 conicto +1289 2368 1092 2145 conicto +896 1922 896 1542 conicto +896 0 lineto +448 0 lineto +448 2688 lineto +896 2688 lineto +896 2304 lineto +1046 2534 1255 2643 conicto +1465 2752 1753 2752 conicto +2044 2752 2247 2611 conicto +2451 2471 2549 2204 conicto +end_ol grestore +gsave 29.536911 2.145000 translate 0.035278 -0.035278 scale +start_ol +2176 1375 moveto +2176 1848 1982 2108 conicto +1789 2368 1439 2368 conicto +1091 2368 897 2108 conicto +704 1848 704 1375 conicto +704 904 897 644 conicto +1091 384 1439 384 conicto +1789 384 1982 644 conicto +2176 904 2176 1375 conicto +2624 347 moveto +2624 -347 2323 -685 conicto +2023 -1024 1404 -1024 conicto +1174 -1024 971 -992 conicto +768 -961 576 -896 conicto +576 -448 lineto +766 -546 951 -593 conicto +1137 -640 1329 -640 conicto +1754 -640 1965 -415 conicto +2176 -190 2176 264 conicto +2176 448 lineto +2042 223 1833 111 conicto +1624 0 1332 0 conicto +848 0 552 376 conicto +256 753 256 1375 conicto +256 1999 552 2375 conicto +848 2752 1332 2752 conicto +1624 2752 1833 2640 conicto +2042 2529 2176 2304 conicto +2176 2688 lineto +2624 2688 lineto +2624 347 lineto +end_ol grestore +gsave 29.944031 2.145000 translate 0.035278 -0.035278 scale +start_ol +448 3712 moveto +896 3712 lineto +896 0 lineto +448 0 lineto +448 3712 lineto +end_ol grestore +gsave 30.121359 2.145000 translate 0.035278 -0.035278 scale +start_ol +2816 504 moveto +2816 1472 lineto +2048 1472 lineto +2048 1856 lineto +3328 1856 lineto +3328 325 lineto +3052 133 2720 34 conicto +2388 -64 2011 -64 conicto +1187 -64 721 417 conicto +256 899 256 1759 conicto +256 2621 725 3102 conicto +1195 3584 2028 3584 conicto +2375 3584 2687 3503 conicto +3000 3422 3264 3264 conicto +3264 2752 lineto +2998 2975 2699 3087 conicto +2400 3200 2071 3200 conicto +1420 3200 1094 2838 conicto +768 2476 768 1759 conicto +768 1044 1084 682 conicto +1400 320 2030 320 conicto +2276 320 2469 365 conicto +2662 410 2816 504 conicto +end_ol grestore +gsave 30.615890 2.145000 translate 0.035278 -0.035278 scale +start_ol +1984 2304 moveto +1912 2337 1828 2352 conicto +1744 2368 1642 2368 conicto +1282 2368 1089 2127 conicto +896 1887 896 1437 conicto +896 0 lineto +448 0 lineto +448 2688 lineto +896 2688 lineto +896 2304 lineto +1030 2531 1245 2641 conicto +1460 2752 1767 2752 conicto +1811 2752 1864 2752 conicto +1917 2752 1982 2752 conicto +1984 2304 lineto +end_ol grestore +gsave 30.878142 2.145000 translate 0.035278 -0.035278 scale +start_ol +1622 1344 moveto +1104 1344 904 1225 conicto +704 1106 704 818 conicto +704 589 854 454 conicto +1004 320 1262 320 conicto +1618 320 1833 572 conicto +2048 825 2048 1244 conicto +2048 1344 lineto +1622 1344 lineto +2496 1513 moveto +2496 0 lineto +2048 0 lineto +2048 384 lineto +1900 154 1679 45 conicto +1458 -64 1138 -64 conicto +733 -64 494 162 conicto +256 389 256 769 conicto +256 1213 555 1438 conicto +854 1664 1448 1664 conicto +2048 1664 lineto +2048 1712 lineto +2048 2025 1851 2196 conicto +1655 2368 1300 2368 conicto +1074 2368 860 2320 conicto +646 2272 448 2176 conicto +448 2560 lineto +687 2656 912 2704 conicto +1138 2752 1351 2752 conicto +1927 2752 2211 2444 conicto +2496 2137 2496 1513 conicto +end_ol grestore +gsave 31.270271 2.145000 translate 0.035278 -0.035278 scale +start_ol +896 384 moveto +896 -1024 lineto +448 -1024 lineto +448 2688 lineto +896 2688 lineto +896 2304 lineto +1032 2531 1240 2641 conicto +1448 2752 1737 2752 conicto +2217 2752 2516 2364 conicto +2816 1976 2816 1344 conicto +2816 712 2516 324 conicto +2217 -64 1737 -64 conicto +1448 -64 1240 46 conicto +1032 157 896 384 conicto +2368 1344 moveto +2368 1823 2171 2095 conicto +1975 2368 1632 2368 conicto +1289 2368 1092 2095 conicto +896 1823 896 1344 conicto +896 865 1092 592 conicto +1289 320 1632 320 conicto +1975 320 2171 592 conicto +2368 865 2368 1344 conicto +end_ol grestore +gsave 31.677391 2.145000 translate 0.035278 -0.035278 scale +start_ol +2688 1646 moveto +2688 0 lineto +2240 0 lineto +2240 1632 lineto +2240 2001 2093 2184 conicto +1947 2368 1654 2368 conicto +1302 2368 1099 2146 conicto +896 1925 896 1542 conicto +896 0 lineto +448 0 lineto +448 3712 lineto +896 3712 lineto +896 2304 lineto +1053 2529 1266 2640 conicto +1479 2752 1757 2752 conicto +2217 2752 2452 2471 conicto +2688 2191 2688 1646 conicto +end_ol grestore +1.000000 1.000000 0.000000 srgb +n 25.000000 5.000000 m 25.000000 6.900000 l 30.000000 6.900000 l 30.000000 5.000000 l f +0.100000 slw +[] 0 sd +[] 0 sd +0 slj +0.000000 0.000000 0.000000 srgb +n 25.000000 5.000000 m 25.000000 6.900000 l 30.000000 6.900000 l 30.000000 5.000000 l cp s +gsave 26.057500 6.145000 translate 0.035278 -0.035278 scale +start_ol +2549 2204 moveto +2714 2485 2942 2618 conicto +3171 2752 3482 2752 conicto +3899 2752 4125 2464 conicto +4352 2177 4352 1646 conicto +4352 0 lineto +3904 0 lineto +3904 1632 lineto +3904 2006 3769 2187 conicto +3634 2368 3356 2368 conicto +3017 2368 2820 2146 conicto +2624 1925 2624 1542 conicto +2624 0 lineto +2176 0 lineto +2176 1632 lineto +2176 2008 2041 2188 conicto +1906 2368 1624 2368 conicto +1289 2368 1092 2145 conicto +896 1922 896 1542 conicto +896 0 lineto +448 0 lineto +448 2688 lineto +896 2688 lineto +896 2304 lineto +1046 2534 1255 2643 conicto +1465 2752 1753 2752 conicto +2044 2752 2247 2611 conicto +2451 2471 2549 2204 conicto +end_ol grestore +gsave 26.679411 6.145000 translate 0.035278 -0.035278 scale +start_ol +2176 1375 moveto +2176 1848 1982 2108 conicto +1789 2368 1439 2368 conicto +1091 2368 897 2108 conicto +704 1848 704 1375 conicto +704 904 897 644 conicto +1091 384 1439 384 conicto +1789 384 1982 644 conicto +2176 904 2176 1375 conicto +2624 347 moveto +2624 -347 2323 -685 conicto +2023 -1024 1404 -1024 conicto +1174 -1024 971 -992 conicto +768 -961 576 -896 conicto +576 -448 lineto +766 -546 951 -593 conicto +1137 -640 1329 -640 conicto +1754 -640 1965 -415 conicto +2176 -190 2176 264 conicto +2176 448 lineto +2042 223 1833 111 conicto +1624 0 1332 0 conicto +848 0 552 376 conicto +256 753 256 1375 conicto +256 1999 552 2375 conicto +848 2752 1332 2752 conicto +1624 2752 1833 2640 conicto +2042 2529 2176 2304 conicto +2176 2688 lineto +2624 2688 lineto +2624 347 lineto +end_ol grestore +gsave 27.086531 6.145000 translate 0.035278 -0.035278 scale +start_ol +448 3712 moveto +896 3712 lineto +896 0 lineto +448 0 lineto +448 3712 lineto +end_ol grestore +gsave 27.263859 6.145000 translate 0.035278 -0.035278 scale +start_ol +2816 504 moveto +2816 1472 lineto +2048 1472 lineto +2048 1856 lineto +3328 1856 lineto +3328 325 lineto +3052 133 2720 34 conicto +2388 -64 2011 -64 conicto +1187 -64 721 417 conicto +256 899 256 1759 conicto +256 2621 725 3102 conicto +1195 3584 2028 3584 conicto +2375 3584 2687 3503 conicto +3000 3422 3264 3264 conicto +3264 2752 lineto +2998 2975 2699 3087 conicto +2400 3200 2071 3200 conicto +1420 3200 1094 2838 conicto +768 2476 768 1759 conicto +768 1044 1084 682 conicto +1400 320 2030 320 conicto +2276 320 2469 365 conicto +2662 410 2816 504 conicto +end_ol grestore +gsave 27.758390 6.145000 translate 0.035278 -0.035278 scale +start_ol +448 3520 moveto +960 3520 lineto +960 384 lineto +2688 384 lineto +2688 0 lineto +448 0 lineto +448 3520 lineto +end_ol grestore +gsave 28.083084 6.145000 translate 0.035278 -0.035278 scale +start_ol +448 3520 moveto +960 3520 lineto +960 1383 lineto +960 817 1156 568 conicto +1353 320 1793 320 conicto +2231 320 2427 568 conicto +2624 817 2624 1383 conicto +2624 3520 lineto +3136 3520 lineto +3136 1324 lineto +3136 637 2796 286 conicto +2456 -64 1793 -64 conicto +1128 -64 788 286 conicto +448 637 448 1324 conicto +448 3520 lineto +end_ol grestore +gsave 28.550140 6.145000 translate 0.035278 -0.035278 scale +start_ol +-64 3520 moveto +3008 3520 lineto +3008 3136 lineto +1728 3136 lineto +1728 0 lineto +1216 0 lineto +1216 3136 lineto +-64 3136 lineto +-64 3520 lineto +end_ol grestore +1.000000 1.000000 0.000000 srgb +n 32.000000 5.000000 m 32.000000 6.900000 l 37.000000 6.900000 l 37.000000 5.000000 l f +0.100000 slw +[0.200000] 0 sd +[0.200000] 0 sd +0 slj +0.000000 0.000000 0.000000 srgb +n 32.000000 5.000000 m 32.000000 6.900000 l 37.000000 6.900000 l 37.000000 5.000000 l cp s +gsave 33.173750 6.145000 translate 0.035278 -0.035278 scale +start_ol +2549 2204 moveto +2714 2485 2942 2618 conicto +3171 2752 3482 2752 conicto +3899 2752 4125 2464 conicto +4352 2177 4352 1646 conicto +4352 0 lineto +3904 0 lineto +3904 1632 lineto +3904 2006 3769 2187 conicto +3634 2368 3356 2368 conicto +3017 2368 2820 2146 conicto +2624 1925 2624 1542 conicto +2624 0 lineto +2176 0 lineto +2176 1632 lineto +2176 2008 2041 2188 conicto +1906 2368 1624 2368 conicto +1289 2368 1092 2145 conicto +896 1922 896 1542 conicto +896 0 lineto +448 0 lineto +448 2688 lineto +896 2688 lineto +896 2304 lineto +1046 2534 1255 2643 conicto +1465 2752 1753 2752 conicto +2044 2752 2247 2611 conicto +2451 2471 2549 2204 conicto +end_ol grestore +gsave 33.795661 6.145000 translate 0.035278 -0.035278 scale +start_ol +2176 1375 moveto +2176 1848 1982 2108 conicto +1789 2368 1439 2368 conicto +1091 2368 897 2108 conicto +704 1848 704 1375 conicto +704 904 897 644 conicto +1091 384 1439 384 conicto +1789 384 1982 644 conicto +2176 904 2176 1375 conicto +2624 347 moveto +2624 -347 2323 -685 conicto +2023 -1024 1404 -1024 conicto +1174 -1024 971 -992 conicto +768 -961 576 -896 conicto +576 -448 lineto +766 -546 951 -593 conicto +1137 -640 1329 -640 conicto +1754 -640 1965 -415 conicto +2176 -190 2176 264 conicto +2176 448 lineto +2042 223 1833 111 conicto +1624 0 1332 0 conicto +848 0 552 376 conicto +256 753 256 1375 conicto +256 1999 552 2375 conicto +848 2752 1332 2752 conicto +1624 2752 1833 2640 conicto +2042 2529 2176 2304 conicto +2176 2688 lineto +2624 2688 lineto +2624 347 lineto +end_ol grestore +gsave 34.202781 6.145000 translate 0.035278 -0.035278 scale +start_ol +448 3712 moveto +896 3712 lineto +896 0 lineto +448 0 lineto +448 3712 lineto +end_ol grestore +gsave 34.380109 6.145000 translate 0.035278 -0.035278 scale +start_ol +192 3520 moveto +676 3520 lineto +1420 545 lineto +2162 3520 lineto +2700 3520 lineto +3444 545 lineto +4186 3520 lineto +4672 3520 lineto +3783 0 lineto +3181 0 lineto +2434 3056 lineto +1681 0 lineto +1079 0 lineto +192 3520 lineto +end_ol grestore +gsave 35.012017 6.145000 translate 0.035278 -0.035278 scale +start_ol +2688 1646 moveto +2688 0 lineto +2240 0 lineto +2240 1632 lineto +2240 2001 2093 2184 conicto +1947 2368 1654 2368 conicto +1302 2368 1099 2146 conicto +896 1925 896 1542 conicto +896 0 lineto +448 0 lineto +448 2688 lineto +896 2688 lineto +896 2304 lineto +1053 2529 1266 2640 conicto +1479 2752 1757 2752 conicto +2217 2752 2452 2471 conicto +2688 2191 2688 1646 conicto +end_ol grestore +gsave 35.416631 6.145000 translate 0.035278 -0.035278 scale +start_ol +2176 2304 moveto +2176 3712 lineto +2624 3712 lineto +2624 0 lineto +2176 0 lineto +2176 384 lineto +2040 157 1832 46 conicto +1624 -64 1332 -64 conicto +855 -64 555 324 conicto +256 712 256 1344 conicto +256 1976 555 2364 conicto +855 2752 1332 2752 conicto +1624 2752 1832 2641 conicto +2040 2531 2176 2304 conicto +704 1344 moveto +704 865 900 592 conicto +1096 320 1439 320 conicto +1782 320 1979 592 conicto +2176 865 2176 1344 conicto +2176 1823 1979 2095 conicto +1782 2368 1439 2368 conicto +1096 2368 900 2095 conicto +704 1823 704 1344 conicto +end_ol grestore +1.000000 1.000000 0.000000 srgb +n 28.000000 9.000000 m 28.000000 10.900000 l 33.000000 10.900000 l 33.000000 9.000000 l f +0.100000 slw +[] 0 sd +[] 0 sd +0 slj +0.000000 0.000000 0.000000 srgb +n 28.000000 9.000000 m 28.000000 10.900000 l 33.000000 10.900000 l 33.000000 9.000000 l cp s +gsave 29.448750 10.145000 translate 0.035278 -0.035278 scale +start_ol +2549 2204 moveto +2714 2485 2942 2618 conicto +3171 2752 3482 2752 conicto +3899 2752 4125 2464 conicto +4352 2177 4352 1646 conicto +4352 0 lineto +3904 0 lineto +3904 1632 lineto +3904 2006 3769 2187 conicto +3634 2368 3356 2368 conicto +3017 2368 2820 2146 conicto +2624 1925 2624 1542 conicto +2624 0 lineto +2176 0 lineto +2176 1632 lineto +2176 2008 2041 2188 conicto +1906 2368 1624 2368 conicto +1289 2368 1092 2145 conicto +896 1922 896 1542 conicto +896 0 lineto +448 0 lineto +448 2688 lineto +896 2688 lineto +896 2304 lineto +1046 2534 1255 2643 conicto +1465 2752 1753 2752 conicto +2044 2752 2247 2611 conicto +2451 2471 2549 2204 conicto +end_ol grestore +gsave 30.070661 10.145000 translate 0.035278 -0.035278 scale +start_ol +2176 1375 moveto +2176 1848 1982 2108 conicto +1789 2368 1439 2368 conicto +1091 2368 897 2108 conicto +704 1848 704 1375 conicto +704 904 897 644 conicto +1091 384 1439 384 conicto +1789 384 1982 644 conicto +2176 904 2176 1375 conicto +2624 347 moveto +2624 -347 2323 -685 conicto +2023 -1024 1404 -1024 conicto +1174 -1024 971 -992 conicto +768 -961 576 -896 conicto +576 -448 lineto +766 -546 951 -593 conicto +1137 -640 1329 -640 conicto +1754 -640 1965 -415 conicto +2176 -190 2176 264 conicto +2176 448 lineto +2042 223 1833 111 conicto +1624 0 1332 0 conicto +848 0 552 376 conicto +256 753 256 1375 conicto +256 1999 552 2375 conicto +848 2752 1332 2752 conicto +1624 2752 1833 2640 conicto +2042 2529 2176 2304 conicto +2176 2688 lineto +2624 2688 lineto +2624 347 lineto +end_ol grestore +gsave 30.477781 10.145000 translate 0.035278 -0.035278 scale +start_ol +448 3712 moveto +896 3712 lineto +896 0 lineto +448 0 lineto +448 3712 lineto +end_ol grestore +gsave 30.655109 10.145000 translate 0.035278 -0.035278 scale +start_ol +1890 3200 moveto +1375 3200 1071 2813 conicto +768 2426 768 1759 conicto +768 1094 1071 707 conicto +1375 320 1890 320 conicto +2406 320 2707 707 conicto +3008 1094 3008 1759 conicto +3008 2426 2707 2813 conicto +2406 3200 1890 3200 conicto +2553 67 moveto +3181 -640 lineto +2607 -640 lineto +2087 -55 lineto +2009 -59 1968 -61 conicto +1927 -64 1889 -64 conicto +1146 -64 701 431 conicto +256 927 256 1759 conicto +256 2593 701 3088 conicto +1146 3584 1890 3584 conicto +2632 3584 3076 3088 conicto +3520 2592 3520 1758 conicto +3520 1146 3271 710 conicto +3023 274 2553 67 conicto +end_ol grestore +gsave 31.159637 10.145000 translate 0.035278 -0.035278 scale +start_ol +-64 3520 moveto +3008 3520 lineto +3008 3136 lineto +1728 3136 lineto +1728 0 lineto +1216 0 lineto +1216 3136 lineto +-64 3136 lineto +-64 3520 lineto +end_ol grestore +1.000000 1.000000 0.000000 srgb +n 28.000000 12.000000 m 28.000000 13.900000 l 33.000000 13.900000 l 33.000000 12.000000 l f +0.100000 slw +[] 0 sd +[] 0 sd +0 slj +0.000000 0.000000 0.000000 srgb +n 28.000000 12.000000 m 28.000000 13.900000 l 33.000000 13.900000 l 33.000000 12.000000 l cp s +gsave 29.172500 13.145000 translate 0.035278 -0.035278 scale +start_ol +2549 2204 moveto +2714 2485 2942 2618 conicto +3171 2752 3482 2752 conicto +3899 2752 4125 2464 conicto +4352 2177 4352 1646 conicto +4352 0 lineto +3904 0 lineto +3904 1632 lineto +3904 2006 3769 2187 conicto +3634 2368 3356 2368 conicto +3017 2368 2820 2146 conicto +2624 1925 2624 1542 conicto +2624 0 lineto +2176 0 lineto +2176 1632 lineto +2176 2008 2041 2188 conicto +1906 2368 1624 2368 conicto +1289 2368 1092 2145 conicto +896 1922 896 1542 conicto +896 0 lineto +448 0 lineto +448 2688 lineto +896 2688 lineto +896 2304 lineto +1046 2534 1255 2643 conicto +1465 2752 1753 2752 conicto +2044 2752 2247 2611 conicto +2451 2471 2549 2204 conicto +end_ol grestore +gsave 29.794411 13.145000 translate 0.035278 -0.035278 scale +start_ol +2176 1375 moveto +2176 1848 1982 2108 conicto +1789 2368 1439 2368 conicto +1091 2368 897 2108 conicto +704 1848 704 1375 conicto +704 904 897 644 conicto +1091 384 1439 384 conicto +1789 384 1982 644 conicto +2176 904 2176 1375 conicto +2624 347 moveto +2624 -347 2323 -685 conicto +2023 -1024 1404 -1024 conicto +1174 -1024 971 -992 conicto +768 -961 576 -896 conicto +576 -448 lineto +766 -546 951 -593 conicto +1137 -640 1329 -640 conicto +1754 -640 1965 -415 conicto +2176 -190 2176 264 conicto +2176 448 lineto +2042 223 1833 111 conicto +1624 0 1332 0 conicto +848 0 552 376 conicto +256 753 256 1375 conicto +256 1999 552 2375 conicto +848 2752 1332 2752 conicto +1624 2752 1833 2640 conicto +2042 2529 2176 2304 conicto +2176 2688 lineto +2624 2688 lineto +2624 347 lineto +end_ol grestore +gsave 30.201531 13.145000 translate 0.035278 -0.035278 scale +start_ol +448 3712 moveto +896 3712 lineto +896 0 lineto +448 0 lineto +448 3712 lineto +end_ol grestore +gsave 30.378859 13.145000 translate 0.035278 -0.035278 scale +start_ol +448 3520 moveto +2496 3520 lineto +2496 3136 lineto +960 3136 lineto +960 2112 lineto +2368 2112 lineto +2368 1728 lineto +960 1728 lineto +960 0 lineto +448 0 lineto +448 3520 lineto +end_ol grestore +gsave 30.746010 13.145000 translate 0.035278 -0.035278 scale +start_ol +448 3520 moveto +960 3520 lineto +960 384 lineto +2688 384 lineto +2688 0 lineto +448 0 lineto +448 3520 lineto +end_ol grestore +gsave 31.015753 13.145000 translate 0.035278 -0.035278 scale +start_ol +-64 3520 moveto +3008 3520 lineto +3008 3136 lineto +1728 3136 lineto +1728 0 lineto +1216 0 lineto +1216 3136 lineto +-64 3136 lineto +-64 3520 lineto +end_ol grestore +gsave 31.405385 13.145000 translate 0.035278 -0.035278 scale +start_ol +448 3520 moveto +960 3520 lineto +960 2032 lineto +2528 3520 lineto +3136 3520 lineto +1402 1879 lineto +3264 0 lineto +2641 0 lineto +960 1695 lineto +960 0 lineto +448 0 lineto +448 3520 lineto +end_ol grestore +1.000000 1.000000 0.000000 srgb +n 28.000000 15.000000 m 28.000000 16.900000 l 33.000000 16.900000 l 33.000000 15.000000 l f +0.100000 slw +[] 0 sd +[] 0 sd +0 slj +0.000000 0.000000 0.000000 srgb +n 28.000000 15.000000 m 28.000000 16.900000 l 33.000000 16.900000 l 33.000000 15.000000 l cp s +gsave 29.361250 16.145000 translate 0.035278 -0.035278 scale +start_ol +2549 2204 moveto +2714 2485 2942 2618 conicto +3171 2752 3482 2752 conicto +3899 2752 4125 2464 conicto +4352 2177 4352 1646 conicto +4352 0 lineto +3904 0 lineto +3904 1632 lineto +3904 2006 3769 2187 conicto +3634 2368 3356 2368 conicto +3017 2368 2820 2146 conicto +2624 1925 2624 1542 conicto +2624 0 lineto +2176 0 lineto +2176 1632 lineto +2176 2008 2041 2188 conicto +1906 2368 1624 2368 conicto +1289 2368 1092 2145 conicto +896 1922 896 1542 conicto +896 0 lineto +448 0 lineto +448 2688 lineto +896 2688 lineto +896 2304 lineto +1046 2534 1255 2643 conicto +1465 2752 1753 2752 conicto +2044 2752 2247 2611 conicto +2451 2471 2549 2204 conicto +end_ol grestore +gsave 29.983161 16.145000 translate 0.035278 -0.035278 scale +start_ol +2176 1375 moveto +2176 1848 1982 2108 conicto +1789 2368 1439 2368 conicto +1091 2368 897 2108 conicto +704 1848 704 1375 conicto +704 904 897 644 conicto +1091 384 1439 384 conicto +1789 384 1982 644 conicto +2176 904 2176 1375 conicto +2624 347 moveto +2624 -347 2323 -685 conicto +2023 -1024 1404 -1024 conicto +1174 -1024 971 -992 conicto +768 -961 576 -896 conicto +576 -448 lineto +766 -546 951 -593 conicto +1137 -640 1329 -640 conicto +1754 -640 1965 -415 conicto +2176 -190 2176 264 conicto +2176 448 lineto +2042 223 1833 111 conicto +1624 0 1332 0 conicto +848 0 552 376 conicto +256 753 256 1375 conicto +256 1999 552 2375 conicto +848 2752 1332 2752 conicto +1624 2752 1833 2640 conicto +2042 2529 2176 2304 conicto +2176 2688 lineto +2624 2688 lineto +2624 347 lineto +end_ol grestore +gsave 30.390281 16.145000 translate 0.035278 -0.035278 scale +start_ol +448 3712 moveto +896 3712 lineto +896 0 lineto +448 0 lineto +448 3712 lineto +end_ol grestore +gsave 30.567609 16.145000 translate 0.035278 -0.035278 scale +start_ol +192 3520 moveto +676 3520 lineto +1420 545 lineto +2162 3520 lineto +2700 3520 lineto +3444 545 lineto +4186 3520 lineto +4672 3520 lineto +3783 0 lineto +3181 0 lineto +2434 3056 lineto +1681 0 lineto +1079 0 lineto +192 3520 lineto +end_ol grestore +gsave 31.199517 16.145000 translate 0.035278 -0.035278 scale +start_ol +320 3520 moveto +827 3520 lineto +1694 2202 lineto +2565 3520 lineto +3072 3520 lineto +1932 1830 lineto +3136 0 lineto +2625 0 lineto +1637 1508 lineto +641 0 lineto +128 0 lineto +1425 1879 lineto +320 3520 lineto +end_ol grestore +0.100000 slw +[] 0 sd +[] 0 sd +0 slj +0 slc +n 33.000000 9.950000 m 35.750000 9.950000 l 35.750000 7.386803 l s +[] 0 sd +0 slj +0 slc +n 35.750000 7.011803 m 36.000000 7.511803 l 35.750000 7.386803 l 35.500000 7.511803 l ef +n 35.750000 7.011803 m 36.000000 7.511803 l 35.750000 7.386803 l 35.500000 7.511803 l cp s +0.100000 slw +[] 0 sd +[] 0 sd +0 slj +0 slc +n 5.000000 9.950000 m 1.750000 9.950000 l 1.750000 8.386803 l s +[] 0 sd +0 slj +0 slc +n 1.750000 8.011803 m 2.000000 8.511803 l 1.750000 8.386803 l 1.500000 8.511803 l ef +n 1.750000 8.011803 m 2.000000 8.511803 l 1.750000 8.386803 l 1.500000 8.511803 l cp s +0.100000 slw +[] 0 sd +[] 0 sd +0 slj +0 slc +n 5.000000 12.950000 m 1.750000 12.950000 l 1.750000 8.386803 l s +[] 0 sd +0 slj +0 slc +n 1.750000 8.011803 m 2.000000 8.511803 l 1.750000 8.386803 l 1.500000 8.511803 l ef +n 1.750000 8.011803 m 2.000000 8.511803 l 1.750000 8.386803 l 1.500000 8.511803 l cp s +0.100000 slw +[] 0 sd +[] 0 sd +0 slj +0 slc +n 5.000000 15.950000 m 1.750000 15.950000 l 1.750000 8.386803 l s +[] 0 sd +0 slj +0 slc +n 1.750000 8.011803 m 2.000000 8.511803 l 1.750000 8.386803 l 1.500000 8.511803 l ef +n 1.750000 8.011803 m 2.000000 8.511803 l 1.750000 8.386803 l 1.500000 8.511803 l cp s +0.100000 slw +[] 0 sd +[] 0 sd +0 slj +0 slc +n 33.000000 12.950000 m 35.750000 12.950000 l 35.750000 7.386803 l s +[] 0 sd +0 slj +0 slc +n 35.750000 7.011803 m 36.000000 7.511803 l 35.750000 7.386803 l 35.500000 7.511803 l ef +n 35.750000 7.011803 m 36.000000 7.511803 l 35.750000 7.386803 l 35.500000 7.511803 l cp s +0.100000 slw +[] 0 sd +[] 0 sd +0 slj +0 slc +n 33.000000 15.950000 m 35.750000 15.950000 l 35.750000 7.386803 l s +[] 0 sd +0 slj +0 slc +n 35.750000 7.011803 m 36.000000 7.511803 l 35.750000 7.386803 l 35.500000 7.511803 l ef +n 35.750000 7.011803 m 36.000000 7.511803 l 35.750000 7.386803 l 35.500000 7.511803 l cp s +0.100000 slw +[] 0 sd +[] 0 sd +0 slj +0 slc +n 27.500000 5.000000 m 27.500000 3.950000 l 30.500000 3.950000 l 30.500000 3.386803 l s +[] 0 sd +0 slj +0 slc +n 30.500000 3.011803 m 30.750000 3.511803 l 30.500000 3.386803 l 30.250000 3.511803 l ef +n 30.500000 3.011803 m 30.750000 3.511803 l 30.500000 3.386803 l 30.250000 3.511803 l cp s +0.100000 slw +[] 0 sd +[] 0 sd +0 slj +0 slc +n 34.500000 5.000000 m 34.500000 3.950000 l 30.500000 3.950000 l 30.500000 3.386803 l s +[] 0 sd +0 slj +0 slc +n 30.500000 3.011803 m 30.750000 3.511803 l 30.500000 3.386803 l 30.250000 3.511803 l ef +n 30.500000 3.011803 m 30.750000 3.511803 l 30.500000 3.386803 l 30.250000 3.511803 l cp s +1.000000 1.000000 0.000000 srgb +n 28.000000 18.000000 m 28.000000 19.900000 l 33.000000 19.900000 l 33.000000 18.000000 l f +0.100000 slw +[] 0 sd +[] 0 sd +0 slj +0.000000 0.000000 0.000000 srgb +n 28.000000 18.000000 m 28.000000 19.900000 l 33.000000 19.900000 l 33.000000 18.000000 l cp s +gsave 28.685000 19.145000 translate 0.035278 -0.035278 scale +start_ol +192 2688 moveto +631 2688 lineto +1179 590 lineto +1725 2688 lineto +2243 2688 lineto +2791 590 lineto +3337 2688 lineto +3776 2688 lineto +3077 0 lineto +2560 0 lineto +1985 2203 lineto +1408 0 lineto +891 0 lineto +192 2688 lineto +end_ol grestore +gsave 29.207006 19.145000 translate 0.035278 -0.035278 scale +start_ol +2176 1375 moveto +2176 1848 1982 2108 conicto +1789 2368 1439 2368 conicto +1091 2368 897 2108 conicto +704 1848 704 1375 conicto +704 904 897 644 conicto +1091 384 1439 384 conicto +1789 384 1982 644 conicto +2176 904 2176 1375 conicto +2624 347 moveto +2624 -347 2323 -685 conicto +2023 -1024 1404 -1024 conicto +1174 -1024 971 -992 conicto +768 -961 576 -896 conicto +576 -448 lineto +766 -546 951 -593 conicto +1137 -640 1329 -640 conicto +1754 -640 1965 -415 conicto +2176 -190 2176 264 conicto +2176 448 lineto +2042 223 1833 111 conicto +1624 0 1332 0 conicto +848 0 552 376 conicto +256 753 256 1375 conicto +256 1999 552 2375 conicto +848 2752 1332 2752 conicto +1624 2752 1833 2640 conicto +2042 2529 2176 2304 conicto +2176 2688 lineto +2624 2688 lineto +2624 347 lineto +end_ol grestore +gsave 29.614126 19.145000 translate 0.035278 -0.035278 scale +start_ol +448 3712 moveto +896 3712 lineto +896 0 lineto +448 0 lineto +448 3712 lineto +end_ol grestore +gsave 29.791454 19.145000 translate 0.035278 -0.035278 scale +start_ol +192 3520 moveto +676 3520 lineto +1420 545 lineto +2162 3520 lineto +2700 3520 lineto +3444 545 lineto +4186 3520 lineto +4672 3520 lineto +3783 0 lineto +3181 0 lineto +2434 3056 lineto +1681 0 lineto +1079 0 lineto +192 3520 lineto +end_ol grestore +gsave 30.408372 19.145000 translate 0.035278 -0.035278 scale +start_ol +448 2688 moveto +896 2688 lineto +896 0 lineto +448 0 lineto +448 2688 lineto +448 3712 moveto +896 3712 lineto +896 3136 lineto +448 3136 lineto +448 3712 lineto +end_ol grestore +gsave 30.585701 19.145000 translate 0.035278 -0.035278 scale +start_ol +2688 1646 moveto +2688 0 lineto +2240 0 lineto +2240 1632 lineto +2240 2001 2093 2184 conicto +1947 2368 1654 2368 conicto +1302 2368 1099 2146 conicto +896 1925 896 1542 conicto +896 0 lineto +448 0 lineto +448 2688 lineto +896 2688 lineto +896 2304 lineto +1053 2529 1266 2640 conicto +1479 2752 1757 2752 conicto +2217 2752 2452 2471 conicto +2688 2191 2688 1646 conicto +end_ol grestore +gsave 30.990315 19.145000 translate 0.035278 -0.035278 scale +start_ol +2176 2304 moveto +2176 3712 lineto +2624 3712 lineto +2624 0 lineto +2176 0 lineto +2176 384 lineto +2040 157 1832 46 conicto +1624 -64 1332 -64 conicto +855 -64 555 324 conicto +256 712 256 1344 conicto +256 1976 555 2364 conicto +855 2752 1332 2752 conicto +1624 2752 1832 2641 conicto +2040 2531 2176 2304 conicto +704 1344 moveto +704 865 900 592 conicto +1096 320 1439 320 conicto +1782 320 1979 592 conicto +2176 865 2176 1344 conicto +2176 1823 1979 2095 conicto +1782 2368 1439 2368 conicto +1096 2368 900 2095 conicto +704 1823 704 1344 conicto +end_ol grestore +gsave 31.397434 19.145000 translate 0.035278 -0.035278 scale +start_ol +1473 2368 moveto +1117 2368 910 2094 conicto +704 1820 704 1344 conicto +704 868 909 594 conicto +1115 320 1473 320 conicto +1827 320 2033 595 conicto +2240 870 2240 1344 conicto +2240 1816 2033 2092 conicto +1827 2368 1473 2368 conicto +1472 2752 moveto +2040 2752 2364 2378 conicto +2688 2005 2688 1344 conicto +2688 685 2364 310 conicto +2040 -64 1472 -64 conicto +902 -64 579 310 conicto +256 685 256 1344 conicto +256 2005 579 2378 conicto +902 2752 1472 2752 conicto +end_ol grestore +gsave 31.789563 19.145000 translate 0.035278 -0.035278 scale +start_ol +192 2688 moveto +631 2688 lineto +1179 590 lineto +1725 2688 lineto +2243 2688 lineto +2791 590 lineto +3337 2688 lineto +3776 2688 lineto +3077 0 lineto +2560 0 lineto +1985 2203 lineto +1408 0 lineto +891 0 lineto +192 2688 lineto +end_ol grestore +0.100000 slw +[] 0 sd +[] 0 sd +0 slj +0 slc +n 33.000000 18.950000 m 35.750000 18.950000 l 35.750000 7.386803 l s +[] 0 sd +0 slj +0 slc +n 35.750000 7.011803 m 36.000000 7.511803 l 35.750000 7.386803 l 35.500000 7.511803 l ef +n 35.750000 7.011803 m 36.000000 7.511803 l 35.750000 7.386803 l 35.500000 7.511803 l cp s +0.100000 slw +[0.200000] 0 sd +[0.200000] 0 sd +0 slc +0.627451 0.125490 0.941176 srgb +n 28.000000 9.950000 m 22.486803 9.950000 l s +[] 0 sd +0 slj +0 slc +n 22.111803 9.950000 m 22.611803 9.700000 l 22.486803 9.950000 l 22.611803 10.200000 l ef +n 22.111803 9.950000 m 22.611803 9.700000 l 22.486803 9.950000 l 22.611803 10.200000 l cp s +0.100000 slw +[0.200000] 0 sd +[0.200000] 0 sd +0 slc +n 28.000000 12.950000 m 22.486803 12.950000 l s +[] 0 sd +0 slj +0 slc +n 22.111803 12.950000 m 22.611803 12.700000 l 22.486803 12.950000 l 22.611803 13.200000 l ef +n 22.111803 12.950000 m 22.611803 12.700000 l 22.486803 12.950000 l 22.611803 13.200000 l cp s +0.100000 slw +[0.200000] 0 sd +[0.200000] 0 sd +0 slc +n 28.000000 15.950000 m 22.486803 15.950000 l s +[] 0 sd +0 slj +0 slc +n 22.111803 15.950000 m 22.611803 15.700000 l 22.486803 15.950000 l 22.611803 16.200000 l ef +n 22.111803 15.950000 m 22.611803 15.700000 l 22.486803 15.950000 l 22.611803 16.200000 l cp s +0.100000 slw +[0.200000] 0 sd +[0.200000] 0 sd +0 slc +n 28.000000 18.950000 m 22.372442 14.213472 l s +[] 0 sd +0 slj +0 slc +n 22.085538 13.971995 m 22.629061 14.102695 l 22.372442 14.213472 l 22.307092 14.485233 l ef +n 22.085538 13.971995 m 22.629061 14.102695 l 22.372442 14.213472 l 22.307092 14.485233 l cp s +0.100000 slw +[0.200000] 0 sd +[0.200000] 0 sd +0 slc +n 28.000000 18.950000 m 22.290917 11.290314 l s +[] 0 sd +0 slj +0 slc +n 22.066814 10.989643 m 22.566065 11.241136 l 22.290917 11.290314 l 22.165171 11.539939 l ef +n 22.066814 10.989643 m 22.566065 11.241136 l 22.290917 11.290314 l 22.165171 11.539939 l cp s +0.100000 slw +[0.200000] 0 sd +[0.200000] 0 sd +0 slc +n 28.000000 18.950000 m 22.460658 17.057391 l s +[] 0 sd +0 slj +0 slc +n 22.105799 16.936148 m 22.659773 16.861233 l 22.460658 17.057391 l 22.498115 17.334379 l ef +n 22.105799 16.936148 m 22.659773 16.861233 l 22.460658 17.057391 l 22.498115 17.334379 l cp s +0.678431 0.847059 0.901961 srgb +n 36.000000 -1.000000 m 36.000000 0.900000 l 41.000000 0.900000 l 41.000000 -1.000000 l f +0.100000 slw +[] 0 sd +[] 0 sd +0 slj +0.000000 0.000000 0.000000 srgb +n 36.000000 -1.000000 m 36.000000 0.900000 l 41.000000 0.900000 l 41.000000 -1.000000 l cp s +gsave 36.895000 0.145000 translate 0.035278 -0.035278 scale +start_ol +2549 2204 moveto +2714 2485 2942 2618 conicto +3171 2752 3482 2752 conicto +3899 2752 4125 2464 conicto +4352 2177 4352 1646 conicto +4352 0 lineto +3904 0 lineto +3904 1632 lineto +3904 2006 3769 2187 conicto +3634 2368 3356 2368 conicto +3017 2368 2820 2146 conicto +2624 1925 2624 1542 conicto +2624 0 lineto +2176 0 lineto +2176 1632 lineto +2176 2008 2041 2188 conicto +1906 2368 1624 2368 conicto +1289 2368 1092 2145 conicto +896 1922 896 1542 conicto +896 0 lineto +448 0 lineto +448 2688 lineto +896 2688 lineto +896 2304 lineto +1046 2534 1255 2643 conicto +1465 2752 1753 2752 conicto +2044 2752 2247 2611 conicto +2451 2471 2549 2204 conicto +end_ol grestore +gsave 37.516911 0.145000 translate 0.035278 -0.035278 scale +start_ol +2176 1375 moveto +2176 1848 1982 2108 conicto +1789 2368 1439 2368 conicto +1091 2368 897 2108 conicto +704 1848 704 1375 conicto +704 904 897 644 conicto +1091 384 1439 384 conicto +1789 384 1982 644 conicto +2176 904 2176 1375 conicto +2624 347 moveto +2624 -347 2323 -685 conicto +2023 -1024 1404 -1024 conicto +1174 -1024 971 -992 conicto +768 -961 576 -896 conicto +576 -448 lineto +766 -546 951 -593 conicto +1137 -640 1329 -640 conicto +1754 -640 1965 -415 conicto +2176 -190 2176 264 conicto +2176 448 lineto +2042 223 1833 111 conicto +1624 0 1332 0 conicto +848 0 552 376 conicto +256 753 256 1375 conicto +256 1999 552 2375 conicto +848 2752 1332 2752 conicto +1624 2752 1833 2640 conicto +2042 2529 2176 2304 conicto +2176 2688 lineto +2624 2688 lineto +2624 347 lineto +end_ol grestore +gsave 37.924031 0.145000 translate 0.035278 -0.035278 scale +start_ol +448 3712 moveto +896 3712 lineto +896 0 lineto +448 0 lineto +448 3712 lineto +end_ol grestore +gsave 38.101359 0.145000 translate 0.035278 -0.035278 scale +start_ol +960 3136 moveto +960 1792 lineto +1552 1792 lineto +1881 1792 2060 1967 conicto +2240 2142 2240 2465 conicto +2240 2786 2060 2961 conicto +1881 3136 1552 3136 conicto +960 3136 lineto +448 3520 moveto +1552 3520 lineto +2145 3520 2448 3251 conicto +2752 2983 2752 2465 conicto +2752 1943 2448 1675 conicto +2145 1408 1552 1408 conicto +960 1408 lineto +960 0 lineto +448 0 lineto +448 3520 lineto +end_ol grestore +gsave 38.458522 0.145000 translate 0.035278 -0.035278 scale +start_ol +1622 1344 moveto +1104 1344 904 1225 conicto +704 1106 704 818 conicto +704 589 854 454 conicto +1004 320 1262 320 conicto +1618 320 1833 572 conicto +2048 825 2048 1244 conicto +2048 1344 lineto +1622 1344 lineto +2496 1513 moveto +2496 0 lineto +2048 0 lineto +2048 384 lineto +1900 154 1679 45 conicto +1458 -64 1138 -64 conicto +733 -64 494 162 conicto +256 389 256 769 conicto +256 1213 555 1438 conicto +854 1664 1448 1664 conicto +2048 1664 lineto +2048 1712 lineto +2048 2025 1851 2196 conicto +1655 2368 1300 2368 conicto +1074 2368 860 2320 conicto +646 2272 448 2176 conicto +448 2560 lineto +687 2656 912 2704 conicto +1138 2752 1351 2752 conicto +1927 2752 2211 2444 conicto +2496 2137 2496 1513 conicto +end_ol grestore +gsave 38.850651 0.145000 translate 0.035278 -0.035278 scale +start_ol +1984 2304 moveto +1912 2337 1828 2352 conicto +1744 2368 1642 2368 conicto +1282 2368 1089 2127 conicto +896 1887 896 1437 conicto +896 0 lineto +448 0 lineto +448 2688 lineto +896 2688 lineto +896 2304 lineto +1030 2531 1245 2641 conicto +1460 2752 1767 2752 conicto +1811 2752 1864 2752 conicto +1917 2752 1982 2752 conicto +1984 2304 lineto +end_ol grestore +gsave 39.112903 0.145000 translate 0.035278 -0.035278 scale +start_ol +2112 2560 moveto +2112 2176 lineto +1932 2272 1738 2320 conicto +1544 2368 1336 2368 conicto +1020 2368 862 2269 conicto +704 2170 704 1972 conicto +704 1821 814 1735 conicto +925 1649 1260 1571 conicto +1403 1538 lineto +1857 1438 2048 1255 conicto +2240 1072 2240 744 conicto +2240 371 1954 153 conicto +1668 -64 1167 -64 conicto +958 -64 732 -16 conicto +506 32 256 128 conicto +256 576 lineto +491 448 719 384 conicto +947 320 1170 320 conicto +1470 320 1631 425 conicto +1792 531 1792 722 conicto +1792 900 1678 994 conicto +1564 1089 1177 1177 conicto +1032 1212 lineto +621 1298 438 1476 conicto +256 1654 256 1964 conicto +256 2341 520 2546 conicto +784 2752 1269 2752 conicto +1509 2752 1721 2704 conicto +1933 2656 2112 2560 conicto +end_ol grestore +gsave 39.445087 0.145000 translate 0.035278 -0.035278 scale +start_ol +2752 1480 moveto +2752 1280 lineto +704 1280 lineto +733 811 978 565 conicto +1223 320 1660 320 conicto +1914 320 2152 384 conicto +2390 448 2624 576 conicto +2624 192 lineto +2388 67 2140 1 conicto +1893 -64 1639 -64 conicto +1001 -64 628 309 conicto +256 683 256 1320 conicto +256 1979 613 2365 conicto +970 2752 1576 2752 conicto +2120 2752 2436 2410 conicto +2752 2068 2752 1480 conicto +2304 1600 moveto +2299 1950 2099 2159 conicto +1900 2368 1572 2368 conicto +1200 2368 976 2166 conicto +753 1964 719 1597 conicto +2304 1600 lineto +end_ol grestore +gsave 39.839713 0.145000 translate 0.035278 -0.035278 scale +start_ol +1984 2304 moveto +1912 2337 1828 2352 conicto +1744 2368 1642 2368 conicto +1282 2368 1089 2127 conicto +896 1887 896 1437 conicto +896 0 lineto +448 0 lineto +448 2688 lineto +896 2688 lineto +896 2304 lineto +1030 2531 1245 2641 conicto +1460 2752 1767 2752 conicto +1811 2752 1864 2752 conicto +1917 2752 1982 2752 conicto +1984 2304 lineto +end_ol grestore +1.000000 1.000000 0.000000 srgb +n 36.000000 2.000000 m 36.000000 3.900000 l 41.000000 3.900000 l 41.000000 2.000000 l f +0.100000 slw +[] 0 sd +[] 0 sd +0 slj +0.000000 0.000000 0.000000 srgb +n 36.000000 2.000000 m 36.000000 3.900000 l 41.000000 3.900000 l 41.000000 2.000000 l cp s +gsave 37.026250 3.145000 translate 0.035278 -0.035278 scale +start_ol +2549 2204 moveto +2714 2485 2942 2618 conicto +3171 2752 3482 2752 conicto +3899 2752 4125 2464 conicto +4352 2177 4352 1646 conicto +4352 0 lineto +3904 0 lineto +3904 1632 lineto +3904 2006 3769 2187 conicto +3634 2368 3356 2368 conicto +3017 2368 2820 2146 conicto +2624 1925 2624 1542 conicto +2624 0 lineto +2176 0 lineto +2176 1632 lineto +2176 2008 2041 2188 conicto +1906 2368 1624 2368 conicto +1289 2368 1092 2145 conicto +896 1922 896 1542 conicto +896 0 lineto +448 0 lineto +448 2688 lineto +896 2688 lineto +896 2304 lineto +1046 2534 1255 2643 conicto +1465 2752 1753 2752 conicto +2044 2752 2247 2611 conicto +2451 2471 2549 2204 conicto +end_ol grestore +gsave 37.648161 3.145000 translate 0.035278 -0.035278 scale +start_ol +2176 1375 moveto +2176 1848 1982 2108 conicto +1789 2368 1439 2368 conicto +1091 2368 897 2108 conicto +704 1848 704 1375 conicto +704 904 897 644 conicto +1091 384 1439 384 conicto +1789 384 1982 644 conicto +2176 904 2176 1375 conicto +2624 347 moveto +2624 -347 2323 -685 conicto +2023 -1024 1404 -1024 conicto +1174 -1024 971 -992 conicto +768 -961 576 -896 conicto +576 -448 lineto +766 -546 951 -593 conicto +1137 -640 1329 -640 conicto +1754 -640 1965 -415 conicto +2176 -190 2176 264 conicto +2176 448 lineto +2042 223 1833 111 conicto +1624 0 1332 0 conicto +848 0 552 376 conicto +256 753 256 1375 conicto +256 1999 552 2375 conicto +848 2752 1332 2752 conicto +1624 2752 1833 2640 conicto +2042 2529 2176 2304 conicto +2176 2688 lineto +2624 2688 lineto +2624 347 lineto +end_ol grestore +gsave 38.055281 3.145000 translate 0.035278 -0.035278 scale +start_ol +448 3712 moveto +896 3712 lineto +896 0 lineto +448 0 lineto +448 3712 lineto +end_ol grestore +gsave 38.232609 3.145000 translate 0.035278 -0.035278 scale +start_ol +960 3136 moveto +960 1792 lineto +1552 1792 lineto +1881 1792 2060 1967 conicto +2240 2142 2240 2465 conicto +2240 2786 2060 2961 conicto +1881 3136 1552 3136 conicto +960 3136 lineto +448 3520 moveto +1552 3520 lineto +2145 3520 2448 3251 conicto +2752 2983 2752 2465 conicto +2752 1943 2448 1675 conicto +2145 1408 1552 1408 conicto +960 1408 lineto +960 0 lineto +448 0 lineto +448 3520 lineto +end_ol grestore +gsave 38.589772 3.145000 translate 0.035278 -0.035278 scale +start_ol +1622 1344 moveto +1104 1344 904 1225 conicto +704 1106 704 818 conicto +704 589 854 454 conicto +1004 320 1262 320 conicto +1618 320 1833 572 conicto +2048 825 2048 1244 conicto +2048 1344 lineto +1622 1344 lineto +2496 1513 moveto +2496 0 lineto +2048 0 lineto +2048 384 lineto +1900 154 1679 45 conicto +1458 -64 1138 -64 conicto +733 -64 494 162 conicto +256 389 256 769 conicto +256 1213 555 1438 conicto +854 1664 1448 1664 conicto +2048 1664 lineto +2048 1712 lineto +2048 2025 1851 2196 conicto +1655 2368 1300 2368 conicto +1074 2368 860 2320 conicto +646 2272 448 2176 conicto +448 2560 lineto +687 2656 912 2704 conicto +1138 2752 1351 2752 conicto +1927 2752 2211 2444 conicto +2496 2137 2496 1513 conicto +end_ol grestore +gsave 38.981901 3.145000 translate 0.035278 -0.035278 scale +start_ol +1984 2304 moveto +1912 2337 1828 2352 conicto +1744 2368 1642 2368 conicto +1282 2368 1089 2127 conicto +896 1887 896 1437 conicto +896 0 lineto +448 0 lineto +448 2688 lineto +896 2688 lineto +896 2304 lineto +1030 2531 1245 2641 conicto +1460 2752 1767 2752 conicto +1811 2752 1864 2752 conicto +1917 2752 1982 2752 conicto +1984 2304 lineto +end_ol grestore +gsave 39.244153 3.145000 translate 0.035278 -0.035278 scale +start_ol +2112 2560 moveto +2112 2176 lineto +1932 2272 1738 2320 conicto +1544 2368 1336 2368 conicto +1020 2368 862 2269 conicto +704 2170 704 1972 conicto +704 1821 814 1735 conicto +925 1649 1260 1571 conicto +1403 1538 lineto +1857 1438 2048 1255 conicto +2240 1072 2240 744 conicto +2240 371 1954 153 conicto +1668 -64 1167 -64 conicto +958 -64 732 -16 conicto +506 32 256 128 conicto +256 576 lineto +491 448 719 384 conicto +947 320 1170 320 conicto +1470 320 1631 425 conicto +1792 531 1792 722 conicto +1792 900 1678 994 conicto +1564 1089 1177 1177 conicto +1032 1212 lineto +621 1298 438 1476 conicto +256 1654 256 1964 conicto +256 2341 520 2546 conicto +784 2752 1269 2752 conicto +1509 2752 1721 2704 conicto +1933 2656 2112 2560 conicto +end_ol grestore +gsave 39.576337 3.145000 translate 0.035278 -0.035278 scale +start_ol +2752 1480 moveto +2752 1280 lineto +704 1280 lineto +733 811 978 565 conicto +1223 320 1660 320 conicto +1914 320 2152 384 conicto +2390 448 2624 576 conicto +2624 192 lineto +2388 67 2140 1 conicto +1893 -64 1639 -64 conicto +1001 -64 628 309 conicto +256 683 256 1320 conicto +256 1979 613 2365 conicto +970 2752 1576 2752 conicto +2120 2752 2436 2410 conicto +2752 2068 2752 1480 conicto +2304 1600 moveto +2299 1950 2099 2159 conicto +1900 2368 1572 2368 conicto +1200 2368 976 2166 conicto +753 1964 719 1597 conicto +2304 1600 lineto +end_ol grestore +1.000000 1.000000 0.000000 srgb +n 20.000000 1.000000 m 20.000000 2.900000 l 25.000000 2.900000 l 25.000000 1.000000 l f +0.100000 slw +[] 0 sd +[] 0 sd +0 slj +0.000000 0.000000 0.000000 srgb +n 20.000000 1.000000 m 20.000000 2.900000 l 25.000000 2.900000 l 25.000000 1.000000 l cp s +gsave 21.132500 2.145000 translate 0.035278 -0.035278 scale +start_ol +2549 2204 moveto +2714 2485 2942 2618 conicto +3171 2752 3482 2752 conicto +3899 2752 4125 2464 conicto +4352 2177 4352 1646 conicto +4352 0 lineto +3904 0 lineto +3904 1632 lineto +3904 2006 3769 2187 conicto +3634 2368 3356 2368 conicto +3017 2368 2820 2146 conicto +2624 1925 2624 1542 conicto +2624 0 lineto +2176 0 lineto +2176 1632 lineto +2176 2008 2041 2188 conicto +1906 2368 1624 2368 conicto +1289 2368 1092 2145 conicto +896 1922 896 1542 conicto +896 0 lineto +448 0 lineto +448 2688 lineto +896 2688 lineto +896 2304 lineto +1046 2534 1255 2643 conicto +1465 2752 1753 2752 conicto +2044 2752 2247 2611 conicto +2451 2471 2549 2204 conicto +end_ol grestore +gsave 21.754411 2.145000 translate 0.035278 -0.035278 scale +start_ol +2176 1375 moveto +2176 1848 1982 2108 conicto +1789 2368 1439 2368 conicto +1091 2368 897 2108 conicto +704 1848 704 1375 conicto +704 904 897 644 conicto +1091 384 1439 384 conicto +1789 384 1982 644 conicto +2176 904 2176 1375 conicto +2624 347 moveto +2624 -347 2323 -685 conicto +2023 -1024 1404 -1024 conicto +1174 -1024 971 -992 conicto +768 -961 576 -896 conicto +576 -448 lineto +766 -546 951 -593 conicto +1137 -640 1329 -640 conicto +1754 -640 1965 -415 conicto +2176 -190 2176 264 conicto +2176 448 lineto +2042 223 1833 111 conicto +1624 0 1332 0 conicto +848 0 552 376 conicto +256 753 256 1375 conicto +256 1999 552 2375 conicto +848 2752 1332 2752 conicto +1624 2752 1833 2640 conicto +2042 2529 2176 2304 conicto +2176 2688 lineto +2624 2688 lineto +2624 347 lineto +end_ol grestore +gsave 22.161531 2.145000 translate 0.035278 -0.035278 scale +start_ol +448 3712 moveto +896 3712 lineto +896 0 lineto +448 0 lineto +448 3712 lineto +end_ol grestore +gsave 22.338859 2.145000 translate 0.035278 -0.035278 scale +start_ol +960 3136 moveto +960 384 lineto +1536 384 lineto +2266 384 2605 716 conicto +2944 1048 2944 1764 conicto +2944 2475 2605 2805 conicto +2266 3136 1536 3136 conicto +960 3136 lineto +448 3520 moveto +1463 3520 lineto +2493 3520 2974 3094 conicto +3456 2669 3456 1764 conicto +3456 853 2972 426 conicto +2488 0 1463 0 conicto +448 0 lineto +448 3520 lineto +end_ol grestore +gsave 22.830893 2.145000 translate 0.035278 -0.035278 scale +start_ol +1622 1344 moveto +1104 1344 904 1225 conicto +704 1106 704 818 conicto +704 589 854 454 conicto +1004 320 1262 320 conicto +1618 320 1833 572 conicto +2048 825 2048 1244 conicto +2048 1344 lineto +1622 1344 lineto +2496 1513 moveto +2496 0 lineto +2048 0 lineto +2048 384 lineto +1900 154 1679 45 conicto +1458 -64 1138 -64 conicto +733 -64 494 162 conicto +256 389 256 769 conicto +256 1213 555 1438 conicto +854 1664 1448 1664 conicto +2048 1664 lineto +2048 1712 lineto +2048 2025 1851 2196 conicto +1655 2368 1300 2368 conicto +1074 2368 860 2320 conicto +646 2272 448 2176 conicto +448 2560 lineto +687 2656 912 2704 conicto +1138 2752 1351 2752 conicto +1927 2752 2211 2444 conicto +2496 2137 2496 1513 conicto +end_ol grestore +gsave 23.223023 2.145000 translate 0.035278 -0.035278 scale +start_ol +896 3456 moveto +896 2688 lineto +1792 2688 lineto +1792 2368 lineto +896 2368 lineto +896 902 lineto +896 572 984 478 conicto +1073 384 1345 384 conicto +1792 384 lineto +1792 0 lineto +1345 0 lineto +836 0 642 194 conicto +448 389 448 902 conicto +448 2368 lineto +128 2368 lineto +128 2688 lineto +448 2688 lineto +448 3456 lineto +896 3456 lineto +end_ol grestore +gsave 23.472789 2.145000 translate 0.035278 -0.035278 scale +start_ol +1622 1344 moveto +1104 1344 904 1225 conicto +704 1106 704 818 conicto +704 589 854 454 conicto +1004 320 1262 320 conicto +1618 320 1833 572 conicto +2048 825 2048 1244 conicto +2048 1344 lineto +1622 1344 lineto +2496 1513 moveto +2496 0 lineto +2048 0 lineto +2048 384 lineto +1900 154 1679 45 conicto +1458 -64 1138 -64 conicto +733 -64 494 162 conicto +256 389 256 769 conicto +256 1213 555 1438 conicto +854 1664 1448 1664 conicto +2048 1664 lineto +2048 1712 lineto +2048 2025 1851 2196 conicto +1655 2368 1300 2368 conicto +1074 2368 860 2320 conicto +646 2272 448 2176 conicto +448 2560 lineto +687 2656 912 2704 conicto +1138 2752 1351 2752 conicto +1927 2752 2211 2444 conicto +2496 2137 2496 1513 conicto +end_ol grestore +0.678431 0.847059 0.901961 srgb +n 17.000000 -2.000000 m 17.000000 -0.100000 l 22.000000 -0.100000 l 22.000000 -2.000000 l f +0.100000 slw +[] 0 sd +[] 0 sd +0 slj +0.000000 0.000000 0.000000 srgb +n 17.000000 -2.000000 m 17.000000 -0.100000 l 22.000000 -0.100000 l 22.000000 -2.000000 l cp s +gsave 17.913750 -0.855000 translate 0.035278 -0.035278 scale +start_ol +2549 2204 moveto +2714 2485 2942 2618 conicto +3171 2752 3482 2752 conicto +3899 2752 4125 2464 conicto +4352 2177 4352 1646 conicto +4352 0 lineto +3904 0 lineto +3904 1632 lineto +3904 2006 3769 2187 conicto +3634 2368 3356 2368 conicto +3017 2368 2820 2146 conicto +2624 1925 2624 1542 conicto +2624 0 lineto +2176 0 lineto +2176 1632 lineto +2176 2008 2041 2188 conicto +1906 2368 1624 2368 conicto +1289 2368 1092 2145 conicto +896 1922 896 1542 conicto +896 0 lineto +448 0 lineto +448 2688 lineto +896 2688 lineto +896 2304 lineto +1046 2534 1255 2643 conicto +1465 2752 1753 2752 conicto +2044 2752 2247 2611 conicto +2451 2471 2549 2204 conicto +end_ol grestore +gsave 18.535661 -0.855000 translate 0.035278 -0.035278 scale +start_ol +2176 1375 moveto +2176 1848 1982 2108 conicto +1789 2368 1439 2368 conicto +1091 2368 897 2108 conicto +704 1848 704 1375 conicto +704 904 897 644 conicto +1091 384 1439 384 conicto +1789 384 1982 644 conicto +2176 904 2176 1375 conicto +2624 347 moveto +2624 -347 2323 -685 conicto +2023 -1024 1404 -1024 conicto +1174 -1024 971 -992 conicto +768 -961 576 -896 conicto +576 -448 lineto +766 -546 951 -593 conicto +1137 -640 1329 -640 conicto +1754 -640 1965 -415 conicto +2176 -190 2176 264 conicto +2176 448 lineto +2042 223 1833 111 conicto +1624 0 1332 0 conicto +848 0 552 376 conicto +256 753 256 1375 conicto +256 1999 552 2375 conicto +848 2752 1332 2752 conicto +1624 2752 1833 2640 conicto +2042 2529 2176 2304 conicto +2176 2688 lineto +2624 2688 lineto +2624 347 lineto +end_ol grestore +gsave 18.942781 -0.855000 translate 0.035278 -0.035278 scale +start_ol +448 3712 moveto +896 3712 lineto +896 0 lineto +448 0 lineto +448 3712 lineto +end_ol grestore +gsave 19.120109 -0.855000 translate 0.035278 -0.035278 scale +start_ol +960 3136 moveto +960 384 lineto +1536 384 lineto +2266 384 2605 716 conicto +2944 1048 2944 1764 conicto +2944 2475 2605 2805 conicto +2266 3136 1536 3136 conicto +960 3136 lineto +448 3520 moveto +1463 3520 lineto +2493 3520 2974 3094 conicto +3456 2669 3456 1764 conicto +3456 853 2972 426 conicto +2488 0 1463 0 conicto +448 0 lineto +448 3520 lineto +end_ol grestore +gsave 19.612143 -0.855000 translate 0.035278 -0.035278 scale +start_ol +1622 1344 moveto +1104 1344 904 1225 conicto +704 1106 704 818 conicto +704 589 854 454 conicto +1004 320 1262 320 conicto +1618 320 1833 572 conicto +2048 825 2048 1244 conicto +2048 1344 lineto +1622 1344 lineto +2496 1513 moveto +2496 0 lineto +2048 0 lineto +2048 384 lineto +1900 154 1679 45 conicto +1458 -64 1138 -64 conicto +733 -64 494 162 conicto +256 389 256 769 conicto +256 1213 555 1438 conicto +854 1664 1448 1664 conicto +2048 1664 lineto +2048 1712 lineto +2048 2025 1851 2196 conicto +1655 2368 1300 2368 conicto +1074 2368 860 2320 conicto +646 2272 448 2176 conicto +448 2560 lineto +687 2656 912 2704 conicto +1138 2752 1351 2752 conicto +1927 2752 2211 2444 conicto +2496 2137 2496 1513 conicto +end_ol grestore +gsave 20.004273 -0.855000 translate 0.035278 -0.035278 scale +start_ol +896 3456 moveto +896 2688 lineto +1792 2688 lineto +1792 2368 lineto +896 2368 lineto +896 902 lineto +896 572 984 478 conicto +1073 384 1345 384 conicto +1792 384 lineto +1792 0 lineto +1345 0 lineto +836 0 642 194 conicto +448 389 448 902 conicto +448 2368 lineto +128 2368 lineto +128 2688 lineto +448 2688 lineto +448 3456 lineto +896 3456 lineto +end_ol grestore +gsave 20.254039 -0.855000 translate 0.035278 -0.035278 scale +start_ol +1622 1344 moveto +1104 1344 904 1225 conicto +704 1106 704 818 conicto +704 589 854 454 conicto +1004 320 1262 320 conicto +1618 320 1833 572 conicto +2048 825 2048 1244 conicto +2048 1344 lineto +1622 1344 lineto +2496 1513 moveto +2496 0 lineto +2048 0 lineto +2048 384 lineto +1900 154 1679 45 conicto +1458 -64 1138 -64 conicto +733 -64 494 162 conicto +256 389 256 769 conicto +256 1213 555 1438 conicto +854 1664 1448 1664 conicto +2048 1664 lineto +2048 1712 lineto +2048 2025 1851 2196 conicto +1655 2368 1300 2368 conicto +1074 2368 860 2320 conicto +646 2272 448 2176 conicto +448 2560 lineto +687 2656 912 2704 conicto +1138 2752 1351 2752 conicto +1927 2752 2211 2444 conicto +2496 2137 2496 1513 conicto +end_ol grestore +gsave 20.646168 -0.855000 translate 0.035278 -0.035278 scale +start_ol +1696 3047 moveto +1042 1280 lineto +2352 1280 lineto +1696 3047 lineto +1424 3520 moveto +1970 3520 lineto +3328 0 lineto +2827 0 lineto +2502 896 lineto +897 896 lineto +572 0 lineto +64 0 lineto +1424 3520 lineto +end_ol grestore +1.000000 1.000000 0.000000 srgb +n 14.000000 1.000000 m 14.000000 2.900000 l 19.000000 2.900000 l 19.000000 1.000000 l f +0.100000 slw +[] 0 sd +[] 0 sd +0 slj +0.000000 0.000000 0.000000 srgb +n 14.000000 1.000000 m 14.000000 2.900000 l 19.000000 2.900000 l 19.000000 1.000000 l cp s +gsave 14.908750 2.145000 translate 0.035278 -0.035278 scale +start_ol +2549 2204 moveto +2714 2485 2942 2618 conicto +3171 2752 3482 2752 conicto +3899 2752 4125 2464 conicto +4352 2177 4352 1646 conicto +4352 0 lineto +3904 0 lineto +3904 1632 lineto +3904 2006 3769 2187 conicto +3634 2368 3356 2368 conicto +3017 2368 2820 2146 conicto +2624 1925 2624 1542 conicto +2624 0 lineto +2176 0 lineto +2176 1632 lineto +2176 2008 2041 2188 conicto +1906 2368 1624 2368 conicto +1289 2368 1092 2145 conicto +896 1922 896 1542 conicto +896 0 lineto +448 0 lineto +448 2688 lineto +896 2688 lineto +896 2304 lineto +1046 2534 1255 2643 conicto +1465 2752 1753 2752 conicto +2044 2752 2247 2611 conicto +2451 2471 2549 2204 conicto +end_ol grestore +gsave 15.530661 2.145000 translate 0.035278 -0.035278 scale +start_ol +2176 1375 moveto +2176 1848 1982 2108 conicto +1789 2368 1439 2368 conicto +1091 2368 897 2108 conicto +704 1848 704 1375 conicto +704 904 897 644 conicto +1091 384 1439 384 conicto +1789 384 1982 644 conicto +2176 904 2176 1375 conicto +2624 347 moveto +2624 -347 2323 -685 conicto +2023 -1024 1404 -1024 conicto +1174 -1024 971 -992 conicto +768 -961 576 -896 conicto +576 -448 lineto +766 -546 951 -593 conicto +1137 -640 1329 -640 conicto +1754 -640 1965 -415 conicto +2176 -190 2176 264 conicto +2176 448 lineto +2042 223 1833 111 conicto +1624 0 1332 0 conicto +848 0 552 376 conicto +256 753 256 1375 conicto +256 1999 552 2375 conicto +848 2752 1332 2752 conicto +1624 2752 1833 2640 conicto +2042 2529 2176 2304 conicto +2176 2688 lineto +2624 2688 lineto +2624 347 lineto +end_ol grestore +gsave 15.937781 2.145000 translate 0.035278 -0.035278 scale +start_ol +448 3712 moveto +896 3712 lineto +896 0 lineto +448 0 lineto +448 3712 lineto +end_ol grestore +gsave 16.115109 2.145000 translate 0.035278 -0.035278 scale +start_ol +960 3136 moveto +960 384 lineto +1536 384 lineto +2266 384 2605 716 conicto +2944 1048 2944 1764 conicto +2944 2475 2605 2805 conicto +2266 3136 1536 3136 conicto +960 3136 lineto +448 3520 moveto +1463 3520 lineto +2493 3520 2974 3094 conicto +3456 2669 3456 1764 conicto +3456 853 2972 426 conicto +2488 0 1463 0 conicto +448 0 lineto +448 3520 lineto +end_ol grestore +gsave 16.607143 2.145000 translate 0.035278 -0.035278 scale +start_ol +1622 1344 moveto +1104 1344 904 1225 conicto +704 1106 704 818 conicto +704 589 854 454 conicto +1004 320 1262 320 conicto +1618 320 1833 572 conicto +2048 825 2048 1244 conicto +2048 1344 lineto +1622 1344 lineto +2496 1513 moveto +2496 0 lineto +2048 0 lineto +2048 384 lineto +1900 154 1679 45 conicto +1458 -64 1138 -64 conicto +733 -64 494 162 conicto +256 389 256 769 conicto +256 1213 555 1438 conicto +854 1664 1448 1664 conicto +2048 1664 lineto +2048 1712 lineto +2048 2025 1851 2196 conicto +1655 2368 1300 2368 conicto +1074 2368 860 2320 conicto +646 2272 448 2176 conicto +448 2560 lineto +687 2656 912 2704 conicto +1138 2752 1351 2752 conicto +1927 2752 2211 2444 conicto +2496 2137 2496 1513 conicto +end_ol grestore +gsave 16.999273 2.145000 translate 0.035278 -0.035278 scale +start_ol +896 3456 moveto +896 2688 lineto +1792 2688 lineto +1792 2368 lineto +896 2368 lineto +896 902 lineto +896 572 984 478 conicto +1073 384 1345 384 conicto +1792 384 lineto +1792 0 lineto +1345 0 lineto +836 0 642 194 conicto +448 389 448 902 conicto +448 2368 lineto +128 2368 lineto +128 2688 lineto +448 2688 lineto +448 3456 lineto +896 3456 lineto +end_ol grestore +gsave 17.249039 2.145000 translate 0.035278 -0.035278 scale +start_ol +1622 1344 moveto +1104 1344 904 1225 conicto +704 1106 704 818 conicto +704 589 854 454 conicto +1004 320 1262 320 conicto +1618 320 1833 572 conicto +2048 825 2048 1244 conicto +2048 1344 lineto +1622 1344 lineto +2496 1513 moveto +2496 0 lineto +2048 0 lineto +2048 384 lineto +1900 154 1679 45 conicto +1458 -64 1138 -64 conicto +733 -64 494 162 conicto +256 389 256 769 conicto +256 1213 555 1438 conicto +854 1664 1448 1664 conicto +2048 1664 lineto +2048 1712 lineto +2048 2025 1851 2196 conicto +1655 2368 1300 2368 conicto +1074 2368 860 2320 conicto +646 2272 448 2176 conicto +448 2560 lineto +687 2656 912 2704 conicto +1138 2752 1351 2752 conicto +1927 2752 2211 2444 conicto +2496 2137 2496 1513 conicto +end_ol grestore +gsave 17.641168 2.145000 translate 0.035278 -0.035278 scale +start_ol +3136 3264 moveto +3136 2752 lineto +2892 2977 2616 3088 conicto +2340 3200 2030 3200 conicto +1418 3200 1093 2829 conicto +768 2459 768 1759 conicto +768 1061 1093 690 conicto +1418 320 2030 320 conicto +2340 320 2616 431 conicto +2892 543 3136 768 conicto +3136 256 lineto +2882 96 2599 16 conicto +2316 -64 2000 -64 conicto +1189 -64 722 424 conicto +256 913 256 1759 conicto +256 2607 722 3095 conicto +1189 3584 2000 3584 conicto +2320 3584 2603 3504 conicto +2887 3424 3136 3264 conicto +end_ol grestore +0.100000 slw +[] 0 sd +[] 0 sd +0 slc +n 38.500000 2.000000 m 38.500000 1.386803 l s +[] 0 sd +0 slj +0 slc +n 38.500000 1.011803 m 38.750000 1.511803 l 38.500000 1.386803 l 38.250000 1.511803 l ef +n 38.500000 1.011803 m 38.750000 1.511803 l 38.500000 1.386803 l 38.250000 1.511803 l cp s +0.100000 slw +[0.200000] 0 sd +[0.200000] 0 sd +0 slc +0.627451 0.125490 0.941176 srgb +n 27.513197 1.950000 m 25.486803 1.950000 l s +[] 0 sd +0 slj +0 slc +n 27.888197 1.950000 m 27.388197 2.200000 l 27.513197 1.950000 l 27.388197 1.700000 l ef +n 27.888197 1.950000 m 27.388197 2.200000 l 27.513197 1.950000 l 27.388197 1.700000 l cp s +[] 0 sd +0 slj +0 slc +n 25.111803 1.950000 m 25.611803 1.700000 l 25.486803 1.950000 l 25.611803 2.200000 l ef +n 25.111803 1.950000 m 25.611803 1.700000 l 25.486803 1.950000 l 25.611803 2.200000 l cp s +0.100000 slw +[] 0 sd +[] 0 sd +0 slc +0.000000 0.000000 0.000000 srgb +n 16.500000 1.000000 m 17.837854 0.159063 l s +[] 0 sd +0 slj +0 slc +n 18.155343 -0.040501 m 17.865068 0.437243 l 17.837854 0.159063 l 17.598982 0.013925 l ef +n 18.155343 -0.040501 m 17.865068 0.437243 l 17.837854 0.159063 l 17.598982 0.013925 l cp s +0.100000 slw +[] 0 sd +[] 0 sd +0 slc +n 22.500000 1.000000 m 21.162146 0.159063 l s +[] 0 sd +0 slj +0 slc +n 20.844657 -0.040501 m 21.401018 0.013925 l 21.162146 0.159063 l 21.134932 0.437243 l ef +n 20.844657 -0.040501 m 21.401018 0.013925 l 21.162146 0.159063 l 21.134932 0.437243 l cp s +0.100000 slw +[0.200000] 0 sd +[0.200000] 0 sd +0 slc +0.627451 0.125490 0.941176 srgb +n 28.000000 1.000000 m 22.460658 -0.892609 l s +[] 0 sd +0 slj +0 slc +n 22.105799 -1.013852 m 22.659773 -1.088767 l 22.460658 -0.892609 l 22.498115 -0.615621 l ef +n 22.105799 -1.013852 m 22.659773 -1.088767 l 22.460658 -0.892609 l 22.498115 -0.615621 l cp s +0.100000 slw +[0.200000] 0 sd +[0.200000] 0 sd +0 slc +n 36.000000 2.950000 m 33.461822 2.103941 l s +[] 0 sd +0 slj +0 slc +n 33.106066 1.985355 m 33.659465 1.906298 l 33.461822 2.103941 l 33.501351 2.380640 l ef +n 33.106066 1.985355 m 33.659465 1.906298 l 33.461822 2.103941 l 33.501351 2.380640 l cp s +0.100000 slw +[0.200000] 0 sd +[0.200000] 0 sd +0 slc +n 25.000000 5.950000 m 23.486803 5.950000 l s +[] 0 sd +0 slj +0 slc +n 23.111803 5.950000 m 23.611803 5.700000 l 23.486803 5.950000 l 23.611803 6.200000 l ef +n 23.111803 5.950000 m 23.611803 5.700000 l 23.486803 5.950000 l 23.611803 6.200000 l cp s +0.100000 slw +[0.200000] 0 sd +[0.200000] 0 sd +0 slc +n 7.000000 0.950000 m 16.522650 -0.954530 l s +[] 0 sd +0 slj +0 slc +n 16.890368 -1.028074 m 16.449106 -0.684870 l 16.522650 -0.954530 l 16.351048 -1.175161 l ef +n 16.890368 -1.028074 m 16.449106 -0.684870 l 16.522650 -0.954530 l 16.351048 -1.175161 l cp s +0.100000 slw +[1.000000] 0 sd +[1.000000] 0 sd +0 slj +0 slc +0.000000 0.000000 1.000000 srgb +n 30.500000 1.000000 m 23.000000 -5.000000 15.000000 -5.000000 7.344222 2.655778 c s +[] 0 sd +0 slj +0 slc +n 7.079057 2.920943 m 7.255834 2.390613 l 7.344222 2.655778 l 7.609387 2.744166 l ef +n 7.079057 2.920943 m 7.255834 2.390613 l 7.344222 2.655778 l 7.609387 2.744166 l cp s +showpage diff --git a/texinfo/concept_en.texi b/texinfo/concept_en.texi index 9cd7f4d..0adc01e 100644 --- a/texinfo/concept_en.texi +++ b/texinfo/concept_en.texi @@ -34,7 +34,7 @@ In addition to the general concepts I want to comment on some non-trivial or les @end menu @c ------------------------------------------------------------------ -@external +@external{} @node Coordinate axes, Color styles, , General concepts @section Coordinate axes @@ -47,7 +47,7 @@ There is 4-th axis @emph{c} (color axis or colorbar) in addition to the usual ax The form (appearence) of tick labels is controlled by @code{SetTicks()} function (@pxref{Ticks}). Function @var{SetTuneTicks} switches on/off tick enhancing by factoring out acommon multiplier (for small coordinate values, like 0.001 to 0.002, or large, like from 1000 to 2000) or common component (for narrow range, like from 0.999 to 1.000). Finally, you may use functions @code{SetTickTempl()} for setting templates for tick labels (it supports TeX symbols). Also, there is a possibility to print arbitrary text as tick labels the by help of @code{SetTicksVal()} function. @c ------------------------------------------------------------------ -@external +@external{} @node Color styles, Line styles, Coordinate axes, General concepts @section Color styles @@ -74,7 +74,7 @@ melone color. @end ifnothtml @c ------------------------------------------------------------------ -@external +@external{} @node Line styles, Color scheme, Color styles, General concepts @section Line styles @@ -103,7 +103,7 @@ One may specify to draw a special symbol (an arrow) at the beginning and at the @pfig{style, Color and line styles.} @c ------------------------------------------------------------------ -@external +@external{} @node Color scheme, Font styles, Line styles, General concepts @section Color scheme @@ -123,7 +123,7 @@ When coloring by @emph{coordinate} (used in @ref{map}), the final color is deter @c This type of coloring is useful for isosurface plot where color may show the exact position of a piece of surface. @c ------------------------------------------------------------------ -@external +@external{} @node Font styles, Textual formulas, Color scheme, General concepts @section Font styles @@ -163,7 +163,7 @@ The small part of most common special TeX symbols are: @math{\angle} -- \angle, The font size can be defined explicitly (if @var{size}>0) or relatively to a base font size as |@var{size}|*@var{FontSize} (if @var{size}<0). The value @var{size}=0 specifies that the string will not be printed. The base font size is measured in internal ``MathGL'' units. Special functions @code{SetFontSizePT(), SetFontSizeCM(), SetFontSizeIN()} (see @ref{Font settings}) allow one to set it in more ``common'' variables for a given dpi value of the picture. @c ------------------------------------------------------------------ -@external +@external{} @node Textual formulas, Command options, Font styles, General concepts @section Textual formulas @@ -215,7 +215,7 @@ Note, some of these functions are unavailable if MathGL was compiled without GSL There is no difference between lower or upper case in formulas. If argument value lie outside the range of function definition then function returns NaN. @c ------------------------------------------------------------------ -@external +@external{} @node Command options, Interfaces, Textual formulas, General concepts @section Command options @@ -276,7 +276,7 @@ Set the value to be used as additional numeric parameter in plotting command. @c ------------------------------------------------------------------ -@external +@external{} @node Interfaces, , Command options, General concepts @section Interfaces @@ -297,7 +297,7 @@ Finally, a special command language MGL (see @ref{MGL scripts}) was written for * C++ interface:: @end menu -@comment @external +@comment @external{} @node C interface, C++ interface, , Interfaces @subsection C/Fortran interface @@ -316,7 +316,7 @@ These variables contain identifiers for graphics drawing objects and for the dat Fortran functions/subroutines have the same names as C functions. However, there is a difference. Variable of type @code{HMGL, HMDT} must be an integer with sufficient size (@code{integer*4} in the 32-bit operating system or @code{integer*8} in the 64-bit operating system). All C functions are subroutines in Fortran, which are called by operator @code{call}. The exceptions are functions, which return variables of types @code{HMGL} or @code{HMDT}. These functions should be declared as integer in Fortran code. Also, one should keep in mind that strings in Fortran are denoted by @code{'} symbol, not the @code{"} symbol. -@comment @external +@comment @external{} @node C++ interface, , C interface, Interfaces @subsection C++/Python interface @@ -351,5 +351,5 @@ This becomes useful if you create many @code{mglData} objects, for example. @end ifclear -@external +@external{} diff --git a/texinfo/concept_ru.texi b/texinfo/concept_ru.texi index e90eef9..dc6030f 100644 --- a/texinfo/concept_ru.texi +++ b/texinfo/concept_ru.texi @@ -32,7 +32,7 @@ @end menu @c ------------------------------------------------------------------ -@external +@external{} @node Coordinate axes, Color styles, , General concepts @section Оси координат @@ -45,7 +45,7 @@ Вид меток по осям определяется функцией @code{SetTicks()} (@pxref{Ticks}). Функция @var{SetTuneTicks} включает/выключает выделение общего множителя (большого или малого факторов в диапазоне) для меток осей координат. Наконец, если стандартный вид меток не устраивает пользователя, то их шаблон можно задать явно (можно использовать и ТеХ символы), воспользовавшись функцией @code{SetTickTempl()}. Кроме того, в качестве меток можно вывести произвольный текст использовав функцию @code{SetTicksVal()}. @c ------------------------------------------------------------------ -@external +@external{} @node Color styles, Line styles, Coordinate axes, General concepts @section Цвета @@ -59,7 +59,7 @@ Base colors are defined by one of symbol @samp{wkrgbcymhRGBCYMHWlenupqLENUPQ}. Символы цвета: @samp{k} -- черный, @samp{r} -- красный, @samp{R} -- темно красный, @samp{g} -- зеленый, @samp{G} -- темно зеленый, @samp{b} -- синий, @samp{B} -- темно синий, @samp{c} -- голубой, @samp{C} -- темно голубой, @samp{m} -- пурпурный, @samp{M} -- темно пурпурный, @samp{y} -- желтый, @samp{Y} -- темно желтый (золотой), @samp{h} -- серый, @samp{H} -- темно серый, @samp{w} -- белый, @samp{W} -- светло серый, @samp{l} -- сине-зеленый, @samp{L} -- темно сине-зеленый, @samp{e} -- желто-зеленый, @samp{E} -- темно желто-зеленый, @samp{n} -- небесно-синий, @samp{N} -- темно небесно-синий, @samp{u} -- сине-фиолетовый, @samp{U} -- темно сине-фиолетовый, @samp{p} -- фиолетовый, @samp{P} -- темно фиолетовый, @samp{q} -- оранжевый, @samp{Q} -- темно оранжевый (коричневый). @end ifnothtml -В цветовой схеме можно использовать тональные (``подсвеченные'') цвета. Тональный цвет задается двумя символами в фигурных скобках @samp{@{cN@}: первый -- обычный цвет, второй -- его яркость цифрой. Цифра может быть в диапазоне @samp{1}...@samp{9}. При этом @samp{5} соответствует нормальному цвету, @samp{1} -- очень темная версия цвета (почти черный), @samp{9} -- очень светлая версия цвета (почти белый). Например, цвета могут быть @samp{@{b2@}} @samp{@{b7@}} @samp{@{r7@}} и т.д. +В цветовой схеме можно использовать тональные (``подсвеченные'') цвета. Тональный цвет задается двумя символами в фигурных скобках @samp{@{cN@}}: первый -- обычный цвет, второй -- его яркость цифрой. Цифра может быть в диапазоне @samp{1}...@samp{9}. При этом @samp{5} соответствует нормальному цвету, @samp{1} -- очень темная версия цвета (почти черный), @samp{9} -- очень светлая версия цвета (почти белый). Например, цвета могут быть @samp{@{b2@}} @samp{@{b7@}} @samp{@{r7@}} и т.д. Наконец, можно указать явно RGB или RGBA значения цвета, используя формат @samp{@{xRRGGBB@}} или @samp{@{xRRGGBBAA@}} соответственно. Например, @samp{@{xFF9966@}} даст цвет @ifhtml @@ -72,7 +72,7 @@ Base colors are defined by one of symbol @samp{wkrgbcymhRGBCYMHWlenupqLENUPQ}. @end ifnothtml @c ------------------------------------------------------------------ -@external +@external{} @node Line styles, Color scheme, Color styles, General concepts @section Стиль линий @@ -101,7 +101,7 @@ Base colors are defined by one of symbol @samp{wkrgbcymhRGBCYMHWlenupqLENUPQ}. @pfig{style, Color and line styles.} @c ------------------------------------------------------------------ -@external +@external{} @node Color scheme, Font styles, Line styles, General concepts @section Цветовая схема @@ -121,7 +121,7 @@ Base colors are defined by one of symbol @samp{wkrgbcymhRGBCYMHWlenupqLENUPQ}. @c Такой тип определения цвета полезен, например, при построении поверхностей уровня, когда цвет дает представление о положении точки в пространстве. @c ------------------------------------------------------------------ -@external +@external{} @node Font styles, Textual formulas, Color scheme, General concepts @section Стиль текста @@ -161,7 +161,7 @@ Base colors are defined by one of symbol @samp{wkrgbcymhRGBCYMHWlenupqLENUPQ}. Размер текста может быть задан явно (если @var{size}>0) или относительно базового размера шрифта для рисунка |@var{size}|*@var{FontSize} при @var{size}<0. Значение @var{size}=0 указывает, что соответствующая строка выводиться не будет. Базовый размер шрифта измеряется во внутренних единицах. Специальные функции @code{SetFontSizePT(), SetFontSizeCM(), SetFontSizeIN()} позволяют задавать его в более ``привычных'' единицах. @c ------------------------------------------------------------------ -@external +@external{} @node Textual formulas, Command options, Font styles, General concepts @section Текстовые формулы @@ -213,7 +213,7 @@ MathGL имеет быстрый парсер текстовых формул При разборе формул нет различия между верхним и нижним регистром. Если аргумент лежит вне области определения функции, то возвращается NaN. @c ------------------------------------------------------------------ -@external +@external{} @node Command options, Interfaces, Textual formulas, General concepts @section Опции команд @@ -274,7 +274,7 @@ MathGL имеет быстрый парсер текстовых формул @c ------------------------------------------------------------------ -@external +@external{} @node Interfaces, , Command options, General concepts @section Интерфейсы @@ -297,7 +297,7 @@ Finally, a special command language MGL (see @ref{MGL scripts}) was written for * C++ interface:: @end menu -@comment @external +@comment @external{} @node C interface, C++ interface, , Interfaces @subsection C/Fortran interface @@ -316,7 +316,7 @@ These variables contain identifiers for graphics drawing objects and for the dat Fortran functions/subroutines have the same names as C functions. However, there is a difference. Variable of type @code{HMGL, HMDT} must be an integer with sufficient size (@code{integer*4} in the 32-bit operating system or @code{integer*8} in the 64-bit operating system). All C functions are subroutines in Fortran, which are called by operator @code{call}. The exceptions are functions, which return variables of types @code{HMGL} or @code{HMDT}. These functions should be declared as integer in Fortran code. Also, one should keep in mind that strings in Fortran are denoted by @code{'} symbol, not the @code{"} symbol. -@comment @external +@comment @external{} @node C++ interface, , C interface, Interfaces @subsection C++/Python interface @@ -351,5 +351,5 @@ This becomes useful if you create many @code{mglData} objects, for example. @end ifclear -@external +@external{} diff --git a/texinfo/core_en.texi b/texinfo/core_en.texi index b050d36..0607b71 100644 --- a/texinfo/core_en.texi +++ b/texinfo/core_en.texi @@ -32,7 +32,7 @@ The core of MathGL is @strong{mglGraph} class defined in @code{#include a[0]}). @c ------------------------------------------------------------------ -@external +@external{} @node Operators, Global functions, Data information, Data processing @section Operators @@ -1328,7 +1328,7 @@ Divides by the other data or the number. @end ifclear @c ------------------------------------------------------------------ -@external +@external{} @node Global functions, Evaluate expression, Operators, Data processing @section Global functions @@ -1425,7 +1425,7 @@ Computes triangulation for arbitrary placed points with coordinates @{@var{x},@v @c ------------------------------------------------------------------ -@external +@external{} @node Evaluate expression, MGL variables, Global functions, Data processing @section Evaluate expression @@ -1470,7 +1470,7 @@ Evaluates the formula derivation respect to @var{dir} for variables in array @va @end ifclear @c ------------------------------------------------------------------ -@external +@external{} @node MGL variables, , Evaluate expression, Data processing @section MGL variables @@ -1495,7 +1495,7 @@ Next and previous variable in the list. Flag of the temporary variable. If @code{true} the this variable will be removed after script execution. @end deftypecv -@deftypecv {Variable} mglVar @code{void} (*func)(void *) +@deftypecv {Variable} mglVar @code{void} @code{void (*}func@code{)(void *)} Callback function, which will be called at variable destroying. @end deftypecv @@ -1517,5 +1517,5 @@ Evaluates the formula for @code{'x','r'}=@var{x}, @code{'y','n'}=@var{y}, @code{ @end ifclear -@external +@external{} diff --git a/texinfo/data_ru.texi b/texinfo/data_ru.texi index afe69d0..9b3f904 100644 --- a/texinfo/data_ru.texi +++ b/texinfo/data_ru.texi @@ -26,7 +26,7 @@ @end menu @c ------------------------------------------------------------------ -@external +@external{} @node Public variables, Data constructor, , Data processing @section Переменные @@ -93,7 +93,7 @@ MGL не поддерживает прямой доступ к элемента @end ifclear @c ------------------------------------------------------------------ -@external +@external{} @node Data constructor, Data resizing, Public variables, Data processing @section Создание и удаление данных @cindex mglData @@ -161,7 +161,7 @@ There are many functions, which can create data for output (see @ref{Data fillin @c ------------------------------------------------------------------ -@external +@external{} @node Data resizing, Data filling, Data constructor, Data processing @section Изменение размеров данных @cindex Create @@ -293,7 +293,7 @@ a_ij^new = a_i^old where j=0...@var{n1}. Соответственно, для @v @c ------------------------------------------------------------------ -@external +@external{} @node Data filling, File I/O, Data resizing, Data processing @section Заполнение данных @cindex Fill @@ -495,7 +495,7 @@ a_ij^new = a_i^old where j=0...@var{n1}. Соответственно, для @v @c ------------------------------------------------------------------ -@external +@external{} @node File I/O, Make another data, Data filling, Data processing @section Чтение/сохранение данных @cindex Read @@ -623,7 +623,7 @@ a_ij^new = a_i^old where j=0...@var{n1}. Соответственно, для @v @end deftypefn @c ------------------------------------------------------------------ -@external +@external{} @node Make another data, Data changing, File I/O, Data processing @section Make another data @cindex SubData @@ -806,7 +806,7 @@ res_k = \sum_ij how(x_i,y_j,z_k) a_ij/ \sum_ij a_ij @end ifclear @c ------------------------------------------------------------------ -@external +@external{} @node Data changing, Interpolation, Make another data, Data processing @section Изменение данных @cindex CumSum @@ -1002,7 +1002,7 @@ These functions change the data in some direction like differentiations, integra @end deftypefn @c ------------------------------------------------------------------ -@external +@external{} @node Interpolation, Data information, Data changing, Data processing @section Интерполяция @@ -1060,7 +1060,7 @@ These functions change the data in some direction like differentiations, integra @end ifclear @c ------------------------------------------------------------------ -@external +@external{} @node Data information, Operators, Interpolation, Data processing @section Информационные функции @@ -1233,7 +1233,7 @@ These functions change the data in some direction like differentiations, integra @c ------------------------------------------------------------------ -@external +@external{} @node Operators, Global functions, Data information, Data processing @section Операторы @@ -1325,7 +1325,7 @@ These functions change the data in some direction like differentiations, integra @end ifclear @c ------------------------------------------------------------------ -@external +@external{} @node Global functions, Evaluate expression, Operators, Data processing @section Глобальные функции @@ -1422,7 +1422,7 @@ These functions change the data in some direction like differentiations, integra @c ------------------------------------------------------------------ -@external +@external{} @node Evaluate expression, MGL variables, Global functions, Data processing @section Вычисление выражений @@ -1467,7 +1467,7 @@ These functions change the data in some direction like differentiations, integra @end ifclear @c ------------------------------------------------------------------ -@external +@external{} @node MGL variables, , Evaluate expression, Data processing @section MGL variables @@ -1514,5 +1514,5 @@ Evaluates the formula for @code{'x','r'}=@var{x}, @code{'y','n'}=@var{y}, @code{ @end ifclear -@external +@external{} diff --git a/texinfo/doc_en.texi b/texinfo/doc_en.texi index 1da2cab..a7886d5 100644 --- a/texinfo/doc_en.texi +++ b/texinfo/doc_en.texi @@ -1,6 +1,6 @@ \input texinfo @setfilename mathgl_en.info -@set VERSION 2.1 +@set VERSION 2.1.1 @settitle MathGL @value{VERSION} @syncodeindex pg cp @comment %**end of header @@ -38,6 +38,7 @@ This file documents the Mathematical Graphic Library (MathGL), a collection of c @end ifnottex @menu +* Website:: * Overview:: * Examples:: * General concepts:: @@ -93,17 +94,23 @@ screen.colorDepth:screen.pixelDepth))+";u"+escape(document.URL)+ @center @image{../\fname\, 11cm, , \text\, .png} @end macro @macro pfig {fname,text} -@center @image{../png/\fname\, 11cm, , \text\, .png} -@c @center @image{../png/\fname\, 11cm, , \text\. See also @uref{../pdf/\fname\.pdf, U3D PDF} sample, .png} +@center @uref{../pdf/\fname\.pdf, @image{../png/\fname\, 11cm, , \text\, .png}} +@c @center @image{../png/\fname\, 11cm, , \text\. See also @uref{../pdf/\fname\.pdf, 3D PDF} sample, .png} @end macro @macro ufig {fname,width,text} @center @image{../udav/\fname\, \width\cm, , \text\, .png} @end macro +@macro sfig {plot,text} +@ref{\text\, @image{../small/\plot\-sm,3cm, , , .png}} +@end macro @end ifhtml @ifnothtml @macro external {} @end macro +@macro sfig {plot,text} +@ref{\text\, @image{small/\plot\-sm,3cm, , , .png}} +@end macro @iftex @macro fig {fname,text} @@ -131,15 +138,18 @@ screen.colorDepth:screen.pixelDepth))+";u"+escape(document.URL)+ @end ifnothtml -@rmacro sref {arg} +@macro sref {arg} @xref{\arg\}, for sample code and picture. -@end rmacro +@end macro @macro tdref {nam} @uref{http://mathgl.sourceforge.net/pdf_u3d/\nam\.pdf, 3D pdf} @end macro -@node Overview, Examples, , Top +@node Website, Overview, , Top +@include web_en.texi + +@node Overview, Examples, Website, Top @include overview_en.texi @node Examples, General concepts, Overview, Top diff --git a/texinfo/doc_ru.texi b/texinfo/doc_ru.texi index 8f784ba..94f6f49 100644 --- a/texinfo/doc_ru.texi +++ b/texinfo/doc_ru.texi @@ -1,6 +1,6 @@ \input texinfo @setfilename mathgl_en.info -@set VERSION 2.1 +@set VERSION 2.1.1 @settitle MathGL @value{VERSION} @syncodeindex pg cp @comment %**end of header @@ -38,6 +38,7 @@ This file documents the Mathematical Graphic Library (MathGL), a collection of c @end ifnottex @menu +* Website:: * Overview:: * Examples:: * General concepts:: @@ -93,17 +94,23 @@ screen.colorDepth:screen.pixelDepth))+";u"+escape(document.URL)+ @center @image{../\fname\, 11cm, , \text\, .png} @end macro @macro pfig {fname,text} -@center @image{../png/\fname\, 11cm, , \text\, .png} -@c @center @image{../png/\fname\, 11cm, , \text\. See also @uref{../pdf/\fname\.pdf, U3D PDF} sample, .png} +@uref{../pdf/\fname\.pdf, @image{../png/\fname\, 11cm, , \text\, .png}} +@c @center @image{../png/\fname\, 11cm, , \text\ См. также пример @uref{../pdf/\fname\.pdf, 3D PDF}, .png} @end macro @macro ufig {fname,width,text} @center @image{../udav/\fname\, \width\cm, , \text\, .png} @end macro +@macro sfig {plot,text} +@ref{\text\, @image{../small/\plot\-sm,3cm, , , .png}} +@end macro @end ifhtml @ifnothtml @macro external {} @end macro +@macro sfig {plot,text} +@ref{\text\, @image{../small/\plot\-sm,3cm, , , .png}} +@end macro @iftex @macro fig {fname,text} @@ -131,15 +138,19 @@ screen.colorDepth:screen.pixelDepth))+";u"+escape(document.URL)+ @end ifnothtml -@rmacro sref {arg} +@macro sref {arg} См. раздел @ref{\arg\}, для примеров кода и графика. -@end rmacro +@end macro @macro tdref {nam} @uref{http://mathgl.sourceforge.net/pdf_u3d/\nam\.pdf, 3D pdf} @end macro -@node Overview, Examples, , Top + +@node Website, Overview, , Top +@include web_ru.texi + +@node Overview, Examples, Website, Top @include overview_ru.texi @node Examples, General concepts, Overview, Top diff --git a/texinfo/ex_mgl_en.texi b/texinfo/ex_mgl_en.texi index edc2baf..35d895d 100644 --- a/texinfo/ex_mgl_en.texi +++ b/texinfo/ex_mgl_en.texi @@ -55,7 +55,7 @@ Basically, you can put this text after the script. Note, that you need to termin @end menu @c ------------------------------------------------------------------ -@external +@external{} @node Basic usage, Advanced usage, , Examples @section Basic usage @@ -95,7 +95,7 @@ fplot 'x^3' # draw some function Just type it in UDAV and press F5. Also you can save it in text file @samp{test.mgl} and type in the console @code{mglconv test.mgl} what produce file @samp{test.mgl.png} with resulting picture. @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Advanced usage, Data handling, Basic usage, Examples @section Advanced usage @@ -114,7 +114,7 @@ Now I show several non-obvious features of MGL: several subplots in a single pic @end menu @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Subplots, Axis and ticks, , Advanced usage @subsection Subplots @@ -122,7 +122,7 @@ Let me demonstrate possibilities of plot positioning and rotation. MathGL has a @verbatim subplot 2 2 0 box:text -1 1.1 'Just box' ':L' -inplot 0.2 0.5 0.7 1 +inplot 0.2 0.5 0.7 off box:text 0 1.2 'InPlot example' subplot 2 2 1:title 'Rotate only' @@ -167,7 +167,7 @@ multiplot 3 2 1 2 1 '':title 'MultiPlot':box @pfig{inplot, Example for most of positioning functions.} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Axis and ticks, Curvilinear coordinates, Subplots, Advanced usage @subsection Axis and ticks @@ -272,7 +272,7 @@ xlabel 'x' 1:ylabel 'y = x' 0 You can see that MathGL automatically switch to log-ticks as we define log-axis formula (in difference from v.1.*). Moreover, it switch to log-ticks for any formula if axis range will be large enough (see right bottom plot). Another interesting feature is that you not necessary define usual log-axis (i.e. when coordinates are positive), but you can define ``minus-log'' axis when coordinate is negative (see left bottom plot). @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Curvilinear coordinates, Colorbars, Axis and ticks, Advanced usage @subsection Curvilinear coordinates @@ -299,7 +299,7 @@ fplot '2*t-1' '0.5' '0' '2r':axis:grid @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Colorbars, Bounding box, Curvilinear coordinates, Advanced usage @subsection Colorbars @@ -333,7 +333,7 @@ colorbar '>':text 1.35 1.2 'Log scale' @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Bounding box, Ternary axis, Colorbars, Advanced usage @subsection Bounding box @@ -352,7 +352,7 @@ subplot 2 2 3:title 'both':rotate 50 60:box '@cm' @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Ternary axis, Text features, Bounding box, Advanced usage @subsection Ternary axis @@ -392,7 +392,7 @@ xlabel 'B':ylabel 'C':tlabel 'A':zlabel 'Z' @pfig{ternary, Ternary and Quaternary axis} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Text features, Legend sample, Ternary axis, Advanced usage @subsection Text features @@ -446,7 +446,7 @@ loadfont 'termes':text 0 1.1-9*d 'termes font' @pfig{fonts, Example of font faces} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Legend sample, Cutting sample, Text features, Advanced usage @subsection Legend sample @@ -479,7 +479,7 @@ legend 1 '#-':text 0.75 0.25 'Horizontal legend' 'a' @pfig{legend, Example of legend} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Cutting sample, , Legend sample, Advanced usage @subsection Cutting sample @@ -522,7 +522,7 @@ cut '(z>(x+0.5*y-1)^2-1) & (z>(x-0.5*y-1)^2-1)':surf3 c @c ------------------------------------------------------------------ -@external +@external{} @node Data handling, Data plotting, Advanced usage, Examples @section Data handling @@ -534,7 +534,7 @@ Class @code{mglData} contains all functions for the data handling in MathGL (@px @end menu @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Array creation, Change data, , Data handling @subsection Array creation @@ -610,7 +610,7 @@ new z 30 40 'sin(pi*x)*cos(pi*y)' or loaded from a file. @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Change data, , Array creation, Data handling @subsection Change data @@ -716,7 +716,7 @@ plot v1 u2 'r2v':line 0.5 0.7 0.5 0.85 'rA' @pfig{solve, Example of data interpolation and root finding} @c ------------------------------------------------------------------ -@external +@external{} @node Data plotting, 1D samples, Data handling, Examples @section Data plotting @@ -807,7 +807,7 @@ dens a1:box Drawing of other 2D plots is analogous. The only peculiarity is the usage of flag @samp{#}. By default this flag switches on the drawing of a grid on plot (@ref{grid} or @ref{mesh} for plots in plain or in volume). However, for isosurfaces (including surfaces of rotation @ref{axial}) this flag switches the face drawing off and figure becomes wired. @c ------------------------------------------------------------------ -@external +@external{} @node 1D samples, 2D samples, Data plotting, Examples @section 1D samples @@ -852,7 +852,7 @@ Basically, you can put this text after the script. Note, that you need to termin @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Plot sample, Radar sample, , 1D samples @subsection Plot sample @@ -877,7 +877,7 @@ plot xc yc z 'rs' @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Radar sample, Step sample, Plot sample, 1D samples @subsection Radar sample @@ -891,7 +891,7 @@ radar yr '#' @pfig{radar, Example of Radar()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Step sample, Tens sample, Radar sample, 1D samples @subsection Step sample @@ -912,7 +912,7 @@ step y 's!rgb' @pfig{step, Example of Step()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Tens sample, Area sample, Step sample, 1D samples @subsection Tens sample @@ -933,7 +933,7 @@ tens xc yc z z 's' @pfig{tens, Example of Tens()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Area sample, Region sample, Tens sample, 1D samples @subsection Area sample @@ -958,7 +958,7 @@ area xc yc z 'r' @pfig{area, Example of Area()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Region sample, Stem sample, Area sample, 1D samples @subsection Region sample @@ -982,7 +982,7 @@ region y1 y2 'ir':plot y1 'k2':plot y2 'k2' @pfig{region, Example of Region()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Stem sample, Bars sample, Region sample, 1D samples @subsection Stem sample @@ -1003,7 +1003,7 @@ stem y 'o!rgb' @pfig{stem, Example of Stem()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Bars sample, Barh sample, Stem sample, 1D samples @subsection Bars sample @@ -1033,7 +1033,7 @@ bars ys 'f' @pfig{bars, Example of Bars()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Barh sample, Cones sample, Bars sample, 1D samples @subsection Barh sample @@ -1054,7 +1054,7 @@ barh ys 'f' @pfig{barh, Example of Barh()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Cones sample, Chart sample, Bars sample, 1D samples @subsection Cones sample @@ -1078,7 +1078,7 @@ cones ys 'a' @pfig{cones, Example of Cones()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Chart sample, BoxPlot sample, Cones sample, 1D samples @subsection Chart sample @@ -1103,7 +1103,7 @@ chart ch 'bgr cmy#' @pfig{chart, Example of Chart()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node BoxPlot sample, Candle sample, Chart sample, 1D samples @subsection BoxPlot sample @@ -1117,7 +1117,7 @@ boxplot a @pfig{boxplot, Example of BoxPlot()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Candle sample, Error sample, BoxPlot sample, 1D samples @subsection Candle sample @@ -1131,7 +1131,7 @@ candle y y1 y2 @pfig{candle, Example of Candle()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Error sample, Mark sample, Candle sample, 1D samples @subsection Error sample @@ -1160,7 +1160,7 @@ next @pfig{error, Example of Error()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Mark sample, TextMark sample, Error sample, 1D samples @subsection Mark sample @@ -1174,7 +1174,7 @@ mark y y1 's' @pfig{mark, Example of Mark()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node TextMark sample, Label sample, Mark sample, 1D samples @subsection TextMark sample @@ -1188,7 +1188,7 @@ textmark y y1 '\gamma' 'r' @pfig{textmark, Example of TextMark()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Label sample, Table sample, TextMark sample, 1D samples @subsection Label sample @@ -1203,7 +1203,7 @@ plot ys ' *':label ys 'y=%y' @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Table sample, Tube sample, Label sample, 1D samples @subsection Table sample @@ -1227,7 +1227,7 @@ table 0.5 0.95 ys 'y_1\n{}y_2\n{}y_3' '#';value 0.7 @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Tube sample, Tape sample, Table sample, 1D samples @subsection Tube sample @@ -1253,7 +1253,7 @@ tube xc yc z y2 'r' @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Tape sample, Torus sample, Tube sample, 1D samples @subsection Tape sample @@ -1279,7 +1279,7 @@ plot xc yc z 'k':tape xc yc z 'zg':tape xc yc z 'zg#' @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Torus sample, , Tape sample, 1D samples @subsection Torus sample @@ -1303,7 +1303,7 @@ torus y1 y2 '#' @c ------------------------------------------------------------------ -@external +@external{} @node 2D samples, 3D samples, 1D samples, Examples @section 2D samples @@ -1336,7 +1336,7 @@ Basically, you can put this text after the script. Note, that you need to termin @end menu @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Surf sample, SurfC sample, , 2D samples @subsection Surf sample @@ -1361,7 +1361,7 @@ surf x y z 'BbwrR' @pfig{surf, Example of Surf()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node SurfC sample, SurfA sample, Surf sample, 2D samples @subsection SurfC sample @@ -1375,7 +1375,7 @@ surfc a b @pfig{surfc, Example of SurfC()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node SurfA sample, Mesh sample, SurfC sample, 2D samples @subsection SurfA sample @@ -1390,7 +1390,7 @@ surfa a b @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Mesh sample, Fall sample, SurfA sample, 2D samples @subsection Mesh sample @@ -1404,7 +1404,7 @@ mesh a @pfig{mesh, Example of Mesh()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Fall sample, Belt sample, Mesh sample, 2D samples @subsection Fall sample @@ -1418,7 +1418,7 @@ fall a @pfig{fall, Example of Fall()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Belt sample, Boxs sample, Fall sample, 2D samples @subsection Belt sample @@ -1432,7 +1432,7 @@ belt a @pfig{belt, Example of Belt()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Boxs sample, Tile sample, Fall sample, 2D samples @subsection Boxs sample @@ -1456,7 +1456,7 @@ tile a @pfig{boxs, Example of Boxs()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Tile sample, TileS sample, Boxs sample, 2D samples @subsection Tile sample @@ -1470,7 +1470,7 @@ tile a @pfig{tile, Example of Tile()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node TileS sample, Dens sample, Tile sample, 2D samples @subsection TileS sample @@ -1485,7 +1485,7 @@ tiles a b @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Dens sample, Cont sample, TileS sample, 2D samples @subsection Dens sample @@ -1510,7 +1510,7 @@ dens a1 @pfig{dens, Example of Dens()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Cont sample, ContF sample, Dens sample, 2D samples @subsection Cont sample @@ -1534,7 +1534,7 @@ cont a 't' @pfig{cont, Example of Cont()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node ContF sample, ContD sample, Cont sample, 2D samples @subsection ContF sample @@ -1560,7 +1560,7 @@ contf a1 @pfig{contf, Example of ContF()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node ContD sample, ContV sample, ContF sample, 2D samples @subsection ContD sample @@ -1586,7 +1586,7 @@ contd a1 @pfig{contd, Example of ContD()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node ContV sample, Axial sample, ContD sample, 2D samples @subsection ContV sample @@ -1610,7 +1610,7 @@ contv a:contf a:cont a 'k' @pfig{contv, Example of ContV()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Axial sample, Grad sample, ContV sample, 2D samples @subsection Axial sample @@ -1633,7 +1633,7 @@ axial a '#' @pfig{axial, Example of Axial()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Grad sample, , Axial sample, 2D samples @subsection Grad sample @@ -1648,7 +1648,7 @@ grad a:dens a '{u8}w{q8}' @c ------------------------------------------------------------------ -@external +@external{} @node 3D samples, Vector field samples, 2D samples, Examples @section 3D samples @@ -1677,7 +1677,7 @@ Basically, you can put this text after the script. Note, that you need to termin @end menu @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Surf3 sample, Surf3C sample, , 3D samples @subsection Surf3 sample @@ -1698,7 +1698,7 @@ surf3 c '.' @pfig{surf3, Example of Surf3()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Surf3C sample, Surf3A sample, Surf3 sample, 3D samples @subsection Surf3C sample @@ -1712,7 +1712,7 @@ surf3c c d @pfig{surf3c, Example of Surf3C()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Surf3A sample, Cloud sample, Surf3C sample, 3D samples @subsection Surf3A sample @@ -1726,7 +1726,7 @@ surf3a c d @pfig{surf3a, Example of Surf3A()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Cloud sample, Dens3 sample, Surf3A sample, 3D samples @subsection Cloud sample @@ -1749,7 +1749,7 @@ cloud c 'wyrRk'; meshnum 10 @pfig{cloud, Example of Cloud()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Dens3 sample, Cont3 sample, Cloud sample, 3D samples @subsection Dens3 sample @@ -1764,7 +1764,7 @@ dens3 c 'x':dens3 c ':y':dens3 c 'z' @pfig{densa, Example of Dens3()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Cont3 sample, ContF3 sample, Dens3 sample, 3D samples @subsection Cont3 sample @@ -1778,7 +1778,7 @@ cont3 c 'x':cont3 c:cont3 c 'z' @pfig{conta, Example of Cont3()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node ContF3 sample, Dens projection sample, Cont3 sample, 3D samples @subsection ContF3 sample @@ -1793,7 +1793,7 @@ cont3 c 'xk':cont3 c 'k':cont3 c 'zk' @pfig{contfa, Example of ContF3()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Dens projection sample, Cont projection sample, ContF3 sample, 3D samples @subsection Dens projection sample @@ -1809,7 +1809,7 @@ densz {sum c 'z'} '' -1 @pfig{dens_xyz, {Example of DensX(), DensY(), DensZ()}} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Cont projection sample, ContF projection sample, Dens projection sample, 3D samples @subsection Cont projection sample @@ -1825,7 +1825,7 @@ contz {sum c 'z'} '' -1 @pfig{cont_xyz, {Example of ContX(), ContY(), ContZ()}} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node ContF projection sample, TriPlot and QuadPlot, Cont projection sample, 3D samples @subsection ContF projection sample @@ -1841,7 +1841,7 @@ contfz {sum c 'z'} '' -1 @pfig{contf_xyz, {Example of ContFX(), ContFY(), ContFZ()}} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node TriPlot and QuadPlot, Axial sample, ContF projection sample, 3D samples @subsection TriPlot and QuadPlot @@ -1868,7 +1868,7 @@ triplot t xt yt zt '#k' @pfig{triplot, Example of TriPlot() and QuadPlot()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Dots sample, , TriPlot and QuadPlot, 3D samples @subsection Dots sample @@ -1885,7 +1885,7 @@ dots x y z @pfig{dots, Example of Dots()} @c ------------------------------------------------------------------ -@external +@external{} @node Vector field samples, Hints, 3D samples, Examples @section Vector field samples @@ -1921,7 +1921,7 @@ Basically, you can put this text after the script. Note, that you need to termin @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Vect sample, Vect3 sample, , Vector field samples @subsection Vect sample @@ -1951,7 +1951,7 @@ vect ex ey ez @pfig{vect, Example of Vect()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Vect3 sample, Traj sample, Vect sample, Vector field samples @subsection Vect3 sample @@ -1971,7 +1971,7 @@ grid3 ex 'Wx':grid3 ex 'W':grid3 ex 'Wz' @pfig{vecta, Example of Vect3()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Traj sample, Flow sample, Vect3 sample, Vector field samples @subsection Traj sample @@ -1986,7 +1986,7 @@ plot x1 y:traj x1 y y1 y2 @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Flow sample, Pipe sample, Traj sample, Vector field samples @subsection Flow sample @@ -2010,7 +2010,7 @@ flow ex ey ez @pfig{flow, Example of Flow()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Pipe sample, Dew sample, Flow sample, Vector field samples @subsection Pipe sample @@ -2034,7 +2034,7 @@ pipe ex ey ez '' 0.1 @pfig{pipe, Example of Pipe()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Dew sample, , Pipe sample, Vector field samples @subsection Dew sample @@ -2049,7 +2049,7 @@ dew a b @c ------------------------------------------------------------------ -@external +@external{} @node Hints, FAQ, Vector field samples, Examples @section Hints @@ -2076,7 +2076,7 @@ In this section I've included some small hints and advices for the improving of @end menu @c ------------------------------------------------------------------ -@c @external +@c @external{} @node ``Compound'' graphics, Transparency and lighting, , Hints @subsection ``Compound'' graphics @@ -2130,7 +2130,7 @@ contf3 v c 'z' c.nz-1:surf3 c -0.5 @pfig{combined, Example of ``combined'' plots} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Transparency and lighting, Types of transparency, ``Compound'' graphics, Hints @subsection Transparency and lighting @@ -2153,7 +2153,7 @@ light off:surf a @pfig{alpha, Example of transparency and lightings} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Types of transparency, Axis projection, Transparency and lighting, Hints @subsection Types of transparency @@ -2182,7 +2182,7 @@ subplot 2 2 3:rotate 50 60:axial a:box @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Axis projection, Adding fog, Ternary axis, Hints @subsection Axis projection @@ -2205,7 +2205,7 @@ xlabel 'X':ylabel 'Y':zlabel 'Z' @pfig{projection, Example of axis projections} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Adding fog, Several light sources, Axis projection, Hints @subsection Adding fog @@ -2220,7 +2220,7 @@ box:surf a @pfig{fog, Example of @code{Fog()}.} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Several light sources, Using primitives, Adding fog, Hints @subsection Several light sources @@ -2235,7 +2235,7 @@ box:surf a 'h' @pfig{several_light, Example of several light sources.} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Using primitives, STFA sample, Several light sources, Hints @subsection Using primitives @@ -2314,7 +2314,7 @@ Of course, the first variant is more suitable if you need to plot a lot of circl @pfig{venn, Example of Venn diagram.} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node STFA sample, Mapping visualization, Using primitives, Hints @subsection STFA sample @@ -2336,7 +2336,7 @@ stfa a b 64:axis:ylabel '\omega' 0:xlabel '\i t' @pfig{stfa, Example of STFA().} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Mapping visualization, Making histogram, STFA sample, Hints @subsection Mapping visualization @@ -2348,17 +2348,17 @@ The sample code for mapping visualization is: @verbatim new a 50 40 'x':new b 50 40 'y':zrange -2 2:text 0 0 '\to' subplot 2 1 0:text 0 1.1 '\{x, y\}' '' -2:box -map a b 'brgk' 0 0 +map a b 'brgk' subplot 2 1 1:box text 0 1.1 '\{\frac{x^3+y^3}{2}, \frac{x-y}{2}\}' '' -2 -fill a '(x^3+y^3)/2':fill b '(x-y)/2':map a b 'brgk' 0 0 +fill a '(x^3+y^3)/2':fill b '(x-y)/2':map a b 'brgk' @end verbatim @pfig{map, Example of Map().} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Making histogram, Nonlinear fitting sample, Mapping visualization, Hints @subsection Making histogram @@ -2376,7 +2376,7 @@ subplot 3 3 2:text 0.5 0.5 'Hist and\n{}MultiPlot\n{}sample' 'a' -3 @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Nonlinear fitting sample, PDE solving hints, Making histogram, Hints @subsection Nonlinear fitting hints @@ -2419,7 +2419,7 @@ text 0 2.2 'initial: y = 0.3+sin(2\pi x)' 'b' @pfig{fit, Example of nonlinear fitting.} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node PDE solving hints, MGL parser using, Nonlinear fitting sample, Hints @subsection PDE solving hints @@ -2473,7 +2473,7 @@ text 0.7 -0.05 'central ray' @c ------------------------------------------------------------------ -@c @external +@c @external{} @node MGL parser using, Using options, PDE solving hints, Hints @subsection MGL parser using @@ -2499,7 +2499,7 @@ next @pfig{parser, Example of MGL script parsing.} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Using options, ``Templates'', MGL parser using, Hints @subsection Using options @@ -2528,7 +2528,7 @@ box:axis:legend 2 @pfig{mirror, Example of options usage.} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node ``Templates'', Nonlinear fitting sample, Using options, Hints @subsection ``Templates'' @@ -2560,7 +2560,7 @@ A template-function can also contain settings for font, transparency, lightning, I understand that this is obvious thing for any professional programmer, but I several times receive suggestion about ``templates'' ... So, I decide to point out it here. @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Stereo image, Reduce memory usage, ``Templates'', Hints @subsection Stereo image @@ -2575,7 +2575,7 @@ subplot 2 1 1:rotate 50 60-1:box:surf a @pfig{stereo, Example of stereo image.} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Reduce memory usage, , Stereo image, Hints @subsection Reduce memory usage @@ -2591,7 +2591,7 @@ next @c ================================================================== -@external +@external{} @node FAQ, , Hints, Examples @section FAQ @@ -2633,5 +2633,5 @@ Just use @code{rotatetext off}. Also you can use axis style @samp{U} for disable @end table -@external +@external{} diff --git a/texinfo/ex_mgl_ru.texi b/texinfo/ex_mgl_ru.texi index cbb3444..3e3acb2 100644 --- a/texinfo/ex_mgl_ru.texi +++ b/texinfo/ex_mgl_ru.texi @@ -55,7 +55,7 @@ Basically, you can put this text after the script. Note, that you need to termin @end menu @c ------------------------------------------------------------------ -@external +@external{} @node Basic usage, Advanced usage, , Examples @section Basic usage @@ -95,7 +95,7 @@ fplot 'x^3' # draw some function Just type it in UDAV and press F5. Also you can save it in text file @samp{test.mgl} and type in the console @code{mglconv test.mgl} what produce file @samp{test.mgl.png} with resulting picture. @c ------------------------------------------------------------------ -@external +@external{} @node Advanced usage, Data handling, Basic usage, Examples @section Advanced usage @@ -114,7 +114,7 @@ Now I show several non-obvious features of MGL: several subplots in a single pic @end menu @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Subplots, Axis and ticks, , Advanced usage @subsection Subplots @@ -122,7 +122,7 @@ Let me demonstrate possibilities of plot positioning and rotation. MathGL has a @verbatim subplot 2 2 0 box:text -1 1.1 'Just box' ':L' -inplot 0.2 0.5 0.7 1 +inplot 0.2 0.5 0.7 off box:text 0 1.2 'InPlot example' subplot 2 2 1:title 'Rotate only' @@ -167,7 +167,7 @@ multiplot 3 2 1 2 1 '':title 'MultiPlot':box @pfig{inplot, Example for most of positioning functions.} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Axis and ticks, Curvilinear coordinates, Subplots, Advanced usage @subsection Axis and ticks @@ -272,7 +272,7 @@ xlabel 'x' 1:ylabel 'y = x' 0 You can see that MathGL automatically switch to log-ticks as we define log-axis formula (in difference from v.1.*). Moreover, it switch to log-ticks for any formula if axis range will be large enough (see right bottom plot). Another interesting feature is that you not necessary define usual log-axis (i.e. when coordinates are positive), but you can define ``minus-log'' axis when coordinate is negative (see left bottom plot). @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Curvilinear coordinates, Colorbars, Axis and ticks, Advanced usage @subsection Curvilinear coordinates @@ -299,7 +299,7 @@ fplot '2*t-1' '0.5' '0' '2r':axis:grid @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Colorbars, Bounding box, Curvilinear coordinates, Advanced usage @subsection Colorbars @@ -333,7 +333,7 @@ colorbar '>':text 1.35 1.2 'Log scale' @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Bounding box, Ternary axis, Colorbars, Advanced usage @subsection Bounding box @@ -352,7 +352,7 @@ subplot 2 2 3:title 'both':rotate 50 60:box '@cm' @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Ternary axis, Text features, Bounding box, Advanced usage @subsection Ternary axis @@ -392,7 +392,7 @@ xlabel 'B':ylabel 'C':tlabel 'A':zlabel 'Z' @pfig{ternary, Ternary and Quaternary axis} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Text features, Legend sample, Ternary axis, Advanced usage @subsection Text features @@ -446,7 +446,7 @@ loadfont 'termes':text 0 1.1-9*d 'termes font' @pfig{fonts, Example of font faces} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Legend sample, Cutting sample, Text features, Advanced usage @subsection Legend sample @@ -479,7 +479,7 @@ legend 1 '#-':text 0.75 0.25 'Horizontal legend' 'a' @pfig{legend, Example of legend} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Cutting sample, , Legend sample, Advanced usage @subsection Cutting sample @@ -522,7 +522,7 @@ cut '(z>(x+0.5*y-1)^2-1) & (z>(x-0.5*y-1)^2-1)':surf3 c @c ------------------------------------------------------------------ -@external +@external{} @node Data handling, Data plotting, Advanced usage, Examples @section Data handling @@ -534,7 +534,7 @@ Class @code{mglData} contains all functions for the data handling in MathGL (@px @end menu @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Array creation, Change data, , Data handling @subsection Array creation @@ -610,7 +610,7 @@ new z 30 40 'sin(pi*x)*cos(pi*y)' or loaded from a file. @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Change data, , Array creation, Data handling @subsection Change data @@ -716,7 +716,7 @@ plot v1 u2 'r2v':line 0.5 0.7 0.5 0.85 'rA' @pfig{solve, Example of data interpolation and root finding} @c ------------------------------------------------------------------ -@external +@external{} @node Data plotting, 1D samples, Data handling, Examples @section Data plotting @@ -807,7 +807,7 @@ dens a1:box Drawing of other 2D plots is analogous. The only peculiarity is the usage of flag @samp{#}. By default this flag switches on the drawing of a grid on plot (@ref{grid} or @ref{mesh} for plots in plain or in volume). However, for isosurfaces (including surfaces of rotation @ref{axial}) this flag switches the face drawing off and figure becomes wired. @c ------------------------------------------------------------------ -@external +@external{} @node 1D samples, 2D samples, Data plotting, Examples @section 1D samples @@ -852,7 +852,7 @@ Basically, you can put this text after the script. Note, that you need to termin @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Plot sample, Radar sample, , 1D samples @subsection Plot sample @@ -877,7 +877,7 @@ plot xc yc z 'rs' @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Radar sample, Step sample, Plot sample, 1D samples @subsection Radar sample @@ -891,7 +891,7 @@ radar yr '#' @pfig{radar, Example of Radar()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Step sample, Tens sample, Radar sample, 1D samples @subsection Step sample @@ -912,7 +912,7 @@ step y 's!rgb' @pfig{step, Example of Step()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Tens sample, Area sample, Step sample, 1D samples @subsection Tens sample @@ -933,7 +933,7 @@ tens xc yc z z 's' @pfig{tens, Example of Tens()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Area sample, Region sample, Tens sample, 1D samples @subsection Area sample @@ -958,7 +958,7 @@ area xc yc z 'r' @pfig{area, Example of Area()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Region sample, Stem sample, Area sample, 1D samples @subsection Region sample @@ -982,7 +982,7 @@ region y1 y2 'ir':plot y1 'k2':plot y2 'k2' @pfig{region, Example of Region()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Stem sample, Bars sample, Region sample, 1D samples @subsection Stem sample @@ -1003,7 +1003,7 @@ stem y 'o!rgb' @pfig{stem, Example of Stem()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Bars sample, Barh sample, Stem sample, 1D samples @subsection Bars sample @@ -1033,7 +1033,7 @@ bars ys 'f' @pfig{bars, Example of Bars()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Barh sample, Cones sample, Bars sample, 1D samples @subsection Barh sample @@ -1054,7 +1054,7 @@ barh ys 'f' @pfig{barh, Example of Barh()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Cones sample, Chart sample, Bars sample, 1D samples @subsection Cones sample @@ -1078,7 +1078,7 @@ cones ys 'a' @pfig{cones, Example of Cones()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Chart sample, BoxPlot sample, Cones sample, 1D samples @subsection Chart sample @@ -1103,7 +1103,7 @@ chart ch 'bgr cmy#' @pfig{chart, Example of Chart()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node BoxPlot sample, Candle sample, Chart sample, 1D samples @subsection BoxPlot sample @@ -1117,7 +1117,7 @@ boxplot a @pfig{boxplot, Example of BoxPlot()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Candle sample, Error sample, BoxPlot sample, 1D samples @subsection Candle sample @@ -1131,7 +1131,7 @@ candle y y1 y2 @pfig{candle, Example of Candle()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Error sample, Mark sample, Candle sample, 1D samples @subsection Error sample @@ -1160,7 +1160,7 @@ next @pfig{error, Example of Error()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Mark sample, TextMark sample, Error sample, 1D samples @subsection Mark sample @@ -1174,7 +1174,7 @@ mark y y1 's' @pfig{mark, Example of Mark()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node TextMark sample, Label sample, Mark sample, 1D samples @subsection TextMark sample @@ -1188,7 +1188,7 @@ textmark y y1 '\gamma' 'r' @pfig{textmark, Example of TextMark()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Label sample, Table sample, TextMark sample, 1D samples @subsection Label sample @@ -1203,7 +1203,7 @@ plot ys ' *':label ys 'y=%y' @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Table sample, Tube sample, Label sample, 1D samples @subsection Table sample @@ -1227,7 +1227,7 @@ table 0.5 0.95 ys 'y_1\n{}y_2\n{}y_3' '#';value 0.7 @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Tube sample, Tape sample, Table sample, 1D samples @subsection Tube sample @@ -1253,7 +1253,7 @@ tube xc yc z y2 'r' @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Tape sample, Torus sample, Tube sample, 1D samples @subsection Tape sample @@ -1279,7 +1279,7 @@ plot xc yc z 'k':tape xc yc z 'zg':tape xc yc z 'zg#' @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Torus sample, , Tape sample, 1D samples @subsection Torus sample @@ -1303,7 +1303,7 @@ torus y1 y2 '#' @c ------------------------------------------------------------------ -@external +@external{} @node 2D samples, 3D samples, 1D samples, Examples @section 2D samples @@ -1336,7 +1336,7 @@ Basically, you can put this text after the script. Note, that you need to termin @end menu @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Surf sample, SurfC sample, , 2D samples @subsection Surf sample @@ -1361,7 +1361,7 @@ surf x y z 'BbwrR' @pfig{surf, Example of Surf()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node SurfC sample, SurfA sample, Surf sample, 2D samples @subsection SurfC sample @@ -1375,7 +1375,7 @@ surfc a b @pfig{surfc, Example of SurfC()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node SurfA sample, Mesh sample, SurfC sample, 2D samples @subsection SurfA sample @@ -1390,7 +1390,7 @@ surfa a b @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Mesh sample, Fall sample, SurfA sample, 2D samples @subsection Mesh sample @@ -1404,7 +1404,7 @@ mesh a @pfig{mesh, Example of Mesh()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Fall sample, Belt sample, Mesh sample, 2D samples @subsection Fall sample @@ -1418,7 +1418,7 @@ fall a @pfig{fall, Example of Fall()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Belt sample, Boxs sample, Fall sample, 2D samples @subsection Belt sample @@ -1432,7 +1432,7 @@ belt a @pfig{belt, Example of Belt()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Boxs sample, Tile sample, Fall sample, 2D samples @subsection Boxs sample @@ -1456,7 +1456,7 @@ tile a @pfig{boxs, Example of Boxs()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Tile sample, TileS sample, Boxs sample, 2D samples @subsection Tile sample @@ -1470,7 +1470,7 @@ tile a @pfig{tile, Example of Tile()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node TileS sample, Dens sample, Tile sample, 2D samples @subsection TileS sample @@ -1485,7 +1485,7 @@ tiles a b @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Dens sample, Cont sample, TileS sample, 2D samples @subsection Dens sample @@ -1510,7 +1510,7 @@ dens a1 @pfig{dens, Example of Dens()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Cont sample, ContF sample, Dens sample, 2D samples @subsection Cont sample @@ -1534,7 +1534,7 @@ cont a 't' @pfig{cont, Example of Cont()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node ContF sample, ContD sample, Cont sample, 2D samples @subsection ContF sample @@ -1560,7 +1560,7 @@ contf a1 @pfig{contf, Example of ContF()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node ContD sample, ContV sample, ContF sample, 2D samples @subsection ContD sample @@ -1586,7 +1586,7 @@ contd a1 @pfig{contd, Example of ContD()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node ContV sample, Axial sample, ContD sample, 2D samples @subsection ContV sample @@ -1610,7 +1610,7 @@ contv a:contf a:cont a 'k' @pfig{contv, Example of ContV()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Axial sample, Grad sample, ContV sample, 2D samples @subsection Axial sample @@ -1633,7 +1633,7 @@ axial a '#' @pfig{axial, Example of Axial()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Grad sample, , Axial sample, 2D samples @subsection Grad sample @@ -1648,7 +1648,7 @@ grad a:dens a '{u8}w{q8}' @c ------------------------------------------------------------------ -@external +@external{} @node 3D samples, Vector field samples, 2D samples, Examples @section 3D samples @@ -1677,7 +1677,7 @@ Basically, you can put this text after the script. Note, that you need to termin @end menu @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Surf3 sample, Surf3C sample, , 3D samples @subsection Surf3 sample @@ -1698,7 +1698,7 @@ surf3 c '.' @pfig{surf3, Example of Surf3()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Surf3C sample, Surf3A sample, Surf3 sample, 3D samples @subsection Surf3C sample @@ -1712,7 +1712,7 @@ surf3c c d @pfig{surf3c, Example of Surf3C()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Surf3A sample, Cloud sample, Surf3C sample, 3D samples @subsection Surf3A sample @@ -1726,7 +1726,7 @@ surf3a c d @pfig{surf3a, Example of Surf3A()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Cloud sample, Dens3 sample, Surf3A sample, 3D samples @subsection Cloud sample @@ -1749,7 +1749,7 @@ cloud c 'wyrRk'; meshnum 10 @pfig{cloud, Example of Cloud()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Dens3 sample, Cont3 sample, Cloud sample, 3D samples @subsection Dens3 sample @@ -1764,7 +1764,7 @@ dens3 c 'x':dens3 c ':y':dens3 c 'z' @pfig{densa, Example of Dens3()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Cont3 sample, ContF3 sample, Dens3 sample, 3D samples @subsection Cont3 sample @@ -1778,7 +1778,7 @@ cont3 c 'x':cont3 c:cont3 c 'z' @pfig{conta, Example of Cont3()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node ContF3 sample, Dens projection sample, Cont3 sample, 3D samples @subsection ContF3 sample @@ -1793,7 +1793,7 @@ cont3 c 'xk':cont3 c 'k':cont3 c 'zk' @pfig{contfa, Example of ContF3()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Dens projection sample, Cont projection sample, ContF3 sample, 3D samples @subsection Dens projection sample @@ -1809,7 +1809,7 @@ densz {sum c 'z'} '' -1 @pfig{dens_xyz, {Example of DensX(), DensY(), DensZ()}} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Cont projection sample, ContF projection sample, Dens projection sample, 3D samples @subsection Cont projection sample @@ -1825,7 +1825,7 @@ contz {sum c 'z'} '' -1 @pfig{cont_xyz, {Example of ContX(), ContY(), ContZ()}} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node ContF projection sample, TriPlot and QuadPlot, Cont projection sample, 3D samples @subsection ContF projection sample @@ -1841,7 +1841,7 @@ contfz {sum c 'z'} '' -1 @pfig{contf_xyz, {Example of ContFX(), ContFY(), ContFZ()}} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node TriPlot and QuadPlot, Axial sample, ContF projection sample, 3D samples @subsection TriPlot and QuadPlot @@ -1868,7 +1868,7 @@ triplot t xt yt zt '#k' @pfig{triplot, Example of TriPlot() and QuadPlot()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Dots sample, , TriPlot and QuadPlot, 3D samples @subsection Dots sample @@ -1885,7 +1885,7 @@ dots x y z @pfig{dots, Example of Dots()} @c ------------------------------------------------------------------ -@external +@external{} @node Vector field samples, Hints, 3D samples, Examples @section Vector field samples @@ -1921,7 +1921,7 @@ Basically, you can put this text after the script. Note, that you need to termin @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Vect sample, Vect3 sample, , Vector field samples @subsection Vect sample @@ -1951,7 +1951,7 @@ vect ex ey ez @pfig{vect, Example of Vect()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Vect3 sample, Traj sample, Vect sample, Vector field samples @subsection Vect3 sample @@ -1971,7 +1971,7 @@ grid3 ex 'Wx':grid3 ex 'W':grid3 ex 'Wz' @pfig{vecta, Example of Vect3()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Traj sample, Flow sample, Vect3 sample, Vector field samples @subsection Traj sample @@ -1986,7 +1986,7 @@ plot x1 y:traj x1 y y1 y2 @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Flow sample, Pipe sample, Traj sample, Vector field samples @subsection Flow sample @@ -2010,7 +2010,7 @@ flow ex ey ez @pfig{flow, Example of Flow()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Pipe sample, Dew sample, Flow sample, Vector field samples @subsection Pipe sample @@ -2034,7 +2034,7 @@ pipe ex ey ez '' 0.1 @pfig{pipe, Example of Pipe()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Dew sample, , Pipe sample, Vector field samples @subsection Dew sample @@ -2049,7 +2049,7 @@ dew a b @c ------------------------------------------------------------------ -@external +@external{} @node Hints, FAQ, Vector field samples, Examples @section Hints @@ -2076,7 +2076,7 @@ In this section I've included some small hints and advices for the improving of @end menu @c ------------------------------------------------------------------ -@c @external +@c @external{} @node ``Compound'' graphics, Transparency and lighting, , Hints @subsection ``Compound'' graphics @@ -2130,7 +2130,7 @@ contf3 v c 'z' c.nz-1:surf3 c -0.5 @pfig{combined, Example of ``combined'' plots} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Transparency and lighting, Types of transparency, ``Compound'' graphics, Hints @subsection Transparency and lighting @@ -2153,7 +2153,7 @@ light off:surf a @pfig{alpha, Example of transparency and lightings} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Types of transparency, Axis projection, Transparency and lighting, Hints @subsection Types of transparency @@ -2182,7 +2182,7 @@ subplot 2 2 3:rotate 50 60:axial a:box @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Axis projection, Adding fog, Ternary axis, Hints @subsection Axis projection @@ -2205,7 +2205,7 @@ xlabel 'X':ylabel 'Y':zlabel 'Z' @pfig{projection, Example of axis projections} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Adding fog, Several light sources, Axis projection, Hints @subsection Adding fog @@ -2220,7 +2220,7 @@ box:surf a @pfig{fog, Example of @code{Fog()}.} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Several light sources, Using primitives, Adding fog, Hints @subsection Several light sources @@ -2235,7 +2235,7 @@ box:surf a 'h' @pfig{several_light, Example of several light sources.} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Using primitives, STFA sample, Several light sources, Hints @subsection Using primitives @@ -2314,7 +2314,7 @@ Of course, the first variant is more suitable if you need to plot a lot of circl @pfig{venn, Example of Venn diagram.} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node STFA sample, Mapping visualization, Using primitives, Hints @subsection STFA sample @@ -2336,7 +2336,7 @@ stfa a b 64:axis:ylabel '\omega' 0:xlabel '\i t' @pfig{stfa, Example of STFA().} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Mapping visualization, Making histogram, STFA sample, Hints @subsection Mapping visualization @@ -2348,17 +2348,17 @@ The sample code for mapping visualization is: @verbatim new a 50 40 'x':new b 50 40 'y':zrange -2 2:text 0 0 '\to' subplot 2 1 0:text 0 1.1 '\{x, y\}' '' -2:box -map a b 'brgk' 0 0 +map a b 'brgk' subplot 2 1 1:box text 0 1.1 '\{\frac{x^3+y^3}{2}, \frac{x-y}{2}\}' '' -2 -fill a '(x^3+y^3)/2':fill b '(x-y)/2':map a b 'brgk' 0 0 +fill a '(x^3+y^3)/2':fill b '(x-y)/2':map a b 'brgk' @end verbatim @pfig{map, Example of Map().} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Making histogram, Nonlinear fitting sample, Mapping visualization, Hints @subsection Making histogram @@ -2376,7 +2376,7 @@ subplot 3 3 2:text 0.5 0.5 'Hist and\n{}MultiPlot\n{}sample' 'a' -3 @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Nonlinear fitting sample, PDE solving hints, Making histogram, Hints @subsection Nonlinear fitting hints @@ -2419,7 +2419,7 @@ text 0 2.2 'initial: y = 0.3+sin(2\pi x)' 'b' @pfig{fit, Example of nonlinear fitting.} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node PDE solving hints, MGL parser using, Nonlinear fitting sample, Hints @subsection PDE solving hints @@ -2473,7 +2473,7 @@ text 0.7 -0.05 'central ray' @c ------------------------------------------------------------------ -@c @external +@c @external{} @node MGL parser using, Using options, PDE solving hints, Hints @subsection MGL parser using @@ -2499,7 +2499,7 @@ next @pfig{parser, Example of MGL script parsing.} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Using options, ``Templates'', MGL parser using, Hints @subsection Using options @@ -2528,7 +2528,7 @@ box:axis:legend 2 @pfig{mirror, Example of options usage.} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node ``Templates'', Nonlinear fitting sample, Using options, Hints @subsection ``Templates'' @@ -2560,7 +2560,7 @@ A template-function can also contain settings for font, transparency, lightning, I understand that this is obvious thing for any professional programmer, but I several times receive suggestion about ``templates'' ... So, I decide to point out it here. @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Stereo image, Reduce memory usage, ``Templates'', Hints @subsection Stereo image @@ -2575,7 +2575,7 @@ subplot 2 1 1:rotate 50 60-1:box:surf a @pfig{stereo, Example of stereo image.} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Reduce memory usage, , Stereo image, Hints @subsection Reduce memory usage @@ -2591,7 +2591,7 @@ next @c ================================================================== -@external +@external{} @node FAQ, , Hints, Examples @section FAQ @@ -2625,5 +2625,5 @@ Just use @code{rotatetext off}. @end table -@external +@external{} diff --git a/texinfo/example_en.texi b/texinfo/example_en.texi index 68a8322..97541b4 100644 --- a/texinfo/example_en.texi +++ b/texinfo/example_en.texi @@ -63,7 +63,7 @@ and so on. @end menu @c ------------------------------------------------------------------ -@external +@external{} @node Basic usage, Advanced usage, , Examples @section Basic usage @@ -106,7 +106,7 @@ Let me consider the aforesaid in more detail. @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Using MathGL window, Drawing to file, , Basic usage @subsection Using MathGL window @cindex window @@ -189,7 +189,7 @@ The rotation, shift, zooming, switching on/off transparency and lighting can be In this example function @code{sample} rotates axes (@code{Rotate()}, @pxref{Subplots and rotation}) and draws the bounding box (@code{Box()}). Drawing is placed in separate function since it will be used on demand when window canvas needs to be redrawn. @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Drawing to file, Animation, Using MathGL window, Basic usage @subsection Drawing to file @@ -230,7 +230,7 @@ int main(int ,char **) The difference from the previous one is using other function @code{WriteEPS()} for EPS format instead of function @code{WritePNG()}. Also, there is no switching on of the plot transparency @code{Alpha} since EPS format does not support it. @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Animation, Drawing in memory, Drawing to file, Basic usage @subsection Animation @@ -363,7 +363,7 @@ Created files can be converted to movie by help of a lot of programs. For exampl Finally, you can use @code{mglconv} tool for doing the same with MGL scripts (@pxref{Utilities}). @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Drawing in memory, Using QMathGL, Animation, Basic usage @subsection Drawing in memory @@ -421,7 +421,7 @@ void MyWidget::paintEvent(QPaintEvent *) @end verbatim @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Using QMathGL, MathGL and PyQt, Drawing in memory, Basic usage @subsection Using QMathGL @@ -432,7 +432,7 @@ First of all you have to define the drawing function or inherit a class from @co #include #include #include -#include +#include int main(int argc,char **argv) { QApplication a(argc,argv); @@ -459,7 +459,7 @@ int main(int argc,char **argv) @end verbatim @c ------------------------------------------------------------------ -@c @external +@c @external{} @node MathGL and PyQt, , Using QMathGL, Basic usage @subsection MathGL and PyQt @@ -532,7 +532,7 @@ qw.raise_() @c ------------------------------------------------------------------ -@external +@external{} @node Advanced usage, Data handling, Basic usage, Examples @section Advanced usage @@ -551,7 +551,7 @@ Now I show several non-obvious features of MathGL: several subplots in a single @end menu @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Subplots, Axis and ticks, , Advanced usage @subsection Subplots @@ -604,7 +604,7 @@ int sample(mglGraph *gr) @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Axis and ticks, Curvilinear coordinates, Subplots, Advanced usage @subsection Axis and ticks @@ -718,7 +718,7 @@ int sample(mglGraph *gr) You can see that MathGL automatically switch to log-ticks as we define log-axis formula (in difference from v.1.*). Moreover, it switch to log-ticks for any formula if axis range will be large enough (see right bottom plot). Another interesting feature is that you not necessary define usual log-axis (i.e. when coordinates are positive), but you can define ``minus-log'' axis when coordinate is negative (see left bottom plot). @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Curvilinear coordinates, Colorbars, Axis and ticks, Advanced usage @subsection Curvilinear coordinates @@ -755,7 +755,7 @@ int sample(mglGraph *gr) @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Colorbars, Bounding box, Curvilinear coordinates, Advanced usage @subsection Colorbars @@ -797,7 +797,7 @@ int sample(mglGraph *gr) @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Bounding box, Ternary axis, Colorbars, Advanced usage @subsection Bounding box @@ -821,7 +821,7 @@ int sample(mglGraph *gr) @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Ternary axis, Text features, Bounding box, Advanced usage @subsection Ternary axis @@ -874,7 +874,7 @@ int sample(mglGraph *gr) @pfig{ternary, Example of colorbars} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Text features, Legend sample, Ternary axis, Advanced usage @subsection Text features @@ -943,7 +943,7 @@ int sample(mglGraph *gr) @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Legend sample, Cutting sample, Text features, Advanced usage @subsection Legend sample @@ -980,7 +980,7 @@ int sample(mglGraph *gr) @pfig{legend, Example of legend} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Cutting sample, , Legend sample, Advanced usage @subsection Cutting sample @@ -1028,7 +1028,7 @@ int sample(mglGraph *gr) @c ------------------------------------------------------------------ -@external +@external{} @node Data handling, Data plotting, Advanced usage, Examples @section Data handling @@ -1041,7 +1041,7 @@ Class @code{mglData} contains all functions for the data handling in MathGL (@px @end menu @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Array creation, Linking array, , Data handling @subsection Array creation @@ -1119,7 +1119,7 @@ or by using @code{Modify()} function The only non-obvious thing here is using multidimensional arrays in C/C++, i.e. arrays defined like @code{mreal dat[40][30];}. Since, formally these elements @code{dat[i]} can address the memory in arbitrary place you should use the proper function to convert such arrays to @code{mglData} object. For C++ this is functions like @code{mglData::Set(mreal **dat, int N1, int N2);}. For C this is functions like @code{mgl_data_set_mreal2(HMDT d, const mreal **dat, int N1, int N2);}. At this, you should keep in mind that @code{nx=N2} and @code{ny=N1} after conversion. @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Linking array, Change data, Array creation, Data handling @subsection Linking array @@ -1137,7 +1137,7 @@ Creating the link is rather simple -- just the same as using @code{Set} function @end verbatim @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Change data, , Linking array, Data handling @subsection Change data @@ -1261,7 +1261,7 @@ int sample(mglGraph *gr) @pfig{solve, Example of data interpolation and root finding} @c ------------------------------------------------------------------ -@external +@external{} @node Data plotting, 1D samples, Data handling, Examples @section Data plotting @@ -1382,7 +1382,7 @@ int sample(mglGraph *gr) @end verbatim @c ------------------------------------------------------------------ -@external +@external{} @node 1D samples, 2D samples, Data plotting, Examples @section 1D samples @@ -1465,7 +1465,7 @@ void mgls_prepare1d(HMDT y, HMDT y1=0, HMDT y2=0, HMDT x1=0, HMDT x2=0) @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Plot sample, Radar sample, , 1D samples @subsection Plot sample @@ -1496,7 +1496,7 @@ int sample(mglGraph *gr) @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Radar sample, Step sample, Plot sample, 1D samples @subsection Radar sample @@ -1514,7 +1514,7 @@ int sample(mglGraph *gr) @pfig{radar, Example of Radar()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Step sample, Tens sample, Radar sample, 1D samples @subsection Step sample @@ -1541,7 +1541,7 @@ int sample(mglGraph *gr) @pfig{step, Example of Step()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Tens sample, Area sample, Step sample, 1D samples @subsection Tens sample @@ -1567,7 +1567,7 @@ int sample(mglGraph *gr) @pfig{tens, Example of Tens()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Area sample, Region sample, Tens sample, 1D samples @subsection Area sample @@ -1597,7 +1597,7 @@ int sample(mglGraph *gr) @pfig{area, Example of Area()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Region sample, Stem sample, Area sample, 1D samples @subsection Region sample @@ -1625,7 +1625,7 @@ int sample(mglGraph *gr) @pfig{region, Example of Region()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Stem sample, Bars sample, Region sample, 1D samples @subsection Stem sample @@ -1651,7 +1651,7 @@ int sample(mglGraph *gr) @pfig{stem, Example of Stem()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Bars sample, Barh sample, Stem sample, 1D samples @subsection Bars sample @@ -1689,7 +1689,7 @@ int sample(mglGraph *gr) @pfig{bars, Example of Bars()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Barh sample, Cones sample, Bars sample, 1D samples @subsection Barh sample @@ -1718,7 +1718,7 @@ int sample(mglGraph *gr) @pfig{barh, Example of Barh()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Cones sample, Chart sample, Bars sample, 1D samples @subsection Cones sample @@ -1747,7 +1747,7 @@ int sample(mglGraph *gr) @pfig{cones, Example of Cones()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Chart sample, BoxPlot sample, Cones sample, 1D samples @subsection Chart sample @@ -1776,7 +1776,7 @@ int sample(mglGraph *gr) @pfig{chart, Example of Chart()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node BoxPlot sample, Candle sample, Chart sample, 1D samples @subsection BoxPlot sample @@ -1794,7 +1794,7 @@ int sample(mglGraph *gr) @pfig{boxplot, Example of BoxPlot()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Candle sample, Error sample, BoxPlot sample, 1D samples @subsection Candle sample @@ -1814,7 +1814,7 @@ int sample(mglGraph *gr) @pfig{candle, Example of Candle()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Error sample, Mark sample, Candle sample, 1D samples @subsection Error sample @@ -1854,7 +1854,7 @@ int sample(mglGraph *gr) @pfig{error, Example of Error()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Mark sample, TextMark sample, Error sample, 1D samples @subsection Mark sample @@ -1872,7 +1872,7 @@ int sample(mglGraph *gr) @pfig{mark, Example of Mark()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node TextMark sample, Label sample, Mark sample, 1D samples @subsection TextMark sample @@ -1890,7 +1890,7 @@ int sample(mglGraph *gr) @pfig{textmark, Example of TextMark()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Label sample, Table sample, TextMark sample, 1D samples @subsection Label sample @@ -1908,7 +1908,7 @@ int sample(mglGraph *gr) @pfig{label, Example of Label()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Table sample, Tube sample, Label sample, 1D samples @subsection Table sample @@ -1933,7 +1933,7 @@ int sample(mglGraph *gr) @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Tube sample, Tape sample, Table sample, 1D samples @subsection Tube sample @@ -1963,7 +1963,7 @@ int sample(mglGraph *gr) @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Tape sample, Torus sample, Tube sample, 1D samples @subsection Tape sample @@ -1997,7 +1997,7 @@ int sample(mglGraph *gr) @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Torus sample, , Tape sample, 1D samples @subsection Torus sample @@ -2026,7 +2026,7 @@ int sample(mglGraph *gr) @c ------------------------------------------------------------------ -@external +@external{} @node 2D samples, 3D samples, 1D samples, Examples @section 2D samples @@ -2084,7 +2084,7 @@ void mgls_prepare2d(HMDT a, HMDT b=0, HMDT v=0) @end menu @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Surf sample, SurfC sample, , 2D samples @subsection Surf sample @@ -2115,7 +2115,7 @@ int sample(mglGraph *gr) @pfig{surf, Example of Surf()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node SurfC sample, SurfA sample, Surf sample, 2D samples @subsection SurfC sample @@ -2133,7 +2133,7 @@ int sample(mglGraph *gr) @pfig{surfc, Example of SurfC()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node SurfA sample, Mesh sample, SurfC sample, 2D samples @subsection SurfA sample @@ -2153,7 +2153,7 @@ int sample(mglGraph *gr) @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Mesh sample, Fall sample, SurfA sample, 2D samples @subsection Mesh sample @@ -2171,7 +2171,7 @@ int sample(mglGraph *gr) @pfig{mesh, Example of Mesh()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Fall sample, Belt sample, Mesh sample, 2D samples @subsection Fall sample @@ -2189,7 +2189,7 @@ int sample(mglGraph *gr) @pfig{fall, Example of Fall()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Belt sample, Boxs sample, Fall sample, 2D samples @subsection Belt sample @@ -2207,7 +2207,7 @@ int sample(mglGraph *gr) @pfig{belt, Example of Belt()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Boxs sample, Tile sample, Fall sample, 2D samples @subsection Boxs sample @@ -2235,7 +2235,7 @@ int sample(mglGraph *gr) @pfig{boxs, Example of Boxs()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Tile sample, TileS sample, Boxs sample, 2D samples @subsection Tile sample @@ -2253,7 +2253,7 @@ int sample(mglGraph *gr) @pfig{tile, Example of Tile()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node TileS sample, Dens sample, Tile sample, 2D samples @subsection TileS sample @@ -2272,7 +2272,7 @@ int sample(mglGraph *gr) @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Dens sample, Cont sample, TileS sample, 2D samples @subsection Dens sample @@ -2300,7 +2300,7 @@ int sample(mglGraph *gr) @pfig{dens, Example of Dens()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Cont sample, ContF sample, Dens sample, 2D samples @subsection Cont sample @@ -2327,7 +2327,7 @@ int sample(mglGraph *gr) @pfig{cont, Example of Cont()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node ContF sample, ContD sample, Cont sample, 2D samples @subsection ContF sample @@ -2356,7 +2356,7 @@ int sample(mglGraph *gr) @pfig{contf, Example of ContF()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node ContD sample, ContV sample, ContF sample, 2D samples @subsection ContD sample @@ -2385,7 +2385,7 @@ int sample(mglGraph *gr) @pfig{contd, Example of ContD()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node ContV sample, Axial sample, ContD sample, 2D samples @subsection ContV sample @@ -2414,7 +2414,7 @@ int sample(mglGraph *gr) @pfig{contv, Example of ContV()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Axial sample, Grad sample, ContV sample, 2D samples @subsection Axial sample @@ -2442,7 +2442,7 @@ int sample(mglGraph *gr) @pfig{axial, Example of Axial()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Grad sample, , Axial sample, 2D samples @subsection Grad sample @@ -2461,7 +2461,7 @@ int sample(mglGraph *gr) @c ------------------------------------------------------------------ -@external +@external{} @node 3D samples, Vector field samples, 2D samples, Examples @section 3D samples @@ -2513,7 +2513,7 @@ void mgls_prepare3d(HMDT a, HMDT b=0) @end menu @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Surf3 sample, Surf3C sample, , 3D samples @subsection Surf3 sample @@ -2538,7 +2538,7 @@ int sample(mglGraph *gr) @pfig{surf3, Example of Surf3()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Surf3C sample, Surf3A sample, Surf3 sample, 3D samples @subsection Surf3C sample @@ -2557,7 +2557,7 @@ int sample(mglGraph *gr) @pfig{surf3c, Example of Surf3C()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Surf3A sample, Cloud sample, Surf3C sample, 3D samples @subsection Surf3A sample @@ -2576,7 +2576,7 @@ int sample(mglGraph *gr) @pfig{surf3a, Example of Surf3A()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Cloud sample, Dens3 sample, Surf3A sample, 3D samples @subsection Cloud sample @@ -2604,7 +2604,7 @@ int sample(mglGraph *gr) @pfig{cloud, Example of Cloud()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Dens3 sample, Cont3 sample, Cloud sample, 3D samples @subsection Dens3 sample @@ -2624,7 +2624,7 @@ int sample(mglGraph *gr) @pfig{densa, Example of Dens3()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Cont3 sample, ContF3 sample, Dens3 sample, 3D samples @subsection Cont3 sample @@ -2644,7 +2644,7 @@ int sample(mglGraph *gr) @pfig{conta, Example of Cont3()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node ContF3 sample, Dens projection sample, Cont3 sample, 3D samples @subsection ContF3 sample @@ -2665,7 +2665,7 @@ int sample(mglGraph *gr) @pfig{contfa, Example of ContF3()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Dens projection sample, Cont projection sample, ContF3 sample, 3D samples @subsection Dens projection sample @@ -2681,10 +2681,10 @@ int sample(mglGraph *gr) } @end verbatim -@pfig{dens_xyz, {Example of DensX(), DensY(), DensZ()}} +@pfig{dens_xyz, Example of DensX()\, DensY()\, DensZ()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Cont projection sample, ContF projection sample, Dens projection sample, 3D samples @subsection Cont projection sample @@ -2700,10 +2700,10 @@ int sample(mglGraph *gr) } @end verbatim -@pfig{cont_xyz, {Example of ContX(), ContY(), ContZ()}} +@pfig{cont_xyz, Example of ContX()\, ContY()\, ContZ()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node ContF projection sample, TriPlot and QuadPlot, Cont projection sample, 3D samples @subsection ContF projection sample @@ -2719,10 +2719,10 @@ int sample(mglGraph *gr) } @end verbatim -@pfig{contf_xyz, {Example of ContFX(), ContFY(), ContFZ()}} +@pfig{contf_xyz, Example of ContFX()\, ContFY()\, ContFZ()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node TriPlot and QuadPlot, Axial sample, ContF projection sample, 3D samples @subsection TriPlot and QuadPlot @@ -2751,7 +2751,7 @@ int sample(mglGraph *gr) @pfig{triplot, Example of TriPlot() and QuadPlot()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Dots sample, , TriPlot and QuadPlot, 3D samples @subsection Dots sample @@ -2777,7 +2777,7 @@ int sample(mglGraph *gr) @pfig{dots, Example of Dots()} @c ------------------------------------------------------------------ -@external +@external{} @node Vector field samples, Hints, 3D samples, Examples @section Vector field samples @@ -2862,7 +2862,7 @@ void mgls_prepare3v(HMDT ex, HMDT ey, HMDT ez) @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Vect sample, Vect3 sample, , Vector field samples @subsection Vect sample @@ -2896,7 +2896,7 @@ int sample(mglGraph *gr) @pfig{vect, Example of Vect()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Vect3 sample, Traj sample, Vect sample, Vector field samples @subsection Vect3 sample @@ -2920,7 +2920,7 @@ int sample(mglGraph *gr) @pfig{vecta, Example of Vect3()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Traj sample, Flow sample, Vect3 sample, Vector field samples @subsection Traj sample @@ -2939,7 +2939,7 @@ int sample(mglGraph *gr) @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Flow sample, Pipe sample, Traj sample, Vector field samples @subsection Flow sample @@ -2967,7 +2967,7 @@ int sample(mglGraph *gr) @pfig{flow, Example of Flow()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Pipe sample, Dew sample, Flow sample, Vector field samples @subsection Pipe sample @@ -2995,7 +2995,7 @@ int sample(mglGraph *gr) @pfig{pipe, Example of Pipe()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Dew sample, , Pipe sample, Vector field samples @subsection Dew sample @@ -3014,7 +3014,7 @@ int sample(mglGraph *gr) @c ------------------------------------------------------------------ -@external +@external{} @node Hints, FAQ, Vector field samples, Examples @section Hints @@ -3041,7 +3041,7 @@ In this section I've included some small hints and advices for the improving of @end menu @c ------------------------------------------------------------------ -@c @external +@c @external{} @node ``Compound'' graphics, Transparency and lighting, , Hints @subsection ``Compound'' graphics @@ -3101,7 +3101,7 @@ int sample(mglGraph *gr) @pfig{combined, Example of ``combined'' plots} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Transparency and lighting, Types of transparency, ``Compound'' graphics, Hints @subsection Transparency and lighting @@ -3128,7 +3128,7 @@ int sample(mglGraph *gr) @pfig{alpha, Example of transparency and lightings} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Types of transparency, Axis projection, Transparency and lighting, Hints @subsection Types of transparency @@ -3161,7 +3161,7 @@ int sample(mglGraph *gr) @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Axis projection, Adding fog, Ternary axis, Hints @subsection Axis projection @@ -3191,7 +3191,7 @@ int sample(mglGraph *gr) @c @pfig{projection6, Example of quaternary axis projections} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Adding fog, Several light sources, Axis projection, Hints @subsection Adding fog @@ -3210,7 +3210,7 @@ int sample(mglGraph *gr) @pfig{fog, Example of @code{Fog()}.} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Several light sources, Using primitives, Adding fog, Hints @subsection Several light sources @@ -3232,7 +3232,7 @@ int sample(mglGraph *gr) @pfig{several_light, Example of several light sources.} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Using primitives, STFA sample, Several light sources, Hints @subsection Using primitives @@ -3333,7 +3333,7 @@ Of course, the first variant is more suitable if you need to plot a lot of circl @pfig{venn, Example of Venn diagram.} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node STFA sample, Mapping visualization, Using primitives, Hints @subsection STFA sample @@ -3363,7 +3363,7 @@ int sample(mglGraph *gr) @pfig{stfa, Example of STFA().} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Mapping visualization, Making histogram, STFA sample, Hints @subsection Mapping visualization @@ -3396,7 +3396,7 @@ int sample(mglGraph *gr) @pfig{map, Example of Map().} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Making histogram, Nonlinear fitting sample, Mapping visualization, Hints @subsection Making histogram @@ -3424,7 +3424,7 @@ int sample(mglGraph *gr) @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Nonlinear fitting sample, PDE solving hints, Making histogram, Hints @subsection Nonlinear fitting hints @@ -3482,7 +3482,7 @@ int sample(mglGraph *gr) @pfig{fit, Example of nonlinear fitting.} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node PDE solving hints, MGL parser using, Nonlinear fitting sample, Hints @subsection PDE solving hints @@ -3550,7 +3550,7 @@ int sample(mglGraph *gr) @c ------------------------------------------------------------------ -@c @external +@c @external{} @node MGL parser using, Using options, PDE solving hints, Hints @subsection MGL parser using @@ -3609,7 +3609,7 @@ int sample(HMGL gr) @pfig{parser, Example of MGL script parsing.} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Using options, ``Templates'', MGL parser using, Hints @subsection Using options @@ -3642,7 +3642,7 @@ void template(mglGraph *gr) @pfig{mirror, Example of options usage.} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node ``Templates'', Nonlinear fitting sample, Using options, Hints @subsection ``Templates'' @@ -3674,7 +3674,7 @@ A template-function can also contain settings for font, transparency, lightning, I understand that this is obvious thing for any professional programmer, but I several times receive suggestion about ``templates'' ... So, I decide to point out it here. @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Stereo image, Reduce memory usage, ``Templates'', Hints @subsection Stereo image @@ -3697,7 +3697,7 @@ int sample(mglGraph *gr) @pfig{stereo, Example of stereo image.} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Reduce memory usage, , Stereo image, Hints @subsection Reduce memory usage @@ -3715,7 +3715,7 @@ int sample(mglGraph *gr) @end verbatim @c ================================================================== -@external +@external{} @node FAQ, , Hints, Examples @section FAQ @@ -3790,5 +3790,5 @@ They are standard GNU tools. There is special FAQ about its usage under Windows @end table -@external +@external{} diff --git a/texinfo/example_ru.texi b/texinfo/example_ru.texi index b7d2901..e8445e4 100644 --- a/texinfo/example_ru.texi +++ b/texinfo/example_ru.texi @@ -63,7 +63,7 @@ and so on. @end menu @c ------------------------------------------------------------------ -@external +@external{} @node Basic usage, Advanced usage, , Examples @section Basic usage @@ -106,7 +106,7 @@ Let me consider the aforesaid in more detail. @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Using MathGL window, Drawing to file, , Basic usage @subsection Using MathGL window @cindex window @@ -189,7 +189,7 @@ The rotation, shift, zooming, switching on/off transparency and lighting can be In this example function @code{sample} rotates axes (@code{Rotate()}, @pxref{Subplots and rotation}) and draws the bounding box (@code{Box()}). Drawing is placed in separate function since it will be used on demand when window canvas needs to be redrawn. @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Drawing to file, Animation, Using MathGL window, Basic usage @subsection Drawing to file @@ -230,7 +230,7 @@ int main(int ,char **) The difference from the previous one is using other function @code{WriteEPS()} for EPS format instead of function @code{WritePNG()}. Also, there is no switching on of the plot transparency @code{Alpha} since EPS format does not support it. @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Animation, Drawing in memory, Drawing to file, Basic usage @subsection Animation @@ -363,7 +363,7 @@ Created files can be converted to movie by help of a lot of programs. For exampl Finally, you can use @code{mglconv} tool for doing the same with MGL scripts (@pxref{Utilities}). @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Drawing in memory, Using QMathGL, Animation, Basic usage @subsection Drawing in memory @@ -421,7 +421,7 @@ void MyWidget::paintEvent(QPaintEvent *) @end verbatim @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Using QMathGL, MathGL and PyQt, Drawing in memory, Basic usage @subsection Using QMathGL @@ -432,7 +432,7 @@ First of all you have to define the drawing function or inherit a class from @co #include #include #include -#include +#include int main(int argc,char **argv) { QApplication a(argc,argv); @@ -459,7 +459,7 @@ int main(int argc,char **argv) @end verbatim @c ------------------------------------------------------------------ -@c @external +@c @external{} @node MathGL and PyQt, , Using QMathGL, Basic usage @subsection MathGL and PyQt @@ -532,7 +532,7 @@ qw.raise_() @c ------------------------------------------------------------------ -@external +@external{} @node Advanced usage, Data handling, Basic usage, Examples @section Advanced usage @@ -551,7 +551,7 @@ Now I show several non-obvious features of MathGL: several subplots in a single @end menu @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Subplots, Axis and ticks, , Advanced usage @subsection Subplots @@ -604,7 +604,7 @@ int sample(mglGraph *gr) @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Axis and ticks, Curvilinear coordinates, Subplots, Advanced usage @subsection Axis and ticks @@ -718,7 +718,7 @@ int sample(mglGraph *gr) You can see that MathGL automatically switch to log-ticks as we define log-axis formula (in difference from v.1.*). Moreover, it switch to log-ticks for any formula if axis range will be large enough (see right bottom plot). Another interesting feature is that you not necessary define usual log-axis (i.e. when coordinates are positive), but you can define ``minus-log'' axis when coordinate is negative (see left bottom plot). @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Curvilinear coordinates, Colorbars, Axis and ticks, Advanced usage @subsection Curvilinear coordinates @@ -755,7 +755,7 @@ int sample(mglGraph *gr) @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Colorbars, Bounding box, Curvilinear coordinates, Advanced usage @subsection Colorbars @@ -797,7 +797,7 @@ int sample(mglGraph *gr) @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Bounding box, Ternary axis, Colorbars, Advanced usage @subsection Bounding box @@ -821,7 +821,7 @@ int sample(mglGraph *gr) @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Ternary axis, Text features, Bounding box, Advanced usage @subsection Ternary axis @@ -874,7 +874,7 @@ int sample(mglGraph *gr) @pfig{ternary, Example of colorbars} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Text features, Legend sample, Ternary axis, Advanced usage @subsection Text features @@ -942,7 +942,7 @@ int sample(mglGraph *gr) @pfig{fonts, Example of font faces} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Legend sample, Cutting sample, Text features, Advanced usage @subsection Legend sample @@ -979,7 +979,7 @@ int sample(mglGraph *gr) @pfig{legend, Example of legend} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Cutting sample, , Legend sample, Advanced usage @subsection Cutting sample @@ -1027,7 +1027,7 @@ int sample(mglGraph *gr) @c ------------------------------------------------------------------ -@external +@external{} @node Data handling, Data plotting, Advanced usage, Examples @section Data handling @@ -1040,7 +1040,7 @@ Class @code{mglData} contains all functions for the data handling in MathGL (@px @end menu @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Array creation, Linking array, , Data handling @subsection Array creation @@ -1118,7 +1118,7 @@ or by using @code{Modify()} function The only non-obvious thing here is using multidimensional arrays in C/C++, i.e. arrays defined like @code{mreal dat[40][30];}. Since, formally these elements @code{dat[i]} can address the memory in arbitrary place you should use the proper function to convert such arrays to @code{mglData} object. For C++ this is functions like @code{mglData::Set(mreal **dat, int N1, int N2);}. For C this is functions like @code{mgl_data_set_mreal2(HMDT d, const mreal **dat, int N1, int N2);}. At this, you should keep in mind that @code{nx=N2} and @code{ny=N1} after conversion. @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Linking array, Change data, Array creation, Data handling @subsection Linking array @@ -1136,7 +1136,7 @@ Creating the link is rather simple -- just the same as using @code{Set} function @end verbatim @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Change data, , Linking array, Data handling @subsection Change data @@ -1260,7 +1260,7 @@ int sample(mglGraph *gr) @pfig{solve, Example of data interpolation and root finding} @c ------------------------------------------------------------------ -@external +@external{} @node Data plotting, 1D samples, Data handling, Examples @section Data plotting @@ -1381,7 +1381,7 @@ int sample(mglGraph *gr) @end verbatim @c ------------------------------------------------------------------ -@external +@external{} @node 1D samples, 2D samples, Data plotting, Examples @section 1D samples @@ -1464,7 +1464,7 @@ void mgls_prepare1d(HMDT y, HMDT y1=0, HMDT y2=0, HMDT x1=0, HMDT x2=0) @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Plot sample, Radar sample, , 1D samples @subsection Plot sample @@ -1495,7 +1495,7 @@ int sample(mglGraph *gr) @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Radar sample, Step sample, Plot sample, 1D samples @subsection Radar sample @@ -1513,7 +1513,7 @@ int sample(mglGraph *gr) @pfig{radar, Example of Radar()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Step sample, Tens sample, Radar sample, 1D samples @subsection Step sample @@ -1540,7 +1540,7 @@ int sample(mglGraph *gr) @pfig{step, Example of Step()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Tens sample, Area sample, Step sample, 1D samples @subsection Tens sample @@ -1566,7 +1566,7 @@ int sample(mglGraph *gr) @pfig{tens, Example of Tens()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Area sample, Region sample, Tens sample, 1D samples @subsection Area sample @@ -1596,7 +1596,7 @@ int sample(mglGraph *gr) @pfig{area, Example of Area()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Region sample, Stem sample, Area sample, 1D samples @subsection Region sample @@ -1624,7 +1624,7 @@ int sample(mglGraph *gr) @pfig{region, Example of Region()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Stem sample, Bars sample, Region sample, 1D samples @subsection Stem sample @@ -1650,7 +1650,7 @@ int sample(mglGraph *gr) @pfig{stem, Example of Stem()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Bars sample, Barh sample, Stem sample, 1D samples @subsection Bars sample @@ -1688,7 +1688,7 @@ int sample(mglGraph *gr) @pfig{bars, Example of Bars()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Barh sample, Cones sample, Bars sample, 1D samples @subsection Barh sample @@ -1717,7 +1717,7 @@ int sample(mglGraph *gr) @pfig{barh, Example of Barh()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Cones sample, Chart sample, Bars sample, 1D samples @subsection Cones sample @@ -1746,7 +1746,7 @@ int sample(mglGraph *gr) @pfig{cones, Example of Cones()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Chart sample, BoxPlot sample, Cones sample, 1D samples @subsection Chart sample @@ -1775,7 +1775,7 @@ int sample(mglGraph *gr) @pfig{chart, Example of Chart()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node BoxPlot sample, Candle sample, Chart sample, 1D samples @subsection BoxPlot sample @@ -1793,7 +1793,7 @@ int sample(mglGraph *gr) @pfig{boxplot, Example of BoxPlot()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Candle sample, Error sample, BoxPlot sample, 1D samples @subsection Candle sample @@ -1813,7 +1813,7 @@ int sample(mglGraph *gr) @pfig{candle, Example of Candle()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Error sample, Mark sample, Candle sample, 1D samples @subsection Error sample @@ -1853,7 +1853,7 @@ int sample(mglGraph *gr) @pfig{error, Example of Error()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Mark sample, TextMark sample, Error sample, 1D samples @subsection Mark sample @@ -1871,7 +1871,7 @@ int sample(mglGraph *gr) @pfig{mark, Example of Mark()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node TextMark sample, Label sample, Mark sample, 1D samples @subsection TextMark sample @@ -1889,7 +1889,7 @@ int sample(mglGraph *gr) @pfig{textmark, Example of TextMark()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Label sample, Table sample, TextMark sample, 1D samples @subsection Label sample @@ -1907,7 +1907,7 @@ int sample(mglGraph *gr) @pfig{label, Example of Label()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Table sample, Tube sample, Label sample, 1D samples @subsection Table sample @@ -1932,7 +1932,7 @@ int sample(mglGraph *gr) @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Tube sample, Tape sample, Table sample, 1D samples @subsection Tube sample @@ -1962,7 +1962,7 @@ int sample(mglGraph *gr) @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Tape sample, Torus sample, Tube sample, 1D samples @subsection Tape sample @@ -1996,7 +1996,7 @@ int sample(mglGraph *gr) @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Torus sample, , Tape sample, 1D samples @subsection Torus sample @@ -2025,7 +2025,7 @@ int sample(mglGraph *gr) @c ------------------------------------------------------------------ -@external +@external{} @node 2D samples, 3D samples, 1D samples, Examples @section 2D samples @@ -2083,7 +2083,7 @@ void mgls_prepare2d(HMDT a, HMDT b=0, HMDT v=0) @end menu @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Surf sample, SurfC sample, , 2D samples @subsection Surf sample @@ -2114,7 +2114,7 @@ int sample(mglGraph *gr) @pfig{surf, Example of Surf()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node SurfC sample, SurfA sample, Surf sample, 2D samples @subsection SurfC sample @@ -2132,7 +2132,7 @@ int sample(mglGraph *gr) @pfig{surfc, Example of SurfC()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node SurfA sample, Mesh sample, SurfC sample, 2D samples @subsection SurfA sample @@ -2152,7 +2152,7 @@ int sample(mglGraph *gr) @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Mesh sample, Fall sample, SurfA sample, 2D samples @subsection Mesh sample @@ -2170,7 +2170,7 @@ int sample(mglGraph *gr) @pfig{mesh, Example of Mesh()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Fall sample, Belt sample, Mesh sample, 2D samples @subsection Fall sample @@ -2188,7 +2188,7 @@ int sample(mglGraph *gr) @pfig{fall, Example of Fall()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Belt sample, Boxs sample, Fall sample, 2D samples @subsection Belt sample @@ -2206,7 +2206,7 @@ int sample(mglGraph *gr) @pfig{belt, Example of Belt()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Boxs sample, Tile sample, Fall sample, 2D samples @subsection Boxs sample @@ -2234,7 +2234,7 @@ int sample(mglGraph *gr) @pfig{boxs, Example of Boxs()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Tile sample, TileS sample, Boxs sample, 2D samples @subsection Tile sample @@ -2252,7 +2252,7 @@ int sample(mglGraph *gr) @pfig{tile, Example of Tile()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node TileS sample, Dens sample, Tile sample, 2D samples @subsection TileS sample @@ -2271,7 +2271,7 @@ int sample(mglGraph *gr) @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Dens sample, Cont sample, TileS sample, 2D samples @subsection Dens sample @@ -2299,7 +2299,7 @@ int sample(mglGraph *gr) @pfig{dens, Example of Dens()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Cont sample, ContF sample, Dens sample, 2D samples @subsection Cont sample @@ -2326,7 +2326,7 @@ int sample(mglGraph *gr) @pfig{cont, Example of Cont()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node ContF sample, ContD sample, Cont sample, 2D samples @subsection ContF sample @@ -2355,7 +2355,7 @@ int sample(mglGraph *gr) @pfig{contf, Example of ContF()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node ContD sample, ContV sample, ContF sample, 2D samples @subsection ContD sample @@ -2384,7 +2384,7 @@ int sample(mglGraph *gr) @pfig{contd, Example of ContD()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node ContV sample, Axial sample, ContD sample, 2D samples @subsection ContV sample @@ -2413,7 +2413,7 @@ int sample(mglGraph *gr) @pfig{contv, Example of ContV()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Axial sample, Grad sample, ContV sample, 2D samples @subsection Axial sample @@ -2441,7 +2441,7 @@ int sample(mglGraph *gr) @pfig{axial, Example of Axial()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Grad sample, , Axial sample, 2D samples @subsection Grad sample @@ -2460,7 +2460,7 @@ int sample(mglGraph *gr) @c ------------------------------------------------------------------ -@external +@external{} @node 3D samples, Vector field samples, 2D samples, Examples @section 3D samples @@ -2512,7 +2512,7 @@ void mgls_prepare3d(HMDT a, HMDT b=0) @end menu @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Surf3 sample, Surf3C sample, , 3D samples @subsection Surf3 sample @@ -2537,7 +2537,7 @@ int sample(mglGraph *gr) @pfig{surf3, Example of Surf3()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Surf3C sample, Surf3A sample, Surf3 sample, 3D samples @subsection Surf3C sample @@ -2556,7 +2556,7 @@ int sample(mglGraph *gr) @pfig{surf3c, Example of Surf3C()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Surf3A sample, Cloud sample, Surf3C sample, 3D samples @subsection Surf3A sample @@ -2575,7 +2575,7 @@ int sample(mglGraph *gr) @pfig{surf3a, Example of Surf3A()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Cloud sample, Dens3 sample, Surf3A sample, 3D samples @subsection Cloud sample @@ -2603,7 +2603,7 @@ int sample(mglGraph *gr) @pfig{cloud, Example of Cloud()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Dens3 sample, Cont3 sample, Cloud sample, 3D samples @subsection Dens3 sample @@ -2623,7 +2623,7 @@ int sample(mglGraph *gr) @pfig{densa, Example of Dens3()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Cont3 sample, ContF3 sample, Dens3 sample, 3D samples @subsection Cont3 sample @@ -2643,7 +2643,7 @@ int sample(mglGraph *gr) @pfig{conta, Example of Cont3()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node ContF3 sample, Dens projection sample, Cont3 sample, 3D samples @subsection ContF3 sample @@ -2664,7 +2664,7 @@ int sample(mglGraph *gr) @pfig{contfa, Example of ContF3()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Dens projection sample, Cont projection sample, ContF3 sample, 3D samples @subsection Dens projection sample @@ -2680,10 +2680,10 @@ int sample(mglGraph *gr) } @end verbatim -@pfig{dens_xyz, {Example of DensX(), DensY(), DensZ()}} +@pfig{dens_xyz, Example of DensX()\, DensY()\, DensZ()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Cont projection sample, ContF projection sample, Dens projection sample, 3D samples @subsection Cont projection sample @@ -2699,10 +2699,10 @@ int sample(mglGraph *gr) } @end verbatim -@pfig{cont_xyz, {Example of ContX(), ContY(), ContZ()}} +@pfig{cont_xyz, Example of ContX()\, ContY()\, ContZ()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node ContF projection sample, TriPlot and QuadPlot, Cont projection sample, 3D samples @subsection ContF projection sample @@ -2718,10 +2718,10 @@ int sample(mglGraph *gr) } @end verbatim -@pfig{contf_xyz, {Example of ContFX(), ContFY(), ContFZ()}} +@pfig{contf_xyz, Example of ContFX()\, ContFY()\, ContFZ()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node TriPlot and QuadPlot, Axial sample, ContF projection sample, 3D samples @subsection TriPlot and QuadPlot @@ -2750,7 +2750,7 @@ int sample(mglGraph *gr) @pfig{triplot, Example of TriPlot() and QuadPlot()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Dots sample, , TriPlot and QuadPlot, 3D samples @subsection Dots sample @@ -2776,7 +2776,7 @@ int sample(mglGraph *gr) @pfig{dots, Example of Dots()} @c ------------------------------------------------------------------ -@external +@external{} @node Vector field samples, Hints, 3D samples, Examples @section Vector field samples @@ -2861,7 +2861,7 @@ void mgls_prepare3v(HMDT ex, HMDT ey, HMDT ez) @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Vect sample, Vect3 sample, , Vector field samples @subsection Vect sample @@ -2895,7 +2895,7 @@ int sample(mglGraph *gr) @pfig{vect, Example of Vect()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Vect3 sample, Traj sample, Vect sample, Vector field samples @subsection Vect3 sample @@ -2919,7 +2919,7 @@ int sample(mglGraph *gr) @pfig{vecta, Example of Vect3()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Traj sample, Flow sample, Vect3 sample, Vector field samples @subsection Traj sample @@ -2938,7 +2938,7 @@ int sample(mglGraph *gr) @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Flow sample, Pipe sample, Traj sample, Vector field samples @subsection Flow sample @@ -2966,7 +2966,7 @@ int sample(mglGraph *gr) @pfig{flow, Example of Flow()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Pipe sample, Dew sample, Flow sample, Vector field samples @subsection Pipe sample @@ -2994,7 +2994,7 @@ int sample(mglGraph *gr) @pfig{pipe, Example of Pipe()} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Dew sample, , Pipe sample, Vector field samples @subsection Dew sample @@ -3013,7 +3013,7 @@ int sample(mglGraph *gr) @c ------------------------------------------------------------------ -@external +@external{} @node Hints, FAQ, Vector field samples, Examples @section Hints @@ -3040,7 +3040,7 @@ In this section I've included some small hints and advices for the improving of @end menu @c ------------------------------------------------------------------ -@c @external +@c @external{} @node ``Compound'' graphics, Transparency and lighting, , Hints @subsection ``Compound'' graphics @@ -3100,7 +3100,7 @@ int sample(mglGraph *gr) @pfig{combined, Example of ``combined'' plots} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Transparency and lighting, Types of transparency, ``Compound'' graphics, Hints @subsection Transparency and lighting @@ -3127,7 +3127,7 @@ int sample(mglGraph *gr) @pfig{alpha, Example of transparency and lightings} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Types of transparency, Axis projection, Transparency and lighting, Hints @subsection Types of transparency @@ -3160,7 +3160,7 @@ int sample(mglGraph *gr) @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Axis projection, Adding fog, Ternary axis, Hints @subsection Axis projection @@ -3190,7 +3190,7 @@ int sample(mglGraph *gr) @c @pfig{projection6, Example of quaternary axis projections} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Adding fog, Several light sources, Axis projection, Hints @subsection Adding fog @@ -3209,7 +3209,7 @@ int sample(mglGraph *gr) @pfig{fog, Example of @code{Fog()}.} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Several light sources, Using primitives, Adding fog, Hints @subsection Several light sources @@ -3231,7 +3231,7 @@ int sample(mglGraph *gr) @pfig{several_light, Example of several light sources.} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Using primitives, STFA sample, Several light sources, Hints @subsection Using primitives @@ -3332,7 +3332,7 @@ Of course, the first variant is more suitable if you need to plot a lot of circl @pfig{venn, Example of Venn diagram.} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node STFA sample, Mapping visualization, Using primitives, Hints @subsection STFA sample @@ -3362,7 +3362,7 @@ int sample(mglGraph *gr) @pfig{stfa, Example of STFA().} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Mapping visualization, Making histogram, STFA sample, Hints @subsection Mapping visualization @@ -3395,7 +3395,7 @@ int sample(mglGraph *gr) @pfig{map, Example of Map().} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Making histogram, Nonlinear fitting sample, Mapping visualization, Hints @subsection Making histogram @@ -3423,7 +3423,7 @@ int sample(mglGraph *gr) @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Nonlinear fitting sample, PDE solving hints, Making histogram, Hints @subsection Nonlinear fitting hints @@ -3481,7 +3481,7 @@ int sample(mglGraph *gr) @pfig{fit, Example of nonlinear fitting.} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node PDE solving hints, MGL parser using, Nonlinear fitting sample, Hints @subsection PDE solving hints @@ -3549,7 +3549,7 @@ int sample(mglGraph *gr) @c ------------------------------------------------------------------ -@c @external +@c @external{} @node MGL parser using, Using options, PDE solving hints, Hints @subsection MGL parser using @@ -3606,7 +3606,7 @@ int sample(HMGL gr) @pfig{parser, Example of MGL script parsing.} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Using options, ``Templates'', MGL parser using, Hints @subsection Using options @@ -3639,7 +3639,7 @@ void template(mglGraph *gr) @pfig{mirror, Example of options usage.} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node ``Templates'', Nonlinear fitting sample, Using options, Hints @subsection ``Templates'' @@ -3671,7 +3671,7 @@ A template-function can also contain settings for font, transparency, lightning, I understand that this is obvious thing for any professional programmer, but I several times receive suggestion about ``templates'' ... So, I decide to point out it here. @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Stereo image, Reduce memory usage, ``Templates'', Hints @subsection Stereo image @@ -3694,7 +3694,7 @@ int sample(mglGraph *gr) @pfig{stereo, Example of stereo image.} @c ------------------------------------------------------------------ -@c @external +@c @external{} @node Reduce memory usage, , Stereo image, Hints @subsection Reduce memory usage @@ -3712,9 +3712,9 @@ int sample(mglGraph *gr) @end verbatim @c ================================================================== -@external +@external{} @node FAQ, , Hints, Examples -@section FAQ -- TODO: UPDATE!!! +@section FAQ @table @strong @item График не рисуется?! @@ -3852,5 +3852,5 @@ int main (int argc, char ** argv) @end table -@external +@external{} diff --git a/texinfo/formats_en.texi b/texinfo/formats_en.texi index 413b433..cda1232 100644 --- a/texinfo/formats_en.texi +++ b/texinfo/formats_en.texi @@ -7,7 +7,7 @@ This appendix contain description of file formats used by MathGL. @end menu @c ------------------------------------------------------------------ -@external +@external{} @node Font files, MGLD format, , File formats @section Font files @@ -31,7 +31,7 @@ Note: the closing contour line is done automatically (so the last segment may b @c ------------------------------------------------------------------ -@external +@external{} @node MGLD format, JSON format, Font files, File formats @section MGLD format @@ -70,7 +70,7 @@ xP yP ... Here nT is the number of triangles; nL is the number of line vertexes; xA, yA, xB, yB, xC, yC are coordinates of triangles; and xP, yP, xQ, yQ are coordinates of lines. Line coordinate xP=0x3fff, yP=0x3fff denote line breaking. @c ------------------------------------------------------------------ -@external +@external{} @node JSON format, , MGLD format, File formats @section JSON format @@ -107,4 +107,4 @@ number of glyph descriptions array of glyph descriptions, each element is array in form [nT, nL, [xA0, yA0, xB0, yB0, xC0, yC0, xA1, yA1, xB1, yB1, xC1, yC1 ...], [xP0, yP0, xP1, yP1 ...]]. Here nT is the number of triangles; nL is the number of line vertexes; xA, yA, xB, yB, xC, yC are coordinates of triangles; and xP, yP, xQ, yQ are coordinates of lines. Line coordinate xP=0x3fff, yP=0x3fff denote line breaking. @end table -@external +@external{} diff --git a/texinfo/formats_ru.texi b/texinfo/formats_ru.texi index 413b433..cda1232 100644 --- a/texinfo/formats_ru.texi +++ b/texinfo/formats_ru.texi @@ -7,7 +7,7 @@ This appendix contain description of file formats used by MathGL. @end menu @c ------------------------------------------------------------------ -@external +@external{} @node Font files, MGLD format, , File formats @section Font files @@ -31,7 +31,7 @@ Note: the closing contour line is done automatically (so the last segment may b @c ------------------------------------------------------------------ -@external +@external{} @node MGLD format, JSON format, Font files, File formats @section MGLD format @@ -70,7 +70,7 @@ xP yP ... Here nT is the number of triangles; nL is the number of line vertexes; xA, yA, xB, yB, xC, yC are coordinates of triangles; and xP, yP, xQ, yQ are coordinates of lines. Line coordinate xP=0x3fff, yP=0x3fff denote line breaking. @c ------------------------------------------------------------------ -@external +@external{} @node JSON format, , MGLD format, File formats @section JSON format @@ -107,4 +107,4 @@ number of glyph descriptions array of glyph descriptions, each element is array in form [nT, nL, [xA0, yA0, xB0, yB0, xC0, yC0, xA1, yA1, xB1, yB1, xC1, yC1 ...], [xP0, yP0, xP1, yP1 ...]]. Here nT is the number of triangles; nL is the number of line vertexes; xA, yA, xB, yB, xC, yC are coordinates of triangles; and xP, yP, xQ, yQ are coordinates of lines. Line coordinate xP=0x3fff, yP=0x3fff denote line breaking. @end table -@external +@external{} diff --git a/texinfo/index.html b/texinfo/index.html index 0dcde9f..a3126ed 100644 --- a/texinfo/index.html +++ b/texinfo/index.html @@ -4,7 +4,7 @@ - + diff --git a/texinfo/mathgl.js b/texinfo/mathgl.js index c431f7e..a0952e9 100644 --- a/texinfo/mathgl.js +++ b/texinfo/mathgl.js @@ -253,7 +253,12 @@ var mgl_draw_good = function(obj, ctx, skip) var zc = obj.b[6]*xx + obj.b[7]*yy + obj.b[8]*zz; var ll = xc*xc+yc*yc; if(ll < 1e-10) break; - if(ll<1e10) t = Math.atan2(yc,xc); + if(ll<1e10 && t/deg<1e4) + { + t = Math.atan2(yc,xc); + if(Math.abs(t)>Math.PI/2) t += Math.PI; + } + else t=0; var c=Math.cos(t), s=Math.sin(t), d=obj.prim[i][6]/2; var b=[d*c, d*s, d*s, -d*c, obj.pp[n1][0],obj.pp[n1][1]]; diff --git a/texinfo/mathgl_en.texi b/texinfo/mathgl_en.texi index 982afe4..113c3a4 100644 --- a/texinfo/mathgl_en.texi +++ b/texinfo/mathgl_en.texi @@ -1,6 +1,6 @@ \input texinfo @setfilename mathgl_en.info -@set VERSION 2.1 +@set VERSION 2.1.1 @settitle MathGL @value{VERSION} @syncodeindex pg cp @comment %**end of header @@ -97,9 +97,9 @@ This file documents the Mathematical Graphic Library (MathGL), a collection of c @end ifnothtml -@rmacro sref {arg} +@macro sref {arg} @xref{\arg\}, for sample code and picture. -@end rmacro +@end macro @macro tdref {nam} @uref{http://mathgl.sourceforge.net/pdf_u3d/\nam\.pdf, 3D pdf} @end macro diff --git a/texinfo/mathgl_ru.texi b/texinfo/mathgl_ru.texi index 1180134..ef6d152 100644 --- a/texinfo/mathgl_ru.texi +++ b/texinfo/mathgl_ru.texi @@ -2,7 +2,7 @@ @setfilename mathgl_ru.info @c @documentlanguage ru @documentencoding UTF-8 -@set VERSION 2.1 +@set VERSION 2.1.1 @settitle MathGL @value{VERSION} @syncodeindex pg cp @comment %**end of header @@ -99,9 +99,9 @@ @end ifnothtml -@rmacro sref {arg} +@macro sref {arg} См. раздел @ref{\arg\}, для примеров кода и графика. -@end rmacro +@end macro @macro tdref {nam} @uref{http://mathgl.sourceforge.net/pdf_u3d/\nam\.pdf, 3D pdf} @end macro diff --git a/texinfo/mgl_en.texi b/texinfo/mgl_en.texi index f45b883..27028c9 100644 --- a/texinfo/mgl_en.texi +++ b/texinfo/mgl_en.texi @@ -1,6 +1,6 @@ \input texinfo @setfilename mgl_en.info -@set VERSION 2.1 +@set VERSION 2.1.1 @settitle MGL script language for version @value{VERSION} @syncodeindex pg cp @comment %**end of header @@ -54,11 +54,10 @@ This file documents the MGL script language. It corresponds to release @value{VE @ifhtml @macro fig {fname,text} -@center @image{\fname\, 11cm, , \text\, png} +@center @image{\fname\, 11cm, , \text\, .png} @end macro @macro pfig {fname,text} -@center @image{png/\fname\, 11cm, , \text\, png} -@c @center @image{../png/\fname\, 11cm, , \text\. See also @uref{../pdf/\fname\.pdf, U3D PDF} sample, .png} +@center @image{png/\fname\, 11cm, , \text\, .png} @end macro @end ifhtml @@ -74,17 +73,15 @@ This file documents the MGL script language. It corresponds to release @value{VE @ifnottex @macro fig {fname,text} -@c @center @image{\fname\, 11cm, , \text\, .png} @end macro @macro pfig {fname,text} -@c @center @image{png/\fname\, 11cm, , \text\, .png} @end macro @end ifnottex @end ifnothtml -@rmacro sref {arg} +@macro sref {arg} @xref{\arg\}, for sample code and picture. -@end rmacro +@end macro @macro tdref {nam} @end macro @set UDAV diff --git a/texinfo/mgl_ru.texi b/texinfo/mgl_ru.texi index c7e0a91..5454c09 100644 --- a/texinfo/mgl_ru.texi +++ b/texinfo/mgl_ru.texi @@ -2,7 +2,7 @@ @setfilename mgl_ru.info @c @documentlanguage ru @documentencoding UTF-8 -@set VERSION 2.1 +@set VERSION 2.1.1 @settitle Язык MGL для версии @value{VERSION} @syncodeindex pg cp @comment %**end of header @@ -56,11 +56,10 @@ @ifhtml @macro fig {fname,text} -@center @image{../\fname\, 11cm, , \text\, .png} +@center @image{\fname\, 11cm, , \text\, .png} @end macro @macro pfig {fname,text} -@center @image{../png/\fname\, 11cm, , \text\, .png} -@c @center @image{../png/\fname\, 11cm, , \text\. See also @uref{../pdf/\fname\.pdf, U3D PDF} sample, .png} +@center @image{png/\fname\, 11cm, , \text\, .png} @end macro @end ifhtml @@ -76,17 +75,15 @@ @ifnottex @macro fig {fname,text} -@c @center @image{\fname\, 11cm, , \text\, .png} @end macro @macro pfig {fname,text} -@c @center @image{png/\fname\, 11cm, , \text\, .png} @end macro @end ifnottex @end ifnothtml -@rmacro sref {arg} +@macro sref {arg} См. @ref{\arg\}, для примеров кода и графика. -@end rmacro +@end macro @macro tdref {nam} @end macro @set UDAV diff --git a/texinfo/other_en.texi b/texinfo/other_en.texi index 90b6b4a..c6233aa 100644 --- a/texinfo/other_en.texi +++ b/texinfo/other_en.texi @@ -21,7 +21,7 @@ Below I show how this internal classes can be used. @c ------------------------------------------------------------------ -@external +@external{} @node mglBase class, mglDataA class, , Other classes @section Define new kind of plot (mglBase class) @@ -325,7 +325,7 @@ int main() @c ------------------------------------------------------------------ -@external +@external{} @node mglDataA class, mglColor class, mglBase class, Other classes @section User defined types (mglDataA class) @@ -413,7 +413,7 @@ int main() @c ------------------------------------------------------------------ -@external +@external{} @node mglColor class, mglPoint class, mglDataA class, Other classes @section mglColor class @cindex mglColor @@ -483,7 +483,7 @@ Return inverted color. @end deftypefn @c ------------------------------------------------------------------ -@external +@external{} @node mglPoint class, , mglColor class, Other classes @section mglPoint class @cindex mglPoint @@ -557,5 +557,5 @@ Return true if points are the same. Return true if points are different. @end deftypefn -@external +@external{} diff --git a/texinfo/other_ru.texi b/texinfo/other_ru.texi index aff1443..fd8b5fe 100644 --- a/texinfo/other_ru.texi +++ b/texinfo/other_ru.texi @@ -21,7 +21,7 @@ Below I show how this internal classes can be used. @c ------------------------------------------------------------------ -@external +@external{} @node mglBase class, mglDataA class, , Other classes @section Define new kind of plot (mglBase class) @@ -325,7 +325,7 @@ int main() @c ------------------------------------------------------------------ -@external +@external{} @node mglDataA class, mglColor class, mglBase class, Other classes @section User defined types (mglDataA class) @@ -413,7 +413,7 @@ int main() @c ------------------------------------------------------------------ -@external +@external{} @node mglColor class, mglPoint class, mglDataA class, Other classes @section mglColor class @cindex mglColor @@ -483,7 +483,7 @@ Return inverted color. @end deftypefn @c ------------------------------------------------------------------ -@external +@external{} @node mglPoint class, , mglColor class, Other classes @section mglPoint class @cindex mglPoint @@ -557,5 +557,5 @@ Return true if points are the same. Return true if points are different. @end deftypefn -@external +@external{} diff --git a/texinfo/overview_en.texi b/texinfo/overview_en.texi index 22ff9f8..58b67c3 100644 --- a/texinfo/overview_en.texi +++ b/texinfo/overview_en.texi @@ -24,7 +24,7 @@ a library with large and growing set of graphics. * Thanks:: @end menu -@external +@external{} @node What is MathGL?, MathGL features, , Overview @section What is MathGL? @@ -32,7 +32,7 @@ A code for making high-quality scientific graphics under Linux and Windows. A c At this version (@value{VERSION}) MathGL has more than 50 general types of graphics for 1d, 2d and 3d data arrays. It can export graphics to bitmap and vector (EPS or SVG) files. It has OpenGL interface and can be used from console programs. It has functions for data handling and script MGL language for simplification of data plotting. It also has several types of transparency and smoothed lighting, vector fonts and TeX-like symbol parsing, arbitrary curvilinear coordinate system and many other useful things (see pictures section at @uref{http://mathgl.sf.net/, homepage}). Finally it is platform-independent and free (under GPL v.2.0 or later license). -@external +@external{} @node MathGL features, Installation, What is MathGL?, Overview @section MathGL features @@ -64,7 +64,7 @@ Special class mglData is used for data encapsulation (@pxref{Data processing}). There is fast evaluation of a textual mathematical expression (@pxref{Textual formulas}). It is based on string precompilation to tree-like code at the creation of class instance. At evaluation stage code performs only fast tree-walk and returns the value of the expression. In addition to changing data values, textual formulas are also used for drawing in @emph{arbitrary} curvilinear coordinates. A set of such curvilinear coordinates is limited only by user's imagination rather than a fixed list like: polar, parabolic, spherical, and so on. -@external +@external{} @node Installation, Quick guide, MathGL features, Overview @section Installation @@ -88,7 +88,7 @@ svn checkout http://svn.code.sf.net/p/mathgl/code/mathgl-2x mathgl-code @end verbatim @c ------------------------------------------------------------------ -@external +@external{} @node Quick guide, Changes from v.1, Installation, Overview @section Quick guide @@ -137,7 +137,7 @@ This is enough for a compilation of console program or with external (non-MathGL Fortran users also should add C++ library by the option @code{-lstdc++}. If library was built with @code{enable-double=ON} (this default for v.2.1 and later) then all real numbers must be real*8. You can make it automatic if use option @code{-fdefault-real-8}. @c ------------------------------------------------------------------ -@external +@external{} @node Changes from v.1, Utilities, Quick guide, Overview @section Changes from v.1.* @@ -168,7 +168,7 @@ Add pipes support in utilities (@code{mglconv, mglview}). @end itemize @c ------------------------------------------------------------------ -@external +@external{} @node Utilities, Thanks, Changes from v.1, Overview @section Utilities for parsing MGL @@ -197,8 +197,10 @@ print help message. Additionally you can create animated GIF file or a set of JPEG files with names @samp{frameNNNN.jpg} (here @samp{NNNN} is frame index). Values of the parameter @code{$0} for making animation can be specified inside the script by comment @code{##a val} for each value @code{val} (one comment for one value) or by option(s) @samp{-A val}. Also you can specify a cycle for animation by comment @code{##c v1 v2 dv} or by option @code{-C v1:v2:dv}. In the case of found/specified animation parameters, tool will execute script several times -- once for each value of @code{$0}. +MathGL also provide another simple tool @code{mgl.cgi} which parse MGL script from CGI request and send back produced PNG file. Usually this program should be placed in @code{/usr/lib/cgi-bin/}. But you need to put this program by yourself due to possible security issues and difference of Apache server settings. + @c ------------------------------------------------------------------ -@external +@external{} @node Thanks, , Utilities, Overview @section Thanks @@ -217,4 +219,4 @@ I'm thankful to sponsors M. Veysman (@uref{http://jiht.ru/en/about/structure.php Javascript interface was developed with support of @url{www.datadvance.net, $DATADVANCE} company. -@external +@external{} diff --git a/texinfo/overview_ru.texi b/texinfo/overview_ru.texi index 17a1acc..143e561 100644 --- a/texinfo/overview_ru.texi +++ b/texinfo/overview_ru.texi @@ -24,7 +24,7 @@ MathGL это ... * Thanks:: @end menu -@external +@external{} @node What is MathGL?, MathGL features, , Overview @section Что такое MathGL? @@ -32,7 +32,7 @@ MathGL это ... На данный момент (версия @value{VERSION}) MathGL это более 50 основных типов графиков для одно-, двух- и трехмерных массивов, возможность экспорта в растровые и векторные (EPS или SVG) файлы, интерфейс для OpenGL и возможность запуска в консольном режиме, функции для обработки данных и даже простейший командный (интерпретируемый) язык MGL для упрощения построения графиков. Кроме того, есть несколько типов прозрачности, гладкое освещение, векторные шрифты, TeX-ие команды в надписях, произвольные криволинейные системы координат и прочие полезные мелочи (см. раздел pictures на @uref{http://mathgl.sf.net/, домашней странице}). Ну, и, естественно, полная переносимость библиотеки и ее свободное распространение под лицензией GPL v.2.0 или более поздней. -@external +@external{} @node MathGL features, Installation, What is MathGL?, Overview @section Возможности MathGL @@ -64,7 +64,7 @@ MathGL это ... Для @emph{быстрого} вычисления значения выражения, заданного текстовой строкой (@pxref{Textual formulas}). Он основан на компиляции строки в древоподобную структуру при создании экземпляра класса. На этапе вычисления происходит быстрый обход дерева с выдачей результата для конкретных значений переменных. Помимо изменения значений массива данных, текстовые формулы используются для рисования в @emph{произвольной} криволинейной системе координат. Набор таких координат ограничивается только фантазией пользователя, а не фиксированным числом (типа полярной, параболической, цилиндрической и т.д.). -@external +@external{} @node Installation, Quick guide, MathGL features, Overview @section Установка MathGL @@ -89,7 +89,7 @@ svn checkout http://svn.code.sf.net/p/mathgl/code/mathgl-2x mathgl-code @c TODO Translate it! @c ------------------------------------------------------------------ -@external +@external{} @node Quick guide, Changes from v.1, Installation, Overview @section Quick guide @@ -138,7 +138,7 @@ This is enough for a compilation of console program or with external (non-MathGL При использовании фортрана необходимо также включить библиотеку @code{-lstdc++}. Кроме того, если библиотека была собрана с опцией @code{enable-double=ON} (по умолчанию в версии 2.1 и более поздних), то все вещественные числа должны быть типа real*8. Это можно включить по умолчанию опцией @code{-fdefault-real-8}. @c ------------------------------------------------------------------ -@external +@external{} @node Changes from v.1, Utilities, Quick guide, Overview @section Changes from v.1.* @@ -169,7 +169,7 @@ Add pipes support in utilities (@code{mglconv, mglview}). @end itemize @c ------------------------------------------------------------------ -@external +@external{} @node Utilities, Thanks, Changes from v.1, Overview @section Utilities for parsing MGL @@ -198,8 +198,10 @@ print help message. Additionally you can create animated GIF file or a set of JPEG files with names @samp{frameNNNN.jpg} (here @samp{NNNN} is frame index). Values of the parameter @code{$0} for making animation can be specified inside the script by comment @code{##a val} for each value @code{val} (one comment for one value) or by option(s) @samp{-A val}. Also you can specify a cycle for animation by comment @code{##c v1 v2 dv} or by option @code{-C v1:v2:dv}. In the case of found/specified animation parameters, tool will execute script several times -- once for each value of @code{$0}. +MathGL also provide another simple tool @code{mgl.cgi} which parse MGL script from CGI request and send back produced PNG file. Usually this program should be placed in @code{/usr/lib/cgi-bin/}. But you need to put this program by yourself due to possible security issues and difference of Apache server settings. + @c ------------------------------------------------------------------ -@external +@external{} @node Thanks, , Utilities, Overview @section Благодарности @@ -220,4 +222,4 @@ Additionally you can create animated GIF file or a set of JPEG files with names Javascript интерфейс был разработан при поддержке компании @url{www.datadvance.net, $DATADVANCE}. -@external +@external{} diff --git a/texinfo/parse_en.texi b/texinfo/parse_en.texi index e5e4f43..2dd387b 100644 --- a/texinfo/parse_en.texi +++ b/texinfo/parse_en.texi @@ -24,7 +24,7 @@ MathGL library supports the simplest scripts for data handling and plotting. The @c ------------------------------------------------------------------ -@external +@external{} @node MGL definition, Program flow commands, , MGL scripts @section MGL definition @@ -66,7 +66,7 @@ Command may have several set of possible arguments (for example, @code{plot ydat @c ------------------------------------------------------------------ -@external +@external{} @node Program flow commands, MGL definition, MGL scripts @section Program flow commands @@ -179,7 +179,7 @@ Terminate execution. @ifclear UDAV @c ------------------------------------------------------------------ -@external +@external{} @node mglParse class, , Program flow commands, MGL scripts @section mglParse class @cindex mglParse @@ -313,5 +313,5 @@ Return the description of MGL command @var{name}. @end ifclear -@external +@external{} diff --git a/texinfo/parse_ru.texi b/texinfo/parse_ru.texi index f01c781..4b1705d 100644 --- a/texinfo/parse_ru.texi +++ b/texinfo/parse_ru.texi @@ -26,7 +26,7 @@ MathGL library supports the simplest scripts for data handling and plotting. The @c ------------------------------------------------------------------ -@external +@external{} @node MGL definition, Program flow commands, , MGL scripts @section Основы MGL @@ -71,7 +71,7 @@ MathGL library supports the simplest scripts for data handling and plotting. The @c TODO Translate it! @c ------------------------------------------------------------------ -@external +@external{} @node Program flow commands, MGL definition, MGL scripts @section Program flow commands @@ -184,7 +184,7 @@ Terminate execution. @ifclear UDAV @c ------------------------------------------------------------------ -@external +@external{} @node mglParse class, , Program flow commands, MGL scripts @section mglParse class @cindex mglParse @@ -318,5 +318,5 @@ Return the description of MGL command @var{name}. @end ifclear -@external +@external{} diff --git a/texinfo/symbols_en.texi b/texinfo/symbols_en.texi index 97e9f3f..6d14b3e 100644 --- a/texinfo/symbols_en.texi +++ b/texinfo/symbols_en.texi @@ -7,7 +7,7 @@ This appendix contain the full list of symbols (characters) used by MathGL for s @end menu @c ------------------------------------------------------------------ -@external +@external{} @node Symbols for styles, Hot-keys for mglview, , Symbols and hot-keys @section Symbols for styles @@ -416,7 +416,7 @@ style of @ref{tape}. @c ------------------------------------------------------------------ -@external +@external{} @node Hot-keys for mglview, Hot-keys for UDAV, Symbols for styles, Symbols and hot-keys @section Hot-keys for mglview @@ -487,7 +487,7 @@ style of @ref{tape}. @end multitable @c ------------------------------------------------------------------ -@external +@external{} @node Hot-keys for UDAV, , Hot-keys for mglview, Symbols and hot-keys @section Hot-keys for UDAV @@ -673,4 +673,4 @@ style of @ref{tape}. @end multitable -@external \ No newline at end of file +@external{} \ No newline at end of file diff --git a/texinfo/symbols_ru.texi b/texinfo/symbols_ru.texi index 8492296..d2b4566 100644 --- a/texinfo/symbols_ru.texi +++ b/texinfo/symbols_ru.texi @@ -7,7 +7,7 @@ This appendix contain the full list of symbols (characters) used by MathGL for s @end menu @c ------------------------------------------------------------------ -@external +@external{} @node Symbols for styles, Hot-keys for mglview, , Symbols and hot-keys @section Symbols for styles @@ -416,7 +416,7 @@ style of @ref{tape}. @c ------------------------------------------------------------------ -@external +@external{} @node Hot-keys for mglview, Hot-keys for UDAV, Symbols for styles, Symbols and hot-keys @section Hot-keys for mglview @@ -487,7 +487,7 @@ style of @ref{tape}. @end multitable @c ------------------------------------------------------------------ -@external +@external{} @node Hot-keys for UDAV, , Hot-keys for mglview, Symbols and hot-keys @section Hot-keys for UDAV @@ -673,4 +673,4 @@ style of @ref{tape}. @end multitable -@external \ No newline at end of file +@external{} \ No newline at end of file diff --git a/texinfo/udav_en.texi b/texinfo/udav_en.texi index cb8472a..0100609 100644 --- a/texinfo/udav_en.texi +++ b/texinfo/udav_en.texi @@ -9,7 +9,7 @@ UDAV (Universal Data Array Visualizator) is cross-platform program for data arra @end menu @c ------------------------------------------------------------------ -@external +@external{} @node UDAV overview, UDAV dialogs, , UDAV @section UDAV overview @@ -46,7 +46,7 @@ Also you can look the current list of variables, its dimensions and its size in Finally, pressing @key{F2} or @key{F4} you can show/hide windows with messages/warnings and with calculator. Double click on a warning in message window will jump to corresponding line in editor. Calculator allow you type expression by keyboard as well as by toolbuttons. It know about all current variables, so you can use them in formulas. @c ------------------------------------------------------------------ -@external +@external{} @node UDAV dialogs, UDAV hints, UDAV overview, UDAV @section UDAV dialogs @@ -86,7 +86,7 @@ Finally, there is dialog for UDAV settings. It allow to change most of things in There are also a set of dialogs for data handling, but they are too simple and clear. So, I will not put them here. @c ------------------------------------------------------------------ -@external +@external{} @node UDAV hints, , UDAV dialogs, UDAV @section UDAV hints diff --git a/texinfo/udav_ru.texi b/texinfo/udav_ru.texi index cb8472a..0100609 100644 --- a/texinfo/udav_ru.texi +++ b/texinfo/udav_ru.texi @@ -9,7 +9,7 @@ UDAV (Universal Data Array Visualizator) is cross-platform program for data arra @end menu @c ------------------------------------------------------------------ -@external +@external{} @node UDAV overview, UDAV dialogs, , UDAV @section UDAV overview @@ -46,7 +46,7 @@ Also you can look the current list of variables, its dimensions and its size in Finally, pressing @key{F2} or @key{F4} you can show/hide windows with messages/warnings and with calculator. Double click on a warning in message window will jump to corresponding line in editor. Calculator allow you type expression by keyboard as well as by toolbuttons. It know about all current variables, so you can use them in formulas. @c ------------------------------------------------------------------ -@external +@external{} @node UDAV dialogs, UDAV hints, UDAV overview, UDAV @section UDAV dialogs @@ -86,7 +86,7 @@ Finally, there is dialog for UDAV settings. It allow to change most of things in There are also a set of dialogs for data handling, but they are too simple and clear. So, I will not put them here. @c ------------------------------------------------------------------ -@external +@external{} @node UDAV hints, , UDAV dialogs, UDAV @section UDAV hints diff --git a/texinfo/version_hist.txt b/texinfo/version_hist.txt new file mode 100644 index 0000000..92771aa --- /dev/null +++ b/texinfo/version_hist.txt @@ -0,0 +1,31 @@ +2.0.b Released 23 August 2011 + +1.11.2 Released 30 May 2011 +1.11.1 Released 28 March 2011 +1.11 Released 8 November 2010 +1.10.2.1 Released 27 March 2010 +1.10.2 Released 22 March 2010 +1.10.1 Released 8 March 2010 +1.10 Released 28 December 2009 +1.9 Released 8 July 2009 +1.8.1 Released 4 March 2009 +1.8 Released 27 November 2008 +1.7 Released 5 June 2008 +1.6.2 Released 5 April 2008 +1.6.1 Released 2 April 2008 +1.6 Released 17 March 2008 +1.5 Released 11 January 2008 +1.4.3.1 Released 24 December 2008 +1.4.3 Released 18 December 2008 +1.4.2 Released 27 November 2007 +1.4.1 Released 14 November 2007 +1.4 Released 30 October 2007 +1.3 Released 15 October 2007 +1.2.2 Released 26 September 2007 +1.2.1 Released 14 September 2007 +1.2 Released 10 September 2007 +1.1 Released 23 May 2007 +1.0 Released 2 April 2007 +0.9 Last beta version of the MathGL library. Released 2 March 2007 +0.8.1 Released 19 Febriary 2007 +0.8.0 First public release (24 January 2007) diff --git a/texinfo/web_en.texi b/texinfo/web_en.texi index 74e9fc7..9ac8a8f 100644 --- a/texinfo/web_en.texi +++ b/texinfo/web_en.texi @@ -1,96 +1,17 @@ -\input texinfo -@setfilename mgl_web_en.info -@set VERSION 2.1 -@settitle MathGL @value{VERSION} -@syncodeindex pg cp -@comment %**end of header - -@copying -This website demonstrates the Mathematical Graphic Library (MathGL) version @value{VERSION}, a collection of classes and routines for scientific plotting. Please report any errors in this manual to @email{mathgl.abalakin@@gmail.org}. - -@include copyright.texi -@end copying - -@titlepage -@title MathGL website -@subtitle for version @value{VERSION} -@author A.A. Balakin (@uref{http://mathgl.sourceforge.net/}) -@page -@vskip 0pt plus 1filll -@insertcopying -@end titlepage - -@contents - -@ifnottex -@node Top -@top MathGL - -This website demonstrates the Mathematical Graphic Library (MathGL), a collection of classes and routines for scientific plotting. It corresponds to release @value{VERSION} of the library. Please report any errors in this manual to @email{mathgl.abalakin@@gmail.org}. More information about MathGL can be found at the project homepage, @uref{http://mathgl.sourceforge.net/}. - -@include copyright.texi - -@end ifnottex +@c ------------------------------------------------------------------ +@chapter Website @menu * Main:: * News:: * Features:: * Pictures:: -* MGL scripts:: +@c * MGL scripts:: * Download:: * Other projects:: @end menu -@ifhtml -@macro external {} -@comment @html -@comment -@comment -@comment
-@html - - -SourceForge.net Logo - - thefreecountry.com: Free Programmers' Resources, Free Webmasters' Resources, Free Security Resources, Free Software - -Support This Project -@end html -@end macro - -@macro fig {plot,text} -@uref{../\text\, @image{../small/\plot\-sm,3cm, , , .png}} -@end macro -@end ifhtml - -@ifnothtml -@macro external {} -@end macro -@macro fig {plot,text} -@uref{http://mathgl.sourceforge.net/\text\, @image{small/\plot\-sm,3cm, , , .png}} -@end macro -@end ifnothtml - -@node Main, News, , Top +@node Main, News, , Website @section MathGL is ... @ifhtml @@ -127,8 +48,10 @@ Generally MathGL is GPL library. However, you can use LGPL license for MathGL co @strong{Latest news} @itemize +@item @emph{24 December 2012.} +New version (v.@value{VERSION}) of @uref{http://sourceforge.net/projects/mathgl, MathGL} is released. There are minor bugfixes and improvements, which denoted @ref{News, here}. @item @emph{13 December 2012.} -New version (v.@value{VERSION}) of @uref{http://sourceforge.net/projects/mathgl, MathGL} is released. There are new plots, advanced color schemes, @uref{../json.html, JavaScript drawing}, and many other improvements in both MathGL core and UDAV, which partially denoted @ref{News, here}. Note, there are @strong{incompatible with v.2.0.* changes} in the arguments of some functions. +New version (v.2.1) of @uref{http://sourceforge.net/projects/mathgl, MathGL} is released. There are new plots, advanced color schemes, @uref{../json.html, JavaScript drawing}, and many other improvements in both MathGL core and UDAV, which partially denoted @ref{News, here}. Note, there are @strong{incompatible with v.2.0.* changes} in the arguments of some functions. @item @emph{I'm sorry for making incompatible changes in v.2.1. It was done for introducing unified interface for all functions. I promise that I will not break API for v.2.* later, i.e. I'll only add new features or bug fixes.} @end itemize @@ -141,12 +64,26 @@ There is detailed @ref{News, news list}. Sourceforge project page @uref{http://s @end ifhtml Javascript interface was developed with support of @url{www.datadvance.net, $DATADVANCE} company. -@external +@external{} -@node News, Features, Main, Top +@node News, Features, Main, Website @section News @itemize +@item +@strong{24 December 2012.} +New version (v.2.1.1) of @uref{http://sourceforge.net/projects/mathgl, MathGL} is released. There are minor bugfixes and improvements: +@itemize @bullet +@item Bugfix for SetRange(val,val) function +@item Exclude export MGL to CPP +@item MGL parsing now produce errors for any wrong list of arguments +@item Add help message to mgl.cgi +@item Improve text rotation at View() +@item Make compatible with GIF library v.5.0. +@item Bugfix for making MPI interface. +@item Bugfix for running in Win32 mode. +@item Update docs and MGL samples +@end itemize @item @strong{13 December 2012.} @@ -155,9 +92,9 @@ New version (v.2.1) of @uref{http://sourceforge.net/projects/mathgl, MathGL} is @item Add class mglDataC for complex data arrays. @item -Add Vect3() plot for drawing vectors on slice of 3d vector field. See @url{../doc_en/doc_en_17.html#Vect3-sample, sample}. +Add Vect3() plot for drawing vectors on slice of 3d vector field. See @ref{Vect3 sample}. @item -Add Table() function for drawing table with data values. See @url{../doc_en/doc_en_14.html#Table-sample, sample}. +Add Table() function for drawing table with data values. See @ref{Table sample}. @item Add ZoomAxis() for zooming/shifting axis range as whole. @item @@ -167,24 +104,24 @@ Add JavaScript code for visualizing JSON data. See @uref{../json.html, samples}. @item Add mgl.cgi tool which return PNG image for CGI request in form of MGL script. @item -Add mglData::Solve() for finding x-value where dat(x)=val. See @url{../doc_en/doc_en_12.html#Solve-sample, sample}. +Add mglData::Solve() for finding x-value where dat(x)=val. See @ref{Solve sample}. @item Add mglData::Clean() for removing rows with duplicate values for given column. @item Add MGL commands 'errbox', 'face' @item -Color can be specified as its RGB[A] values, i.e. like @samp{@{xFFFFFF@}} or @samp{@{xFFFFFFFF@}}. See @url{../doc_en/doc_en_23.html#Line-styles, sample}. +Color can be specified as its RGB[A] values, i.e. like @samp{@{xFFFFFF@}} or @samp{@{xFFFFFFFF@}}. See @ref{Line styles}. @item -Color in color scheme may have position in range [0,1]. Format is @samp{@{CN,pos@}} or @samp{@{xFFFFFF,pos@}}. See @url{../doc_en/doc_en_24.html#Color-scheme, sample}. +Color in color scheme may have position in range [0,1]. Format is @samp{@{CN,pos@}} or @samp{@{xFFFFFF,pos@}}. See @ref{Color scheme}. @item Now pen width for marks is proportional to pen width of line multiplied by size of marks. @item -Now you can use different font-faces in the plot simultaneously. See @url{../doc_en/doc_en_11.html#Text-features, sample}. +Now you can use different font-faces in the plot simultaneously. See @ref{Text features}. @item Now Legend() automatically use several columns if it contain too many legend entries. @item -Add style '-' for legend for drawing them horizontally. See @url{../doc_en/doc_en_11.html#Legend-sample, sample}. +Add style '-' for legend for drawing them horizontally. See @ref{Legend sample}. @item Vectors is drawn now even if only starting or ending points are placed in bounding box. @item @@ -207,7 +144,7 @@ Add functions GetFrame(), DelFrame(), SetFrame(), ShowFrame() for replacing or s CalcXYZ() function now use data from z-buffer for better determining @{x,y,z@} coordinates. @item -Add dialog for data arguments in "New command" dialog of UDAV. See @url{../doc_en/doc_en_71.html#UDAV-dialogs, UDAV dialogs}. +Add dialog for data arguments in "New command" dialog of UDAV. See @ref{UDAV dialogs}. @item Value of arguments are saved while the kind of command is changed in "New command" dialog of UDAV. @item @@ -297,10 +234,10 @@ Different bugfixes. @strong{24 January 2007.} First public release (v.0.8). @end itemize -@external +@external{} -@node Features, Pictures, News, Top +@node Features, Pictures, News, Website @section Features MathGL can plot a wide range of graphics. It includes: @@ -331,177 +268,134 @@ Special class mglData is used for data encapsulation. In addition to a safe crea There is fast evaluation of a textual mathematical expression. It is based on string precompilation to tree-like code at the creation of class instance. At evaluation stage code performs only fast tree-walk and returns the value of the expression. In addition to changing data values, textual formulas are also used for drawing in @emph{arbitrary} curvilinear coordinates. A set of such curvilinear coordinates is limited only by user's imagination rather than a fixed list like: polar, parabolic, spherical, and so on. -@external +@external{} -@node Pictures, MGL scripts, Features, Top +@node Pictures, Download, Features, Website @section Pictures -There are samples for @ref{1D plotting, 1D arrays}, @ref{2D plotting, 2D arrays}, @ref{3D plotting, 3D arrays}, @ref{Vector fields} and some @ref{Extra samples}. +There are samples for @ref{1D data plotting, 1D arrays}, @ref{2D data plotting, 2D arrays}, @ref{3D data plotting, 3D arrays}, @ref{Vector fields plotting} and some @ref{Extra samples}. -@anchor{1D plotting} +@anchor{1D data plotting} @subsection Examples of graphics for 1d arrays -@fig{plot, doc_en/doc_en_13.html#Plot-sample} -@fig{radar,doc_en/doc_en_13.html#Radar-sample} -@fig{step, doc_en/doc_en_13.html#Step-sample} -@fig{tens, doc_en/doc_en_13.html#Tens-sample} +@sfig{plot, Plot sample} +@sfig{radar, Radar sample} +@sfig{step, Step sample} +@sfig{tens, Tens sample} -@fig{area, doc_en/doc_en_13.html#Area-sample} -@fig{region,doc_en/doc_en_13.html#Region-sample} -@fig{stem, doc_en/doc_en_13.html#Stem-sample} -@fig{torus,doc_en/doc_en_13.html#Torus-sample} +@sfig{area, Area sample} +@sfig{region,Region sample} +@sfig{stem, Stem sample} +@sfig{torus,Torus sample} -@fig{bars, doc_en/doc_en_13.html#Bars-sample} -@fig{barh, doc_en/doc_en_13.html#Barh-sample} -@fig{cones,doc_en/doc_en_13.html#Cones-sample} -@fig{chart,doc_en/doc_en_13.html#Chart-sample} +@sfig{bars, Bars sample} +@sfig{barh, Barh sample} +@sfig{cones,Cones sample} +@sfig{chart,Chart sample} -@fig{boxplot,doc_en/doc_en_13.html#BoxPlot-sample} -@fig{candle, doc_en/doc_en_13.html#Candle-sample} -@fig{tube, doc_en/doc_en_13.html#Tube-sample} -@fig{tape, doc_en/doc_en_13.html#Tape-sample} +@sfig{boxplot,BoxPlot sample} +@sfig{candle, Candle sample} +@sfig{tube, Tube sample} +@sfig{tape, Tape sample} -@fig{error,doc_en/doc_en_13.html#Error-sample} -@fig{mark, doc_en/doc_en_13.html#Mark-sample} -@fig{textmark, doc_en/doc_en_13.html#TextMark-sample} -@fig{label,doc_en/doc_en_13.html#Label-sample} +@sfig{error,Error sample} +@sfig{mark, Mark sample} +@sfig{textmark, TextMark sample} +@sfig{label,Label sample} -@anchor{2D plotting} +@anchor{2D data plotting} @subsection Examples of graphics for 2d arrays -@fig{surf, doc_en/doc_en_14.html#Surf-sample} -@fig{surfc,doc_en/doc_en_14.html#SurfC-sample} -@fig{surfa,doc_en/doc_en_14.html#SurfA-sample} -@fig{mesh, doc_en/doc_en_14.html#Mesh-sample} +@sfig{surf, Surf sample} +@sfig{surfc,SurfC sample} +@sfig{surfa,SurfA sample} +@sfig{mesh, Mesh sample} -@fig{fall, doc_en/doc_en_14.html#Fall-sample} -@fig{belt, doc_en/doc_en_14.html#Belt-sample} -@fig{boxs, doc_en/doc_en_14.html#Boxs-sample} -@fig{axial,doc_en/doc_en_14.html#Axial-sample} +@sfig{fall, Fall sample} +@sfig{belt, Belt sample} +@sfig{boxs, Boxs sample} +@sfig{axial,Axial sample} -@fig{dens, doc_en/doc_en_14.html#Dens-sample} -@fig{tile, doc_en/doc_en_14.html#Tile-sample} -@fig{tiles,doc_en/doc_en_14.html#TileS-sample} -@fig{grad, doc_en/doc_en_14.html#Grad-sample} +@sfig{dens, Dens sample} +@sfig{tile, Tile sample} +@sfig{tiles,TileS sample} +@sfig{grad, Grad sample} -@fig{cont, doc_en/doc_en_14.html#Cont-sample} -@fig{contf,doc_en/doc_en_14.html#ContF-sample} -@fig{contd,doc_en/doc_en_14.html#ContD-sample} -@fig{contv,doc_en/doc_en_14.html#ContV-sample} +@sfig{cont, Cont sample} +@sfig{contf,ContF sample} +@sfig{contd,ContD sample} +@sfig{contv,ContV sample} -@anchor{3D plotting} +@anchor{3D data plotting} @subsection Examples of graphics for 3d arrays -@fig{surf3, doc_en/doc_en_15.html#Surf3-sample} -@fig{surf3c,doc_en/doc_en_15.html#Surf3C-sample} -@fig{surf3a,doc_en/doc_en_15.html#Surf3A-sample} -@fig{cloud, doc_en/doc_en_15.html#Cloud-sample} +@sfig{surf3, Surf3 sample} +@sfig{surf3c,Surf3C sample} +@sfig{surf3a,Surf3A sample} +@sfig{cloud, Cloud sample} -@fig{densa, doc_en/doc_en_15.html#Dens3-sample} -@fig{conta, doc_en/doc_en_15.html#Cont3-sample} -@fig{contfa,doc_en/doc_en_15.html#ContF3-sample} -@fig{dots, doc_en/doc_en_15.html#Dots-sample} +@sfig{densa, Dens3 sample} +@sfig{conta, Cont3 sample} +@sfig{contfa,ContF3 sample} +@sfig{dots, Dots sample} -@fig{dens_xyz, doc_en/doc_en_15.html#Dens-projection-sample} -@fig{cont_xyz, doc_en/doc_en_15.html#Cont-projection-sample} -@fig{contf_xyz,doc_en/doc_en_15.html#ContF-projection-sample} -@fig{triplot, doc_en/doc_en_15.html#TriPlot-and-QuadPlot} +@sfig{dens_xyz, Dens projection sample} +@sfig{cont_xyz, Cont projection sample} +@sfig{contf_xyz,ContF projection sample} +@sfig{triplot, TriPlot and QuadPlot} -@anchor{Vector fields} +@anchor{Vector fields plotting} @subsection Examples of graphics for vector fields -@fig{vect, doc_en/doc_en_16.html#Vect-sample} -@fig{vecta,doc_en/doc_en_16.html#Vect3-sample} -@fig{flow, doc_en/doc_en_16.html#Flow-sample} -@fig{pipe, doc_en/doc_en_16.html#Pipe-sample} +@sfig{vect, Vect sample} +@sfig{vecta,Vect3 sample} +@sfig{flow, Flow sample} +@sfig{pipe, Pipe sample} -@fig{traj, doc_en/doc_en_16.html#Traj-sample} -@fig{dew, doc_en/doc_en_16.html#Dew-sample} +@sfig{traj, Traj sample} +@sfig{dew, Dew sample} @anchor{Extra samples} @subsection Examples of additional features -@fig{inplot, doc_en/doc_en_10.html#Subplots} -@fig{axis, doc_en/doc_en_10.html#Axis-and-ticks} -@fig{ticks, doc_en/doc_en_10.html#Axis-and-ticks} -@fig{loglog, doc_en/doc_en_10.html#Axis-and-ticks} - -@fig{curvcoor, doc_en/doc_en_10.html#Curvilinear-coordinates} -@fig{colorbar, doc_en/doc_en_10.html#Colorbars} -@fig{box, doc_en/doc_en_10.html#Bounding-box} -@fig{ternary, doc_en/doc_en_10.html#Ternary-axis} - -@fig{text, doc_en/doc_en_10.html#Text-features} -@fig{legend, doc_en/doc_en_10.html#Legend-sample} -@fig{cut, doc_en/doc_en_10.html#Cutting-sample} -@fig{alpha, doc_en/doc_en_17.html#Transparency-and-lighting} - -@fig{type0, doc_en/doc_en_17.html#Types-of-transparency} -@fig{type1, doc_en/doc_en_17.html#Types-of-transparency} -@fig{type2, doc_en/doc_en_17.html#Types-of-transparency} -@fig{fog, doc_en/doc_en_17.html#Adding-fog} - -@fig{combined, doc_en/doc_en_17.html#g_t_0060_0060Compound_0027_0027-graphics} -@fig{several_light, doc_en/doc_en_17.html#Several-light-sources} -@fig{stereo, doc_en/doc_en_17.html#Stereo-image} -@fig{primitives, doc_en/doc_en_17.html#Using-primitives} - -@fig{stfa, doc_en/doc_en_17.html#STFA-sample} -@fig{dat_diff, doc_en/doc_en_11.html#Change-data} -@fig{dat_extra, doc_en/doc_en_11.html#Change-data} -@fig{map, doc_en/doc_en_17.html#Mapping-visualization} - -@fig{hist, doc_en/doc_en_17.html#Making-histogram} -@fig{fit, doc_en/doc_en_17.html#Nonlinear-fitting-sample} -@fig{pde, doc_en/doc_en_17.html#PDE-solving-hints} -@fig{parser, doc_en/doc_en_17.html#MGL-parser-using} - -@external - -@node MGL scripts, Download, Pictures, Top -@section MGL scripts - -MGL script language is rather simple. Each string is a command. First word of string is the name of command. Other words are command arguments. Command may have up to 1000 arguments (at least for now). Words are separated from each other by space or tabulation symbol. The upper or lower case of words is important, i.e. variables @var{a} and @var{A} are different variables. Symbol @samp{#} starts the comment (all characters after # will be ignored). The exception is situation when @samp{#} is a part of some string. Also options can be specified after symbol @samp{;}. Symbol @samp{:} starts new command (like new line character) if it is not placed inside a string or inside brackets. - -If string contain references to external parameters (substrings @samp{$0}, @samp{$1} ... @samp{$9}) or definitions (substrings @samp{$a}, @samp{$b} ... @samp{$z}) then before execution the values of parameter/definition will be substituted instead of reference. It allows to use the same MGL script for different parameters (file names, paths, condition and so on). - -Argument can be a string, a variable (data arrays) or a number (scalars). -@itemize @bullet -@item -The string is any symbols between ordinary marks @samp{'}. Long strings can be concatenated from several lines by @samp{\} symbol. I.e. the string @samp{'a +'\
' b'} will give string @samp{'a + b'} (here @samp{
} is newline). +@sfig{inplot, Subplots} +@sfig{axis, Axis and ticks} +@sfig{ticks, Axis and ticks} +@sfig{loglog, Axis and ticks} -@item -Usually variable have a name which is arbitrary combination of symbols (except spaces and @samp{'}) started from a letter and with length less than 64. A temporary array can be used as variable: -@itemize @bullet -@item -sub-arrays (like in @code{subdata} command) as command argument. For example, @code{a(1)} or @code{a(1,:)} or @code{a(1,:,:)} is second row, @code{a(:,2)} or @code{a(:,2,:)} is third column, @code{a(:,:,0)} is first slice and so on. Also you can extract a part of array from m-th to n-th element by code @code{a(m:n,:,:)} or just @code{a(m:n)}. +@sfig{curvcoor, Curvilinear coordinates} +@sfig{colorbar, Colorbars} +@sfig{box, Bounding box} +@sfig{ternary, Ternary axis} -@item -any column combinations defined by formulas, like @code{a('n*w^2/exp(t)')} if names for data columns was specified (by @code{idset} command or in the file at string started with @code{##}). +@sfig{text, Text features} +@sfig{legend, Legend sample} +@sfig{cut, Cutting sample} +@sfig{alpha, Transparency and lighting} -@item -any expression (without spaces) of existed variables produce temporary variable. For example, @samp{sqrt(dat(:,5)+1)} will produce temporary variable with data values equal to @code{tmp[i,j] = sqrt(dat[i,5,j]+1)}. +@sfig{type0, Types of transparency} +@sfig{type1, Types of transparency} +@sfig{type2, Types of transparency} +@sfig{fog, Adding fog} -@item -temporary variable of higher dimensions by help of []. For example, @samp{[1,2,3]} will produce a temporary vector of 3 elements @{1, 2, 3@}; @samp{[[11,12],[21,22]]} will produce matrix 2*2 and so on. Here you can join even an arrays of the same dimensions by construction like @samp{[v1,v2,...,vn]}. +@sfig{combined, ``Compound'' graphics} +@sfig{several_light, Several light sources} +@sfig{stereo, Stereo image} +@sfig{primitives, Using primitives} -@item -result of code for making new data inside @{@}. For example, @samp{@{sum dat 'x'@}} produce temporary variable which contain result of summation of @var{dat} along direction 'x'. This is the same array @var{tmp} as produced by command @samp{sum tmp dat 'x'}. You can use nested constructions, like @samp{@{sum @{max dat 'z'@} 'x'@}}. -@end itemize -Temporary variables can not be used as 1st argument for commands which create (return) the data (like @samp{new}, @samp{read}, @samp{hist} and so on). +@sfig{stfa, STFA sample} +@sfig{dat_diff, Change data} +@sfig{dat_extra, Change data} +@sfig{map, Mapping visualization} -@item -Special names @code{nan=#QNAN, pi=3.1415926..., on=1, off=0, :=-1} are treated as number if they were not redefined by user. Variables with suffixes are treated as numbers. Names defined by @code{define} command are treated as number. Also results of formulas with sizes 1x1x1 are treated as number (for example, @samp{pi/dat.nx}). -@end itemize -Before the first using all variables must be defined with the help of commands, like, @code{new}, @code{var}, @code{list}, @code{copy}, @code{read}, @code{hist}, @code{sum} and so on. +@sfig{hist, Making histogram} +@sfig{fit, Nonlinear fitting sample} +@sfig{pde, PDE solving hints} +@sfig{parser, MGL parser using} -Command may have several set of possible arguments (for example, @code{plot ydat} and @code{plot xdat ydat}). All command arguments for a selected set must be specified. However, some arguments can have default values. These argument are printed in [], like @code{text ydat ['stl'='']} or @code{text x y 'txt' ['fnt'='' size=-1]}. At this, the record @code{[arg1 arg2 arg3 ...]} means @code{[arg1 [arg2 [arg3 ...]]]}, i.e. you can omit only tailing arguments if you agree with its default values. For example, @code{text x y 'txt' '' 1} or @code{text x y 'txt' ''} is correct, but @code{text x y 'txt' 1} is incorrect (argument @code{'fnt'} is missed). +@external{} -For more details see @uref{../doc_en/doc_en_64.html#MGL-scripts, MathGL documentation} - -@external - -@node Download, Other projects, MGL scripts, Top +@node Download, Other projects, Pictures, Website @section Download @strong{Stable version (v.@value{VERSION})} @@ -517,37 +411,15 @@ You may download current version of MathGL for following configurations: @item @uref{http://downloads.sourceforge.net/mathgl/mathgl-@value{VERSION}.LGPL-win64.7z,Win64 LGPL} binaries for MSVS 2010 (no GSL and HDF5 support) @item -@uref{http://downloads.sourceforge.net/mathgl/mathgl-@value{VERSION}-1.DevPack,DevPak} package for Dev-C++ or Code::Blocks (GPL version) -@item @uref{http://downloads.sourceforge.net/mathgl/mathgl-@value{VERSION}.eng.pdf,PDF} documentation in English @item -@uref{http://downloads.sourceforge.net/mathgl/mgl_scripts-@value{VERSION}.7z,utilities} with all required DLL files (build for i686) +@uref{http://downloads.sourceforge.net/mathgl/mgl_scripts-@value{VERSION}.7z, UDAV and utilities} with all required DLL files (build for i686) @c HTML documentation in English @c HTML documentation in Russian @c @item @c @uref{http://downloads.sourceforge.net/mathgl/mathgl_slides-1.9.pdf,PDF} slideshow of main features @end itemize -@strong{Previous version (v.1.11.2)} - -You may download current version of MathGL for following configurations: -@itemize @bullet -@item -@uref{http://downloads.sourceforge.net/mathgl/mathgl-1.11.2.tar.gz,source} file with autoconf/automake script. -@item -@uref{http://downloads.sourceforge.net/mathgl/mathgl-1.11.2-mingw.i686.zip,Win32 GPL} binaries for MinGW (build for i686) -@item -@uref{http://downloads.sourceforge.net/mathgl/mathgl-1.11.1.1.LGPL-mingw.i686.zip,Win32 LGPL} binaries for MinGW (build for i686, no GSL and HDF5 support) -@item -@uref{http://downloads.sourceforge.net/mathgl/mathgl-1.11.2-1.DevPack,DevPak} package for Dev-C++ or Code::Blocks (GPL version) -@item -@uref{http://downloads.sourceforge.net/mathgl/mathgl-1.11.2.eng.pdf,PDF} documentation in English -@c HTML documentation in English -@c HTML documentation in Russian -@item -@uref{http://downloads.sourceforge.net/mathgl/mathgl_slides-1.9.pdf,PDF} slideshow of main features -@end itemize - @strong{Font files} There are a set of @uref{http://sourceforge.net/project/showfiles.php?group_id=152187&package_id=267177,font files} for MathGL with following typefaces. Note, that the set of glyphs can be less than in default font. As result not all TeX symbols can be displayed. @@ -574,9 +446,9 @@ There are a set of @uref{http://sourceforge.net/project/showfiles.php?group_id=1 @uref{http://downloads.sourceforge.net/mathgl/termes_font.tgz,Termes font} -- the @uref{http://www.gust.org.pl/projects/e-foundry/tex-gyre/index_html,TeX Gyre} serif fonts is based on the Nimbus Roman No9 L (like Times). @end itemize -@external +@external{} -@node Other projects, , Download, Top +@node Other projects, , Download, Website @section Other projects Except scientific (non public) projects I also have some general interest projects: @@ -609,6 +481,4 @@ Finally, few links to free software and libraries: @uref{http://loll.sourceforge.net/,LLoL} is project collecting, organising, classifying, and maintaining important URLs about Linux and the Open Source movement for all levels of Linux users. The LoLL project now has 4000+ links which are updated usually on a daily basis. @end itemize -@external - -@bye +@external{} diff --git a/texinfo/web_fr.texi b/texinfo/web_fr.texi index 74e9fc7..6ee71eb 100644 --- a/texinfo/web_fr.texi +++ b/texinfo/web_fr.texi @@ -1,6 +1,6 @@ \input texinfo @setfilename mgl_web_en.info -@set VERSION 2.1 +@set VERSION 2.1.1 @settitle MathGL @value{VERSION} @syncodeindex pg cp @comment %**end of header @@ -141,7 +141,7 @@ There is detailed @ref{News, news list}. Sourceforge project page @uref{http://s @end ifhtml Javascript interface was developed with support of @url{www.datadvance.net, $DATADVANCE} company. -@external +@external{} @node News, Features, Main, Top @section News @@ -297,7 +297,7 @@ Different bugfixes. @strong{24 January 2007.} First public release (v.0.8). @end itemize -@external +@external{} @node Features, Pictures, News, Top @@ -331,7 +331,7 @@ Special class mglData is used for data encapsulation. In addition to a safe crea There is fast evaluation of a textual mathematical expression. It is based on string precompilation to tree-like code at the creation of class instance. At evaluation stage code performs only fast tree-walk and returns the value of the expression. In addition to changing data values, textual formulas are also used for drawing in @emph{arbitrary} curvilinear coordinates. A set of such curvilinear coordinates is limited only by user's imagination rather than a fixed list like: polar, parabolic, spherical, and so on. -@external +@external{} @node Pictures, MGL scripts, Features, Top @section Pictures @@ -341,122 +341,122 @@ There are samples for @ref{1D plotting, 1D arrays}, @ref{2D plotting, 2D arrays} @anchor{1D plotting} @subsection Examples of graphics for 1d arrays -@fig{plot, doc_en/doc_en_13.html#Plot-sample} -@fig{radar,doc_en/doc_en_13.html#Radar-sample} -@fig{step, doc_en/doc_en_13.html#Step-sample} -@fig{tens, doc_en/doc_en_13.html#Tens-sample} +@fig{plot, doc_en/doc_en_14.html#Plot-sample} +@fig{radar,doc_en/doc_en_14.html#Radar-sample} +@fig{step, doc_en/doc_en_14.html#Step-sample} +@fig{tens, doc_en/doc_en_14.html#Tens-sample} -@fig{area, doc_en/doc_en_13.html#Area-sample} -@fig{region,doc_en/doc_en_13.html#Region-sample} -@fig{stem, doc_en/doc_en_13.html#Stem-sample} -@fig{torus,doc_en/doc_en_13.html#Torus-sample} +@fig{area, doc_en/doc_en_14.html#Area-sample} +@fig{region,doc_en/doc_en_14.html#Region-sample} +@fig{stem, doc_en/doc_en_14.html#Stem-sample} +@fig{torus,doc_en/doc_en_14.html#Torus-sample} -@fig{bars, doc_en/doc_en_13.html#Bars-sample} -@fig{barh, doc_en/doc_en_13.html#Barh-sample} -@fig{cones,doc_en/doc_en_13.html#Cones-sample} -@fig{chart,doc_en/doc_en_13.html#Chart-sample} +@fig{bars, doc_en/doc_en_14.html#Bars-sample} +@fig{barh, doc_en/doc_en_14.html#Barh-sample} +@fig{cones,doc_en/doc_en_14.html#Cones-sample} +@fig{chart,doc_en/doc_en_14.html#Chart-sample} -@fig{boxplot,doc_en/doc_en_13.html#BoxPlot-sample} -@fig{candle, doc_en/doc_en_13.html#Candle-sample} -@fig{tube, doc_en/doc_en_13.html#Tube-sample} -@fig{tape, doc_en/doc_en_13.html#Tape-sample} +@fig{boxplot,doc_en/doc_en_14.html#BoxPlot-sample} +@fig{candle, doc_en/doc_en_14.html#Candle-sample} +@fig{tube, doc_en/doc_en_14.html#Tube-sample} +@fig{tape, doc_en/doc_en_14.html#Tape-sample} -@fig{error,doc_en/doc_en_13.html#Error-sample} -@fig{mark, doc_en/doc_en_13.html#Mark-sample} -@fig{textmark, doc_en/doc_en_13.html#TextMark-sample} -@fig{label,doc_en/doc_en_13.html#Label-sample} +@fig{error,doc_en/doc_en_14.html#Error-sample} +@fig{mark, doc_en/doc_en_14.html#Mark-sample} +@fig{textmark, doc_en/doc_en_14.html#TextMark-sample} +@fig{label,doc_en/doc_en_14.html#Label-sample} @anchor{2D plotting} @subsection Examples of graphics for 2d arrays -@fig{surf, doc_en/doc_en_14.html#Surf-sample} -@fig{surfc,doc_en/doc_en_14.html#SurfC-sample} -@fig{surfa,doc_en/doc_en_14.html#SurfA-sample} -@fig{mesh, doc_en/doc_en_14.html#Mesh-sample} +@fig{surf, doc_en/doc_en_15.html#Surf-sample} +@fig{surfc,doc_en/doc_en_15.html#SurfC-sample} +@fig{surfa,doc_en/doc_en_15.html#SurfA-sample} +@fig{mesh, doc_en/doc_en_15.html#Mesh-sample} -@fig{fall, doc_en/doc_en_14.html#Fall-sample} -@fig{belt, doc_en/doc_en_14.html#Belt-sample} -@fig{boxs, doc_en/doc_en_14.html#Boxs-sample} -@fig{axial,doc_en/doc_en_14.html#Axial-sample} +@fig{fall, doc_en/doc_en_15.html#Fall-sample} +@fig{belt, doc_en/doc_en_15.html#Belt-sample} +@fig{boxs, doc_en/doc_en_15.html#Boxs-sample} +@fig{axial,doc_en/doc_en_15.html#Axial-sample} -@fig{dens, doc_en/doc_en_14.html#Dens-sample} -@fig{tile, doc_en/doc_en_14.html#Tile-sample} -@fig{tiles,doc_en/doc_en_14.html#TileS-sample} -@fig{grad, doc_en/doc_en_14.html#Grad-sample} +@fig{dens, doc_en/doc_en_15.html#Dens-sample} +@fig{tile, doc_en/doc_en_15.html#Tile-sample} +@fig{tiles,doc_en/doc_en_15.html#TileS-sample} +@fig{grad, doc_en/doc_en_15.html#Grad-sample} -@fig{cont, doc_en/doc_en_14.html#Cont-sample} -@fig{contf,doc_en/doc_en_14.html#ContF-sample} -@fig{contd,doc_en/doc_en_14.html#ContD-sample} -@fig{contv,doc_en/doc_en_14.html#ContV-sample} +@fig{cont, doc_en/doc_en_15.html#Cont-sample} +@fig{contf,doc_en/doc_en_15.html#ContF-sample} +@fig{contd,doc_en/doc_en_15.html#ContD-sample} +@fig{contv,doc_en/doc_en_15.html#ContV-sample} @anchor{3D plotting} @subsection Examples of graphics for 3d arrays -@fig{surf3, doc_en/doc_en_15.html#Surf3-sample} -@fig{surf3c,doc_en/doc_en_15.html#Surf3C-sample} -@fig{surf3a,doc_en/doc_en_15.html#Surf3A-sample} -@fig{cloud, doc_en/doc_en_15.html#Cloud-sample} +@fig{surf3, doc_en/doc_en_16.html#Surf3-sample} +@fig{surf3c,doc_en/doc_en_16.html#Surf3C-sample} +@fig{surf3a,doc_en/doc_en_16.html#Surf3A-sample} +@fig{cloud, doc_en/doc_en_16.html#Cloud-sample} -@fig{densa, doc_en/doc_en_15.html#Dens3-sample} -@fig{conta, doc_en/doc_en_15.html#Cont3-sample} -@fig{contfa,doc_en/doc_en_15.html#ContF3-sample} -@fig{dots, doc_en/doc_en_15.html#Dots-sample} +@fig{densa, doc_en/doc_en_16.html#Dens3-sample} +@fig{conta, doc_en/doc_en_16.html#Cont3-sample} +@fig{contfa,doc_en/doc_en_16.html#ContF3-sample} +@fig{dots, doc_en/doc_en_16.html#Dots-sample} -@fig{dens_xyz, doc_en/doc_en_15.html#Dens-projection-sample} -@fig{cont_xyz, doc_en/doc_en_15.html#Cont-projection-sample} -@fig{contf_xyz,doc_en/doc_en_15.html#ContF-projection-sample} -@fig{triplot, doc_en/doc_en_15.html#TriPlot-and-QuadPlot} +@fig{dens_xyz, doc_en/doc_en_16.html#Dens-projection-sample} +@fig{cont_xyz, doc_en/doc_en_16.html#Cont-projection-sample} +@fig{contf_xyz,doc_en/doc_en_16.html#ContF-projection-sample} +@fig{triplot, doc_en/doc_en_16.html#TriPlot-and-QuadPlot} @anchor{Vector fields} @subsection Examples of graphics for vector fields -@fig{vect, doc_en/doc_en_16.html#Vect-sample} -@fig{vecta,doc_en/doc_en_16.html#Vect3-sample} -@fig{flow, doc_en/doc_en_16.html#Flow-sample} -@fig{pipe, doc_en/doc_en_16.html#Pipe-sample} +@fig{vect, doc_en/doc_en_17.html#Vect-sample} +@fig{vecta,doc_en/doc_en_17.html#Vect3-sample} +@fig{flow, doc_en/doc_en_17.html#Flow-sample} +@fig{pipe, doc_en/doc_en_17.html#Pipe-sample} -@fig{traj, doc_en/doc_en_16.html#Traj-sample} -@fig{dew, doc_en/doc_en_16.html#Dew-sample} +@fig{traj, doc_en/doc_en_17.html#Traj-sample} +@fig{dew, doc_en/doc_en_17.html#Dew-sample} @anchor{Extra samples} @subsection Examples of additional features -@fig{inplot, doc_en/doc_en_10.html#Subplots} -@fig{axis, doc_en/doc_en_10.html#Axis-and-ticks} -@fig{ticks, doc_en/doc_en_10.html#Axis-and-ticks} -@fig{loglog, doc_en/doc_en_10.html#Axis-and-ticks} +@fig{inplot, doc_en/doc_en_11.html#Subplots} +@fig{axis, doc_en/doc_en_11.html#Axis-and-ticks} +@fig{ticks, doc_en/doc_en_11.html#Axis-and-ticks} +@fig{loglog, doc_en/doc_en_11.html#Axis-and-ticks} -@fig{curvcoor, doc_en/doc_en_10.html#Curvilinear-coordinates} -@fig{colorbar, doc_en/doc_en_10.html#Colorbars} -@fig{box, doc_en/doc_en_10.html#Bounding-box} -@fig{ternary, doc_en/doc_en_10.html#Ternary-axis} +@fig{curvcoor, doc_en/doc_en_11.html#Curvilinear-coordinates} +@fig{colorbar, doc_en/doc_en_11.html#Colorbars} +@fig{box, doc_en/doc_en_11.html#Bounding-box} +@fig{ternary, doc_en/doc_en_11.html#Ternary-axis} -@fig{text, doc_en/doc_en_10.html#Text-features} -@fig{legend, doc_en/doc_en_10.html#Legend-sample} -@fig{cut, doc_en/doc_en_10.html#Cutting-sample} -@fig{alpha, doc_en/doc_en_17.html#Transparency-and-lighting} +@fig{text, doc_en/doc_en_11.html#Text-features} +@fig{legend, doc_en/doc_en_11.html#Legend-sample} +@fig{cut, doc_en/doc_en_11.html#Cutting-sample} +@fig{alpha, doc_en/doc_en_18.html#Transparency-and-lighting} -@fig{type0, doc_en/doc_en_17.html#Types-of-transparency} -@fig{type1, doc_en/doc_en_17.html#Types-of-transparency} -@fig{type2, doc_en/doc_en_17.html#Types-of-transparency} -@fig{fog, doc_en/doc_en_17.html#Adding-fog} +@fig{type0, doc_en/doc_en_18.html#Types-of-transparency} +@fig{type1, doc_en/doc_en_18.html#Types-of-transparency} +@fig{type2, doc_en/doc_en_18.html#Types-of-transparency} +@fig{fog, doc_en/doc_en_18.html#Adding-fog} -@fig{combined, doc_en/doc_en_17.html#g_t_0060_0060Compound_0027_0027-graphics} -@fig{several_light, doc_en/doc_en_17.html#Several-light-sources} -@fig{stereo, doc_en/doc_en_17.html#Stereo-image} -@fig{primitives, doc_en/doc_en_17.html#Using-primitives} +@fig{combined, doc_en/doc_en_18.html#g_t_0060_0060Compound_0027_0027-graphics} +@fig{several_light, doc_en/doc_en_18.html#Several-light-sources} +@fig{stereo, doc_en/doc_en_18.html#Stereo-image} +@fig{primitives, doc_en/doc_en_18.html#Using-primitives} -@fig{stfa, doc_en/doc_en_17.html#STFA-sample} -@fig{dat_diff, doc_en/doc_en_11.html#Change-data} -@fig{dat_extra, doc_en/doc_en_11.html#Change-data} -@fig{map, doc_en/doc_en_17.html#Mapping-visualization} +@fig{stfa, doc_en/doc_en_18.html#STFA-sample} +@fig{dat_diff, doc_en/doc_en_12.html#Change-data} +@fig{dat_extra, doc_en/doc_en_12.html#Change-data} +@fig{map, doc_en/doc_en_18.html#Mapping-visualization} -@fig{hist, doc_en/doc_en_17.html#Making-histogram} -@fig{fit, doc_en/doc_en_17.html#Nonlinear-fitting-sample} -@fig{pde, doc_en/doc_en_17.html#PDE-solving-hints} -@fig{parser, doc_en/doc_en_17.html#MGL-parser-using} +@fig{hist, doc_en/doc_en_18.html#Making-histogram} +@fig{fit, doc_en/doc_en_18.html#Nonlinear-fitting-sample} +@fig{pde, doc_en/doc_en_18.html#PDE-solving-hints} +@fig{parser, doc_en/doc_en_18.html#MGL-parser-using} -@external +@external{} @node MGL scripts, Download, Pictures, Top @section MGL scripts @@ -499,7 +499,7 @@ Command may have several set of possible arguments (for example, @code{plot ydat For more details see @uref{../doc_en/doc_en_64.html#MGL-scripts, MathGL documentation} -@external +@external{} @node Download, Other projects, MGL scripts, Top @section Download @@ -574,7 +574,7 @@ There are a set of @uref{http://sourceforge.net/project/showfiles.php?group_id=1 @uref{http://downloads.sourceforge.net/mathgl/termes_font.tgz,Termes font} -- the @uref{http://www.gust.org.pl/projects/e-foundry/tex-gyre/index_html,TeX Gyre} serif fonts is based on the Nimbus Roman No9 L (like Times). @end itemize -@external +@external{} @node Other projects, , Download, Top @section Other projects @@ -609,6 +609,6 @@ Finally, few links to free software and libraries: @uref{http://loll.sourceforge.net/,LLoL} is project collecting, organising, classifying, and maintaining important URLs about Linux and the Open Source movement for all levels of Linux users. The LoLL project now has 4000+ links which are updated usually on a daily basis. @end itemize -@external +@external{} @bye diff --git a/texinfo/web_ru.texi b/texinfo/web_ru.texi index 74e9fc7..c694eba 100644 --- a/texinfo/web_ru.texi +++ b/texinfo/web_ru.texi @@ -1,96 +1,17 @@ -\input texinfo -@setfilename mgl_web_en.info -@set VERSION 2.1 -@settitle MathGL @value{VERSION} -@syncodeindex pg cp -@comment %**end of header - -@copying -This website demonstrates the Mathematical Graphic Library (MathGL) version @value{VERSION}, a collection of classes and routines for scientific plotting. Please report any errors in this manual to @email{mathgl.abalakin@@gmail.org}. - -@include copyright.texi -@end copying - -@titlepage -@title MathGL website -@subtitle for version @value{VERSION} -@author A.A. Balakin (@uref{http://mathgl.sourceforge.net/}) -@page -@vskip 0pt plus 1filll -@insertcopying -@end titlepage - -@contents - -@ifnottex -@node Top -@top MathGL - -This website demonstrates the Mathematical Graphic Library (MathGL), a collection of classes and routines for scientific plotting. It corresponds to release @value{VERSION} of the library. Please report any errors in this manual to @email{mathgl.abalakin@@gmail.org}. More information about MathGL can be found at the project homepage, @uref{http://mathgl.sourceforge.net/}. - -@include copyright.texi - -@end ifnottex +@c ------------------------------------------------------------------ +@chapter Website @menu * Main:: * News:: * Features:: * Pictures:: -* MGL scripts:: +@c * MGL scripts:: * Download:: * Other projects:: @end menu -@ifhtml -@macro external {} -@comment @html -@comment -@comment -@comment
-@html - - -SourceForge.net Logo - - thefreecountry.com: Free Programmers' Resources, Free Webmasters' Resources, Free Security Resources, Free Software - -Support This Project -@end html -@end macro - -@macro fig {plot,text} -@uref{../\text\, @image{../small/\plot\-sm,3cm, , , .png}} -@end macro -@end ifhtml - -@ifnothtml -@macro external {} -@end macro -@macro fig {plot,text} -@uref{http://mathgl.sourceforge.net/\text\, @image{small/\plot\-sm,3cm, , , .png}} -@end macro -@end ifnothtml - -@node Main, News, , Top +@node Main, News, , Website @section MathGL is ... @ifhtml @@ -127,8 +48,10 @@ Generally MathGL is GPL library. However, you can use LGPL license for MathGL co @strong{Latest news} @itemize +@item @emph{24 December 2012.} +New version (v.@value{VERSION}) of @uref{http://sourceforge.net/projects/mathgl, MathGL} is released. There are minor bugfixes and improvements, which denoted @ref{News, here}. @item @emph{13 December 2012.} -New version (v.@value{VERSION}) of @uref{http://sourceforge.net/projects/mathgl, MathGL} is released. There are new plots, advanced color schemes, @uref{../json.html, JavaScript drawing}, and many other improvements in both MathGL core and UDAV, which partially denoted @ref{News, here}. Note, there are @strong{incompatible with v.2.0.* changes} in the arguments of some functions. +New version (v.2.1) of @uref{http://sourceforge.net/projects/mathgl, MathGL} is released. There are new plots, advanced color schemes, @uref{../json.html, JavaScript drawing}, and many other improvements in both MathGL core and UDAV, which partially denoted @ref{News, here}. Note, there are @strong{incompatible with v.2.0.* changes} in the arguments of some functions. @item @emph{I'm sorry for making incompatible changes in v.2.1. It was done for introducing unified interface for all functions. I promise that I will not break API for v.2.* later, i.e. I'll only add new features or bug fixes.} @end itemize @@ -141,13 +64,29 @@ There is detailed @ref{News, news list}. Sourceforge project page @uref{http://s @end ifhtml Javascript interface was developed with support of @url{www.datadvance.net, $DATADVANCE} company. -@external +@external{} -@node News, Features, Main, Top +@node News, Features, Main, Website @section News @itemize +@itemize +@item +@strong{24 December 2012.} +New version (v.2.1.1) of @uref{http://sourceforge.net/projects/mathgl, MathGL} is released. There are minor bugfixes and improvements: +@itemize @bullet +@item Bugfix for SetRange(val,val) function +@item Exclude export MGL to CPP +@item MGL parsing now produce errors for any wrong list of arguments +@item Add help message to mgl.cgi +@item Improve text rotation at View() +@item Make compatible with GIF library v.5.0. +@item Bugfix for making MPI interface. +@item Bugfix for running in Win32 mode. +@item Update docs and MGL samples +@end itemize + @item @strong{13 December 2012.} New version (v.2.1) of @uref{http://sourceforge.net/projects/mathgl, MathGL} is released. There are speeding up and many improvements and bugfixes: @@ -155,9 +94,9 @@ New version (v.2.1) of @uref{http://sourceforge.net/projects/mathgl, MathGL} is @item Add class mglDataC for complex data arrays. @item -Add Vect3() plot for drawing vectors on slice of 3d vector field. See @url{../doc_en/doc_en_17.html#Vect3-sample, sample}. +Add Vect3() plot for drawing vectors on slice of 3d vector field. See @ref{Vect3 sample}. @item -Add Table() function for drawing table with data values. See @url{../doc_en/doc_en_14.html#Table-sample, sample}. +Add Table() function for drawing table with data values. See @ref{Table sample}. @item Add ZoomAxis() for zooming/shifting axis range as whole. @item @@ -167,24 +106,24 @@ Add JavaScript code for visualizing JSON data. See @uref{../json.html, samples}. @item Add mgl.cgi tool which return PNG image for CGI request in form of MGL script. @item -Add mglData::Solve() for finding x-value where dat(x)=val. See @url{../doc_en/doc_en_12.html#Solve-sample, sample}. +Add mglData::Solve() for finding x-value where dat(x)=val. See @ref{Solve sample}. @item Add mglData::Clean() for removing rows with duplicate values for given column. @item Add MGL commands 'errbox', 'face' @item -Color can be specified as its RGB[A] values, i.e. like @samp{@{xFFFFFF@}} or @samp{@{xFFFFFFFF@}}. See @url{../doc_en/doc_en_23.html#Line-styles, sample}. +Color can be specified as its RGB[A] values, i.e. like @samp{@{xFFFFFF@}} or @samp{@{xFFFFFFFF@}}. See @ref{Line styles}. @item -Color in color scheme may have position in range [0,1]. Format is @samp{@{CN,pos@}} or @samp{@{xFFFFFF,pos@}}. See @url{../doc_en/doc_en_24.html#Color-scheme, sample}. +Color in color scheme may have position in range [0,1]. Format is @samp{@{CN,pos@}} or @samp{@{xFFFFFF,pos@}}. See @ref{Color scheme}. @item Now pen width for marks is proportional to pen width of line multiplied by size of marks. @item -Now you can use different font-faces in the plot simultaneously. See @url{../doc_en/doc_en_11.html#Text-features, sample}. +Now you can use different font-faces in the plot simultaneously. See @ref{Text features}. @item Now Legend() automatically use several columns if it contain too many legend entries. @item -Add style '-' for legend for drawing them horizontally. See @url{../doc_en/doc_en_11.html#Legend-sample, sample}. +Add style '-' for legend for drawing them horizontally. See @ref{Legend sample}. @item Vectors is drawn now even if only starting or ending points are placed in bounding box. @item @@ -207,7 +146,7 @@ Add functions GetFrame(), DelFrame(), SetFrame(), ShowFrame() for replacing or s CalcXYZ() function now use data from z-buffer for better determining @{x,y,z@} coordinates. @item -Add dialog for data arguments in "New command" dialog of UDAV. See @url{../doc_en/doc_en_71.html#UDAV-dialogs, UDAV dialogs}. +Add dialog for data arguments in "New command" dialog of UDAV. See @ref{UDAV dialogs}. @item Value of arguments are saved while the kind of command is changed in "New command" dialog of UDAV. @item @@ -297,10 +236,10 @@ Different bugfixes. @strong{24 January 2007.} First public release (v.0.8). @end itemize -@external +@external{} -@node Features, Pictures, News, Top +@node Features, Pictures, News, Website @section Features MathGL can plot a wide range of graphics. It includes: @@ -331,177 +270,134 @@ Special class mglData is used for data encapsulation. In addition to a safe crea There is fast evaluation of a textual mathematical expression. It is based on string precompilation to tree-like code at the creation of class instance. At evaluation stage code performs only fast tree-walk and returns the value of the expression. In addition to changing data values, textual formulas are also used for drawing in @emph{arbitrary} curvilinear coordinates. A set of such curvilinear coordinates is limited only by user's imagination rather than a fixed list like: polar, parabolic, spherical, and so on. -@external +@external{} -@node Pictures, MGL scripts, Features, Top +@node Pictures, Download, Features, Website @section Pictures -There are samples for @ref{1D plotting, 1D arrays}, @ref{2D plotting, 2D arrays}, @ref{3D plotting, 3D arrays}, @ref{Vector fields} and some @ref{Extra samples}. +There are samples for @ref{1D data plotting, 1D arrays}, @ref{2D data plotting, 2D arrays}, @ref{3D data plotting, 3D arrays}, @ref{Vector fields plotting} and some @ref{Extra samples}. -@anchor{1D plotting} +@anchor{1D data plotting} @subsection Examples of graphics for 1d arrays -@fig{plot, doc_en/doc_en_13.html#Plot-sample} -@fig{radar,doc_en/doc_en_13.html#Radar-sample} -@fig{step, doc_en/doc_en_13.html#Step-sample} -@fig{tens, doc_en/doc_en_13.html#Tens-sample} +@sfig{plot, Plot sample} +@sfig{radar, Radar sample} +@sfig{step, Step sample} +@sfig{tens, Tens sample} -@fig{area, doc_en/doc_en_13.html#Area-sample} -@fig{region,doc_en/doc_en_13.html#Region-sample} -@fig{stem, doc_en/doc_en_13.html#Stem-sample} -@fig{torus,doc_en/doc_en_13.html#Torus-sample} +@sfig{area, Area sample} +@sfig{region,Region sample} +@sfig{stem, Stem sample} +@sfig{torus,Torus sample} -@fig{bars, doc_en/doc_en_13.html#Bars-sample} -@fig{barh, doc_en/doc_en_13.html#Barh-sample} -@fig{cones,doc_en/doc_en_13.html#Cones-sample} -@fig{chart,doc_en/doc_en_13.html#Chart-sample} +@sfig{bars, Bars sample} +@sfig{barh, Barh sample} +@sfig{cones,Cones sample} +@sfig{chart,Chart sample} -@fig{boxplot,doc_en/doc_en_13.html#BoxPlot-sample} -@fig{candle, doc_en/doc_en_13.html#Candle-sample} -@fig{tube, doc_en/doc_en_13.html#Tube-sample} -@fig{tape, doc_en/doc_en_13.html#Tape-sample} +@sfig{boxplot,BoxPlot sample} +@sfig{candle, Candle sample} +@sfig{tube, Tube sample} +@sfig{tape, Tape sample} -@fig{error,doc_en/doc_en_13.html#Error-sample} -@fig{mark, doc_en/doc_en_13.html#Mark-sample} -@fig{textmark, doc_en/doc_en_13.html#TextMark-sample} -@fig{label,doc_en/doc_en_13.html#Label-sample} +@sfig{error,Error sample} +@sfig{mark, Mark sample} +@sfig{textmark, TextMark sample} +@sfig{label,Label sample} -@anchor{2D plotting} +@anchor{2D data plotting} @subsection Examples of graphics for 2d arrays -@fig{surf, doc_en/doc_en_14.html#Surf-sample} -@fig{surfc,doc_en/doc_en_14.html#SurfC-sample} -@fig{surfa,doc_en/doc_en_14.html#SurfA-sample} -@fig{mesh, doc_en/doc_en_14.html#Mesh-sample} +@sfig{surf, Surf sample} +@sfig{surfc,SurfC sample} +@sfig{surfa,SurfA sample} +@sfig{mesh, Mesh sample} -@fig{fall, doc_en/doc_en_14.html#Fall-sample} -@fig{belt, doc_en/doc_en_14.html#Belt-sample} -@fig{boxs, doc_en/doc_en_14.html#Boxs-sample} -@fig{axial,doc_en/doc_en_14.html#Axial-sample} +@sfig{fall, Fall sample} +@sfig{belt, Belt sample} +@sfig{boxs, Boxs sample} +@sfig{axial,Axial sample} -@fig{dens, doc_en/doc_en_14.html#Dens-sample} -@fig{tile, doc_en/doc_en_14.html#Tile-sample} -@fig{tiles,doc_en/doc_en_14.html#TileS-sample} -@fig{grad, doc_en/doc_en_14.html#Grad-sample} +@sfig{dens, Dens sample} +@sfig{tile, Tile sample} +@sfig{tiles,TileS sample} +@sfig{grad, Grad sample} -@fig{cont, doc_en/doc_en_14.html#Cont-sample} -@fig{contf,doc_en/doc_en_14.html#ContF-sample} -@fig{contd,doc_en/doc_en_14.html#ContD-sample} -@fig{contv,doc_en/doc_en_14.html#ContV-sample} +@sfig{cont, Cont sample} +@sfig{contf,ContF sample} +@sfig{contd,ContD sample} +@sfig{contv,ContV sample} -@anchor{3D plotting} +@anchor{3D data plotting} @subsection Examples of graphics for 3d arrays -@fig{surf3, doc_en/doc_en_15.html#Surf3-sample} -@fig{surf3c,doc_en/doc_en_15.html#Surf3C-sample} -@fig{surf3a,doc_en/doc_en_15.html#Surf3A-sample} -@fig{cloud, doc_en/doc_en_15.html#Cloud-sample} +@sfig{surf3, Surf3 sample} +@sfig{surf3c,Surf3C sample} +@sfig{surf3a,Surf3A sample} +@sfig{cloud, Cloud sample} -@fig{densa, doc_en/doc_en_15.html#Dens3-sample} -@fig{conta, doc_en/doc_en_15.html#Cont3-sample} -@fig{contfa,doc_en/doc_en_15.html#ContF3-sample} -@fig{dots, doc_en/doc_en_15.html#Dots-sample} +@sfig{densa, Dens3 sample} +@sfig{conta, Cont3 sample} +@sfig{contfa,ContF3 sample} +@sfig{dots, Dots sample} -@fig{dens_xyz, doc_en/doc_en_15.html#Dens-projection-sample} -@fig{cont_xyz, doc_en/doc_en_15.html#Cont-projection-sample} -@fig{contf_xyz,doc_en/doc_en_15.html#ContF-projection-sample} -@fig{triplot, doc_en/doc_en_15.html#TriPlot-and-QuadPlot} +@sfig{dens_xyz, Dens projection sample} +@sfig{cont_xyz, Cont projection sample} +@sfig{contf_xyz,ContF projection sample} +@sfig{triplot, TriPlot and QuadPlot} -@anchor{Vector fields} +@anchor{Vector fields plotting} @subsection Examples of graphics for vector fields -@fig{vect, doc_en/doc_en_16.html#Vect-sample} -@fig{vecta,doc_en/doc_en_16.html#Vect3-sample} -@fig{flow, doc_en/doc_en_16.html#Flow-sample} -@fig{pipe, doc_en/doc_en_16.html#Pipe-sample} +@sfig{vect, Vect sample} +@sfig{vecta,Vect3 sample} +@sfig{flow, Flow sample} +@sfig{pipe, Pipe sample} -@fig{traj, doc_en/doc_en_16.html#Traj-sample} -@fig{dew, doc_en/doc_en_16.html#Dew-sample} +@sfig{traj, Traj sample} +@sfig{dew, Dew sample} @anchor{Extra samples} @subsection Examples of additional features -@fig{inplot, doc_en/doc_en_10.html#Subplots} -@fig{axis, doc_en/doc_en_10.html#Axis-and-ticks} -@fig{ticks, doc_en/doc_en_10.html#Axis-and-ticks} -@fig{loglog, doc_en/doc_en_10.html#Axis-and-ticks} - -@fig{curvcoor, doc_en/doc_en_10.html#Curvilinear-coordinates} -@fig{colorbar, doc_en/doc_en_10.html#Colorbars} -@fig{box, doc_en/doc_en_10.html#Bounding-box} -@fig{ternary, doc_en/doc_en_10.html#Ternary-axis} - -@fig{text, doc_en/doc_en_10.html#Text-features} -@fig{legend, doc_en/doc_en_10.html#Legend-sample} -@fig{cut, doc_en/doc_en_10.html#Cutting-sample} -@fig{alpha, doc_en/doc_en_17.html#Transparency-and-lighting} - -@fig{type0, doc_en/doc_en_17.html#Types-of-transparency} -@fig{type1, doc_en/doc_en_17.html#Types-of-transparency} -@fig{type2, doc_en/doc_en_17.html#Types-of-transparency} -@fig{fog, doc_en/doc_en_17.html#Adding-fog} - -@fig{combined, doc_en/doc_en_17.html#g_t_0060_0060Compound_0027_0027-graphics} -@fig{several_light, doc_en/doc_en_17.html#Several-light-sources} -@fig{stereo, doc_en/doc_en_17.html#Stereo-image} -@fig{primitives, doc_en/doc_en_17.html#Using-primitives} - -@fig{stfa, doc_en/doc_en_17.html#STFA-sample} -@fig{dat_diff, doc_en/doc_en_11.html#Change-data} -@fig{dat_extra, doc_en/doc_en_11.html#Change-data} -@fig{map, doc_en/doc_en_17.html#Mapping-visualization} - -@fig{hist, doc_en/doc_en_17.html#Making-histogram} -@fig{fit, doc_en/doc_en_17.html#Nonlinear-fitting-sample} -@fig{pde, doc_en/doc_en_17.html#PDE-solving-hints} -@fig{parser, doc_en/doc_en_17.html#MGL-parser-using} - -@external - -@node MGL scripts, Download, Pictures, Top -@section MGL scripts - -MGL script language is rather simple. Each string is a command. First word of string is the name of command. Other words are command arguments. Command may have up to 1000 arguments (at least for now). Words are separated from each other by space or tabulation symbol. The upper or lower case of words is important, i.e. variables @var{a} and @var{A} are different variables. Symbol @samp{#} starts the comment (all characters after # will be ignored). The exception is situation when @samp{#} is a part of some string. Also options can be specified after symbol @samp{;}. Symbol @samp{:} starts new command (like new line character) if it is not placed inside a string or inside brackets. - -If string contain references to external parameters (substrings @samp{$0}, @samp{$1} ... @samp{$9}) or definitions (substrings @samp{$a}, @samp{$b} ... @samp{$z}) then before execution the values of parameter/definition will be substituted instead of reference. It allows to use the same MGL script for different parameters (file names, paths, condition and so on). +@sfig{inplot, Subplots} +@sfig{axis, Axis and ticks} +@sfig{ticks, Axis and ticks} +@sfig{loglog, Axis and ticks} -Argument can be a string, a variable (data arrays) or a number (scalars). -@itemize @bullet -@item -The string is any symbols between ordinary marks @samp{'}. Long strings can be concatenated from several lines by @samp{\} symbol. I.e. the string @samp{'a +'\
' b'} will give string @samp{'a + b'} (here @samp{
} is newline). - -@item -Usually variable have a name which is arbitrary combination of symbols (except spaces and @samp{'}) started from a letter and with length less than 64. A temporary array can be used as variable: -@itemize @bullet -@item -sub-arrays (like in @code{subdata} command) as command argument. For example, @code{a(1)} or @code{a(1,:)} or @code{a(1,:,:)} is second row, @code{a(:,2)} or @code{a(:,2,:)} is third column, @code{a(:,:,0)} is first slice and so on. Also you can extract a part of array from m-th to n-th element by code @code{a(m:n,:,:)} or just @code{a(m:n)}. +@sfig{curvcoor, Curvilinear coordinates} +@sfig{colorbar, Colorbars} +@sfig{box, Bounding box} +@sfig{ternary, Ternary axis} -@item -any column combinations defined by formulas, like @code{a('n*w^2/exp(t)')} if names for data columns was specified (by @code{idset} command or in the file at string started with @code{##}). +@sfig{text, Text features} +@sfig{legend, Legend sample} +@sfig{cut, Cutting sample} +@sfig{alpha, Transparency and lighting} -@item -any expression (without spaces) of existed variables produce temporary variable. For example, @samp{sqrt(dat(:,5)+1)} will produce temporary variable with data values equal to @code{tmp[i,j] = sqrt(dat[i,5,j]+1)}. +@sfig{type0, Types of transparency} +@sfig{type1, Types of transparency} +@sfig{type2, Types of transparency} +@sfig{fog, Adding fog} -@item -temporary variable of higher dimensions by help of []. For example, @samp{[1,2,3]} will produce a temporary vector of 3 elements @{1, 2, 3@}; @samp{[[11,12],[21,22]]} will produce matrix 2*2 and so on. Here you can join even an arrays of the same dimensions by construction like @samp{[v1,v2,...,vn]}. - -@item -result of code for making new data inside @{@}. For example, @samp{@{sum dat 'x'@}} produce temporary variable which contain result of summation of @var{dat} along direction 'x'. This is the same array @var{tmp} as produced by command @samp{sum tmp dat 'x'}. You can use nested constructions, like @samp{@{sum @{max dat 'z'@} 'x'@}}. -@end itemize -Temporary variables can not be used as 1st argument for commands which create (return) the data (like @samp{new}, @samp{read}, @samp{hist} and so on). - -@item -Special names @code{nan=#QNAN, pi=3.1415926..., on=1, off=0, :=-1} are treated as number if they were not redefined by user. Variables with suffixes are treated as numbers. Names defined by @code{define} command are treated as number. Also results of formulas with sizes 1x1x1 are treated as number (for example, @samp{pi/dat.nx}). -@end itemize -Before the first using all variables must be defined with the help of commands, like, @code{new}, @code{var}, @code{list}, @code{copy}, @code{read}, @code{hist}, @code{sum} and so on. +@sfig{combined, ``Compound'' graphics} +@sfig{several_light, Several light sources} +@sfig{stereo, Stereo image} +@sfig{primitives, Using primitives} -Command may have several set of possible arguments (for example, @code{plot ydat} and @code{plot xdat ydat}). All command arguments for a selected set must be specified. However, some arguments can have default values. These argument are printed in [], like @code{text ydat ['stl'='']} or @code{text x y 'txt' ['fnt'='' size=-1]}. At this, the record @code{[arg1 arg2 arg3 ...]} means @code{[arg1 [arg2 [arg3 ...]]]}, i.e. you can omit only tailing arguments if you agree with its default values. For example, @code{text x y 'txt' '' 1} or @code{text x y 'txt' ''} is correct, but @code{text x y 'txt' 1} is incorrect (argument @code{'fnt'} is missed). +@sfig{stfa, STFA sample} +@sfig{dat_diff, Change data} +@sfig{dat_extra, Change data} +@sfig{map, Mapping visualization} -For more details see @uref{../doc_en/doc_en_64.html#MGL-scripts, MathGL documentation} +@sfig{hist, Making histogram} +@sfig{fit, Nonlinear fitting sample} +@sfig{pde, PDE solving hints} +@sfig{parser, MGL parser using} -@external +@external{} -@node Download, Other projects, MGL scripts, Top +@node Download, Other projects, Pictures, Website @section Download @strong{Stable version (v.@value{VERSION})} @@ -517,37 +413,15 @@ You may download current version of MathGL for following configurations: @item @uref{http://downloads.sourceforge.net/mathgl/mathgl-@value{VERSION}.LGPL-win64.7z,Win64 LGPL} binaries for MSVS 2010 (no GSL and HDF5 support) @item -@uref{http://downloads.sourceforge.net/mathgl/mathgl-@value{VERSION}-1.DevPack,DevPak} package for Dev-C++ or Code::Blocks (GPL version) -@item @uref{http://downloads.sourceforge.net/mathgl/mathgl-@value{VERSION}.eng.pdf,PDF} documentation in English @item -@uref{http://downloads.sourceforge.net/mathgl/mgl_scripts-@value{VERSION}.7z,utilities} with all required DLL files (build for i686) +@uref{http://downloads.sourceforge.net/mathgl/mgl_scripts-@value{VERSION}.7z, UDAV and utilities} with all required DLL files (build for i686) @c HTML documentation in English @c HTML documentation in Russian @c @item @c @uref{http://downloads.sourceforge.net/mathgl/mathgl_slides-1.9.pdf,PDF} slideshow of main features @end itemize -@strong{Previous version (v.1.11.2)} - -You may download current version of MathGL for following configurations: -@itemize @bullet -@item -@uref{http://downloads.sourceforge.net/mathgl/mathgl-1.11.2.tar.gz,source} file with autoconf/automake script. -@item -@uref{http://downloads.sourceforge.net/mathgl/mathgl-1.11.2-mingw.i686.zip,Win32 GPL} binaries for MinGW (build for i686) -@item -@uref{http://downloads.sourceforge.net/mathgl/mathgl-1.11.1.1.LGPL-mingw.i686.zip,Win32 LGPL} binaries for MinGW (build for i686, no GSL and HDF5 support) -@item -@uref{http://downloads.sourceforge.net/mathgl/mathgl-1.11.2-1.DevPack,DevPak} package for Dev-C++ or Code::Blocks (GPL version) -@item -@uref{http://downloads.sourceforge.net/mathgl/mathgl-1.11.2.eng.pdf,PDF} documentation in English -@c HTML documentation in English -@c HTML documentation in Russian -@item -@uref{http://downloads.sourceforge.net/mathgl/mathgl_slides-1.9.pdf,PDF} slideshow of main features -@end itemize - @strong{Font files} There are a set of @uref{http://sourceforge.net/project/showfiles.php?group_id=152187&package_id=267177,font files} for MathGL with following typefaces. Note, that the set of glyphs can be less than in default font. As result not all TeX symbols can be displayed. @@ -574,9 +448,9 @@ There are a set of @uref{http://sourceforge.net/project/showfiles.php?group_id=1 @uref{http://downloads.sourceforge.net/mathgl/termes_font.tgz,Termes font} -- the @uref{http://www.gust.org.pl/projects/e-foundry/tex-gyre/index_html,TeX Gyre} serif fonts is based on the Nimbus Roman No9 L (like Times). @end itemize -@external +@external{} -@node Other projects, , Download, Top +@node Other projects, , Download, Website @section Other projects Except scientific (non public) projects I also have some general interest projects: @@ -609,6 +483,4 @@ Finally, few links to free software and libraries: @uref{http://loll.sourceforge.net/,LLoL} is project collecting, organising, classifying, and maintaining important URLs about Linux and the Open Source movement for all levels of Linux users. The LoLL project now has 4000+ links which are updated usually on a daily basis. @end itemize -@external - -@bye +@external{} diff --git a/texinfo/widget_en.texi b/texinfo/widget_en.texi index 2dd1236..2e03096 100644 --- a/texinfo/widget_en.texi +++ b/texinfo/widget_en.texi @@ -29,7 +29,7 @@ You should inherit yours class from @code{mglDraw} and re-implement one or both @c ------------------------------------------------------------------ -@external +@external{} @node mglWindow class, Fl_MathGL class, , Widget classes @section mglWindow class @cindex mglWindow @@ -134,7 +134,7 @@ Gets last position of mouse click. @end deftypefn @c ------------------------------------------------------------------ -@external +@external{} @node Fl_MathGL class, QMathGL class, mglWindow class, Widget classes @section Fl_MathGL class @cindex Fl_MathGL @@ -191,7 +191,7 @@ Pointer to external phi-angle validator. @end deftypecv @c ------------------------------------------------------------------ -@external +@external{} @node QMathGL class, , Fl_MathGL class, Widget classes @section QMathGL class @cindex QMathGL @@ -204,8 +204,8 @@ Class is Qt widget which display MathGL graphics. It is defined in @code{#includ @deftypemethod QMathGL @code{void} setDraw (@code{mglDraw *}dr) Sets drawing functions from a class inherited from @code{mglDraw}. @end deftypemethod -@deftypemethod QMathGL @code{void} setDraw (@code{int (*}draw)(@code{mglBase *}gr, @code{void *}p), @code{void *}par=@code{NULL}) -@deftypemethodx QMathGL @code{void} setDraw (@code{int (*}draw)(@code{mglGraph *}gr)) +@deftypemethod QMathGL @code{void} setDraw (@code{int (*}draw@code{)(mglBase *}gr, @code{void *}p@code{)}, @code{void *}par=@code{NULL}) +@deftypemethodx QMathGL @code{void} setDraw (@code{int (*}draw@code{)(mglGraph *}gr@code{)}) Sets the drawing function @var{draw}. There is support of a list of plots (frames). So as one can prepare a set of frames at first and redraw it fast later (but it requires more memory). Function should return positive number of frames for the list or zero if it will plot directly. Parameter @var{par} contains pointer to data for the plotting function @var{draw}. @end deftypemethod @@ -442,5 +442,5 @@ Application name for message boxes. Allow auto resizing (default is false). @end deftypecv -@external +@external{} diff --git a/texinfo/widget_ru.texi b/texinfo/widget_ru.texi index 86a033e..f1b6257 100644 --- a/texinfo/widget_ru.texi +++ b/texinfo/widget_ru.texi @@ -29,7 +29,7 @@ public: @c ------------------------------------------------------------------ -@external +@external{} @node mglWindow class, Fl_MathGL class, , Widget classes @section Класс mglWindow @cindex mglWindow @@ -134,7 +134,7 @@ public: @end deftypefn @c ------------------------------------------------------------------ -@external +@external{} @node Fl_MathGL class, QMathGL class, , Widget classes @section Класс Fl_MathGL @cindex Fl_MathGL @@ -189,7 +189,7 @@ public: @end deftypecv @c ------------------------------------------------------------------ -@external +@external{} @node QMathGL class, , Fl_MathGL class, Widget classes @section Класс QMathGL @cindex QMathGL @@ -202,8 +202,8 @@ public: @deftypemethod QMathGL @code{void} setDraw (@code{mglDraw *}dr) Задает функцию рисования из класса производного от @code{mglDraw}. @end deftypemethod -@deftypemethod QMathGL @code{void} setDraw (@code{int (*}draw)(@code{mglBase *}gr, @code{void *}p), @code{void *}par=@code{NULL}) -@deftypemethodx QMathGL @code{void} setDraw (@code{int (*}draw)(@code{mglGraph *}gr)) +@deftypemethod QMathGL @code{void} setDraw (@code{int (*}draw@code{)(mglBase *}gr, @code{void *}p@code{)}, @code{void *}par=@code{NULL}) +@deftypemethodx QMathGL @code{void} setDraw (@code{int (*}draw@code{)(mglGraph *}gr@code{)}) Задает функцию рисования @var{draw}. Поддерживается список графиков (кадров), так что можно вначале их нарисовать (требует довольно много памяти), а потом достаточно быстро отображать. Функция должна возвращать положительное число создаваемых кадров или ноль для непосредственного рисования. Параметр @var{par} содержит указатель на данные пользователя, передаваемый функции рисования @var{draw}. @end deftypemethod @@ -440,5 +440,5 @@ public: Разрешить изменять размер рисунка (по умолчанию false). @end deftypecv -@external +@external{} diff --git a/utils/mgl_test.html b/utils/mgl_test.html new file mode 100644 index 0000000..24edd50 --- /dev/null +++ b/utils/mgl_test.html @@ -0,0 +1,14 @@ + + + + + MathGL - library for scientific graphics + + + +

Enter script below

+
+
+

+ + diff --git a/utils/mglcgi.cpp b/utils/mglcgi.cpp index 4f08553..82fd866 100644 --- a/utils/mglcgi.cpp +++ b/utils/mglcgi.cpp @@ -71,6 +71,7 @@ int main(int argc, char *argv[]) buf[len]=0; } else buf = getenv("QUERY_STRING"); + if(buf==0) { printf("There is no query. Exit."); return 0; } str = new char[strlen(buf)+1]; mgl_get_value(buf,"mgl",str); diff --git a/widgets/CMakeLists.txt b/widgets/CMakeLists.txt index 91f2fd6..8abeec8 100644 --- a/widgets/CMakeLists.txt +++ b/widgets/CMakeLists.txt @@ -13,8 +13,8 @@ if(MGL_HAVE_FLTK) install( TARGETS mgl-fltk mgl-fltk-static RUNTIME DESTINATION bin - ARCHIVE DESTINATION lib - LIBRARY DESTINATION lib + ARCHIVE DESTINATION ${MGL_LIB_INSTALL_DIR} + LIBRARY DESTINATION ${MGL_LIB_INSTALL_DIR} ) endif(MGL_HAVE_FLTK) @@ -32,8 +32,8 @@ if(MGL_HAVE_GLUT) install( TARGETS mgl-glut mgl-glut-static RUNTIME DESTINATION bin - ARCHIVE DESTINATION lib - LIBRARY DESTINATION lib + ARCHIVE DESTINATION ${MGL_LIB_INSTALL_DIR} + LIBRARY DESTINATION ${MGL_LIB_INSTALL_DIR} ) endif(MGL_HAVE_GLUT) @@ -51,8 +51,8 @@ if(MGL_HAVE_WX) install( TARGETS mgl-wx mgl-wx-static RUNTIME DESTINATION bin - ARCHIVE DESTINATION lib - LIBRARY DESTINATION lib + ARCHIVE DESTINATION ${MGL_LIB_INSTALL_DIR} + LIBRARY DESTINATION ${MGL_LIB_INSTALL_DIR} ) endif(MGL_HAVE_WX) @@ -71,8 +71,8 @@ if(MGL_HAVE_QT) install( TARGETS mgl-qt mgl-qt-static RUNTIME DESTINATION bin - ARCHIVE DESTINATION lib - LIBRARY DESTINATION lib + ARCHIVE DESTINATION ${MGL_LIB_INSTALL_DIR} + LIBRARY DESTINATION ${MGL_LIB_INSTALL_DIR} ) endif(MGL_HAVE_QT) @@ -102,8 +102,8 @@ if(MGL_HAVE_QT AND MGL_HAVE_FLTK) install( TARGETS mgl-wnd mgl-wnd-static RUNTIME DESTINATION bin - ARCHIVE DESTINATION lib - LIBRARY DESTINATION lib + ARCHIVE DESTINATION ${MGL_LIB_INSTALL_DIR} + LIBRARY DESTINATION ${MGL_LIB_INSTALL_DIR} ) #endif(MGL_HAVE_QT AND MGL_HAVE_WX AND MGL_HAVE_FLTK) endif(MGL_HAVE_QT AND MGL_HAVE_FLTK) diff --git a/widgets/glut.cpp b/widgets/glut.cpp index 175af48..8730159 100644 --- a/widgets/glut.cpp +++ b/widgets/glut.cpp @@ -34,6 +34,7 @@ #endif #endif +#include "mgl2/opengl.h" #include "mgl2/glut.h" void _mgl_key_up(unsigned char ch,int ,int ); diff --git a/widgets/qt.cpp b/widgets/qt.cpp index 1c9f833..53f4904 100644 --- a/widgets/qt.cpp +++ b/widgets/qt.cpp @@ -94,7 +94,7 @@ QMathGL::QMathGL(QWidget *parent, Qt::WindowFlags f) : QWidget(parent, f) popup = 0; grBuf = 0; draw = 0; phi = tet = per = 0; x1 = y1 = ax1 = ay1 = 0; x2 = y2 = ax2 = ay2 = 1; - alpha = light = zoom = rotate = grid = false; + alpha = light = zoom = rotate = grid = viewYZ = false; resize(600, 400); gr->set(MGL_CLF_ON_UPD); timer = new QTimer(this); enableWheel = enableMouse = true; @@ -180,6 +180,9 @@ void QMathGL::setLight(bool l) void QMathGL::setGrid(bool g) { if(grid!=g) { grid = g; emit gridChanged(g); refresh(); } } //----------------------------------------------------------------------------- +void QMathGL::setViewYZ(bool a) +{ if(viewYZ!=a) { viewYZ = a; emit viewYZChanged(a); refresh(); } } +//----------------------------------------------------------------------------- void QMathGL::setRotate(bool r) { if(rotate!=r) @@ -291,7 +294,9 @@ void QMathGL::refresh() gg.SetRanges(x1,x2); gg.Pop(); setlocale(LC_NUMERIC, ""); } - gr->Zoom(x1,y1,x2,y2); gr->View(phi,0,tet); gr->Perspective(per); + gr->Zoom(x1,y1,x2,y2); gr->Perspective(per); + if(viewYZ) gr->View(0,phi,tet); + else gr->View(phi,0,tet); } mglConvertFromGraph(pic, gr, &grBuf); if(pic.size()!=size()) setSize(pic.width(), pic.height()); -- 2.30.2