From 33a8b6c3787cda4b38f7733a5a4f3ad119a3fd34 Mon Sep 17 00:00:00 2001 From: Dimitrios Eftaxiopoulos Date: Sat, 7 Feb 2015 21:26:59 +0200 Subject: [PATCH] Imported Upstream version 2.3.2 --- CMakeLists.txt | 9 + ChangeLog.txt | 12 +- examples/full_test.cpp | 7 +- include/config.h.in | 6 + include/mgl2/addon.h | 4 +- include/mgl2/base.h | 12 +- include/mgl2/define.h | 18 +- include/mgl2/font.h | 6 - include/mgl2/opengl.h | 3 +- include/mgl2/parser.h | 1 + include/mgl2/qmathgl.h | 3 +- json/mathgl.Graph.js | 37 +- lang/CMakeLists.txt | 10 +- mgltex/mgltex.dtx | 1670 +++++++++++++++++++---- mgltex/{mgltex.installer => mgltex.ins} | 0 mgltex/mgltex.pdf | Bin 210387 -> 244484 bytes mgltex/mgltex.sty | 551 +++++--- mgltex/sample.tex | 173 ++- src/addon.cpp | 18 +- src/axis.cpp | 4 +- src/base.cpp | 8 +- src/base_cf.cpp | 2 +- src/canvas.cpp | 6 +- src/complex.cpp | 89 +- src/complex_io.cpp | 131 +- src/cont.cpp | 4 +- src/data.cpp | 123 +- src/data_ex.cpp | 4 +- src/data_gr.cpp | 8 + src/data_io.cpp | 69 +- src/data_png.cpp | 5 +- src/evalp.cpp | 28 +- src/exec.cpp | 30 +- src/export.cpp | 16 +- src/export_2d.cpp | 15 +- src/export_3d.cpp | 2 +- src/fft.cpp | 20 +- src/fit.cpp | 10 +- src/font.cpp | 8 +- src/interp.hpp | 1 + src/opengl.cpp | 9 +- src/parser.cpp | 12 +- src/pixel.cpp | 12 +- src/plot.cpp | 35 +- src/surf.cpp | 8 +- texinfo/core_en.texi | 12 +- texinfo/core_ru.texi | 12 +- texinfo/doc_en.texi | 64 +- texinfo/doc_ru.texi | 64 +- texinfo/ex_mgl_en.texi | 4 +- texinfo/ex_mgl_ru.texi | 4 +- texinfo/version.texi | 2 +- texinfo/version_hist.txt | 4 + texinfo/web_en.texi | 20 +- texinfo/web_ru.texi | 20 +- todo.txt | 18 +- udav/calc_dlg.cpp | 44 +- udav/mgl.xml | 6 + udav/open_dlg.cpp | 5 +- udav/udav.desktop | 1 + udav/udav_wnd.cpp | 5 + utils/mglconv.cpp | 2 +- widgets/fltk.cpp | 9 +- widgets/glut.cpp | 8 +- widgets/qt.cpp | 35 +- 65 files changed, 2619 insertions(+), 919 deletions(-) rename mgltex/{mgltex.installer => mgltex.ins} (100%) create mode 100644 udav/mgl.xml diff --git a/CMakeLists.txt b/CMakeLists.txt index 4a4076e..b369da1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,7 @@ cmake_minimum_required(VERSION 2.8.9) +if(POLICY CMP0043) + cmake_policy(SET CMP0043 OLD) +endif() project( MathGL ) @@ -69,6 +72,11 @@ option(enable-all-swig "Enable all SWIG based interfaces") option(enable-rvalue "Enable move constructor support (need C++11)" OFF) option(enable-pthread "Enable POSIX threads support" OFF) option(enable-openmp "Enable OpenMP support" ON) + +if(enable-pthread AND enable-openmp) + message(SEND_ERROR "You can't enable POSIX threads and OpenMP at the same time!") +endif(enable-pthread AND enable-openmp) + option(enable-lgpl "Enable only LGPL part of MathGL") option(enable-mgl2 "Use names 'libmgl2-*' instead of 'libmgl-*'") option(enable-ltdl "Enable loading modules support") @@ -116,6 +124,7 @@ MGL_DEPENDENT_OPTION(enable-octave-install "Octave interface will install for al include_directories( ${MathGL_SOURCE_DIR}/include ${MathGL_BINARY_DIR}/include) set(MGL_INCLUDE_PATH "${CMAKE_INSTALL_PREFIX}/include/mgl2") set(MGL_CGI_PATH "${CMAKE_INSTALL_PREFIX}/share/mathgl" CACHE STRING "Set CGI install directory") +set(MGL_DEF_FONT "STIX" CACHE STRING "Set default font name") if(NOT WIN32) # set(MGL_CGI_PATH "${CMAKE_INSTALL_PREFIX}/share/mathgl") diff --git a/ChangeLog.txt b/ChangeLog.txt index 5c2363f..716ad27 100644 --- a/ChangeLog.txt +++ b/ChangeLog.txt @@ -1,4 +1,14 @@ -2.3.1 Released 20 October 2014 +2.3.2 Released 2 February 2015 + +* Update mgltex (thanks to Diego Sejas Viscarra) +* Add reading files with complex numbers by 'read' command. +* Parallelize reading textual data files. +* Add 'i','j','k' variables for data filling. +* Add saving images in QMathGL even if corresponding format support is disabled. +* Add cmake option MGL_DEF_FONT to change default font name or use built-in one (if MGL_DEF_FONT is empty). +* Compatibility changes and bugfixes. + +2.3.1 Released 21 October 2014 * Add MGL command 'load' for loading MGL commands from external DLL (or .so) module. * Add Logo() function to draw bitmap (logo), which is stretched along whole axis range diff --git a/examples/full_test.cpp b/examples/full_test.cpp index c6605dc..4f2a465 100644 --- a/examples/full_test.cpp +++ b/examples/full_test.cpp @@ -64,7 +64,6 @@ void mgls_prepare3v(mglData *ex, mglData *ey, mglData *ez); void save(mglGraph *gr,const char *name,const char *suf); void test(mglGraph *gr) { -// gr->Rotate(40,60); gr->Fog(1); gr->Box(); return; mglParse par; par.Execute(gr,"load '/home/balakin/mathgl-code/mathgl-2x/build/examples/libmgl_module.so':baxis\n"); // par.Execute(gr,"subplot 1 1 0:#rotate 40 60\nperspective 1.22:box:axis\n"); @@ -365,7 +364,7 @@ void smgl_fexport(mglGraph *gr) // test file export gr->WriteOBJ("fexport.obj"); gr->WritePRC("fexport.prc"); gr->WriteJSON("fexport.json"); - + gr->ExportMGLD("fexport.mgld"); gr->Clf(); gr->ImportMGLD("fexport.mgld"); @@ -417,7 +416,11 @@ int main(int argc,char **argv) { mgl_set_test_mode(true); test(gr); time(&en); printf("time is %g sec\n",difftime(en,st)); +#if MGL_HAVE_PNG gr->WritePNG("test.png","",false); +#else + gr->WriteBMP("test.bmp"); +#endif gr->WriteSVG("test.svg"); gr->WriteEPS("test.eps"); printf("Messages:%s\n",gr->Message()); diff --git a/include/config.h.in b/include/config.h.in index de1ea33..51d3730 100644 --- a/include/config.h.in +++ b/include/config.h.in @@ -3,6 +3,12 @@ #define MGL_USE_DOUBLE ${MGL_USE_DOUBLE} +#ifdef WIN32 // a man ask to use built-in font under Windows +#define MGL_DEF_FONT_NAME "" +#else +#define MGL_DEF_FONT_NAME "${MGL_DEF_FONT}" +#endif + #if defined(_MSC_VER) || defined(__BORLANDC__) #define MGL_SYS_NAN 0 #define MGL_HAVE_TYPEOF 0 diff --git a/include/mgl2/addon.h b/include/mgl2/addon.h index b083469..5896c36 100644 --- a/include/mgl2/addon.h +++ b/include/mgl2/addon.h @@ -40,9 +40,9 @@ void MGL_EXPORT mgl_fft_freq(double *freq,long nn); /// Remove double spaces from the string void MGL_EXPORT mgl_strcls(char *str); /// Get position of substring or return -1 if not found -int MGL_EXPORT_PURE mgl_strpos(const char *str,char *fnd); +long MGL_EXPORT_PURE mgl_strpos(const char *str,char *fnd); /// Get position of symbol or return -1 if not found -int MGL_EXPORT_PURE mgl_chrpos(const char *str,char fnd); +long MGL_EXPORT_PURE mgl_chrpos(const char *str,char fnd); /// Get uncommented string from file (NOTE: it is not thread safe!!!) MGL_EXPORT char *mgl_fgetstr(FILE *fp); diff --git a/include/mgl2/base.h b/include/mgl2/base.h index dea1383..40244fc 100644 --- a/include/mgl2/base.h +++ b/include/mgl2/base.h @@ -44,7 +44,7 @@ mglPoint GetZ(HCDT z, int i, int j, int k=0); template class mglStack { T** dat; - size_t pb; ///< size of buffer (real size is 2^pb == 1<>pb); if(num>np) { dat = (T**)realloc(dat, num*sizeof(T*)); np=num; } - for(size_t i=m;i &operator=(const mglStack &st) { pb=st.pb; clear(); reserve(st.n); - for(size_t i=0;i #if defined(_MSC_VER) -#if (_MSC_VER<1800) +#if (_MSC_VER<=1800) #define collapse(a) // MSVS don't support OpenMP 3.* #define strtoull _strtoui64 #define hypot _hypot @@ -177,16 +177,6 @@ typedef float mreal; #define mgl_sign(a) ((a)<0 ? -1:1) #endif //----------------------------------------------------------------------------- -#define SMOOTH_NONE 0 -#define SMOOTH_LINE_3 1 -#define SMOOTH_LINE_5 2 -#define SMOOTH_QUAD_5 3 -//----------------------------------------------------------------------------- -#define MGL_HIST_IN 0 -#define MGL_HIST_SUM 1 -#define MGL_HIST_UP 2 -#define MGL_HIST_DOWN 3 -//----------------------------------------------------------------------------- enum{ // types of predefined curvelinear coordinate systems mglCartesian = 0, // no transformation mglPolar, @@ -274,8 +264,14 @@ extern uint64_t mgl_mask_val[16]; #include #if MGL_USE_DOUBLE typedef double _Complex mdual; +#ifndef _Complex_I +#define _Complex_I (double _Complex){0, 1} +#endif #else typedef float _Complex mdual; +#ifndef _Complex_I +#define _Complex_I (float _Complex){0, 1} +#endif #endif #define mgl_abs(x) cabs(x) #endif diff --git a/include/mgl2/font.h b/include/mgl2/font.h index 2e08a01..dcb23b5 100644 --- a/include/mgl2/font.h +++ b/include/mgl2/font.h @@ -38,12 +38,6 @@ #define MGL_COLOR_MASK 0xffffff00 #define MGL_FONT_STYLE 0x3f000000 //----------------------------------------------------------------------------- -#ifdef WIN32 // a man ask to use built-in font under Windows -#define MGL_DEF_FONT_NAME 0 -#else -#define MGL_DEF_FONT_NAME "STIX" -#endif -//----------------------------------------------------------------------------- struct mglGlyphDescr { wchar_t id; ///< Unicode ID for glyph diff --git a/include/mgl2/opengl.h b/include/mgl2/opengl.h index c95a310..a859043 100644 --- a/include/mgl2/opengl.h +++ b/include/mgl2/opengl.h @@ -30,7 +30,7 @@ public: void SetQuality(int =0) { Quality=2; } void Finish(); - void SetSize(int ,int ) {} + void SetSize(int ,int ,bool clf=true) { if(clf) Clf(); } void View(mreal tetX,mreal tetY,mreal tetZ); void Zoom(mreal x1, mreal y1, mreal x2, mreal y2); /* int NewFrame(); @@ -43,6 +43,7 @@ public: void Light(int n, bool enable); void AddLight(int n,mglPoint r,mglPoint d, char c='w', mreal bright=0.5, mreal ap=0); void Clf(mglColor Back=NC); + void Clf(const char *col); protected: // provide fastest variant for usual points (not glyphs or marks) diff --git a/include/mgl2/parser.h b/include/mgl2/parser.h index 0fe0f23..3ff6fa4 100644 --- a/include/mgl2/parser.h +++ b/include/mgl2/parser.h @@ -100,6 +100,7 @@ public: bool Stop; ///< Stop command was. Flag prevent further execution mglCommand *Cmd; ///< Table of MGL commands (can be changed by user). It MUST be sorted by 'name'!!! long InUse; ///< Smart pointer (number of users) + const mglBase *curGr; ///< Current grapher mglParser(bool setsize=false); virtual ~mglParser(); diff --git a/include/mgl2/qmathgl.h b/include/mgl2/qmathgl.h index e416d7d..53241df 100644 --- a/include/mgl2/qmathgl.h +++ b/include/mgl2/qmathgl.h @@ -181,6 +181,7 @@ protected: mglDraw *draw; ///< Class for drawing -- need to call directly due to inheritance mechanism QString mousePos; ///< Last mouse position QPixmap pic; ///< Pixmap for drawing (changed by update) + QImage img; ///< Last used HQ image double tet, phi; ///< Rotation angles double per; ///< Value of perspective ( must be in [0,1) ) bool alpha; ///< Transparency state @@ -223,7 +224,7 @@ public: }; //----------------------------------------------------------------------------- /// Convert bitmap from mglCanvasWnd to QPixmap -void mglConvertFromGraph(QPixmap &pic, mglCanvas *gr, uchar **buf); +void mglConvertFromGraph(QPixmap &pic, mglCanvas *gr, uchar **buf, QImage *out=NULL); /// Make menu, toolbars and return popup menu for MainWindow MGL_EXPORT QMenu *mglMakeMenu(QMainWindow* Wnd, QMathGL* QMGL, QSpinBox*& tet, QSpinBox*& phi); //----------------------------------------------------------------------------- diff --git a/json/mathgl.Graph.js b/json/mathgl.Graph.js index 5ae6984..d505b47 100644 --- a/json/mathgl.Graph.js +++ b/json/mathgl.Graph.js @@ -25,8 +25,8 @@ mathgl.Graph = function(canvas, backend) { this.__fov = 0; // perspective this.__x1 = 0; this.__y1 = 0; this.__z1 = 0; this.__x2 = 1; this.__y2 = 1; this.__z2 = 1; -} - + this.__activeTimeoutHandlers = []; +}; /** * Initialize current view by given MGL script. @@ -47,6 +47,28 @@ mathgl.Graph.prototype.init = function(mgl) { this.__view.attachCanvas(this.__canvas); } +/** + * Method uses to wrap native JS setTimeout function to make possible deactivate active callbacks in destroy method + * + * @param func {Function} Callback function, will be executed after delay + * @param delay {Number} Delay before callback call + */ +mathgl.Graph.prototype.__setTimeout = function(func, delay) { + var me = this; + var timeoutFunc = function() { + func.call(); + var index = me.__activeTimeoutHandlers.indexOf(this.setTimeoutId); + if (index > -1) { + // remove timeout from activeTimeoutHandlers list + me.__activeTimeoutHandlers.splice(index, 1); + } + } + + var timeoutId = setTimeout(mathgl.bind(timeoutFunc, timeoutFunc), delay); + // keep timeout handler inside function + timeoutFunc.setTimeoutId = timeoutId; + this.__activeTimeoutHandlers.push(timeoutId); +}; /** * Load graph state from JSON string. @@ -136,7 +158,7 @@ mathgl.Graph.prototype.__renderStart = function() { if (!this.__isDraftRenderingInScheduled) { // enqueue draft rendering step this.__isDraftRenderingInScheduled = true; - setTimeout(mathgl.bind(this.__renderDraft, this), 0); + this.__setTimeout(mathgl.bind(this.__renderDraft, this), 0); } } @@ -149,7 +171,7 @@ mathgl.Graph.prototype.__renderDraft = function() { // enqueue precise rendering step if (!this.__isPreciseRenderingScheduled) { this.__isPreciseRenderingScheduled = true; - setTimeout(mathgl.bind(this.__renderPrecise, this), this.__preciseRenderingDelay); + this.__setTimeout(mathgl.bind(this.__renderPrecise, this), this.__preciseRenderingDelay); } this.__draftFinishedTimestamp = new Date(); } @@ -167,7 +189,7 @@ mathgl.Graph.prototype.__renderPrecise = function() { // rechedule pricese rendering if it is not var current = new Date(); if (current - this.__draftFinishedTimestamp < this.__preciseRenderingDelay) { - setTimeout(mathgl.bind(this.__renderPrecise, this), this.__preciseRenderingDelay - (current - this.__draftFinishedTimestamp)); + this.__setTimeout(mathgl.bind(this.__renderPrecise, this), this.__preciseRenderingDelay - (current - this.__draftFinishedTimestamp)); return; } this.__drawMesh(true); @@ -626,6 +648,11 @@ mathgl.Graph.prototype.redraw = function() { } mathgl.Graph.prototype.destroy = function() { + // clear active timeouts + for (var i = 0, l = this.__activeTimeoutHandlers.length; i ${mgl_pkg_dir} COMMAND ${oct_tar} cpzf mathgl.tar.gz ${pkg_name} WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/lang DEPENDS mgl-oct diff --git a/mgltex/mgltex.dtx b/mgltex/mgltex.dtx index 77e480a..34dedae 100644 --- a/mgltex/mgltex.dtx +++ b/mgltex/mgltex.dtx @@ -18,20 +18,14 @@ % \fi % % \iffalse -%\def\mgl@name{mgltex} -%\def\mgl@date{2014/09/16} -%\def\mgl@version{1.0} -%\def\mgl@description{Embed MGL code into LaTeX documents} -% +% %\NeedsTeXFormat{LaTeX2e} -%\ProvidesPackage{\mgl@name}[\mgl@date\space v.\mgl@version\space\mgl@description] +%\ProvidesPackage{mgltex}[/2014/11/22 v2.0 Embed MGL scripts in LaTeX documents] % %<*driver> \documentclass{ltxdoc} -\usepackage{mgltex} -\def\linefill#1{% - \leavevmode\leaders\hrule height #1\hfill\kern0em% -} +\usepackage{color} +\usepackage[comments]{mgltex} \EnableCrossrefs \CodelineIndex \RecordChanges @@ -41,7 +35,7 @@ % % \fi % -% \CheckSum{0} +% \CheckSum{1297} % % \CharacterTable % {Upper-case \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 @@ -60,10 +54,23 @@ % Right brace \} Tilde \~} % % \changes{v1.0}{2014/09/27}{Initial version} +% \changes{v.2.0}{2014/11/15}{Possible bugfix by adding \texttt{\textbackslash expandafter} to commands to ignore/write lines of MGL code} +% \changes{v.2.0}{2014/11/15}{Add environment \texttt{mglsignature} that adds a commentary every MGL script} +% \changes{v.2.0}{2014/11/15}{Eliminate line ignoring commands to create more elegant scripts, due to the a new command that adds comments to the scripts} % % \GetFileInfo{mgltex.sty} % -% \DoNotIndex{} +% \DoNotIndex{\def,\bgroup,\egroup,\newcommand,\newenvironment,\\,\@onlypreamble,\@undefined,\@vobeyspaces,\list} +% \DoNotIndex{\if,\else,\fi,\begingroup,\endgroup,\end,\edef,\xdef,\gdef,\scapechar,\active,\arabic,\catcode,\bfseries} +% \DoNotIndex{\@flushglue,\@for,\@ifnextchar,\@makeother,\{,\},\^,\ ,\AtBeginDocument,\AtEndDocument,\centering} +% \DoNotIndex{\closein,\closeout,\csname,\endcsname,\CurrentOption,\DeclareGraphicsExtensions,\define@key,\DeclareOption} +% \DoNotIndex{\detokenize,\do,\dospecials,\endlinechar,\endlist,\escapechar,\ExecuteOptions,\expandafter,\footnotesize} +% \DoNotIndex{\framebox,\Gin@extensions,\Huge,\ifeof,\IfFileExists,\ifx,\immediate,\include,\includegraphics,\item,\itemsep} +% \DoNotIndex{\itshape,\jobname,\labelsep,\leftskip,\let,\long,\mbox,\newcounter,\newread,\newtoks,\newwrite,\noexpand} +% \DoNotIndex{\obeyspaces,\openin,\openout,\PackageError,\PackageWarning,\parfillskip,\parindent,\parskip} +% \DoNotIndex{\PassOptionsToPackage,\ProcessOptions,\read,\relax,\RequirePackage,\rightskip,\setcounter,\setkeys,\setlength} +% \DoNotIndex{\space,\stepcounter,\string,\TeX,\the,\vbox,\verbatim@font,\write,\z@,\z@skip,\newif,\PackageInfo,\today} +% \DoNotIndex{\obeylines,\or\ifcase,\small} % % \title{The \textsf{\mglTeX} package\thanks{This document corresponds to \textsf{\mglTeX}~\fileversion, dated \filedate.}} % \author{Diego Sejas Viscarra\\\texttt{diego.mathematician@gmail.com}} @@ -71,7 +78,9 @@ % \maketitle % % \begin{abstract} -% \noindent +% \noindent MathGL is a fast and efficient library by Alexey Balakin for the creation of high-quality publication-ready scientific graphics. Although it defines interfaces for many programming languages, it also implements its own programming language, called \emph{MGL}, which can be used independently. With the package \textsf{\mglTeX}, MGL scripts can be embedded within any \LaTeX{} document, and the corresponding images are automatically created and included. + +% This manual documents the use of the commands and environments of~\mglTeX. % \end{abstract} % % \section{Introduction} @@ -94,12 +103,19 @@ % \begin{itemize} % \item |draft|: The generated images won't be included in the document. This option is useful when fast compilation of the document is needed. % \item |final|: This overrides the |draft| option. +% \item |on|: To create the MGL scripts and corresponding images of the document every time \LaTeX{} is run. +% \item |off|: To avoid creating the MGL scripts and corresponding images of the document, but still try to include the images. +% \item |comments|: To allow the contents of the |mglcomment| environments to be shown in the \LaTeX{} document. +% \item |nocomments|: To not show the contents of the |mglcomment| environments in the \LaTeX{} document. % \item |png|, |jpg|, |jpeg|: To export images to the corresponding bitmap format. % \item |eps|, |epsz|: To export to uncompressed/compressed EPS format as primitives. % \item |bps|, |bpsz|: To export to uncompressed/compressed EPS format as bitmap. % \item |pdf|: To export to 3D PDF format. +% \item |tex|: To export to \LaTeX{}/\emph{tikz} document. % \end{itemize} -% It must be noted that the options that specify the format to save the images are exclusive, in the sense that if one specifies more than one format, only the last one will be used. +% It must be noted that the options |on| and |off| are exclusive, in the sense that if one specifies both of them, only the last one will be used. Likewise, the options that specify the format to save the graphics are exclusive. +% +% Observe the option |off| is useful to save compilation time of a document. For example, if the graphics of an article are in final version, instead of compilling them over and over again every time \LaTeX{} runs, they can be created only once with the |on| option, and then only included (but not recompiled) with the |off| option. % % The are two ways to compile a document with \textsf{\mglTeX}: The first way is to run % \begin{center} @@ -164,21 +180,73 @@ % \end{tabular} % \end{center} % +% \DescribeEnv{mglcommon} This is used to create a common ``setup'' script that will be executed together with each of the other scripts. It is useful to define constants, parameters, etc. that will be available to every script. +% \begin{center} +% \begin{tabular}{l} +% \hline\\[-0.75em] +% |\begin{mglcommon}|\\[0.5em] +% \hss\meta{MGL code}\hss\\[0.5em] +% |\end{mglcommon}|\\[0.25em] +% \hline +% \end{tabular} +% \end{center} +% +% For example, one could make +% \begin{verbatim} +% \begin{mglcommon} +% define gravity 9.81 # [m/s^2] +% \end{mglcommon} +% \end{verbatim} +% to make the constant \emph{gravity} available to every script. +% +% Observe this environment should be used only to define constants, parameters and things like that, but not graphical objects like axis or grids, because every image created with the |mgl| environment clears every graphical object before creating the image.\footnote{This problem occurs only with the \texttt{mgl} environment, so you could use \texttt{mglcommon} to create many graphics with the same axis, grid, etc., with environments like \texttt{mglcode}, but in that case the best option is to use the \texttt{mglsetup} environment together with the \texttt{\textbackslash{}mglplot} command.} +% +% \DescribeEnv{mglsignature} This environment is used to declare a signature (or commentary) that will be included at the beginning of every script generated by \mglTeX. It is verbatim-like environment, so no \LaTeX{} cammand will be executed, but copied literally. However, the default signature is ``This script was generated from \meta{document}.mgl on date \meta{today}''. +% \begin{center} +% \begin{tabular}{l} +% \hline\\[-0.75em] +% |\begin{mglsignature}|\\[0.5em] +% \hss\meta{Signature for MGL scripts}\hss\\[0.5em] +% |\end{mglsignature}|\\[0.25em] +% \hline +% \end{tabular} +% \end{center} +% +% \DescribeEnv{mglcomment} This environment is used to embed commentaries in the \LaTeX{} document. The commentary won't appear in the case of the user passing the option |nocomments| to the package, but it will be written \emph{verbatim} is the user passes the option |comments|. +% \begin{center} +% \begin{tabular}{l} +% \hline\\[-0.75em] +% |\begin{mglcomment}|\\[0.5em] +% \hss\meta{Commentary}\hss\\[0.5em] +% |\end{mglcomment}|\\[0.25em] +% \hline +% \end{tabular} +% \end{center} +% In the case of the user allowing commentaries, this will result in the appearance of the following commentary in the \LaTeX{} document: +% \begin{center} +% \makeatletter +% \verbatim@font +% \makeatother +% <------------------ MGL comment ------------------>\\ +% \meta{Commentary}\\ +% <------------------ MGL comment ------------------>\\ +% \end{center} +% % \subsection{Fast creation of graphics} -% \noindent\textsf{\mglTeX} defines a convenient way to work with many graphics that have exactly the same settings (for example, same angles of rotation, same type of grid, etc.): instead of writing repetitive code every time it's needed, it can be stored in memory with the |mglplotsettings| environment, and then can be used when needed with the |\mglplot| command. +% \noindent\textsf{\mglTeX} defines a convenient way to work with many graphics that have exactly the same settings (for example, same angles of rotation, same type of grid, etc.): instead of writing repetitive code every time it's needed, it can be stored in memory with the |mglsetup| environment, and then can be used when needed with the |\mglplot| command. % -% \DescribeEnv{mglplotsettings} This environment stores its contents in memory for later use. It accepts one mandatory argument, which is a keyword (name) to be associated to the corresponding block of code, so different blocks of code can be stored with different names. +% \DescribeEnv{mglsetup} This environment stores its contents in memory for later use. It accepts one optional argument, which is a keyword (name) to be associated to the corresponding block of code, so different blocks of code can be stored with different names. % \begin{center} % \begin{tabular}{l} % \hline\\[-0.75em] -% |\begin{mglplotsettings}|\marg{keyword}\\[0.5em] +% |\begin{mglsetup}|\oarg{keyword}\\[0.5em] % \hss\meta{MGL code}\hss\\[0.5em] -% |\end{mglplotsettings}|\\[0.25em] +% |\end{mglsetup}|\\[0.25em] % \hline % \end{tabular} % \end{center} % -% \DescribeMacro{\mglplot} This command is used for fast generation of graphics with default settings, and can be used in parallel with the |mglplotsettings| environment. It accepts one mandatory argument which consists of MGL instructions, separated by the symbol ``:'', which can span through various text lines. It also accepts the same optional arguments as the |mgl| environment, plus an additional one, called |settings|, which can be used to specify a keyword used in a |mglplotsettings| environment. If the |settings| option is specified, the code in the mandatory argument will be appended to the block of code of the corresponding |mglplotsettings| environment. +% \DescribeMacro{\mglplot} This command is used for fast generation of graphics with default settings, and can be used in parallel with the |mglsetup| environment. It accepts one mandatory argument which consists of MGL instructions, separated by the symbol ``:'', which can span through various text lines. It also accepts the same optional arguments as the |mgl| environment, plus an additional one, called |settings|, which can be used to specify a keyword used in a |mglsetup| environment. If the |settings| option is specified, the code in the mandatory argument will be appended to the block of code of the corresponding |mglsetup| environment. % \begin{center} % \begin{tabular}{l} % \hline\\[-0.75em] @@ -242,6 +310,81 @@ % \end{center} % This command must be used in the preamble of the document, since the first MGL script is created at the moment of the |\begin{document}| command; trying to use it somewhere else will issue an error. On the other hand, it is the responsibility of the user to create the \meta{directory}, since \textsf{\mglTeX} won't do it automatically. % +% \DescribeMacro{\mglquality} This command can be used to specify the quality for the graphics created with \mglTeX. An info message specifying the characteristics of the chosen quality is printed in the .log file. +% \begin{center} +% \begin{tabular}{l} +% \hline\\[-0.75em] +% |\mglquality|\marg{quality}\\[0.25em] +% \hline +% \end{tabular} +% \end{center} +% The available qualities are described below: +% \begin{center} +% \begin{tabular}{cl} +% \hline +% Quality & Description\\ +% \hline +% \hline +% $0$ & No face drawing (fastest)\\ +% \hline +% $1$ & No color interpolation (fast)\\ +% \hline +% $2$ & High quality (normal)\\ +% \hline +% $3$ & High quality with 3d primitives (not implemented yet)\\ +% \hline +% $4$ & No face drawing, direct bitmap drawing (low memory usage)\\ +% \hline +% $5$ & No color interpolation, direct bitmap drawing (low memory usage)\\ +% \hline +% $6$ & High quality, direct bitmap drawing (low memory usage)\\ +% \hline +% $7$ & High quality with 3d primitives, direct bitmap drawing (not implemented yet)\\ +% \hline +% $8$ & Draw dots instead of primitives (extremely fast)\\ +% \hline +% \end{tabular} +% \end{center} +% +% \DescribeMacro{\mgltexon} This command has the same effect as the package option |on|, i.e., create all the scripts and corresponding graphics, but its effect is local, meaning that it work only from the point it is used on. +% \begin{center} +% \begin{tabular}{l} +% \hline\\[-0.75em] +% |\mgltexon|\\[0.25em] +% \hline +% \end{tabular} +% \end{center} +% +% \DescribeMacro{\mgltexoff} This command has the same effect as the package option |off|, i.e., DO NOT create the scripts and corresponding graphics, and include images anyway, but its effect is also local, meaning that it work only from the point it is used on. +% \begin{center} +% \begin{tabular}{l} +% \hline\\[-0.75em] +% |\mgltexoff|\\[0.25em] +% \hline +% \end{tabular} +% \end{center} +% +% Observe the commands |\mgltexon| and |\mgltexoff| can be used to save compilation time of a document. For example, when writing an article, if the graphics of the first section are already in final version, instead of compilling them every time \LaTeX{} is called, they can be created only once, and then the section can be wrapped with |mgltexoff| and |mgltexon|, so the graphics do not get recompiled again (wasting time), but only included. +% +% \DescribeMacro{\mglcomments} This command has the same effect as the package option |comments|, i.e., show all the commentaries contained int the |mglcomment| environments, but its effect is local, meaning that it work only from the point it is used on. +% \begin{center} +% \begin{tabular}{l} +% \hline\\[-0.75em] +% |\mglcoments|\\[0.25em] +% \hline +% \end{tabular} +% \end{center} +% \DescribeMacro{\mglnocomments} This command has the same effect as the package option |nocomments|, i.e., DO NOT show the contentsof the |mglcomment| environments, but its effect is also local, meaning that it work only from the point it is used on. +% \begin{center} +% \begin{tabular}{l} +% \hline\\[-0.75em] +% |\mglnocomments|\\[0.25em] +% \hline +% \end{tabular} +% \end{center} +% +% Observe the commands |\mglcomments| and |\mglnocomments| can be used to activate/deactivate commentaries on the document: just like \LaTeX{} commentaries, but with the possibilty of making them visible/invisible. This feature could be used, for example, to show remainders or commentaries for readers of test versions of an article. +% % \DescribeMacro{\mglTeX} This command just pretty-prints the name of the package. % \begin{center} % \begin{tabular}{l} @@ -251,6 +394,38 @@ % \end{tabular} % \end{center} % +% \subsection{User-definable macros} +% \noindent There are two macros that the user is allowed to modify: +% +% \DescribeMacro{\mgltexsignature} +% As an alternative to the |mglsignature| environment for declaring signatures, the user can manually redefine the signature macro |\mgltexsignature|, according to the following rules: +% \begin{itemize} +% \item The positions of the comment signs for the MGL language have to be manually specified in the signature using the |\mglcomm| macro. +% \item The new-line character is declared as ``|^^J|''. +% \item A percent sign (|%|) has to be added at the end of every physical line of |\mgltexsignature|, otherwise an inelegant space at the beginning of every line will appear. +% \item Any \LaTeX{} command can be used in this case. +% \end{itemize} +% For example, the default signature: +% \begin{quote} +% \mglcomm\\ +% \mglcomm\ This script was generated from \meta{document}.mgl on date \meta{today}\\ +% \mglcomm +% \end{quote} +% can be achieved with +% \begin{verbatim} +% \def\mgltexsignature{% +% \mglcomm^^J% +% \mglcomm\ This script was generated from \jobname.mgl on date \today^^J% +% \mglcomm% +% } +% \end{verbatim} +% +% \DescribeMacro{\mglcommonscript} +% It is the name for the common script that takes the contents of the |mglcommon| environment. For example, the default name of the script (``mgl\_common\_script'') is defined by doing +% \begin{verbatim} +% \def\mglcommonscript{mgl_common_script} +% \end{verbatim} +% % \subsection{Behavior of \textsf{\mglTeX}} % \noindent As a convenient feature, the environments |mglcode|, |mglscript| and |mglblock| will automatically check if they are being used to create different scripts with the same name, in which case \textsf{\mglTeX} will issue a warning; however, if one of these environments overwrite an external script (not embedded in the document), it won't be noticed. Likewise, the user will be warned if the environment |mglfunc| is being used to create different MGL functions with the same name. % @@ -263,13 +438,40 @@ % } % \end{center} % Notice that the first time \LaTeX{} is executed, many of these boxes will appear in the document because the graphics from the MGL scripts are created, but not all are included (until \LaTeX{} is run for the second time). -% -% \StopEventually{} +% \section{Warning for the user} +% \mglTeX{} assummes that the |\begin{|\meta{environment}|}| and |\end{|\meta{environment}|}| commands will occupy their own physical line of \LaTeX{} code. So the correct form to use the environments is the following: +% \begin{verbatim} +% \begin{} +% +% \end{} +% \end{verbatim} +% The following forms of use could cause problems: +% \begin{verbatim} +% \begin{}\end{} +% \end{verbatim} +% \begin{verbatim} +% \begin{} +% \end{} +% \end{verbatim} +% \begin{verbatim} +% \begin{} +% +% \end{} +% \end{verbatim} +% One of the reasons for this is that some of the environments in \mglTeX{} are programmed to ignore the empty space following the |\begin{|\meta{environment}|}|, which would cause an inelegant empty line in the script, so the first two incorrect forms would cause \mglTeX{} to ignore a complete line of code. The other reason is the method used to detect the |\end{|\meta{environment}|}| command, which could fail in the case of the third incorrect use. +% \StopEventually{\PrintChanges\PrintIndex} % \section{Implementation} +% \noindent This section documents the implementation of \mglTeX. Its purpose is to facilitate the comprehension and maintenance of the package. +% \subsection{Initialization} +% \noindent The \textsf{keyval} package is loaded to facilitate the declaration of \meta{key}=\meta{value} options for commands and environments; the \textsf{graphicx} package is loaded in order to manipulate and include the images created by MGL code. % \begin{macrocode} \RequirePackage{keyval} \RequirePackage{graphicx} +% \end{macrocode} + +% We declare the options of the package. The first two are |draft| and |final|, which are passed directly to the \textsf{graphicx} package. +% \begin{macrocode} \DeclareOption{draft}{% \PassOptionsToPackage{\CurrentOption}{graphicx}% @@ -277,14 +479,52 @@ \DeclareOption{final}{% \PassOptionsToPackage{\CurrentOption}{graphicx}% } +% \end{macrocode} +% +% The next two options are |on| and |off|, where |on| indicates \mglTeX{} to create every script and every corresponding image every time \LaTeX{} is executed, while |off| tells not to do it, but to include the images anyway. First we declare a flag (boolean variable) |\@mgltex@on@| to know if the used passed the |on| or the |off| option. +% \begin{macrocode} +\newif\if@mgltex@on@ +% \end{macrocode} +% If the user passes the option |on|, |\@mgltex@on@| is true, and the command |\mgl@write| (which takes care of writing code to the scripts) is the normal \LaTeX{} |\immediate\write| commands; +% \changes{v.2.0}{2014/11/15}{Add package options \texttt{on} and \texttt{off}} +% \begin{macrocode} +\DeclareOption{on}{% + \@mgltex@on@true% + \def\mgl@write#1#2{% + \immediate\write#1{#2}% + } +} +% \end{macrocode} +% if the user passes the option |off|, |\@mgltex@on@| is false, and the command |\mgl@write| does nothing (doesn't write to scripts). +% \begin{macrocode} +\DeclareOption{off}{% + \@mgltex@on@false% + \def\mgl@write#1#2{}% +} +% \end{macrocode} +% The next options are |comments| and |nocomments|, where |comments| indicates \mglTeX{} to show the comments included inside |\mglcomments| environments, while |nocomments| tells not to do it. First we create a flag that will indicate which of these options is passed by the user. +% \begin{macrocode} +\newif\if@mgl@comments@ +% \end{macrocode} +% If the user passes the option |comments|, |\@mgl@comments@| is true, and the |\mglcomments| environments print their contents; +% \changes{v2.0}{2014/11/22}{Add package options \texttt{comments} and \texttt{nocomments}} +% \begin{macrocode} +\DeclareOption{comments}{% + \@mgl@comments@true% +} +% \end{macrocode} +% if the user passes the option |nocomments|, |\@mgl@comments@| is false, and the |\mglcomments| environments won't print their contents. +% \begin{macrocode} +\DeclareOption{nocomments}{% + \@mgl@comments@false% +} +% \end{macrocode} +% We then indicate the supported extensions to save the images created by the package, and the corresponding package options. The chosen extension is stored in the |\mgl@image@ext| macro for future use. +% \begin{macrocode} -\DeclareGraphicsExtensions{.png,.eps,.jpg,.jpeg,.bps,.pdf,.epsz,.eps.gz,.bpsz,.bps.gz,.gif} -%\DeclareGraphicsExtensions{.png,.eps,.jpg,.jpeg,.bps,.pdf,.gif} -%\DeclareGraphicsRule{*}{eps}{*}{} -%\DeclareGraphicsRule{.eps.gz}{eps}{.eps.bb}{`gunzip -c #1}% gzipped EPS -%\DeclareGraphicsRule{.epsz}{eps}{.eps.bb}{`gunzip -c #1}% gzipped EPS -%\DeclareGraphicsRule{.bps.gz}{eps}{.bps.bb}{`gunzip -c #1}% gzipped EPS -%\DeclareGraphicsRule{.bpsz}{eps}{.bps.bb}{`gunzip -c #1}% gzipped EPS +\DeclareGraphicsExtensions{% + .png,.eps,.jpg,.jpeg,.bps,.pdf,.epsz,.eps.gz,.bpsz,.bps.gz,.gif% +} \DeclareOption{jpg}{\def\mgl@image@ext{.jpg}} \DeclareOption{jpeg}{\def\mgl@image@ext{.jpeg}} @@ -297,21 +537,22 @@ \DeclareOption{gif}{\def\mgl@image@ext{.gif}} \DeclareOption{tex}{\def\mgl@image@ext{.tex}} -%\DeclareOption{svg}{\def\mgl@image@ext{.svg}} -%\DeclareOption{svgz}{\def\mgl@image@ext{.svgz}} -%\DeclareOption{bmp}{\def\mgl@image@ext{.bmp}} -%\DeclareOption{tga}{\def\mgl@image@ext{.tga}} -%\DeclareOption{mgld}{\def\mgl@image@ext{.mgld}} -%\DeclareOption{json}{\def\mgl@image@ext{.json}} -%\DeclareOption{jsonz}{\def\mgl@image@ext{.jsonz}} -%\DeclareOption{obj}{\def\mgl@image@ext{.obj}} -%\DeclareOption{xyz}{\def\mgl@image@ext{.xyz}} -%\DeclareOption{stl}{\def\mgl@image@ext{.stl}} -%\DeclareOption{off}{\def\mgl@image@ext{.off}} -%\DeclareOption{prc}{\def\mgl@image@ext{.prc}} - -\ExecuteOptions{final,eps} +% \end{macrocode} +% +% Other options produce an error message. +% \begin{macrocode} +\DeclareOption*{\@unknownoptionerror} +% \end{macrocode} +% +% The default options for the package are set to |final| and |eps|, then the options passed by the user are processed. +% \begin{macrocode} + +\ExecuteOptions{final,on,nocomments,eps} \ProcessOptions* +% \end{macrocode} +% +% Declare the \meta{key}=\meta{value} pairs for the |mgl| environment and companions. The pairs corresponding to the |\includegraphics| command are repeated, and saved in the |\graph@keys| macro; the new option is |imgext|, which can be used to overwrite the default extension chosen for the package. Notice that |imgext| can be any supported extension by MathGL but, of course, not all of them are supported by \LaTeX. +% \begin{macrocode} \define@key{mgl@keys}{bb}{\g@addto@macro{\graph@keys}{bb=#1,}} \define@key{mgl@keys}{bbllx}{\g@addto@macro{\graph@keys}{bbllx=#1,}} @@ -337,6 +578,10 @@ \define@key{mgl@keys}{read}{\g@addto@macro{\graph@keys}{read=#1,}} \define@key{mgl@keys}{command}{\g@addto@macro{\graph@keys}{command=#1,}} \define@key{mgl@keys}{imgext}{\def\mgl@image@ext{.#1}} +% \end{macrocode} + +% We do the same for the |\mglplot| command. The options for the |\includegraphics| command are repeated and stored in the |\graph@keys| macro; the new options are |imgext|, which is the same as the one for the |mgl| environment, and |setup|, which is used to specify a keyword associated to a block of MGL code stored by the |mglsetup| environment. +% \begin{macrocode} \define@key{mglplot@keys}{bb}{\g@addto@macro{\graph@keys}{bb=#1,}} \define@key{mglplot@keys}{bbllx}{\g@addto@macro{\graph@keys}{bbllx=#1,}} @@ -361,208 +606,374 @@ \define@key{mglplot@keys}{ext}{\g@addto@macro{\graph@keys}{ext=#1,}} \define@key{mglplot@keys}{read}{\g@addto@macro{\graph@keys}{read=#1,}} \define@key{mglplot@keys}{command}{\g@addto@macro{\graph@keys}{command=#1,}} -\define@key{mglplot@keys}{outext}{\def\mglplot@output@ext{.#1}} -\define@key{mglplot@keys}{settings}{\def\mglplot@settings{#1}} - -\def\mgl@dir{} -\def\mgldir#1{% - \def\mgl@dir{#1}% -} -\@onlypreamble\mgldir - -\newwrite\mgl@script -\AtBeginDocument{% - \immediate\openout\mgl@script="\mgl@dir\jobname.mgl"% -} -\AtEndDocument{% - \immediate\write\mgl@script{}% - \immediate\write\mgl@script{stop}% - \mgl@func% - \immediate\closeout\mgl@script% - \immediate\write18{mglconv -n "\mgl@dir\jobname.mgl"}% -} +\define@key{mglplot@keys}{imgext}{\def\mglplot@image@ext{.#1}} +\define@key{mglplot@keys}{setup}{\def\mglplot@setup{#1}} +% \end{macrocode} -\def\mglplotsettings@defined{} -\newcommand\mglplotsettings[1][generic]{% - \test@mglplotsettings@defined{#1}% - \expandafter\def\csname mgl@setup@#1\endcsname{\immediate\write\mgl@script{}}% - \g@addto@macro{\mglplotsettings@defined}{#1,}% - \let\do\@makeother \dospecials% - \endlinechar`\^^M \catcode`\^^M\active% - \catcode`\ =10% - \expandafter\mglplotsettings@write@line% -} -\def\test@mglplotsettings@defined#1{% - \def\this@setup{#1}% - \@for\mglplotsettings@name:=\mglplotsettings@defined\do{% - \ifx\this@mglplotsettings\mglplotsettings@name% - \PackageWarning{\mgl@name}{Redefining "#1" setup for \noexpand\mglplot}% - \fi% - }% -} -\begingroup% - \catcode`\^^M\active% - \gdef\mglplotsettings@write@line#1^^M{% - \def\next@action{% - \expandafter\g@addto@macro\csname mgl@setup@\this@setup\endcsname{\immediate\write\mgl@script{#1}}% - \mglplotsettings@write@line% - }% - \test@end@mglplotsettings{#1}% - \next@action% - }% -\endgroup -\begingroup% - \escapechar=-1 \relax% - \xdef\end@mglplotsettings{\string\\end\string\{mglplotsettings\string\}}% -\endgroup -\def\test@end@mglplotsettings#1{% - \edef\this@line{#1}% - \ifx\this@line\end@mglplotsettings% - \def\next@action{\end{mglplotsettings}}% - \fi% -} -\def\endmglplotsettings{} +% A special extension for images created with MathGL is ``.tex'', so we store it within a macro for future use. +% \begin{macrocode} \def\TeX@ext{.tex} -\newcounter{mgl@image@no} - -\def\mglplot{% - \@ifnextchar[{\@mglplot}{\@mglplot[]}% -} -\def\@mglplot[#1]{% - \def\mglplot@settings{generic}% - \def\graph@keys{}% - \setkeys{mglplot@keys}{#1}% - \stepcounter{mgl@image@no}% - \ifx\csname mgl@setup@\mglplot@settings\endcsname\@undefined% - \PackageError{\mgl@name}{Setup "\mglplot@settings" undefined}{}% - \else% - \csname mgl@setup@\mglplot@settings\endcsname% - \fi% - \@@mglplot% -} -\long\def\@@mglplot#1{% - \immediate\write\mgl@script{\detokenize{#1}}% - \immediate\write\mgl@script{write '\mgl@dir\jobname-mgl-\arabic{mgl@image@no}\mgl@image@ext'}% - \immediate\write\mgl@script{reset}% - \mgl@include@image{\mgl@dir\jobname-mgl-\arabic{mgl@image@no}}% -} - -\newcommand\mgl[1][]{% - \def\graph@keys{}% - \setkeys{mgl@keys}{#1}% - \let\do\@makeother \dospecials% - \endlinechar`\^^M \catcode`\^^M\active% - \catcode`\ =10% - \mgl@write@line% -} -\begingroup% - \escapechar=-1 \relax% - \xdef\end@mgl{\string\\end\string\{mgl\string\}}% -\endgroup -\begingroup% - \catcode`\^^M\active% - \gdef\mgl@write@line#1^^M{% - \def\next@action{% - \immediate\write\mgl@script{#1}% - \mgl@write@line% - }% - \test@end@mgl{#1}% - \next@action% - }% -\endgroup -\def\test@end@mgl#1{% - \edef\this@line{#1}% - \ifx\this@line\end@mgl% - \def\next@action{\end{mgl}}% - \fi% -} -\def\endmgl{% - \stepcounter{mgl@image@no}% - \immediate\write\mgl@script{write '\mgl@dir\jobname-mgl-\arabic{mgl@image@no}\mgl@image@ext'}% - \immediate\write\mgl@script{reset}% - \mgl@include@image{\mgl@dir\jobname-mgl-\arabic{mgl@image@no}}% -} +% \end{macrocode} +% \subsection{Environments for MGL code embedding} +% \begin{macro}{\mgl@include@image} +% This is the command that will include graphics created by MGL code. We can't use |\includegraphics| directly for two reasons: first, MathGL has the capacity of creating graphics with \LaTeX{} commands (with the aid of the \textsf{tikz} package), in which case there is no image, but a ``.tex'' file, which has to be included; the second reason is that |\includegraphics| issues an error when the specified image doesn't exist, and remember that the first \LaTeX{} run only creates the images at the end of the document, but they cannot be included yet, so there would be a lot of errors in the process of compilation. +% \begin{macrocode} \def\mgl@include@image#1{% +% \end{macrocode} +% If the extension of the graphics is ``.tex'', +% \begin{macrocode} \ifx\mgl@image@ext\TeX@ext% +% \end{macrocode} +% first check if the file exists; +% \begin{macrocode} \IfFileExists{#1.tex}{% +% \end{macrocode} +% if so, include it, +% \begin{macrocode} \include{#1}% }{% +% \end{macrocode} +% otherwise use the command |\mgl@img@not@found| to create a warning. +% \begin{macrocode} \mgl@img@not@found{#1}% }% +% \end{macrocode} +% If the extension of the graphics is not ``.tex'', +% \begin{macrocode} \else% +% \end{macrocode} +% we define the next action to be performed as warning that requested image doesn't exist. This is stored in the |\next@action| macro, and will be overwriten if the image is found. +% \begin{macrocode} \def\next@action{\mgl@img@not@found{#1}}% +% \end{macrocode} +% For every extension supported by \mglTeX{}, +% \begin{macrocode} \@for\img@ext:=\Gin@extensions\do{% +% \end{macrocode} +% if the file with the current extension exists, +% \begin{macrocode} \IfFileExists{#1\img@ext}{% +% \end{macrocode} +% overwrite the |\next@action| macro so it uses the |\includegraphics| command to include the image, otherwise do nothing. +% \begin{macrocode} \def\next@action{% \expandafter\includegraphics\expandafter[\graph@keys]{#1}% }% }{}% }% +% \end{macrocode} +% Execute |\next@action|. +% \begin{macrocode} \next@action% \fi% } +% \end{macrocode} +% \end{macro} +% \begin{macro}{\mgl@img@not@found} +% \changes{v2.0}{2014/11/22}{Fixed incompatibility of command \texttt{\textbackslash{}mgl@img@not@found} with environment \texttt{tabular}} +% When this command is called with the name of a MGL image as argument, it issues a package warning indicating that the MGL image can't be found, and creates the following box in the corresponding position: +% \begin{center} +% \framebox[10em]{% +% \centering% +% \bfseries\Huge% +% \vbox{MGL\\image\\not\\found}% +% }% +% \end{center} +% \begin{macrocode} \def\mgl@img@not@found#1{% - \PackageWarning{\mgl@name}{MGL image "#1" not found}% + \PackageWarning{mgltex}{MGL image "#1" not found}% \framebox[10em]{% \centering% \bfseries\Huge% - \vbox{MGL\\image\\not\\found}% + \begin{tabular}{c}MGL\\image\\not\\found\end{tabular}% }% } +% \end{macrocode} +% \end{macro} +% \begin{environment}{mgl} +% This environment writes its contents to the main script \meta{document}.mgl. +% +% First, declare a counter for numeration and naming of the images created from the main script \meta{document}.mgl. +% \begin{macrocode} -\bgroup% - \escapechar=-1\relax% - \xdef\end@mgladdon{\string\\end\string\{mgladdon\string\}}% -\egroup% -\newenvironment{mgladdon}{% - \def\test@end@mgl##1{% - \edef\this@line{##1}% - \ifx\this@line\end@mgladdon% - \def\next@action{\end{mgladdon}}% - \fi% - }% - \mgl[]% -}{} - -\def\mgl@script@written{} +\newcounter{mgl@image@no} +% \end{macrocode} +% Create an output stream for the main script \meta{document}.mgl. +% \begin{macrocode} + +\newwrite\mgl@script +% \end{macrocode} +% Open the main script at the beginning of the document (at the moment of the |\begin{document}| command). +% \begin{macrocode} +\AtBeginDocument{% + \if@mgltex@on@% + \immediate\openout\mgl@script="\mgl@dir\jobname.mgl"% + \mglsignature@write\mgl@script% + \fi% +} +% \end{macrocode} +% At the end of the document (at the moment of the |\end{document}| command): +% \begin{macrocode} +\AtEndDocument{% +% \end{macrocode} +% write an empty line on the main script (just for elegance), +% \begin{macrocode} + \mgl@write\mgl@script{}% +% \end{macrocode} +% write the MGL \emph{stop} command to stop the MathGL compiler. +% \begin{macrocode} + \mgl@write\mgl@script{stop}% +% \end{macrocode} +% The |\mgl@func| is a buffer that contains instructions to write MGL functions declared with |mglfunc| environment. Here, we execute those instructions. +% \begin{macrocode} + \mgl@func% +% \end{macrocode} +% Close the main script. +% \begin{macrocode} + \immediate\closeout\mgl@script% +% \end{macrocode} +% Use the program |mglconv| (part of MathGL) to compile the main script. +% \begin{macrocode} + \mgl@write{18}{mglconv -n "\mgl@dir\jobname.mgl"}% +} + +% \end{macrocode} +% \begin{macro}{\mgl} +% The beginning of the |mgl| environment. +% \begin{macrocode} + +\newcommand\mgl[1][]{% +% \end{macrocode} +% First, process the \meta{key}=\meta{value} options for the environment. +% \begin{macrocode} + \def\graph@keys{}% + \setkeys{mgl@keys}{#1}% +% \end{macrocode} +% Now, make every ``special'' character (\textbackslash, \$, etc.) of category $13$ (other), i.e., make them common characters. +% \begin{macrocode} + \let\do\@makeother \dospecials% +% \end{macrocode} +% Add an end-line character at the end of every read line. This end-line character is declared active (category 12). +% \begin{macrocode} + \endlinechar`\^^M \catcode`\^^M\active% +% \end{macrocode} +% Spaces characters are category 10; the spaces at the beginning of every read line are ignored. +% \begin{macrocode} + \catcode`\ =10% +% \end{macrocode} +% Finally, the command that reads/writes each line of the contents of the environment is called. +% \begin{macrocode} + \mgl@write\mgl@script{quality \mgl@quality}% + \expandafter\mgl@write@line% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\end@mgl} +% Define a macro that contains the |\end{mgl}| command as text, so the end of the environment can be tested by comparison with it. From now on, we adopt the convention that the macro |\end@|\meta{environment} contains the |\end{|\meta{environment}|}| command as text. +% \begin{macrocode} +\begingroup% + \escapechar=-1 \relax% + \xdef\end@mgl{\string\\end\string\{mgl\string\}}% +\endgroup +% \end{macrocode} +% \end{macro} + +% \begin{macro}{\mgl@write@line} +% This command reads each line from the |mgl| environment and writes it to the general script \meta{document}.mgl. We start by wrapping the new command with a \LaTeX{} group because we will change the code of the end-line character to ``active'' \emph{locally}, so we can indicate |\mgl@write@line| that its argument stretches until the end of the line. +% \begin{macrocode} +\begingroup% +% \end{macrocode} + +% Declare the end-line character as active. +% \begin{macrocode} + \catcode`\^^M\active% +% \end{macrocode} +% The command |\mgl@write@line| reads its argument until it finds the end-line character, i.e., it reads a complete line of text, which is MGL code in this case. +% \begin{macrocode} + \gdef\mgl@write@line#1^^M{% +% \end{macrocode} +% The next action to be performed is write the read line of code to the main script \meta{document}.mgl and recursively call |\mgl@write@line|, so it reads the next line of text. These instructions are stored in the |\next@action| macro. +% \begin{macrocode} + \def\next@action{% + \mgl@write\mgl@script{#1}% + \mgl@write@line% + }% +% \end{macrocode} +% The |\test@end@mgl| command test if the end of the |mgl| environment has been reached in the current line. If so, it overwrites the |\next@action| macro so it doesn't read the next line of text, but executes the |\end{mgl}| command (see bellow). +% \begin{macrocode} + \test@end@mgl{#1}% +% \end{macrocode} +% Execute the |\next@action| macro. +% \begin{macrocode} + \next@action% + }% +\endgroup +% \end{macrocode} +% \end{macro} + +% \begin{macro}{\test@end@mgl} +% This command checks if its argument is equal to |\end@mgl|; if so, overwrites the |\next@action| macro (see above) so that it executes the end of the |mgl| environment (|\end{mgl}|). Here, we adopt another convention: the |\test@end@|\meta{environment} checks if its argument is equal to |\end@|\meta{environment}, i.e., tests whether the |\end{|\meta{environment}|}| command has been reached, in which case, it executes that command. +% \begin{macrocode} +\def\test@end@mgl#1{% + \edef\this@line{#1}% + \ifx\this@line\end@mgl% + \def\next@action{\end{mgl}}% + \fi% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\endmgl} +% The end of the environment is quite simple: the |mgl@image@no| counter is increased by one, then the MGL command to save the corresponding image is written; the name given to the image is ``\meta{document}-mgl-\meta{mgl@image@no}.\meta{mgl@image@ext}''; the MGL \emph{reset} command is written in the main script to clean the image and restart graphic parameters for the following image to be created. Finally, the |\mgl@include@image| command (see below) is called to include the image created. +% \begin{macrocode} +\def\endmgl{% + \stepcounter{mgl@image@no}% + \mgl@write\mgl@script{% + write '\mgl@dir\jobname-mgl-\arabic{mgl@image@no}\mgl@image@ext'% + }% + \mgl@write\mgl@script{reset}% + \mgl@write\mgl@script{}% + \mgl@include@image{\mgl@dir\jobname-mgl-\arabic{mgl@image@no}}% +} +% \end{macrocode} +% \end{macro} +% \end{environment} +% \begin{environment}{mgladdon} +% This is just a modification of the |mgl| environment. First, we define the |\end@mgladdon| to contain the |\end{mgladdon}| command as text as specified above, then we redefined |\test@end@mgl| command to check for the end of the |mgladdon| environment instead of |mgl|, finally we call the |\mgl| command with no options. The end of |mgladdon| is defined to do nothing. +% \begin{macrocode} + +\bgroup% + \escapechar=-1\relax% + \xdef\end@mgladdon{\string\\end\string\{mgladdon\string\}}% +\egroup% +\newenvironment{mgladdon}{% + \def\test@end@mgl##1{% + \edef\this@line{##1}% + \ifx\this@line\end@mgladdon% + \def\next@action{\end{mgladdon}}% + \fi% + }% + \mgl[]% +}{} +% \end{macrocode} +% \end{environment} +% \begin{environment}{mglcode} +% This is like |mgl|, but it writes its contents to its own file, whose name is passed as mandatory argument. +% \begin{macro}{\mgl@script@written} + +% The names of all the scripts written from the \LaTeX{} document will be stored in this macro, so we can later check if some script is being overwritten. This macro will be used in other environments. +% \begin{macrocode} +\def\mgl@script@written{} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\mgl@out@stream} +% Declare an output stream for MGL scripts other than the main one. This stream will be used in other environments. +% \begin{macrocode} \newwrite\mgl@out@stream +% \end{macrocode} +% \end{macro} +% \begin{macro}{\mglcode} +% The beginning of the |mglcode| environment. +% \begin{macrocode} \newcommand\mglcode[2][]{% \def\graph@keys{}% +% \end{macrocode} +% Process the \meta{key}=\meta{value} options. These are the same for the |mgl| environment. +% \begin{macrocode} \setkeys{mgl@keys}{#1}% +% \end{macrocode} +% Test if a script with the same name is already created from the \LaTeX{} document. If so, a warning is issue, but we proceed anyway. +% \begin{macrocode} \test@mgl@script@written{#2}% +% \end{macrocode} +% Add the script's name to the |\mgl@script@written| macro. +% \begin{macrocode} \xdef\mgl@script@written{\mgl@script@written#2,}% +% \end{macrocode} +% Open the script for writing. +% \begin{macrocode} \def\this@script{#2}% - \immediate\openout\mgl@out@stream=\mgl@dir\this@script.mgl% + \if@mgltex@on@% + \immediate\openout\mgl@out@stream=\mgl@dir\this@script.mgl% + \mglsignature@write\mgl@out@stream% + \fi% +% \end{macrocode} +% Here, we do the same changes of categories as in the |mgl| environment, except for the spaces, which in this case will be respected, even the ones at the beginning of each like, i.e., we will write each line \emph{verbatim}. +% \begin{macrocode} \let\do\@makeother \dospecials% \endlinechar`\^^M \catcode`\^^M\active% \obeyspaces% - \mglcode@write@line% +% \end{macrocode} +% Call the command that will write each line of the contents of the environment. +% \begin{macrocode} + \expandafter\mglcode@write@line% } +% \end{macrocode} +% \end{macro} +% \begin{macro}{\test@mgl@script@written} +% The macro that checks is we are overwriting any script. +% \begin{macrocode} \def\test@mgl@script@written#1{% +% \end{macrocode} +% For every script already written (whose name is stored in |\mgl@script@written|), check if the current script's name matches; if so, issue a warning telling we are overwriting, but proceed. +% \begin{macrocode} \edef\this@script{#1}% \@for\mgl@script@name:=\mgl@script@written\do{% \ifx\this@script\mgl@script@name% - \PackageWarning{\mgl@name}{Overwriting MGL script "\this@script.mgl"}% + \PackageWarning{mgltex}{Overwriting MGL script "\this@script.mgl"}% \fi% }% } +% \end{macrocode} +% \end{macro} +% \begin{macro}{\mglcode@write@line} +% This writes each line of the contents of the |mglcode| environment. However, contrary to the case of the |\mgl@write@line| command, it doesn't read line by line, but character by character, and stores each word in |\mgl@word| and each line in |\mgl@line|. +% \begin{macrocode} +\newtoks\mgl@word +\newtoks\mgl@line \def\mglcode@write@line#1{% +% \end{macrocode} +% The next action (stored as |\next@action|) is to read the following character, unless overwritten later. +% \begin{macrocode} \let\next@action\mglcode@write@line% +% \end{macrocode} +% If the current character is an end-line character, +% \begin{macrocode} \expandafter\if#1\^^M% - \immediate\write\mgl@out@stream{\the\mgl@line}% - \mgl@line{}% +% \end{macrocode} +% write the contents of |\mgl@line|, i.e., the current line, and clean |\mgl@word| and |\mgl@line|; +% \begin{macrocode} + \mgl@write\mgl@out@stream{\the\mgl@line}% \mgl@word{}% + \mgl@line{}% +% \end{macrocode} +% if the current character is a space, clean |\mgl@word|, but add the space to |\mgl@line|; +% \begin{macrocode} \else\expandafter\if#1\space% \mgl@word{}% \mgl@line\expandafter{\the\mgl@line#1}% +% \end{macrocode} +% otherwise, the current character is alphanumeric and is added both to |\mgl@word| and |\mgl@line|, and +% \begin{macrocode} \else% \mgl@word\expandafter{\the\mgl@word#1}% \mgl@line\expandafter{\the\mgl@line#1}% +% \end{macrocode} +% we test if the current word (|\mgl@word|) is |\end{mglcode}|, in which case, |\next@action| is overwritten to |\end{mglcode}|. +% \begin{macrocode} \test@end@mglcode{\the\mgl@word}% \fi\fi% +% \end{macrocode} +% Finally, execute |\next@action|. +% \begin{macrocode} \next@action% } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\test@end@mglcode} +% The |\test@end@mglcode| checks if it's argument is equal to |\end@mglcode|, in which case overwrites |\next@action| to |\end{mglcode}|. +% \begin{macrocode} \begingroup% \escapechar=-1\relax% \xdef\end@mglcode{\string\\end\string\{mglcode\string\}}% @@ -573,11 +984,26 @@ \def\next@action{\end{mglcode}}% \fi% } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\endmglcode} +% The end of the |mglcode| environment. It closes the output stream |\mgl@out@stream|, and calls the \textsf{mglconv} program (part of MathGL) to execute the script. Finally, the |\mgl@include@image| command is used to include the image created. +% \begin{macrocode} \def\endmglcode{% \immediate\closeout\mgl@out@stream% - \immediate\write18{mglconv "\mgl@dir\this@script.mgl" -o "\mgl@dir\this@script\mgl@image@ext"}% + \mgl@write{18}{% + mglconv "\mgl@dir\this@script.mgl" -s "\mgl@dir\mglcommonscript.mgl" -o "\mgl@dir\this@script\mgl@image@ext"% + }% \mgl@include@image{\mgl@dir\this@script}% } +% \end{macrocode} +% \end{macro} +% \end{environment} +% +% \begin{environment}{mglscript} +% This is just a modification of the |mglcode| environment. First, we define the |\end@mglscript| macro; then we modify the |\test@end@mglcode| to check for |\end{mglscript}| instead of |\end{mglcode}|; finally, we call the |\mglcode| macro with the same mandatory argument as |mglscript|. The |\end{mglscript}| just closes the output stream |\mgl@out@stream|, but doesn't create nor includes any image. +% \begin{macrocode} \bgroup% \escapechar=-1\relax% @@ -594,19 +1020,61 @@ }{% \immediate\closeout\mgl@out@stream% } +% \end{macrocode} +% \end{environment} +% +% \begin{environment}{mglfunc} +% This environment is used to create MGL functions in the main script \meta{document}.mgl. +% \begin{macro}{\mglfunc@defined} +% Within this macro we will store the names of the MGL functions already defined from the \LaTeX{} document, so that we can check if we are overwriting one of them +% \begin{macrocode} \def\mglfunc@defined{} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\mgl@func} +% This is a buffer to store the instructions to write the MGL functions code when the |\end{document}| command is called. This is done this way, because the functions have to be after the \emph{stop} command from the MGL language, which stops the execution of the MGL compiler, so no code should be after the \emph{stop}, except for functions. +% \begin{macrocode} \def\mgl@func{} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\mglgunc} +% The beginning of the |mglfunc| environment. +% \begin{macrocode} + \newcommand\mglfunc[2][0]{% +% \end{macrocode} +% First, check if a function with the current name is already defined, in which case we issue a warning, but proceed anyway. +% \begin{macrocode} \test@mglfunc@defined{#2}% +% \end{macrocode} +% Add the name of the current function to the list of functions defined. +% \begin{macrocode} \g@addto@macro{\mglfunc@defined}{#2,}% +% \end{macrocode} +% \end{macro} +% Here we do the same changes of categories as in the |mgl| environment. +% \begin{macrocode} \let\do\@makeother \dospecials% \endlinechar`\^^M \catcode`\^^M\active% \catcode`\ =10% - \g@addto@macro{\mgl@func}{\immediate\write\mgl@script{}}% - \g@addto@macro{\mgl@func}{\immediate\write\mgl@script{func '#2' #1}}% - \expandafter\mglfunc@ignore@line% +% \end{macrocode} +% Write an empty line in the main script just for elegance (and to visually separate different functions, too). +% \begin{macrocode} + \g@addto@macro{\mgl@func}{\mgl@write\mgl@script{}}% +% \end{macrocode} +% Write the heading of the function. +% \begin{macrocode} + \g@addto@macro{\mgl@func}{\mgl@write\mgl@script{func '#2' #1}}% +% \end{macrocode} +% Call the command that will write each line of the contents of the environment. +% \begin{macrocode} + \expandafter\mglfunc@write@line% } +% \end{macrocode} +% \begin{macro}{\test@mglfunc@defined} +% This command tests if a function with a given name---given as argument---is already defined from the \LaTeX{} document; if so, a warning will be issued indicating multiple definitions for the same function, but we will proceed anyway. +% \begin{macrocode} \def\test@mglfunc@defined#1{% \def\this@func{#1}% \@for\mglfunc@name:=\mglfunc@defined\do{% @@ -615,20 +1083,42 @@ \fi% }% } +% \end{macrocode} +% \end{macro} +% We declare \emph{locally} the end-line character as active. +% \begin{macrocode} \begingroup% \catcode`\^^M\active% - \gdef\mglfunc@ignore@line#1^^M{% - \expandafter\mglfunc@write@line% - } +% \end{macrocode} +% \begin{macro}{\mglfunc@write@line} +% This is the command that reads each line of code of the |mglfunc| environment, and stores in the buffer |\mgl@func| the instructions to write each of these lines. +% \begin{macrocode} \gdef\mglfunc@write@line#1^^M{% +% \end{macrocode} +% The next action (|\next@action|) is to store in the buffer the instruction to write the current line, and then call recursively the |\mglfunc@write@line| command, unless overwritten below. +% \begin{macrocode} \def\next@action{% - \g@addto@macro{\mgl@func}{\immediate\write\mgl@script{#1}}% - \mglfunc@write@line% + \g@addto@macro{\mgl@func}{\mgl@write\mgl@script{#1}}% + \expandafter\mglfunc@write@line% }% +% \end{macrocode} +% Check for the end of the |mglfunc| environment, in which case, |\next@action| is redefined to be |\end{mglfunc}|. +% \begin{macrocode} \test@end@mglfunc{#1}% +% \end{macrocode} +% Execute |\next@action|. +% \begin{macrocode} \next@action% }% +% \end{macrocode} +% \end{macro} +% \begin{macrocode} \endgroup +% \end{macrocode} +% \begin{macro}{\end@mglfunc} +% \begin{macro}{\test@end@mglfunc} +% By now, we already know now these two commands work. +% \begin{macrocode} \begingroup% \escapechar=-1 \relax% \xdef\end@mglfunc{\string\\end\string\{mglfunc\string\}}% @@ -639,110 +1129,438 @@ \def\next@action{\end{mglfunc}}% \fi% } +% \end{macrocode} +% \end{macro} +% \end{macro} +% \begin{macro}{\endmglfunc} +% Just stores in the buffer the instruction that closes the MGL function with the \emph{return} command. +% \begin{macrocode} \def\endmglfunc{% - \g@addto@macro{\mgl@func}{\immediate\write\mgl@script{return}}% + \g@addto@macro{\mgl@func}{\mgl@write\mgl@script{return}}% } -\def\mglblock#1{% - \test@mgl@script@written{#1}% - \xdef\mgl@script@written{\mgl@script@written#1,}% - \def\this@script{#1}% +% \begin{environment}{mglcommon} +% Writes its contents to a common script that will be executed together with each of the other scripts. It is useful to define constants ---for example--- that will be available to all other scripts. +% \begin{macro}{\mglcommonscript} +% \changes{v2.0}{2014/11/22}{Add \texttt{\backslash{}mglcommonscript} user-definable macro} +% We define a macro to store the name of the setup script that will contain common code to all other scripts. The default name is \emph{common\_script}.mgl. +% \begin{macrocode} + +\def\mglcommonscript{mgl_common_script} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\end@mglcommon} +% We already know the purpose of this macro. +% \begin{macrocode} +\bgroup% + \escapechar=-1\relax% + \xdef\end@mglcommon{\string\\end\string\{mglcommon\string\}}% +\egroup% +% \end{macrocode} +% \end{macro} +% +% The |mglcommon| environment redefines the |\test@end@mglcode| so it detects the |\end{mglcommon}| command instead, and uses the |\mglcode| to create the common script. +% \begin{macrocode} +\newenvironment{mglcommon}{% + \def\test@end@mglcode##1{% + \edef\this@word{##1}% + \ifx\this@word\end@mglcommon% + \def\next@action{\end{mglcommon}}% + \fi% + }% + \mglcode{\mglcommonscript}% +}{% + \mgl@write\mgl@out@stream{quality \mgl@quality}% + \immediate\closeout\mgl@out@stream% +} +% \end{macrocode} +% This environment can be used only in the preamble. +% \begin{macrocode} +\@onlypreamble\mglcommon +% \end{macrocode} +% \end{environment} +% \begin{environment}{mglsignature} +% This environment is used to declare signature text that will be written as comment on every script generated by \mglTeX. +% \begin{macro}{\mglcomm} +% We store the comment sign for MGL in this macro. For that, we need to declare \emph{locally} the symbol ``\#'' as one of category $12$. +% \begin{macrocode} +\bgroup + \catcode`#=12 + \gdef\mglcomm{#} +\egroup +% \end{macrocode} +% \end{macro} +% \begin{macro}{\mgltexsignature} +% \changes{v2.0}{2014/11/22}{Add \texttt{\textbackslash{}mgltexsignature} user-definable macro} +% The buffer where the signature will be stored. Here, we declare a default signature. +% \begin{macrocode} +\def\mgltexsignature{% + \mglcomm^^J% + \mglcomm\space This file was autogenerated from the document \jobname.tex on date \today^^J% + \mglcomm% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\mglsignature} +% The beginning of the |mglsignature| environment. +% \begin{macrocode} +\newcommand\mglsignature{% +% \end{macrocode} +% Delete |\mgltexsignature| contents. +% \begin{macrocode} + \def\mgltexsignature{}% +% \end{macrocode} +% We do the same changes of category as in the |mglcode| environment. +% \begin{macrocode} \let\do\@makeother \dospecials% \endlinechar`\^^M \catcode`\^^M\active% - \obeyspaces% - \immediate\openout\mgl@out@stream="\mgl@dir\this@script.mgl"% - \mglblock@ignore@line% -} -\def\mglblock@ignore@line#1{% - \mglblock@write@line% -} -\def\mglblock@write@line#1{% - \let\next@action\mglblock@write@line% - \expandafter\if#1\^^M% - \immediate\write\mgl@out@stream{\the\mgl@line}% - \mgl@line{}% - \mgl@word{}% - \else\expandafter\if#1\space% - \mgl@word{}% - \mgl@line\expandafter{\the\mgl@line#1}% - \else% - \mgl@word\expandafter{\the\mgl@word#1}% - \mgl@line\expandafter{\the\mgl@line#1}% - \test@end@mglblock{\the\mgl@word}% - \fi\fi% - \next@action% + \@vobeyspaces% +% \end{macrocode} +% Call the command that will store each line of the signature in the |\mgltexsignature| macro. +% \begin{macrocode} + \expandafter\mglsignature@write@line% } +% \end{macrocode} +% \end{macro} +% \begin{macro}{\end@mglsignature} +% We already know the purpose of this command. +% \begin{macrocode} \begingroup% - \escapechar=-1\relax% - \xdef\end@mglblock{\string\\end\string\{mglblock\string\}}% -\endgroup% -\def\test@end@mglblock#1{% - \edef\this@word{#1}% - \ifx\this@word\end@mglblock% - \def\next@action{\end{mglblock}}% + \escapechar=-1 \relax% + \xdef\end@mglsignature{\string\\end\string\{mglsignature\string\}}% +\endgroup +% \end{macrocode} +% \end{macro} +% \begin{macro}{\mglsignature@write@line} +% This command stores each line of the signature in the |\mgltexsignature| buffer. +% \begin{macrocode} +\begingroup% +% \catcode`\\=0% + \catcode`\^^M\active% + \gdef\mglsignature@write@line#1^^M{% +% \end{macrocode} +% Unless overwritten later, the next action (|\next@action|) is to store the current line of the signature in the |\mgltexsignature| buffer, ending with a new-line character, and call |\mglsignature@write@line| recursively. +% \begin{macrocode} + \def\next@action{% + \g@addto@macro{\mgltexsignature}{\mglcomm\space#1^^J} + \mglsignature@write@line% + }% +% \end{macrocode} +% We check if the current line is |\end{mglsignature}|, in which case, overwrite |\next@action| to that command. +% \begin{macrocode} + \test@end@mglsignature{#1}% +% \end{macrocode} +% Execute |\next@action|. +% \begin{macrocode} + \next@action% + }% +\endgroup +% \end{macrocode} +% \end{macro} +% \begin{macro}{\test@end@mglsignature} +% We already know the purpose of this command. +% \begin{macrocode} +\def\test@end@mglsignature#1{% + \edef\this@line{#1}% + \ifx\this@line\end@mglsignature% + \def\next@action{\end{mglsignature}}% \fi% } -\newread\mgl@in@stream -\def\endmglblock{% - \immediate\closeout\mgl@out@stream% - \immediate\openin\mgl@in@stream="\mgl@dir\this@script.mgl"% - \begingroup% - \list{\itshape\footnotesize\arabic{mgl@verb@line@no}.}{}% - \setlength{\labelsep}{1em}% - \itemsep\z@skip% - \leftskip\z@skip\rightskip\z@skip% - \verbatim@font% - \parindent\z@\parfillskip\@flushglue\parskip\z@skip% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\endmglsignature} +% The end of the |mglsignature| environment. It just adds a comment sign to |\mgltexsignature| for elegance. +% \begin{macrocode} +\def\endmglsignature{% + \g@addto@macro{\mgltexsignature}{\mglcomm} +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\mglsignature@write} +% It takes care of writing the signature to the output stream which is passed as its argument. +% \begin{macrocode} +\def\mglsignature@write#1{\mgl@write#1{\mgltexsignature}} +% \end{macrocode} +% \end{macro} +% \end{environment} +% \begin{environment}{mglcomment} +% \changes{v2.0}{2014/11/22}{Add the |mglcomment| environment.} +% An environment to contain multiline comments that won't be printed to the document nor to any script in the case of the user passes the option |nocomments| to the package, and it'll print the comments if the |comments| option is passed to the package. +% +% \begin{macro}{\mglcomment} +% The beginning of the |mglcomment| environment. Here, we change categories of special characters (like \#, \@, etc.) and indicate to obey lines and spaces. +% \begin{macrocode} + +\def\mglcomment{% + \let\do\@makeother\dospecials% + \obeylines% \@vobeyspaces% - \mglblock@read@line% + \verbatim@font% + \small% +% \end{macrocode} +% Call the command that will ignore all the commentary. +% \begin{macrocode} + \mgl@comment% } -\def\mglblock@read@line{% - \stepcounter{mgl@verb@line@no}% - \read\mgl@in@stream to \this@line% - \ifeof\mgl@in@stream% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\mgl@comment} +% This command reads everything up to the |\end{mglcomment}| and ignores it if the |nocomments| option is passed to the package, or prints it otherwise. (We use the trick to consider everything up to the |\end{mglcomment}| the argument of |\mgl@comment|.) +% \begin{macrocode} +\begingroup% +% \end{macrocode} +% We do some adequate changes of code locally, so that \texttt{\textbackslash}, \texttt{\{} and \texttt{\}} are special, and \texttt{\textbar}, \texttt{[} and \texttt{]} take their functions, respectively. +% \begin{macrocode} + \catcode`|=0\catcode`[= 1\catcode`]=2\catcode`\{=12\catcode`\}=12\catcode`\\=12% +% \end{macrocode} +% Define |\mgl@comment| to do nothing with its argument if the |nocomments| option has been passed to the package; otherwise, if the |comments| options has been passed, it will print the commentary, with delimiters to indicate where it starts and where it ends. Then call the end of the environment. +% \begin{macrocode} + |gdef|mgl@comment#1\end{mglcomment}[% + |if@mgl@comments@% + |begin[center]% + <------------------ MGL comment ------------------>% + #1% + <------------------ MGL comment ------------------>% + |end[center]% + |fi% + |end[mglcomment]]% +|endgroup% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\endmglcomment} +% The end of the environment; it does nothing. +% \begin{macrocode} +\def\endmglcomment{} +% \end{macrocode} +% \end{macro} +% \end{environment} + +% \subsection{Fast creation of graphics} +% \begin{environment}{mglsetup} +% This environment is used to store lines of code that need to be repeated many times. Later, the |\mglplot| command (see below) uses this lines of code without the need to repeat them. +% \begin{macro}{\mglsetup@defined} +% A macro to list the names of all the setups already defined. +% \begin{macrocode} + +\def\mglsetup@defined{} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\mglsetup} +% The beginning of the |mglsetup| environment. It accepts one optional argument, which is a name (keyword) to be associated to the block of code. +% \begin{macrocode} +\newcommand\mglsetup[1][generic]{% +% \end{macrocode} +% Test if there already exists a setup with the current name; if so, issue a warning of redefinition of the setup, but proceed anyway. +% \begin{macrocode} + \test@mglsetup@defined{#1}% +% \end{macrocode} +% Add the name of the current setup to |\mglsetup@defined|. +% \begin{macrocode} + \g@addto@macro{\mglsetup@defined}{#1,}% +% \end{macrocode} +% Define a new buffer which will contain the instructions to write the contents of the environment when the |\mglplot|. command is used. If the |mglsetup| environment is called like |\mglsetup\oarg{\meta{keyword}}|, the buffer will be called |\mgl@setup@\meta{keyword}|; if no name is given, use ``generic'' as keyword. +% \begin{macrocode} + \expandafter\def\csname mgl@setup@#1\endcsname{\mgl@write\mgl@script{}}% + \expandafter\def\csname mgl@setup@#1\endcsname{\mgl@write\mgl@script{quality \mgl@quality}}% +% \end{macrocode} +% Here, we do the same changes of category for special characters as we did in the |mgl| environment. +% \begin{macrocode} + \let\do\@makeother \dospecials% + \endlinechar`\^^M \catcode`\^^M\active% + \catcode`\ =10% +% \end{macrocode} +% Call the command that will store in the buffer the instructions to write the lines of MGL code. +% \begin{macrocode} + \expandafter\mglsetup@write@line% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\test@mglsetup@defined} +% For every name stored in |\mglsetup@defined|, check if its argument (the name of the current setup) matches, in which case we will issue a warning, but proceed. +% \begin{macrocode} +\def\test@mglsetup@defined#1{% + \def\this@setup{#1}% + \@for\mglsetup@name:=\mglsetup@defined\do{% + \ifx\this@mglsetup\mglsetup@name% + \PackageWarning{\mgl@name}{Redefining "#1" setup for \noexpand\mglplot}% + \fi% + }% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\mglsetup@write@line} +% This works exactly as the |\mgl@write@line|, but instead of writing directly to a script, it stores the writing instructions in the buffer. +% \begin{macrocode} +\begingroup% + \catcode`\^^M\active% + \gdef\mglsetup@write@line#1^^M{% \def\next@action{% - \immediate\closein\mgl@in@stream% - \endlist% - \endgroup% + \expandafter\g@addto@macro\csname mgl@setup@\this@setup\endcsname{% + \mgl@write\mgl@script{#1}% + }% + \expandafter\mglsetup@write@line% }% + \test@end@mglsetup{#1}% + \next@action% + }% +\endgroup +% \end{macrocode} +% \end{macro} +% \begin{macro}{\end@mglsetup} +% \begin{macro}{\test@end@mglsetup} +% We already know how these two macros work +% \begin{macrocode} +\begingroup% + \escapechar=-1 \relax% + \xdef\end@mglsetup{\string\\end\string\{mglsetup\string\}}% +\endgroup +\def\test@end@mglsetup#1{% + \edef\this@line{#1}% + \ifx\this@line\end@mglsetup% + \def\next@action{\end{mglsetup}}% + \fi% +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \begin{macro}{\endmglsetup} +% The end of the |mglsetup| environment. It does nothing. +% \begin{macrocode} +\def\endmglsetup{} +% \end{macrocode} +% \end{macro} +% \end{environment} + +% \begin{macro}{\mglplot} +% This macro uses the blocks of code stored by |mglsetup| environments to complete the code contained in its mandatory argument. +% +% If there is an optional argument, make |\@mglplot| process it, otherwise pass no argument to |\@mglplot|. +% \begin{macrocode} + +\def\mglplot{% + \@ifnextchar[{\@mglplot}{\@mglplot[]}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@mglplot} +% This command receives one mandatory argument, but enclosed between brackets; so it receives the optional argument of |\mglplot|. +% \begin{macrocode} +\def\@mglplot[#1]{% +% \end{macrocode} +% Unless overwritten by the user with the |setup=\meta{setup}| option, the default setup is ``generic''; initialize the |\graph@keys| macro; process the \meta{key}=\meta{value} pairs passed by the user; increase the counter |mgl@image@no| for numbering and naming of images. +% \begin{macrocode} + \def\mglplot@setup{generic}% + \def\graph@keys{}% + \setkeys{mglplot@keys}{#1}% + \stepcounter{mgl@image@no}% +% \end{macrocode} +% If the given setup is undefined, issue a package error; otherwise, execute the buffer of the setup, which will write the contents of the corresponding |mglsetup| blocks to the general script. +% \begin{macrocode} + \ifx\csname mgl@setup@\mglplot@setup\endcsname\@undefined% + \PackageError{\mgl@name}{Setup "\mglplot@setup" undefined}{}% \else% - \def\next@action{% - \item\mbox{\this@line}% - \mglblock@read@line% - }% + \csname mgl@setup@\mglplot@setup\endcsname% \fi% - \next@action% +% \end{macrocode} +% Call |\@@mglplot| (see below). +% \begin{macrocode} + \@@mglplot% } +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@@mglplot} +% This command writes its argument verbatim to the main script, then writes the command to save the corresponding image, and the \emph{reset} command to prepare MathGL for the next image; finally, it uses the |\mgl@include@image| to include the corresponding graphics in the document. +% \begin{macrocode} +\long\def\@@mglplot#1{% + \mgl@write\mgl@script{\detokenize{#1}}% + \mgl@write\mgl@script{% + write '\mgl@dir\jobname-mgl-\arabic{mgl@image@no}\mgl@image@ext'% + }% + \mgl@write\mgl@script{reset}% + \mgl@include@image{\mgl@dir\jobname-mgl-\arabic{mgl@image@no}}% +} +% \end{macrocode} +% \end{macro} +% \subsection{Verbatim-like environments} +% \begin{macro}{mgl@verb@line@no} +% \noindent We create a counter to number the lines of code in verbatim-like environments. +% \begin{macrocode} \newcounter{mgl@verb@line@no} +% \end{macrocode} +% \end{macro} +% \begin{environment}{mglverbatim} +% This environment writes its contents \emph{verbatim} to the \LaTeX{} document, numbering each line of code. +% \begin{macro}{\mglverbatim} +% The beginning of the |mglverbatim| environment. +% \begin{macrocode} + \def\mglverbatim{% +% \end{macrocode} +% Initialize the counter for lines of code. +% \begin{macrocode} \setcounter{mgl@verb@line@no}{0}% +% \end{macrocode} +% We use the list environment to set the numeration of the lines of code that will be written to the \LaTeX{} document as items of the list. We also set the separation between lines of code, the indentation of the line, and some other length parameters. +% \begin{macrocode} \list{\itshape\footnotesize\arabic{mgl@verb@line@no}.}{}% \setlength{\labelsep}{1em}% \itemsep\z@skip% \leftskip\z@skip\rightskip\z@skip% - \verbatim@font% \parindent\z@\parfillskip\@flushglue\parskip\z@skip% +% \end{macrocode} +% We do the same changes of categories as in the |mglcode| environment. +% \begin{macrocode} \let\do\@makeother \dospecials% \endlinechar`\^^M \catcode`\^^M\active% \obeyspaces% - \mglverbatim@ignore@line% +% \end{macrocode} +% use verbatim font. +% \begin{macrocode} + \verbatim@font% +% \end{macrocode} +% Call the command that will write each line of the contents of the environment. +% \begin{macrocode} + \expandafter\mglverbatim@ignore@line% } +% \end{macrocode} +% \end{macro} +% \begin{macro}{\mglverbatim@ignore@line} +% This command ignores the first line of the |verbatim| environment, which is an empty line. +% \begin{macrocode} \def\mglverbatim@ignore@line#1{% - \mglverbatim@write@line% + \expandafter\mglverbatim@write@line% } -\newtoks\mgl@word -\newtoks\mgl@line +% \end{macrocode} +% \end{macro} +% \begin{macro}{\mglverbatim@write@line} +% Reads the contents of the |mglverbatim| character by character, and stores words in the |\mgl@word| buffer and lines in the |\mgl@line| buffer, just like the |mglcode| environment did. +% \begin{macrocode} \def\mglverbatim@write@line#1{% +% \end{macrocode} +% Unless overwritten later, the next action (|\next@action|) is recursively call |\mglverbatim@write@line|. +% \begin{macrocode} \let\next@action\mglverbatim@write@line% +% \end{macrocode} +% If the character read is an end-line character, +% \begin{macrocode} \expandafter\if#1\^^M% +% \end{macrocode} +% increase the line of code counter, write the line contained in |\mgl@line| as an item of the |list| environment, and clean |\mgl@word| and |\mgl@line|; +% \begin{macrocode} \stepcounter{mgl@verb@line@no}% \item\mbox{\the\mgl@line}% - \mgl@line{}% \mgl@word{}% + \mgl@line{}% +% \end{macrocode} +% if the character is a space, clean |\mgl@wors|, but add the space to |\mgl@line|; +% \begin{macrocode} \else\expandafter\if#1\space% \mgl@word{}% \mgl@line\expandafter{\the\mgl@line#1}% +% \end{macrocode} +% otherwise, the character is aphanumeric, so add it to the |\mgl@word| and |\mgl@line| buffers, and check if |\mgl@word| is |\end{mglverbatim}|, in which case overwrite |\next@action| to be that command. +% \begin{macrocode} \else% \mgl@word\expandafter{\the\mgl@word#1}% \mgl@line\expandafter{\the\mgl@line#1}% @@ -750,6 +1568,12 @@ \fi\fi% \next@action% } +% \end{macrocode} +% \end{macro} +% \begin{macro}{\end@mglverbatim} +% \begin{macro}{\test@end@mglverbatim} +% We already know the purpose of these macros. +% \begin{macrocode} \begingroup% \escapechar=-1\relax% \xdef\end@mglverbatim{\string\\end\string\{mglverbatim\string\}}% @@ -760,31 +1584,361 @@ \def\next@action{\end{mglverbatim}}% \fi% } +% \end{macrocode} +% \end{macro} +% \end{macro} +% \begin{macrocode} +% \end{macrocode} +% \begin{macro}{\endmglverbaim} +% The end of the |mglverbatim| environment. It just closes the |list| environment. +% \begin{macrocode} \def\endmglverbatim{\endlist} +% \end{macrocode} +% \end{macro} +% \end{environment} +% \begin{environment}{mglblock} +% This environment writes its contents to a script, whose name is passed as mandatory argument, ad then it also writes its contents to the \LaTeX{} document, numbering each line. +% \begin{macro}{\mglblock} +% The beginning of the |mglblock environment|. +% \begin{macrocode} + +\def\mglblock#1{% +% \end{macrocode} +% Check if the script already exists, in which case we issue a warning, but proceed anyway. +% \begin{macrocode} + \test@mgl@script@written{#1}% +% \end{macrocode} +% Add the name of the script to the list of scripts written. +% \begin{macrocode} + \xdef\mgl@script@written{\mgl@script@written#1,}% +% \end{macrocode} +% We make the same changes of categories as in the |mglcode| environment. +% \begin{macrocode} + \let\do\@makeother \dospecials% + \endlinechar`\^^M \catcode`\^^M\active% + \obeyspaces% +% \end{macrocode} +% Open the output stream for the current script. +% \begin{macrocode} + \def\this@script{#1}% + \if@mgltex@on@% + \immediate\openout\mgl@out@stream="\mgl@dir\this@script.mgl"% + \mglsignature@write\mgl@out@stream% + \fi% +% \end{macrocode} +% Call the command that will write each line of the contents of the environment. +% \begin{macrocode} + \expandafter\mglblock@write@line% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\mglblock@write@line} +% This macro reads characater by character the code inside |mglblock|, and uses the |\mgl@word| and |\mgl@line| buffers to store words and lines of codes, just like we did with the |mglcode| environment. +% \begin{macrocode} +\def\mglblock@write@line#1{% +% \end{macrocode} +% The next action (|\next@action|) is set to recursively call |\mglblock@write@line|, unless it is overwritten later. +% \begin{macrocode} + \let\next@action\mglblock@write@line% +% \end{macrocode} +% If the read character is an end-line character, write the contents of |\mgl@line| to the script, and the clean |\mgl@word| and |\mgl@line|; +% \begin{macrocode} + \expandafter\if#1\^^M% + \mgl@write\mgl@out@stream{\the\mgl@line}% + \mgl@word{}% + \mgl@line{}% +% \end{macrocode} +% if the read character if a space, clean |\mgl@word|, but add the space to |\mgl@line|; +% \begin{macrocode} + \else\expandafter\if#1\space% + \mgl@word{}% + \mgl@line\expandafter{\the\mgl@line#1}% +% \end{macrocode} +% otherwise, the character is alphnumeric, and should be added to |\mgl@word| and |\mgl@line|, and we test if |\mgl@word| is |\end{mglblock}|, in which case, we overwrite |\next@action| to that command. +% \begin{macrocode} + \else% + \mgl@word\expandafter{\the\mgl@word#1}% + \mgl@line\expandafter{\the\mgl@line#1}% + \test@end@mglblock{\the\mgl@word}% + \fi\fi% +% \end{macrocode} +% Execute |\next@action|. +% \begin{macrocode} + \next@action% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\end@mglblock} +% \begin{macro}{\test@end@mglblock} +% We already know the purpose of these macros. +% \begin{macrocode} +\begingroup% + \escapechar=-1\relax% + \xdef\end@mglblock{\string\\end\string\{mglblock\string\}}% +\endgroup% +\def\test@end@mglblock#1{% + \edef\this@word{#1}% + \ifx\this@word\end@mglblock% + \def\next@action{\end{mglblock}}% + \fi% +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \begin{macro}{\mgl@in@stream} +% We create an input stream to read from MGL scripts. +% \begin{macrocode} +\newread\mgl@in@stream +% \end{macrocode} +% \end{macro} +% \begin{macro}{\endmglblock} +% The end of the |mglblock| environment. +% \begin{macrocode} +\def\endmglblock{% +% \end{macrocode} +% Close the output stream. +% \begin{macrocode} + \immediate\closeout\mgl@out@stream% +% \end{macrocode} +% Open the input stream. +% \begin{macrocode} + \immediate\openin\mgl@in@stream="\mgl@dir\this@script.mgl"% +% \end{macrocode} +% Here, we use the |list| environment to set the numeration of the lines of code that will be written to the \LaTeX{} document as items of the list. We also set the separation between lines of code, the indentation of the line, and some other lenght parameters. +% \begin{macrocode} + \begingroup% + \list{\itshape\footnotesize\arabic{mgl@verb@line@no}.}{}% + \setlength{\labelsep}{1em}% + \itemsep\z@skip% + \leftskip\z@skip\rightskip\z@skip% + \parindent\z@\parfillskip\@flushglue\parskip\z@skip% +% \end{macrocode} +% Use the verbatim font, and obey spaces, including spaces at the beggining of the line. +% \begin{macrocode} + \verbatim@font% + \@vobeyspaces% +% \end{macrocode} +% Call the command that will write the lines of code to the \LaTeX{} document. +% \begin{macrocode} + \mglblock@read@line% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\mglblock@read@line} +% This command reads lines of code from the input stream and writes them as items of the |list| environment. +% \begin{macrocode} +\def\mglblock@read@line{% +% \end{macrocode} +% Increase the line counter. +% \begin{macrocode} + \stepcounter{mgl@verb@line@no}% +% \end{macrocode} +% Read a line from the input stream. +% \begin{macrocode} + \read\mgl@in@stream to \this@line% +% \end{macrocode} +% If the end of file has been reached, define |\next@action| to close the input stream, and en the |list| environment; +% \begin{macrocode} + \ifeof\mgl@in@stream% + \def\next@action{% + \immediate\closein\mgl@in@stream% + \endlist% + \endgroup% + }% +% \end{macrocode} +% otherwise, |\next@action| is write the read line as an item of the |list| environment, and recursively call |\mglblock@read@line|. +% \begin{macrocode} + \else% + \def\next@action{% + \item\mbox{\this@line}% + \mglblock@read@line% + }% + \fi% +% \end{macrocode} +% Execute |\next@action|. +% \begin{macrocode} + \next@action% +} +% \end{macrocode} +% \end{macro} +% \end{environment} +% \subsection{Working with external scripts} +% \begin{macro}{\mglgraphics} +% This command allows to generate and include graphics from a external (not embedded) script. +% \begin{macrocode} \newcommand\mglgraphics[2][]{% +% \end{macrocode} +% Initialize |\graph@keys|, which will contain the \meta{key}=\meta{value} options for the |\includegraphics|command. +% \begin{macrocode} \def\graph@keys{}% +% \end{macrocode} +% Process the \meta{key}=\meta{value} options passed by the user. +% \begin{macrocode} \setkeys{mgl@keys}{#1}% - \immediate\write18{mglconv "\mgl@dir#2.mgl" -o "\mgl@dir#2\mgl@image@ext"} +% \end{macrocode} +% Execute the program |mglconv| (included in MathGL) to compile the corresponding script. +% \begin{macrocode} + \mgl@write{18}{mglconv "\mgl@dir#2.mgl" -s "\mgl@dir\mglcommonscript.mgl" -o "\mgl@dir#2\mgl@image@ext"} +% \end{macrocode} +% Include the generated image with the |\mgl@include@image| command. +% \begin{macrocode} \mgl@include@image{\mgl@dir#2}% } +% \end{macrocode} +% \end{macro} +% \begin{macro}{\mglinclude} +% This command copies verbatim the contents of an external script, and numerates each line of code. +% \begin{macrocode} \def\mglinclude#1{% +% \end{macrocode} +% Initialize the line counter. +% \begin{macrocode} \setcounter{mgl@verb@line@no}{0}% +% \end{macrocode} +% Open the script in the input stream. +% \begin{macrocode} \immediate\openin\mgl@in@stream="\mgl@dir#1.mgl"% +% \end{macrocode} +% Here, we use the |list| environment to numerate each line of code as an item. We also set some length parameters. +% \begin{macrocode} \begingroup% \list{\itshape\footnotesize\arabic{mgl@verb@line@no}.}{}% \setlength{\labelsep}{1em}% \itemsep\z@skip% \leftskip\z@skip\rightskip\z@skip% - \verbatim@font% \parindent\z@\parfillskip\@flushglue\parskip\z@skip% +% \end{macrocode} +% We do the same changes of category as in the |mglcode| environment, and set the font to verbatim font. +% \begin{macrocode} \let\do\@makeother \dospecials% \endlinechar`\^^M \catcode`\^^M\active% \@vobeyspaces% + \verbatim@font% +% \end{macrocode} +% We (re)use the |\mglblock@read@line| command to numerate and write each line of code. +% \begin{macrocode} \mglblock@read@line% } +% \end{macrocode} +% \end{macro} +% \subsection{Additional commands} +% \begin{macro}{\mgldir} +% A command to specify a directory to write the scripts and create the images. +% First, we create a macro that will store the specified directory for later use. +% \begin{macrocode} + +\def\mgl@dir{} +% \end{macrocode} +% The command |\mgldir| is the only way to modify |\mgl@dir|. This is done so the user won't be able to modify the default directory, dangerously altering the internal behavior of the package. +% \begin{macrocode} +\def\mgldir#1{% + \def\mgl@dir{#1}% +} +% \end{macrocode} +% Declare |\mgldir| so that it can only be used in the preamble. This is because the main script \meta{document}.mgl is opened at the moment of the |\begin{document}| instruction. +% \begin{macrocode} +\@onlypreamble\mgldir +% \end{macrocode} +% \end{macro} +% \begin{macro}{\mgl@quality} +% We define a macro to store the quality. +% \begin{macrocode} +\def\mgl@quality{2} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\mglquality} +% This is used to define the quality for MGL graphics. +% \begin{macrocode} +\def\mglquality#1{% +% \end{macrocode} +% Write the quality command to a setup script. +% \begin{macrocode} + \def\mgl@quality{#1}% + \if@mgltex@on@% + \immediate\openout\mgl@out@stream="\mgl@dir\mglcommonscript.mgl"% + \mgl@write\mgl@out@stream{quality #1}% + \immediate\closeout\mgl@out@stream% +% \end{macrocode} +% Print an info message about the corresponding quality, or a warning if the quality doesn't exist. +% \begin{macrocode} + \ifcase#1 + \PackageInfo{mgltex}{Quality 0: No face drawing (fastest)}% + \or% + \PackageInfo{mgltex}{Quality 1: No color interpolation (fast)}% + \or% + \PackageInfo{mgltex}{Quality 2: High quality (normal)}% + \or% + \PackageInfo{mgltex}{Quality 3: High quality with 3d primitives (not implemented yet)}% + \or% + \PackageInfo{mgltex}{Quality 4: No face drawing, direct bitmap drawing (low memory usage)}% + \or% + \PackageInfo{mgltex}{Quality 5: No color interpolation, direct bitmap drawing (low memory usage)}% + \or% + \PackageInfo{mgltex}{Quality 6: High quality, direct bitmap drawing (low memory usage)}% + \or% + \PackageInfo{mgltex}{Quality 7: High quality with 3d primitives, direct bitmap drawing (not implemented yet)}% + \or% + \PackageInfo{mgltex}{Quality 8: Draw dots instead of primitives (extremely fast)}% + \else% + \PackageWarning{mgltex}{Quality #1 not available. Using default (2)}% + \fi% + \else% + \PackageWarning{mgltex}{mglTeX is off, quality changes won't have effect}% + \fi% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\mgltexon} +% \changes{v.2.0}{2014/11/15}{Add the command \texttt{\textbackslash mgltexon}} +% Has the same effect as the package option |on|, but its effect is local, meaning that works only from the point this command is called on. +% \begin{macrocode} + +\def\mgltexon{ + \@mgltex@on@true + \def\mgl@write##1##2{% + \immediate\write##1{##2}% + } +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\mgltexoff} +% \changes{v.2.0}{2014/11/15}{Add the command \texttt{\textbackslash mgltexoff}} +% Has the same effect as the package option |off|, but its effect is local. +% \begin{macrocode} +\def\mgltexoff{% + \@mgltex@on@false + \def\mgl@write##1##2{}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\mglcomments} +% \changes{v2.0}{2014/11/22}{Add the command \texttt{\textbackslash mglcomments}} +% Has the same effect as the package option |comments|, but its effect is local, meaning that works only from the point this command is called on. +% \begin{macrocode} + +\def\mglcomments{ + \@mgl@comments@true +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\mglnocomments} +% \changes{v2.0}{2014/11/22}{Add the command \texttt{\textbackslash mglnocomments}} +% Has the same effect as the package option |off|, but its effect is local. +% \begin{macrocode} +\def\mglnocomments{% + \@mgl@comments@false +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\mglTeX} +% Just pretty-prints the name of the package. +% \begin{macrocode} \def\mglTeX{mgl\TeX} % \end{macrocode} +% \end{macro} + + % \Finale \ No newline at end of file diff --git a/mgltex/mgltex.installer b/mgltex/mgltex.ins similarity index 100% rename from mgltex/mgltex.installer rename to mgltex/mgltex.ins diff --git a/mgltex/mgltex.pdf b/mgltex/mgltex.pdf index 61542e961b87f3f5dc290d96979e0413542cd7ce..fb4fedfe9a45fcc560e47c830ec8c60b2585331f 100644 GIT binary patch literal 244484 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࿎>V^5BYY?mz+jouG!)g58zknQdyEjc3C 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

b0i^JTLILaDBlEn2h83t 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�L|74D(3k63$o@-Hr$iRJ$> zb`C+J1lzi9+t_W}wr$(CZFldsZQHhO+qUhu<3*escW?%`rd5-yL1wJ{*ZMx_-3NTa zyY?MMYmIhXL{06IhIY4jr%CS7Q7=M|6j&^vDow`>)ag1Fd3N`KWjxy3Ome5qP2rYL zVoRkL&T`jLE#J;xvmmYv&P6wl=%@cy22GWaf3o1sYqYHVFd8?x5pNuphx(*66* zKl*eo9dx{e)qu%8NzW3=Jk$d*xs=hx&78PyWqlRTNjx1W-1`OUI! zH=1cvc~zzHOPAL-ytqzDzI;3Fr3K%{3!bB|V!NALCjejN{ zTX&89r!|90ooogzuUcXtD zpNP{I&{Tk7Lhd;4IBc^ST)XvOmuAD*$fmL#f3(?xzMu6wv%1JaRsrsNH1s|)-gST6 zd}MRq`?w}Xk$bLQ3mqVQsqEi=;u5~-W!?2a@7W zm=7x`5RQAtJ;UL5 z!DGqAOykrBBJ!5@sile^N_+T-s89RK2Ah@esh-HulZlSs5}*y5Jubivepi`B_%56( z7y1B8d*QwRWaK$Phcr9qS3*@gWKP@c?vzyR*-`ILuQgLj9&yD{Tu+?lz_U00kXEUD zp#x8{$Gn(5NZGd6xoIpVm2n%E_}C?GY=cT{tJ-(L53_!+k1%bPV`rE^BTt4;ApUC? zoH1RsL0f-k+b=J^88c^%sBN4q8UXCJ%k0e_Ay)F$iqS1V4_uz97>XRh)ef6|pI)x( zo+qnae|AOQz6


-@comment -@comment +
+ + @end html @end macro @macro external {} @html -@comment
-@comment -@comment -@comment
+
+ + +
@comment -@comment -@comment
+ +
-@comment +
+ + @end html @end macro @macro external {} @html -@comment
-@comment -@comment -@comment
+
+ + +
@comment -@comment -@comment
+ +

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 Uu;oWk2;yY}AyQLIDoY{$KZVC=^Z)<= diff --git a/mgltex/mgltex.sty b/mgltex/mgltex.sty index 33fea4b..a4eb204 100644 --- a/mgltex/mgltex.sty +++ b/mgltex/mgltex.sty @@ -23,25 +23,42 @@ %% You should have received a copy of the GNU General Public License along %% with this program. If not, see . %% -\def\mgl@name{mgltex} -\def\mgl@date{2014/09/16} -\def\mgl@version{1.0} -\def\mgl@description{Embed MGL code into LaTeX documents} - \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{\mgl@name}[\mgl@date\space v.\mgl@version\space\mgl@description] +\ProvidesPackage{mgltex}[/2014/11/22 v2.0 Embed MGL scripts in LaTeX documents] + \RequirePackage{keyval} \RequirePackage{graphicx} + \DeclareOption{draft}{% \PassOptionsToPackage{\CurrentOption}{graphicx}% } \DeclareOption{final}{% \PassOptionsToPackage{\CurrentOption}{graphicx}% } +\newif\if@mgltex@on@ +\DeclareOption{on}{% + \@mgltex@on@true% + \def\mgl@write#1#2{% + \immediate\write#1{#2}% + } +} +\DeclareOption{off}{% + \@mgltex@on@false% + \def\mgl@write#1#2{}% +} +\newif\if@mgl@comments@ +\DeclareOption{comments}{% + \@mgl@comments@true% +} +\DeclareOption{nocomments}{% + \@mgl@comments@false% +} -\DeclareGraphicsExtensions{.png,.eps,.jpg,.jpeg,.bps,.pdf,.epsz,.eps.gz,.bpsz,.bps.gz,.gif} +\DeclareGraphicsExtensions{% + .png,.eps,.jpg,.jpeg,.bps,.pdf,.epsz,.eps.gz,.bpsz,.bps.gz,.gif% +} \DeclareOption{jpg}{\def\mgl@image@ext{.jpg}} \DeclareOption{jpeg}{\def\mgl@image@ext{.jpeg}} @@ -54,8 +71,9 @@ \DeclareOption{gif}{\def\mgl@image@ext{.gif}} \DeclareOption{tex}{\def\mgl@image@ext{.tex}} +\DeclareOption*{\@unknownoptionerror} -\ExecuteOptions{final,eps} +\ExecuteOptions{final,on,nocomments,eps} \ProcessOptions* \define@key{mgl@keys}{bb}{\g@addto@macro{\graph@keys}{bb=#1,}} @@ -83,6 +101,7 @@ \define@key{mgl@keys}{command}{\g@addto@macro{\graph@keys}{command=#1,}} \define@key{mgl@keys}{imgext}{\def\mgl@image@ext{.#1}} + \define@key{mglplot@keys}{bb}{\g@addto@macro{\graph@keys}{bb=#1,}} \define@key{mglplot@keys}{bbllx}{\g@addto@macro{\graph@keys}{bbllx=#1,}} \define@key{mglplot@keys}{bblly}{\g@addto@macro{\graph@keys}{bblly=#1,}} @@ -106,116 +125,84 @@ \define@key{mglplot@keys}{ext}{\g@addto@macro{\graph@keys}{ext=#1,}} \define@key{mglplot@keys}{read}{\g@addto@macro{\graph@keys}{read=#1,}} \define@key{mglplot@keys}{command}{\g@addto@macro{\graph@keys}{command=#1,}} -\define@key{mglplot@keys}{outext}{\def\mglplot@output@ext{.#1}} -\define@key{mglplot@keys}{settings}{\def\mglplot@settings{#1}} +\define@key{mglplot@keys}{imgext}{\def\mglplot@image@ext{.#1}} +\define@key{mglplot@keys}{setup}{\def\mglplot@setup{#1}} -\def\mgl@dir{} -\def\mgldir#1{% - \def\mgl@dir{#1}% -} -\@onlypreamble\mgldir - -\newwrite\mgl@script -\AtBeginDocument{% - \immediate\openout\mgl@script="\mgl@dir\jobname.mgl"% -} -\AtEndDocument{% - \immediate\write\mgl@script{}% - \immediate\write\mgl@script{stop}% - \mgl@func% - \immediate\closeout\mgl@script% - \immediate\write18{mglconv -n "\mgl@dir\jobname.mgl"}% -} -\def\mglplotsettings@defined{} -\newcommand\mglplotsettings[1][generic]{% - \test@mglplotsettings@defined{#1}% - \expandafter\def\csname mgl@setup@#1\endcsname{\immediate\write\mgl@script{}}% - \g@addto@macro{\mglplotsettings@defined}{#1,}% - \let\do\@makeother \dospecials% - \endlinechar`\^^M \catcode`\^^M\active% - \catcode`\ =10% - \expandafter\mglplotsettings@write@line% -} -\def\test@mglplotsettings@defined#1{% - \def\this@setup{#1}% - \@for\mglplotsettings@name:=\mglplotsettings@defined\do{% - \ifx\this@mglplotsettings\mglplotsettings@name% - \PackageWarning{\mgl@name}{Redefining "#1" setup for \noexpand\mglplot}% - \fi% - }% -} -\begingroup% - \catcode`\^^M\active% - \gdef\mglplotsettings@write@line#1^^M{% - \def\next@action{% - \expandafter\g@addto@macro\csname mgl@setup@\this@setup\endcsname{\immediate\write\mgl@script{#1}}% - \mglplotsettings@write@line% +\def\TeX@ext{.tex} +\def\mgl@include@image#1{% + \ifx\mgl@image@ext\TeX@ext% + \IfFileExists{#1.tex}{% + \include{#1}% + }{% + \mgl@img@not@found{#1}% + }% + \else% + \def\next@action{\mgl@img@not@found{#1}}% + \@for\img@ext:=\Gin@extensions\do{% + \IfFileExists{#1\img@ext}{% + \def\next@action{% + \expandafter\includegraphics\expandafter[\graph@keys]{#1}% + }% + }{}% }% - \test@end@mglplotsettings{#1}% \next@action% - }% -\endgroup -\begingroup% - \escapechar=-1 \relax% - \xdef\end@mglplotsettings{\string\\end\string\{mglplotsettings\string\}}% -\endgroup -\def\test@end@mglplotsettings#1{% - \edef\this@line{#1}% - \ifx\this@line\end@mglplotsettings% - \def\next@action{\end{mglplotsettings}}% \fi% } -\def\endmglplotsettings{} +\def\mgl@img@not@found#1{% + \PackageWarning{mgltex}{MGL image "#1" not found}% + \framebox[10em]{% + \centering% + \bfseries\Huge% + \begin{tabular}{c}MGL\\image\\not\\found\end{tabular}% + }% +} -\def\TeX@ext{.tex} \newcounter{mgl@image@no} -\def\mglplot{% - \@ifnextchar[{\@mglplot}{\@mglplot[]}% -} -\def\@mglplot[#1]{% - \def\mglplot@settings{generic}% - \def\graph@keys{}% - \setkeys{mglplot@keys}{#1}% - \stepcounter{mgl@image@no}% - \ifx\csname mgl@setup@\mglplot@settings\endcsname\@undefined% - \PackageError{\mgl@name}{Setup "\mglplot@settings" undefined}{}% - \else% - \csname mgl@setup@\mglplot@settings\endcsname% +\newwrite\mgl@script +\AtBeginDocument{% + \if@mgltex@on@% + \immediate\openout\mgl@script="\mgl@dir\jobname.mgl"% + \mglsignature@write\mgl@script% \fi% - \@@mglplot% } -\long\def\@@mglplot#1{% - \immediate\write\mgl@script{\detokenize{#1}}% - \immediate\write\mgl@script{write '\mgl@dir\jobname-mgl-\arabic{mgl@image@no}\mgl@image@ext'}% - \immediate\write\mgl@script{reset}% - \mgl@include@image{\mgl@dir\jobname-mgl-\arabic{mgl@image@no}}% +\AtEndDocument{% + \mgl@write\mgl@script{}% + \mgl@write\mgl@script{stop}% + \mgl@func% + \immediate\closeout\mgl@script% + \mgl@write{18}{mglconv -n "\mgl@dir\jobname.mgl"}% } + \newcommand\mgl[1][]{% \def\graph@keys{}% \setkeys{mgl@keys}{#1}% \let\do\@makeother \dospecials% \endlinechar`\^^M \catcode`\^^M\active% \catcode`\ =10% - \mgl@write@line% + \mgl@write\mgl@script{quality \mgl@quality}% + \expandafter\mgl@write@line% } \begingroup% \escapechar=-1 \relax% \xdef\end@mgl{\string\\end\string\{mgl\string\}}% \endgroup + \begingroup% + \catcode`\^^M\active% \gdef\mgl@write@line#1^^M{% \def\next@action{% - \immediate\write\mgl@script{#1}% + \mgl@write\mgl@script{#1}% \mgl@write@line% }% \test@end@mgl{#1}% \next@action% }% \endgroup + \def\test@end@mgl#1{% \edef\this@line{#1}% \ifx\this@line\end@mgl% @@ -224,36 +211,12 @@ } \def\endmgl{% \stepcounter{mgl@image@no}% - \immediate\write\mgl@script{write '\mgl@dir\jobname-mgl-\arabic{mgl@image@no}\mgl@image@ext'}% - \immediate\write\mgl@script{reset}% - \mgl@include@image{\mgl@dir\jobname-mgl-\arabic{mgl@image@no}}% -} -\def\mgl@include@image#1{% - \ifx\mgl@image@ext\TeX@ext% - \IfFileExists{#1.tex}{% - \include{#1}% - }{% - \mgl@img@not@found{#1}% - }% - \else% - \def\next@action{\mgl@img@not@found{#1}}% - \@for\img@ext:=\Gin@extensions\do{% - \IfFileExists{#1\img@ext}{% - \def\next@action{% - \expandafter\includegraphics\expandafter[\graph@keys]{#1}% - }% - }{}% - }% - \next@action% - \fi% -} -\def\mgl@img@not@found#1{% - \PackageWarning{\mgl@name}{MGL image "#1" not found}% - \framebox[10em]{% - \centering% - \bfseries\Huge% - \vbox{MGL\\image\\not\\found}% + \mgl@write\mgl@script{% + write '\mgl@dir\jobname-mgl-\arabic{mgl@image@no}\mgl@image@ext'% }% + \mgl@write\mgl@script{reset}% + \mgl@write\mgl@script{}% + \mgl@include@image{\mgl@dir\jobname-mgl-\arabic{mgl@image@no}}% } \bgroup% @@ -278,26 +241,31 @@ \test@mgl@script@written{#2}% \xdef\mgl@script@written{\mgl@script@written#2,}% \def\this@script{#2}% - \immediate\openout\mgl@out@stream=\mgl@dir\this@script.mgl% + \if@mgltex@on@% + \immediate\openout\mgl@out@stream=\mgl@dir\this@script.mgl% + \mglsignature@write\mgl@out@stream% + \fi% \let\do\@makeother \dospecials% \endlinechar`\^^M \catcode`\^^M\active% \obeyspaces% - \mglcode@write@line% + \expandafter\mglcode@write@line% } \def\test@mgl@script@written#1{% \edef\this@script{#1}% \@for\mgl@script@name:=\mgl@script@written\do{% \ifx\this@script\mgl@script@name% - \PackageWarning{\mgl@name}{Overwriting MGL script "\this@script.mgl"}% + \PackageWarning{mgltex}{Overwriting MGL script "\this@script.mgl"}% \fi% }% } +\newtoks\mgl@word +\newtoks\mgl@line \def\mglcode@write@line#1{% \let\next@action\mglcode@write@line% \expandafter\if#1\^^M% - \immediate\write\mgl@out@stream{\the\mgl@line}% - \mgl@line{}% + \mgl@write\mgl@out@stream{\the\mgl@line}% \mgl@word{}% + \mgl@line{}% \else\expandafter\if#1\space% \mgl@word{}% \mgl@line\expandafter{\the\mgl@line#1}% @@ -320,7 +288,9 @@ } \def\endmglcode{% \immediate\closeout\mgl@out@stream% - \immediate\write18{mglconv "\mgl@dir\this@script.mgl" -o "\mgl@dir\this@script\mgl@image@ext"}% + \mgl@write{18}{% + mglconv "\mgl@dir\this@script.mgl" -s "\mgl@dir\mglcommonscript.mgl" -o "\mgl@dir\this@script\mgl@image@ext"% + }% \mgl@include@image{\mgl@dir\this@script}% } @@ -342,15 +312,16 @@ \def\mglfunc@defined{} \def\mgl@func{} + \newcommand\mglfunc[2][0]{% \test@mglfunc@defined{#2}% \g@addto@macro{\mglfunc@defined}{#2,}% \let\do\@makeother \dospecials% \endlinechar`\^^M \catcode`\^^M\active% \catcode`\ =10% - \g@addto@macro{\mgl@func}{\immediate\write\mgl@script{}}% - \g@addto@macro{\mgl@func}{\immediate\write\mgl@script{func '#2' #1}}% - \expandafter\mglfunc@ignore@line% + \g@addto@macro{\mgl@func}{\mgl@write\mgl@script{}}% + \g@addto@macro{\mgl@func}{\mgl@write\mgl@script{func '#2' #1}}% + \expandafter\mglfunc@write@line% } \def\test@mglfunc@defined#1{% \def\this@func{#1}% @@ -362,13 +333,10 @@ } \begingroup% \catcode`\^^M\active% - \gdef\mglfunc@ignore@line#1^^M{% - \expandafter\mglfunc@write@line% - } \gdef\mglfunc@write@line#1^^M{% \def\next@action{% - \g@addto@macro{\mgl@func}{\immediate\write\mgl@script{#1}}% - \mglfunc@write@line% + \g@addto@macro{\mgl@func}{\mgl@write\mgl@script{#1}}% + \expandafter\mglfunc@write@line% }% \test@end@mglfunc{#1}% \next@action% @@ -385,28 +353,228 @@ \fi% } \def\endmglfunc{% - \g@addto@macro{\mgl@func}{\immediate\write\mgl@script{return}}% + \g@addto@macro{\mgl@func}{\mgl@write\mgl@script{return}}% } + +\def\mglcommonscript{mgl_common_script} +\bgroup% + \escapechar=-1\relax% + \xdef\end@mglcommon{\string\\end\string\{mglcommon\string\}}% +\egroup% +\newenvironment{mglcommon}{% + \def\test@end@mglcode##1{% + \edef\this@word{##1}% + \ifx\this@word\end@mglcommon% + \def\next@action{\end{mglcommon}}% + \fi% + }% + \mglcode{\mglcommonscript}% +}{% + \mgl@write\mgl@out@stream{quality \mgl@quality}% + \immediate\closeout\mgl@out@stream% +} +\@onlypreamble\mglcommon +\bgroup + \catcode`#=12 + \gdef\mglcomm{#} +\egroup +\def\mgltexsignature{% + \mglcomm^^J% + \mglcomm\space This file was autogenerated from the document \jobname.tex on date \today^^J% + \mglcomm% +} +\newcommand\mglsignature{% + \def\mgltexsignature{}% + \let\do\@makeother \dospecials% + \endlinechar`\^^M \catcode`\^^M\active% + \@vobeyspaces% + \expandafter\mglsignature@write@line% +} +\begingroup% + \escapechar=-1 \relax% + \xdef\end@mglsignature{\string\\end\string\{mglsignature\string\}}% +\endgroup +\begingroup% + \catcode`\^^M\active% + \gdef\mglsignature@write@line#1^^M{% + \def\next@action{% + \g@addto@macro{\mgltexsignature}{\mglcomm\space#1^^J} + \mglsignature@write@line% + }% + \test@end@mglsignature{#1}% + \next@action% + }% +\endgroup +\def\test@end@mglsignature#1{% + \edef\this@line{#1}% + \ifx\this@line\end@mglsignature% + \def\next@action{\end{mglsignature}}% + \fi% +} +\def\endmglsignature{% + \g@addto@macro{\mgltexsignature}{\mglcomm} +} +\def\mglsignature@write#1{\mgl@write#1{\mgltexsignature}} + +\def\mglcomment{% + \let\do\@makeother\dospecials% + \obeylines% + \@vobeyspaces% + \verbatim@font% + \small% + \mgl@comment% +} +\begingroup% + \catcode`|=0\catcode`[= 1\catcode`]=2\catcode`\{=12\catcode`\}=12\catcode`\\=12% + |gdef|mgl@comment#1\end{mglcomment}[% + |if@mgl@comments@% + |begin[center]% + <------------------ MGL comment ------------------>% + #1% + <------------------ MGL comment ------------------>% + |end[center]% + |fi% + |end[mglcomment]]% +|endgroup% +\def\endmglcomment{} + + +\def\mglsetup@defined{} +\newcommand\mglsetup[1][generic]{% + \test@mglsetup@defined{#1}% + \g@addto@macro{\mglsetup@defined}{#1,}% + \expandafter\def\csname mgl@setup@#1\endcsname{\mgl@write\mgl@script{}}% + \expandafter\def\csname mgl@setup@#1\endcsname{\mgl@write\mgl@script{quality \mgl@quality}}% + \let\do\@makeother \dospecials% + \endlinechar`\^^M \catcode`\^^M\active% + \catcode`\ =10% + \expandafter\mglsetup@write@line% +} +\def\test@mglsetup@defined#1{% + \def\this@setup{#1}% + \@for\mglsetup@name:=\mglsetup@defined\do{% + \ifx\this@mglsetup\mglsetup@name% + \PackageWarning{\mgl@name}{Redefining "#1" setup for \noexpand\mglplot}% + \fi% + }% +} +\begingroup% + \catcode`\^^M\active% + \gdef\mglsetup@write@line#1^^M{% + \def\next@action{% + \expandafter\g@addto@macro\csname mgl@setup@\this@setup\endcsname{% + \mgl@write\mgl@script{#1}% + }% + \expandafter\mglsetup@write@line% + }% + \test@end@mglsetup{#1}% + \next@action% + }% +\endgroup +\begingroup% + \escapechar=-1 \relax% + \xdef\end@mglsetup{\string\\end\string\{mglsetup\string\}}% +\endgroup +\def\test@end@mglsetup#1{% + \edef\this@line{#1}% + \ifx\this@line\end@mglsetup% + \def\next@action{\end{mglsetup}}% + \fi% +} +\def\endmglsetup{} + + +\def\mglplot{% + \@ifnextchar[{\@mglplot}{\@mglplot[]}% +} +\def\@mglplot[#1]{% + \def\mglplot@setup{generic}% + \def\graph@keys{}% + \setkeys{mglplot@keys}{#1}% + \stepcounter{mgl@image@no}% + \ifx\csname mgl@setup@\mglplot@setup\endcsname\@undefined% + \PackageError{\mgl@name}{Setup "\mglplot@setup" undefined}{}% + \else% + \csname mgl@setup@\mglplot@setup\endcsname% + \fi% + \@@mglplot% +} +\long\def\@@mglplot#1{% + \mgl@write\mgl@script{\detokenize{#1}}% + \mgl@write\mgl@script{% + write '\mgl@dir\jobname-mgl-\arabic{mgl@image@no}\mgl@image@ext'% + }% + \mgl@write\mgl@script{reset}% + \mgl@include@image{\mgl@dir\jobname-mgl-\arabic{mgl@image@no}}% +} + +\newcounter{mgl@verb@line@no} + +\def\mglverbatim{% + \setcounter{mgl@verb@line@no}{0}% + \list{\itshape\footnotesize\arabic{mgl@verb@line@no}.}{}% + \setlength{\labelsep}{1em}% + \itemsep\z@skip% + \leftskip\z@skip\rightskip\z@skip% + \parindent\z@\parfillskip\@flushglue\parskip\z@skip% + \let\do\@makeother \dospecials% + \endlinechar`\^^M \catcode`\^^M\active% + \obeyspaces% + \verbatim@font% + \expandafter\mglverbatim@ignore@line% +} +\def\mglverbatim@ignore@line#1{% + \expandafter\mglverbatim@write@line% +} +\def\mglverbatim@write@line#1{% + \let\next@action\mglverbatim@write@line% + \expandafter\if#1\^^M% + \stepcounter{mgl@verb@line@no}% + \item\mbox{\the\mgl@line}% + \mgl@word{}% + \mgl@line{}% + \else\expandafter\if#1\space% + \mgl@word{}% + \mgl@line\expandafter{\the\mgl@line#1}% + \else% + \mgl@word\expandafter{\the\mgl@word#1}% + \mgl@line\expandafter{\the\mgl@line#1}% + \test@end@mglverbatim{\the\mgl@word}% + \fi\fi% + \next@action% +} +\begingroup% + \escapechar=-1\relax% + \xdef\end@mglverbatim{\string\\end\string\{mglverbatim\string\}}% +\endgroup% +\def\test@end@mglverbatim#1{% + \edef\this@word{#1}% + \ifx\this@word\end@mglverbatim% + \def\next@action{\end{mglverbatim}}% + \fi% +} +\def\endmglverbatim{\endlist} + \def\mglblock#1{% \test@mgl@script@written{#1}% \xdef\mgl@script@written{\mgl@script@written#1,}% - \def\this@script{#1}% \let\do\@makeother \dospecials% \endlinechar`\^^M \catcode`\^^M\active% \obeyspaces% - \immediate\openout\mgl@out@stream="\mgl@dir\this@script.mgl"% - \mglblock@ignore@line% -} -\def\mglblock@ignore@line#1{% - \mglblock@write@line% + \def\this@script{#1}% + \if@mgltex@on@% + \immediate\openout\mgl@out@stream="\mgl@dir\this@script.mgl"% + \mglsignature@write\mgl@out@stream% + \fi% + \expandafter\mglblock@write@line% } \def\mglblock@write@line#1{% \let\next@action\mglblock@write@line% \expandafter\if#1\^^M% - \immediate\write\mgl@out@stream{\the\mgl@line}% - \mgl@line{}% + \mgl@write\mgl@out@stream{\the\mgl@line}% \mgl@word{}% + \mgl@line{}% \else\expandafter\if#1\space% \mgl@word{}% \mgl@line\expandafter{\the\mgl@line#1}% @@ -436,8 +604,8 @@ \setlength{\labelsep}{1em}% \itemsep\z@skip% \leftskip\z@skip\rightskip\z@skip% - \verbatim@font% \parindent\z@\parfillskip\@flushglue\parskip\z@skip% + \verbatim@font% \@vobeyspaces% \mglblock@read@line% } @@ -459,58 +627,10 @@ \next@action% } -\newcounter{mgl@verb@line@no} -\def\mglverbatim{% - \setcounter{mgl@verb@line@no}{0}% - \list{\itshape\footnotesize\arabic{mgl@verb@line@no}.}{}% - \setlength{\labelsep}{1em}% - \itemsep\z@skip% - \leftskip\z@skip\rightskip\z@skip% - \verbatim@font% - \parindent\z@\parfillskip\@flushglue\parskip\z@skip% - \let\do\@makeother \dospecials% - \endlinechar`\^^M \catcode`\^^M\active% - \obeyspaces% - \mglverbatim@ignore@line% -} -\def\mglverbatim@ignore@line#1{% - \mglverbatim@write@line% -} -\newtoks\mgl@word -\newtoks\mgl@line -\def\mglverbatim@write@line#1{% - \let\next@action\mglverbatim@write@line% - \expandafter\if#1\^^M% - \stepcounter{mgl@verb@line@no}% - \item\mbox{\the\mgl@line}% - \mgl@line{}% - \mgl@word{}% - \else\expandafter\if#1\space% - \mgl@word{}% - \mgl@line\expandafter{\the\mgl@line#1}% - \else% - \mgl@word\expandafter{\the\mgl@word#1}% - \mgl@line\expandafter{\the\mgl@line#1}% - \test@end@mglverbatim{\the\mgl@word}% - \fi\fi% - \next@action% -} -\begingroup% - \escapechar=-1\relax% - \xdef\end@mglverbatim{\string\\end\string\{mglverbatim\string\}}% -\endgroup% -\def\test@end@mglverbatim#1{% - \edef\this@word{#1}% - \ifx\this@word\end@mglverbatim% - \def\next@action{\end{mglverbatim}}% - \fi% -} -\def\endmglverbatim{\endlist} - \newcommand\mglgraphics[2][]{% \def\graph@keys{}% \setkeys{mgl@keys}{#1}% - \immediate\write18{mglconv "\mgl@dir#2.mgl" -o "\mgl@dir#2\mgl@image@ext"} + \mgl@write{18}{mglconv "\mgl@dir#2.mgl" -s "\mgl@dir\mglcommonscript.mgl" -o "\mgl@dir#2\mgl@image@ext"} \mgl@include@image{\mgl@dir#2}% } @@ -522,15 +642,72 @@ \setlength{\labelsep}{1em}% \itemsep\z@skip% \leftskip\z@skip\rightskip\z@skip% - \verbatim@font% \parindent\z@\parfillskip\@flushglue\parskip\z@skip% \let\do\@makeother \dospecials% \endlinechar`\^^M \catcode`\^^M\active% \@vobeyspaces% + \verbatim@font% \mglblock@read@line% } +\def\mgl@dir{} +\def\mgldir#1{% + \def\mgl@dir{#1}% +} +\@onlypreamble\mgldir +\def\mgl@quality{2} +\def\mglquality#1{% + \def\mgl@quality{#1}% + \if@mgltex@on@% + \immediate\openout\mgl@out@stream="\mgl@dir\mglcommonscript.mgl"% + \mgl@write\mgl@out@stream{quality #1}% + \immediate\closeout\mgl@out@stream% + \ifcase#1 + \PackageInfo{mgltex}{Quality 0: No face drawing (fastest)}% + \or% + \PackageInfo{mgltex}{Quality 1: No color interpolation (fast)}% + \or% + \PackageInfo{mgltex}{Quality 2: High quality (normal)}% + \or% + \PackageInfo{mgltex}{Quality 3: High quality with 3d primitives (not implemented yet)}% + \or% + \PackageInfo{mgltex}{Quality 4: No face drawing, direct bitmap drawing (low memory usage)}% + \or% + \PackageInfo{mgltex}{Quality 5: No color interpolation, direct bitmap drawing (low memory usage)}% + \or% + \PackageInfo{mgltex}{Quality 6: High quality, direct bitmap drawing (low memory usage)}% + \or% + \PackageInfo{mgltex}{Quality 7: High quality with 3d primitives, direct bitmap drawing (not implemented yet)}% + \or% + \PackageInfo{mgltex}{Quality 8: Draw dots instead of primitives (extremely fast)}% + \else% + \PackageWarning{mgltex}{Quality #1 not available. Using default (2)}% + \fi% + \else% + \PackageWarning{mgltex}{mglTeX is off, quality changes won't have effect}% + \fi% +} + +\def\mgltexon{ + \@mgltex@on@true + \def\mgl@write##1##2{% + \immediate\write##1{##2}% + } +} +\def\mgltexoff{% + \@mgltex@on@false + \def\mgl@write##1##2{}% +} + +\def\mglcomments{ + \@mgl@comments@true +} +\def\mglnocomments{% + \@mgl@comments@false +} + \def\mglTeX{mgl\TeX} + \endinput %% %% End of file `mgltex.sty'. diff --git a/mgltex/sample.tex b/mgltex/sample.tex index 7fcda3b..5fe94f8 100644 --- a/mgltex/sample.tex +++ b/mgltex/sample.tex @@ -1,22 +1,25 @@ -\documentclass[12pt]{article} +\documentclass{article} -\usepackage[png]{mgltex} +\usepackage[png,comments]{mgltex} \title{\mglTeX{} package example} \author{Diego Sejas Viscarra, Alexey Balakin} \date{\today} \mgldir{scripts/} +\begin{mglcommon} + define gravity 9.81 +\end{mglcommon} + \begin{document} \maketitle +\noindent The \LaTeX{} package \textsf{\mglTeX} (was made by Diego Sejas Viscarra) allows one to make figures directly from MGL scripts located in \LaTeX{} file. -LaTeX package \texttt{mgltex} (was made by Diego Sejas Viscarra) allow one to make figures directly from MGL script located in LaTeX file. - -For using this package you need to specify \texttt{--shell-escape} option for \emph{latex/pdflatex} or manually run \emph{mglconv} tool with produced MGL scripts for generation of images. Don't forgot to run \emph{latex/pdflatex} second time to insert generated images into the output document. +For using this package you need to specify \texttt{--shell-escape} option for \emph{latex/pdflatex} or manually run \emph{mglconv} tool on produced MGL scripts for generation of images. Don't forget to run \emph{latex/pdflatex} a second time to insert the generated images into the output document. -The package may have following options: \texttt{draft}, \texttt{final} -- the same as in the \emph{graphicx} package; \texttt{jpg}, \texttt{jpeg}, \texttt{png} -- for export to JPEG/PNG images; \texttt{eps}, \texttt{epsz} -- for export to uncompressed/compressed EPS format as primitives; \texttt{bps}, \texttt{bpsz} -- for export to uncompressed/compressed EPS format as bitmap (don't work with \emph{pdflatex}), \texttt{pdf} -- for export to 3D PDF. +The package may have following options: \texttt{draft}, \texttt{final} --- the same as in the \emph{graphicx} package; \texttt{on}, \texttt{off} --- to activate/deactivate the creation of scripts and graphics; \texttt{comments}, \texttt{nocomments} --- to make visible/invisible commentaries contained inside \texttt{mglcomment} environments; \texttt{jpg}, \texttt{jpeg}, \texttt{png} --- to export graphics as JPEG/PNG images; \texttt{eps}, \texttt{epsz} --- to export to uncompressed/compressed EPS format as primitives; \texttt{bps}, \texttt{bpsz} --- to export to uncompressed/compressed EPS format as bitmap (doesn't work with \emph{pdflatex}); \texttt{pdf} --- to export to 3D PDF; \texttt{tex} --- to export to \LaTeX{}/\emph{tikz} document. The package defines the following environments: \begin{description} @@ -36,22 +39,90 @@ The package defines the following environments: Exactly the same as \texttt{mglblock}, but it doesn't write to a file. This environment doesn't have arguments. \item[mglfunc] Is used to define MGL functions. It takes one mandatory argument, which is the name of the function, plus one additional argument, which specifies the number of arguments of the function. The environment needs to contain only the body of the function, since the first and last lines are appended automatically, and the resulting code is written at the end of the general script, which is also written automatically. The warning is produced if 2 or more function with the same name is defined. -\item[mglplotsettings] +\item[mglsignature] +Used to defined a commentary that will be added to every script. It is useful to include signature text or license text. Observe this is a verbatim-like environment, so no \LaTeX{} command will be executed inside it, but will be copied as is. + +As an alternative to this method of declaring signatures, the user can manually redefine the signature macro \texttt{\textbackslash{}mgltexsignature}, according to the following rules: + \begin{itemize} + \item The positions of the comment signs for the MGL language have to be manually specified in the signature using the \texttt{\textbackslash{}mglcomm} macro. + \item The new-line character is declared as ``\verb|^^J|''. + \item A percent sign (\texttt{\%}) has to be added at the end of every physical line of \texttt{\textbackslash{}mgltexsignature}, otherwise an inelegant space at the beginning of every line will appear. + \item Any \LaTeX{} command can be used in this case. +\end{itemize} + For example, the default signature: + \begin{quote}\small + \mglcomm\\ + \mglcomm\ This script was generated from $<$document$>$.mgl on date $<$today$>$\\ + \mglcomm + \end{quote} + can be achieved with + \begin{verbatim} + \def\mgltexsignature{% + \mglcomm^^J% + \mglcomm\ This script was generated from \jobname.mgl on date \today^^J% + \mglcomm% + } + \end{verbatim} +\item[mglcomment] + Used to contain multiline commentaries. This commentaries will be visible/invisible in the output document, depending on the use of the package options \texttt{comments} and \texttt{nocomments} (see above), or the \texttt{\mglcomments} and \texttt{\mglnocomments} commands (see bellow). + + When, bisible, the comment will appear like this: + \begin{center} + \makeatletter + \verbatim@font + \makeatother + <------------------ MGL comment ------------------>\\ + $<$Commentary$>$\\ + <------------------ MGL comment ------------------>\\ + \end{center} +\item[mglsetup] If many scripts with the same code are to be written, the repetitive code can be written inside this environment only once, then this code will be used automatically every time the \texttt{\textbackslash{}mglplot} command is used (see below). It takes one optional argument, which is a name to be associated to the corresponding contents of the environment; this name can be passed to the \texttt{\textbackslash{}mglplot} command to use the corresponding block of code automatically (see below). \end{description} The package also defines the following commands: \begin{description} \item[\textbackslash{}mglplot] - It takes one mandatory argument, which is MGL instructions separated by the symbol ':' this argument can be more than one line long. It takes the same optional arguments as the \texttt{mgl} environment, plus an additional argument \emph{settings}, which indicates the name associated to a block of code inside a \texttt{mglplotsettings} environment. The code inside the mandatory argument will be appended to the block of code specified, and the resulting code will be written to the general script. + It takes one mandatory argument, which is MGL instructions separated by the symbol ':' this argument can be more than one line long. It takes the same optional arguments as the \texttt{mgl} environment, plus an additional argument \emph{settings}, which indicates the name associated to a block of code inside a \texttt{mglsetup} environment. The code inside the mandatory argument will be appended to the block of code specified, and the resulting code will be written to the general script. \item[\textbackslash{}mglgraphics] This command takes the same optional arguments as the \texttt{mgl} environment, and one mandatory argument, which is the name of a MGL script. This command will compile the corresponding script and include the resulting image. It is useful when you have a script outside the LaTeX document, and you want to include the image, but you don't want to type the script again. \item[\textbackslash{}mglinclude] This is like \texttt{\textbackslash{}mglgraphics} but, instead of creating/including the corresponding image, it writes the contents of the MGL script to the LaTeX document, and numerates the lines. \item[\textbackslash{}mgldir] This command can be used in the preamble of the document to specify a directory where LaTeX will save the MGL scripts and generate the corresponding images. This directory is also where \texttt{\textbackslash{}mglgraphics} and \texttt{\textbackslash{}mglinclude} will look for scripts. +\item[\textbackslash{}mglquality] + Can be used to adjust the quality of the MGL graphics produced. The following table shows the available qualities: + \begin{center} + \begin{tabular}{cl} + \hline + Quality & Description\\ + \hline + \hline + $0$ & No face drawing (fastest)\\ + \hline + $1$ & No color interpolation (fast)\\ + \hline + $2$ & High quality (normal)\\ + \hline + $3$ & High quality with 3d primitives (not implemented yet)\\ + \hline + $4$ & No face drawing, direct bitmap drawing (low memory usage)\\ + \hline + $5$ & No color interpolation, direct bitmap drawing (low memory usage)\\ + \hline + $6$ & High quality, direct bitmap drawing (low memory usage)\\ + \hline + $7$ & High quality with 3d primitives, direct bitmap drawing (not implemented yet)\\ + \hline + $8$ & Draw dots instead of primitives (extremely fast)\\ + \hline + \end{tabular} + \end{center} +\item[\textbackslash{}mgltexon, \textbackslash{}mgltexoff] + To activate/deactivate the creation of MGL scripts and images. Notice these commands have local behavior in the sense that their effect is from the point they are called on. +\item[\textbackslash{}mglcomment, \textbackslash{}mglnocomment] + To make visible/invisible the contents of the \texttt{mglcomment} environments. These commands have local effect too. \item[\textbackslash{}mglTeX] - It just pretty prints the name of the package ''\mglTeX''. + It just pretty prints the name of the package ``\mglTeX''. \end{description} @@ -271,17 +342,17 @@ Finally, you can just show MGL script itself An example of usage of \texttt{\textbackslash{}mglplot} command would be: \begin{verbatim} -\begin{mglplotsettings} +\begin{mglsetup} box '@{W9}' : axis -\end{mglplotsettings} -\begin{mglplotsettings}[2d] +\end{mglsetup} +\begin{mglsetup}[2d] box : axis grid 'xy' ';k' -\end{mglplotsettings} -\begin{mglplotsettings}[3d] +\end{mglsetup} +\begin{mglsetup}[3d] rotate 50 60 box : axis : grid 'xyz' ';k' -\end{mglplotsettings} +\end{mglsetup} \begin{figure}[!ht] \centering \mglplot[scale=0.5]{new a 200 'sin(pi*x)':plot a '2B'} @@ -300,31 +371,31 @@ An example of usage of \texttt{\textbackslash{}mglplot} command would be: \end{figure} \end{verbatim} -\begin{mglplotsettings} +\begin{mglsetup} box '@{W9}' : axis -\end{mglplotsettings} -\begin{mglplotsettings}[2d] +\end{mglsetup} +\begin{mglsetup}[2d] box : axis grid 'xy' ';k' -\end{mglplotsettings} -\begin{mglplotsettings}[3d] +\end{mglsetup} +\begin{mglsetup}[3d] rotate 50 60 box : axis : grid 'xyz' ';k' -\end{mglplotsettings} +\end{mglsetup} \begin{figure}[!ht] \centering \mglplot[scale=0.5]{new a 200 'sin(pi*x)':plot a '2B'} \end{figure} \begin{figure}[!ht] \centering - \mglplot[scale=0.5,settings=2d]{ + \mglplot[scale=0.5,setup=2d]{ fplot 'sin(pi*x)' '2B' : fplot 'cos(pi*x^2)' '2R' } \end{figure} \begin{figure}[!ht] \centering - \mglplot[width=0.5 \textwidth, settings=3d] + \mglplot[width=0.5 \textwidth, setup=3d] {fsurf 'sin(pi*x)+cos(pi*y)'} \end{figure} @@ -334,7 +405,61 @@ As an additional feature, when an image is not found or cannot be included, inst \mglgraphics{xyz} \end{figure} -The last sample is displaying the content of the MGL file using \texttt{\textbackslash{}mglinclude} command: +Let's display the content of the MGL file using \texttt{\textbackslash{}mglinclude} command: \mglinclude{Vectorial} +The following commentary will be visible, since \mglTeX{} has been called with the \texttt{comments} option. +\begin{verbatim} + \begin{mglcomment} + This is a visible commentary + that can have multiple lines + \end{mglcomment} +\end{verbatim} +The result is: +\begin{mglcomment} + This is a visible commentary + that can have multiple lines +\end{mglcomment} + +The following commentary won't be visible, since it is wrapped by \texttt{\textbackslash{}mglnocomments} and \texttt{\textbackslash{}mglcomments}. +\begin{verbatim} + \mglnocomments + \begin{mglcomment} + This is an invisible commentary + that can have multiple lines + \end{mglcomment} + \mglcomments +\end{verbatim} +\mglnocomments +\begin{mglcomment} + This is an invisible commentary + that can have multiple lines +\end{mglcomment} +\mglcomments + +The last example is the use of the \texttt{\textbackslash{}mgltexon} and \texttt{\textbackslash{}mgltexoff} commands. For example, the following image won't be generated: +\begin{verbatim} + \mgltexoff + \begin{figure}[!ht] + \centering + \begin{mgl} + box : axis + fplot 'sin(pi*x)' '2B' + \end{mgl} + \end{figure} + \mgltexon +\end{verbatim} +The result is: +\mgltexoff +\begin{figure}[!ht] + \centering + \begin{mgl} + box : axis + fplot 'sin(pi*x)' '2B' + \end{mgl} +\end{figure} +\mgltexon + + + \end{document} \ No newline at end of file diff --git a/src/addon.cpp b/src/addon.cpp index f523bed..d1185f0 100644 --- a/src/addon.cpp +++ b/src/addon.cpp @@ -45,22 +45,16 @@ void MGL_EXPORT mgl_strcls(char *str) delete []tmp; } //----------------------------------------------------------------------------- -int MGL_EXPORT_PURE mgl_strpos(const char *str,char *fnd) +long MGL_EXPORT_PURE mgl_strpos(const char *str,char *fnd) { const char *p=strstr(str,fnd); - int res; - if(p) res = p-str; - else res = -1; - return res; + return p?p-str:-1L; } //----------------------------------------------------------------------------- -int MGL_EXPORT_PURE mgl_chrpos(const char *str,char ch) +long MGL_EXPORT_PURE mgl_chrpos(const char *str,char ch) { const char *p=str?strchr(str,ch):0; - int res; - if(p) res = p-str; - else res = -1; - return res; + return p?p-str:-1L; } //----------------------------------------------------------------------------- MGL_EXPORT char *mgl_fgetstr(FILE *fp) @@ -112,7 +106,7 @@ void MGL_EXPORT mgl_test(const char *str, ...) char buf[256]; va_list lst; va_start(lst,str); - vsnprintf(buf,256,str,lst); + vsnprintf(buf,256,str,lst); buf[255]=0; va_end(lst); printf("TEST: %s\n",buf); fflush(stdout); @@ -123,7 +117,7 @@ void MGL_EXPORT mgl_info(const char *str, ...) char buf[256]; va_list lst; va_start(lst,str); - vsnprintf(buf,256,str,lst); + vsnprintf(buf,256,str,lst); buf[255]=0; va_end(lst); printf("%s",buf); FILE *fp = fopen("info.txt","at"); diff --git a/src/axis.cpp b/src/axis.cpp index f9db21a..30bc089 100644 --- a/src/axis.cpp +++ b/src/axis.cpp @@ -856,9 +856,9 @@ void mglCanvas::Labelw(char dir, const wchar_t *text, mreal pos, const char *opt mglPnt &pp = Pnt[kk]; if(pp.u<0 || (pp.u==0 && pp.v<0)) { pp.u=-pp.u; pp.v=-pp.v; pp.w=-pp.w; } + ff[0] = GetLabelPos(t, kk, *aa); strcat(font,ff); + text_plot(kk,text,font,-1.4,0.35+shift); } - ff[0] = GetLabelPos(t, kk, *aa); strcat(font,ff); - text_plot(kk,text,font,-1.4,0.35+shift); } LoadState(); } diff --git a/src/base.cpp b/src/base.cpp index 06ce6a4..d54571d 100644 --- a/src/base.cpp +++ b/src/base.cpp @@ -24,7 +24,7 @@ char *mgl_strdup(const char *s) { char *r = (char *)malloc((strlen(s)+1)*sizeof(char)); - memcpy(r,s,(strlen(s)+1)*sizeof(char)); + if(r) memcpy(r,s,(strlen(s)+1)*sizeof(char)); return r; } //----------------------------------------------------------------------------- @@ -170,7 +170,7 @@ void mglBase::StartGroup(const char *name, int id) { LightScale(&B); char buf[128]; - snprintf(buf,128,"%s_%d",name,id); + snprintf(buf,128,"%s_%d",name,id); buf[127]=0; StartAutoGroup(buf); } //----------------------------------------------------------------------------- @@ -990,7 +990,7 @@ mreal mglBase::AddTexture(mglColor c) //----------------------------------------------------------------------------- mreal mglBase::NextColor(long &id) { - long i=abs(id)/256, n=Txt[i].n, p=abs(id)&0xff; + long i=labs(id)/256, n=Txt[i].n, p=labs(id)&0xff; if(id>=0) { p=(p+1)%n; id = 256*i+p; } CDef = i + (n>0 ? (p+0.5)/n : 0); CurrPal++; sprintf(last_style+11,"{&%g}",CDef); @@ -1001,7 +1001,7 @@ mreal mglBase::NextColor(long &id) //----------------------------------------------------------------------------- mreal mglBase::NextColor(long id, long sh) { - long i=abs(id)/256, n=Txt[i].n, p=abs(id)&0xff; + long i=labs(id)/256, n=Txt[i].n, p=labs(id)&0xff; if(id>=0) p=(p+sh)%n; mreal cc = i + (n>0 ? (p+0.5)/n : 0); sprintf(last_style+11,"{&%g}",cc); diff --git a/src/base_cf.cpp b/src/base_cf.cpp index 7f46bb9..98702b9 100644 --- a/src/base_cf.cpp +++ b/src/base_cf.cpp @@ -258,7 +258,7 @@ void MGL_EXPORT mgl_test_txt(const char *str, ...) char buf[256]; va_list lst; va_start(lst,str); - vsnprintf(buf,256,str,lst); + vsnprintf(buf,256,str,lst); buf[255]=0; va_end(lst); printf("TEST: %s\n",buf); fflush(stdout); diff --git a/src/canvas.cpp b/src/canvas.cpp index fd6e388..9d4099f 100644 --- a/src/canvas.cpp +++ b/src/canvas.cpp @@ -121,8 +121,7 @@ void mglCanvas::ClearFrame() Pnt.clear(); Prm.clear(); Ptx.clear(); Glf.clear(); ClearPrmInd(); Txt.clear(); Txt.reserve(3); mglTexture t1(MGL_DEF_PAL,-1), t2(MGL_DEF_SCH,1); - MGL_PUSH(Txt,t1,mutexTxt); - MGL_PUSH(Txt,t2,mutexTxt); + Txt.push_back(t1); Txt.push_back(t2); // No extra lock is required } #if MGL_HAVE_PTHREAD pthread_mutex_unlock(&mutexAct); @@ -800,6 +799,7 @@ std::wstring MGL_EXPORT mgl_ftoa(double v, const char *fmt) int fdig = int(log10(v)); fdig = fdig>0?(fdig "\cdot 10^{...}" { if(res[0]=='1' && (res[1]=='e' || res[1]=='E')) diff --git a/src/complex.cpp b/src/complex.cpp index 4bde0ee..3457c7d 100644 --- a/src/complex.cpp +++ b/src/complex.cpp @@ -97,28 +97,19 @@ MGL_NO_EXPORT void *mgl_csmth_x(void *par) long nx=t->p[0], kind=t->p[2]; dual *b=t->a; const dual *a=t->b; - if(kind==SMOOTH_LINE_3) + if(kind>0) #if !MGL_HAVE_PTHREAD #pragma omp parallel for #endif for(long i=t->id;in;i+=mglNumThr) { register long j = i%nx; - if(j>0 && jid;in;i+=mglNumThr) - { - register long j = i%nx; - if(j>1 && jnx-1) j = i+nx-1-j-kind; + else j=i; + for(long k=-kind;k<=kind;k++) b[i] += a[j+k]/mreal(2*kind+1); } - else if(kind==SMOOTH_QUAD_5) + else #if !MGL_HAVE_PTHREAD #pragma omp parallel for #endif @@ -137,28 +128,19 @@ MGL_NO_EXPORT void *mgl_csmth_y(void *par) long nx=t->p[0],ny=t->p[1], kind=t->p[2]; dual *b=t->a; const dual *a=t->b; - if(kind==SMOOTH_LINE_3) -#if !MGL_HAVE_PTHREAD -#pragma omp parallel for -#endif - for(long i=t->id;in;i+=mglNumThr) - { - register long j = (i/nx)%ny; - if(j>0 && j0) #if !MGL_HAVE_PTHREAD #pragma omp parallel for #endif for(long i=t->id;in;i+=mglNumThr) { register long j = (i/nx)%ny; - if(j>1 && jny-1) j = i+(ny-1-j-kind)*nx; + else j=i; + for(long k=-kind;k<=kind;k++) b[i] += a[j+k*nx]/mreal(2*kind+1); } - else if(kind==SMOOTH_QUAD_5) + else #if !MGL_HAVE_PTHREAD #pragma omp parallel for #endif @@ -177,28 +159,19 @@ MGL_NO_EXPORT void *mgl_csmth_z(void *par) register long nn=t->p[0]*t->p[1], nz=t->n/nn, kind=t->p[2]; dual *b=t->a; const dual *a=t->b; - if(kind==SMOOTH_LINE_3) + if(kind>0) #if !MGL_HAVE_PTHREAD #pragma omp parallel for #endif for(long i=t->id;in;i+=mglNumThr) { register long j = i/nn; - if(j>0 && jnz-1) j = i+(nz-1-j-kind)*nn; + else j=i; + for(long k=-kind;k<=kind;k++) b[i] += a[j+k*nn]/mreal(2*kind+1); } - else if(kind==SMOOTH_LINE_5) -#if !MGL_HAVE_PTHREAD -#pragma omp parallel for -#endif - for(long i=t->id;in;i+=mglNumThr) - { - register long j = i/nn; - if(j>1 && jnx,ny=d->ny,nz=d->nz; // if(Type == SMOOTH_NONE) return; long p[3]={nx,ny,Type}; @@ -1081,6 +1070,7 @@ void MGL_EXPORT mgl_difr_axial(dual *a,int n,int step,dual q,int Border,dual *tm //----------------------------------------------------------------------------- MGL_NO_EXPORT void *mgl_difr(void *par) { +#if !defined(_MSC_VER) // MSVC produce internal compiler error on this code mglThreadC *t=(mglThreadC *)par; long n=t->p[0], st=t->p[1], bord=t->p[3], nn=t->n; dual *b=t->a, q = *(t->b); @@ -1103,6 +1093,7 @@ MGL_NO_EXPORT void *mgl_difr(void *par) mgl_difr_grid(b + ((i%st)+n*(i/st)), n,st, q, bord,tmp,3); delete []tmp; } +#endif return 0; } void MGL_EXPORT mgl_datac_diffr(HADT d, const char *how, mreal q) diff --git a/src/complex_io.cpp b/src/complex_io.cpp index befe4c6..fa7f336 100644 --- a/src/complex_io.cpp +++ b/src/complex_io.cpp @@ -55,52 +55,87 @@ void mglFromStr(HADT d,char *buf,long NX,long NY,long NZ) // TODO: add multithre { if(NX<1 || NY <1 || NZ<1) return; mgl_datac_create(d, NX,NY,NZ); - long nb = strlen(buf); - register long i=0, j=0; const std::string loc = setlocale(LC_NUMERIC, NULL); setlocale(LC_NUMERIC, "C"); - while(j lines; + std::vector > numbs; + lines.push_back(buf); + for(char *s=buf; *s; s++) if(isn(*s)) + { lines.push_back(s+1); *s = 0; s++; } + numbs.resize(lines.size()); + long nl = long(lines.size()); +//#pragma omp parallel for + for(long k=0;k0 || buf[j+1]!='#') // this is columns id - while(j=nb) break; + while(b[j]=='#') // skip comment + { + if(i>0 || b[j+1]!='#') // this is columns id + while(j='a' && b[j]<='z') d->id.push_back(b[j]); + j++; + } + } + while(j' ' && ((b[j]!=',' && b[j]!=' ') || sk!=0) && b[j]!=';') + { + if(strchr("[{(",b[j])) sk++; + if(strchr("]})",b[j])) sk--; + j++; + } + b[j]=0; + double re=0,im=0; size_t ll=strlen(s); + while(s[ll]<=' ') ll--; + if(*s=='(') sscanf(s,"(%lg,%lg)",&re,&im); + else if(*s=='i') { re=0; im=atof(s+1); } + else if(*s=='[') sscanf(s,"[%lg,%lg]",&re,&im); + else if(*s=='{') sscanf(s,"{%lg,%lg}",&re,&im); + else if(s[ll]=='i') + { + double a,b; s[ll] = 0; + int s1=sscanf(s,"%lg+%lg",&re,&im); + int s2=sscanf(s,"%lg-%lg",&a,&b); + if(s1<2) + { + if(s2==2) { re=a; im=-b; } + else { im=atof(s); re=0; } + } + } else { - while(j='a' && buf[j]<='z') - d->id.push_back(buf[j]); - j++; + if(s2==2) { re=a; im=-b; } + else { re=atof(s); im=0; } } } - while(j=' ' && buf[j]!=';') j++; - buf[j]=0; - double re=0,im=0; size_t ll=strlen(s); - while(s[ll]<=' ') ll--; - if(*s=='(') sscanf(s,"(%lg,%lg)",&re,&im); - else if(*s=='[') sscanf(s,"[%lg,%lg]",&re,&im); - else if(*s=='{') sscanf(s,"{%lg,%lg}",&re,&im); - else if(s[ll]=='i') - { - double a,b; s[ll] = 0; - int s1=sscanf(s,"%lg+%lg",&re,&im); - int s2=sscanf(s,"%lg-%lg",&a,&b); - if(s2==2 && s1<2) { re=a; im=-b; } - + numbs[k].push_back(dual(re,im)); } - else - { - double a,b; - int s1=sscanf(s,"%lg+i%lg",&re,&im); - int s2=sscanf(s,"%lg-i%lg",&a,&b); - if(s2==2 && s1<2) { re=a; im=-b; } - } - d->a[i] = dual(re,im); - i++; if(i>=NX*NY*NZ) break; + } + register long i=0, n=NX*NY*NZ; + for(long k=0;k &vals = numbs[k]; + long c = vals.size(); + if(c>n-i) c = n-i; + memcpy(d->a+i,&(vals[0]),c*sizeof(dual)); + i += c; } setlocale(LC_NUMERIC, loc.c_str()); } @@ -243,7 +278,7 @@ void MGL_EXPORT mgl_datac_save_(uintptr_t *d, const char *fname,int *ns,int l) //----------------------------------------------------------------------------- int MGL_EXPORT mgl_datac_read(HADT d, const char *fname) { - long l=1,m=1,k=1; + long l=1,m=1,k=1,sk=0; long nb,i; gzFile fp = gzopen(fname,"r"); if(!fp) @@ -257,13 +292,15 @@ int MGL_EXPORT mgl_datac_read(HADT d, const char *fname) bool first=false; // space is not allowed delimiter for file with complex numbers register char ch; for(i=nb-1;i>=0;i--) if(buf[i]>' ') break; - buf[i+1]=0; nb = i; // remove tailing spaces + buf[i+1]=0; nb = i+1; // remove tailing spaces for(i=0;i' ' && !first) first=true; - if(first && (ch=='\t' || ch==';') && buf[i+1]!='\t') k++; // ',' is not valid delimiter for complex arrays + if(strchr("[{(",ch)) sk++; + if(strchr("]})",ch)) sk--; + if(first && buf[i+1]>' ' && (ch=='\t' || ch==';' || ((ch==' '||ch==',') && sk==0) )) k++; } first = false; for(i=0;is; d->s = L"u"; - mglDataV x(d->nx,d->ny,d->nz); x.Fill(0,1,'x'); x.s=L"x"; - mglDataV y(d->nx,d->ny,d->nz); y.Fill(0,1,'y'); y.s=L"y"; - mglDataV z(d->nx,d->ny,d->nz); z.Fill(0,1,'z'); z.s=L"z"; + mglDataV x(d->nx,d->ny,d->nz, 0,1,'x'); x.s=L"x"; + mglDataV y(d->nx,d->ny,d->nz, 0,1,'y'); y.s=L"y"; + mglDataV z(d->nx,d->ny,d->nz, 0,1,'z'); z.s=L"z"; + mglDataV i(d->nx,d->ny,d->nz, 0,d->nx-1,'x'); i.s=L"i"; + mglDataV j(d->nx,d->ny,d->nz, 0,d->ny-1,'y'); j.s=L"j"; + mglDataV k(d->nx,d->ny,d->nz, 0,d->nz-1,'z'); k.s=L"k"; mglDataV r(d->nx,d->ny,d->nz); r.s=L"#$mgl"; mglData v(vdat), w(wdat); v.s = L"v"; w.s = L"w"; std::vector list; list.push_back(&x); list.push_back(&y); list.push_back(&z); list.push_back(d); list.push_back(&v); list.push_back(&w); list.push_back(&r); + list.push_back(&i); list.push_back(&j); list.push_back(&k); d->Set(mglFormulaCalcC(eq,list)); d->s = s; } void MGL_EXPORT mgl_datac_modify_vw_(uintptr_t *d, const char *eq, uintptr_t *v, uintptr_t *w,int l) @@ -651,7 +692,7 @@ int MGL_EXPORT mgl_datac_read_range(HADT dat, const char *templ, double from, do char *fname = new char[n]; //read first file - do{ snprintf(fname,n,templ,t); t+= step; } while(!mgl_datac_read(&d,fname) && t<=to); + do{ snprintf(fname,n,templ,t); fname[n-1]=0; t+= step; } while(!mgl_datac_read(&d,fname) && t<=to); if(t>to) { delete []fname; return false; } kx = d.nx; ky = d.ny; kz = d.nz; @@ -661,7 +702,7 @@ int MGL_EXPORT mgl_datac_read_range(HADT dat, const char *templ, double from, do // read other files for(;t<=to;t+=step) { - snprintf(fname,n,templ,t); + snprintf(fname,n,templ,t); fname[n-1]=0; if(mgl_datac_read(&d,fname)) if(!mgl_add_file(kx,ky,kz,b,&d,as_slice)) { delete []fname; free(b); return false; } diff --git a/src/cont.cpp b/src/cont.cpp index e86454f..987c5d2 100644 --- a/src/cont.cpp +++ b/src/cont.cpp @@ -568,8 +568,8 @@ void MGL_EXPORT mgl_contf_gen(HMGL gr, mreal v1, mreal v2, HCDT a, HCDT x, HCDT // draw it bool b1d2 = a->v(i+1,j,ak)>v2 && a->v(i,j-1,ak)>v2; bool b2d1 = a->v(i,j,ak)>v2 && a->v(i+1,j-1,ak)>v2; - mreal vv = mgl_data_linear(a,i+0.5,j-0.5,ak); - vv = (vv-v1)*(vv-v2); +// mreal vv = mgl_data_linear(a,i+0.5,j-0.5,ak); +// vv = (vv-v1)*(vv-v2); if(num<3) continue; if(num==4) gr->quad_plot(p[0],p[1],p[3],p[2]); else if(num==3) gr->trig_plot(p[0],p[1],p[2]); diff --git a/src/data.cpp b/src/data.cpp index 14930d8..0ab7859 100644 --- a/src/data.cpp +++ b/src/data.cpp @@ -159,28 +159,19 @@ MGL_NO_EXPORT void *mgl_smth_x(void *par) long nx=t->p[0], kind=t->p[2]; mreal *b=t->a, delta=t->c[0]; const mreal *a=t->b; - if(kind==SMOOTH_LINE_3) + if(kind>0) #if !MGL_HAVE_PTHREAD #pragma omp parallel for #endif for(long i=t->id;in;i+=mglNumThr) { register long j = i%nx; - if(j>0 && jid;in;i+=mglNumThr) - { - register long j = i%nx; - if(j>1 && jnx-1) j = i+nx-1-j-kind; + else j=i; + for(long k=-kind;k<=kind;k++) b[i] += a[j+k]/(2*kind+1); } - else if(kind==SMOOTH_QUAD_5) + else #if !MGL_HAVE_PTHREAD #pragma omp parallel for #endif @@ -196,8 +187,11 @@ MGL_NO_EXPORT void *mgl_smth_x(void *par) #pragma omp parallel for #endif for(long i=t->id;in;i+=mglNumThr) - b[i] = mgl_max(a[i]-delta,mgl_min(a[i]+delta,b[i])); - return 0; + { + double ab = fabs(a[i]-b[i]); + if(ab>delta) b[i] = a[i]+(delta/ab)*(b[i]-a[i]); + } + return 0; } MGL_NO_EXPORT void *mgl_smth_y(void *par) { @@ -205,28 +199,19 @@ MGL_NO_EXPORT void *mgl_smth_y(void *par) long nx=t->p[0],ny=t->p[1], kind=t->p[2]; mreal *b=t->a, delta=t->c[0]; const mreal *a=t->b; - if(kind==SMOOTH_LINE_3) + if(kind>0) #if !MGL_HAVE_PTHREAD #pragma omp parallel for #endif for(long i=t->id;in;i+=mglNumThr) { register long j = (i/nx)%ny; - if(j>0 && jid;in;i+=mglNumThr) - { - register long j = (i/nx)%ny; - if(j>1 && jny-1) j = i+(ny-1-j-kind)*nx; + else j=i; + for(long k=-kind;k<=kind;k++) b[i] += a[j+k*nx]/(2*kind+1); } - else if(kind==SMOOTH_QUAD_5) + else #if !MGL_HAVE_PTHREAD #pragma omp parallel for #endif @@ -242,8 +227,11 @@ MGL_NO_EXPORT void *mgl_smth_y(void *par) #pragma omp parallel for #endif for(long i=t->id;in;i+=mglNumThr) - b[i] = mgl_max(a[i]-delta,mgl_min(a[i]+delta,b[i])); - return 0; + { + double ab = fabs(a[i]-b[i]); + if(ab>delta) b[i] = a[i]+(delta/ab)*(b[i]-a[i]); + } + return 0; } MGL_NO_EXPORT void *mgl_smth_z(void *par) { @@ -251,28 +239,19 @@ MGL_NO_EXPORT void *mgl_smth_z(void *par) register long nn=t->p[0]*t->p[1], nz=t->n/nn, kind=t->p[2]; mreal *b=t->a, delta=t->c[0]; const mreal *a=t->b; - if(kind==SMOOTH_LINE_3) + if(kind>1) #if !MGL_HAVE_PTHREAD #pragma omp parallel for #endif for(long i=t->id;in;i+=mglNumThr) { register long j = i/nn; - if(j>0 && jnz-1) j = i+(nz-1-j-kind)*nn; + else j=i; + for(long k=-kind;k<=kind;k++) b[i] += a[j+k*nn]/(2*kind+1); } - else if(kind==SMOOTH_LINE_5) -#if !MGL_HAVE_PTHREAD -#pragma omp parallel for -#endif - for(long i=t->id;in;i+=mglNumThr) - { - register long j = i/nn; - if(j>1 && jid;in;i+=mglNumThr) - b[i] = mgl_max(a[i]-delta,mgl_min(a[i]+delta,b[i])); + { + double ab = fabs(a[i]-b[i]); + if(ab>delta) b[i] = a[i]+(delta/ab)*(b[i]-a[i]); + } return 0; } void MGL_EXPORT mgl_data_smooth(HMDT d, const char *dirs, mreal delta) { - long Type = SMOOTH_QUAD_5; + long Type = -1; if(!dirs || *dirs==0) dirs = "xyz"; - if(strchr(dirs,'0') || strchr(dirs,'1')) return; - if(strchr(dirs,'3')) Type = SMOOTH_LINE_3; - if(strchr(dirs,'5')) Type = SMOOTH_LINE_5; + if(strchr(dirs,'0')) return; + if(strchr(dirs,'d')) + { + if(strchr(dirs,'1')) Type = 1; + if(strchr(dirs,'2')) Type = 2; + if(strchr(dirs,'3')) Type = 3; + if(strchr(dirs,'4')) Type = 4; + if(strchr(dirs,'5')) Type = 5; + if(strchr(dirs,'6')) Type = 6; + if(strchr(dirs,'7')) Type = 7; + if(strchr(dirs,'8')) Type = 8; + if(strchr(dirs,'9')) Type = 9; + } + else + { + if(strchr(dirs,'1')) return; + if(strchr(dirs,'3')) Type = 1; + if(strchr(dirs,'5')) Type = 2; + } long nx=d->nx,ny=d->ny,nz=d->nz; // if(Type == SMOOTH_NONE) return; long p[3]={nx,ny,Type}; @@ -1359,19 +1357,24 @@ MGL_EXPORT const char *mgl_data_info(HCDT d) // NOTE: Not thread safe function! { static char buf[512]; char s[128]; buf[0]=0; - snprintf(s,128,"nx = %ld\tny = %ld\tnz = %ld\n",d->GetNx(),d->GetNy(),d->GetNz()); strcat(buf,s); + snprintf(s,128,"nx = %ld\tny = %ld\tnz = %ld\n",d->GetNx(),d->GetNy(),d->GetNz()); + s[127]=0; strcat(buf,s); long i=0,j=0,k=0; mreal A=0,Wa=0,X=0,Y=0,Z=0,Wx=0,Wy=0,Wz=0, b; b = mgl_data_max_int(d,&i,&j,&k); - snprintf(s,128,"Maximum is %g\t at x = %ld\ty = %ld\tz = %ld\n", b,i,j,k); strcat(buf,s); + snprintf(s,128,"Maximum is %g\t at x = %ld\ty = %ld\tz = %ld\n", b,i,j,k); + s[127]=0; strcat(buf,s); b = mgl_data_min_int(d,&i,&j,&k); - snprintf(s,128,"Minimum is %g\t at x = %ld\ty = %ld\tz = %ld\n", b,i,j,k); strcat(buf,s); + snprintf(s,128,"Minimum is %g\t at x = %ld\ty = %ld\tz = %ld\n", b,i,j,k); + s[127]=0; strcat(buf,s); mgl_data_momentum_val(d,'a',&A,&Wa,0,0); mgl_data_momentum_val(d,'x',&X,&Wx,0,0); mgl_data_momentum_val(d,'y',&Y,&Wy,0,0); mgl_data_momentum_val(d,'z',&Z,&Wz,0,0); - snprintf(s,128,"Averages are:\n = %g\t = %g\t = %g\t = %g\n", A,X,Y,Z); strcat(buf,s); - snprintf(s,128,"Widths are:\nWa = %g\tWx = %g\tWy = %g\tWz = %g\n", Wa,Wx,Wy,Wz); strcat(buf,s); + snprintf(s,128,"Averages are:\n = %g\t = %g\t = %g\t = %g\n", A,X,Y,Z); + s[127]=0; strcat(buf,s); + snprintf(s,128,"Widths are:\nWa = %g\tWx = %g\tWy = %g\tWz = %g\n", Wa,Wx,Wy,Wz); + s[127]=0; strcat(buf,s); return buf; } int MGL_EXPORT mgl_data_info_(uintptr_t *d, char *out, int len) @@ -2028,7 +2031,7 @@ void MGL_EXPORT mgl_data_refill_xy(HMDT dat, HCDT xdat, HCDT ydat, HCDT vdat, mr xx1=mgl_max(xx1,0); xx2=mgl_min(xx2,nx-1); yy1=mgl_max(yy1,0); yy2=mgl_min(yy2,ny-1); if(xx1>xx2 || yy1>yy2) continue; - + mreal d1x = vx1-vx0, d1y = vy1-vy0; mreal d2x = vx2-vx0, d2y = vy2-vy0; mreal d3x = vx3+vx0-vx1-vx2, d3y = vy3+vy0-vy1-vy2; diff --git a/src/data_ex.cpp b/src/data_ex.cpp index 193b55d..4a39428 100644 --- a/src/data_ex.cpp +++ b/src/data_ex.cpp @@ -741,7 +741,7 @@ HMDT MGL_EXPORT mgl_data_hist(HCDT dat, long n, mreal v1, mreal v2, long nsub) mglData *b=new mglData(n); mreal v[2]={v1,v2}; long nx=dat->GetNx(), ny=dat->GetNy(), nz=dat->GetNz(); - long ns=abs(nsub)+1, p[5]={n,ns,nx,ny,nz}; + long ns=labs(nsub)+1, p[5]={n,ns,nx,ny,nz}; if(nsub==0) mglStartThread(mgl_hist_1,mgl_hist_p, nx*ny*nz, b->a,(const mreal *)dat,0,p,v); else mglStartThread(mgl_hist_2,mgl_hist_p, nx*ny*nz*ns*ns*ns, b->a,(const mreal *)dat,0,p,v); return b; @@ -754,7 +754,7 @@ HMDT MGL_EXPORT mgl_data_hist_w(HCDT dat, HCDT weight, long n, mreal v1, mreal v mreal v[2]={v1,v2}; long nx=dat->GetNx(), ny=dat->GetNy(), nz=dat->GetNz(); - long ns=abs(nsub)+1, p[5]={n,ns,nx,ny,nz}; + long ns=labs(nsub)+1, p[5]={n,ns,nx,ny,nz}; if(nsub==0) mglStartThread(mgl_hist_1,mgl_hist_p, nx*ny*nz, b->a,(const mreal *)dat,(const mreal *)weight,p,v); else mglStartThread(mgl_hist_2,mgl_hist_p, nx*ny*nz*ns*ns*ns, b->a,(const mreal *)dat,(const mreal *)weight,p,v); return b; diff --git a/src/data_gr.cpp b/src/data_gr.cpp index faf12e7..1afc630 100644 --- a/src/data_gr.cpp +++ b/src/data_gr.cpp @@ -64,11 +64,15 @@ void MGL_EXPORT mgl_data_fill_eq(HMGL gr, HMDT d, const char *eq, HCDT vdat, HCD mglDataV x(d->nx,d->ny,d->nz, gr->Min.x,gr->Max.x,'x'); x.s=L"x"; mglDataV y(d->nx,d->ny,d->nz, gr->Min.y,gr->Max.y,'y'); y.s=L"y"; mglDataV z(d->nx,d->ny,d->nz, gr->Min.z,gr->Max.z,'z'); z.s=L"z"; + mglDataV i(d->nx,d->ny,d->nz, 0,d->nx-1,'x'); i.s=L"i"; + mglDataV j(d->nx,d->ny,d->nz, 0,d->ny-1,'y'); j.s=L"j"; + mglDataV k(d->nx,d->ny,d->nz, 0,d->nz-1,'z'); k.s=L"k"; mglDataV r(d->nx,d->ny,d->nz); r.s=L"#$mgl"; mglData v(vdat), w(wdat); v.s = L"v"; w.s = L"w"; std::vector list; list.push_back(&x); list.push_back(&y); list.push_back(&z); list.push_back(&r); list.push_back(d); list.push_back(&v); list.push_back(&w); + list.push_back(&i); list.push_back(&j); list.push_back(&k); d->Set(mglFormulaCalc(eq,list)); d->s = s; gr->LoadState(); } @@ -86,11 +90,15 @@ void MGL_EXPORT mgl_datac_fill_eq(HMGL gr, HADT d, const char *eq, HCDT vdat, HC mglDataV x(d->nx,d->ny,d->nz, gr->Min.x,gr->Max.x,'x'); x.s=L"x"; mglDataV y(d->nx,d->ny,d->nz, gr->Min.y,gr->Max.y,'y'); y.s=L"y"; mglDataV z(d->nx,d->ny,d->nz, gr->Min.z,gr->Max.z,'z'); z.s=L"z"; + mglDataV i(d->nx,d->ny,d->nz, 0,d->nx-1,'x'); i.s=L"i"; + mglDataV j(d->nx,d->ny,d->nz, 0,d->ny-1,'y'); j.s=L"j"; + mglDataV k(d->nx,d->ny,d->nz, 0,d->nz-1,'z'); k.s=L"k"; mglDataV r(d->nx,d->ny,d->nz); r.s=L"#$mgl"; mglData v(vdat), w(wdat); v.s = L"v"; w.s = L"w"; std::vector list; list.push_back(&x); list.push_back(&y); list.push_back(&z); list.push_back(&r); list.push_back(d); list.push_back(&v); list.push_back(&w); + list.push_back(&i); list.push_back(&j); list.push_back(&k); d->Set(mglFormulaCalcC(eq,list)); d->s = s; gr->LoadState(); } diff --git a/src/data_io.cpp b/src/data_io.cpp index 9cc098f..f1a4439 100644 --- a/src/data_io.cpp +++ b/src/data_io.cpp @@ -57,36 +57,57 @@ uintptr_t MGL_EXPORT mgl_create_data_file_(const char *fname,int l) void MGL_EXPORT mgl_delete_data_(uintptr_t *d) { if(_DT_) delete _DT_; } //----------------------------------------------------------------------------- -void mglFromStr(HMDT d,char *buf,long NX,long NY,long NZ) // TODO: add multithreading read +void mglFromStr(HMDT d,char *buf,long NX,long NY,long NZ) { if(NX<1 || NY <1 || NZ<1) return; mgl_data_create(d, NX,NY,NZ); - long nb = strlen(buf); - register long i=0, j=0; const std::string loc = setlocale(LC_NUMERIC, NULL); setlocale(LC_NUMERIC, "C"); - while(j lines; + std::vector > numbs; + lines.push_back(buf); + for(char *s=buf; *s; s++) if(isn(*s)) + { lines.push_back(s+1); *s = 0; s++; } + numbs.resize(lines.size()); + long nl = long(lines.size()); +#pragma omp parallel for + for(long k=0;k0 || buf[j+1]!='#') // this is columns id - while(j=nb) break; + while(b[j]=='#') // skip comment { - while(j0 || b[j+1]!='#') // this is columns id + while(j='a' && buf[j]<='z') - d->id.push_back(buf[j]); - j++; + while(j='a' && b[j]<='z') + d->id.push_back(b[j]); + j++; + } } + while(j' ' && b[j]!=',' && b[j]!=';') j++; + b[j]=0; + numbs[k].push_back(strstr(s,"NAN")?NAN:atof(s)); } - char *s=buf+j; - while(j' ' && buf[j]!=',' && buf[j]!=';') j++; - buf[j]=0; - d->a[i] = strstr(s,"NAN")?NAN:atof(s); - i++; if(i>=NX*NY*NZ) break; + } + register long i=0, n=NX*NY*NZ; + for(long k=0;k &vals = numbs[k]; + long c = vals.size(); + if(c>n-i) c = n-i; + memcpy(d->a+i,&(vals[0]),c*sizeof(mreal)); + i += c; } setlocale(LC_NUMERIC, loc.c_str()); } @@ -329,7 +350,7 @@ int MGL_EXPORT mgl_data_read(HMDT d, const char *fname) bool first=false; register char ch; for(i=nb-1;i>=0;i--) if(buf[i]>' ') break; - buf[i+1]=0; nb = i; // remove tailing spaces + buf[i+1]=0; nb = i+1; // remove tailing spaces for(i=0;inx,d->ny,d->nz, 0,1,'x'); x.s=L"x"; mglDataV y(d->nx,d->ny,d->nz, 0,1,'y'); y.s=L"y"; mglDataV z(d->nx,d->ny,d->nz, 0,1,'z'); z.s=L"z"; + mglDataV i(d->nx,d->ny,d->nz, 0,d->nx-1,'x'); i.s=L"i"; + mglDataV j(d->nx,d->ny,d->nz, 0,d->ny-1,'y'); j.s=L"j"; + mglDataV k(d->nx,d->ny,d->nz, 0,d->nz-1,'z'); k.s=L"k"; mglDataV r(d->nx,d->ny,d->nz); r.s=L"#$mgl"; mglData v(vdat), w(wdat); v.s = L"v"; w.s = L"w"; std::vector list; list.push_back(&x); list.push_back(&y); list.push_back(&z); list.push_back(d); list.push_back(&v); list.push_back(&w); list.push_back(&r); + list.push_back(&i); list.push_back(&j); list.push_back(&k); d->Set(mglFormulaCalc(eq,list)); d->s = s; } void MGL_EXPORT mgl_data_modify_vw_(uintptr_t *d, const char *eq, uintptr_t *v, uintptr_t *w,int l) @@ -1075,7 +1100,7 @@ int MGL_EXPORT mgl_data_read_range(HMDT dat, const char *templ, double from, dou char *fname = new char[n]; //read first file - do{ snprintf(fname,n,templ,t); t+= step; } while(!mgl_data_read(&d,fname) && t<=to); + do{ snprintf(fname,n,templ,t); fname[n-1]=0; t+= step; } while(!mgl_data_read(&d,fname) && t<=to); if(t>to) { delete []fname; return false; } kx = d.nx; ky = d.ny; kz = d.nz; @@ -1085,7 +1110,7 @@ int MGL_EXPORT mgl_data_read_range(HMDT dat, const char *templ, double from, dou // read other files for(;t<=to;t+=step) { - snprintf(fname,n,templ,t); + snprintf(fname,n,templ,t); fname[n-1]=0; if(mgl_data_read(&d,fname)) if(!mgl_add_file(kx,ky,kz,b,&d,as_slice)) { delete []fname; free(b); return false; } diff --git a/src/data_png.cpp b/src/data_png.cpp index 0af84ae..2773487 100644 --- a/src/data_png.cpp +++ b/src/data_png.cpp @@ -27,8 +27,8 @@ //----------------------------------------------------------------------------- size_t MGL_LOCAL_PURE mgl_col_dif(unsigned char *c1,unsigned char *c2,bool sum) { - size_t res,d1=abs(long(c1[0])-long(c2[0])), - d2=abs(long(c1[1])-long(c2[1])),d3=abs(long(c1[2])-long(c2[2])); + size_t res,d1=labs(long(c1[0])-long(c2[0])), + d2=labs(long(c1[1])-long(c2[1])),d3=labs(long(c1[2])-long(c2[2])); if(sum) res = d1+d2+d3; else res = mgl_max(d1,mgl_max(d2,d3)); return res; @@ -232,6 +232,7 @@ void MGL_EXPORT mgl_data_export(HCDT dd, const char *fname, const char *scheme,m if(!strcmp(fname+len-4,".bmp")) mgl_bmp_save(fname, nx,ny,p); if(!strcmp(fname+len-4,".png")) mgl_png_save(fname, nx,ny,p); if(!strcmp(fname+len-4,".eps") || !strcmp(fname+len-4,".bps")) mgl_bps_save(fname, nx,ny,p); + delete []p; delete []d; } //----------------------------------------------------------------------------- void MGL_EXPORT mgl_data_export_(uintptr_t *d, const char *fname, const char *scheme,mreal *v1,mreal *v2,int *ns,int l,int n) diff --git a/src/evalp.cpp b/src/evalp.cpp index 5b4489f..0455716 100644 --- a/src/evalp.cpp +++ b/src/evalp.cpp @@ -19,6 +19,7 @@ ***************************************************************************/ #include #include +#include "mgl2/base.h" #include "mgl2/parser.h" #if MGL_HAVE_GSL #include @@ -324,7 +325,7 @@ mglData MGL_NO_EXPORT mglFormulaCalc(std::wstring str, mglParser *arg, const std else if(!str.compare(L":")) res.a[0] = -1; else { - HCDT v=FindVar(head, L"#$mgl"); + v=FindVar(head, L"#$mgl"); if(v) res.Create(v->GetNx(),v->GetNy(),v->GetNz()); if(!str.compare(L"rnd")) for(long i=0;icurGr) + { + if(res.GetNN()==1) res.Create(100); + res.Fill(arg->curGr->Min.x, arg->curGr->Max.x,'x'); + } + else if(!str.compare(L"y") && arg && arg->curGr) + { + if(res.GetNN()==1) res.Create(100); + res.Fill(arg->curGr->Min.x, arg->curGr->Max.x,res.ny>1?'y':'x'); + } + else if(!str.compare(L"z") && arg && arg->curGr) + { + if(res.GetNN()==1) res.Create(100); + res.Fill(arg->curGr->Min.x, arg->curGr->Max.x,res.nz>1?'z':'x'); + }*/ else res = wcstod(str.c_str(),0); // this is number } return res; @@ -811,7 +828,7 @@ mglDataC MGL_NO_EXPORT mglFormulaCalcC(std::wstring str, mglParser *arg, const s else if(!str.compare(L":")) res.a[0] = -1; else { - HCDT v=FindVar(head, L"#$mgl"); + v=FindVar(head, L"#$mgl"); if(v) res.Create(v->GetNx(),v->GetNy(),v->GetNz()); if(!str.compare(L"rnd")) for(long i=0;icurGr) + res.Fill(arg->curGr->Min.x, arg->curGr->Max.x,'x'); + else if(!str.compare(L"y") && arg && arg->curGr) + res.Fill(arg->curGr->Min.x, arg->curGr->Max.x,res.ny>1?'y':'x'); + else if(!str.compare(L"z") && arg && arg->curGr) + res.Fill(arg->curGr->Min.x, arg->curGr->Max.x,res.nz>1?'z':'x');*/ else if(str[0]=='i') // this is imaginary number res = dual(0,(str.length()>1 && str[1]>' ')?wcstod(str.c_str(),0):1); else res = mreal(wcstod(str.c_str(),0)); // this is real number diff --git a/src/exec.cpp b/src/exec.cpp index ed776dc..e91e1ac 100644 --- a/src/exec.cpp +++ b/src/exec.cpp @@ -1149,11 +1149,25 @@ int MGL_NO_EXPORT mgls_read(mglGraph *gr, long , mglArg *a, const char *k, const int res=0; bool rr=true; mglData *d = dynamic_cast(a[0].d); + mglData *f = dynamic_cast(a[1].d); if(!d) return 1; - if(!strcmp(k,"ds")) rr=d->Read(a[1].s.c_str()); - else if(!strcmp(k,"dsn")) rr=d->Read(a[1].s.c_str(), iint(a[2].v)); - else if(!strcmp(k,"dsnn")) rr=d->Read(a[1].s.c_str(), iint(a[2].v),iint(a[3].v)); - else if(!strcmp(k,"dsnnn")) rr=d->Read(a[1].s.c_str(), iint(a[2].v),iint(a[3].v),iint(a[4].v)); + mglDataC c; + if(!strcmp(k,"ds")) + { rr=c.Read(a[1].s.c_str()); *d = c.Real(); } + else if(!strcmp(k,"dsn")) + { rr=c.Read(a[1].s.c_str(), iint(a[2].v)); *d = c.Real(); } + else if(!strcmp(k,"dsnn")) + { rr=c.Read(a[1].s.c_str(), iint(a[2].v),iint(a[3].v)); *d = c.Real(); } + else if(!strcmp(k,"dsnnn")) + { rr=c.Read(a[1].s.c_str(), iint(a[2].v),iint(a[3].v),iint(a[4].v)); *d = c.Real(); } + if(!strcmp(k,"dds") && f) + { rr=c.Read(a[2].s.c_str()); *d = c.Real(); *f = c.Imag(); } + if(!strcmp(k,"ddsn") && f) + { rr=c.Read(a[2].s.c_str(), iint(a[3].v)); *d = c.Real(); *f = c.Imag(); } + if(!strcmp(k,"ddsnn") && f) + { rr=c.Read(a[2].s.c_str(), iint(a[3].v),iint(a[4].v)); *d = c.Real(); *f = c.Imag(); } + if(!strcmp(k,"ddsnnn") && f) + { rr=c.Read(a[2].s.c_str(), iint(a[3].v),iint(a[4].v),iint(a[5].v)); *d = c.Real(); *f = c.Imag(); } if(!rr) gr->SetWarn(mglWarnFile,"Read"); return res; } @@ -2073,7 +2087,7 @@ int MGL_NO_EXPORT mgls_info(mglGraph *gr, long , mglArg *a, const char *k, const 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]; snprintf(buf,128,"value = %g",a[0].v); gr->SetWarn(-1,buf); } + { char buf[128]; snprintf(buf,128,"value = %g",a[0].v); buf[127]=0; gr->SetWarn(-1,buf); } else res = 1; return res; } //----------------------------------------------------------------------------- @@ -2455,7 +2469,7 @@ int MGL_NO_EXPORT mgls_fgets(mglGraph *gr, long , mglArg *a, const char *k, cons memset(buf,0,1024); if(!fgets(buf,1024,fp)) { - char b[32]; snprintf(b,32,"%d",n); + char b[32]; snprintf(b,32,"%d",n); b[31]=0; gr->SetWarn(mglWarnOpen,(a[2].s+" - line "+b).c_str()); fclose(fp); return res; } @@ -2475,7 +2489,7 @@ int MGL_NO_EXPORT mgls_fgets(mglGraph *gr, long , mglArg *a, const char *k, cons memset(buf,0,1024); if(!fgets(buf,1024,fp)) { - char b[32]; snprintf(b,32,"%d",n); + char b[32]; snprintf(b,32,"%d",n); b[31]=0; gr->SetWarn(mglWarnOpen,(a[3].s+" - line "+b).c_str()); fclose(fp); return res; } @@ -3075,7 +3089,7 @@ mglCommand mgls_base_cmd[] = { {"ranges","Set axis ranges","ranges x1 x2 y1 y2 [z1 z2]", mgls_ranges ,14}, {"rasterize","Rasterize and save to background","rasterize", mgls_rasterize ,12}, {"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}, + {"read","Read data from file","read Dat 'file' [nx ny nz] | ReDat ImDat '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}, diff --git a/src/export.cpp b/src/export.cpp index 65529b4..eac9c49 100644 --- a/src/export.cpp +++ b/src/export.cpp @@ -203,7 +203,7 @@ void MGL_NO_EXPORT mgl_printf(void *fp, bool gz, const char *str, ...) // NOTE T static char buf[1024]; va_list lst; va_start(lst,str); - vsnprintf(buf,1023,str,lst); + vsnprintf(buf,1023,str,lst); buf[1023]=0; va_end(lst); if(gz) gzprintf((gzFile)fp, "%s", buf); else fprintf((FILE *)fp, "%s", buf); @@ -214,7 +214,7 @@ std::string MGL_NO_EXPORT mgl_sprintf(const char *str, ...) char *buf=new char[1024]; va_list lst; va_start(lst,str); - vsnprintf(buf,1023,str,lst); + vsnprintf(buf,1023,str,lst); buf[1023]=0; va_end(lst); std::string res = buf; delete []buf; return res; @@ -223,7 +223,6 @@ std::string MGL_NO_EXPORT mgl_sprintf(const char *str, ...) int MGL_NO_EXPORT mgl_bps_save(const char *fname, int w, int h, unsigned char **p) { time_t now; time(&now); - register long i,j; bool gz = fname[strlen(fname)-1]=='z'; void *fp; @@ -242,7 +241,7 @@ int MGL_NO_EXPORT mgl_bps_save(const char *fname, int w, int h, unsigned char ** if(pos) { buf[pos]=buf[pos+1]='b'; buf[pos+2]=0; } FILE *fb = fopen(buf,"w"); fprintf(fb, "%%%%BoundingBox: 0 0 %d %d\n", w, h); - fclose(fb); + fclose(fb); delete []buf; } } mgl_printf(fp, gz, "%%!PS-Adobe-3.0 EPSF-3.0\n%%%%BoundingBox: 0 0 %d %d\n",w,h); @@ -577,7 +576,7 @@ void MGL_EXPORT mgl_write_frame(HMGL gr, const char *fname,const char *descr) { char buf[64]; if(!fname || !fname[0]) - { snprintf(buf,64,"%s%04d.jpg",_Gr_->PlotId.c_str(),_Gr_->GetNumFrame()); fname = buf; } + { snprintf(buf,64,"%s%04d.jpg",_Gr_->PlotId.c_str(),_Gr_->GetNumFrame()); buf[63]=0; fname = buf; } int len=strlen(fname); if(!strcmp(fname+len-4,".jpg")) mgl_write_jpg(gr,fname,descr); if(!strcmp(fname+len-5,".jpeg")) mgl_write_jpg(gr,fname,descr); @@ -618,14 +617,14 @@ void MGL_EXPORT mgl_write_frame_(uintptr_t *gr, const char *fname,const char *de void MGL_EXPORT mgl_show_image(HMGL gr, const char *viewer, int keep) { char fname[128], *cmd = new char [128]; - snprintf(fname,128,"%s.png", tmpnam(NULL)); + snprintf(fname,128,"%s.png", tmpnam(NULL)); fname[127]=0; mgl_write_png_solid(gr,fname,"MathGL ShowImage file"); if(!viewer || !viewer[0]) viewer = MGL_DEF_VIEWER; #ifdef WIN32 if(keep) { - snprintf(cmd,128,"%s %s &", viewer,fname); + snprintf(cmd,128,"%s %s &", viewer,fname); cmd[127]=0; if(system(cmd)==-1) printf("Error to call external viewer\n"); Sleep(2000); snprintf(cmd,128,"del %s", fname); @@ -634,13 +633,14 @@ void MGL_EXPORT mgl_show_image(HMGL gr, const char *viewer, int keep) #else if(keep) { - snprintf(cmd,128,"%s %s &", viewer,fname); + snprintf(cmd,128,"%s %s &", viewer,fname); cmd[127]=0; if(system(cmd)==-1) printf("Error to call external viewer\n"); sleep(2); snprintf(cmd,128,"rm %s", fname); } else snprintf(cmd,128,"%s %s; rm %s", viewer,fname,fname); #endif + cmd[127] = 0; if(system(cmd)==-1) printf("Error to call external viewer\n"); delete []cmd; } diff --git a/src/export_2d.cpp b/src/export_2d.cpp index 172d8a8..01a9b94 100644 --- a/src/export_2d.cpp +++ b/src/export_2d.cpp @@ -43,11 +43,11 @@ MGL_NO_EXPORT const char *mgl_get_dash(unsigned short d, mreal w,char dlm) if(((d>>j)&1) == p) f++; else { - snprintf(b,32," %g%c",f*w,dlm); s += b; + snprintf(b,32," %g%c",f*w,dlm); b[31]=0; s += b; p = (d>>j)&1; f = 1; n++; } } - snprintf(b,32,"%g",f*w); s += b; + snprintf(b,32,"%g",f*w); b[31]=0; s += b; s += (n%2) ? "" : " 0"; return s.c_str(); } @@ -193,7 +193,7 @@ void MGL_EXPORT mgl_write_eps(HMGL gr, const char *fname,const char *descr) if(pos) { buf[pos]=buf[pos+1]='b'; buf[pos+2]=0; } FILE *fb = fopen(buf,"w"); fprintf(fb, "%%%%BoundingBox: 0 0 %d %d\n", w, h); - fclose(fb); + fclose(fb); delete []buf; } const std::string loc = setlocale(LC_NUMERIC, NULL); setlocale(LC_NUMERIC, "C"); @@ -288,13 +288,14 @@ void MGL_EXPORT mgl_write_eps(HMGL gr, const char *fname,const char *descr) if(q.type<0) continue; // q.n1>=0 always cp.c = _Gr_->GetPrmCol(i); const mglPnt p1 = gr->GetPnt(q.n1); - if(q.type>1) snprintf(str,256,"%.2g %.2g %.2g rgb ", cp.r[0]/255.,cp.r[1]/255.,cp.r[2]/255.); + if(q.type>1) + { snprintf(str,256,"%.2g %.2g %.2g rgb ", cp.r[0]/255.,cp.r[1]/255.,cp.r[2]/255.); str[255]=0; } if(q.type==0) // mark { mreal x0 = p1.x,y0 = p1.y; snprintf(str,256,"%.2g lw %.2g %.2g %.2g rgb ", 50*q.s*q.w>1?50*q.s*q.w:1, cp.r[0]/255.,cp.r[1]/255.,cp.r[2]/255.); - wp=1; // NOTE: this may renew line style if a mark inside! + str[255]=0; wp=1; // NOTE: this may renew line style if a mark inside! if(q.s!=qs_old) { mgl_printf(fp, gz, "/ss {%g} def\n",q.s); @@ -341,7 +342,7 @@ void MGL_EXPORT mgl_write_eps(HMGL gr, const char *fname,const char *descr) else if(q.type==1) // line { snprintf(str,256,"%.2g lw %.2g %.2g %.2g rgb ", q.w>1 ? q.w:1., cp.r[0]/255.,cp.r[1]/255.,cp.r[2]/255.); - wp = q.w>1 ? q.w:1; st = q.n3; + str[255]=0; wp = q.w>1 ? q.w:1; st = q.n3; put_line(gr,fp,gz,i,wp,cp.c,st, "np %g %g mt ", "%g %g ll ", false, 1); const char *sd = mgl_get_dash(q.n3,q.w,' '); if(sd && sd[0]) mgl_printf(fp, gz, "%s [%s] %g sd dr\n",str,sd,q.w*q.s); @@ -610,7 +611,7 @@ void MGL_EXPORT mgl_write_tex(HMGL gr, const char *fname,const char *descr) const mglPrim &q = gr->GetPrm(i); if(q.type<0) continue; // q.n1>=0 always cp.c = _Gr_->GetPrmCol(i); - snprintf(cname,128,"color={rgb,255:red,%d;green,%d;blue,%d}",cp.r[0],cp.r[1],cp.r[2]); + snprintf(cname,128,"color={rgb,255:red,%d;green,%d;blue,%d}",cp.r[0],cp.r[1],cp.r[2]); cname[127]=0; const mglPnt p1=gr->GetPnt(q.n1); mreal x=p1.x/100,y=p1.y/100,s=q.s/100; diff --git a/src/export_3d.cpp b/src/export_3d.cpp index eee798e..5c9232a 100644 --- a/src/export_3d.cpp +++ b/src/export_3d.cpp @@ -92,9 +92,9 @@ void MGL_EXPORT mgl_obj_glyph_old(HMGL gr, const mglPrim &q, const mglPnt &p, FI } else // glyph_wire(p,f,g, d); { + long il=0; for(long ik=0;ikid;in;i+=mglNumThr) mgl_fft(t->b+2*(i%nx)+2*nx*ny*(i/nx), nx, ny, t->v, w, t->p[3]); @@ -184,7 +184,7 @@ MGL_NO_EXPORT void* mgl_fftz(void *par) #pragma omp parallel #endif { - void *w = mgl_fft_alloc_thr(nx); + void *w = mgl_fft_alloc_thr(nz); #pragma omp for nowait for(long i=t->id;in;i+=mglNumThr) mgl_fft(t->b+2*i, nx*ny, nz, t->v, w, t->p[3]); @@ -1071,26 +1071,28 @@ void MGL_EXPORT mgl_data_hankel_(uintptr_t *d, const char *dir,int l) void MGL_EXPORT mgl_data_fill_sample(HMDT d, const char *how) { if(!how || *how==0) return; - bool xx = strchr(how,'x'); - long n=d->nx; + bool kk = strchr(how,'k'); + long n=d->nx,dn=1; mreal *aa=d->a; + if(strchr(how,'y')) { n=d->ny; dn=d->nx; } + if(strchr(how,'z')) { n=d->nz; dn=d->nx*d->ny; } if(strchr(how,'h')) // Hankel { #if MGL_HAVE_GSL gsl_dht *dht = gsl_dht_new(n,0,1); #pragma omp parallel for for(long i=0;iny*d->nz;i++) memcpy(aa+i*n,aa,n*sizeof(mreal)); + for(long i=0;iGetNN();i++) aa[i] = aa[((i%(n*dn))/dn)*dn]; } void MGL_EXPORT mgl_data_fill_sample_(uintptr_t *d, const char *how,int l) { char *s=new char[l+1]; memcpy(s,how,l); s[l]=0; @@ -1257,7 +1259,7 @@ MGL_NO_EXPORT double *mgl_d_correl(HCDT d1, HCDT d2, const char *dir) { mgl_fft_data.wtz = wt; clear = false; mgl_fft_data.wnz=nz; } } if(clear) mgl_fft_free(wt,0,0); - return a; + delete []b; return a; } //----------------------------------------------------------------------------- HADT MGL_EXPORT mgl_datac_correl(HCDT d1, HCDT d2, const char *dir) diff --git a/src/fit.cpp b/src/fit.cpp index d49f686..4a78964 100644 --- a/src/fit.cpp +++ b/src/fit.cpp @@ -42,8 +42,8 @@ void MGL_EXPORT mgl_puts_fit(HMGL gr, double x, double y, double z, const char * long n = strlen(mglFitRes)+(pre?strlen(pre):0)+1; char *buf = new char[n]; if(pre) snprintf(buf,n,"%s%s",pre,mglFitRes); - else strcpy(buf,mglFitRes); - mgl_puts(gr,x,y,z,buf,font,size); + else strncpy(buf,mglFitRes,n); + buf[n-1]=0; mgl_puts(gr,x,y,z,buf,font,size); delete []buf; } void MGL_EXPORT mgl_puts_fit_(uintptr_t* gr, mreal *x, mreal *y, mreal *z, const char *prefix, const char *font, mreal *size, int l, int n) @@ -204,12 +204,12 @@ void mglPrepareFitEq(mglBase *gr,mreal chi, const char *eq, const char *var, mre { char buf[32]=""; mglFitChi = chi; - snprintf(mglFitRes,1024,"chi=%g",chi); + snprintf(mglFitRes,1024,"chi=%g",chi); mglFitRes[1023]=0; size_t i,k,len=strlen(var); for(i=0;iSetWarn(-1,mglFitRes); @@ -221,7 +221,7 @@ void mglPrepareFitEq(mglBase *gr,mreal chi, const char *eq, const char *var, mre if(c && (i==0 || !isalnum(eq[i-1])) && (i==len-1 || !isalnum(eq[i+1]))) { snprintf(buf,32,"%g",par[c-var]); - strcat(mglFitRes+k, buf); k+=strlen(buf); + buf[31]=0; strcat(mglFitRes+k, buf); k+=strlen(buf); } else { mglFitRes[k] = eq[i]; k++; } } diff --git a/src/font.cpp b/src/font.cpp index 6ea1871..d1b1318 100644 --- a/src/font.cpp +++ b/src/font.cpp @@ -688,7 +688,7 @@ bool mglFont::Load(const char *base, const char *path) } Clear(); // first clear old - snprintf(str,256,"%s%c%s.vfm",path,sep,base?base:""); + snprintf(str,256,"%s%c%s.vfm",path,sep,base?base:""); str[255]=0; std::vector norm, bold, ital, both; if(!(base && *base) || !read_main(str,norm)) { @@ -703,17 +703,17 @@ bool mglFont::Load(const char *base, const char *path) //================== bold =========================================== #pragma omp section { char str[256]; snprintf(str,256,"%s%c%s_b.vfm",path,sep,base); // this file may absent - read_data(str, 1, bold, ex_b); } + str[255]=0; read_data(str, 1, bold, ex_b); } //================== italic ========================================= #pragma omp section { char str[256]; snprintf(str,256,"%s%c%s_i.vfm",path,sep,base); - read_data(str, 2, ital, ex_i); } + str[255]=0; read_data(str, 2, ital, ex_i); } //================== bold-italic ==================================== #pragma omp section { char str[256]; snprintf(str,256,"%s%c%s_bi.vfm",path,sep,base); - read_data(str, 3, both, ex_bi); } + str[255]=0; read_data(str, 3, both, ex_bi); } } // now collect data diff --git a/src/interp.hpp b/src/interp.hpp index 0457157..46eee6d 100644 --- a/src/interp.hpp +++ b/src/interp.hpp @@ -250,5 +250,6 @@ template void mgl_gspline_init(long n, const mreal *x, const Treal c[5*i+3] = (3*h2)*(v[i+1]-v[i]) - (b[i+1]+b[i]+b[i])*h; c[5*i+4] = (2*h2*h)*(v[i]-v[i+1]) + (b[i+1]+b[i])*h2; } + delete []a; delete []b; } //----------------------------------------------------------------------------- diff --git a/src/opengl.cpp b/src/opengl.cpp index e35b6ca..0c327e0 100644 --- a/src/opengl.cpp +++ b/src/opengl.cpp @@ -17,7 +17,7 @@ HMGL MGL_EXPORT mgl_create_graph_gl() uintptr_t MGL_EXPORT mgl_create_graph_gl_() { return uintptr_t(new mglCanvasGL); } //----------------------------------------------------------------------------- -mglCanvasGL::mglCanvasGL() : mglCanvas(1,1) {} +mglCanvasGL::mglCanvasGL() : mglCanvas(1,1) { Clf(); Zoom(0,0,1,1); } //----------------------------------------------------------------------------- mglCanvasGL::~mglCanvasGL(){} //----------------------------------------------------------------------------- @@ -189,6 +189,12 @@ void mglCanvasGL::Clf(mglColor Back) gl_clf(Back); } //----------------------------------------------------------------------------- +void mglCanvasGL::Clf(const char *col) +{ + mglCanvas::Clf(col); + gl_clf(mglColor(BDef[0]/255.,BDef[1]/255.,BDef[2]/255.)); +} +//----------------------------------------------------------------------------- void mglCanvasGL::gl_clf(mglColor Back) { if(Back==NC) Back = WC; @@ -246,6 +252,7 @@ unsigned char **mglCanvasGL::GetRGBLines(long &width, long &height, unsigned cha p = (unsigned char **)malloc(height * sizeof(unsigned char *)); f = (unsigned char *) malloc(width*height * sizeof(unsigned char)*d); for(long i=0;iNeedStop()) return 0; + curGr = gr->Self(); std::wstring arg[1024]; str=mgl_trim_ws(str); long n,k=0,m=0,mm=0,res; @@ -612,9 +614,8 @@ int mglParser::Parse(mglGraph *gr, std::wstring str, long pos) if(n && k!=na+2) { char buf[64]; - snprintf(buf,64,"Bad arguments for %ls: %ld instead of %d\n", - a[0].w.c_str(),k-2,na); - gr->SetWarn(-1,buf); n = 1; + snprintf(buf,64,"Bad arguments for %ls: %ld instead of %d\n", a[0].w.c_str(),k-2,na); + buf[63]=0; gr->SetWarn(-1,buf); n = 1; } else if(n) { @@ -860,6 +861,7 @@ void mglParser::Execute(mglGraph *gr, int n, const wchar_t **text) else if(r==4) snprintf(buf,64,"\nUnbalanced ' in line %ld\n", i+1); else if(gr->GetWarn()>0) snprintf(buf,64," in line %ld\n", i+1); else *buf=0; + buf[63] = 0; if(*buf) gr->SetWarn(-2,buf); if(r>0 && r<5) res=r; } diff --git a/src/pixel.cpp b/src/pixel.cpp index c22949b..9e94096 100644 --- a/src/pixel.cpp +++ b/src/pixel.cpp @@ -621,6 +621,8 @@ void mglCanvas::Finish() static mglMatrix bp; if(Quality==MGL_DRAW_NONE) return; #if MGL_HAVE_PTHREAD + pthread_mutex_lock(&mutexPrm); + pthread_mutex_lock(&mutexPnt); pthread_mutex_lock(&mutexClf); #elif MGL_HAVE_OMP omp_set_lock(&lockClf); @@ -654,6 +656,8 @@ void mglCanvas::Finish() } #if MGL_HAVE_PTHREAD pthread_mutex_unlock(&mutexClf); + pthread_mutex_unlock(&mutexPnt); + pthread_mutex_unlock(&mutexPrm); #elif MGL_HAVE_OMP omp_unset_lock(&lockClf); #endif @@ -899,7 +903,7 @@ bool MGL_LOCAL_PURE visible(long i, long j, const unsigned char m[8], mreal pw, // register int ii = int(0.5+(i*c+j*s)/pw)%8, jj = int(0.5+(j*c-i*s)/pw)%8; // if(ii<0) ii+=8; if(jj<0) jj+=8; register int ii = int(0.5+(i*c+j*s)/pw)&7, jj = int(0.5+(j*c-i*s)/pw)&7; - return m[jj] & (1<dd) v += (u-dd)*(u-dd); if(v>pw*pw) continue; - if(!(pd & ( 1<dd) v += (u-dd)*(u-dd); if(v>pw*pw) continue; - if(!(pd & (1<dd) v += (u-dd)*(u-dd); register float pw=dr->PenWidth, dpw=3; if(dr->ObjId==HighId) { pw *= 2; dpw=2; } - if(v>pw*pw || !(dr->PDef & ( 1<pPos+u/pw/1.5, 16)) ) )) return; + if(v>pw*pw || !(dr->PDef & ( 1L<pPos+u/pw/1.5, 16)) ) )) return; mglPnt p = p1+d*(u/dd); unsigned char r[4]; col2int(p,r,dr->ObjId); diff --git a/src/plot.cpp b/src/plot.cpp index 592655b..0df5b3e 100644 --- a/src/plot.cpp +++ b/src/plot.cpp @@ -214,22 +214,27 @@ void MGL_EXPORT mgl_candle_xyv(HMGL gr, HCDT x, HCDT v1, HCDT v2, HCDT y1, HCDT if(y1->GetNx()!=n || y2->GetNx()!=n) { gr->SetWarn(mglWarnDim,"Candle"); return; } static int cgid=1; gr->StartGroup("Candle",cgid++); - gr->SaveState(opt); gr->SetPenPal(pen,&pal); - gr->NextColor(pal); gr->Reserve(8*n); + gr->SaveState(opt); gr->SetPenPal(pen,&pal); gr->Reserve(8*n); bool sh = mglchr(pen,'!'); + bool wire = mglchr(pen,'#'); mreal dv=nx>n?1:0; if(mglchr(pen,'<')) dv = 1; if(mglchr(pen,'^')) dv = 0; if(mglchr(pen,'>')) dv = -1; mreal zm = gr->AdjustZMin(); + mreal c1,c2; c2=c1=gr->NextColor(pal); + bool col2 = (gr->GetNumPal(pal)==2 && !sh); + if(col2) c2 = gr->NextColor(pal); for(long i=0;iv(i), m2 = v2->v(i), xx = x->v(i); - mreal d = iv(i+1)-xx : xx-x->v(i-1); + mreal d = iv(i+1)-xx : xx-x->v(i-1), c; mreal x1 = xx + d/2*(dv-gr->BarWidth); mreal x2 = x1 + gr->BarWidth*d; xx = (x1+x2)/2; - mreal c = sh ? gr->NextColor(pal,i):gr->CDef; + if(sh) c = gr->NextColor(pal,i); + else if(wire) c = (i>0 && m2>v2->v(i-1))?c2:c1; + else c = (m1>m2)?c1:c2; long n1 = gr->AddPnt(mglPoint(xx,y1->v(i),zm),c); long n2 = gr->AddPnt(mglPoint(xx,m1,zm),c); gr->line_plot(n1,n2); @@ -243,7 +248,7 @@ void MGL_EXPORT mgl_candle_xyv(HMGL gr, HCDT x, HCDT v1, HCDT v2, HCDT y1, HCDT n4 = gr->AddPnt(mglPoint(x2,m2,zm),c); gr->line_plot(n1,n2); gr->line_plot(n1,n3); gr->line_plot(n4,n2); gr->line_plot(n4,n3); - if(m1>m2) gr->quad_plot(n1,n2,n3,n4); + if(m1>m2 || (col2 && !wire)) gr->quad_plot(n1,n2,n3,n4); } if(d1) delete y1; if(d2) delete y2; gr->EndGroup(); @@ -1054,7 +1059,6 @@ void MGL_EXPORT mgl_barh_yx(HMGL gr, HCDT y, HCDT v, const char *pen, const char bool wire = mglchr(pen,'#'); bool above = mglchr(pen,'a'), fall = mglchr(pen,'f'); if(above) fall = false; - mreal c1,c2; mreal *dd=new mreal[n], x0,xp,dv=ny>n?1:0; if(mglchr(pen,'<')) dv = 1; if(mglchr(pen,'^')) dv = 0; @@ -1067,7 +1071,7 @@ void MGL_EXPORT mgl_barh_yx(HMGL gr, HCDT y, HCDT v, const char *pen, const char for(long j=0;jNeedStop()) break; - c2=c1=gr->NextColor(pal); + mreal c1,c2; c2=c1=gr->NextColor(pal); if(gr->GetNumPal(pal)==2*m && !sh) c2 = gr->NextColor(pal); long mx = jGetNy() ? j:0, my = jGetNy() ? j:0; xp = x0 = gr->GetOrgX('y'); @@ -1127,7 +1131,7 @@ void MGL_EXPORT mgl_ohlc_x(HMGL gr, HCDT x, HCDT open, HCDT high, HCDT low, HCDT { gr->SetWarn(mglWarnDim,"OHLC"); return; } gr->SaveState(opt); static int cgid=1; gr->StartGroup("OHLC",cgid++); - mreal dv=nx>n?1:0,dd,vv,x1,x2,cc; + mreal dv=nx>n?1:0; if(mglchr(pen,'<')) dv = 1; if(mglchr(pen,'^')) dv = 0; if(mglchr(pen,'>')) dv = -1; @@ -1139,24 +1143,27 @@ void MGL_EXPORT mgl_ohlc_x(HMGL gr, HCDT x, HCDT open, HCDT high, HCDT low, HCDT for(long j=0;jNeedStop()) break; - cc=gr->NextColor(pal); + mreal c1,c2; c2=c1=gr->NextColor(pal); + if(gr->GetNumPal(pal)==2*m && !sh) c2 = gr->NextColor(pal); mx = jGetNy() ? j:0; for(long i=0;iv(i,mx); dd = iv(i+1)-vv : vv-x->v(i-1); x1 = vv + dd/2*(dv-gr->BarWidth); x2 = x1 + gr->BarWidth*dd; x2 = (x2-x1)/m; x1 += j*x2; x2 += x1; vv = (x2+x1)/2; - mreal c = sh ? gr->NextColor(pal,i):cc; + if(sh) c1=c2=gr->NextColor(pal,i); register long n1,n2; - dd = open->v(i,j); - n1=gr->AddPnt(mglPoint(x1,dd,zVal),c); - n2=gr->AddPnt(mglPoint(vv,dd,zVal),c); - gr->line_plot(n1,n2); dd = close->v(i,j); + mreal c = (i==0 || dd>=close->v(i-1,j)) ? c1:c2; n1=gr->AddPnt(mglPoint(vv,dd,zVal),c); n2=gr->AddPnt(mglPoint(x2,dd,zVal),c); gr->line_plot(n1,n2); + dd = open->v(i,j); + n1=gr->AddPnt(mglPoint(x1,dd,zVal),c); + n2=gr->AddPnt(mglPoint(vv,dd,zVal),c); + gr->line_plot(n1,n2); n1=gr->AddPnt(mglPoint(vv,low->v(i,j),zVal),c); n2=gr->AddPnt(mglPoint(vv,high->v(i,j),zVal),c); gr->line_plot(n1,n2); diff --git a/src/surf.cpp b/src/surf.cpp index 0890e99..3734b42 100644 --- a/src/surf.cpp +++ b/src/surf.cpp @@ -74,8 +74,8 @@ void MGL_EXPORT mgl_fsurf(HMGL gr, const char *eqZ, const char *sch, const char mreal r = gr->SaveState(opt); long n = (mgl_isnan(r) || r<=0) ? 100:long(r+0.5); mglData z(n,n),res; - mglDataV x(n,n); x.Fill(gr->Min.x,gr->Max.x,'x'); x.s=L"x"; - mglDataV y(n,n); y.Fill(gr->Min.y,gr->Max.y,'y'); y.s=L"y"; + mglDataV x(n,n,1, gr->Min.x,gr->Max.x,'x'); x.s=L"x"; + mglDataV y(n,n,1, gr->Min.y,gr->Max.y,'y'); y.s=L"y"; mglDataV t(n,n); t.s=L"#$mgl"; std::vector list; list.push_back(&x); list.push_back(&y); list.push_back(&t); @@ -90,8 +90,8 @@ void MGL_EXPORT mgl_fsurf_xyz(HMGL gr, const char *eqX, const char *eqY, const c mreal r = gr->SaveState(opt); long n = (mgl_isnan(r) || r<=0) ? 100:long(r+0.5); mglData z(n,n), x(n,n), y(n,n), res; - mglDataV u(n,n); u.Fill(0,1,'x'); u.s=L"u"; - mglDataV v(n,n); v.Fill(0,1,'y'); v.s=L"v"; + mglDataV u(n,n,1, 0,1,'x'); u.s=L"u"; + mglDataV v(n,n,1, 0,1,'y'); v.s=L"v"; mglDataV t(n,n); t.s=L"#$mgl"; std::vector list; list.push_back(&u); list.push_back(&v); list.push_back(&t); diff --git a/texinfo/core_en.texi b/texinfo/core_en.texi index a7b8026..b31e7da 100644 --- a/texinfo/core_en.texi +++ b/texinfo/core_en.texi @@ -2311,7 +2311,7 @@ These functions draw boxplot (also known as a box-and-whisker diagram) at points @deftypefnx {C function} @code{void} mgl_candle_yv (@code{HMGL} gr, @code{HCDT} v1, @code{HCDT} v2, @code{HCDT} y1, @code{HCDT} y2, @code{const char *}pen, @code{const char *}opt) @deftypefnx {C function} @code{void} mgl_candle_xyv (@code{HMGL} gr, @code{HCDT} x, @code{HCDT} v1, @code{HCDT} v2, @code{HCDT} y1, @code{HCDT} y2, @code{const char *}pen, @code{const char *}opt) @end ifclear -These functions draw candlestick chart at points @var{x}[i]. This is a combination of a line-chart and a bar-chart, in that each bar represents the range of price movement over a given time interval. Wire (or white) candle correspond to price growth @var{v1}[i]<@var{v2}[i], opposite case -- solid (or dark) candle. "Shadows" show the minimal @var{y1} and maximal @var{y2} prices. If @var{v2} is absent then it is determined as @var{v2}[i]=@var{v1}[i+1]. See also @ref{plot}, @ref{bars}, @ref{ohlc}, @ref{barwidth}. @sref{Candle sample} +These functions draw candlestick chart at points @var{x}[i]. This is a combination of a line-chart and a bar-chart, in that each bar represents the range of price movement over a given time interval. Wire (or white) candle correspond to price growth @var{v1}[i]<@var{v2}[i], opposite case -- solid (or dark) candle. You can give different colors for growth and decrease values if number of specified colors is equal to 2. If @var{pen} contain @samp{#} then the wire candle will be used even for 2-color scheme. "Shadows" show the minimal @var{y1} and maximal @var{y2} prices. If @var{v2} is absent then it is determined as @var{v2}[i]=@var{v1}[i+1]. See also @ref{plot}, @ref{bars}, @ref{ohlc}, @ref{barwidth}. @sref{Candle sample} @end deftypefn @anchor{ohlc} @@ -2323,7 +2323,7 @@ These functions draw candlestick chart at points @var{x}[i]. This is a combinati @deftypefnx {C function} @code{void} mgl_ohlc (@code{HMGL} gr, @code{HCDT} o, @code{HCDT} h, @code{HCDT} l, @code{HCDT} c, @code{const char *}pen, @code{const char *}opt) @deftypefnx {C function} @code{void} mgl_ohlc_x (@code{HMGL} gr, @code{HCDT} x, @code{HCDT} o, @code{HCDT} h, @code{HCDT} l, @code{HCDT} c, @code{const char *}pen, @code{const char *}opt) @end ifclear -These functions draw Open-High-Low-Close diagram. This diagram show vertical line for between maximal(high @var{h}) and minimal(low @var{l}) values, as well as horizontal lines before/after vertical line for initial(open @var{o})/final(close @var{c}) values of some process (usually price). See also @ref{candle}, @ref{plot}, @ref{barwidth}. @sref{OHLC sample} +These functions draw Open-High-Low-Close diagram. This diagram show vertical line for between maximal(high @var{h}) and minimal(low @var{l}) values, as well as horizontal lines before/after vertical line for initial(open @var{o})/final(close @var{c}) values of some process (usually price). You can give different colors for up and down values (when closing values higher or not as in previous point) if number of specified colors is equal to 2*number of curves. See also @ref{candle}, @ref{plot}, @ref{barwidth}. @sref{OHLC sample} @end deftypefn @@ -3380,10 +3380,10 @@ Fit data along x-, y- and z-directions for array specified parametrically @var{a @end deftypefn @anchor{fit} -@deftypefn {MGL command} {} fit res adat sdat 'func' 'var' [ini=0] -@deftypefnx {MGL command} {} fit res xdat adat sdat 'func' 'var' [ini=0] -@deftypefnx {MGL command} {} fit res xdat ydat adat sdat 'func' 'var' [ini=0] -@deftypefnx {MGL command} {} fit res xdat ydat zdat adat sdat 'func' 'var' [ini=0] +@deftypefn {MGL command} {} fit res adat 'func' 'var' [ini=0] +@deftypefnx {MGL command} {} fit res xdat adat 'func' 'var' [ini=0] +@deftypefnx {MGL command} {} fit res xdat ydat adat 'func' 'var' [ini=0] +@deftypefnx {MGL command} {} fit res xdat ydat zdat adat 'func' 'var' [ini=0] @ifclear UDAV @deftypefnx {Method on @code{mglGraph}} @code{mglData} Fit (@code{const mglDataA &}a, @code{const char *}func, @code{const char *}var, @code{const char *}opt=@code{""}) @deftypefnx {Method on @code{mglGraph}} @code{mglData} Fit (@code{const mglDataA &}a, @code{const char *}func, @code{const char *}var, @code{mglData &}ini, @code{const char *}opt=@code{""}) diff --git a/texinfo/core_ru.texi b/texinfo/core_ru.texi index bb7c2d5..b2c87f5 100644 --- a/texinfo/core_ru.texi +++ b/texinfo/core_ru.texi @@ -2218,7 +2218,7 @@ Draw bitmap (logo) along whole axis range, which can be changed by @ref{Command @deftypefnx {Функция С} @code{void} mgl_candle_yv (@code{HMGL} gr, @code{HCDT} v1, @code{HCDT} v2, @code{HCDT} y1, @code{HCDT} y2, @code{const char *}pen, @code{const char *}opt) @deftypefnx {Функция С} @code{void} mgl_candle_xyv (@code{HMGL} gr, @code{HCDT} x, @code{HCDT} v1, @code{HCDT} v2, @code{HCDT} y1, @code{HCDT} y2, @code{const char *}pen, @code{const char *}opt) @end ifclear -Функции рисуют candlestick chart в точках @var{x}[i]. Этот график показывает прямоугольником ("свечой") диапазон изменения величины. Прозрачная (белая) свеча соответствует росту величины @var{v1}[i]<@var{v2}[i], чёрная -- уменьшению. "Тени" показывают минимальное @var{y1} и максимальное @var{y2} значения. Если @var{v2} отсутствует, то он определяется как @var{v2}[i]=@var{v1}[i+1]. См. также @ref{plot}, @ref{bars}, @ref{ohlc}, @ref{barwidth}. @sref{Candle sample} +Функции рисуют candlestick chart в точках @var{x}[i]. Этот график показывает прямоугольником ("свечой") диапазон изменения величины. Прозрачная (белая) свеча соответствует росту величины @var{v1}[i]<@var{v2}[i], чёрная -- уменьшению. "Тени" показывают минимальное @var{y1} и максимальное @var{y2} значения. Если @var{v2} отсутствует, то он определяется как @var{v2}[i]=@var{v1}[i+1]. Можно использовать разные цвета для растущих и падающих дней если число указанных цветов равно удвоенному числу кривых для построения. Если @var{pen} содержит @samp{#}, то прозрачная свеча будет использована и при 2-цветной схеме. См. также @ref{plot}, @ref{bars}, @ref{ohlc}, @ref{barwidth}. @sref{Candle sample} @end deftypefn @anchor{ohlc} @@ -2230,7 +2230,7 @@ Draw bitmap (logo) along whole axis range, which can be changed by @ref{Command @deftypefnx {Функция С} @code{void} mgl_ohlc (@code{HMGL} gr, @code{HCDT} o, @code{HCDT} h, @code{HCDT} l, @code{HCDT} c, @code{const char *}pen, @code{const char *}opt) @deftypefnx {Функция С} @code{void} mgl_ohlc_x (@code{HMGL} gr, @code{HCDT} x, @code{HCDT} o, @code{HCDT} h, @code{HCDT} l, @code{HCDT} c, @code{const char *}pen, @code{const char *}opt) @end ifclear -Функции рисуют Open-High-Low-Close диаграмму. Этот график содержит вертикальные линии между максимальным @var{h} и минимальным @var{l} значениями, и горизонтальные линии перед/после вертикальной линии для начального @var{o} и конечного @var{c} значений процесса (обычно цены). См. также @ref{candle}, @ref{plot}, @ref{barwidth}. @sref{OHLC sample} +Функции рисуют Open-High-Low-Close диаграмму. Этот график содержит вертикальные линии между максимальным @var{h} и минимальным @var{l} значениями, и горизонтальные линии перед/после вертикальной линии для начального @var{o} и конечного @var{c} значений процесса (обычно цены). Можно использовать разные цвета для растущих и падающих дней если число указанных цветов равно удвоенному числу кривых для построения. См. также @ref{candle}, @ref{plot}, @ref{barwidth}. @sref{OHLC sample} @end deftypefn @@ -3292,10 +3292,10 @@ Draw bitmap (logo) along whole axis range, which can be changed by @ref{Command @end deftypefn @anchor{fit} -@deftypefn {Команда MGL} {} fit res adat sdat 'func' 'var' [ini=0] -@deftypefnx {Команда MGL} {} fit res xdat adat sdat 'func' 'var' [ini=0] -@deftypefnx {Команда MGL} {} fit res xdat ydat adat sdat 'func' 'var' [ini=0] -@deftypefnx {Команда MGL} {} fit res xdat ydat zdat adat sdat 'func' 'var' [ini=0] +@deftypefn {Команда MGL} {} fit res adat 'func' 'var' [ini=0] +@deftypefnx {Команда MGL} {} fit res xdat adat 'func' 'var' [ini=0] +@deftypefnx {Команда MGL} {} fit res xdat ydat adat 'func' 'var' [ini=0] +@deftypefnx {Команда MGL} {} fit res xdat ydat zdat adat 'func' 'var' [ini=0] @ifclear UDAV @deftypefnx {Метод класса @code{mglGraph}} @code{mglData} Fit (@code{const mglDataA &}a, @code{const char *}func, @code{const char *}var, @code{const char *}opt=@code{""}) @deftypefnx {Метод класса @code{mglGraph}} @code{mglData} Fit (@code{const mglDataA &}a, @code{const char *}func, @code{const char *}var, @code{mglData &}ini, @code{const char *}opt=@code{""}) diff --git a/texinfo/doc_en.texi b/texinfo/doc_en.texi index 1e46da6..5d09f28 100644 --- a/texinfo/doc_en.texi +++ b/texinfo/doc_en.texi @@ -72,45 +72,45 @@ This file documents the Mathematical Graphic Library (MathGL), a collection of c MathGL -@comment