From 2209c9e53e7d5a50c87fd503d0970b143e22fff9 Mon Sep 17 00:00:00 2001 From: Dimitrios Eftaxiopoulos Date: Sat, 5 Dec 2015 15:50:17 +0200 Subject: [PATCH] Imported Upstream version 2.3.3+svn1216 --- CMakeLists.txt | 41 + ChangeLog.txt | 21 + FindMathGL2.cmake | 8 +- clean-svn | 3 + cmake-qt4.txt | 6 +- cmake-qt5.txt | 7 + examples/CMakeLists.txt | 10 +- examples/full_test.cpp | 9 +- include/config.h.in | 2 + include/mgl2/Fl_MathGL.h | 144 ++ include/mgl2/abstract.h | 11 +- include/mgl2/base.h | 11 +- include/mgl2/canvas.h | 15 +- include/mgl2/canvas_cf.h | 4 + include/mgl2/canvas_wnd.h | 2 +- include/mgl2/data.h | 85 +- include/mgl2/data_cf.h | 3 + include/mgl2/datac.h | 67 +- include/mgl2/datac_cf.h | 7 + include/mgl2/define.h | 10 +- include/mgl2/fltk.h | 124 +- include/mgl2/mgl.h | 32 +- include/mgl2/mgl_cf.h | 2 +- include/mgl2/mpi.h | 4 +- include/mgl2/pde.h | 2 +- include/mgl2/plot.h | 10 + include/mgl2/prim.h | 19 +- include/mgl2/qmathgl.h | 4 +- include/mgl2/qt.h | 2 +- include/mgl2/type.h | 2 + include/mgl2/wnd.h | 2 +- json/CMakeLists.txt | 9 +- mgltex/Recompilation_decision.eps | 1851 +++++++++++++++++ mgltex/Recompilation_decision.pdf | Bin 0 -> 77225 bytes mgltex/Recompilation_decision.svg | 1560 +++++++++++++++ mgltex/mgltex.dtx | 3099 ++++++++++++++++++----------- mgltex/mgltex.ins | 12 +- mgltex/mgltex.pdf | Bin 244484 -> 510993 bytes mgltex/mgltex.sty | 1409 +++++++------ mgltex/sample.tex | 6 +- src/CMakeLists.txt | 58 +- src/addon.cpp | 4 +- src/axis.cpp | 7 +- src/base.cpp | 92 +- src/canvas.cpp | 25 +- src/canvas_cf.cpp | 4 + src/complex.cpp | 3 + src/complex_io.cpp | 88 +- src/crust.cpp | 77 +- src/data.cpp | 27 +- src/data_ex.cpp | 161 ++ src/data_io.cpp | 32 +- src/evalc.cpp | 25 +- src/evalp.cpp | 6 +- src/exec.cpp | 170 +- src/export_2d.cpp | 6 +- src/fft.cpp | 8 +- src/fit.cpp | 15 +- src/interp.hpp | 36 +- src/opengl.cpp | 1 - src/parser.cpp | 5 +- src/pixel.cpp | 216 +- src/plot.cpp | 159 +- src/prim.cpp | 145 +- src/s_hull/s_hull_pro.cpp | 23 +- src/s_hull/s_hull_pro.h | 3 +- src/vect.cpp | 135 +- src/volume.cpp | 6 +- todo.txt | 33 +- udav/CMakeLists.txt | 8 +- udav/prop_dlg.cpp | 14 +- udav/prop_dlg.h | 2 +- udav/qmglsyntax.cpp | 2 +- udav/text_pnl.cpp | 11 +- udav/textedit.cpp | 174 ++ udav/textedit.h | 31 +- udav/udav.desktop | 3 +- udav/udav_wnd.cpp | 22 +- utils/CMakeLists.txt | 4 +- utils/make_bin.cpp | 6 +- utils/mglconv.cpp | 7 +- utils/mglview.cpp | 7 +- widgets/CMakeLists.txt | 75 +- widgets/fltk.cpp | 8 +- widgets/qt.cpp | 30 +- widgets/qt4/CMakeLists.txt | 78 +- widgets/qt5/CMakeLists.txt | 80 +- 87 files changed, 7952 insertions(+), 2795 deletions(-) create mode 100755 clean-svn create mode 100644 include/mgl2/Fl_MathGL.h create mode 100644 mgltex/Recompilation_decision.eps create mode 100644 mgltex/Recompilation_decision.pdf create mode 100644 mgltex/Recompilation_decision.svg diff --git a/CMakeLists.txt b/CMakeLists.txt index 2aae334..e2f5e46 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -15,6 +15,38 @@ set(MathGL_VERSION_MAJOR 2) set(MathGL_VERSION_MINOR 3.3) set(MathGL_SOVERSION 7.4.0) +function(mgl_add_lib mgl_tmp_lib) + if(${mgl_tmp_lib} MATCHES mgl) + set(mgllib mgl) + set(mgllib2 mgl2) + else(${mgl_tmp_lib} MATCHES mgl) + set(mgllib mgl-${mgl_tmp_lib}) + set(mgllib2 mgl2-${mgl_tmp_lib}) + endif(${mgl_tmp_lib} MATCHES mgl) + set(mgl_src_lst ${ARGV}) + list(REMOVE_AT mgl_src_lst 0) + add_library(${mgllib} SHARED ${mgl_src_lst}) + add_library(${mgllib}-static STATIC ${mgl_src_lst}) + set_target_properties(${mgllib} PROPERTIES SOVERSION ${MathGL_SOVERSION}) + set_target_properties(${mgllib} PROPERTIES CLEAN_DIRECT_OUTPUT 1) + set_target_properties(${mgllib} PROPERTIES DEFINE_SYMBOL "mgl_EXPORTS") + set_target_properties(${mgllib}-static PROPERTIES CLEAN_DIRECT_OUTPUT 1) + target_compile_definitions(${mgllib}-static PUBLIC MGL_STATIC_DEFINE) + + if(enable-mgl2) + set_target_properties(${mgllib} PROPERTIES OUTPUT_NAME "${mgllib2}") + set_target_properties(${mgllib}-static PROPERTIES OUTPUT_NAME "${mgllib2}") + else(enable-mgl2) + set_target_properties(${mgllib}-static PROPERTIES OUTPUT_NAME "${mgllib}") + endif(enable-mgl2) + + install( + TARGETS ${mgllib} ${mgllib}-static + RUNTIME DESTINATION bin + ARCHIVE DESTINATION ${MGL_LIB_INSTALL_DIR} + LIBRARY DESTINATION ${MGL_LIB_INSTALL_DIR} + ) +endfunction(mgl_add_lib mgl_tmp_lib) MACRO(MGL_DEPENDENT_OPTION option doc default depends1 force1 depends2 force2) IF(${option}_ISSET MATCHES "^${option}_ISSET$") @@ -72,6 +104,7 @@ option(enable-all-widgets "Enable all Widgets") 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-pthr_fltk "Enable POSIX threads for widgets" ON) option(enable-openmp "Enable OpenMP support" ON) if(enable-pthread AND enable-openmp) @@ -174,6 +207,7 @@ CHECK_CXX_SOURCE_COMPILES( #include int main(int argc, char *args[]) {std::complex c(2.0, 1.0); +double _Complex i=1.0i; double _Complex *a = reinterpret_cast(&c); std::complex b(*a);return 0;}" MGL_HAVE_C99_COMPLEX) if(NOT MGL_HAVE_C99_COMPLEX) @@ -259,6 +293,13 @@ endif(enable-pthread) if(enable-gsl) set(MGL_HAVE_GSL 1) + FIND_PACKAGE(PkgConfig) + pkg_check_modules(GSL2 REQUIRED gsl) + if(GSL2_FOUND) + if ( NOT ${GSL2_VERSION} LESS 2.0) + SET(MGL_HAVE_GSL2 1) + endif ( NOT ${GSL2_VERSION} LESS 2.0) + endif ( GSL2_FOUND ) find_library(GSL_LIB gsl) find_library(GSL_CBLAS_LIB gslcblas) find_path(GSL_INCLUDE_DIR gsl/gsl_fft_complex.h) diff --git a/ChangeLog.txt b/ChangeLog.txt index 3add637..f58b86c 100644 --- a/ChangeLog.txt +++ b/ChangeLog.txt @@ -1,3 +1,24 @@ +2.3.4 Released ?? December 2015 + +* Add mglData::Pulse() for determining pulse parameters +* Add Pmap() plot for Poincare map +* Add Lamerey() plot for Lamerey diagram +* Add Bifurcation() plot for Bifurcation diagram +* Add mglGraph::SetPenDelta() for changing size of semi-transparent area around lines, marks, glyphs, ... + +* Add MGL command 'fscanf' for getting formated data from textual file +* Add MGL command 'echo' for printing the content of data +* Add MGL command 'print' -- like 'info' but print immediately in stdout +* Add option to rewrite file in 'savehdf' + +* Force set focus for editor in UDAV +* Add line numbers to UDAV editor. Cyan number denote current line, red numbers denote lines with errors. +* Disable mouse wheel for zooming in UDAV by default + +* Update mgltex (thanks to Diego Sejas Viscarra) + +* Bugfixes + 2.3.3 Released 01 June 2015 * Add SurfCA() and Surf3CA() plots diff --git a/FindMathGL2.cmake b/FindMathGL2.cmake index ec5ba2d..772b505 100644 --- a/FindMathGL2.cmake +++ b/FindMathGL2.cmake @@ -113,12 +113,12 @@ FIND_PACKAGE_HANDLE_STANDARD_ARGS(MathGL2 REQUIRED_VARS MATHGL2_LIBRARY MATHGL2_INCLUDE_DIR VERSION_VAR MATHGL2_VERSION_STRING) -FOREACH(_Component ${MathGL2_FIND_COMPONENTS}) +FOREACH(_Component ${MATHGL2_FIND_COMPONENTS}) STRING(TOLOWER ${_Component} _component) STRING(TOUPPER ${_Component} _COMPONENT) - SET(MathGL2_${_Component}_FIND_REQUIRED ${MathGL2_FIND_REQUIRED}) - SET(MathGL2_${_Component}_FIND_QUIETLY true) + SET(MATHGL2_${_Component}_FIND_REQUIRED ${MATHGL2_FIND_REQUIRED}) + SET(MATHGL2_${_Component}_FIND_QUIETLY true) # TODO find qt.h for qt4 and qt5 !!! FIND_PATH(MATHGL2_${_COMPONENT}_INCLUDE_DIR NAMES mgl2/${_component}.h @@ -127,7 +127,7 @@ FOREACH(_Component ${MathGL2_FIND_COMPONENTS}) NAMES mgl-${_component} PATHS ${MATHGL2_LIBRARY_DIR} NO_DEFAULT_PATH) - FIND_PACKAGE_HANDLE_STANDARD_ARGS(MathGL2_${_Component} DEFAULT_MSG + FIND_PACKAGE_HANDLE_STANDARD_ARGS(MATHGL2_${_Component} DEFAULT_MSG MATHGL2_${_COMPONENT}_LIBRARY MATHGL2_${_COMPONENT}_INCLUDE_DIR) diff --git a/clean-svn b/clean-svn new file mode 100755 index 0000000..f0ba47a --- /dev/null +++ b/clean-svn @@ -0,0 +1,3 @@ +find . -name '.svn' -print0 | xargs -0 rm -rf +find . -name '*~' -print0 | xargs -0 rm -f +rm ./clean-svn diff --git a/cmake-qt4.txt b/cmake-qt4.txt index a5d389e..4208b52 100644 --- a/cmake-qt4.txt +++ b/cmake-qt4.txt @@ -1,10 +1,14 @@ set(MGL_HAVE_QT4 1) if(enable-json-sample) +set(MGL_QT4_LIBS Core Gui Network WebKit OpenGL) FIND_PACKAGE(Qt4 4.8 REQUIRED QtCore QtGui QtNetwork QtWebKit QtOpenGL) else(enable-json-sample) +set(MGL_QT4_LIBS Core Gui OpenGL) FIND_PACKAGE(Qt4 4.8 REQUIRED QtCore QtGui QtOpenGL) endif(enable-json-sample) if(NOT QT4_FOUND) message(SEND_ERROR "Couldn't find Qt4 library.") endif(NOT QT4_FOUND) -include(${QT_USE_FILE}) + +set(CMAKE_AUTOMOC ON) +set(CMAKE_INCLUDE_CURRENT_DIR ON) diff --git a/cmake-qt5.txt b/cmake-qt5.txt index c4b5bbf..ff447f7 100644 --- a/cmake-qt5.txt +++ b/cmake-qt5.txt @@ -16,15 +16,22 @@ endif(NOT Qt5Gui_FOUND) if(NOT Qt5PrintSupport_FOUND) message(SEND_ERROR "Couldn't find Qt5 PrintSupport library.") endif(NOT Qt5PrintSupport_FOUND) +set(MGL_QT5_LIBS Core Gui Widgets PrintSupport OpenGL) if(enable-json-sample) find_package(Qt5Network REQUIRED) find_package(Qt5WebKit REQUIRED) +find_package(Qt5WebKitWidgets REQUIRED) if(NOT Qt5Network_FOUND) message(SEND_ERROR "Couldn't find Qt5 Network library.") endif(NOT Qt5Network_FOUND) if(NOT Qt5WebKit_FOUND) message(SEND_ERROR "Couldn't find Qt5 WebKit library.") endif(NOT Qt5WebKit_FOUND) +if(NOT Qt5WebKitWidgets_FOUND) + message(SEND_ERROR "Couldn't find Qt5 WebKitWidgets library.") +endif(NOT Qt5WebKitWidgets_FOUND) +set(MGL_QT5_LIBS ${MGL_QT5_LIBS} Network WebKit WebKitWidgets) endif(enable-json-sample) +set(CMAKE_AUTOMOC ON) set(CMAKE_INCLUDE_CURRENT_DIR ON) diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt index 517162d..4f71340 100644 --- a/examples/CMakeLists.txt +++ b/examples/CMakeLists.txt @@ -23,23 +23,21 @@ if(MGL_HAVE_WX) endif(MGL_HAVE_WX) if(enable-qt) - add_executable(mgl_qt_example wnd_samples.cpp qt_example.cpp ${MGL_MOC_EX_FILES}) + add_executable(mgl_qt_example wnd_samples.cpp qt_example.cpp) if(enable-qt5) include(../cmake-qt5.txt) target_link_libraries(mgl_qt_example mgl-qt5) - qt5_wrap_cpp(qgl_moc_src qgl_example.h ) else(enable-qt5) include(../cmake-qt4.txt) target_link_libraries(mgl_qt_example mgl-qt4) - qt4_wrap_cpp(qgl_moc_src qgl_example.h ) endif(enable-qt5) - add_executable(mgl_qgl_example wnd_samples.cpp qgl_example.cpp ${qgl_moc_src} ${MGL_MOC_EX_FILES}) + add_executable(mgl_qgl_example wnd_samples.cpp qgl_example.cpp) if(enable-qt5) target_link_libraries(mgl_qgl_example mgl) - qt5_use_modules(mgl_qgl_example Core Widgets Gui OpenGL) + qt5_use_modules(mgl_qgl_example ${MGL_QT5_LIBS}) else(enable-qt5) target_link_libraries(mgl_qgl_example mgl) - target_link_libraries(mgl_qgl_example ${QT_LIBRARIES}) + qt4_use_modules(mgl_qgl_example ${MGL_QT4_LIBS}) endif(enable-qt5) endif(enable-qt) diff --git a/examples/full_test.cpp b/examples/full_test.cpp index d34f80a..154b4eb 100644 --- a/examples/full_test.cpp +++ b/examples/full_test.cpp @@ -65,14 +65,9 @@ void mgls_prepare3v(mglData *ex, mglData *ey, mglData *ez); void save(mglGraph *gr,const char *name,const char *suf); void test(mglGraph *gr) { - gr->Line(mglPoint(-1,-1),mglPoint(1,1)); - gr->Axis(); - gr->WriteEPS("1.eps"); - gr->WriteTEX("1.tex"); - gr->WriteSVG("1.svg"); - return; mglParse par; - par.Execute(gr,"load '/home/balakin/mathgl-code/mathgl-2x/build/examples/libmgl_module.so':baxis\n"); + par.Execute(gr,"call 'test' -1\n func 'test' 1\nline $1 0 1 1 'b'\nreturn\n"); +// 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"); return; } diff --git a/include/config.h.in b/include/config.h.in index 483e6b6..053824c 100644 --- a/include/config.h.in +++ b/include/config.h.in @@ -15,12 +15,14 @@ #define MGL_SYS_NAN 0 #define MGL_HAVE_TYPEOF 0 #define MGL_HAVE_PTHREAD 0 +#define MGL_HAVE_PTHREAD_FLTK 0 #define MGL_HAVE_ATTRIBUTE 0 #define MGL_HAVE_C99_COMPLEX 0 #else #define MGL_HAVE_TYPEOF ${MGL_HAVE_TYPEOF} #define MGL_SYS_NAN ${MGL_HAVE_NAN_INF} #define MGL_HAVE_PTHREAD ${MGL_HAVE_PTHREAD} +#define MGL_HAVE_PTHREAD_FLTK ${MGL_HAVE_PTHR_FLTK} #define MGL_HAVE_ATTRIBUTE ${MGL_HAVE_ATTRIBUTE} #define MGL_HAVE_C99_COMPLEX ${MGL_HAVE_C99_COMPLEX} #endif diff --git a/include/mgl2/Fl_MathGL.h b/include/mgl2/Fl_MathGL.h new file mode 100644 index 0000000..6929500 --- /dev/null +++ b/include/mgl2/Fl_MathGL.h @@ -0,0 +1,144 @@ +/*************************************************************************** + * Fl_MathGL.h is part of Math Graphic Library + * Copyright (C) 2007-2014 Alexey Balakin * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU Library General Public License as * + * published by the Free Software Foundation; either version 3 of the * + * License, or (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU Library General Public * + * License along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + ***************************************************************************/ +//----------------------------------------------------------------------------- +#ifndef _MGL_FL_MATHGL_H_ +#define _MGL_FL_MATHGL_H_ + +#ifdef __MWERKS__ +# define FL_DLL +#endif + +#include +#include +#include +#include +#include +#include +#include +class mglCanvas; +//----------------------------------------------------------------------------- +/// Class is FLTK widget which display MathGL graphics +class MGL_EXPORT Fl_MathGL : public Fl_Widget +{ +public: + Fl_Valuator *tet_val; ///< pointer to external tet-angle validator + Fl_Valuator *phi_val; ///< pointer to external phi-angle validator + mglCanvas *gr; ///< Built-in mglCanvas instance (mglCanvasFLTK is used by default) + + Fl_MathGL(int x, int y, int w, int h, const char *label=0); + virtual ~Fl_MathGL(); + + /// Update (redraw) plot + virtual void update(); + /// Set angles for additional plot rotation + inline void set_angle(mreal t, mreal p){ tet = t; phi = p; } + /// Set bitwise flags for general state (1-Alpha, 2-Light) + inline void set_flag(int f) { flag = f; } + /// Set flags for handling mouse + void set_graph(HMGL gr); ///< Set grapher object + inline void set_graph(mglGraph *Gr) + { set_graph(Gr->Self()); } + /// Get pointer to grapher + inline HMGL get_graph() { return (HMGL)gr; } + /// Set drawing functions and its parameter + inline void set_draw(int (*func)(mglBase *gr, void *par), void *par) + { if(draw_cl) delete draw_cl; draw_cl=0; draw_func=func; draw_par=par; } + inline void set_draw(mglDraw *dr) { if(draw_cl) delete draw_cl; draw_cl=dr; draw_func=0; } + inline void set_draw(int (*dr)(mglGraph *gr)) + { set_draw(dr?mgl_draw_graph:0,(void*)dr); } + void set_state(bool z, bool r) { zoom = z; rotate = r; } + /// Set zoom in/out region + inline void set_zoom(mreal X1, mreal Y1, mreal X2, mreal Y2) + { x1 = X1; x2 = X2; y1 = Y1; y2 = Y2; update(); } + /// Get zoom region + inline void get_zoom(mreal *X1, mreal *Y1, mreal *X2, mreal *Y2) + { *X1 = x1; *X2 = x2; *Y1 = y1; *Y2 = y2; } + /// Set popup menu pointer + inline void set_popup(const Fl_Menu_Item *pmenu, Fl_Widget *wdg, void *v) + { popup = pmenu; wpar = wdg; vpar = v; } + inline void zoom_region(mreal xx1,mreal xx2,mreal yy1, mreal yy2) + { x1=xx1; y1=yy1; x2=xx2; y2=yy2; } + void stop(bool stop=true); + +protected: + void *draw_par; ///< Parameters for drawing function mglCanvasWnd::DrawFunc. + /// Drawing function for window procedure. It should return the number of frames. + int (*draw_func)(mglBase *gr, void *par); + mglDraw *draw_cl; + + const Fl_Menu_Item *popup; ///< pointer to popup menu items + Fl_Widget *wpar; ///< widget for popup menu + void *vpar; ///< parameter for popup menu + mreal tet,phi; ///< rotation angles + bool rotate; ///< flag for handle mouse + bool zoom; ///< flag for zoom by mouse + bool wire; + mreal x1,x2,y1,y2; ///< zoom region + int flag; ///< bitwise flag for general state (1-Alpha, 2-Light) + int x0,y0,xe,ye; ///< mouse position + char pos[128]; + + virtual void draw(); ///< quick drawing function + int handle(int code); ///< handle mouse events + void resize(int x, int y, int w, int h); ///< resize control +}; +//----------------------------------------------------------------------------- +class MGL_EXPORT Fl_MGLView : public Fl_Window +{ +public: + Fl_MathGL *FMGL; ///< Control which draw graphics + Fl_Scroll *scroll; + Fl_Menu_Bar *menu; + + void *par; ///< Parameter for handling animation + void (*next)(void*); ///< Callback function for next frame + void (*prev)(void*); ///< Callback function for prev frame + mreal (*delay)(void*); ///< Callback function for delay + void (*reload)(void*); ///< Callback function for reloading + + void toggle_alpha() { toggle(alpha, alpha_bt, "Graphics/Alpha"); } + void toggle_light() { toggle(light, light_bt, "Graphics/Light"); } + void toggle_sshow() { toggle(sshow, anim_bt, "Graphics/Slideshow"); } + void toggle_grid() { toggle(grid, grid_bt, "Graphics/Grid"); } + void toggle_zoom() { toggle(zoom, zoom_bt); } + void toggle_rotate(){ toggle(rotate, rotate_bt); } + void setoff_zoom() { setoff(zoom, zoom_bt); } + void setoff_rotate(){ setoff(rotate, rotate_bt); } + bool is_sshow() { return sshow; } + void adjust() + { mgl_set_size(FMGL->get_graph(),scroll->w(),scroll->h()); FMGL->size(scroll->w(),scroll->h()); update(); } + + Fl_MGLView(int x, int y, int w, int h, const char *label=0); + virtual ~Fl_MGLView(); + void update(); ///< Update picture by calling user drawing function +protected: + Fl_Button *alpha_bt, *light_bt, *rotate_bt, *anim_bt, *zoom_bt, *grid_bt; +// Fl_Counter *tet, *phi; + + int grid, alpha, light; ///< Current states of wire, alpha, light switches (toggle buttons) + int sshow, rotate, zoom;///< Current states of slideshow, rotate, zoom switches (toggle buttons) + + void toggle(int &val, Fl_Button *b, const char *txt=NULL); + void setoff(int &val, Fl_Button *b, const char *txt=NULL); +}; +//----------------------------------------------------------------------------- +void MGL_EXPORT mgl_makemenu_fltk(Fl_Menu_ *m, Fl_MGLView *w); +//----------------------------------------------------------------------------- +#endif diff --git a/include/mgl2/abstract.h b/include/mgl2/abstract.h index d6eb494..19c222e 100644 --- a/include/mgl2/abstract.h +++ b/include/mgl2/abstract.h @@ -1,5 +1,5 @@ /*************************************************************************** - * thread.h is part of Math Graphic Library + * abstract.h is part of Math Graphic Library * Copyright (C) 2007-2014 Alexey Balakin * * * * This program is free software; you can redistribute it and/or modify * @@ -43,6 +43,8 @@ typedef mglFormula* HMEX; typedef mglFormulaC* HAEX; typedef const mglDataA* HCDT; #ifdef __cplusplus +std::string MGL_EXPORT mgl_data_to_string(HCDT d, long ns); +std::string MGL_EXPORT mgl_datac_to_string(HCDT d, long ns); extern "C" { #endif /// Set seed for random numbers @@ -134,6 +136,10 @@ public: mglDataA() { temp=false; func=0; o=0; } virtual ~mglDataA() { if(func) func(o); } virtual void set_v(mreal val, long i,long j=0,long k=0) {} + /// Get the interpolated value and its derivatives in given data cell without border checking + virtual mreal valueD(mreal x,mreal y=0,mreal z=0,mreal *dx=0,mreal *dy=0,mreal *dz=0) const =0; + /// Get the interpolated value in given data cell without border checking + virtual mreal value(mreal x,mreal y=0,mreal z=0) const =0; virtual mreal v(long i,long j=0,long k=0) const = 0; virtual mreal vthr(long i) const = 0; virtual long GetNx() const = 0; @@ -151,6 +157,9 @@ public: /// Save whole data array (for ns=-1) or only ns-th slice to text file virtual void Save(const char *fname,long ns=-1) const { mgl_data_save(this,fname,ns); } + /// Get whole data array (for ns=-1) or only ns-th slice to string + virtual std::string Get(long ns=-1) + { return mgl_data_to_string(this,ns); } /// Export data array (for ns=-1) or only ns-th slice to PNG file according color scheme inline void Export(const char *fname,const char *scheme,mreal v1=0,mreal v2=0,long ns=-1) const { mgl_data_export(this,fname,scheme,v1,v2,ns); } diff --git a/include/mgl2/base.h b/include/mgl2/base.h index 9526e7f..9aa0c41 100644 --- a/include/mgl2/base.h +++ b/include/mgl2/base.h @@ -32,6 +32,9 @@ #else #define MGL_PUSH(a,v,m) a.push_back(v); #endif +#if MGL_HAVE_OMP +#include +#endif //----------------------------------------------------------------------------- inline mreal mgl_d(mreal v,mreal v1,mreal v2) { return v2!=v1?(v-v1)/(v2-v1):NAN; } //----------------------------------------------------------------------------- @@ -51,12 +54,10 @@ template class mglStack void *mutex; public: mglStack(const mglStack &st) - { - np=st.np; dat = (T**)malloc(np*sizeof(T*)); + { np=st.np; dat = (T**)malloc(np*sizeof(T*)); pb=st.pb; m=n=0; reserve(st.n); for(size_t i=0;i=0 && i stack; ///< stack for transformation matrices GifFileType *gif; mreal fscl,ftet; ///< last scale and rotation for glyphs - long forg; ///< original point (for directions) + long forg; ///< original point (for directions) size_t grp_counter; ///< Counter for StartGroup(); EndGroup(); - mglMatrix Bt; ///< temporary matrix for text + mglMatrix Bt; ///< temporary matrix for text + float pen_delta; ///< delta pen width (dpw) -- the size of semi-transparent region for lines, marks, ... /// Draw generic colorbar void colorbar(HCDT v, const mreal *s, int where, mreal x, mreal y, mreal w, mreal h, bool text); @@ -481,8 +484,6 @@ private: void glyph_fpix(long i,long j,const mglMatrix *M, const mglPnt &p, mreal f, const mglGlyph &g, const mglDrawReg *d); void glyph_wpix(long i,long j,const mglMatrix *M, const mglPnt &p, mreal f, const mglGlyph &g, const mglDrawReg *d); void glyph_lpix(long i,long j,const mglMatrix *M, const mglPnt &p, mreal f, bool solid, const mglDrawReg *d); - - }; //----------------------------------------------------------------------------- struct mglThreadG diff --git a/include/mgl2/canvas_cf.h b/include/mgl2/canvas_cf.h index 4bbd1c8..a13c46e 100644 --- a/include/mgl2/canvas_cf.h +++ b/include/mgl2/canvas_cf.h @@ -50,6 +50,10 @@ void MGL_EXPORT mgl_finish_(uintptr_t *gr); void MGL_EXPORT mgl_rasterize(HMGL gr); void MGL_EXPORT mgl_rasterize_(uintptr_t *gr); +/// Set the size of semi-transparent area around lines, marks, glyphs, ... Default is 1. +void MGL_EXPORT mgl_pen_delta(HMGL gr, double d); +void MGL_EXPORT mgl_pen_delta_(uintptr_t *gr, double *d); + /// Set tick length void MGL_EXPORT mgl_set_tick_len(HMGL gr, double len, double stt); void MGL_EXPORT mgl_set_tick_len_(uintptr_t *gr, mreal *len, mreal *stt); diff --git a/include/mgl2/canvas_wnd.h b/include/mgl2/canvas_wnd.h index cadfba5..c98cb55 100644 --- a/include/mgl2/canvas_wnd.h +++ b/include/mgl2/canvas_wnd.h @@ -1,5 +1,5 @@ /*************************************************************************** - * window.h is part of Math Graphic Library + * canvas_wnd.h is part of Math Graphic Library * Copyright (C) 2007-2014 Alexey Balakin * * * * This program is free software; you can redistribute it and/or modify * diff --git a/include/mgl2/data.h b/include/mgl2/data.h index 6ca9f62..44f99c6 100644 --- a/include/mgl2/data.h +++ b/include/mgl2/data.h @@ -22,11 +22,15 @@ #include "mgl2/data_cf.h" #include "mgl2/pde.h" -#ifdef __cplusplus //----------------------------------------------------------------------------- #include #include //----------------------------------------------------------------------------- +mreal MGL_EXPORT mglLinear(const mreal *a, long nx, long ny, long nz, mreal x, mreal y, mreal z); +mreal MGL_EXPORT mglSpline3(const mreal *a, long nx, long ny, long nz, mreal x, mreal y, mreal z,mreal *dx=0, mreal *dy=0, mreal *dz=0); +mreal MGL_EXPORT mglSpline3s(const mreal *a, long nx, long ny, long nz, mreal x, mreal y, mreal z); +std::string MGL_EXPORT mgl_data_to_string(HCDT d, long ns); +//----------------------------------------------------------------------------- /// Class for working with data array class MGL_EXPORT mglData : public mglDataA { @@ -62,6 +66,10 @@ using mglDataA::Momentum; mglData(const double *d, int rows, int cols) { a=0; Set(d,cols,rows); } mglData(const float *d, int size) { a=0; Set(d,size); } mglData(const float *d, int rows, int cols) { a=0; Set(d,cols,rows); } + /// Allocate memory and copy data from std::vector + mglData(const std::vector &d) { a=0; Set(d); } + mglData(const std::vector &d) { a=0; Set(d); } + mglData(const std::vector &d) { a=0; Set(d); } /// Read data from file mglData(const char *fname) { a=0; Read(fname); } /// Allocate the memory for data array and initialize it zero @@ -123,14 +131,12 @@ using mglDataA::Momentum; inline void Set(const mglDataA &dat) { mgl_data_set(this, &dat); } /// Allocate memory and copy data from std::vector inline void Set(const std::vector &d) - { if(d.size()<1) return; - Create(d.size()); for(long i=0;i0) { Create(d.size()); for(long i=0;i &d) - { if(d.size()<1) return; - Create(d.size()); for(long i=0;i0) Set(&(a[0]),d.size()); else Create(1); } inline void Set(const std::vector &d) - { if(d.size()<1) return; - Create(d.size()); for(long i=0;i0) Set(&(a[0]),d.size()); else Create(1); } /// Create or recreate the array with specified size and fill it by zero inline void Create(long mx,long my=1,long mz=1) @@ -247,6 +253,9 @@ using mglDataA::Momentum; /// Get momentum (1D-array) of data along direction 'dir'. String looks like "x1" for median in x-direction, "x2" for width in x-dir and so on. inline mglData Momentum(char dir, const char *how) const { return mglData(true,mgl_data_momentum(this,dir,how)); } + /// Get pulse properties: pulse maximum and its position, pulse duration near maximum and by half height, energy in first pulse. + inline mglData Pulse(char dir) const + { return mglData(true,mgl_data_pulse(this,dir)); } /// Get sub-array of the data with given fixed indexes inline mglData SubData(long xx,long yy=-1,long zz=-1) const { return mglData(true,mgl_data_subdata(this,xx,yy,zz)); } @@ -438,6 +447,12 @@ using mglDataA::Momentum; /// Set the value in given cell of the data void set_v(mreal val, long i,long j=0,long k=0) { mgl_data_set_value(this,val,i,j,k); } #endif + /// Get the interpolated value and its derivatives in given data cell without border checking + mreal valueD(mreal x,mreal y=0,mreal z=0,mreal *dx=0,mreal *dy=0,mreal *dz=0) const + { return mglSpline3(a,nx,ny,nz,x,y,z,dx,dy,dz); } + /// Get the interpolated value in given data cell without border checking + mreal value(mreal x,mreal y=0,mreal z=0) const + { return mglSpline3s(a,nx,ny,nz,x,y,z); } mreal vthr(long i) const { return a[i]; } // add for speeding up !!! mreal dvx(long i,long j=0,long k=0) const @@ -482,11 +497,6 @@ inline bool operator<(const mglDataA &b, const mglDataA &d) inline bool operator>(const mglDataA &b, const mglDataA &d) { return b.Minimal()>d.Minimal(); } //----------------------------------------------------------------------------- -mreal MGL_EXPORT mglLinear(const mreal *a, long nx, long ny, long nz, mreal x, mreal y, mreal z); -mreal MGL_EXPORT mglSpline3(const mreal *a, long nx, long ny, long nz, mreal x, mreal y, mreal z,mreal *dx=0, mreal *dy=0, mreal *dz=0); -mreal MGL_EXPORT mglSpline3s(const mreal *a, long nx, long ny, long nz, mreal x, mreal y, mreal z); -#endif -//----------------------------------------------------------------------------- /// Integral data transformation (like Fourier 'f' or 'i', Hankel 'h' or None 'n') for amplitude and phase inline mglData mglTransformA(const mglDataA &am, const mglDataA &ph, const char *tr) { return mglData(true,mgl_transform_a(&am,&ph,tr)); } @@ -626,15 +636,15 @@ public: di=d.di; dj=d.dj; dk=d.dk; return d; } inline mreal operator=(mreal val) { di=dj=dk=0; a0=val; return val; } - /// Get the value in given cell of the data without border checking - mreal value(mreal x,mreal y,mreal z,mreal *dx=0,mreal *dy=0,mreal *dz=0) const + /// Get the interpolated value and its derivatives in given data cell without border checking + mreal valueD(mreal x,mreal y=0,mreal z=0,mreal *dx=0,mreal *dy=0,mreal *dz=0) const { if(dx) *dx=di; if(dy) *dy=dj; if(dz) *dz=dk; return a0+di*x+dj*y+dk*z; } - mreal v(long i,long j=0,long k=0) const - { return a0+di*i+dj*j+dk*k; } + /// Get the interpolated value in given data cell without border checking + mreal value(mreal x,mreal y=0,mreal z=0) const { return a0+di*x+dj*y+dk*z; } + mreal v(long i,long j=0,long k=0) const { return a0+di*i+dj*j+dk*k; } mreal vthr(long ii) const - { register long i=ii%nx, j=(ii/nx)%ny, k=ii/(nx*ny); - return a0+di*i+dj*j+dk*k; } + { register long i=ii%nx, j=(ii/nx)%ny, k=ii/(nx*ny); return a0+di*i+dj*j+dk*k; } // add for speeding up !!! mreal dvx(long ,long =0,long =0) const { return di; } mreal dvy(long ,long =0,long =0) const { return dj; } @@ -685,10 +695,13 @@ public: /// Copy data from other mglDataV variable inline const mglDataW &operator=(const mglDataW &d) { nx=d.nx; ny=d.ny; nz=d.nz; di=d.di; dj=d.dj; dk=d.dk; return d; } - /// Get the value in given cell of the data without border checking - mreal value(mreal x,mreal y,mreal z,mreal *dx=0,mreal *dy=0,mreal *dz=0) const + /// Get the interpolated value and its derivatives in given data cell without border checking + mreal valueD(mreal x,mreal y=0,mreal z=0,mreal *dx=0,mreal *dy=0,mreal *dz=0) const { if(dx) *dx=di; if(dy) *dy=dj; if(dz) *dz=dk; return di*(x &operator=(const std::vector &st) { dat = st; return st; } + /// Get the interpolated value and its derivatives in given data cell without border checking + mreal valueD(mreal x,mreal y=0,mreal z=0,mreal *dx=0,mreal *dy=0,mreal *dz=0) const + { return mglSpline3(dat.data(),dat.size(),1,1,x,0,0,dx,dy,dz); } + /// Get the interpolated value in given data cell without border checking + mreal value(mreal x,mreal y=0,mreal z=0) const + { return mglSpline3s(dat.data(),dat.size(),1,1,x,0,0); } + mreal v(long i,long j=0,long k=0) const { return dat[i]; } mreal vthr(long i) const { return dat[i]; }; long GetNx() const { return dat.size(); } diff --git a/include/mgl2/data_cf.h b/include/mgl2/data_cf.h index 913017c..44cbfeb 100644 --- a/include/mgl2/data_cf.h +++ b/include/mgl2/data_cf.h @@ -346,6 +346,9 @@ uintptr_t MGL_EXPORT mgl_data_hist_w_(uintptr_t *dat, uintptr_t *weight, int *n, /// Get momentum (1D-array) of data along direction 'dir'. String looks like "x1" for median in x-direction, "x2" for width in x-dir and so on. HMDT MGL_EXPORT mgl_data_momentum(HCDT dat, char dir, const char *how); uintptr_t MGL_EXPORT mgl_data_momentum_(uintptr_t *dat, char *dir, const char *how, int,int); +/// Get pulse properties: pulse maximum and its position, pulse duration near maximum and by half height. +HMDT MGL_EXPORT mgl_data_pulse(HCDT dat, char dir); +uintptr_t MGL_EXPORT mgl_data_pulse_(uintptr_t *dat, char *dir,int); /// Get array which values is result of interpolation this for coordinates from other arrays HMDT MGL_EXPORT mgl_data_evaluate(HCDT dat, HCDT idat, HCDT jdat, HCDT kdat, int norm); uintptr_t MGL_EXPORT mgl_data_evaluate_(uintptr_t *dat, uintptr_t *idat, uintptr_t *jdat, uintptr_t *kdat, int *norm); diff --git a/include/mgl2/datac.h b/include/mgl2/datac.h index 70d71d8..4cf7dcd 100644 --- a/include/mgl2/datac.h +++ b/include/mgl2/datac.h @@ -22,13 +22,14 @@ #include "mgl2/data.h" #include "mgl2/datac_cf.h" -#ifdef __cplusplus //----------------------------------------------------------------------------- #include #include -#define mgl2 mreal(2) -#define mgl3 mreal(3) -#define mgl4 mreal(4) +//----------------------------------------------------------------------------- +#ifndef SWIG +dual MGL_EXPORT mglLinearC(const dual *a, long nx, long ny, long nz, mreal x, mreal y, mreal z); +dual MGL_EXPORT mglSpline3C(const dual *a, long nx, long ny, long nz, mreal x, mreal y, mreal z,dual *dx=0, dual *dy=0, dual *dz=0); +dual MGL_EXPORT mglSpline3Cs(const dual *a, long nx, long ny, long nz, mreal x, mreal y, mreal z); //----------------------------------------------------------------------------- /// Class for working with complex data array class MGL_EXPORT mglDataC : public mglDataA @@ -71,6 +72,12 @@ using mglDataA::Momentum; mglDataC(const double *d, int rows, int cols) { a=0; Set(d,cols,rows); } mglDataC(const float *d, int size) { a=0; Set(d,size); } mglDataC(const float *d, int rows, int cols) { a=0; Set(d,cols,rows); } + /// Allocate memory and copy data from std::vector + mglDataC(const std::vector &d) { a=0; Set(d); } + mglDataC(const std::vector &d) { a=0; Set(d); } + mglDataC(const std::vector &d) { a=0; Set(d); } + mglDataC(const std::vector > &d) { a=0; Set(d); } + mglDataC(const std::vector > &d) { a=0; Set(d); } /// Read data from file mglDataC(const char *fname) { a=0; Read(fname); } /// Allocate the memory for data array and initialize it zero @@ -127,17 +134,18 @@ using mglDataA::Momentum; { mgl_datac_set_ap(this, &l, &phase); } /// Allocate memory and copy data from std::vector inline void Set(const std::vector &d) - { if(d.size()<1) return; - Create(d.size()); for(long i=0;i0) { Create(d.size()); for(long i=0;i &d) - { if(d.size()<1) return; - Create(d.size()); for(long i=0;i0) Set(&(a[0]),d.size()); else Create(1); } inline void Set(const std::vector &d) - { if(d.size()<1) return; - Create(d.size()); for(long i=0;i &d) - { if(d.size()<1) return; - Create(d.size()); for(long i=0;i0) Set(&(a[0]),d.size()); else Create(1); } + inline void Set(const std::vector > &d) + { if(d.size()>0) { Create(d.size()); for(long i=0;i > &d) + { if(d.size()>0) { Create(d.size()); for(long i=0;i0? abs(i0? abs(i0? abs(j0? abs(j0? abs(k0? abs(k -#endif - #endif //----------------------------------------------------------------------------- #ifdef WIN32 //_MSC_VER needs this before math.h @@ -146,9 +142,11 @@ const unsigned long long mgl_inf[2] = {0x7ff0000000000000, 0x7f800000}; #if MGL_USE_DOUBLE typedef double mreal; #define MGL_EPSILON (1.+1e-10) +#define MGL_MIN_VAL 1e-307 #else typedef float mreal; #define MGL_EPSILON (1.+1e-5) +#define MGL_MIN_VAL 1e-37 #endif #define MGL_FEPSILON (1.+1e-5) //----------------------------------------------------------------------------- @@ -161,6 +159,7 @@ typedef float mreal; #endif //----------------------------------------------------------------------------- #if MGL_HAVE_TYPEOF +#define mgl_isrange(a,b) ({typeof (a) _a = (a); typeof (b) _b = (b); fabs(_a-_b)>MGL_MIN_VAL && _a-_a==mreal(0.) && _b-_b==mreal(0.);}) #define mgl_isbad(a) ({typeof (a) _a = (a); _a-_a!=mreal(0.);}) #define mgl_isfin(a) ({typeof (a) _a = (a); _a-_a==mreal(0.);}) #define mgl_isnum(a) ({typeof (a) _a = (a); _a==_a;}) @@ -170,6 +169,7 @@ typedef float mreal; #define mgl_sign(a) ({typeof (a) _a = (a); _a<0 ? -1:1;}) #define mgl_int(a) ({typeof (a) _a = (a); long(_a+(_a>=0 ? 0.5:-0.5));}) #else +#define mgl_isrange(a,b) (fabs((a)-(b))>MGL_EPSILON && (a)-(a)==mreal(0.) && (b)-(b)==mreal(0.)) #define mgl_min(a,b) (((a)>(b)) ? (b) : (a)) #define mgl_max(a,b) (((a)>(b)) ? (a) : (b)) #define mgl_isnan(a) ((a)!=(a)) @@ -208,7 +208,7 @@ enum{ // types of predefined curvelinear coordinate systems enum{ // Codes for warnings/messages mglWarnNone = 0,// Everything OK mglWarnDim, // Data dimension(s) is incompatible - mglWarnLow, // Data dimension(s) is too small + mglWarnLow, // Data dimension(s) is too small mglWarnNeg, // Minimal data value is negative mglWarnFile, // No file or wrong data dimensions mglWarnMem, // Not enough memory diff --git a/include/mgl2/fltk.h b/include/mgl2/fltk.h index df70be4..343059b 100644 --- a/include/mgl2/fltk.h +++ b/include/mgl2/fltk.h @@ -1,5 +1,5 @@ /*************************************************************************** - * window.h is part of Math Graphic Library + * fltk.h is part of Math Graphic Library * Copyright (C) 2007-2014 Alexey Balakin * * * * This program is free software; you can redistribute it and/or modify * @@ -34,6 +34,8 @@ int MGL_EXPORT mgl_fltk_run(); int MGL_EXPORT mgl_fltk_run_(); /// Run main FLTK loop for event handling in separate thread. int MGL_EXPORT mgl_fltk_thr(); +/// Callback function for asking user. +void MGL_EXPORT mgl_ask_fltk(const wchar_t *quest, wchar_t *res); #ifdef __cplusplus } //----------------------------------------------------------------------------- @@ -59,125 +61,5 @@ public: int RunThr() { return mgl_fltk_thr(); } ///< Run main loop for event handling in separate thread }; //----------------------------------------------------------------------------- -#ifdef __MWERKS__ -# define FL_DLL -#endif - -#include -#include -#include -#include -#include -#include -class mglCanvas; -//----------------------------------------------------------------------------- -/// Class is FLTK widget which display MathGL graphics -class MGL_EXPORT Fl_MathGL : public Fl_Widget -{ -public: - Fl_Valuator *tet_val; ///< pointer to external tet-angle validator - Fl_Valuator *phi_val; ///< pointer to external phi-angle validator - - Fl_MathGL(int x, int y, int w, int h, const char *label=0); - virtual ~Fl_MathGL(); - - /// Update (redraw) plot - virtual void update(); - /// Set angles for additional plot rotation - inline void set_angle(mreal t, mreal p){ tet = t; phi = p; } - /// Set bitwise flags for general state (1-Alpha, 2-Light) - inline void set_flag(int f) { flag = f; } - /// Set flags for handling mouse - void set_graph(HMGL gr); ///< Set grapher object - inline void set_graph(mglGraph *Gr) - { set_graph(Gr->Self()); } - /// Get pointer to grapher - inline HMGL get_graph() { return (HMGL)gr; } - /// Set drawing functions and its parameter - inline void set_draw(int (*func)(mglBase *gr, void *par), void *par) - { if(draw_cl) delete draw_cl; draw_cl=0; draw_func=func; draw_par=par; } - inline void set_draw(mglDraw *dr) { if(draw_cl) delete draw_cl; draw_cl=dr; draw_func=0; } - inline void set_draw(int (*dr)(mglGraph *gr)) - { set_draw(dr?mgl_draw_graph:0,(void*)dr); } - void set_state(bool z, bool r) { zoom = z; rotate = r; } - /// Set zoom in/out region - inline void set_zoom(mreal X1, mreal Y1, mreal X2, mreal Y2) - { x1 = X1; x2 = X2; y1 = Y1; y2 = Y2; update(); } - /// Get zoom region - inline void get_zoom(mreal *X1, mreal *Y1, mreal *X2, mreal *Y2) - { *X1 = x1; *X2 = x2; *Y1 = y1; *Y2 = y2; } - /// Set popup menu pointer - inline void set_popup(const Fl_Menu_Item *pmenu, Fl_Widget *wdg, void *v) - { popup = pmenu; wpar = wdg; vpar = v; } - inline void zoom_region(mreal xx1,mreal xx2,mreal yy1, mreal yy2) - { x1=xx1; y1=yy1; x2=xx2; y2=yy2; } - void stop(bool stop=true); - -protected: - mglCanvas *gr; ///< pointer to grapher - void *draw_par; ///< Parameters for drawing function mglCanvasWnd::DrawFunc. - /// Drawing function for window procedure. It should return the number of frames. - int (*draw_func)(mglBase *gr, void *par); - mglDraw *draw_cl; - - const Fl_Menu_Item *popup; ///< pointer to popup menu items - Fl_Widget *wpar; ///< widget for popup menu - void *vpar; ///< parameter for popup menu - mreal tet,phi; ///< rotation angles - bool rotate; ///< flag for handle mouse - bool zoom; ///< flag for zoom by mouse - bool wire; - mreal x1,x2,y1,y2; ///< zoom region - int flag; ///< bitwise flag for general state (1-Alpha, 2-Light) - int x0,y0,xe,ye; ///< mouse position - char pos[128]; - - virtual void draw(); ///< quick drawing function - int handle(int code); ///< handle mouse events - void resize(int x, int y, int w, int h); ///< resize control -}; -//----------------------------------------------------------------------------- -class MGL_EXPORT Fl_MGLView : public Fl_Window -{ -public: - Fl_MathGL *FMGL; ///< Control which draw graphics - Fl_Scroll *scroll; - Fl_Menu_Bar *menu; - - void *par; ///< Parameter for handling animation - void (*next)(void*); ///< Callback function for next frame - void (*prev)(void*); ///< Callback function for prev frame - mreal (*delay)(void*); ///< Callback function for delay - void (*reload)(void*); ///< Callback function for reloading - - void toggle_alpha() { toggle(alpha, alpha_bt, "Graphics/Alpha"); } - void toggle_light() { toggle(light, light_bt, "Graphics/Light"); } - void toggle_sshow() { toggle(sshow, anim_bt, "Graphics/Slideshow"); } - void toggle_grid() { toggle(grid, grid_bt, "Graphics/Grid"); } - void toggle_zoom() { toggle(zoom, zoom_bt); } - void toggle_rotate(){ toggle(rotate, rotate_bt); } - void setoff_zoom() { setoff(zoom, zoom_bt); } - void setoff_rotate(){ setoff(rotate, rotate_bt); } - bool is_sshow() { return sshow; } - void adjust() - { mgl_set_size(FMGL->get_graph(),scroll->w(),scroll->h()); FMGL->size(scroll->w(),scroll->h()); update(); } - - Fl_MGLView(int x, int y, int w, int h, const char *label=0); - virtual ~Fl_MGLView(); - void update(); ///< Update picture by calling user drawing function -protected: - Fl_Button *alpha_bt, *light_bt, *rotate_bt, *anim_bt, *zoom_bt, *grid_bt; -// Fl_Counter *tet, *phi; - - int grid, alpha, light; ///< Current states of wire, alpha, light switches (toggle buttons) - int sshow, rotate, zoom;///< Current states of slideshow, rotate, zoom switches (toggle buttons) - - void toggle(int &val, Fl_Button *b, const char *txt=NULL); - void setoff(int &val, Fl_Button *b, const char *txt=NULL); -}; -//----------------------------------------------------------------------------- -void MGL_EXPORT mgl_ask_fltk(const wchar_t *quest, wchar_t *res); -void MGL_EXPORT mgl_makemenu_fltk(Fl_Menu_ *m, Fl_MGLView *w); -//----------------------------------------------------------------------------- #endif #endif diff --git a/include/mgl2/mgl.h b/include/mgl2/mgl.h index 286a3bb..7fdfb54 100644 --- a/include/mgl2/mgl.h +++ b/include/mgl2/mgl.h @@ -73,6 +73,8 @@ public: inline void SetAlphaDef(double alpha) { mgl_set_alpha_default(gr, alpha); } /// Set the transparency type (0 - usual, 1 - glass, 2 - lamp) inline void SetTranspType(int type) { mgl_set_transp_type(gr, type); } + /// Set the size of semi-transparent area around lines, marks, glyphs, ... Default is 1. + inline void SetPenDelta(double d) { mgl_pen_delta(gr,d); } /// Set the using of light on/off. inline void Light(bool enable) { mgl_set_light(gr, enable); } @@ -114,11 +116,11 @@ public: inline void CutOff(const char *EqC) { mgl_set_cutoff(gr, EqC); } /// Set default font size - inline void SetFontSize(double size) { mgl_set_font_size(gr, size); } + inline void SetFontSize(double size) { mgl_set_font_size(gr, size);} /// Set default font style and color - inline void SetFontDef(const char *fnt) { mgl_set_font_def(gr, fnt); } + inline void SetFontDef(const char *fnt) { mgl_set_font_def(gr, fnt); } /// Set FontSize by size in pt and picture DPI (default is 16 pt for dpi=72) - virtual void SetFontSizePT(double pt, int dpi=72){ SetFontSize(pt*27.f/dpi); } + virtual void SetFontSizePT(double pt, int dpi=72) { SetFontSize(pt*27.f/dpi); } /// Set FontSize by size in centimeters and picture DPI (default is 0.56 cm = 16 pt) inline void SetFontSizeCM(double cm, int dpi=72) { SetFontSizePT(cm*28.45f,dpi); } /// Set FontSize by size in inch and picture DPI (default is 0.22 in = 16 pt) @@ -570,6 +572,20 @@ public: inline void Error(mglPoint p, mglPoint e, const char *pen="k") { mgl_error_box(gr, p.x, p.y, p.z, e.x, e.y, e.z, pen); } + /// Draws Lamerey diagram for mapping x_new = f(x_old) + /** String \a stl may contain: ‘v’ for drawing arrows; ‘~’ for disable 1st segment. + * Option value set the number of iterations (default is 20).*/ + inline void Lamerey(double x0, const mglDataA &f, const char *stl="", const char *opt="") + { mgl_lamerey_dat(gr,x0,&f,stl,opt); } + inline void Lamerey(double x0, const char *func, const char *stl="", const char *opt="") + { mgl_lamerey_str(gr,x0,func,stl,opt); } + /// Draws Bifurcation diagram for mapping x_new = f(x_old) in x-axis range + /** Option value set the number of stationary points (default is 1024).*/ + inline void Bifurcation(double dx, const mglDataA &f, const char *stl="", const char *opt="") + { mgl_bifurcation_dat(gr,dx,&f,stl,opt); } + inline void Bifurcation(double dx, const char *func, const char *stl="", const char *opt="") + { mgl_bifurcation_str(gr,dx,func,stl,opt); } + /// Draws the face between points with color stl (include interpolation up to 4 colors). inline void Face(mglPoint p1, mglPoint p2, mglPoint p3, mglPoint p4, const char *stl="r") { mgl_face(gr, p1.x, p1.y, p1.z, p2.x, p2.y, p2.z, p3.x, p3.y, p3.z, p4.x, p4.y, p4.z, stl); } @@ -1029,6 +1045,16 @@ public: inline void Mark(const mglDataA &y, const mglDataA &r, const char *pen, const char *opt="") { mgl_mark_y(gr, &y, &r, pen, opt); } + /// Draw Poincare map at condition r==0 for curve {x,y,z} + inline void Pmap(const mglDataA &x, const mglDataA &y, const mglDataA &z, const mglDataA &r, const char *pen, const char *opt="") + { mgl_pmap_xyz(gr, &x, &y, &z, &r, pen, opt); } + /// Draw Poincare map at condition r==0 for curve {x,y} + inline void Pmap(const mglDataA &x, const mglDataA &y, const mglDataA &r, const char *pen, const char *opt="") + { mgl_pmap_xy(gr, &x, &y, &r, pen, opt); } + /// Draw Poincare map at condition r==0 for curve {x,y} with x in x-axis range + inline void Pmap(const mglDataA &y, const mglDataA &r, const char *pen, const char *opt="") + { mgl_pmap(gr, &y, &r, pen, opt); } + /// Draw textual marks with size r at points {x,y,z} inline void TextMark(const mglDataA &x, const mglDataA &y, const mglDataA &z, const mglDataA &r, const char *text, const char *fnt="", const char *opt="") { mgl_textmark_xyzr(gr, &x, &y, &z, &r, text, fnt, opt); } diff --git a/include/mgl2/mgl_cf.h b/include/mgl2/mgl_cf.h index bc1096e..a0d0080 100644 --- a/include/mgl2/mgl_cf.h +++ b/include/mgl2/mgl_cf.h @@ -1,5 +1,5 @@ /*************************************************************************** - * MGL_EXPORT mgl_cf.cpp is part of Math Graphic Library + * mgl_cf.cpp is part of Math Graphic Library * Copyright (C) 2007-2014 Alexey Balakin * * * * This program is free software; you can redistribute it and/or modify * diff --git a/include/mgl2/mpi.h b/include/mgl2/mpi.h index aab7a4d..79aacb0 100644 --- a/include/mgl2/mpi.h +++ b/include/mgl2/mpi.h @@ -1,5 +1,5 @@ /*************************************************************************** - * mgl.h is part of Math Graphic Library + * mpi.h is part of Math Graphic Library * Copyright (C) 2007-2014 Alexey Balakin * * * * This program is free software; you can redistribute it and/or modify * @@ -50,7 +50,7 @@ public: inline void MPI_Send(int id) { mgl_mpi_send(gr,id); } /// Receive graphical information from node id using MPI inline void MPI_Recv(int id) { mgl_mpi_recv(gr,id); } - + }; #endif //----------------------------------------------------------------------------- diff --git a/include/mgl2/pde.h b/include/mgl2/pde.h index c756886..3bee32d 100644 --- a/include/mgl2/pde.h +++ b/include/mgl2/pde.h @@ -1,5 +1,5 @@ /*************************************************************************** - * data_cf.h is part of Math Graphic Library + * pde.h is part of Math Graphic Library * Copyright (C) 2007-2014 Alexey Balakin * * * * This program is free software; you can redistribute it and/or modify * diff --git a/include/mgl2/plot.h b/include/mgl2/plot.h index cd7d708..e1ed4f0 100644 --- a/include/mgl2/plot.h +++ b/include/mgl2/plot.h @@ -208,6 +208,16 @@ void MGL_EXPORT mgl_mark_xy_(uintptr_t *graph, uintptr_t *x, uintptr_t *y, uintp void MGL_EXPORT mgl_mark_y(HMGL graph, HCDT y, HCDT r, const char *pen, const char *opt); void MGL_EXPORT mgl_mark_y_(uintptr_t *graph, uintptr_t *y, uintptr_t *r, const char *pen, const char *opt,int,int); +/// Draw Poincare map at condition r==0 for curve {x,y,z} +void MGL_EXPORT mgl_pmap_xyz(HMGL graph, HCDT x, HCDT y, HCDT z, HCDT r, const char *pen, const char *opt); +void MGL_EXPORT mgl_pmap_xyz_(uintptr_t *graph, uintptr_t *x, uintptr_t *y, uintptr_t *z, uintptr_t *r, const char *pen, const char *opt,int,int); +/// Draw Poincare map at condition r==0 for curve {x,y} +void MGL_EXPORT mgl_pmap_xy(HMGL graph, HCDT x, HCDT y, HCDT r, const char *pen, const char *opt); +void MGL_EXPORT mgl_pmap_xy_(uintptr_t *graph, uintptr_t *x, uintptr_t *y, uintptr_t *r, const char *pen, const char *opt,int,int); +/// Draw Poincare map at condition r==0 for curve {x,y} with x in x-axis range +void MGL_EXPORT mgl_pmap(HMGL graph, HCDT y, HCDT r, const char *pen, const char *opt); +void MGL_EXPORT mgl_pmap_(uintptr_t *graph, uintptr_t *y, uintptr_t *r, const char *pen, const char *opt,int,int); + /// Draw tube with variable radius r around curve {x,y,z} void MGL_EXPORT mgl_tube_xyzr(HMGL graph, HCDT x, HCDT y, HCDT z, HCDT r, const char *pen, const char *opt); void MGL_EXPORT mgl_tube_xyzr_(uintptr_t *graph, uintptr_t *x, uintptr_t *y, uintptr_t *z, uintptr_t *r, const char *pen, const char *opt,int,int); diff --git a/include/mgl2/prim.h b/include/mgl2/prim.h index 18f7e55..b27c3c0 100644 --- a/include/mgl2/prim.h +++ b/include/mgl2/prim.h @@ -202,7 +202,7 @@ void MGL_EXPORT mgl_label_y_(uintptr_t *graph, uintptr_t *y, const char *text, c /// Draw table for values val along given direction with row labels text at position {x,y} /** String \a fnt may contain: * ‘#’ for drawing cell borders; - * ‘|’ for limiting table widh by subplot one (equal to option ‘value 1’); + * ‘|’ for limiting table width by subplot one (equal to option ‘value 1’); * ‘=’ for equal width of all cells; * ‘f’ for fixed format of printed numbers; * ‘E’ for using ‘E’ instead of ‘e’; @@ -220,6 +220,23 @@ void MGL_EXPORT mgl_logo(HMGL gr, long w, long h, const unsigned char *rgba, int void MGL_EXPORT mgl_logo_file(HMGL gr, const char *fname, int smooth, const char *opt); void MGL_EXPORT mgl_logo_file_(uintptr_t *gr, const char *fname, int *smooth, const char *opt,int l,int n); +/// Draws Lamerey diagram for mapping x_new = f(x_old) +/** String \a stl may contain: ‘v’ for drawing arrows; ‘~’ for disable 1st segment. + * Option value set the number of iterations (default is 20).*/ +void MGL_EXPORT mgl_lamerey(HMGL gr, double x0, double (*f)(double,void *), void *par, const char *stl, const char *opt); +void MGL_EXPORT mgl_lamerey_dat(HMGL gr, double x0, HCDT f, const char *stl, const char *opt); +void MGL_EXPORT mgl_lamerey_str(HMGL gr, double x0, const char *f, const char *stl, const char *opt); +void MGL_EXPORT mgl_lamerey_dat_(uintptr_t *gr, double *x0, uintptr_t *f, const char *stl, const char *opt, int,int); +void MGL_EXPORT mgl_lamerey_str_(uintptr_t *gr, double *x0, const char *f, const char *stl, const char *opt, int,int,int); + +/// Draws Bifurcation diagram for mapping x_new = f(x_old) in x-axis range +/** Option value set the number of stationary points (default is 1024).*/ +void MGL_EXPORT mgl_bifurcation(HMGL gr, double dx, double (*f)(double,double,void *), void *par, const char *stl, const char *opt); +void MGL_EXPORT mgl_bifurcation_dat(HMGL gr, double dx, HCDT f, const char *stl, const char *opt); +void MGL_EXPORT mgl_bifurcation_str(HMGL gr, double dx, const char *f, const char *stl, const char *opt); +void MGL_EXPORT mgl_bifurcation_dat_(uintptr_t *gr, double *dx, uintptr_t *f, const char *stl, const char *opt, int,int); +void MGL_EXPORT mgl_bifurcation_str_(uintptr_t *gr, double *dx, const char *f, const char *stl, const char *opt, int,int,int); + #ifdef __cplusplus } #endif diff --git a/include/mgl2/qmathgl.h b/include/mgl2/qmathgl.h index 0e6334c..504875f 100644 --- a/include/mgl2/qmathgl.h +++ b/include/mgl2/qmathgl.h @@ -1,5 +1,5 @@ /*************************************************************************** - * window.h is part of Math Graphic Library + * qmathgl.h is part of Math Graphic Library * Copyright (C) 2007-2014 Alexey Balakin * * * * This program is free software; you can redistribute it and/or modify * @@ -44,6 +44,7 @@ public: bool enableMouse; ///< Enable mouse handlers bool enableWheel; ///< Enable mouse wheel handlers QString primitives; ///< Manual primitives, defined by user + mglCanvas *gr; ///< Built-in mglCanvas instance (mglCanvasQT is used by default) QMathGL(QWidget *parent = 0, Qt::WindowFlags f = 0); virtual ~QMathGL(); @@ -176,7 +177,6 @@ protected: void wheelEvent(QWheelEvent *); void mouseDoubleClickEvent(QMouseEvent *); - mglCanvas *gr; ///< Built-in mglCanvasQT-er instance (used by default) void *draw_par; ///< Parameters for drawing function mglCanvasWnd::DrawFunc. /// Drawing function for window procedure. It should return the number of frames. int (*draw_func)(mglBase *gr, void *par); diff --git a/include/mgl2/qt.h b/include/mgl2/qt.h index ab877bd..58ef70d 100644 --- a/include/mgl2/qt.h +++ b/include/mgl2/qt.h @@ -1,5 +1,5 @@ /*************************************************************************** - * window.h is part of Math Graphic Library + * qt.h is part of Math Graphic Library * Copyright (C) 2007-2014 Alexey Balakin * * * * This program is free software; you can redistribute it and/or modify * diff --git a/include/mgl2/type.h b/include/mgl2/type.h index 8450f76..d441ec1 100644 --- a/include/mgl2/type.h +++ b/include/mgl2/type.h @@ -93,6 +93,8 @@ inline bool operator>(const mglPoint &a, const mglPoint &b) { return a.x>=b.x && a.y>=b.y && a.z>=b.z; } inline mreal mgl_norm(const mglPoint &p) { return sqrt(p.x*p.x+p.y*p.y+p.z*p.z); } +inline mreal mgl_anorm(const mglPoint &p) +{ return fabs(p.x)+fabs(p.y)+fabs(p.z); } #endif //----------------------------------------------------------------------------- /// Class for RGBA color diff --git a/include/mgl2/wnd.h b/include/mgl2/wnd.h index a1aa0c3..885e5a8 100644 --- a/include/mgl2/wnd.h +++ b/include/mgl2/wnd.h @@ -58,7 +58,7 @@ class MGL_EXPORT mglWnd : public mglGraph const mglWnd &operator=(const mglWnd &t) { return t; } public: mglWnd() : mglGraph(-1) {} - virtual ~mglWnd() {} + virtual ~mglWnd() { mgl_use_graph(gr,-255); } virtual int Run()=0; ///< Run main loop for event handling inline void ToggleAlpha() ///< Switch on/off transparency (do not overwrite user settings) diff --git a/json/CMakeLists.txt b/json/CMakeLists.txt index 1c860d7..5979d6c 100644 --- a/json/CMakeLists.txt +++ b/json/CMakeLists.txt @@ -7,19 +7,18 @@ include_directories(${MathGL_BINARY_DIR}/json) if(enable-qt5) include(../cmake-qt5.txt) qt5_wrap_ui(json_ui_src MainWindow.ui) - qt5_wrap_cpp(json_moc_src ${json_moc_hdr} ) else(enable-qt5) include(../cmake-qt4.txt) qt4_wrap_ui(json_ui_src MainWindow.ui) - qt4_wrap_cpp(json_moc_src ${json_moc_hdr} ) endif(enable-qt5) -add_executable(MglForJsTestBench ${json_src} ${json_moc_src} ${json_ui_src}) +add_executable(MglForJsTestBench ${json_src} ${json_moc_hdr} ${json_ui_src}) if(enable-qt5) target_compile_definitions(MglForJsTestBench PUBLIC MGL_USE_QT5) target_link_libraries(MglForJsTestBench mgl-qt5) - qt5_use_modules(MglForJsTestBench Core Widgets Gui Network WebKit WebKitWidgets PrintSupport) + qt5_use_modules(MglForJsTestBench ${MGL_QT5_LIBS}) else(enable-qt5) - target_link_libraries(MglForJsTestBench mgl-qt ${QT_LIBRARIES}) + target_link_libraries(MglForJsTestBench mgl-qt) + qt4_use_modules(MglForJsTestBench ${MGL_QT4_LIBS}) endif(enable-qt5) endif(enable-json-sample) diff --git a/mgltex/Recompilation_decision.eps b/mgltex/Recompilation_decision.eps new file mode 100644 index 0000000..b087058 --- /dev/null +++ b/mgltex/Recompilation_decision.eps @@ -0,0 +1,1851 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: cairo 1.13.1 (http://cairographics.org) +%%CreationDate: Sat Nov 7 08:28:35 2015 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 3 +%%BoundingBox: 0 -1 631 791 +%%EndComments +%%BeginProlog +save +50 dict begin +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/pdfmark where { pop globaldict /?pdfmark /exec load put } + { globaldict begin /?pdfmark /pop load def /pdfmark + /cleartomark load def end } ifelse +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +%%EndProlog +%%BeginSetup +%%BeginResource: font DejaVuSans +11 dict begin +/FontType 42 def +/FontName /DejaVuSans def +/PaintType 0 def +/FontMatrix [ 1 0 0 1 0 0 ] def +/FontBBox [ 0 0 0 0 ] def +/Encoding 256 array def +0 1 255 { Encoding exch /.notdef put } for +Encoding 32 /space put +Encoding 46 /period put +Encoding 47 /slash put +Encoding 60 /less put +Encoding 62 /greater put +Encoding 63 /question put +Encoding 64 /at put +Encoding 65 /A put +Encoding 67 /C put +Encoding 68 /D put +Encoding 69 /E put +Encoding 70 /F put +Encoding 71 /G put +Encoding 73 /I put +Encoding 76 /L put +Encoding 77 /M put +Encoding 78 /N put +Encoding 82 /R put +Encoding 83 /S put +Encoding 85 /U put +Encoding 89 /Y put +Encoding 92 /backslash put +Encoding 97 /a put +Encoding 99 /c put +Encoding 100 /d put +Encoding 101 /e put +Encoding 104 /h put +Encoding 105 /i put +Encoding 108 /l put +Encoding 109 /m put +Encoding 110 /n put +Encoding 111 /o put +Encoding 112 /p put +Encoding 113 /q put +Encoding 114 /r put +Encoding 115 /s put +Encoding 116 /t put +Encoding 117 /u put +Encoding 118 /v put +Encoding 119 /w put +Encoding 121 /y put +/CharStrings 42 dict dup begin +/.notdef 0 def +/S 1 def +/t 2 def +/a 3 def +/r 4 def +/F 5 def +/i 6 def +/n 7 def +/d 8 def +/backslash 9 def +/M 10 def +/G 11 def +/L 12 def +/at 13 def +/less 14 def +/s 15 def +/c 16 def +/p 17 def +/greater 18 def +/I 19 def +/space 20 def +/e 21 def +/question 22 def +/C 23 def +/o 24 def +/m 25 def +/v 26 def +/period 27 def +/R 28 def +/w 29 def +/slash 30 def +/l 31 def +/U 32 def +/D 33 def +/E 34 def +/A 35 def +/h 36 def +/y 37 def +/q 38 def +/u 39 def +/Y 40 def +/N 41 def +end readonly def +/sfnts [ +<0001000000090080000300106376742000691d3900001d14000001fe6670676d7134766a0000 +1f14000000ab676c796600c0787b0000009c00001c7868656164026638f700001fc000000036 +686865610cb8067b00001ff800000024686d7478cb7f16780000201c000000a86c6f63610002 +4608000020c4000000ac6d617870049706710000217000000020707265703b07f10000002190 +0000056800020066fe96046605a400030007001a400c04fb0006fb0108057f0204002fc4d4ec +310010d4ecd4ec301311211125211121660400fc73031bfce5fe96070ef8f272062900010087 +ffe304a205f00027007e403c0d0c020e0b021e1f1e080902070a021f1f1e420a0b1e1f041501 +0015a11494189511049500942591118c281e0a0b1f1b0700221b190e2d071914222810dcc4ec +fcece4111239393939310010e4f4e4ec10eef6ee10c6111739304b535807100eed1117390710 +0eed1117395922b20f2901015db61f292f294f29035d01152e012322061514161f011e011514 +0421222627351e013332363534262f012e01353424333216044873cc5fa5b377a67ae2d7fedd +fee76aef807bec72adbc879a7be2ca0117f569da05a4c53736807663651f192bd9b6d9e0302f +d04546887e6e7c1f182dc0abc6e4260000010037000002f2059e0013003840190e05080f03a9 +001101bc08870a0b08090204000810120e461410fc3cc4fc3cc432393931002fecf43cc4ec32 +11393930b2af1501015d01112115211114163b01152322263511233533110177017bfe854b73 +bdbdd5a28787059efec28ffda0894e9a9fd202608f013e0000000002007bffe3042d047b000a +002500bc4027191f0b17090e00a91706b90e1120861fba1cb923b8118c170c001703180d0908 +0b1f030814452610fcecccd4ec323211393931002fc4e4f4fcf4ec10c6ee10ee113911391239 +30406e301d301e301f3020302130223f27401d401e401f402040214022501d501e501f502050 +21502250277027851d871e871f8720872185229027a027f0271e301e301f30203021401e401f +40204021501e501f50205021601e601f60206021701e701f70207021801e801f80208021185d +015d0122061514163332363d01371123350e01232226353436332135342623220607353e0133 +321602bedfac816f99b9b8b83fbc88accbfdfb0102a79760b65465be5af3f00233667b6273d9 +b4294cfd81aa6661c1a2bdc0127f8b2e2eaa2727fc00000100ba0000034a047b001100304014 +060b0700110b03870eb809bc070a06080008461210fcc4ec3231002fe4f4ecc4d4cc11123930 +b450139f1302015d012e012322061511231133153e0133321617034a1f492c9ca7b9b93aba85 +132e1c03b41211cbbefdb20460ae666305050000000100c90000042305d50009002940120695 +040295008104ad08050107031c00040a10fcec32d4c431002fecf4ec10ee30b20f0b01015d13 +211521112115211123c9035afd700250fdb0ca05d5aafe48aafd3700000200c1000001790614 +00030007002b400e06be04b100bc020501080400460810fc3cec3231002fe4fcec30400b1009 +400950096009700905015d1333112311331523c1b8b8b8b80460fba00614e900000100ba0000 +0464047b001300364019030900030e0106870e11b80cbc0a010208004e0d09080b461410fcec +32f4ec31002f3ce4f4c4ec1112173930b46015cf1502015d0111231134262322061511231133 +153e013332160464b87c7c95acb9b942b375c1c602a4fd5c029e9f9ebea4fd870460ae6564ef +00020071ffe3045a06140010001c003840191ab9000e14b905088c0eb8019703170400080247 +11120b451d10fcecf4ec323231002fece4f4c4ec10c4ee30b6601e801ea01e03015d01113311 +23350e0123220211100033321601141633323635342623220603a2b8b83ab17ccbff00ffcb7c +b1fdc7a79292a8a89292a703b6025ef9eca86461014401080108014461fe15cbe7e7cbcbe7e7 +00010000ff4202b205d50003002d4014021a010100001a03030242019f008104020001032fc4 +3939310010f4ec304b5358071005ed071005ed592213012301aa0208aafdf805d5f96d069300 +000100c90000061f05d5000c00bf403403110708070211010208080702110302090a0901110a +0a09420a070203080300af080b050908030201050a061c043e0a1c00040d10fcecfcec111739 +31002f3cc4ec32111739304b5358071005ed071008ed071008ed071005ed5922b2700e01015d +405603070f080f09020a15021407130a260226072007260a200a3407350a69027c027b07790a +80028207820a90021604010b0313011b0323012c032708280934013c035608590965086a0976 +08790981018d0395019b03145d005d13210901211123110123011123c9012d017d017f012dc5 +fe7fcbfe7fc405d5fc0803f8fa2b051ffc000400fae1000000010073ffe3058b05f0001d0039 +402000051b0195031b950812a111ae15950e91088c1e02001c1134043318190b101e10fcecfc +e4fcc4310010e4f4ecf4ec10fed4ee1139393025112135211106042320001110002132041715 +2e0123200011100021323604c3feb6021275fee6a0fea2fe75018b015e9201076f70fc8bfeee +feed011301126ba8d50191a6fd7f53550199016d016e01994846d75f60fecefed1fed2fece25 +0000000100c90000046a05d500050025400c0295008104011c033a00040610fcecec31002fe4 +ec304009300750078003800404015d133311211521c9ca02d7fc5f05d5fad5aa00020087fe9c +077105a2000b004c00954032180c0309a919151b03a94c0f34330fac30a93715ac24a937434d +33341e1a00281206180c281a2b1e2849122b2a28492c3d4d10dcecfcec10fefdfe3cc610ee11 +123939310010d4c4fcec10feedd4c610c5ee3210c4ee11393930004bb009544bb00c545b4bb0 +10545b4bb013545b4bb014545b58bd004dffc00001004d004d0040381137385940090f4e1f4e +2f4e3f4e04015d011416333236353426232206010e01232226353436333216173533113e0135 +3426272624232206070602151412171604333236371706042322242726023534123736243332 +04171e011510000502fa8e7c7b8d907a798f02213c9b67acd7d8ab679c3b8f92a53f4068fed5 +b07be2609db1736d6901149d81f9685a7dfed998b9feb8808086887e810152bdd4016b7b4b4f +fec2fee802198fa3a48e8ca5a4fe484d49f9c8c8fa4b4c83fd2016dfb16bbc50838b414066fe +b5c19ffeea6a686d57516f6167837d7d0149bdb6014a7d7f87aea062e67bfef9fed006000001 +00d9005e05db04a60006004d402a029c030403019c0001040403019c0201050605009c060542 +05040201000503a806a7070102002404230710fcec3239310010f4ec1739304b53580704ed07 +1008ed071008ed071004ed592209021501350105dbfbf80408fafe050203f0fe91fe93b601d1 +a601d1000001006fffe303c7047b002700e7403c0d0c020e0b531f1e080902070a531f1f1e42 +0a0b1e1f041500860189041486158918b91104b925b8118c281e0a0b1f1b0700521b080e0708 +1422452810fcc4ecd4ece4111239393939310010e4f4ec10fef5ee10f5ee121739304b535807 +100eed111739070eed1117395922b2002701015d406d1c0a1c0b1c0c2e092c0a2c0b2c0c3b09 +3b0a3b0b3b0c0b200020012402280a280b2a132f142f152a16281e281f292029212427860a86 +0b860c860d12000000010202060a060b030c030d030e030f03100319031a031b031c041d0927 +2f293f295f297f2980299029a029f029185d005d7101152e012322061514161f011e01151406 +23222627351e013332363534262f012e01353436333216038b4ea85a898962943fc4a5f7d85a +c36c66c661828c65ab40ab98e0ce66b4043fae282854544049210e2a99899cb62323be353559 +514b50250f2495829eac1e00000000010071ffe303e7047b0019003f401b00860188040e860d +880ab91104b917b8118c1a07120d004814451a10fce432ec310010e4f4ec10fef4ee10f5ee30 +400b0f1b101b801b901ba01b05015d01152e0123220615141633323637150e01232200111000 +21321603e74e9d50b3c6c6b3509d4e4da55dfdfed6012d010655a20435ac2b2be3cdcde32b2b +aa2424013e010e0112013a230000000200bafe5604a4047b0010001c003e401b1ab9000e14b9 +0508b80e8c01bd03bc1d11120b471704000802461d10fcec3232f4ec310010e4e4e4f4c4ec10 +c4ee304009601e801ea01ee01e04015d2511231133153e013332001110022322260134262322 +061514163332360173b9b93ab17bcc00ffffcc7bb10238a79292a7a79292a7a8fdae060aaa64 +61febcfef8fef8febc6101ebcbe7e7cbcbe7e7000000000100d9005e05db04a60006004f402b +069c0006030403059c040403009c010201069c05060202014206050302000504a801a7070602 +240400230710fc3cec39310010f4ec1739304b5358071008ed071004ed071004ed071008ed59 +2213350115013501d90502fafe040603f0b6fe2fa6fe2fb6016d0000000100c90000019305d5 +0003002eb700af02011c00040410fc4bb0105458b9000000403859ec31002fec3001400d3005 +4005500560058f059f05065d13331123c9caca05d5fa2b0000020071ffe3047f047b0014001b +00704024001501098608880515a90105b90c01bb18b912b80c8c1c1b1502081508004b02120f +451c10fcecf4ecc4111239310010e4f4ece410ee10ee10f4ee1112393040293f1d701da01dd0 +1df01d053f003f013f023f153f1b052c072f082f092c0a6f006f016f026f156f1b095d71015d +0115211e0133323637150e01232000111000333200072e0123220607047ffcb20ccdb76ac762 +63d06bfef4fec70129fce20107b802a5889ab90e025e5abec73434ae2a2c0138010a01130143 +feddc497b4ae9e0000020093000003b005f0000300240065402b241e0906040a1d1304001486 +1388109517910083021d1a0d0905040a1e010d1c1a041c05010300261a132510dc4bb00c5458 +b90013ffc03859c4fcecd4ec10ee11393911123911123931002feef6fef4ee10cd1139391739 +3001b679097a0a7a20035d2533152313233534363f013e0135342623220607353e0133321615 +14060f010e01070e01150187cbcbc5bf385a5a3933836c4fb3615ec167b8df485a582f270806 +06fefe01919a65825659355e31596e4643bc3938c29f4c8956562f3519153c34000000010073 +ffe3052705f000190036401a0da10eae0a951101a100ae04951791118c1a07190d003014101a +10fcec32ec310010e4f4ecf4ec10eef6ee30b40f1b1f1b02015d01152e012320001110002132 +3637150e01232000111000213216052766e782ff00fef00110010082e7666aed84feadfe7a01 +86015386ed0562d55f5efec7fed8fed9fec75e5fd34848019f01670168019f47000000020071 +ffe30475047b000b0017004a401306b91200b90cb8128c1809120f51031215451810fcecf4ec +310010e4f4ec10ee3040233f197b007b067f077f087f097f0a7f0b7b0c7f0d7f0e7f0f7f107f +117b12a019f01911015d012206151416333236353426273200111000232200111000027394ac +ab9593acac93f00112feeef0f1feef011103dfe7c9c9e7e8c8c7e99cfec8feecfeedfec70139 +0113011401380000000100ba0000071d047b0022005a4026061209180f00061d07150c871d20 +03b81bbc19100700110f0808065011080f501c18081a462310fcec32fcfcfcec11123931002f +3c3ce4f43cc4ec32111217393040133024502470249024a024a024bf24df24ff2409015d013e +013332161511231134262322061511231134262322061511231133153e01333216042945c082 +afbeb972758fa6b972778da6b9b93fb0797aab03897c76f5e2fd5c029ea19cbea4fd87029ea2 +9bbfa3fd870460ae67627c0000000001003d0000047f0460000600fb40270311040504021101 +0205050402110302060006011100000642020300bf0506050302010504000710d44bb00a5458 +b90000004038594bb014544bb015545b58b90000ffc03859c4173931002fec3239304b535807 +1005ed071008ed071008ed071005ed592201408e48026a027b027f02860280029102a4020806 +00060109030904150015011a031a0426002601290329042008350035013a033a043008460046 +0149034904460548064008560056015903590450086600660169036904670568066008750074 +017b037b0475057a068500850189038904890586069600960197029a03980498059706a805a7 +06b008c008df08ff083e5d005d133309013301233dc3015e015ec3fe5cfa0460fc5403acfba0 +0000000100db000001ae00fe00030011b7008302011900180410fcec31002fec3037331523db +d3d3fefe000200c90000055405d50013001c00b14035090807030a0611030403051104040342 +06040015030415950914950d810b040506031109001c160e050a191904113f140a1c0c041d10 +fcec32fcc4ec1117391139393931002f3cf4ecd4ec123912391239304b5358071005ed071005 +ed1117395922b2401e01015d40427a1301050005010502060307041500150114021603170425 +002501250226032706260726082609201e360136024601460268057504750577138806880798 +0698071f5d005d011e01171323032e012b01112311212016151406011133323635342623038d +417b3ecdd9bf4a8b78dcca01c80100fc83fd89fe9295959202bc16907efe68017f9662fd8905 +d5d6d88dba024ffdee878383850000010056000006350460000c01eb404905550605090a0904 +550a0903550a0b0a025501020b0b0a061107080705110405080807021103020c000c01110000 +0c420a050203060300bf0b080c0b0a09080605040302010b07000d10d44bb00a544bb011545b +4bb012545b4bb013545b4bb00b545b58b9000000403859014bb00c544bb00d545b4bb010545b +58b90000ffc03859cc173931002f3cec32321739304b5358071005ed071008ed071008ed0710 +05ed071008ed071005ed0705ed071008ed59220140ff050216021605220a350a49024905460a +400a5b025b05550a500a6e026e05660a79027f0279057f05870299029805940abc02bc05ce02 +c703cf051d0502090306040b050a080b09040b050c1502190316041a051b081b09140b150c25 +00250123022703210425052206220725082709240a210b230c390336043608390c300e460248 +034604400442054006400740084409440a440b400e400e560056015602500451055206520750 +085309540a550b6300640165026a0365046a056a066a076e09610b670c6f0e7500750179027d +0378047d057a067f067a077f07780879097f097b0a760b7d0c870288058f0e97009701940293 +039c049b05980698079908402f960c9f0ea600a601a402a403ab04ab05a906a907ab08a40caf +0eb502b103bd04bb05b809bf0ec402c303cc04ca05795d005d13331b01331b013301230b0123 +56b8e6e5d9e6e5b8fedbd9f1f2d90460fc96036afc96036afba00396fc6a00010000ff4202b2 +05d50003002d4014001a010201021a03000342029f008104020001032fc43939310010f4ec30 +4b5358071005ed071005ed5922013301230208aafdf8aa05d5f96d000000000100c100000179 +061400030022b7009702010800460410fcec31002fec30400d10054005500560057005f00506 +015d13331123c1b8b80614f9ec00000100b2ffe3052905d50011004040160802110b0005950e +8c09008112081c0a38011c00411210fc4bb0105458b90000ffc03859ecfcec310010e432f4ec +11393939393001b61f138f139f13035d133311141633323635113311100021200011b2cbaec3 +c2aecbfedffee6fee5fedf05d5fc75f0d3d3f0038bfc5cfedcfed6012a012400000200c90000 +05b005d500080011002e4015009509810195100802100a0005190d32001c09041210fcecf4ec +113939393931002fecf4ec30b2601301015d0111332000111000212521200011100029010193 +f40135011ffee1fecbfe42019f01b20196fe68fe50fe61052ffb770118012e012c0117a6fe97 +fe80fe7efe960000000100c90000048b05d5000b002e401506950402950081089504ad0a0501 +0907031c00040c10fcec32d4c4c431002fececf4ec10ee30b21f0d01015d1321152111211521 +11211521c903b0fd1a02c7fd3902f8fc3e05d5aafe46aafde3aa0000000200100000056805d5 +0002000a00c2404100110100040504021105050401110a030a0011020003030a071105040611 +0505040911030a08110a030a4200030795010381090509080706040302010009050a0b10d4c4 +173931002f3ce4d4ec1239304b5358071005ed0705ed071005ed0705ed071008ed071005ed07 +1005ed071008ed5922b2200c01015d40420f010f020f070f080f005800760070008c00090701 +0802060309041601190256015802500c67016802780176027c0372047707780887018802800c +980299039604175d005d090121013301230321032302bcfeee0225fe7be50239d288fd5f88d5 +050efd1903aefa2b017ffe810000000100ba000004640614001300344019030900030e010687 +0e11b80c970a010208004e0d09080b461410fcec32f4ec31002f3cecf4c4ec1112173930b260 +1501015d0111231134262322061511231133113e013332160464b87c7c95acb9b942b375c1c6 +02a4fd5c029e9f9ebea4fd870614fd9e6564ef000001003dfe56047f0460000f018b40430708 +020911000f0a110b0a00000f0e110f000f0d110c0d00000f0d110e0d0a0b0a0c110b0b0a420d +0b0910000b058703bd0e0bbc100e0d0c0a09060300080f040f0b1010d44bb00a544bb008545b +58b9000b004038594bb0145458b9000bffc03859c4c4111739310010e432f4ec113911391239 +304b5358071005ed071008ed071008ed071005ed071008ed0705ed173259220140f006000508 +0609030d160a170d100d230d350d490a4f0a4e0d5a095a0a6a0a870d800d930d120a000a0906 +0b050c0b0e0b0f1701150210041005170a140b140c1a0e1a0f27002401240220042005290828 +09250a240b240c270d2a0e2a0f201137003501350230043005380a360b360c380d390e390f30 +114100400140024003400440054006400740084209450a470d490e490f401154005101510255 +03500450055606550756085709570a550b550c590e590f501166016602680a690e690f60117b +08780e780f89008a09850b850c890d890e890f9909950b950c9a0e9a0fa40ba40cab0eab0fb0 +11cf11df11ff11655d005d050e012b01353332363f01013309013302934e947c936c4c543321 +fe3bc3015e015ec368c87a9a488654044efc94036c00000000020071fe56045a047b000b001c +003e401b03b90c0f09b91815b80f8c1bbd19bc1d180c06081a47001212451d10fcecf4ec3232 +310010e4e4e4f4c4ec10c6ee304009601e801ea01ee01e04015d011416333236353426232206 +010e012322021110003332161735331123012fa79292a8a89292a702733ab17ccbff00ffcb7c +b13ab8b8022fcbe7e7cbcbe7e7fdae646101440108010801446164aaf9f60000000200aeffe3 +0458047b00130014003b401c030900030e0106870e118c0a01bc14b80c0d0908140b4e020800 +461510fcecf439ec3231002fe4e432f4c4ec1112173930b46f15c01502015d13113311141633 +32363511331123350e0123222601aeb87c7c95adb8b843b175c1c801cf01ba02a6fd619f9fbe +a4027bfba0ac6663f003a8000001fffc000004e705d500080094402803110405040211010205 +050402110302080008011100000842020300af0602070440051c0040070910d4e4fce4123931 +002fec3239304b5358071005ed071008ed071008ed071005ed5922b2000a01015d403c050214 +02350230023005300846024002400540085102510551086502840293021016011a031f0a2601 +290337013803400a670168037803700a9f0a0d5d005d03330901330111231104d9019e019bd9 +fdf0cb05d5fd9a0266fcf2fd3902c7000000000100c90000053305d500090079401e07110102 +0102110607064207020300af0805060107021c0436071c00040a10fcecfcec11393931002f3c +ec323939304b5358071004ed071004ed5922b21f0b01015d4030360238074802470769026607 +8002070601090615011a06460149065701580665016906790685018a0695019a069f0b105d00 +5d13210111331121011123c901100296c4fef0fd6ac405d5fb1f04e1fa2b04e1fb1f013500b8 +00cb00cb00c100aa009c01a600b800660000007100cb00a002b20085007500b800c301cb0189 +022d00cb00a600f000d300aa008700cb03aa0400014a003300cb000000d9050200f4015400b4 +009c01390114013907060400044e04b4045204b804e704cd0037047304cd04600473013303a2 +055605a60556053903c5021200c9001f00b801df007300ba03e9033303bc0444040e00df03cd +03aa00e503aa0404000000cb008f00a4007b00b80014016f007f027b0252008f00c705cd009a +009a006f00cb00cd019e01d300f000ba018300d5009803040248009e01d500c100cb00f60083 +0354027f00000333026600d300c700a400cd008f009a0073040005d5010a00fe022b00a400b4 +009c00000062009c0000001d032d05d505d505d505f0007f007b005400a406b80614072301d3 +00b800cb00a601c301ec069300a000d3035c037103db0185042304a80448008f013901140139 +0360008f05d5019a0614072306660179046004600460047b009c00000277046001aa00e90460 +0762007b00c5007f027b000000b4025205cd006600bc00660077061000cd013b01850389008f +007b0000001d00cd074a042f009c009c0000077d006f0000006f0335006a006f007b00ae00b2 +002d0396008f027b00f600830354063705f6008f009c04e10266008f018d02f600cd03440029 +006604ee00730000140000960000b707060504030201002c2010b002254964b040515820c859 +212d2cb002254964b040515820c859212d2c20100720b00050b00d7920b8ffff5058041b0559 +b0051cb0032508b0042523e120b00050b00d7920b8ffff5058041b0559b0051cb0032508e12d +2c4b505820b0fd454459212d2cb002254560442d2c4b5358b00225b0022545445921212d2c45 +442d2cb00225b0022549b00525b005254960b0206368208a108a233a8a10653a2d0000010000 +0002570ae39778045f0f3cf5001f080000000000cef5cb7600000000cef5cb76f7d6fcae0d72 +095500000008000000010000000000010000076dfe1d00000de2f7d6fa510d72000100000000 +00000000000000000000002a04cd0066051400870323003704e7007b034a00ba049a00c90239 +00c1051200ba0514007102b2000006e700c906330073047500c90800008706b400d9042b006f +04660071051400ba06b400d9025c00c9028b000004ec0071043f00930596007304e5007107cb +00ba04bc003d028b00db058f00c9068b005602b20000023900c105db00b2062900c9050e00c9 +05790010051200ba04bc003d05140071051200ae04e3fffc05fc00c900000000000000440000 +013c000001b8000002e400000354000003a8000003f800000470000005080000055400000650 +000006f80000073c000008bc0000093400000a9400000b2c00000bcc00000c4400000c8c0000 +0c8c00000d6000000e3800000ed000000f74000010380000115c0000118400001298000014bc +0000150800001544000015c800001648000016a8000017a40000181c000019e800001a880000 +1b0c00001bd000001c7800010000002a0354002b0068000c0002001000990008000004150216 +00080004b8028040fffbfe03fa1403f92503f83203f79603f60e03f5fe03f4fe03f32503f20e +03f19603f02503ef8a4105effe03ee9603ed9603ecfa03ebfa03eafe03e93a03e84203e7fe03 +e63203e5e45305e59603e48a4105e45303e3e22f05e3fa03e22f03e1fe03e0fe03df3203de14 +03dd9603dcfe03db1203da7d03d9bb03d8fe03d68a4105d67d03d5d44705d57d03d44703d3d2 +1b05d3fe03d21b03d1fe03d0fe03cffe03cefe03cd9603cccb1e05ccfe03cb1e03ca3203c9fe +03c6851105c61c03c51603c4fe03c3fe03c2fe03c1fe03c0fe03bffe03befe03bdfe03bcfe03 +bbfe03ba1103b9862505b9fe03b8b7bb05b8fe03b7b65d05b7bb03b78004b6b52505b65d40ff +03b64004b52503b4fe03b39603b2fe03b1fe03b0fe03affe03ae6403ad0e03acab2505ac6403 +abaa1205ab2503aa1203a98a4105a9fa03a8fe03a7fe03a6fe03a51203a4fe03a3a20e05a332 +03a20e03a16403a08a4105a096039ffe039e9d0c059efe039d0c039c9b19059c64039b9a1005 +9b19039a1003990a0398fe0397960d0597fe03960d03958a410595960394930e05942803930e +0392fa039190bb0591fe03908f5d0590bb039080048f8e25058f5d038f40048e25038dfe038c +8b2e058cfe038b2e038a8625058a410389880b05891403880b03878625058764038685110586 +250385110384fe038382110583fe0382110381fe0380fe037ffe0340ff7e7d7d057efe037d7d +037c64037b5415057b25037afe0379fe03780e03770c03760a0375fe0374fa0373fa0372fa03 +71fa0370fe036ffe036efe036c21036bfe036a1142056a530369fe03687d036711420566fe03 +65fe0364fe0363fe0362fe03613a0360fa035e0c035dfe035bfe035afe0359580a0559fa0358 +0a035716190557320356fe035554150555420354150353011005531803521403514a130551fe +03500b034ffe034e4d10054efe034d10034cfe034b4a13054bfe034a4910054a1303491d0d05 +491003480d0347fe0346960345960344fe0343022d0543fa0342bb03414b0340fe033ffe033e +3d12053e14033d3c0f053d12033c3b0d053c40ff0f033b0d033afe0339fe033837140538fa03 +3736100537140336350b05361003350b03341e03330d0332310b0532fe03310b03302f0b0530 +0d032f0b032e2d09052e10032d09032c32032b2a25052b64032a2912052a2503291203282725 +0528410327250326250b05260f03250b0324fe0323fe03220f03210110052112032064031ffa +031e1d0d051e64031d0d031c1142051cfe031bfa031a42031911420519fe0318640317161905 +17fe031601100516190315fe0314fe0313fe031211420512fe0311022d05114203107d030f64 +030efe030d0c16050dfe030c0110050c16030bfe030a100309fe0308022d0508fe0307140306 +64030401100504fe03401503022d0503fe0302011005022d0301100300fe0301b80164858d01 +2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b +2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b +2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b +2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b +2b2b2b2b2b2b2b2b2b2b2b2b2b002b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b +2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b +2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b +2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b +2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b1d00> +] def +/f-0-0 currentdict end definefont pop +%%EndResource +%%BeginResource: font DejaVuSans +11 dict begin +/FontType 42 def +/FontName /DejaVuSans def +/PaintType 0 def +/FontMatrix [ 1 0 0 1 0 0 ] def +/FontBBox [ 0 0 0 0 ] def +/Encoding 256 array def +0 1 255 { Encoding exch /.notdef put } for +Encoding 1 /uniFB01 put +/CharStrings 2 dict dup begin +/.notdef 0 def +/uniFB01 1 def +end readonly def +/sfnts [ +<0001000000090080000300106376742000691d3900000184000001fe6670676d7134766a0000 +0384000000ab676c7966aa72abf90000009c000000e868656164026638f70000043000000036 +686865610cb806530000046800000024686d747809d700950000048c000000086c6f63610000 +012c000004940000000c6d617870046f0671000004a000000020707265703b07f100000004c0 +0000056800020066fe96046605a400030007001a400c04fb0006fb0108057f0204002fc4d4ec +310010d4ecd4ec301311211125211121660400fc73031bfce5fe96070ef8f27206290002002f +0000044a061400150019005240111b46001708160f1404080803160a064c1a10fc3cc432c4fc +3cc410fe3cec310040120803a90010870e18be16b10e970900bc05012f3ce632eefeee10ee10 +ee3230400bff1ba01b901b801b101b05015d01112311211123112335333534363b0115232206 +1d0101331523044ab9fe07b9b0b0adb3b9b0634d01f9b9b90460fba003d1fc2f03d18f4eb7af +9950686301b2e900013500b800cb00cb00c100aa009c01a600b800660000007100cb00a002b2 +0085007500b800c301cb0189022d00cb00a600f000d300aa008700cb03aa0400014a003300cb +000000d9050200f4015400b4009c01390114013907060400044e04b4045204b804e704cd0037 +047304cd04600473013303a2055605a60556053903c5021200c9001f00b801df007300ba03e9 +033303bc0444040e00df03cd03aa00e503aa0404000000cb008f00a4007b00b80014016f007f +027b0252008f00c705cd009a009a006f00cb00cd019e01d300f000ba018300d5009803040248 +009e01d500c100cb00f600830354027f00000333026600d300c700a400cd008f009a00730400 +05d5010a00fe022b00a400b4009c00000062009c0000001d032d05d505d505d505f0007f007b +005400a406b80614072301d300b800cb00a601c301ec069300a000d3035c037103db01850423 +04a80448008f0139011401390360008f05d5019a0614072306660179046004600460047b009c +00000277046001aa00e904600762007b00c5007f027b000000b4025205cd006600bc00660077 +061000cd013b01850389008f007b0000001d00cd074a042f009c009c0000077d006f0000006f +0335006a006f007b00ae00b2002d0396008f027b00f600830354063705f6008f009c04e10266 +008f018d02f600cd03440029006604ee00730000140000960000b707060504030201002c2010 +b002254964b040515820c859212d2cb002254964b040515820c859212d2c20100720b00050b0 +0d7920b8ffff5058041b0559b0051cb0032508b0042523e120b00050b00d7920b8ffff505804 +1b0559b0051cb0032508e12d2c4b505820b0fd454459212d2cb002254560442d2c4b5358b002 +25b0022545445921212d2c45442d2cb00225b0022549b00525b005254960b0206368208a108a +233a8a10653a2d00000100000002570a13d8c3465f0f3cf5001f080000000000cef5cb760000 +0000cef5cb76f7d6fcae0d72095500000008000000010000000000010000076dfe1d00000de2 +f7d6fa510d7200010000000000000000000000000000000204cd0066050a002f000000000000 +0044000000e80001000000020354002b0068000c000200100099000800000415021600080004 +b8028040fffbfe03fa1403f92503f83203f79603f60e03f5fe03f4fe03f32503f20e03f19603 +f02503ef8a4105effe03ee9603ed9603ecfa03ebfa03eafe03e93a03e84203e7fe03e63203e5 +e45305e59603e48a4105e45303e3e22f05e3fa03e22f03e1fe03e0fe03df3203de1403dd9603 +dcfe03db1203da7d03d9bb03d8fe03d68a4105d67d03d5d44705d57d03d44703d3d21b05d3fe +03d21b03d1fe03d0fe03cffe03cefe03cd9603cccb1e05ccfe03cb1e03ca3203c9fe03c68511 +05c61c03c51603c4fe03c3fe03c2fe03c1fe03c0fe03bffe03befe03bdfe03bcfe03bbfe03ba +1103b9862505b9fe03b8b7bb05b8fe03b7b65d05b7bb03b78004b6b52505b65d40ff03b64004 +b52503b4fe03b39603b2fe03b1fe03b0fe03affe03ae6403ad0e03acab2505ac6403abaa1205 +ab2503aa1203a98a4105a9fa03a8fe03a7fe03a6fe03a51203a4fe03a3a20e05a33203a20e03 +a16403a08a4105a096039ffe039e9d0c059efe039d0c039c9b19059c64039b9a10059b19039a +1003990a0398fe0397960d0597fe03960d03958a410595960394930e05942803930e0392fa03 +9190bb0591fe03908f5d0590bb039080048f8e25058f5d038f40048e25038dfe038c8b2e058c +fe038b2e038a8625058a410389880b05891403880b0387862505876403868511058625038511 +0384fe038382110583fe0382110381fe0380fe037ffe0340ff7e7d7d057efe037d7d037c6403 +7b5415057b25037afe0379fe03780e03770c03760a0375fe0374fa0373fa0372fa0371fa0370 +fe036ffe036efe036c21036bfe036a1142056a530369fe03687d036711420566fe0365fe0364 +fe0363fe0362fe03613a0360fa035e0c035dfe035bfe035afe0359580a0559fa03580a035716 +190557320356fe035554150555420354150353011005531803521403514a130551fe03500b03 +4ffe034e4d10054efe034d10034cfe034b4a13054bfe034a4910054a1303491d0d0549100348 +0d0347fe0346960345960344fe0343022d0543fa0342bb03414b0340fe033ffe033e3d12053e +14033d3c0f053d12033c3b0d053c40ff0f033b0d033afe0339fe033837140538fa0337361005 +37140336350b05361003350b03341e03330d0332310b0532fe03310b03302f0b05300d032f0b +032e2d09052e10032d09032c32032b2a25052b64032a2912052a250329120328272505284103 +27250326250b05260f03250b0324fe0323fe03220f03210110052112032064031ffa031e1d0d +051e64031d0d031c1142051cfe031bfa031a42031911420519fe031864031716190517fe0316 +01100516190315fe0314fe0313fe031211420512fe0311022d05114203107d030f64030efe03 +0d0c16050dfe030c0110050c16030bfe030a100309fe0308022d0508fe030714030664030401 +100504fe03401503022d0503fe0302011005022d0301100300fe0301b80164858d012b2b2b2b +2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b +2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b +2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b +2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b +2b2b2b2b2b2b2b2b2b002b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b +2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b +2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b +2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b +2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b1d00> +] def +/f-0-1 currentdict end definefont pop +%%EndResource +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageBoundingBox: 0 -1 631 791 +%%EndPageSetup +q 0 -1 631 792 rectclip q +Q q +268.801 790.4 96 -38.398 re W n +q +268 790.4 97 -39 re W n +[ 0.793388 0 0 0.8 268.8 752.000008 ] concat +/DeviceRGB setcolorspace +8 dict dup begin + /ImageType 1 def + /Width 121 def + /Height 48 def + /Interpolate true def + /BitsPerComponent 8 def + /Decode [ 0 1 0 1 0 1 ] def + /DataSource currentfile /ASCII85Decode filter /FlateDecode filter def + /ImageMatrix [ 1 0 0 -1 0 48 ] def +end +image +Gb"/kM-!XM[`AE!Q8p)k#T4-r#lt*Y"Mu-$K[C@n60;;Q"=FBgZ&5L6jY]stQIP>-3U`M]%>VDDa6 + 5BKcfX?r'i\45L@'t#95!>0.nH8&)crODSf[<`TN8u8H6e5kQ"@lM--(8BM?R$m9"?2l2Kn + WMq$6Z]^AS!-%j!jK-@GadnS\P*EW5n-cYq[QM9W]?^:l!CXh6>,+_)I$&+ + hFcF(OX,jZl3OrYe\NLnWmqoa_T^D<$/QWIlJ(W5$1"=ZlUSm-un$WN;2[kO?).KV50W'iO + @gQ8YJTXVd1DB=+"i^cr_j$1<@D;9*^2aI=]sU;-T3#/mG'e#ji8At"_o'6O2T>L@:Hq:qf + X#5BS2iA\'4^3*:0G;McBb>^*UB2-k9_dK=kp>t`JJGI#5>P9oka[*M;;h!)V16%25CH%Mc + &%na_RVUX!;1U&MCDtd[;"F?;=Do\[E-n$gZ`=(+< + 10i8=Y.b?N&8%GQKc!F7OEFeC8;`iTZGd-5eRJgbWbhl]iZ)&j`CTb6)05+-Y89_',BOsS- + WMZRuF*(ULdA\9PL$GF36Ma;20-9od5;%8?K"COU]!>>JZ]naLIU2bugEq9S-+Y^i&haY*b + Z/`-*/itkG\cO0?*<(Jn7U&^TX_Ic=ub_2qaVPZe[qN'FDHP^Dr$Inh`eE + 1J"QrdI7(o$Nc.ajDDAss77QK2f4[hCR8Z7Ds``"AI1'q`b5$W`IqtlH43;`a + (VYnH)4*UDbff=1iDH'0b>IDp=2_Wn?>h:fJ8mfW=^[9eNO&Pq9YFK`]E=!%k#Pd_JX8L:k + r9s(B>I*-rq1u:rH5Z[2pDR%rYOJY0u2^lEULR\B4!WE!3SN-r3 + kQWH3UORJ(tT^@^=0hZGYA7SuanaAr,)3lcdu%KRQh-f\0S@CRH"[Z#O9sq=B62IJ+N[HkG + *-*#sZbB?r3/Y1\rjC))KdY1.5ppj<@D+ + RJ)rd:'+I>7`tG5[d2PJiJ`+9C.^Oi%h3A^f+K)A1*pQg3=".mc7M`-IR_VplLGJ9,f:-gC + %.3UT3Q%fK*T=%R[?iR.)l3$Nj_Z,]I,77FJ:UUY$s*:t1M"f\ + HHQOgL-aH,1aXG,!HrUb5Zi*n"&9S[-JA=`mL33@rlH?bL.3&1[cHr,)d3M/$j0OQ$\CLH! + \)7hW_:_C&]I6LAN,$E^$jWeX/m1?O6J;EIU`0#$W!c,-H!2&E9#"h@6_>@*4"5VeqFmHop + ^=2X.g6O\A/^<^#?]K2Hop"*?H3NrDr5i_VO)$#sZG+#p3Z`V=HihJ + 57mIJL<`j2XHh?91-HF2Q_917r^rjbm4h,FfS_LW'@6RR@h: + L7W;,Q?4^rCf,D>Ae&1CMOq>5q>reXQosA!Ko$Sph?UerZL`Ie9#RTHQ7Ol4ke37cM=P,Xr + HEnu)8T2t[#^6\cc5_4FbBO+F-9%glQfi^hnF.2a^Gq?nkQ`>gfhP@nUjlQp=[W#KU?T2Y! + T(GBrJ>Se7l&0KnmHZr>7)"&hc\#h7nQ>B+c!4Y5hoF]CI3qDV1,@j0e6[srci/[r[1A_Nf + pVoKh*7P/Ib*9Q@,o5Rg$R+W*BeQ@lTEP[g8JSqMu\NBOFR,Cdj\e4uVgj`;6`.P")O. + nU5fI;iq_9% + Dns"l*l>c4VeK%l':=fDV5Q4t["TB][Jm3en*jW)G6HLfi)E'+AOFE$g$i;>-Ce86bO + 1CTQS6CH#N'Hu#Z3XO9%7oS,GMjPj$5GlKe&+82#pWf>-1^(p1X+,*I_MZ?&05#!H6r7;io + W5.H`i5q?*d73kmcDS&_\<%R=6GYsh/=td*uMrl0@+p.2AV2sj-8mh1j5o(B"NJU,OX"OlN + 5/(-@g$n-*VLQ=RrRf-k3_4rVBGo71f.4++K5"I!'RcKZ>W891[J,1m[67X(?tlf#f\_GH3 + J"rXOuI_NAs21HdmuV>kWCs0[*OZ+#D%!p+XFP(=leF"fQ)S^\2cQ_>Oh"Pq"#/mbcTRdqU + tTcP6rmdAq=OI&8cQtOHnli#W$jX%sYg6R$;Fm)54TEacC)IICIOCe04W;u\ + *HYJ^raRbpb85=KVOC"V&t*X>+,euZ*A\0ckQk&eM+o6a6U^S?ZKnmH9Ch;tSZc + Pg85MFrlkeVo![1WFjH?/o6XaRg)V8Pb6CjKi\^WoW@&L("oZ*"OD+&3NfY#6+4Jc8V-HN5^AklR,Z,e;mVO]3l0)jcp&N\:PNb>:ugDYjcr4sACr1](uuT4XS%3\ + fuLWI[!W.:S;[S2)5Skt8$5jt/df3,9uuOQ:3H63)`P3CfFSc;J>fk*=e+2?kKZkEA%i]%4 + YbUr3fDq[2!E1,a2+1qW!rqM;61:YC:A]T95mHm:l#KV/,42mbJJg!8(?;Jg;ZS;hV&k_&k + LYW7/4p"IA@H-Fqj5U,S@+LIZ=2J6&bqtW8I%09Sa&=>+(*n`=X.$@4o"`NPP!OGFT3[KgS + YXCB8\m!E&E$Njcsf$4-WfJ&d%)#Ek[OkLu="]*bnPOk,qS3fe%U:5n+dfm^.eMqn7A7(jY + ",@b_#(p*@a=Yn`k>\e7TPmn+g=cQ-'B?O(^\*DD5L]Ff[Gi8J*)V%1<4m\/[E+)b0 + />O_91P'_H)TI@:Dmb2k)\['?L_\.>N$XYUAT+@SW5=+9L-j5`Nt%$UqRm0@Q#@\OJtgEbI + 5:L%+7AF6ZfXokW/;[^9^r]\/Uj*qm$nNco.\4UicK!4tnMs$rY*eGDL8.-uq@V(Xd@B=Qa + (,8c^pT[N'W$FQIm)_a#\h77-Xeu$qk`c3Xj;3UOqmFsT=_lUVbC1K=K)u5oEP8H8T + uQAaGDD.t?@o?<;T%$O2S\P7jmc^+U00)Hn'd%OcA%mH6>nGj_&LVNG?P^meo0 + 18WIU6^<2XIWq^ZF5u2]7euRJNFi4`r,%XNR:^O6.g99"CggcO=cHDJLl\s8C./#j8N>kR< + 'jNPoNLA/9`0F_-[rKGgO&6A&EJ[&h\[fQ.9?+:pEote5KhQ=LBIU:?PD*$?2pdV+`),\"M + `jRD5PK-6b88JE:,isj8&oR$Q/9[u+c>DiDQs7CRZ8lbC5XQY@W-+\p/?o5Fn7.s(d3Cqq_ + mk%3LQj%!=N9#+g=iNkr;o-S5Dc./R!%AJoE\R"Q`O[GD?qUkR<%1kiWqrH+@DNOW/t$4GL + 4d>6CP?")=?f1J0Jj(ccU]AKVs'4&]%RBdV-DaH;ssqtR\"a#5g_%Uiij[Ph+s$uZ.u=@>Y + DK0)qG3$8/fBQ@L\,Lj4iZO/SoOInK6+6Od"PI"dQ60Nf=OR0KNP7_hJ&8@gWj=na`FlTWU + oB8Iqo[9=91DeJa]Re)_"V6d4QmEcL#-E]j>UhGKLpt(*(WTd52VX3OgQ/aCb=+d=,@1):+ + u*%V6bOEqH'.o=A+Y!kad + I#):/4.i5/S4W;9'mni/=-&V5srKn*Ot/Ulu?/WC;Ui^.=7DHu5lb;-AC@nX*[b)L%$=M3U%BBm=E',r"X`+'-*hJfhZ/%IPC^!GEIaeG]K=KlcqnAJD*u[/,V1` + q5$]Tk8&pX%;C?&6U4d=Hg]7%'%2UDS%NVf]:S=BR`t9\_KVqb%B9Ip\;C6c.;T4=di^brp + dM#^gQ@hV7BilLDM8bXu+ScdF*pGU[T*\/rT./'q)\*Ahs10<8Nhq_RKjPCU,;e-b_PT/p:XM$(^h + e&[ItY])-8+WuYj]6<-QU + jbT']DTmC;A+ApX-YK7Bl%,0:lq.2X-B;OOhg3.-n.,1;,plgBM+km#ES#`0ujG)P=5Bk01 + fQOQnYE)c8P9uUS.^MYq0F?fdC;Ii?h)]`ko!.KRbJtf8]cOmW\U/-Qm8R>MM0`SiG-N[UD + qUoX*7B._4&kD_81O[UU6/>F@P+REKkV?4OF#@QQ6JS[Z;7MQlUdf_X=V:%7Wq=Iso;QbXN + g5>e3trs,o^6`^~> +Q +0 g +BT +22 0 0 22 289.473926 763.771396 Tm +/f-0-0 1 Tf +[(Start)]TJ +ET +Q q +177.602 708.002 278.457 -71.371 re W n +q +177 708.4 280 -72 re W n +[ 0.797873 0 0 0.793023 177.6 636.627923 ] concat +/DeviceRGB setcolorspace +8 dict dup begin + /ImageType 1 def + /Width 349 def + /Height 90 def + /Interpolate true def + /BitsPerComponent 8 def + /Decode [ 0 1 0 1 0 1 ] def + /DataSource currentfile /ASCII85Decode filter /FlateDecode filter def + /ImageMatrix [ 1 0 0 -1 0 90 ] def +end +image +Gb"0TGuU"%T#^@ckDgbuA(X,(+bY@PCBuXGEfl$'$R(2-(',"9X!e_WPtT(*[>Lo]["*M2;l + Q^gUM.J!?5G);)6K664I1&Ac^n&_:Ngr+5CE6f;.Y"*"K5@*>8m^=D"`h#S;^SSH)7iZXsfc<^3JMgV5dL?n_gP`=)n)oMhnHgRHY)72aoa^;6>m'_;fB#aVR1R=>*r= + ?RMAa&"1[C3.=Jl:$`<@K^#SD.X&+O`c^n"[JgjET+$XX]D_EbNR@9R$^UX'V'kLV$QLEO4 + ;-K?NRi%_1)kIujQDY%]Pnh&IHJ5YBl&2F8RE*/G4Y:7@WM@Uf4<6!q9MM4T1fnH6-.rS\% + FNYRU'c%*ku!"'PPmA4ZG\G.JgsU]/`F"UpkZobq)JlnFgl;HIe)RAoB4HaQJpr#_C'^)Au + ;A7l#k@+De^:Y,HrY]hf;_7cgGaR@4Y:5 + _T&Ic9NFs/E/q6pRdrO[?RJk\-ZIWPVXiaV.B18sq=8`0uJoX4T^CR + (V3E^<19bUQ`-Dp(RQ<+T;,HN6=hkP':!%@9Y_<$Y[-U3U/[iZ[5HcIIglns'XId(qSe@/% + j!iHBfT0k;XDEdl!WUWj\\1GL%:Vf)76L.SFL`i]$+el]Z]SBtQA,XnPkLck + *upWfk'H-V,b^4dN+e-'R/^:7@:2AZp-\%2,r],!3?&-P8I]!9Aj + =q+/Q!@YJ#/KmaJ(0Bk7>%?Np]=]";nIgpo:G($t&IPVg?dY?#7)q!3=@Hb7)YB!3DsK/2^c$p9Y"e3Fa*T3n9I__$h2X(*boGu7"m,ggmn&rnsn?o"@&5HJ + #=#[>V6df+ljS/DNHA!abahS.Z9hC+W%K,Qg^&s&ZRu!=fO-])Q1 + nh$+4Z0KLC8.`gi+u<+^k1,Nu'h/`.TS?X/d)#"aF4,#aPWfFOl-?_P9Gl00`O`>H8NGb#= + B0+-Oq"jEN"3RRg1ga>khddum?bdf-\h9L4/L8W-'Po,?&W+\dgSE'2eh:6s'"Vb'\K4>s- + lGm[lRfPZkqG[CJAm)2d*b;O:AA53nLJn=q!NcBWu%(.Y.caclggCu)Qch/TVjH2*mPN-AQ + 8OLd=NP"W.P:Ls"p!*Fi(&c>k*?#YRFiHC+)*UhA]2`C8Ol#:-Nb9`i.:^8Sm9j/<\:;3+;G5]icRCWZ>3ENJbfA7LAJ/C + FM4,s`mL+Vl2tQ8l3@qV_5PT[o`6fWoqR>1@h`O+q>cq + hA8"HsFfKsN4q"UkGNP*\JM/;t4kNuVW7f7G\SZZ';%Ac[O7L?.e]!OFIX;*SuTiI33]R"Z + -/qKYF:p\tI!ZS96m5AuA:L(XX5_MCMV]HN"KH4Vb<,6RT`LR@F&K7I+/FOZ?k@^rm_!bT8 + 8;*SuTiSHU$Qj$,NrOa;.qi*lYfi^:G(hm-GIbkXR%8.6d$^QD@Gs`!!N'Y610H]uZL)=g\ + K7I*41@"$31#G'-!bR"7W#mq9I.&ZnQj'@\Ib55'^$?eK(79aN@7/7OSfhDV(kVU06O[VQ+ + CGt`UOM&2_jN^pQj!m"@Ot\K^ark)&2V^N!bMIcJ/Eud&24J/"N2;0;h/#d+<]g>*e=oiKt + 'As6aK&VYT`/(5(CcX"p$F`p#0Brba&FtLCGs[ouU\Zba&FtLCIAhl?gQ&Qn8]q%i\tAl:W + 41=iaG:;Tf.7_hOP>qSk5tVC\7/rm%i8rNII-UV:WiK%[FprNII-UV:NfK%[FprNII-UV:E + c_V`VTrnQJY!qjHcR#h*00ahU:!qjHc/->Jf@i!:P"mRHE=Tn"'`[mK)$e.rjZ3\t#Mch`0 + (9!i^A.bcd(:.D?/5SQFag+WA:aSK6^E?#6 + 88l1aTD.!L+EE!D.4:)P6L5!%9Wi!X/'WtADnq(ktL;> + Dt)2u=-S!J0]N+KM:0ZF-es6E,mHJK;V\Z@+?25D[`Hjj/>P<%(:$qX1#BVs2ZZB,XaV%<0 + XpZ<5@Gafn2*Uifc\m08b)EFZBT-oeC)Ir:ilU[qF>gXMfJC$sYJV[V760K;)6CW_:-Bc^7 + a_hhr.K?YTHHG*M/Qu75R"[f&AjI._o5_*qWH_.Up/D-8cB8gp?KbK/NFeH: + *u-)%6:UL4uPYJg(>7qAMSSf--]4.#k4@'-BU.(PCp,NCFE?HpRd/&1O>)kC12[F(Fce^j> + ,TL`E)?D;DB^1ET'2m/piJ:>F`H4[)=+\`a'H730NXb=!T"@6cm=s`l]P7/o6ag$d;BNG`XfX'GOKEZj5,IA88%gL$ + M8B7]oQrbL]d*-71*p$\DTW8gV7@3I@!0\ba+Ff?DPdM*eB99+G>IRp&`-_q95!a.e's2+Z + c\:D?q$m.ecI5"paB-jI4\-UDAJg,HNs4`il&+'ZkR/"CRLQj&9Hq7:8j + PTpNDq)jKDJip*YaCl,?pgik@O97tm-+.eNY4aR_&@&OO8#LRF_f)&Nk-k@T_kVK=LhZp?: + 2VrSf0\R?\BN5q)BO)qS6EoE$Odj?(reBlh!$cAd-L$-dS5CE71WTgb+r#D[d(Z$CLKatg` + Nh"ErHZ1`f\aM%nX2>(jOhui@iA%I58LH]spLr)M&4/_ePC_].Hp1+9<_!PV+WN[bZ[B.@k(`A5:bXC:QVtWmjB?o_Z%O + *4B9nh">?Y&cp\ajO?D,QOTSW2*C)[VQMFW:p'ORq+u6?]/ + lP:3\gGDZfs6^F73CW&RG%2ft:"7sq;3[B%*_*^PVL^hZ:ciePs)cqA*T(Q3Zj1$M&Wk,4q + `jKSXSii_!"S1/_*W,^0>$@Ag<.Y%_Ni]K\j/h$Qa%:Nqg\0a7'RWr;J/'Ohr\!/=%_Q$hK + \ctC#Nc[Hie3+iE]skC-+12p4'7Enei_OPSCgjChU7RMRICF.gIq-rKpPqm[hu'mSXuE?%< + Y+gEoBTE`u41Gq;R>F40UiX/2-1+r\!6mI!1%@X]!5+#e^E;i)b(WG]DZH,[>+d>:TaOGE+ + RkS_.HM,jos2)>1BpVFLg$D\0+>8L0$#IWhN-uNN,Woj<,F0] + >80ETB!"7p6);L>^B+2uk`W[#sGHuk3jlIDMn5Vs`h(K^SbC\tc.SXJfBW,.AFAZY=/ki6p + Lj=oL-bA$DoBdg+No$q!;SJ]gck.Gn7US20*uGS`#mLR>JoRcT$A0rKjp%T5l.s+(ht6(=9 + ZR9\V%!>$rB3;,k?D.0lKU9/<\.I\?rh85IWe1uAm0Xq>#&ff6KkPfLl>9Tc@B'6\6rbNlK + Vbp0KPRB%$1e!&$K<:175dgJB*E$hVN&"Y$J\ZTr"U]eB-$@:4D&Ar&@%,2hEIr#M%62j+8 + W](`LU-7V@$k?rRe5Qg(ZG=&?#MJH<8\-lBV`g`O0MgqVaugPZVhCCfk5FMY%d>VIlLg<58 + )iGHI3!mChlir~> +Q +0 g +BT +22 0 0 22 295.43584 676.569568 Tm +/f-0-0 1 Tf +[(F)71(ind)]TJ +-3.973633 -1 Td +[(\\MGL@@@)]TJ +ET +Q q +243.199 600.798 147.57 -135.715 re W n +q +243 601.4 148 -137 re W n +[ 0.797682 0 0 0.798319 243.2 465.085823 ] concat +/DeviceRGB setcolorspace +8 dict dup begin + /ImageType 1 def + /Width 185 def + /Height 170 def + /Interpolate true def + /BitsPerComponent 8 def + /Decode [ 0 1 0 1 0 1 ] def + /DataSource currentfile /ASCII85Decode filter /FlateDecode filter def + /ImageMatrix [ 1 0 0 -1 0 170 ] def +end +image +Gb"0WLK>0kqZlWji0Qio%`6*"0"W[J08kVl.%mdYks\F+'EJSB:de8,9sMWo22N6`,1V8K:b + 3HIBVJA>p_l5/<:p1Xm+i[oqhcmT0[H/NPES@SGb*0-kIKJsmgK2,O[U$gAJ+rBeD/6b(lGW3]\[,nF-7)&M\2dYenoAr^@tb-`-:WbdT, + Le=ATROlUTG=crqknVpT%Bahn:8B%%fj]rjm0_q*NQE+*XQX,R!pgqi5f=?rCjc$uO2skQV + q^6Obib;=4qFgkf>D;,_Z,fQ"(.rdPG#P$3T95pt!M4Se=:mIR4poB4Ad)B%o)a^1>h/L`e + 9da,hW`I_T2l=ad;78[^]HtTT@_U`h9Viu7j^X)%blPce(DdC+QC)IM83I1Jnp2@]'SiS_^ + .l01D+u4,sZIu4Xk+tl:H3JZJqmiqYm-/"2$omBqY&nMb_bo![eZ:0fY*LoIO2ni[P*8BGh + md]\e2"B=3Vh^dXkFF9EmdiaiZdu8VO-H.PUsnG)]LI]H?+3(`&M[*5?mDtQCb^VL)Wis/5 + :b6XR9a]b"D,,(G!s+j5";o,of-kOOQ%=$T9BR#ojhg;Nar + BU;OSAmk$o'CY9.5I`O4%uZ./E?X*`2_\P^nJNCR+hI-\X)%eSi?>.QaU81d31`1-tu + UTHHCD=_d`XWu'?*/D+$c\ghI]*-^Gu0pGq'5o*ZheQFQ^5rZSGF!=!-Mlu;ZU1$\4iG'N= + $OLDNP_bO9=m=;TNq-aM=g99ZVB0'UZu0a;J\:4d'?4sOF?#Z'4qd%g2itK(T3CSu[+N98V + X*GB95T05Q8`*mQ*+P21t'Z;'5=FJ[?B#p1^Zs7Tp+3ja$lN"b_e!EST)6Ii51es@g0uhUl + <($3:s])F*gXr^=X"sGOF,7(e-kPm8,M(HQT$YmKUdnq>oa44q'"Q:#4Z>KY<4sL_eXSOBM + j&8TV1_74rW/ZDY?HqsoL11MZKu+8f%+Y4^sR+'sJYm@\W2:T:alu(YW3:TR>[T*YPS7bL;ii)l*^?GSM_]VpZfQ7*q6-6FR03+ + Zb]Gr?j.K#[X0sVl9V.iF#7C?T?379P]X>tQ_chWBe^Z;DlUXY0Lf5RlU#>(FG65mPN#mr) + 3mXK2D1V#0I*<.f$pR6`AJsP]99j&bi:lHYS;1D`/oKjnE'lK],7&4!C-C2D4[EQ)(`2aag + M+\](tG)`fXXIdLpDp1P)7aD6E7k*@Xhn3@u-`-.,:a=lG+P3K'*!*%oQi:27u7m7EmgZ68 + Y_C;!J)hm6An*q;6;FPo(iFb=&4n2bSKK;j5] + d(lRS\9o>X.*>M!^$Zkp'_[fc.2f2o]3D#W@?'Oj:nnuhG%".mW55YlHT)_Y;^ptl?(_#[2 + _!+,2&."hfc3W*hbr + qRQ\8+NPE:%a38HJ[N`i"Z6a5kc@nCBs'.!A6ckF!9Hm(L6$Q93cFe$dJp-@t%gX2lGc5l+5,dJ\Mp5=,o/DjD`De2DfiAGnIGH00f';7MN=oCd^!^Y_lAZ&Z3*-k[e@B6UY!Vq3I + E4;\\1aU"CjcIj]rM,SF@?G@SYF)74nWnYgFc)W(nK`291^`46[4AgNF>k(2*']oRB\Ef(5 + sH5,g4`h7(4CGto(#!aD!%=dDlW>7nP\.H;2`'F4d9 + *oRMu5^u'j=2$oc@+=C4ocQ*TF6nL>#=tYYI_4F'!dG7'HF.(`G/0.X3J-tO'h\^+U,id[/0%j![="_1:/H + Y)5SDd\a,bhWJ'YOC"^UPNJ"Q&RmE^J7W>8KDBJQ`NhZn/S0SBMV*EuA.f$nV_L#^[I*d#h + N.V^+:EJ#7I3?-=(r#1A) + .F:UGp8M+;En;n)?+b]R9ab#d\EL7EH#ad[3jKb/E-^V&+5e`F#n@V*;8UI)".&Q)n[V21h + D-C=\\^<;$BNhPS<2AX:Oi+rC\!(![>;D_5cbUsId)j-"EG,pq$e[_<7DSfYrQ/@nblT7O^ + ;(%P$bWVLZnqnnI>`2!!A&(`L),QIBh-WA=uMV3eQ8@g:DG=``1::E/FI%s!UOnjAM,G8gK?1GLF(3r9W^:#BRBqf8b + `Cp8pp"Mh%.*L*qE#Jd6DW91956EGgqQq!Vds4dN(ddmAfh8h3J.:rjE-S6W3H3jUm=k\P. + gomK!l])[*1l_J*4i7@bi<;VVL2`.5!fZ5/S9gbQ6uPA$)A(YT + ZJ-\l=MNA^SC%6cBfXLD.ba'Fn'72qKfg_,[tmd)K_F^>>4s-f>hI)+bmE9!QSKA + $^8_rb@F;8[$QdZK8C^&pjVBL0M`\S5%5oShB8\jNP;&RV.u[K&Q8ZT8oKJu5h6.ajr5kc\]_KgppZiUo9K+SeUobMi;^$]I+;g,m8Q-/J[$`4j:fnBd + YZlM`[)mTLn[M(iTMaMaK\o8U6_QPcA<)7\ + pq<&#.kX>6@1]L3QcEkdre]O'C9!?T`]e&qb[_:kJf3:"_3ZfL(l6*8k\HM:CcZ2,'$Fh&A + m'h),=?<:2UP%-R)a`F!@i2+e1%YQu-t?=:8qNpfaU@TGHs?\+Sio%>.[hs'$t9_q;m@d)h + @1B1moK#_fP#:>gBfCFJWikW@PF>'P$>;%*@)3`"TM1o)F:]\BNpjM@bu2CD:m4Fp8YQ'@( + aWT\I[oB>P6Y530!:2Z`M,S]#PU/#YZ#`NjW:Qel$#]Xa4,VA4a7=uo37H)@ZhgX<^;*HK^ + F[gb;+LI2":9Nqc_/mK\WitXN3[_`MRM6tom/eZEL6ED*\ssR1U4p"2S.kGO4c.PUq8!gFj + !!03o!5eDC&,(kegt010=RkolBHpAJ$Z'+q1:67*O^9Vlj*Mt`;@ + K0Z-p5UH8VTt+R_f6T8Ps)Ag$G]jF(`ON1F4hcF!AZH2+cg7WC=$joJfDncK/gZAP^cUnaI + WE_L#@0Bf9mL#rq@((3n`3$F$],3-f7E?\6fMK;SiKDjZ4QAYG + jEl#,%/?$&o'Y1/uQJR_jq!n#gV`2-d&"?\bUiJo\jq[K]'A/qmaUW^d*1@Vp:`(M%#sX@Xi + D5>d\J(\Q4J7=1d*@.:08Y9a[,A:scA>BY1>nd[QFI2K#\2mjTJ1Q0$F.sl7nRGJ`Q>?\6I + ^UZ'05LF;D?j:k?ubF(4>4QkHb783hrcZ.QMrP*8f(U>`ae`!MkHbAndJ`eli$[1Kb(Hb"j<8-o5I[8fL#EcU@;h]&S + rB4oH(6FQ!6,_`Ld(3d\aqjXCF5&%jI-c4=V(B05*E>YA<+$'/gO$C'PW8 + ,U`NZKHJ2tPdS"G%1,Tp7#U8%U-uD^n6\]o6a@K[\pRL0.#dP91,Z5/E+)aliMN>pV)e(_T + tQ8GH>kB)jEXek + h$VK%OB_[irmCYG.W^G<3:H'E8]0?&blcQ1GjCb7U,BS!:DCb;m=79Yojd.'L#Vb\t:4'VB + q`n\f1r7Pe"QS5G?-s2]J>`]qG@HVChUh4lbs$VUO'1Kc?;G3XiZuWuO3Ee3-cU0Lqm&?cH + BUVaj:0R2mj_99@hS":1r;#s-bnkl`=d;!qC>Q&AMIgif']ps;&I-:>M`XSWD9T%59Yt,Z7 + W\^$'8]Hu*)B*QMJKc>(",F)F"o7dHnFT!rhnpB)-V4',OMFuY#_F+do/3-?$#2[Xa_EUHM + ci!T=$p3n)(nKlKG`uV02gP]if'uk+j7:j^tSsR_:[@F@AZ0bF\:eXb@"c-J'o/m]8&hKX" + FFaIX*0:ASq;o8^Ce%?dO+!GT(_f,NlW=D7Rc[6/,+[K[sn.%2+`qV80rbo8TJ3o:&Z;>Bq + Ml07GbP7Ja!4QUF?XZLf;DGJoubbUL3ZRbUQk9U?$.pIE"i9#A6[iNd(_nMrkl==2('=hO& + 8``UJS%Ku3f7SCW^t&[(g#%-OjPOM!Q!!1B?s9-,-.Q.JMNuJ3]&jhCF[s?3G",YFm?gQ<( + *;-.A)!:"="dpt_;TG?(ARLWh;&S`5!4;hQds9FbXkS^cHBL_5:8ZYG0fHdQ@0_@S_@4R33 + @136>'Ra+_9UnBi[4#-_5XY'6Fho>RCU.J`%eLM]g;nQY"\e_q6&!bB5a;E6nuucl,8OF#I + (*0cXn=Wp@X/ccJjDgX'p6c5kPU^emFl1lo@^bYeY>jH$:(A6YY + m?=N-4Uf60[3dTWSTn,$qBK6^(pOYrX&lF9F8HLC*.bTuZ`(Zjkb!A(Bl.Reg9u"Hb`osJZ + c_l\k9bp"B#OXF^%57Yn^k6b5JI"&oK:0aI-LbTC;IY"i-[@pqOGp(FJ:<9\<^n3/S>/Nbp + 9N+4P7FMMf&L;[d6[Gs,h(plqPTFeXsq0E&/Bn?o6#*k8Tl(g/o`'ig%\^SN?K2feYIh-qF + O@jQkF$s7ba):O@6b$^.:MG-&5QoAf013mdI(JH'jYrXO=g"57@=dug: + H(gQ-RbHTAl?kJKrU-p@Q@geeBSI`NE\/b5J>K29Fc61I,d<&uA,^kTSEL+f3#V-q(OdaPY + &PV#!9Q`id=jj%^\Fju%GQ7O*`JYOi;h:\NV"NpOI]]]YV:9I`58=+"-nR9R + ZDX$=24^3*IFnO:DW0L"tl^';^((@!4WRGY(lH:PKu`c3r))l8.1kP2[=p=J#pWfaW%=g#P + 0P)VOO3L6JLp@>VO_OaBZp+7,r]PJbpn[,8U:KM[6/I=[EU.XS(/D.gSn*+hA`E:h5 + CbtBJu_O0rA8IK%&7i$&@;XM"3YiXl-o*#n!S//[eAP.hAI=XIk]t\:YU5:PT9`]V#^o;%@2?qZbJ]9rk?XHH5[1)h9;#O$!-Wh? + I#oo?5G/F'\/QcER51BF%[+R*;dpc*FXKD1AVM5IIbuT;s9BSBP'8&k_@i+:Q^4,J7UIUA/ + X0%(Ti"&1)p[6l9l)1)YZ=\?n3JREWKR'nVgoTX+qkd&k94Ut%GT#oXUn3EO]O'\%[YKIGB + qQUbe;&rsBd]I!I4G#5LZi9848@YB/@#12a5V7dZQYjQglmocU).OGj^C3-D6.?OruK9JK4 + @KB)A.A`n1Q`TDns?p%On$8_P+=P)Ja9+EV.>gW)0X\"jNXA(HU,bMRuTqVbJ_3Rd?bUl9d + QC9P]YEIpMCCWht:)QJk_m&CmaI!R.!U,(hs8_4NMO'CT3A[T]N&`en)YcK'H_&:=-7$ktV_CR]c + 6LU8\V)gN1DlY + ;U`Z[_j-tY85\u_V1n_k/BF6!VS;3dDmu<#ILISZMKcDT[.'BKTA722YNFon9pMP8amlMBM + @3G)hj,$<#1F4F8sQ15FJ'cD&!:J-k`pQE_+B]X-]NG=Xd90;REOs2aLWOecfc%$jR5-i/C>]"+D + $j`J$Ca0#pP)N#D%/)EM;@HCA5:>Uesp[YtLLEEh"\6ROhIYJ#>Z!k#=+fj61'9CR09dLt] + bP,dVG!bd*f@R6b_/H^G<<<&-D"AOcIPGQh3-Of'H#$Wb'<]a.9KL=:TkbN.!XGfJL?GCq@ + U4l=los^dX>%$ZJZs8VMmsnSBMeT^E8H.@8-_F1g(pZ_S&jh4F/93M^9OjSd-_Ie.V9`=Ql + QW3[:=K>L(VZ3+@=0X9_HQFuGJJ-MlL,2W].=r>G(6I#*U9QSVAZF$8<'V7Q;YW3S?-b'r![8ISgGX*XPV2h2Pqe?u$[g5(+- + 9+4D!"VMT&u6#%!U&jUO?S! + 39.E5#fl-cNB^TLlC<3)N'OCgE,<4J4d[e+/$f"[7e.\_+W$;N$X#?u4jdEmboHi_F`VJ0" + pB]Ytm*g>cVC$9CI!''Bn8\57>HChODu%&+MdS1?tMeNru83FuJT#Ypfi5eVDUcfbi*OV8D + M:;0UCqh6=Hr&<3s[5&?GJt>AKML>V2@R[]3&&7'lRM4X6(-5#slU=Bco!Li3AX,)(Ch"JF + [Y21p+>#q=^I0Ym&e27U"V7el&TWID-KS]3N_TSd`LY@+rM[$>=OhVI8pmTd-TOB3e()u:G + Hs@V_TbtH$Pq*GCM=3m)I9.M35i?djZ$,FcsBj$*r]e"`Bc'q1WguM<$\8nH8(T'f)f.m^6 + UJ"0Pn*eF2AGtjZ=?AcsBk/#B[Hk34;A8Et'q]7^)DBQCt'LTEPkiL85UGUeTdCI^3c;.#d + g9kf"S(Q=RM>HpM,PITOiqu\V`Cuc&%5i(Q,d["T_mW3%S@Yi,)a6E'dgb#p_K-g!F&.V-*MRCD#q27rdtUWM!:r< + 7DI5kd?4.fe'Y]Sen!VM`VRU:/j?_='!EKs!994ak&9b"1m>CQR3DM+n_H>H_N#S:\]i%JB;A%=icEW0Gb91P6`P[2>Q5E + :'*p4$!KgcS$dR3mL_G1;LBWnM#EDD0'k?:8F>:RLt&=89W#-7Bd87#uUG7lGk[/\i-1/tT + UmJM1*lMB5]6=#t@**P1'dS^Zn?(dL<6)*J!(O(U!)#ND@9ac_bjC`*lsXpu:8EU;kX:/a0QoE;5p^V!^()FmK + gdJ5dWU32-d[USsZ*\Yfr7>RT9/m:rB=J#/ONnGdhWD#52L9@Hs+-_a^V?g5a@" + SCZ,-QLQk;G5`hJ"@El@?I5%OM@,$"a#NrBMn2(DRlHh&lW=\a4j;**=GZmS>j*[#OR?VeL + YE"5&Jn + ']hs!:Od(jE;g%Ws*o$Z')O>!g#uGYjSPW^V(r-SMhST#a`IEJJ@*qQ4;!'/A).\"uTUAas + sCMeM'DU-D;/,,)\D-Y+&Ui$J,f8=1n8N@hdjO^[^X,$YLl?"A`jMO_a1K_Eb!);;--8NeH + .Lp;uuS;:l9>EY:hToufg%E;__ + r;!&"$Ur=&W]Q4L@o^%7BlR]$q-'7S/_HXCTi4C%;([$_HSH'FEg_j!X'C5&Sm:%gF=$=E# + Y-<@V^AuO1-#R&"`u>@plB3A0[B0jVTHJpQ2=3rJqpUO(O*qS<]*ODV'7:%U6B"4LD^$^Zl + Fr*[8ESD'NFs^RRu.SdN9J"#4%cn>hgJiqnZ;'Q\mcHBNJB3P6"P(lW%8!CG7^b$Vj*AUI! + g.+0^4rf]r^`SA7`YO>#8n$LMCd)9N[tke^cFoQU%t4ccHQkb@+8EYcXEOo + gNhF0'/?jGcah!t[g`K3W:@KsgPo$%%LcHWrfKiKbQAT(:l\$i@1*YATbG?LE).[\U0-4bF + +II=9L2eTsp>^1SO3>RkRV)j@fm]B.okpZ&o2OioM9MTE:"T.Y0Cge>6i3QY1O=G6%5HHF[mcBHK@i=ED(?/_di2E"-UcZWI@$RWeM&3# + 4S$KnpP4*9JgN@UsXU`rLbKjGBbsWQ_fttkXIOLKj/JDu7J^2I>>N8:U"p($9&QUs_[^t.. + rTX$%M>"MPNr";XXbgYYmNrjT`p+%gd#"'D/No%$m>#RNg\L;3ea[#bqcK?_>#TfNqVDW$D + n:[aRJI%BFYB3[3)arqdnqaI;3$l=*_W\1f@J]&":$_0 + D7HLSi=n_?!'LaUl(S.3i\"O0frk_K*#PNKKO=NEP\njK0@N81-d=7*^Y=:XulnX_qpMiFo$$B;fEP0[`RCKSAj'(-:?Xo[RbPFiW,i(Z]++D-Y[p=&"FS_kDm+mZ$O + Lol\g>[VUa+iVKc!bk3hf[7ATN^,+C2NF!l+!sr4rh22MrsE\](u'%>EAc/ + 83.V8Ks\L)q0GA"9V`fljp41Fc!tm + +]/Dm[`*.*^B(Aor=pfLNG:F$;I8P^3pCXqqXL*>eSp=k"J.apI3%O$5UmU'f(&$H:gNLbg + [NPnXJ.64`oWFRStU%huET"p%\(;5O[BQq!d7 + ;7uo\P4F$\mATr>W3R],Z'`nIl5SDEPPQUehfZ_,c#Bht8#>:@RTna"^BZpL/_.TEj40lpO + M_)0T,)\"Xa +Q +0 g +BT +22 0 0 22 297.143848 542.838269 Tm +/f-0-0 1 Tf +(Is it)Tj +-1.246094 -1 Td +(de)Tj +/f-0-1 1 Tf +<01>Tj +/f-0-0 1 Tf +[(ned?)]TJ +ET +Q q +36 428.798 206.23 -67.715 re W n +q +36 429.4 207 -69 re W n +[ 0.799336 0 0 0.796639 36 361.085705 ] concat +/DeviceRGB setcolorspace +8 dict dup begin + /ImageType 1 def + /Width 258 def + /Height 85 def + /Interpolate true def + /BitsPerComponent 8 def + /Decode [ 0 1 0 1 0 1 ] def + /DataSource currentfile /ASCII85Decode filter /FlateDecode filter def + /ImageMatrix [ 1 0 0 -1 0 85 ] def +end +image +Gb"/gqchP4q1/Ks_f]Ob8OK;%Q#Z/PrQ>`& + UXn6rX:Y"[uCt1;D>L.^b3ib4p:nB5aI!\QdHWpa"sLYPUhn,a[B^q`M%^dlVL*^7CXY(`a + WFp$1)&7uqPq[Pg'%T)61/k0TgU_\Iq;m]3GA>BOoBc^W't2+AN-J,UgNb4eq:m&`9ii+RE + 3g#Fqa9atC!SHArr8BC>knMbCC+@W1Wos>AL)]S\JgMcs24_hNR[H:<]Nl%n9CK@Qn;FL]l + aF2!",d)Ua:4@)@rZ\6dmTRF;o+TL!?iKqQP^#ui\3'Qo*G$EBRHL;0DfLGXablppX:8t=m + jkQE4+4$5o>QV(_o'Aq%:NuYT].$J]8&$=K&#_Rp_Bd/i\mu90$%@s0$GdubW2mZ]4sk0V` + XL1m)[.R#R@>_"@JUmDou0&*TH$kkHrUacVp)-;+bEqroW@?a,_G5`^kq?VFmG + 2g\g>Yf-Y*DGY-#[QBp[L_*PH59GpKJ"mD-TT058clLT[^j[jGHgG`uJfU;KeJXrVt + km=&H'W!W:2L*Cp`Qkm=HdY+5]f(1`P3Q\q[_rI".83QI&=Ylmb))6n`<7FkHGoUeUO]r( + ;*Ga/K0sonOTY5Q%>Ia?WZ]@M"/8'I;5hL84^,7saL%]$;?ZXj0KJnWLMg]^0Ljf^is=kIB + 1s9M8-p:fmC-@"@_RV?Xm*^A@,(IJoV1,\L=bH-t4!)qW((M]7`D]lg@75st=lmCG74^\X[ + >o@^4Ddi0KlY77L,np`S^:%Z?9)b1QP]$-;e^@+F7XQTTE?DXoiiY^!n#`lAdS3QYOO)VT" + [@cnrCZ.7F_D%Gui#u.%G&4(Efn)_?FObsbR4[(Aeb7&Jl.pW,r'(oQ*i:E/XroKK4 + fp)`f1W2*rTB]p%/E)sX>#BOqPfSB*j2[/h%M"MXN"B71nF2'WpPQCro5\A7q2C-Kp)?uZ< + 4O-rA,cHM>Bj=Ae9Bk-bKaIlamT7J_a$6K$$d/%IpU5JP0m=AQj9jS]\')J\qu'9OXe/UVP + [s5@"@_RL5(Gs\:&^:DQ_'K/TYAL`1.OP0NLa!kV^+U_1[G\5Q'2-0XMYm18-oGSpUT8onP + 1belSGRl6VKM9TM[_i'@Qh,XZ>KS;DtEa`hNFD)&+a3?qg?*Qk-Ld8IoU3h&u54GC1Cmao*X/ots4!q,1Dp;VS[k^@;"q@6b:2&tqSl%OP@Za*AN.,U])n((1jYUXGJ;[%0(^r"4E&/3^6_P1bDfgY?VEoRupTt)k/% + T"`"T_FMKjl3AFEiq`4f;b+OjKit<'Rgr2q,^aatQ6M>cHfl(/Iu(&ogrto2iP-WFb^+d;1 + 4q5uS+qNJAjWAd#J8rc<94i/Rkb0L*o)L7&6i6N9g4Uf$NC+Z.="U^Ya>aEIL!)I>cV/)Qg + ;,I$gH1\PG*BEcT7mEdCTFL0]acY/Bu5b8KCY(l94E&AV=-\&A?IjNlK_L7@UHG_Jdi1Aq8 + l']1];%%%]T^CsE$qc5Xg$qk;]V[)PTp-T[=b.+.!o8WRU\'Ign/k`)bE-V+Idt + __isKlAdZ)[.hU?sZJZ_;M;>LG>ro4?-#L\U[0*q1l=.fq_DNoT9\Gs&?m(XU8-3&+qJk-L + :B3kW'7d1^mocI7crRZ%$^jfSip0VI#1&q9eJi[6ZXl/1g4g'QOO?qi<8CraYtJ"k\=k5HY"`O + 8[*6@/mM3\,u"]p)d@drQ"ot$F'Q_Ip<$J+8\:G.j/+F]n:E.B6+61h?6nF\k[PVl'C<9#c + rPuSb*E?rPTHK@g/tbhl?h,Fj`?B2\T7X?j3@lUj%pg,d)[5$:rc?mi^FU>QI\:ORA8q6Fq + r^!hq.eh'IK&F9?Z:T19'\];1LLm[ij>mhLrPP!24DFh3>,<^=5hq?Z?"kpH7/_;0(o-!Mb + 1K65Ra)*P!m71$H?i/99o!VRU:J1JG7isK`/fRI-,XoS>`)_5T\`t`"^EW^W&7uY?$B2F'UX0F$S&'%i(f'lnW< + bCDr\9\i'ZDMknI!2EbQ&I1;@e+R6+j6eZ&INX`IU]a35,e>US0sSQ\43#$=Rs.qI8$+Xso + <15man%CY#2;E]EIpC*@EQJ!7`2+3D\"VT/t@Id@rPTHJTV#N&S)Vh_l9N0A3^/@*n\UGo/ + Shkds#@3qFE6%'UJ3_0ncRL#jG>I+d$S>@]$]kKb<@eMKUo$nYVjX1B0#T!V5#3m0s<6iMZlSH>>DtoRs4DB + ?j('R!7Vm'M_<[QisGETi_jAUNiYXl>g@R785U`W@Z#KpT$DXGlWUcpnP[Ib + iK+\LTmo1#H<9WIPlS\o=X$=bbS?;U/s6@f7a0#?ag+<<,Gh-ujqCDK&D\Po'oq+J$Z.TGB + ed'5ViB%*kmV:3.\%?N<5XBGo#OnR`[GBgrSu7NnA?g8ZW><%p'igu$jjZ=hJr=%>agMN=< + ^T=n6dSQUQ[Z:ISLVdT5:ErMHEJIF/AnR)_H[\+h7+/=lZ4!iIi/FY&ob + U4aR?gaRV2T,_i_e/ne + nT[q$34t;-b1Y&]V,R3*@1l=QU6nO[%#;MQ[r*4cH + Q8)#1).eU(%#,o&2,Y14OSn_jM06D^HBl9NJJ)A9F.jI(RSU1GS&6p;n8dW-ceHruj#VM.^ + 3T=)^^=K?^PU=di'C/">-/;*n6fBq=B#AM\riJAZ+J7coK8I]WCf?37UR8b0LnPW#VD6nek + %%oL*20#81LDN&hM$oj*q'L"DoA^$1KJTl)#Q,D5e,@5rCNb:\oCX#^mC\*R+\3A-=JQB\& + hri9ng#RMshIc>g4[lY9qrAjc*mTqFoeN+M"p0p-OU_-C_'%tc#<,aFm0K&fF?@4B)".He- + IY-ZY`Ha@'59]r&bJX7=*F7t?SbDe0H5:?/%n@&bOa1d$$]!&:R[2'i#]@`NgCM@(_!)\WK::%a)!.j\rhMTa>5bc;a7L_c=&:Y71#b9-_@9=I + F@";4?Q=43qSIV]R9O\X/cnfOI3.cBYt],VEnd(C$WV$a( + d5_EZ`2&^l9XK/Z@IJ'#g[7@:?.b)(S(DIR"cHcA6'8+[RaK]"SH+OCj9%CPSWlgEPkTPIG + !"onr6>-^>Bc$W,+cMGAU)'=bIm3A`QOit>+5ZDQ\o@h)R2NRt3r88fUK8qn%nVTT*uc/g> + (k`UJ\M9]9O7G~> +Q +0 g +BT +22 0 0 22 88.727771 400.323962 Tm +/f-0-0 1 Tf +[(Compar)19(e)]TJ +-1.365234 -1 Td +[(script )-3(vs. code)]TJ +ET +Q q +365.602 426.4 250.668 -62.098 re W n +q +365 426.4 252 -63 re W n +[ 0.798306 0 0 0.796111 365.6 364.303344 ] concat +/DeviceRGB setcolorspace +8 dict dup begin + /ImageType 1 def + /Width 314 def + /Height 78 def + /Interpolate true def + /BitsPerComponent 8 def + /Decode [ 0 1 0 1 0 1 ] def + /DataSource currentfile /ASCII85Decode filter /FlateDecode filter def + /ImageMatrix [ 1 0 0 -1 0 78 ] def +end +image +Gb"0Tq,>adrkS&RTSjQ+_%f9B8IR/6%r.4S4-Bgkl/.hiMoBL + P3T7B,kNWoDF.eT(C?:)A#Oj#C>"]%tuP$#=2Jqq]rVD9XH#jSbLepldN0351u0^#'4us8D + QLO$A*nrV,2tpYG&sk`nf-%X3$%2K#^)^UBrVCgN3-0JD`46i&kK^!Vor:S27GWq>Re,X\? + DIWKgX')('Y-2qNpWoT\WPWXR>=cdJSjlI6m^/M\GY\N"Z`k!c!g\21b]Qio%]dHUI]Qiu+ + ji`u=R9pQ]Y=`qPC?k?La'[Z6FnkI"RLO%*MAIqfb:>FdGI%=`@Ae]JT$@#UP`*@$KfmhDX'E+kk<*=`5Dd^D1pD"P:G:d.+ + NtI>0>$TRI]oL^UI`pAOXN!F_t?`3uU$Ghc\FY<84gep2JL3m\]@gB"tcLchX0drCo._nit + f6?"#VqbiK1[kjdX&pI^blgt.F8S_:5J%MjI4g?HqU5JQscf-o1DUASJAiPm`*G19L!eo*R + Q]5E="Dph*.8%sHAWPYpl@S.-:AHbZ!$WFnM<2%uB!LZdcH&7F& + 3-gNF3^tIeU,^7@6?MQVIcSkh5Q'L)e#-51&'ra_cG4)=p9.d!I^E"eZ*Ih?h8YcJeOFCtO + Zp)^4be0^0#"mp + ZtSeQ$B[SN8J`2J2(DMEYg%Z/31Kg")IhdEKp-Br\.=[5:)m7eTF@g;2'?f8d:'kjS;q:tO + 0Sh=nO*%Q@As2QRg5r9p32Z1drC&:MQaZV7jS*rt(Pd1k5LVJIEdI*D`fk1sD$;XU1M&/+6*4:@HZOe$[d5-\EM3>U]@Uj)ghi-2U + l&qfrp(2B/##$-Ec7N$1R:NAkB\P$$n7+WU,g36`Fupp%@p#V=R@g?dkUX7Ku'$)913#STg + >0ONEr'GFQ(U75G%1mYKt)/qZ'Cl*WuRueH1=<$?`?j_8RGFu`ZO2/[D\5N]89AoXsf8< + /al>lI+nh)@s?:H9ZbM_A8(g7.,QU?*Pl^5LIP%'I6!kCtc@e", + E8D`IAiZB&R>tjo!OE&eAKB`F92T.Xj:!btaD4_eYkJJoD*L`[B>%d5keO\Bk + >NT3n\r+Jt]=2J_fH;X?DinT@#H"$&K-)4Vd\RQ7>ZXLGrhFoo&Jo_hI:4]H[E$HBE:g`MS + felF/.+g^8Hl<5oA[#A/X]]ne^fqJsb)s7_bb80SV:\bLV3-_f<6j*-0sm[=]GXIU6a$]K/ + 6hdn3fII,kGHQ(TjY("_AB2uYD)ppYY>=;-'*t;T,W$?Qr6>g/_)=[cu?,>^E>W\>UurlqcST-K58H6@_W + ')e_jVNXk:rD]GFg'Xqgh:KU6-UaBiXT#-QM%&`/?2^pRW0MsrcD%B^GP6%jGjRrGKs9d.. + T>D?q4C^8oZfJkskp%0G5/*RWe!\)@CMWXiD#1n_EJFE\4j@1%m9u45H"<`*e8Rs)`)Qjg] + 5/N)I6tSL![:7]Wq!aKg5Bi!#`N4pci?sulT.6uYZOXj-T1&ZqVmodO$4%`&')<'/i``TGM + X]RPOe;"Tf8AN^$24fh`O00b;mLM&CW17j,YAg'MW%<%d4)45_juse;d:i-;^G)7\5j#^8s + W4lXVgJj/=kd(1#+47;T6%Q\5Q:IMJL1MVe#&ASndZ=_R8AumC?/#.u$,39;f:#%&Z^`:3! + BQmZ^,=P-*=-:_BiFGNt!TP-`^ZV#],)4*A&.ENK_/nB!$o_B[%-3[V]kT3MZJ'A)N:#bQK + b+ZrG'X(*?$o#ZUT,]TprMt#[Q(W(O;[5oYO-_FWL0@:AHD:[`NEMrNf.B_5#&3fpN6?mng + =DPYXf1Pu%P7-@*r?epi,=elT8k*SGk:;`5G3bjJ"FUL<Y]k9Q=*3&`_@KI)K)@5e + TFNbBYoN]e%9=D*,LnVC<4tM'>hGm.*Y + \/_i4'->=OueLbD*^u!3W/-Y5sVDWM.-L7MDqUEuI$3JkomL`CHL%Fs=:MQVgT.]la%.Z90Gh+1HcK*:H + TemVOiaGUaZmS,JCAL!s*>6YnfW>0+p3P(#cYf8Y9K5Z;dl;"HJP%B(/%fTW2etFM8u>ogO + 6'28X`M2?8OV1QolrQ)b"2p!V?Q`3"5Q1tAKKBCrcaJ1b%7e#(d8@Z*MLgm%f7HD,MF'iUG + 0ol5)GYun=B.7T.d=5_#'ijRfrmsr;'rIOb08Ad\F=:&/JQinBaQQ)B6-t;JTXsnV)8Ar]] + rkM-kkQ7lAoA+EfCG@lCC@6eQN%RflP;L6WtX]`^M)K[#(P"UW1&H\5qB3WR_9^fh&G&H8M + ^s(*8OJ<$rZQC/QQT#bm\oqb3,./k8eSNBJq4]P[m=?=K.k3!K$ + B>jAseU2[OYU[4eh,h-aJUE% + %WK_A@p!4.0<<.3=KYW3iTHlD/=%0n^(==MeA!<`LhZK=kh'h46RU\,qO + 3P/)c*(i7JkB![A$\#A7FQXi';G8)J,"pmG['f2G<+"$1OY1]P!"&Q>A>6<@a`;2`HQKZXu + `_beC`YD4TIapn5$l(IPO$2mE1^fk2la*r"uu3j$hq:^!3B7n + `Xlt4e74QAu!tDq,$..+,8H%bE/K57l)glFQV'0T&V_e9lomuU^$\mU/YoC2P;#Tkih6S@^ + UZe1Vlg[9T7c:dFks@AU/9u:7WLD#B1MH?T4Yh5?27ItC*24VR2kG8E;icD54R1[r-g(;1$#+4TY2_1A3GY5N3S9hc)< + cAt.W5-D**0`*aal8)r-\ZZHBJG.UViSb"P*fQ/@UBC"(Z;po7 +Q +0 g +BT +22 0 0 22 392.355518 400.130603 Tm +/f-0-0 1 Tf +[(R)44(ewrite/r)18(ecompile)]TJ +3.138672 -1 Td +[(script)]TJ +ET +Q q +352 154.4 278.457 -71.371 re W n +q +352 154.4 279 -72 re W n +[ 0.797873 0 0 0.793023 352 83.027923 ] concat +/DeviceRGB setcolorspace +8 dict dup begin + /ImageType 1 def + /Width 349 def + /Height 90 def + /Interpolate true def + /BitsPerComponent 8 def + /Decode [ 0 1 0 1 0 1 ] def + /DataSource currentfile /ASCII85Decode filter /FlateDecode filter def + /ImageMatrix [ 1 0 0 -1 0 90 ] def +end +image +Gb"0WHVi1(^;ob.cYf(B'(-or,_Q.(KFgJ+J:Jnu,_U+KJKc9^+H)RYFg1OF[8[k$+sJL='Y + Js@B9`fP?E1.#Lg,r#0Qo"&AJhMXD67q$Nq5D08D!C5FUq[G(Wc>00E6,&'0gE--TD4D>Bl + `&HhR*rdmoH?rU@]8[r1$5HM)#S=4b9SQJK1=lftoqhHXAa;-$h&=[RXTgpjJfN'^`-DFE! + S/M0Dd='\j->?st#;cQh(=]np,Zald'r^^g?GB`ehCY*I]^4#bDh8bQu%hB27)8;(f^RaP5 + '*\[H^]!l\[\H@7r'+KW;;qF;(X/;4SsD2j0fE@9d41Ed)Pon9B\T>fmb4'6.+\ + h1dlT9=Y*!sKFq1$]89V7Z8]m*l"W[/ag>Pd=Tjbl(!/1N!t'Wj%faJ9LnoPZl79CY('G0# + J?0:nMq@Yb<`(NMNVZ"RmbDV^2H/UR4u\T27pBS_nhZq%-s@*A[t0r,-:ekf7BS3&fR6!hj + b`?1DI>.1tPD124mT3%=8o(C<]lU + ]^h8kYd7g3=K!l[2&>I8XW1\kPc^l:/ui3lSBQbILeMMq`Hj;?ih]'U_1>9A\jGDCQSWEtN + ihC):/+s%7IeSiD.5n@ioHc3&V8Dq5o + KO'3Ra]1;UkNaDo\BId:ORU8VLK:S#A_.b=RM9/_PmJ$sgsOg.?!n79lcuFJ)EOTN@B%2bG + 6ZHLkG+J+ON_B$\b=C2+m#M2)T`OrHQlAU&Z'fMu:NSt)=9Sjo/F]jZ>X7MQj\=HoA*GXqR + dL8qC>>>O^i4l

6L/gS,!otm9WK?.+X810W`d#S6+S4#:aG)-,TN,#l0N6`+,U'gOsLJt + 3_oDCpJZNK(`ja4GOOBIQS+Q*q]mT*DqUkq>KT-&<^gU;E1B50VuY$@P2\MPUQ;.@J6f\i1F_$ + M:E.=PMNa4\ehM=!jo3nhS%_].oVDd:%P%La%`_=S1m_83rdVqMLdkBaF:`G:@fO.2jP&fn + &,5M'*5h<@:&DOgOg^@M5\1UbT!;E6>-.Tor=,-+;!eY5".2)T?iX%AGJkGhIVS#6Eh,Y9o + XI94D_/;ir>K?qJ`H?NS$O]ndI/X3S>I%A0#MuYfJK]C-p[,Ee)WCcX)bt\08I2% + .C@/@NuA>,]*RoU9g`H?tCoiEYko+E8-!o3?5fUX+\rSQN&GCZ<7bE$0%iRkb,p?msG+3*0 + afGbfW"(U\9^ZE5hQZb@&Cp5=&IfdAEP*7P3l@b1<%P?&`cHFb(j(b]W;)U>`h7ijDUIUBD + ao],gO?`^+c0KLp>;XK!+id_'jJ>fM-AVIF9:1XT3GnSS!4MuXL7\rAk<_-l)nsCIY$bVn0XqpZc[dDFZl% + _'!h;f3p*;VOroo>/oW.ZgoGcKmE5VbRorq@")^D"0TQc,lCP#qg'IQi!N#MMF6-NdD>\IZ + &2)XLXPD/3sBn3*S9V>HrW)&qu>F(5U?H"uf1D!_*_NB5u'aM?Nd&MgY%CBp/PR]apZOSQR + n'9#l3$&/,U1'B$b!P(IJGZmOp13Vi'e`e:;@=Is\T[u?G+PinAZ2u1U;VGbTFI/YG`KoHO + +\'_K7oL;B5LQ(3\%*d2(AMU?O%a + Pkq8Fs"4nF@<1NR2YXf--5kkN,=bRV`hW]_,`GSq9t=j'U)t5YVmX:G\Sl%ZMG@8.[Bli%" + n7*cJcQ6\lXf`YlthKbb0<^pXMN,DGrfbNZlI%DP0Eed3?abruM,@GV2C1I$OuXlj'9O[/; + )(0^?L9F%IcRW(7fXsCg5n`)jo&Yd_*n]!>+`PPJ(ll]Gm_$>Ej1PE.srk+?_P_F]#G)`)C + c'3pJ1hbE,gW9&=S.eRj\2GE#`$7[`DrT_R*1Vk>j'&CBJ9OQ+(,"n2ZjsEm5sWNTlGt@0Qj!m"69QPZ0Yo;J&.j./"O$oO!MQ*ORXePV+NEY + 'o4(^+BS?53Ue!X8[.TRS$dbQ7tL=d7;:!OI;B5Sdi$6,5$Z&C?+)\j=+_?kCZfp1?V+/79 + %9K_0VC0N#-;)!XOU(+=[u&c,5:^Bp82$j)kOhF\>5$Q'"'0tbIJ?ktF%BY8]X6,5$Z&CC2 + 07R=g@?kC\01olS$f?p@&73N:H + A#ToGl]HM$YNq.5@G53JBSSdgUGBX*7nX8O?'%_op>p,!\tj^miA`b=[;,%ntfh30FPsL:q + gqn!bMJ$(!6cA=hlR2o0N2Z0aj?PA3MC`2.clqJBS8[F2fb=(6J?bI)qZYbQ9OAPYW.&J6> + /"KC\PA(.OpMXbiDK1q"g)/S5$iJBS8[K>fBL(6J?bI&`P;bQ9OAP`HNbJ6>-LL%9q,(,-- + ;Hr.OObeb<1_4U%D=[6mIjf>0sAc\Ug.,Uef^apVXK0d:(+S5`X2e[q"$cldS^-8lW=[3aY + o%f_EELR-fA/St[]f+"L2_Idg/EDSjX7cCkVC_(,KbcfkeO!=gHl3/ra8]dY + )KYZtl=7%GOGiV!rs!Ek8JU__4iFK.Nssr4$.\=?i-73GXhIpZ2fJW(_laBs:eHc-c$I)!D + gI8t:lno5Vc6+H&ScHDB)7DPRT:1si+Sr@4`UK9amb.1ffVo<-[6njfu>a]u.`4]s+P[u1m + joQ%ZHjH:g!D,Bgb;FRf@!\-%2>n+E1E%i2ja1t9Kn^p,'d"O#BVZsg@&d35M32VF2'f8J!CH#MpN(m=R1'rCRE + p@o$HSJ*)u-6ZcA)aMR[=u7\!OC665GPjDoH;9;j641S"'9OqoCH?behi,:[d)Le(/[fDg& + !"hj*@u'=.$(h!$RP6fi0W/n$AoZdqNbC=KmC"7K&!^F`T-.`K"U7>MKn,r->n*&=/B#%!: + D7h4M=+5@82;seETB/>4dS6>2V)ACd`)A3ONl$c?(W: + h3U;>RCtYQYGLA@*>saG,&3``M+YO(3XnGP(0IQ0WE3HW=2#jpg`d;RuMQ58b)=5-Q81Wj5 + iW%EMAXPaB4C?*^_N`2[CGGSK_A)S0;BS)6j`>UW+Rs+nJ9f3#d5caWVgjcQMBR;\OD92Jt + ER4;W=&;HZq)rn!a5LCYJ)fED!4ViL`Sr>cn+8Z=$?8mH%1Y&nGT4'QVM:#ob8@FF4Q=r<# + 1c8U2(;$))b\NgG6(,?jbT1H\E(nW-be&\VDN`M`HefJpK(@;X8%-o%@W3ELVg`ZIiW;L&^ + Go"IQL=GHgDf9\q6[ing3Q\MlXdHOt>e<4H3n]BqCjfGC.>JN!7[NZ3K=Q.2Tf3NR\BtE6l + "!UWVN$@`22C],(Rg=6j1PGd=8%UF`k#@&;1[F?`/A1Lf,=.Ba9s5(#aGUMfM"3@g7;ZsEN + nHV^F+!/,(qKd?R)!mMh)Fc*AfMniQ.&#TX^"?A6`YS?ETr_"##hl/ + GtTrG#"mIH=9V^=n`jqrHKq#U";Vc6fpa*7&E?V7:o!.V,GC + `OqYsmaQU_;"pP9*s']p<@T##u/rk + :RLcl3oDq"5f:,3'j\,=?g,89ha@pg::LqLA~> +Q +0 g +BT +22 0 0 22 442.893213 123.332434 Tm +/f-0-0 1 Tf +[(Unde)]TJ +/f-0-1 1 Tf +[<01>]TJ +/f-0-0 1 Tf +[(n)-3(e)]TJ +-2.75 -1 Td +[(\\MGL@@@)]TJ +ET +Q q +0 154.4 278.457 -71.371 re W n +q +0 154.4 279 -72 re W n +[ 0.797873 0 0 0.793023 0 83.027923 ] concat +/DeviceRGB setcolorspace +8 dict dup begin + /ImageType 1 def + /Width 349 def + /Height 90 def + /Interpolate true def + /BitsPerComponent 8 def + /Decode [ 0 1 0 1 0 1 ] def + /DataSource currentfile /ASCII85Decode filter /FlateDecode filter def + /ImageMatrix [ 1 0 0 -1 0 90 ] def +end +image +Gb"0VHVfoM^;ob.c^l11+iFAk&OHbb&?[/Z&-NV:84!B6J06BE,(fR#U/gNf=qlm8&J,YA'j + S]ce4R-+Gf*1NX]g&ka.phO/E=!XeRQ34O39N?rIqVLmV\qs7A#A)IHL4;NtX`rJ%snI0F# + k0B@!/5IJVcDhgP+@2n*\\\pX<9?XLEdB6388rMND]\pF$aIt.L3HhYVRL51Q+%*)i%A+TWNKKFDG + >e>0]ld2>[R[WtO/R(&M::f&H?QQY^nnBfY_Ode2_FX==fK^Z`_CPcqK2LQ% + $_BjO*6G"S-,/.2'6,oa7-<\A=J]t:JOcWUP=*iZ;o,n&dF8/'(HTq\9/<^H0OU;FC*/?W* + g@WTMWm8`Iqel9$,DJ6/%^U:dbGC@H%-A9_RBWZcF%&_Y8I57W>ea(>Y2Qp>[O,N/)S3uDD + U;E?b<_WHrbuIRQ;uO7[9YWS + $!3mR1_S7gTW(RBmuA1.eBMVk[SM-*rW1gN'phu8_6gQp/L]Yo9^YJ0ku%m+rF:RdYbe<;6/D-3EoP\? + X$[VF+3c>?QO>&&D-D`RX6`npEdEsK,d(D&p.AmGk6%iGtId[lnOQ5+#s'mtM"f9+/&k2m1?RC%>/EqjTJbDeo:3K9i"_ + m=.<@nBf1\/W6q#k,3-#0YM@AHK2N`:m*`Qe^'Y@lAAMI^Zsh.NO-jpoCZm>[.!'h=(^\4V + Ss7=@PZu.g(81VL_IRJ'=oq^fT'-XFDGsXoe4'*#6kOA@/U,ESND%AHB'R`4Pu@K?2hGrfk + ,ASR/Gn9Wj;r!DkHB@ErFLq^"!@Rj_ZN(YKKnqV(8"3LG`XuD*pP?R\dB::")JWbLnX6Zlr + @FRhf7Cnp`#ap:FGa_?eQ=!&q=;U^.Q2.:rg1](lWaDN8XgqTDpA>2%_Xk5P>V'`LXTr4:t + !1,Lh0i5"4IhbG!ZS7cH$@tT0PAktXrGO+p3Hg[Cf!71W`huUVl9&:+$Hu/!aJtk1>=(KgX + .d!c7RJn1cKGEe?j=b&dq31T;lt)cYr4K,VcM_tUhPK`-"`"nQoVYn6*UW*j8KM,L_j$5cV + =a`JV6eEDZX`*FF`.r[Hc>ok5PA7NugHY.LY>:6F(Rj`g=rpp%nG + 3El$-OI15**PXo/%pN\R;]d#`Ci%i*Wn@'Xh>6`.1^o:5q/VWemE:K4(:gtZpc`n)FMUAVJ + [MVaR_iZ/,."ok--OW7f1VC0]78"s8dKVP`(c(mW>$`=V1$)BG1nk@Xs>hMr0hcW@rT&&SA5JYT'G2\ch"^dh>^fMq(+#!EXGM) + 9m7?MDrVE\mq0Vnda;lnUkl)Vtn5RH&]<=n6I#0NZ)IPH^9F?#!"V<_-=)TSX^8tD'e[[$+-.p/HInSE't5Wol.bR-c_8h"%#sJQ3\QY_Efc + \`^<`?X9c@$9D3@o:SgOFYN.!#fO5iH!Ue5G/q_BP]"3JW=jTYfr.Q\EOCrTeO3sRuUuZAb + &G>2,To&sr*HigH!?HQh\#eqt$-nss_K^#`#pJU,-<]=nb-54\>Gf4$OPs*j\P/W!SZ#X:c + q2pL*g79^Q8b.m8BWPtK#QkCDhHiI8B%X[M_E<`+BK`=RqXn_Hn]S3+@5cJ)>]NT1OArJN" + B9"1gA,LD1Ko"fG4j16=?Cd02(#t':5X#H7:q=p/sqCoM1R]'h8PpN8i.k!hauf$O=r'AVA + MW:&$7S/uQQd]"4&V&A=I=L54b'0=B + WAEbd]?;@oS%cVrbb),;-E9+O*oiOr&i,elB-\eVQ%5sQ)!\^c.::^ark) + d):)bf`JL15sXXl++f#G^`Xcl`BOP-Z[b>,'A:.O!4.2A5SM^%"9GiZ5sQ+.F+]!G^`&l&A + !B9p/79%97.DU5KYOa`*a>lHK?P^4_=`$JEVXV]jhg3$]$tp?TMd"Z[h7l + nr7,p0FN\#-snoF!OI=?KCW;X(,-,P4t'bpAc]5gk_&FX@hpa+Ld!4o0kLHmJEVXVrF-Ok/ + dpqe:Wrm7!9MDC/795)I8IX\bQ;AWd0JcK`@PC4&5>tb;To2S!RV/6o>E1f((bmj5"s0%Ac + ^9ajccJBbQ:+3P`Lqj0FJ.`5!uot/>.iYnc@/PAcYV"PY[@c0FMQgTmUtSLKQkU#N^"G0/* + cI,+sl!W.uBJYf;i[b;5rRj"1X-.UK5`Htd0mC`^^8 + 4qeo.KPgnaNg/L#MBrbRp@KZ+Yt(7%ed0=hd%Q)(P(aHL+R@462X84,Wc=,Sp^jX)0JC,3C + QXdh.7&&>7h/O2BM4+=,OF%!d7!19\OuL_iOmjl#@oX3+'nLgS/Z1Z#sB9U_7g%cLkaG'cU + qd314AG0U>h:dK[VddnPKXmJ/RN'1+L8"1:K@LDaT-?Ge+TT7mTin2!^el*]g^u;'Hu9=H3 + id&#YL`32oEO&.&Cu-ZnUG,6;t%?rI1Z$iJm+l1&kf8r]cGa\.`"_`XHAKe*OsTr(s.$ulk + g=%9!hHbA,s_1t/uR.L27iVjP[r^)*:*X:pS/X7QqWHKj59SC\ZbFJ]oG9?%qld.A,:=pEl + eIh-c]`IH9%Ia1\I)*%KGEe?'YnqdFE*sR(3]+^2!JL=Xph-;-d%btlg9l#n%*&8T + M[AROa%#<&>Y4OB$5+cDCpEb_Ij+PBDSl*X2#oNbK7kZfJ+kPS + LcA;f0Q'DN(eC6.BKZFe + jo,dNll^I86S2&ON6\-:XtWPWKFD_rESq/]_N.%EY!IX::O= + L/D#\9BZ(1M;'M3,WtCKiO:a(7bTh`aZQeF-$(65^#9PkA_qCX-YZL\Eb/tKk5(/%\9hg@6 + <>MZIGkC4Ibo8TFS"!@$As!IR_fYD,0R[5s8/W+(B!dA^+CU\6CiZGp$?hu6i8e&1&43/3+ + i>Jp8Ioo#q6A$b+\'[$k6039mn&N`[KGF':?:Q5$p>NpC4/@53-h%%3T5+GZX)0I@/Fd:1;f,u2<$QOAJn$R*D2o8+'c-Ar`K!JATgb-m + MD3d<^=o,,7$1@7I-AW%=hO;l-R!0pnBr0RY.M]m5SFn93l>>+Lf4E?VDZ0XH1Frns/mcEF + VF*%!60nP,'&AF>p`);Fo@33]"TbeG1n=@XbaIo=K#L?!86KW4A(_0g5)aRBjr1'k>k!nZ6 + J_D']:Wl#+1ZXhBMifb_"p`6Q*!+OFSS9aIAEUdT6fL_\Agc\#pfTi^VNH6HfYA3ONlA4gB/A6*5G)O3'6/VVE.N/gSMBP>K`cP>Z*"o(Y,mbbd/oB+ + T.Z:l\pMp.';MbIq_9+..,)',+d)'Bs + &%mPKDA[$X05`Q9U!s;W->j4CmVRu`ha%&>[54W,`B.$%0=!CSK%''1Q)&G:VOJ.fIOjR># + %^]u&os)4GknU2Kj2[5&X-/'sbKeJUF(]0"E*rYho[<.9IK,C3O`?M?OeM_u8/U).r#MrbO + M(~> +Q +0 g +BT +22 0 0 22 104.449866 123.332434 Tm +/f-0-0 1 Tf +(De)Tj +/f-0-1 1 Tf +<01>Tj +/f-0-0 1 Tf +[(ne)]TJ +-3.366211 -1 Td +[(\\MGL@@@)]TJ +ET +Q q +268.801 38.4 96 -38.398 re W n +q +268 38.4 97 -39 re W n +[ 0.793388 0 0 0.799999 268.8 0.0000473848 ] concat +/DeviceRGB setcolorspace +8 dict dup begin + /ImageType 1 def + /Width 121 def + /Height 48 def + /Interpolate true def + /BitsPerComponent 8 def + /Decode [ 0 1 0 1 0 1 ] def + /DataSource currentfile /ASCII85Decode filter /FlateDecode filter def + /ImageMatrix [ 1 0 0 -1 0 48 ] def +end +image +Gb"/kM-!XM[`AE!(7?q5&2KH&O?b/45_(O<&-7nbN5-)pMMN$9d8E5\MJ*a0%`fb]'GOE&W! + M,BeQU#I3k[^aT@`7F45F4)gpVFAI<%$sYFIeK:71J3PqX-P;=?*eWID0]SmJ3bL2\[-BEL/u7bEH__ + PEXad*UOjHQbn!bC,LiGi5?XMkI"L!]+*Wp8!$*]kj3Wgpln2dA(OtS'&m2EmrJR( + ?O)4Q`R9'XY-(4[0,=@ + E9V3j^A;@$n^,h1=Cm+o)0_O33hDVZLNs$kolkHDVrlIrX]!sA"nXK7qUSPbW<[:8[C`nH< + YF`kl#k9^CKV?Uh9?C?)3A_iKWF[nN_:3LP<[sQT + ]4uJIoFP:sLXBs\*^d_.3bfJW9oMaPe].A6N(UosK6Nh_mk&\tZ^`7mrT;AHC>HDie>^4<^ + 3pr7s7!o:^R@(&q=Doss6.=Rmd@6XW[2^;)6YWZ]6a;$Q;ofsf!!;T$_9LlCB'SW_qWb7lI + g9i^Z2N842*]%HYgUc?0,4KZ_tHu&R(MB>a&nfX%^lAR'kHN^/\*[ITNR,lc3]SESBt4?>* + !l2-&-'nE6M_YL7)aEJ.e=LrV%)Wd0eNAZ=W?[/D/EWaE$j6nZpT + +2f2_W1c0ICk0;dM)iqj`7aAV-gIk-GZI>^QPq?*Fp\M=@Fh,tq(Kut,>1XhM^>Yj#m<=W[ + \UUpZCeN)= + d1UB'\-Q()D6pi/rf=j'=*$e5ZrH5]2LS-h<^3mJtZ[M8sCeICKMXlo^p!p0[=6(Ytm;H9_f,$ + dQi^D[h*H.P,\E(!a3k0G@i4E?9:++oaDp\CX[F_>D9%Po>8ZKZ&o)i61Bj?f8bW#dHXHu? + @KLR7@fNYH]Z6;.O1*ZQ0(l1Xne$/^\s?leV%hHj$?SN&X8\pWJfL)&eRRDg'+6g\[H + hmN90O6udS:XdRkHMH_3^d!=`YlDer'(!kg?(cGOBkUmC2,O9hI89FTVaCQRnPC%.M)\7aCU;`9/Me*,\u)IUChgBDPE;'j$ + -1o6iVj8nPSl&Y\,#jZGbOQ92uMl9^s]2gP#W`m^h]IIY8m#]Mo5nNBt]:RsIB[JgOIbsXiH$KYhn%fY4jMW)k*Q?"n>.Jb*ntjuW=Q2YET.fVJCWoTG'gP86XpOs9IgWtt`5(E("0G;)/3/6+!V;2aj) + ks#gn@D'&dk&A-"?XC)&N)gEo+<`'9RDI4.m#Nj(&QH!2o\g5jT!nGT=oa6`3PO=V,38GOY + eZeDL6G"YX`u;kj4JN#Of>1LN5lTRH0>+fEe,J':FjUM$LE0ghr.*H:CPr?]F6gtio0JD4,QX'qnD]#3KtkC`B$Z + r+:er%1C:$c'\EP9qFdgFQtUp_6+JA_Q2BQoQa,n#d[lC']tm%6o(!bhA=4rDcIR^H+*ncO + po$@!]=ObGbp3]g(*Kn0.^N%h)t\.G\WR2Vtcto:MV\NA_!!+_-f(ZR5C8"t9$&Ei]$W0I;!+oK+.6]&Lm!#=5VkK&BU,Rl),NgA$'5<#$c:D6Um"#R<`Wl8Kj + 1)`#1\b,Xbc-*MN=AH-;\o;S-DJ[Bn'l0D5CMTFChTCHMg]2aY@='gc=?URO9q!Z=%pL26# + =FI\$5M_Z#Rr6Tj\1fbrS/e>2iKTb02 + uXJ,d2DGALb6rdo2#:,fjJG@i,?$XB3rr"\0/EK\'n-" + f*fV)U7gNBI=Q9pgW`rWSh.?\>8ld^"7*\sg%u\*7S1Vc)*C1i$7'5KJA1gXF*%I]NBPr85odA@pDqhQD4u, + gIE!Z#tKR*/6j@g3Z5dCMB,@7#a-Yb6Zq$F")pI!FngUAQN`pd[8INGYc$?!?Y"0W!C0(pT + K@8S.(-b^.R0a)$Lnf\%Mf(o[SK"p>QqKdI":/Ag6W0afB4l&eP-L*^n4_js\$FR*U12Met + cHmA=EMP./(nk7H--D"cU<]#JV8"j!=X9J"lq%]Rh.rE5K?nSfMjT&&DO?AoIR-Q23/%APC1!:tR:Q + a,21WTLmr![cto785%F@>6aTF!COb:fsKJ`QIZ?U^3k^Jf)]VUf8EpMN[! + JH2M&F2Bc-crciKo@oQid)g.;[NufEUKSV&p=;au='*Ng0QGI#^X:9ikOQUr#l*,<@WPnip + )CSX6MF*jV>%SbRM&J;X3RaS4aZ/F''3Q2m?pkmYS2QAQFRXCKpgS4Wd``&1O[#N_B@8'pM + C0tLJ`a3"H4^komgb!CI]uM&l=!mbNKZ.#H-U.uBtBk&6[d`6WpMDIC'uMM:!5E + ?^/U0?(5=qc+0K'3[kG,[F*G_h44qb%h&'@VDDYo3^_%Yb^5.$A*/0lh%pb;Mqj>-=WuMZ] + []eajbD= + :Psu]sighjP.2QHSJVZ)]EH"IU3*P,S*s(Xal:c*N*<-qf8nU_$Le`!B--[OY&L!3jHW + al9M:)`Eju3flAlp*Zl'gkeos,Ogn6C)3`Q4B7GK=8P6sN#%sZ)0`q7s,.CqLJ2.khl%jA= + UD!\N@jBZZ]k#H>7?4X8$m@P7^mdNlg`&ilh>#LBfs["OHYHiY,PKRRoTufP)!=@DRpt9gI + 2f!e>EJoF6=c>n+$RrqbpbtGbtp24"`^!*GhA*_c'2UM+N3=u'euFl9><1][K]'R't\=W9=?%sHZq + ;*'/Cco&pMJXp0'*BIa1J':F0=,W7sIIlq&II2*nqr(3m\?,uH:]CS5!,#Rb5GAin_$B>i0 + I7UI?J;N + Z"cI,m/3$Eb9RPB2-ad1+AoVQ8n.>0n)4iiU[nDsic + l,H+!p=G0%HeE6'8*DDE=7T)lu[o2.'OD3Y[/)Blob)["GOA2T0N3Pl$-/smbG?om+=!A:L + ["n-_Di\]Hh.El.d[89iq\*lsc/WjNh+?ih6mpc(^nBadES%Fc5lmNqDeHV;KL_rg5A;=$G + b/Sq78e<`d]-De@2-S5"ZeJRCH).2!$u"2ln8#;e,R$m-X+XSIgFAUGgK6;WIGToJZ+J^Lj + 0J>22=2fu!qVSYrp9mj%#K=@>6NphK=4#W:7"W[go*(uV9\b-OsXI,Pjd@LIQ$JJmNk\,k7 + h)*7D'ZomP$#`jGdG[GaKGs;S&7H[u%L.W\@=T1A#)a]q+L/,i*r?DrB+^-EB9G'rL:;*Y* + rgjHO/%[VKbk$;&W/fupaT>m294CjeS,/rS=\k3cdB&gikg"=@H:IYG]-">lD&S5;7nb5hO + :ALD^N>$F;Wh'k:m)J"N/'K0JnHA%2],6j64H/VJg[5*MUp'KSTfj+JQK_Q8:W7mJHYHhn" + (H0+AVi>YBCI7cr!i8gsD#hOY"CM_1b=2XmCaB.O]pjR`R$4]tA3Pg%X_/QubPQCUC3IKH" + h_^qk+kVbJ_+^cE0%L.W\@=VOA,?@&?CGNM#lk';n5TkjdiK0RZircjQ/eP`QYY&AMI9g$>^Kh\,G'4GZ;@T1]/!jD$#^>Z,sB9[0G"WtK>Pu7ed2L'j + 4oWFA,$<1;=*T5_E(4O5keJBgLudCJff7%i^IZ%)ckPNVPbA\]MPKpHZ;G?8\p:@WhONR_R + c`.@B8XcjUb2`\2id.*4/uJ$#Vf)X6;7r[]>&#`C\6q<1P~> +Q +0 g +BT +22 0 0 22 295.822559 11.771399 Tm +/f-0-0 1 Tf +[(End)]TJ +ET +Q q +243.199 325.599 147.57 -135.715 re W n +q +243 326.4 148 -137 re W n +[ 0.797682 0 0 0.798319 243.2 189.885823 ] concat +/DeviceRGB setcolorspace +8 dict dup begin + /ImageType 1 def + /Width 185 def + /Height 170 def + /Interpolate true def + /BitsPerComponent 8 def + /Decode [ 0 1 0 1 0 1 ] def + /DataSource currentfile /ASCII85Decode filter /FlateDecode filter def + /ImageMatrix [ 1 0 0 -1 0 170 ] def +end +image +Gb"0WLK>0kqZlWji0Qio?C/+D/laq`779Bi/ijB( + $WW;.$q#<:p1Xbj6rdAnG+4G(FqaS/b=bk2jj8Ep(!jHg_@C<)H(!$B4A3d(2B*I,8Doa6;%^C;-- + AGm`O-%gg0#ok\2+$I2]q=:MK-[spbC!Z4<4+GqRZXW0bo($X%2K'uoCi)2\e_+s0nmsfCo + _.oR>/jr9-ia/>hjlj<45/$2f2f(WZ=m\%gf`U0:0(u@;d@t@`Zb?tQ3dL8nq5ru7:E2N\ZZ=`hLgY]cQ]._cM,>En*"O,];eHJ + *>9dtmRNbE'4(F7iQA/T2Fr$dc?Bl6?c#n/1cC_#AN.ljYSj.RFj6G0l]"7!]OqM4JB$]tm + >IIqqo#,hQ*^O\p55$=0edN?nD'rg&2FH"mB7bi'JiQPnD+5'*EiUT>3:urr$gm>GQI/uC- + WdH-e5W?iO.SWe@VpEhaf;0@/!EjUVD!MP9]+OP*.4jsVO2&,16nCJb*2$]Nd?R@g'VF1h` + @,DqFts)Nh'JIf:S:n;-^=c_44I='J,-&9pdfEjG+Jb'P*Ql/6X+>fsN`?An0];V(p(U2RB + JBK2#>I9U14SPW]k@DY+7\qMKI-'?ml!FYM57GB`%^H1^"qV.GmV\.; + _XdV`*Q>)MOs5BLR<>/Rp[koe%6p_+TC9BBg@=VkfBPAV^BH="qb=]![cgd8APl(cjZ^;^:9I5:NmO8PDkSWXF:j[hblB0ClfH+*D5:Wr + D.D='K2'X`QcD`GD,3s!rp)UR1BU=7%tO9ocKY(K8;0Y%Xq!cItNT6jmg:-nQ[NLn%GI=b\ + s$gf&Z5DooOa/">/14D6A7^K(a=HbmbWi(.a8O\c!LgP9dgQY/%6L,$iaosGQK + [@T#=f6HZ*oE2dQ/l/A)tor("FPFurt#2/i6=Q,4!,H%"i#>8?RCDJp)qtu5L&3FH,a]`be + JeoR$J".[AcX<*\8$FrUIC$W+jY8-sS.SMcOb$SXL-0EhGB"3]XbHLV6:Y%;Xtk[r)9I4[I + ($kiD[cn@/HTL4Vc4;!eYa:'J8-J3jLFgA9ieM,39%Zq%D)[7k)0GabR+@OY5Z7UcZb_'[. + Jac;P^9rlaK@RL/FaZd&CpuI__p*Br#Y$:[oWt'YD!'Yu.G!ZFr5I_lC)ff['^Hfk5ddD + -jtjs5H<-V#UC7!'VN#hHU0W[t/n,_=;Kk&dXM<^^1K1aT9FBTOg/DkRI6Y>4RBSD"KHt[( + o-IC2mf6>>\Qn8;TDW?^%l<),HR]-V"#6MMrq-l]_?B#nh1Y_!>doFsT+2#946VXb#CE#Ft + TUJ']&53map%9M:3EVWI&)'6,Vn8H]u<-\=qdj/=fUOd-nmD-K + $Z\75:Hq7M@Z$8>cB27[p`jmMU7.As6>+6CqrV4$J3BSc@D+]!(=msoYT-Vj!1YE=ATA<\a + ZuA7[MOI5:&%k^[^KA[LMKOb4-;i;CgB4U14rak,+7LqW&Rk5-#m + q&Z`<$M^9Z&,XG=7r,C?a_l3@V*7GnRq_GGAQ + 9b>S!g;5:M>]Hf/u<)m2V>M?MGrFeL`UC6trhuA=f-d]uUHLS!AS6pe'-\>+3`tN0o^t+3= + Ml2C]e7'X6cr!u$Zg^>/!@Jn;P]NDn2"+;r2Xp7uJ%$ZJC#K;=W + "p*nr7?R)Pc6WdR#B`k9mQ0[h8LDHf)<9=kfET\W08%Qk>&dr'6q,RbDDl-fXgPs(T:mu:J + :Q&Vf=&XE@t2/K;i=T5L,^X"E]loi@/"ZE3dB*EdAP-#e4N@?[ZheK4`sai26h<"+9MNK9P + 9PfG?LZf)iu=peNu)C>%lEY/Q*gKPBBMFPRHL;Hge(iJ.')P8/%C>Z6r8H=mhq#aju9YVrZ + !pBGgR&91SQSe[tpK"uAUY*8I0E^Hqj(Ts&7MacZ2ACCTY`L3E179=E,pj!V!ADY#\nol4&8ME5kpD9dE,?P@#FR8ppnmPd86*9(qVakDSDL%Y.YR@RkkPV%"EBuKP5%KAe$d4`cD + bX(7kq<$U:9t?ReZ5Ut0InGXk`=HGtcq,spP:LuQgGc%>(=#:;oUP*!-ZHe@-Ps//$9JRlM + G=;^F@jh'*p6Eo7:/q\:..EqkbP%_??a#3'CZP>m4Tc*-cOG(#LCND6UIS;lL:EL.N2QK3. + ]<\\W_RuQ64h=3'db4T])OfXp%RYRde4E+t_;)&LiV[`f`@8='D4;-ERpa8J&Bg>ZCK+"9U + [d/L#PP8[M5/+=V$.-sa<5]D%8RN_rIdqMn`5kg30@Cfs5H_n[> + aWs,%QTnW0;"K@4\r&rhT=Pr)(!Ql'r%U,XSj@,>Y%=Z+\q&4T$Q4mISmS7rt6f-ZFZ3MP1 + ^"0NOd9OD#5bF&=LoK93?l3[_ctUa#A_e=pA&FAe_K-G^"+(d$`I# + \nqB3PiDa?D,4Kd3>gd58S8$s/=F6'&(8!%MkYo3I/\g66=jA>Uh"&[S@IbEff4LLgWLBn" + WAt>mj5;cZaDXIp#-N=DLcMJ+!OI:;k'&Om>Cr/P)BNaf5h;,+!ud=t0jeRd(BBk]7pn:'S + Sf/a8$H_i@#1I2B\sQT.`26MjWWKmui#[P!@OmS_HQ`TCIC>%$[5eY58!0&]["oLs$g?Bn1ME-ks!c5d(;u2#/[.6\JNDI\qc;*8M0#rkjQ\;&N + 2#5H0O)&6@72g3hGiYfG>hn:<(.q,./3=\mW_.U?=oK[#Bt4M-uP,(];WD+cc":DrJpWPZc + ?>(:(cuNW^^B_q<@/71(Ug(*b1B7H7XUQ3l,a3-SEKdNjCj + 5,P*Tr8O'ZP5/+=M3c-NF0Wdiqr"[%[>9S20p/Du9 + Jg9!=PTn!R*eeg%ur#j:8AD1a+=sj/c:,/3@BEm`Ei%-U7`8:3%]`'+tRbsq<+Gk(3c&MLT + sjlclRW'LcU+3ad5(,,?jm*7&mM9rX6CblhqAE@7&#Zq#=:MhJ@"PL%i)GYU + Y/$\.>hmUY$7Jm.q + r\V7HLK`>Yant6/-EpMGe,B\..M=Zjk/MBK&`>r:+2Rp_sZ0?p4b@*W<(:!@97#R%`_LK:` + b4;iL8Vmi<7[N7KC_q9CKeDd)K_BZNal&8>*@H4di\--$eq/VU6<]cO>%$[eh*0#[G?'Q:e=lG$/"s(]]<(++_pMpp\iLU];jTfl7E!D<&A]V]D3.Xe?=a + iDROrYXUISn&"nsmmMMVr`2j5eBNH\r0@(>-4fG5gN8iPrFNgc5$YCVcOJ2E(Oci+,@B%kH + f;k:Hs&:n#qBHi;WTA]H'Np4HHMUo<3dl&q\C[P$WE@&&Wo)6/4I)qmN+Ieq^%*EtET:JT& + (9e=J?:0+4;$d=S>3qli5FE4C'$)*P9%q@%9jB>;Nd'Ac5H"a(4[Jg:Z\h_cuZ64&FctS&+ + hS":1o&\&9B28H2F8Otl\_3qg-*,KQrfE;,n9s0kd'hh(3d7bl;6m"*:tQ(OBKoJVaV^pBU + .$3M7C5I([3ReR5<\J\<3ajjDl'Y]2E+<(9\<6DHLo:Es#khdf@rB#/^VW:p[91eGgOieDV + s=.(X8S9St&W=[Bqc7ECO2(IUZDleV;7I`AK/4Ntt9q\FV#1@`euh(r7jnE4,2\M4e$5UBf + d`NiB$+94a9[njMkb'5>TaVMo)EOt&D-3dp#_Ms&FFj.jB(Ih5@=I/!]644gZ@BrjD'I-JN + 0a`6Xp(RJYc?8ala:Jp9M5:c1]ltjn+7_Y_I^'">"b"sbZ:fIXm"UjOU=,M"DM>T$PUcjV. + -4'frs?dVne]ToYB,V)o5<]V3-i.1=ZokQNHI."cOJ,e94DnEWnCC]_2B + m!0Snq%siQ^;9[B$QJ4or$$?eW+/e%2W4e@<*4+7CK<]:)I\rT0W.iAnVP5)'Kr$ei4cpTs(AuXm[5W#/ + LX-QWlT^:7*/OUmpYU%)cYVLMBk_VclBP#"ZI>,XK]FbA]O&)59ikWXc'FFhcN$4;=8q_5p + ob/i/jqol4*7/Zj^\p+3dFn4VLs2%YhL17F97krs"--U(h`bnJAHP-g1%MQ1o?GB_#t^GJt + ^mWFA7H\G38,Br_Qs/rSkd(Cg`Bg$N-GX4ZuR^5Q9^;?!/&g(+%0T?^k?t_t%A[6P")c^=i + "&cc&B#rrdjrk\onlrDu6g,%q;eN<.r?#FpK4m2%DW;H*k&"UjOS:C#.KbOkn$Y2C[SOCe6 + 4*pZKZj(E;D71NL0k%]pf$59heZ.-NCe/3+:7ZRfaBPM@nF8P[3=0JEt!_3trldh%7LMIG" + [!(!B`JK;LdSjYi:R`B1V^2#iR=h]TC3q"m8&#?9OB2(I:#K,)3#%2HD"&fg%n-#QTgh@GO + \uSbNtbJPblNef8;mBB'X5RaX>&s51d:b!I@H;SW_(oq`[Yj1MDhj37dC"dT^mT8[MJJtc. + ]^F9D>2OYXaDn+R,ltp%:Isr-2H-`WbleT`I=\\LU_!8&kj/D:hn=ZL,]G3H8[jY'>-'"8s + cY#C*Nh*!u_s^7`:Y)>]Gm:Z0T\-^58nWPJO/gB*K:Arl_=6f(@T>@7goc(Ds14(g=Wqbj`^1F7([kTcH%J2_e?[M\$:"ZUreu/XU4h-"1Gfu5TP+R+b>bcoLZ5:L* + p7%Qe(UcL[E7n4^2;Z>iX.ruX(4a\.E&%mP7>'kJKZ_^,i/BlUY]Nc=*uR(i&"k]uU_@G4" + ]au`Ops/uqGU'p`3ZHG%ElHWQ9/gXZ'8Pe-eRW20NGl!W/YkeaNR4_IUIZUe#,ugH[DSb=0 + MqVRl>7h>E;aJ(WAdr#C&t#nt-i_jd[7RQQGNQQ`\$>X"LU$NI5# + ?'NjR]A^Q'(th[=_D"J$ZTS1ck["a7]WZ6`Uer]\H64i1l^JDkfu>*Pk`+%s^^8&8)ES;Gs + D('`KA*g>%$;U9Q0_FM^\[C))'FS5M'laqB0mb+pnBhG+dMk0lYLB(CkNh]0DYkoDae(OFU + CHQ]^qWkUY(qj5B"u]3]23FOq$oEcS3DVXQ/gkMQ:3O4!+0@eg`M]Q02s.?5B/&o3Bh8dQi + >*n\L(bR"'J))U1XT6D18DmC"]ZYsJ*GqrfQb29s&gcjQI\6Fo&S5q$ahjA7t_*#S'iZ&Wq + s'HK@jcl>tcI/BX.9"KjM."6&);4=Zq%J?o&$eblm^uLmA8F+k@k/HQg]OY*0<LmH.jZTjHcjL]tMX@;9\6Z+PC-`qjW + :B$)[SW5OY[jf3hH\R6SYHbAp6ciMIr'\g"QMP@T!PUQEdf/+4kMa;`n2^&Bq&@)Q+:`QGO + !"DVdaD+*V;-Rc,[2K6.m5aS4'&!prHgVY=a!t?:>4ChZp-npB;:IT-!QRI\NoQ(rsDM_'S + XcQT-8q(5'g@q[DQF2@\P]5Tk$qtY_JL98iXk4AP1tP,=h1W]_V-[bKkV/#ZAJsX2'5+K*V + ,h)JV0s(T,-k33[M,Fk&Uu%72$O@;Ngu#9BBO,9\YH;5.7*W9r/Cfa2Ii:a_m$RgM3uG1Vb + ];Y;tKnmj/SBaV:*"ZK)#W41O(Pkcn*%6(FrH1pkZ*#>@=Ar3mf9?b`Mh7ME\khqct_Bn_, + Ca5C$Y1b]grD9q"388DLK.`RX_u?hHo33G@QXIm(jF55F:b@t3pf\q$\h_#XnoJ)uhukqcW"VXtRneQf7Q@Z:md>j;eVTrbhVMQN/[0B6[ + (t6]P*TKDb:us(H2'&a]-BNVDJ5)bZ%s("J)ZE,S\QQfErqi`iH0Yd[[>_!fD":DF)ik:FW + &PhmuC)"C8/5sJ$X7U^Wc//4Bs/*4lXC"F&MF9J2r2*$+U^oqhDonOVZT\ODBEL$e"-GPNY + 'lQAT4%O6#7DFb3AG&LS;W#$GiTo80$Rk%+7XODAhoU,hM=@TpWo!?J$@:5aEd[#cpUao"' + =r/r828"JjV\`kYad-rtkL/+8cn,te'c&'Z8n?p(3>q*2N"$/b#,&sd0Dj/BuBgV])#3H$r + :Soi\SI(foPN"7;@u!n(rVQWaj'33KfHcodV+*$659Ii"OXp#b-*L'OF7M4,c?G6+UfcCY> + JLP'.@(2ddV'5RF8nS7g_8(UQno<#ER-M'iJT7ok;tsG!St+-XAf;G\=l&MN0QaX=Rh`8Lp + \pUj'3QUV`;c.VtPYGX$q&BcQ!5XTbC?k-XS<]rPB2p+qWqCm<)FA9Qe=^E8t2>WMh-VBjI + BtB"n?ukJuHK6KCNoN.k"B3,6Z*(Q1_PI-o:0W!ZU!Y_NlM[KP>@n\]ir/]X_5>2%!K_apf + SSl+pN57k+<%-uouck`J^[P#F#S/q:PHmTbd3#IR-rsTl!9n&b#Vkml3BGkNXrD8c8(4Me> + bgc;D2[H]&)-cb5%&%aM+E9$6V*5/ANYsE:::O`6A1',=m>%_:!M-/)d5Y2Xa[rhU=-$#_C + gBN8(($\JW"Y#]rQ'#2("#pAYSN\#Q?1,RDSDDS3*Nn(I:m-M"?%VO:)mr)pA4%qEY-q8e@9bDWSC+<)dYSAV-haL&)0-DE%ol1;rYo6KZJDo7BS!;/kg1MBBTFb55UY + OS:,`+2%\)+-XRGkL(2fWm;%";hO_PcEXiolYm`ZAg,.F9E:mH.]5GgkBGiq;H4,Lta2#<2 + V/^g015f497im(Mp'0-TjLT7-Us%1OnLhdlb!?G+"s.(4T/=^%Nh0Ws,paEi;FDM$u]uUFE + PlWff"4(Hs40Cu(;9C;HK0i`bE=FW#"/Di]WhZ9=?;do#/(6KC3c@>@cMW'?j_kr./M,5$^YOL\h7Z$GAN/.*o<cUrA%alXN6DBgHq*B"Mj=m/0()j(k2!+`bF1@gS[XdM-Qk + e_R1Nr[S]Q3>(UW&^F_N!A2j#QF`bR-\<;W&j)M!U.dQbSrtT$\&UWZ_?&1!i(th^Q9h]+O + ublU`MaI&SFFEu>UNJfqiscopi"IidDGcI`,oNC2lF;A<[c_NSbWkb + lNL(iu8&M"/kUhO,U6@2Z%`?"qe0bq\hgSJ*`HiM[i9O/HP&#@C,N!9bCrB^ + \2bYglgI9SK`l>XVcJkW+b*)ohW4%,k,R$iqpl6K.s$l%kG-*,o)]d%4Fr)0$tQpI(YiH^u + Fj2YI25mYb=.$&&&$iXVM#H4kjEcHjAm712K?7KtP$?Im4e)CQiq17F9J--tQ:Cd0M'3'7/?en#1 + /QcclZLOJnTfoq"=o\AlMQDWZM-t\@K5?N6*>i5Y>V4XsgA=8$B;/OQP,ppZ+4q>;IeEg^- + \2U@Yhg.sZ32]&h^"WFM.Q&`U16sn@4W?,:E7cGn6r+OcX%jH8Mf70k;SF[_'"&P#efJLH!3N(#p\:7]HC3WuXW[HGu04eq&F4W#5TG;b#f + !s27?$0&u>*5+c!N%>1`lcR2MYrQQ"r5jQ`ZigiAZ"p/c1&'doeG!cDQ4aiXu=I$IBfR04D + Tp:f'9NKRf4W`du9Ms%@#LkMDdNBM2IcK,ErQ&7rK",r3t-TFZ$$j1"Dh0Y2d>rpFoM8A12 + ^@.8D`uoUm^02H4cWSD^&)_3R!q8o)'c:!(q;*pW,^Ks@DbnAB`O(OHqBc;;cBTeVt3aYm+ + Ad";FVJt:233uut;N47:TDkT&69M8fgY);O5UU9*l?T+3H:.BYgS.dnf=1p.62K7A\4&\:8 + ?"Hro#nq$12Dc^QD1m\Tju?<4Db\cr1XT1+1fS\(A?AO.\:%;pOiBF3N#`9P)!>3bhpL4Y^ + \-cLOhh')N]&F_,t$5OkUPJqeA!k;rl.4b)huKoVRgLP-Mh%DDScGJDb.P5dO8\pjqhfdkeH/m + T,Vf1J*l0n)=S;`Ti#BW+Ihql%pX0_1u91s?BO88+nXNFYZ,^B18`;&"7aU.S!AlW^sqeP) + \LAKVNp\oI;lkqX73Ka"7"0.*ZplPpeoBOl,41B.a\oI+(8)'Y9^GjYCDm.sgl]/(pO1-/p + G4a1W8'delLVF'<_>]\#Is.iH]0;nl!PEdR%d@;k,PC]ndp"bLG'A-pIf/uWrVNd*^OH(R/ + N)"N$7cMn_uN@o1JghB:JYnI0-#&i^OK%%YZ-Gnp2Jt,2Wb"ri$7Q[N[h'-U5CG#W1o/!Wi + 2YLWaW%0#A*92"o~> +Q +0 g +BT +22 0 0 22 298.411426 279.754358 Tm +/f-0-0 1 Tf +[(Ar)21(e)]TJ +-0.272461 -1 Td +[(they)]TJ +-0.536133 -1 Td +[(equal?)]TJ +ET +Q q +0 g +2.4 w +0 J +0 j +[] 0.0 d +4 M q 1 0 0 -1 0 790.399963 cm +316.762 33.48 m 316.762 86.008 l S Q +q 1 0 0 -1 0 790.399963 cm +316.762 147.812 m 316.762 199.551 l S Q +q 1 0 0 -1 0 790.399963 cm +256.559 257.719 m 139.379 257.719 l 139.379 365.215 l S Q +q 1 0 0 -1 0 790.399963 cm +378.305 257.715 m 495.484 257.715 l 495.484 365.211 l S Q +q 1 0 0 -1 0 790.399963 cm +225.398 398.059 m 316.828 397.484 l 316.828 474.172 l S Q +q 1 0 0 -1 0 790.399963 cm +377.992 533.152 m 495.168 533.152 l 495.168 640.648 l S Q +q 1 0 0 -1 0 790.399963 cm +255.668 532.582 m 138.488 532.582 l 138.488 640.078 l S Q +q 1 0 0 -1 0 790.399963 cm +255.688 674.629 m 373.973 674.629 l S Q +q 1 0 0 -1 0 790.399963 cm +316.828 674.629 m 316.828 752.344 l S Q +q 1 0 0 -1 0 790.399963 cm +495.113 422.059 m 495.113 451.77 l 332.828 451.199 l 332.828 451.199 317.516 + 429.449 301.457 451.18 c 138.828 451.484 l 138.543 532.629 l S Q +1 0.890196 0.815686 rg +187.742 549.427 m 212.887 549.427 l 221.75 549.427 228.887 542.291 228.887 + 533.427 c 228.887 524.564 221.75 517.427 212.887 517.427 c 187.742 517.427 + l 178.879 517.427 171.742 524.564 171.742 533.427 c 171.742 542.291 178.879 + 549.427 187.742 549.427 c h +187.742 549.427 m f +0 g +BT +22 0 0 22 182.028894 526.571399 Tm +/f-0-0 1 Tf +(Y)Tj +ET +0.8 w +q 1 0 0 -1 0 790.399963 cm +181.98 247.797 m 184.309 247.797 l 188.762 254.391 l 193.184 247.797 l +195.512 247.797 l 189.84 256.188 l 189.84 263.828 l 187.652 263.828 l 187.652 + 256.188 l h +181.98 247.797 m S Q +BT +22 0 0 22 192.556238 526.571399 Tm +/f-0-0 1 Tf +(e)Tj +ET +q 1 0 0 -1 0 790.399963 cm +204.914 257.312 m 204.914 258.281 l 195.836 258.281 l 195.918 259.648 196.324 + 260.691 197.055 261.406 c 197.793 262.117 198.82 262.469 200.133 262.469 + c 200.891 262.469 201.625 262.375 202.336 262.188 c 203.043 262.004 203.75 + 261.719 204.461 261.344 c 204.461 263.219 l 203.75 263.523 203.02 263.754 + 202.273 263.906 c 201.531 264.059 200.777 264.141 200.008 264.141 c 198.09 + 264.141 196.566 263.586 195.445 262.469 c 194.328 261.348 193.773 259.836 + 193.773 257.938 c 193.773 255.961 194.305 254.391 195.367 253.234 c 196.426 + 252.082 197.859 251.5 199.664 251.5 c 201.285 251.5 202.57 252.023 203.508 + 253.062 c 204.441 254.105 204.914 255.523 204.914 257.312 c h +202.945 256.734 m 202.922 255.652 202.613 254.793 202.023 254.156 c 201.438 + 253.512 200.66 253.188 199.695 253.188 c 198.59 253.188 197.703 253.504 + 197.039 254.125 c 196.371 254.742 195.988 255.617 195.898 256.75 c h +202.945 256.734 m S Q +BT +22 0 0 22 206.091394 526.571399 Tm +/f-0-0 1 Tf +(s)Tj +ET +q 1 0 0 -1 0 790.399963 cm +215.84 252.156 m 215.84 254.016 l 215.277 253.738 214.691 253.523 214.09 + 253.375 c 213.484 253.23 212.863 253.156 212.23 253.156 c 211.238 253.156 + 210.5 253.309 210.012 253.609 c 209.52 253.914 209.277 254.367 209.277 +254.969 c 209.277 255.43 209.453 255.789 209.809 256.047 c 210.16 256.309 + 210.863 256.559 211.918 256.797 c 212.605 256.938 l 214 257.242 214.996 + 257.668 215.59 258.219 c 216.18 258.762 216.48 259.527 216.48 260.516 c + 216.48 261.633 216.035 262.52 215.152 263.172 c 214.266 263.82 213.051 +264.141 211.512 264.141 c 210.863 264.141 210.191 264.074 209.496 263.953 + c 208.797 263.828 208.055 263.641 207.277 263.391 c 207.277 261.344 l 208.004 + 261.73 208.723 262.02 209.434 262.203 c 210.148 262.391 210.855 262.484 + 211.543 262.484 c 212.477 262.484 213.199 262.328 213.699 262.016 c 214.195 + 261.695 214.449 261.242 214.449 260.656 c 214.449 260.129 214.266 259.719 + 213.902 259.438 c 213.535 259.148 212.742 258.867 211.527 258.594 c 210.84 + 258.438 l 209.609 258.18 208.723 257.781 208.184 257.25 c 207.641 256.723 + 207.371 255.984 207.371 255.047 c 207.371 253.926 207.77 253.055 208.574 + 252.438 c 209.375 251.816 210.512 251.5 211.98 251.5 c 212.719 251.5 213.406 + 251.559 214.043 251.672 c 214.688 251.777 215.285 251.941 215.84 252.156 + c h +215.84 252.156 m S Q +1 0.890196 0.815686 rg +186.602 274.685 m 211.742 274.685 l 220.605 274.685 227.742 267.548 227.742 + 258.685 c 227.742 249.822 220.605 242.685 211.742 242.685 c 186.602 242.685 + l 177.734 242.685 170.602 249.822 170.602 258.685 c 170.602 267.548 177.734 + 274.685 186.602 274.685 c h +186.602 274.685 m f +0 g +BT +22 0 0 22 180.886035 251.828577 Tm +/f-0-0 1 Tf +(Y)Tj +ET +q 1 0 0 -1 0 790.399963 cm +180.84 522.539 m 183.168 522.539 l 187.621 529.133 l 192.043 522.539 l +194.371 522.539 l 188.699 530.93 l 188.699 538.57 l 186.512 538.57 l 186.512 + 530.93 l h +180.84 522.539 m S Q +BT +22 0 0 22 191.413379 251.828577 Tm +/f-0-0 1 Tf +(e)Tj +ET +q 1 0 0 -1 0 790.399963 cm +203.773 532.055 m 203.773 533.023 l 194.695 533.023 l 194.777 534.391 195.184 + 535.434 195.914 536.148 c 196.652 536.859 197.68 537.211 198.992 537.211 + c 199.75 537.211 200.484 537.117 201.195 536.93 c 201.902 536.746 202.609 + 536.461 203.32 536.086 c 203.32 537.961 l 202.609 538.266 201.879 538.496 + 201.133 538.648 c 200.391 538.801 199.637 538.883 198.867 538.883 c 196.949 + 538.883 195.426 538.328 194.305 537.211 c 193.188 536.09 192.633 534.578 + 192.633 532.68 c 192.633 530.703 193.164 529.133 194.227 527.977 c 195.285 + 526.824 196.719 526.242 198.523 526.242 c 200.145 526.242 201.43 526.766 + 202.367 527.805 c 203.301 528.848 203.773 530.266 203.773 532.055 c h +201.805 531.477 m 201.781 530.395 201.473 529.535 200.883 528.898 c 200.297 + 528.254 199.52 527.93 198.555 527.93 c 197.449 527.93 196.562 528.246 195.898 + 528.867 c 195.23 529.484 194.848 530.359 194.758 531.492 c h +201.805 531.477 m S Q +BT +22 0 0 22 204.948535 251.828577 Tm +/f-0-0 1 Tf +(s)Tj +ET +q 1 0 0 -1 0 790.399963 cm +214.699 526.898 m 214.699 528.758 l 214.137 528.48 213.551 528.266 212.949 + 528.117 c 212.344 527.973 211.723 527.898 211.09 527.898 c 210.098 527.898 + 209.359 528.051 208.871 528.352 c 208.379 528.656 208.137 529.109 208.137 + 529.711 c 208.137 530.172 208.312 530.531 208.668 530.789 c 209.02 531.051 + 209.723 531.301 210.777 531.539 c 211.465 531.68 l 212.859 531.984 213.855 + 532.41 214.449 532.961 c 215.039 533.504 215.34 534.27 215.34 535.258 c + 215.34 536.375 214.895 537.262 214.012 537.914 c 213.125 538.562 211.91 + 538.883 210.371 538.883 c 209.723 538.883 209.051 538.816 208.355 538.695 + c 207.656 538.57 206.914 538.383 206.137 538.133 c 206.137 536.086 l 206.863 + 536.473 207.582 536.762 208.293 536.945 c 209.008 537.133 209.715 537.227 + 210.402 537.227 c 211.336 537.227 212.059 537.07 212.559 536.758 c 213.055 + 536.438 213.309 535.984 213.309 535.398 c 213.309 534.871 213.125 534.461 + 212.762 534.18 c 212.395 533.891 211.602 533.609 210.387 533.336 c 209.699 + 533.18 l 208.469 532.922 207.582 532.523 207.043 531.992 c 206.5 531.465 + 206.23 530.727 206.23 529.789 c 206.23 528.668 206.629 527.797 207.434 +527.18 c 208.234 526.559 209.371 526.242 210.84 526.242 c 211.578 526.242 + 212.266 526.301 212.902 526.414 c 213.547 526.52 214.145 526.684 214.699 + 526.898 c h +214.699 526.898 m S Q +1 0.890196 0.815686 rg +422.027 275.142 m 447.172 275.142 l 456.035 275.142 463.172 268.005 463.172 + 259.142 c 463.172 250.279 456.035 243.142 447.172 243.142 c 422.027 243.142 + l 413.164 243.142 406.027 250.279 406.027 259.142 c 406.027 268.005 413.164 + 275.142 422.027 275.142 c h +422.027 275.142 m f +0 g +BT +22 0 0 22 419.743164 251.142834 Tm +/f-0-0 1 Tf +(N)Tj +ET +q 1 0 0 -1 0 790.399963 cm +421.898 523.227 m 424.82 523.227 l 431.93 536.633 l 431.93 523.227 l 434.039 + 523.227 l 434.039 539.258 l 431.117 539.258 l 424.008 525.836 l 424.008 + 539.258 l 421.898 539.258 l h +421.898 523.227 m S Q +BT +22 0 0 22 436.200195 251.142834 Tm +/f-0-0 1 Tf +(o)Tj +ET +q 1 0 0 -1 0 790.399963 cm +442.934 528.617 m 441.871 528.617 441.031 529.031 440.418 529.852 c 439.801 + 530.676 439.496 531.812 439.496 533.258 c 439.496 534.695 439.801 535.832 + 440.418 536.664 c 441.031 537.488 441.871 537.898 442.934 537.898 c 443.984 + 537.898 444.816 537.484 445.434 536.648 c 446.047 535.816 446.355 534.688 + 446.355 533.258 c 446.355 531.832 446.047 530.703 445.434 529.867 c 444.816 + 529.035 443.984 528.617 442.934 528.617 c h +442.934 526.93 m 444.648 526.93 446 527.496 446.98 528.617 c 447.957 529.734 + 448.449 531.281 448.449 533.258 c 448.449 535.227 447.957 536.777 446.98 + 537.898 c 446 539.016 444.648 539.57 442.934 539.57 c 441.203 539.57 439.848 + 539.016 438.871 537.898 c 437.902 536.777 437.418 535.227 437.418 533.258 + c 437.418 531.281 437.902 529.734 438.871 528.617 c 439.848 527.496 441.203 + 526.93 442.934 526.93 c h +442.934 526.93 m S Q +1 0.890196 0.815686 rg +420.887 549.427 m 446.027 549.427 l 454.895 549.427 462.027 542.294 462.027 + 533.427 c 462.027 524.564 454.895 517.427 446.027 517.427 c 420.887 517.427 + l 412.023 517.427 404.887 524.564 404.887 533.427 c 404.887 542.294 412.023 + 549.427 420.887 549.427 c h +420.887 549.427 m f +0 g +BT +22 0 0 22 418.600293 525.428577 Tm +/f-0-0 1 Tf +(N)Tj +ET +q 1 0 0 -1 0 790.399963 cm +420.758 248.941 m 423.68 248.941 l 430.789 262.348 l 430.789 248.941 l +432.898 248.941 l 432.898 264.973 l 429.977 264.973 l 422.867 251.551 l +422.867 264.973 l 420.758 264.973 l h +420.758 248.941 m S Q +BT +22 0 0 22 435.057324 525.428577 Tm +/f-0-0 1 Tf +(o)Tj +ET +q 1 0 0 -1 0 790.399963 cm +441.793 254.332 m 440.73 254.332 439.891 254.746 439.277 255.566 c 438.66 + 256.391 438.355 257.527 438.355 258.973 c 438.355 260.41 438.66 261.547 + 439.277 262.379 c 439.891 263.203 440.73 263.613 441.793 263.613 c 442.844 + 263.613 443.676 263.199 444.293 262.363 c 444.906 261.531 445.215 260.402 + 445.215 258.973 c 445.215 257.547 444.906 256.418 444.293 255.582 c 443.676 + 254.75 442.844 254.332 441.793 254.332 c h +441.793 252.645 m 443.508 252.645 444.859 253.211 445.84 254.332 c 446.816 + 255.449 447.309 256.996 447.309 258.973 c 447.309 260.941 446.816 262.492 + 445.84 263.613 c 444.859 264.73 443.508 265.285 441.793 265.285 c 440.062 + 265.285 438.707 264.73 437.73 263.613 c 436.762 262.492 436.277 260.941 + 436.277 258.973 c 436.277 256.996 436.762 255.449 437.73 254.332 c 438.707 + 253.211 440.062 252.645 441.793 252.645 c h +441.793 252.645 m S Q +Q Q +showpage +%%Trailer +end restore +%%EOF diff --git a/mgltex/Recompilation_decision.pdf b/mgltex/Recompilation_decision.pdf new file mode 100644 index 0000000000000000000000000000000000000000..cff8a1366f06637813738663ec827c692d01a292 GIT binary patch literal 77225 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%0A!^%ExT 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 Qp)i$7k + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Terminal/Interrupt + A terminal point in a flowchart: start, stop, halt, etc. + + + + Auxiliary Operation + Offline operation. + + + + Decision + A decision or switching type operation. + + + + Input/Output + General input/output functions. + + + + Buffer Small + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + Start + + Find\MGL@@@<script> + + Is itdefined? + + Comparescript vs. code + + Rewrite/recompilescript + + Undefine\MGL@@@<script> + + Define\MGL@@@<script> + + End + + Aretheyequal? + + + + + + + + + + + + Yes + + Yes + + No + + No + diff --git a/mgltex/mgltex.dtx b/mgltex/mgltex.dtx index 34dedae..ecdd628 100644 --- a/mgltex/mgltex.dtx +++ b/mgltex/mgltex.dtx @@ -1,42 +1,48 @@ % \iffalse meta-comment % -% Copyright (C) 2014 by Diego Sejas -% +% Copyright (C) 2014--2015 by Diego Sejas Viscarra +% Copyright (C) 2014--2015 by Alexey Balakin +% % This program is free software: you can redistribute it and/or modify it % under the terms of the GNU General Public License as published by the % Free Software Foundation, either version 3 of the License, or (at your % option) any later version. -% +% % This program is distributed in the hope that it will be useful, but % WITHOUT ANY WARRANTY; without even the implied warranty of % MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General % Public License for more details. % % You should have received a copy of the GNU General Public License along -% with this program. If not, see . -% +% with this program. If not, see . +% % \fi -% +% % \iffalse % +% %\NeedsTeXFormat{LaTeX2e} -%\ProvidesPackage{mgltex}[/2014/11/22 v2.0 Embed MGL scripts in LaTeX documents] -% +%\ProvidesPackage{mgltex}[2015/11/07 v4.0 Embed MGL scripts into LaTeX documents] +% +% %<*driver> -\documentclass{ltxdoc} +\documentclass[10pt]{ltxdoc} \usepackage{color} -\usepackage[comments]{mgltex} +\IfFileExists{hyperref.sty}{\usepackage{hyperref}}{} +\usepackage{mgltex} \EnableCrossrefs \CodelineIndex \RecordChanges +\widowpenalty=10000 +\clubpenalty=10000 \begin{document} \DocInput{mgltex.dtx} \end{document} % % \fi -% -% \CheckSum{1297} -% +% +% \CheckSum{1520} +% % \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 % Lower-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 @@ -52,14 +58,66 @@ % Right bracket \] Circumflex \^ Underscore \_ % Grave accent \` Left brace \{ Vertical bar \| % Right brace \} Tilde \~} -% +% +% \bgroup% +% \makeatletter% +% \gdef\MGL@set@pseudo@verb@env{% +% \if@minipage\else\vskip\parskip\fi% +% \setlength{\labelsep}{1em}% +% \@beginparpenalty\predisplaypenalty% +% \leftskip\@totalleftmargin\rightskip\z@% +% \parindent\z@\parfillskip\@flushglue\parskip\z@% +% \itemsep\z@% +% \@@par% +% \def\par{% +% \if@tempswa% +% \leavevmode\null\@@par\penalty\interlinepenalty% +% \else% +% \@tempswatrue% +% \ifhmode\@@par\penalty\interlinepenalty\fi% +% \fi% +% }% +% \ttfamily% +% \frenchspacing% +% }% +% \makeatother +% \egroup +% % \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} -% +% \changes{v2.0}{2014/11/23}{Possible bugfix by adding \texttt{\textbackslash expandafter} to commands to ignore/write lines of MGL code} +% \changes{v2.0}{2014/11/23}{Add environment \texttt{mglsignature} that adds a commentary every MGL script} +% \changes{v2.0}{2014/11/23}{Eliminate line ignoring commands to create more elegant scripts, due to the a new command that adds comments to the scripts} +% \changes{v2.0}{2014/11/23}{Move the MGL \emph{stop} command from the \texttt{\textbackslash{}AtEndDocument} command to the \texttt{\textbackslash{}mgl@func} buffer} +% \changes{v3.0}{/2015/03/29}{Add detection of changes in MGL scripts to speed up compilation time (only changed scripts are recompiled)} +% \changes{v3.0}{/2015/03/29}{Add command \texttt{\textbackslash mgldir}, \texttt{\textbackslash mglscriptsdir}, \texttt{\textbackslash mglgraphicsdir} and \texttt{\textbackslash mglbackupsdir} to specify a main directory for \textsf{\mglTeX} and directories for the creation of scripts, graphics and backups} +% \changes{v3.0}{/2015/03/29}{Add the \texttt{\textbackslash mglquality} command to specify a default quality} +% \changes{v3.0}{/2015/03/29}{Add the \texttt{\textbackslash mglwidth} and \texttt{\textbackslash mglheight} commands to specify the default size of the images produced} +% \changes{v3.0}{/2015/03/29}{Add the \texttt{\textbackslash mglsettings} command to configure behavior of the package} +% \changes{v3.0}{/2015/03/29}{Improve environment \texttt{mglsignature} by adding the possibility of using \LaTeX{} commands inside it} +% \changes{v4.0}{/2015/08/17}{Completely rewrite of \textsf{\mglTeX}} +% \changes{v4.0}{/2015/08/17}{\textsf{\mglTeX} now depends of the \textsf{verbatim} package} +% \changes{v4.0}{/2015/08/17}{All environments write their contents \emph{verbatim}} +% \changes{v4.0}{/2015/08/17}{Remove \texttt{\textbackslash mglquality} command. Instead, add package options \texttt{0q}, \ldots, \texttt{8q} to specify quality} +% \changes{v4.0}{/2015/08/17}{Add the \texttt{\textbackslash mglpaths} command to add directories to the search paths for MGL scripts} +% \changes{v4.0}{/2015/08/17}{Add the \texttt{\textbackslash mglname} command to force clousure of the current main script, its compilation, and the opening of a new main script} +% \changes{v4.0}{/2015/08/17}{Add the option \texttt{label} to the \texttt{mgl} environment in order to override the automatic naming of the script and corresponding image} +% \changes{v4.0}{/2015/08/17}{Add the option \texttt{label} to the \texttt{mglverbatim} environment to name the verbatim code} +% \changes{v4.0}{/2015/08/17}{Add the option \texttt{separator} to the command \texttt{\textbackslash mglplot} to brake the code into different physical text lines} +% \changes{v4.0}{/2015/08/17}{Add the option \texttt{path} to the commands \texttt{\textbackslash mglgraphics} and \texttt{\textbackslash mglinclude} to force a path to search MGL scripts} +% \changes{v4.0}{/2015/08/17}{Make verbatim-like environments and \texttt{\textbackslash mglinclude} command more visually elegant} +% \changes{v4.0}{/2015/08/17}{Numbering in verbatim-like environments is optional now} +% \changes{v4.0}{/2015/08/17}{Add the command \texttt{\textbackslash listofmglscripts} to create a list of all MGL scripts included verbatim in the document} +% \changes{v4.0}{/2015/08/17}{Add the command \texttt{\textbackslash mglTeXwVer} that prints the name of the package with its version in a coherent manner, and separated by an unbreakable space} +% \changes{v4.0}{/2015/08/17}{Verbatim-like environments and the \texttt{\textbackslash mglinclude} command have starred versions wich prevent the command \texttt{\textbackslash listofmglscripts} to list them} +% \changes{v4.0}{/2015/08/17}{Remove \texttt{mglsignature} environment for being considered useless, and to avoid interference with the detection of changes in MGL scripts, to speed up script writing and to make the package less resource-consuming} +% \changes{v4.0}{/2015/08/17}{Remove the \texttt{\textbackslash mglwidth} and \texttt{\textbackslash mglheight} commands for being considered useless} +% \changes{v4.0}{/2015/08/17}{Remove the \texttt{\textbackslash MGL@setkeys} command since it isn't needed as first thought} +% \changes{v4.0}{/2015/08/17}{\textsf{\mglTeX} is more customizable now} +% \changes{v4.0}{/2015/08/17}{Many improvements, including, but not limited to, speed up, increased coherence and cleanness of the code, less resource consumption} +% \changes{v4.0}{/2015/08/17}{Many bugfixes} +% % \GetFileInfo{mgltex.sty} -% +% % \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} @@ -71,25 +129,27 @@ % \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}} -% +% % \maketitle -% +% % \begin{abstract} -% \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. +% \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 scripting 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~\textsf{\mglTeX}. % \end{abstract} -% +% +% \tableofcontents +% % \section{Introduction} -% MathGL is a fast and efficient library by Alexey Balakin for the creation of high-quality publication-ready scientific graphics. It implements more than $50$ different types of graphics for 1d, 2d and 3d large sets of data. It supports exporting images to bitmap formats (PNG, JPEG, BMP, etc.), or vector formats (EPS, \TeX, SVG, etc.), or 3d image formats (STL, OBJ, XYZ, etc.), and even its own 3d format, MGLD. MathGL also defines its own vector font specification format, and supports UTF-16 encoding with \TeX-like symbol parsing. It supports various kinds of transparency and lighting, textual formula evaluation, arbitrary curvilinear coordinate systems, loading of subroutines from .dll or .so libraries, and many other useful features. -% +% MathGL is a fast and efficient library by Alexey Balakin for the creation of high-quality publication-ready scientific graphics. It implements more than $50$ different types of graphics for 1d, 2d and 3d large sets of data. It supports exporting images to bitmap formats (PNG, JPEG, BMP, etc.), or vector formats (EPS, \TeX, SVG, etc.), or 3d image formats (STL, OBJ, XYZ, etc.), and even its own native 3d format, MGLD. MathGL also defines its own vector font specification format, and supports UTF-16 encoding with \TeX-like symbol parsing. It supports various kinds of transparency and lighting, textual formula evaluation, arbitrary curvilinear coordinate systems, loading of subroutines from .dll or .so libraries, and many other useful features. +% % MathGL has interfaces for a wide variety of programming languages, such as C/C++, Fortran, Python, Octave, Pascal, Forth, and many others, but it also defines its own scripting language, called \emph{MGL}, which can be used to generate graphics independently of any programming language. The \textsf{\mglTeX} package adds support to embed MGL code inside \LaTeX{} documents, which is automatically extracted and executed, and the resulting images are included in the document. -% +% % Besides the obvious advantage of having available all the useful features of MathGL, \textsf{\mglTeX} facilitates the maintenance of your document, since both code for text and code for graphics are contained in a single file. -% +% % \section{Usage} % \noindent The simplest way to load \textsf{\mglTeX} to a \LaTeX{} document is to write the command % \begin{center} @@ -99,77 +159,168 @@ % \begin{center} % |\usepackage|\oarg{options list}|{mgltex}|, % \end{center} -% where \meta{options list} is a comma-separated list that can contains one or more of the following options: +% where \meta{options list} is a comma-separated list that can contain one or more of the following options: % \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 |final|: Overrides the |draft| option. +% \item |on|: To rewrite, recompile and include the changed MGL scripts and/or corresponding graphics. +% \item |off|: To avoid creation, compilation and/or inclusion of the MGL scripts and corresponding 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 |nocomments|: To avoid showing the contents of the |mglcomment| environments in the \LaTeX{} document. +% \item |1x|, \ldots, |9x|: To specify the scale for the creation of graphics (|1x| is normal scaling, |2x| is twice as bigger, etc). +% \item |0q|, \ldots, |8q|: To specify the quality for the creation of graphics. An info message indicating the characteristics of the chosen quality is printed in the .log file according to the following table: +% \begin{center} +% \DeleteShortVerb{\|} +% \begin{tabular}{|c|l|} +% \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} +% \MakeShortVerb{\|} +% \end{center} +% \item |png|, |jpg|, |jpeg|: To export images to a bitmap format. +% \item |eps|, |epsz|: To export to uncompressed/compressed vectorial EPS format. +% \item |bps|, |bpsz|: To export to uncompressed/compressed bitmap EPS format. % \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 |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 +% If two or more mutually exclusive options are specified, only the last one will be used by \textsf{\mglTeX}. For example, if one specifies the options |0q|, |3q| and |8q|---in that order---, then the quality will be set to $8$. +% +% Observe the |off| option is similar to the |draft| option, with the exception that |draft| deactivates inclusion of graphics for the \textsf{\mglTeX} and \textsf{graphicx} packages, while the |off| option only deactivates \textsf{\mglTeX} functionalities (creation and/or inclusion of scripts and graphics), not affecting \textsf{graphicx}. This could be useful to recognize which images are created with MGL, and which are only included. Another possible use for this option is to avoid recompilation of scripts when they must be constantly changed until their final version.\footnote{\textsf{\mglTeX} has a convinient recompilation-decision algorithm that enables recompilation for changed scripts only (see subsection \ref{subsection: recompilation decision}).} +% +% There are two ways to compile a document with \textsf{\mglTeX}: The first way is to run % \begin{center} -% |latex --shell-escape |\meta{document} +% |latex --shell-escape |\meta{document}|.tex| % \end{center} -% twice, since the first run will extract the MGL code, execute it and include some of the resulting graphics, while the second run will include the remaining graphics; the second way is to run |latex |\meta{document} to extract the MGL code, then execute the generated scripts with the program |mglconv| (which comes with MathGL), and execute |latex |\meta{document} once more to include the graphics. -% -% \subsection{Environments for MGL code embedding} -% \DescribeEnv{mgl}\noindent The main environment defined by \textsf{\mglTeX} is |mgl|. It extracts its contents to a general script, called \meta{document}.mgl, where \meta{document} stands for the name of the \LaTeX{} file being compiled; this script is compiled, and the corresponding image is included. Its syntax is: +% three times, since the first run will detect changes in the scripts; the second run will extract the MGL code, execute it and include some of the resulting graphics, while the third run will include the remaining graphics. The second way is to run +% \begin{center} +% |latex |\meta{document}|.tex| +% \end{center} +% twice to detect changes in MGL code and to extract it, then compile the generated scripts with the program |mglconv| (part of MathGL bundle), and execute |latex |\meta{document}|.tex| once more to include the graphics.\footnote{If no changes were made to scripts intended to create graphics, only one \LaTeX{} run is needed.} (More on the recompilation-decision mechanism of \textsf{\mglTeX} can be found in subsection~\ref{subsection: recompilation decision}.) +% +% \subsection{Warning for the user}\label{subsection: warning} +% Before we continue the description of the package, it must be pointed out that \textsf{\mglTeX} assummes that the command |\end{|\meta{MGL environment}|}|, that ends the corresponding \meta{MGL environment}, occupies its own physical line of \LaTeX{} code. So the correct forms of use of environments are the following: +% \begin{quote} +%|\begin{|\meta{MGL environment}|}|\\ +%\meta{contents of the environment}\\ +%|\end{|\meta{environment}|}| +% \end{quote} +% and +% \begin{quote} +%|\begin{|\meta{MGL environment}|}|\meta{contents of the environment}\\ +%|\end{|\meta{environment}|}| +% \end{quote} +% The following form will cause problems: +% \begin{quote} +%|\begin{|\meta{MGL environment}|}|\meta{contents of the environment}|\end{|\meta{MGL environment}|}| +% \end{quote} +% +% \textsf{\mglTeX} depends on the \textsf{verbatim} package to define its environments. One of the characteristics of \textsf{verbatim} is that it transcripts everything contained between the begining and the end of an environment, including spaces before an |\end{|\meta{MGL environment}|}| command. This should not be a problem, except for the fact that \textsf{\mglTeX} has a mechanism to detect changes in MGL scripts in order to recompile them (see subsection \ref{subsection: recompilation decision}), and the mentioned spaces in the scripts and their counterparts in the \LaTeX{} document can't be recognized properly as identical when compared, causing the package to recompile the scripts even when they haven't changed, rendering the mechanism useless.\footnote{It is currently unknown for the author why this spaces aren't detected properly. Help would be appreciated.} In order to avoid this glitch, the facilities provided by \textsf{verbatim} have been adapted to ignore everything before |\end{|\meta{MGL environment}|}|, including spaces and, unfortunately, MGL code. +% +% It should also be pointed out that the default behavior of the |verbatim| package makes the following form to ignore the \meta{text} after the |\end|\meta{MGL environment}, issuing a warning. +% \begin{quote} +%|\begin{|\meta{MGL environment}|}|\\ +%\meta{contents of the environment}\\ +%|\end{|\meta{MGL environment}|}|\meta{text} +% \end{quote} +% +% \subsection{Setting up \textsf{\mglTeX} for use} +% \noindent Although \textsf{\mglTeX} is completely functional without any further set up, there are some parameters of its behavior that could be useful to modify. The following commands must be used in the preamble of the document only, since the first MGL script is created at the moment of the |\begin{document}| command, and otherwise they could create weird errors during compilation; trying to use them somewhere else will produce an error. +% +% \DescribeMacro{\mgldir} This command can be used to specify the main working directory for \textsf{\mglTeX}. Inside it, the scripts, backup files and graphics will be created, or can be separated inside subdirectories. This is useful, for example, to avoid many scripts and graphics from polluting the directory where the \LaTeX{} document is. % \begin{center} % \begin{tabular}{l} % \hline\\[-0.75em] -% |\begin{mgl}|\oarg{key-val list}\\[0.5em] -% \hss\meta{MGL code}\hss\\[0.5em] -% |\end{mgl}|\\[0.25em] +% |\mgldir|\marg{\mglTeX{} main directory}\\[0.25em] % \hline % \end{tabular} % \end{center} -% Here, \meta{key-val list} accepts the same optional arguments as the |\includegraphics| command from the \textsf{graphicx} package, plus an additional one, |imgext|, which can be used to specify the extension to save the graphic. The \meta{MGL code} doesn't need to contain any specific instruction to create the image, since \textsf{\mglTeX} takes care of that. -% -% \DescribeEnv{mgladdon} This environment adds its contents to the general script \meta{document}.mgl, but it doesn't produce any image. It doesn't require any kind of arguments. +% \meta{\mglTeX{} main directory} can be in the form of an absolute path or a relative path, and should be an existing location, since it won't be created automatically. +% +% \DescribeMacro{\mglscriptsdir} It specifies the subdirectory inside \meta{\mglTeX{} main directory} where the MGL scripts will be created. % \begin{center} % \begin{tabular}{l} % \hline\\[-0.75em] -% |\begin{mgladdon}|\\[0.5em] -% \hss\meta{MGL code}\hss\\[0.5em] -% |\end{mgladdon}|\\[0.25em] +% |\mglscriptsdir|\marg{MGL scripts subdirectory}\\[0.25em] % \hline % \end{tabular} % \end{center} -% -% \DescribeEnv{mglcode} This is the same as the |mgl| environment, but the corresponding code is written \emph{verbatim} to a separate script, whose name is specified as mandatory argument. It accepts the same optional arguments as |mgl|. +% +% \DescribeMacro{\mglgraphicsdir} It specifies the subdirectory inside \meta{\mglTeX{} main directory} where the MGL graphics will be created, including the ones from external scripts (not embedded inside the \LaTeX{} document). % \begin{center} % \begin{tabular}{l} % \hline\\[-0.75em] -% |\begin{mglcode}|\oarg{key-val list}\marg{script\_name}\\[0.5em] +% |\mglgraphicsdir|\marg{MGL graphics subdirectory}\\[0.25em] +% \hline +% \end{tabular} +% \end{center} +% +% \DescribeMacro{\mglbackupsdir} It specifies the subdirectory inside \meta{\mglTeX{} main directory} where backups for the MGL scripts will be created. +% \begin{center} +% \begin{tabular}{l} +% \hline\\[-0.75em] +% |\mglbackupsdir|\marg{MGL backups subdirectory}\\[0.25em] +% \hline +% \end{tabular} +% \end{center} +% +% The above commands can be used in various combinations. For example, if none of them is used, the scripts, graphics and backups will be created inside the same path where the \LaTeX{} document is being compiled; if only |\mgldir| is used, they will be created inside \meta{\mglTeX{} main directory}; if only |\mgldir| and |\mglscriptsdir| are used, the scripts will be created inside \meta{\mglTeX{} main directory}\meta{MGL scripts directory}, while the graphics and backups will be inside \meta{\mglTeX{} main directory} only; if |\mgldir| isn't used, but the other commands are, the \meta{MGL scripts subdirectory}, \meta{MGL graphics subdirectory} and \meta{MGL backups subdirectory} paths will be inside the the folder where the \LaTeX{} document is being compiled. +% +% \DescribeMacro{\mglpaths} In case of having external MGL scripts, it is not recommended to place them inside the same location as where the embedded scripts are extracted, since they could be accidentally overwritten or deleted by the user; they should be separated in a folder which can be specified in the form of an absolute or relative path using this command. +% \begin{center} +% \begin{tabular}{l} +% \hline\\[-0.75em] +% |\mglpaths|\marg{List of external MGL scripts paths/}\\[0.25em] +% \hline +% \end{tabular} +% \end{center} +% This command can be used many times or can be used to specify many paths at once. In the case of using it many times, each call will add the new directory to the list of searching paths; if it is used to specify many paths at once, they must be separated by commas. +% +% \subsection{Environments for MGL code embedding} +% \DescribeEnv{mgl}\noindent The main environment defined by \textsf{\mglTeX} is |mgl|. It extracts its contents to a main script, called \meta{name}.mgl, where \meta{name} stands for a name specified by the user with the |\mglname| command (see below), or the name of the \LaTeX{} document being executed otherwise; this script is compiled, and the corresponding image is included. +% \begin{center} +% \begin{tabular}{l} +% \hline\\[-0.75em] +% |\begin{mgl}|\oarg{key-val list}\\[0.5em] % \hss\meta{MGL code}\hss\\[0.5em] -% |\end{mglcode}|\\[0.25em] +% |\end{mgl}|\\[0.25em] % \hline % \end{tabular} % \end{center} -% -% \DescribeEnv{mglscript} The code within |mglscript| is written verbatim to a script whose name is specified as mandatory argument, but no image is produced. It is useful for creation of MGL scripts which can be later post-processed by another package, like \textsf{listings}. +% Here, \meta{key-val list} can have the same optional arguments as the |\includegraphics| command from the \textsf{graphicx} package, plus two additional ones, |imgext|, which can be used to specify the extension to save the graphic, and |label|, which can be used to indicate a name for the corresponding graphic (otherwise, an automatic naming will be applied). The \meta{MGL code} doesn't need to contain any specific instruction to create the image since \textsf{\mglTeX} takes care of that. +% +% \DescribeEnv{mgladdon} This environment adds its contents to the document's main script, but it doesn't produce any image. It doesn't require any kind of arguments. It is useful to add ``complementary code'', like loading of dynamic libraries, set default size for the graphics, etc. % \begin{center} % \begin{tabular}{l} % \hline\\[-0.75em] -% |\begin{mglscript}|\marg{script\_name}\\[0.5em] +% |\begin{mgladdon}|\\[0.5em] % \hss\meta{MGL code}\hss\\[0.5em] -% |\end{mglscript}|\\[0.25em] +% |\end{mgladdon}|\\[0.25em] % \hline % \end{tabular} % \end{center} -% -% \DescribeEnv{mglfunc} This is used to define MGL functions within the general script \meta{document}.mgl. It takes one mandatory argument, which is the name of the function, plus one optional argument, which specifies the number of arguments of the function. The environment needs to contain only the body of the function, since the lines ``func \meta{function\_name} \meta{number of arguments}'' and ``return'' are appended automatically at the beginning and the end, respectively. The resulting code is written at the end of the general script, after the |stop| command, which is also written automatically. +% +% \DescribeEnv{mglfunc} Is used to define MGL functions within the document's main script. It takes one mandatory argument, which is the name of the function, plus one optional argument, which specifies the number of arguments of the function (the default is $0$). The environment needs to contain only the body of the function, since the lines ``func \meta{function\_name} \meta{number of arguments}'' and ``return'' are appended automatically at the beginning and the end, respectively. The resulting code is written at the end of the document's main script, after the |stop| command, which is also written automatically. % \begin{center} % \begin{tabular}{l} % \hline\\[-0.75em] @@ -179,74 +330,64 @@ % \hline % \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. +% +% \DescribeEnv{mglcode} It has the same function as the |mgl| environment, but the corresponding code is written to a separate script, whose name is specified as mandatory argument. It accepts the same optional arguments as |mgl|, except, of course, the |label| option. % \begin{center} % \begin{tabular}{l} % \hline\\[-0.75em] -% |\begin{mglcommon}|\\[0.5em] +% |\begin{mglcode}|\oarg{key-val list}\marg{script\_name}\\[0.5em] % \hss\meta{MGL code}\hss\\[0.5em] -% |\end{mglcommon}|\\[0.25em] +% |\end{mglcode}|\\[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}''. +% +% \DescribeEnv{mglscript} The code within |mglscript| is written to a script whose name is specified as mandatory argument, but no image is produced. It is useful for creation of MGL scripts which can be later post-processed by another package, like \textsf{listings} or \textsf{pygments}. % \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] +% |\begin{mglscript}|\marg{script\_name}\\[0.5em] +% \hss\meta{MGL code}\hss\\[0.5em] +% |\end{mglscript}|\\[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|. +% +% \DescribeEnv{mglcommon} This is used to create a common ``setup'' script to define constants, parameters, etc. that will be available to the others. % \begin{center} % \begin{tabular}{l} % \hline\\[-0.75em] -% |\begin{mglcomment}|\\[0.5em] -% \hss\meta{Commentary}\hss\\[0.5em] -% |\end{mglcomment}|\\[0.25em] +% |\begin{mglcommon}|\\[0.5em] +% \hss\meta{MGL code}\hss\\[0.5em] +% |\end{mglcommon}|\\[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} -% +% If called more than once, it will overwrite the setup code. Also note that it should be used only to define constants, parameters and things like that, but not graphical objects like axis or grids, because 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.} +% +% For example, one could write +% \begin{quote} +% |\begin{mglcommon}|\\ +% |define gravity 9.81 # [m/s^2]|\\ +% |\end{mglcommon}| +% \end{quote} +% to make the constant \emph{gravity} available to every script. +% % \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 |mglsetup| environment, and then can be used when needed with the |\mglplot| command. -% -% \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. +% \noindent\textsf{\mglTeX} defines a convenient way to work with many graphics that have exactly the same settings (same rotation angles, same type of grid, same lighting, etc.): instead of writing repetitive code every time it's needed, it can be stored inside a |mglsetup| environment, and then can be used when needed with the |\mglplot| command. +% +% \DescribeEnv{mglsetup} This environment is defined as a special case of the |mglfunc| environment. It accepts one mandatory argument, which is a keyword (name) associated to the corresponding block of code (MGL function body). % \begin{center} % \begin{tabular}{l} % \hline\\[-0.75em] -% |\begin{mglsetup}|\oarg{keyword}\\[0.5em] +% |\begin{mglsetup}|\marg{keyword}\\[0.5em] % \hss\meta{MGL code}\hss\\[0.5em] % |\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 |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. +% +% \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 ``:'', and can span through various text lines. It accepts the same optional arguments as the |mgl| environment, plus two additional ones, called |setup| and |separator|. The |setup| option specifies a keyword associated to a |mglsetup| block, which will be executed before the code in the mandatory argument. The |separator| option specifies a text symbol that will break the code in the mandatory argument into a new physical line in the main script every time is encountered. % \begin{center} % \begin{tabular}{l} % \hline\\[-0.75em] @@ -254,73 +395,141 @@ % \hline % \end{tabular} % \end{center} -% +% % \subsection{Verbatim-like environments} -% \DescribeEnv{mglblock}\noindent It writes its contents \emph{verbatim} to a file, whose name is given as mandatory argument, and then it also typesets its contents on the \LaTeX{} document, numbering each line of code. +% \noindent The main purpose of these environments is to typeset their contents to the \LaTeX{} document, elegantly separated from the rest of the text. They have two versions: an unstarred version which can be listed later with the |\listofmglscripts| command (see below), and a starred version which won't be listed. +% +% Although these environments are intended to mimic the behavior of the |verbatim| environment from \LaTeX{}, there is an important difference, namely, long lines will be broken when the page margin is reached. This intended behavior is set because a language like MGL can easily have very long lines of code, like textual formulas, vectors input as lists of values, etc. Of course, no hyphenation will be performed, but the code will be indented in the second, third, etc. continuation lines by an amount specified by |\mglbreakindent| (see below). +% +% \DescribeEnv{mglblock}\DescribeEnv{mglblock*} Besides typesetting its contents to the document, |mglblock| creates a script whose name is specified as mandatory argument. It also accepts one optional argument, called |lineno|, whose default value is |true|, used to activate (|lineno=true|) or deactivate (|lineno=false|) line numbering inside the environment. The default behavior is to number each line of code. % \begin{center} % \begin{tabular}{l} % \hline\\[-0.75em] -% |\begin{mglblock}|\marg{script\_name}\\[0.5em] +% |\begin{mglblock}|\oarg{lineno value}\marg{script\_name}\\[0.5em] % \hss\meta{MGL code}\hss\\[0.5em] % |\end{mglblock}|\\[0.25em] % \hline % \end{tabular} % \end{center} -% -% \DescribeEnv{mglverbatim} It typesets its contents to the \LaTeX{} document, numbering each line of code. +% The ouput looks like this: +% \begin{quote} +% \makeatletter +% \MGL@set@script@name{example_script}% +% \refstepcounter{MGL@verb@script@no}% +% \addcontentsline{lms}{MGL@script}{\protect\numberline{\theMGL@verb@script@no.}{\ttfamily\protect\detokenize{\MGL@script@name.mgl}}}% +% \setcounter{MGL@line@no}{0}% +% \list{\mgllinenostyle\arabic{MGL@line@no}.}{}% +% \MGL@set@pseudo@verb@env +% \fboxrule=\mgllinethickness% +% \item[\MGL@line@sep]\fbox{\bfseries\ttfamily\expandafter\detokenize\expandafter{\MGL@script@name.mgl}}\hskip\labelsep\MGL@line@sep\par\par% +% \stepcounter{MGL@line@no}% +% \item new x 50 40 '0.8*sin(pi*x)*sin(pi*(y+1)/2)' +% \stepcounter{MGL@line@no}% +% \item new y 50 40 '0.8*cos(pi*x)*sin(pi*(y+1)/2)' +% \stepcounter{MGL@line@no}% +% \item new z 50 40 '0.8*cos(pi*(y+1)/2)' +% \stepcounter{MGL@line@no}% +% \item title 'Parametric surface' : rotate 50 60 : box +% \stepcounter{MGL@line@no}% +% \item surf x y z 'BbwrR' +% \item[\MGL@line@sep]\hskip-\labelsep\MGL@line@sep% +% \endlist% +% \end{quote} +% +% \DescribeEnv{mglverbatim}\DescribeEnv{mglverbatim*} This environment only typesets its contents to the \LaTeX{} document without creating any script. It accepts the |lineno| option, with default value |true|, plus an one called |label|, intended to specify a name associated to the corresponding code. The default behavior is to number each line of code. % \begin{center} % \begin{tabular}{l} % \hline\\[-0.75em] -% |\begin{mglverbatim}|\\[0.5em] +% |\begin{mglverbatim}|\oarg{key-val list}\\[0.5em] % \hss\meta{MGL code}\hss\\[0.5em] % |\end{mglverbatim}|\\[0.25em] % \hline % \end{tabular} % \end{center} -% -% \subsection{Working with external scripts} -% \noindent In case of having MGL scripts in their own files, \textsf{\mglTeX} can work with them without needing to transcript them to the \LaTeX{} document. -% -% \DescribeMacro{\mglgraphics} This command takes one mandatory argument, which is the name of an external MGL script, which will be automatically executed, and the resulting image will be included. The same optional arguments as the |mgl| environment are accepted. +% The output looks like this without |label|: +% \begin{quote} +% \makeatletter +% \setcounter{MGL@line@no}{0}% +% \list{\mgllinenostyle\arabic{MGL@line@no}.}{}% +% \MGL@set@pseudo@verb@env +% \fboxrule=\mgllinethickness% +% \MGL@set@script@name{\mglverbatimname}% +% \item[\MGL@line@sep]\hskip-\labelsep\MGL@line@sep% +% \refstepcounter{MGL@verb@script@no}% +% \addcontentsline{lms}{MGL@script}{\protect\numberline{\theMGL@verb@script@no.}{\ttfamily\protect\detokenize{\MGL@script@name}}}% +% \stepcounter{MGL@line@no}% +% \item new x 50 40 '0.8*sin(pi*x)*sin(pi*(y+1)/2)' +% \stepcounter{MGL@line@no}% +% \item new y 50 40 '0.8*cos(pi*x)*sin(pi*(y+1)/2)' +% \stepcounter{MGL@line@no}% +% \item new z 50 40 '0.8*cos(pi*(y+1)/2)' +% \stepcounter{MGL@line@no}% +% \item title 'Parametric surface' : rotate 50 60 : box +% \stepcounter{MGL@line@no}% +% \item surf x y z 'BbwrR' +% \item[\MGL@line@sep]\hskip-\labelsep\MGL@line@sep% +% \endlist% +% \end{quote} +% \noindent If a |label| is specified, the output will look exactly as that of the |mglblock| environment. +% +% \DescribeEnv{mglcomment} This environment is used to embed commentaries in the \LaTeX{} document. The commentary won't be visible in the case of the user passing the option |nocomments| to the package, but it will be typeset \emph{verbatim} to the document if the user passes the option |comments|. % \begin{center} % \begin{tabular}{l} % \hline\\[-0.75em] -% |\mglgraphics|\oarg{key-val list}\marg{script\_name}\\[0.25em] +% |\begin{mglcomment}|\\[0.5em] +% \hss\meta{Commentary}\hss\\[0.5em] +% |\end{mglcomment}|\\[0.25em] % \hline % \end{tabular} % \end{center} -% -% \DescribeMacro{\mglinclude} This command takes one mandatory argument, which is the name of an external MGL script, which will be automatically transcript \emph{verbatim} on the \LaTeX{} document, and each line of code will be numerated. +% If the user requests visible commentaries, this will result in the appearance of something like the following in the \LaTeX{} document: +% \begin{quote} +% \makeatletter +% \list{}{}% +% \MGL@set@pseudo@verb@env +% \item\hskip-\labelsep<\MGL@dash@sep\mglcommentname\MGL@dash@sep>% +% \item This is a MGL commentary +% \item\hskip-\labelsep<\MGL@dash@sep\mglcommentname\MGL@dash@sep>% +% \endlist% +% \end{quote} +% +% \subsection{Working with external scripts} +% \noindent External scripts exist in their own files, independently of the \LaTeX{} document ---for example, a script sent by a colleague, a script created before the actual writing of the \LaTeX{} document, etc. \textsf{\mglTeX} provides convenient ways to deal with external scripts, as if they were embedded. It must be noted, however, that the package works on the suposition that these scripts are in their final version, so no change detection is performed on them. If a external script is changed, the corresponding graphic must be manually deleted in oreder to force recompilation. +% +% \DescribeMacro{\mglinclude}\DescribeMacro{\mglinclude*} This command is the equivalent of the |mglverbatim| environment for external scripts. It takes one mandatory argument, which is the name of a MGL script, which will be automatically transcript \emph{verbatim} on the \LaTeX{} document. It accepts the same optional arguments as the |\mglgraphics| command, plus the |lineno| option to activate/deactivate line numbering. There are unstarred version of this command will be listed if |\listofmglscripts| is used, while the starred version won't. % \begin{center} % \begin{tabular}{l} % \hline\\[-0.75em] -% |\mglinclude|\marg{script\_name}\\[0.25em] +% |\mglinclude|\marg{script\_name}\oarg{lineno boolean value}\\[0.25em] % \hline % \end{tabular} % \end{center} -% -% \subsection{Additional commands} -% \DescribeMacro{\mgldir}\noindent This command can be used to specify where \textsf{\mglTeX} should create the MGL scripts and corresponding images. This is useful, for example, to avoid a lot of scripts and images from polluting the current directory. +% +% \DescribeMacro{\mglgraphics} This takes one mandatory argument, which is the name of an external MGL script, which will be automatically executed, and the resulting image will be included. The same optional arguments as the |\includegraphics| command are accepted, plus the |imgext| option to specify the extension of the resulting graphic, and an additional option, |path|, which can be used to specify the location of the script. % \begin{center} % \begin{tabular}{l} % \hline\\[-0.75em] -% |\mgldir|\marg{directory}\\[0.25em] +% |\mglgraphics|\oarg{key-val list}\marg{script\_name}\\[0.25em] % \hline % \end{tabular} % \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. +% +% \subsection{Additional commands} +% \DescribeMacro{\mglname}\noindent This command can be used in the preamble of the document to indicate the name of the main script, passed as mandatory argument. If used after the |\begin{document}| command, it will force the closure of the current main script, create the corresponding graphics, and start a new script with the specified name. % \begin{center} % \begin{tabular}{l} % \hline\\[-0.75em] -% |\mglquality|\marg{quality}\\[0.25em] +% |\mglname|\marg{main\_script\_name}\\[0.25em] % \hline % \end{tabular} % \end{center} -% The available qualities are described below: +% +% The use of this command is encourage when writing large documents, like books or thesis, to create a main script per document block (section, chapter, part, etc.). Since the |mgl| environment and the |\mglplot| command use an internal counter to automatically name scripts, unless the |label| option is used; if a new script is added this way to the document, it will alter the original numbering, causing \textsf{\mglTeX} to recompile the scripts from that point on (for more details, read subsection \ref{subsection: recompilation decision}). If the |\mglname| command is used, only the scripts of the current document block will be recompiled. +% +% \DescribeMacro{\mglquality} The default quality for the creation of MGL graphics can be specified with this command. Its effect is local, meaning that the new quality will be applied from the point this command is used on. An info message will be printed in the |.log| file indicating the characteristics of the chosen value, according to the following table: % \begin{center} -% \begin{tabular}{cl} +% \DeleteShortVerb{\|} +% \begin{tabular}{|c|l|} % \hline % Quality & Description\\ % \hline @@ -339,14 +548,33 @@ % \hline % $6$ & High quality, direct bitmap drawing (low memory usage)\\ % \hline -% $7$ & High quality with 3d primitives, direct bitmap drawing (not implemented yet)\\ +% $7$ & High quality with 3d primitives, direct bitmap drawing\\ +% & (not implemented yet)\\ % \hline % $8$ & Draw dots instead of primitives (extremely fast)\\ % \hline % \end{tabular} +% \MakeShortVerb{\|} % \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. +% If a non available quality is chosen, it will be changed to $2$ (the default), and a warning message will be issued for the user. +% \begin{center} +% \begin{tabular}{l} +% \hline\\[-0.75em] +% |\mglquality|\marg{quality value}\\[0.25em] +% \hline +% \end{tabular} +% \end{center} +% +% \DescribeMacro{\mglscale} Can be used to specify the default scaling for the creation of MGL graphics (1 is normal scaling, 2 is twice as bigger, etc.). Its effect is local, meaning that the new scaling will be applied from the point this command is used on. Any non negative value can be specified. +% \begin{center} +% \begin{tabular}{l} +% \hline\\[-0.75em] +% |\mglscale|\marg{scale value}\\[0.25em] +% \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. % \begin{center} % \begin{tabular}{l} % \hline\\[-0.75em] @@ -354,8 +582,8 @@ % \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. +% +% \DescribeMacro{\mgltexoff} This command has the same effect as the package option |off|, i.e., DO NOT create the scripts and corresponding graphics, but its effect is local. % \begin{center} % \begin{tabular}{l} % \hline\\[-0.75em] @@ -363,18 +591,19 @@ % \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. +% +% Observe that |\mgltexon| and |\mgltexoff| can be used to save time when writing a document, wrapping a section with them, avoiding recompilation of the corresponding scripts. +% +% \DescribeMacro{\mglcomments} This command has the same effect as the package option |comments|, i.e., show all the commentaries contained within |mglcomment| environments, but its effect is local. % \begin{center} % \begin{tabular}{l} % \hline\\[-0.75em] -% |\mglcoments|\\[0.25em] +% |\mglcomments|\\[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. +% +% \DescribeMacro{\mglnocomments} This command has the same effect as the package option |nocomments|, i.e., DO~NOT show the contents of |mglcomment| environments, but its effect is also local. % \begin{center} % \begin{tabular}{l} % \hline\\[-0.75em] @@ -382,9 +611,14 @@ % \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{\listofmglscripts} Opens a new section or chapter---depending on the \LaTeX{} class used---, where all the scripts that have been transcript in the document with the unstarred versions of the |mglblock| and |mglverbatim| environments, and the |\mglinclude| command, are listed. In case a |mglverbatim| is used, but no |label| is specified, the default name to display is specified by the |\mglverbatimname| macro (see below), otherwise, the corresponding label is typeset. The output is like this: +% \begin{center} +% \begin{minipage}{0.9\textwidth} +% \listofmglscripts +% \end{minipage} +% \end{center} +% % \DescribeMacro{\mglTeX} This command just pretty-prints the name of the package. % \begin{center} % \begin{tabular}{l} @@ -393,1552 +627,2001 @@ % \hline % \end{tabular} % \end{center} -% +% +% \DescribeMacro{\mglTeXwVer} This command just pretty-prints the name of the package with its version in a coherent manner, separated by a an unbreakable space. +% \begin{center} +% \begin{tabular}{l} +% \hline\\[-0.75em] +% |\mglTeXwVer|\\[0.25em] +% \hline +% \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: +% \noindent There are macros that the user is allowed to modify in order to customize some aspects of the behavior of \textsf{\mglTeX}. For example, if writing in spanish, french or russian, the user would like to modify the name of the common script, the words typeset in the separator lines of MGL commentaries, the name of the list of MGL scripts, etc. +% +% \DescribeMacro{\mglcommonscriptname} It is the name for the common script that takes the contents of the |mglcommon| environment. The default name is defined by % \begin{quote} -% \mglcomm\\ -% \mglcomm\ This script was generated from \meta{document}.mgl on date \meta{today}\\ -% \mglcomm +% |\def\mglcommonscriptname{MGL_common_script}| % \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. -% -% When \textsf{\mglTeX} is unable to find a graphic that is supposed to include, instead of producing an error, it will warn the user about it, and will display a box in the corresponding position of the document, like the following one: -% \begin{center} -% \framebox[10em]{ -% \centering -% \bfseries\Huge -% \vbox{MGL\\image\\not\\found} -% } -% \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). -% \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}% +% +% \DescribeMacro{\mglcommentname} This macro expands to the words typeset before and after a MGL commentary, in the middle of the separator lines. The default words are set by +% \begin{quote} +% |\def\mglcommentname{MGL commentary}| +% \end{quote} +% +% \DescribeMacro{\listofmglscriptsname} This is the name of the section/chapter created by the command |\listofmglscripts|. The default is set by +% \begin{quote} +% |\def\listofmglscriptsname{List of MGL scripts}| +% \end{quote} +% +% \DescribeMacro{\mglverbatimname} This is the default name to be printed in the list of MGL scripts for scripts created with the unstarred version of |mglverbatim|, for which a |label| hasn't been specified. The default is +% \begin{quote} +% |\def\mglverbatimname{(Unnamed MGL script)}| +% \end{quote} +% +% \DescribeMacro{\mgllinenostyle} Indicates the style for typeseting the line numbers inside the |mglblock| and |mglverbatim| environments, and the |\mglinclude| command. The default is +% \begin{quote} +% |\def\mgllinenostyle{\footnotesize}| +% \end{quote} +% +% \DescribeMacro{\mgldashwidth} The dashes of the separator lines for the |mglcomment| environment are contained inside boxes whose width is specified by this macro. For practical purposes, this dimension can be used to increase/decrease the space between the dashes. The default is +% \begin{quote} +% |\mgldashwidth=0.75em| +% \end{quote} +% It is recommended to use font-dependent units for this dimension, like |em|, just in case the font is changed later, so it adapts to the new metric.\footnote{A rule of thumb is to use \texttt{em} units for horizontal dimensions, and \texttt{ex} units for vertical dimensions.} +% +% \DescribeMacro{\mgllinethickness} It is the thickness of the separator lines for the |mglblock| and |mglverbatim| environments, and the |\mglinclude| command. The default is +% \begin{quote} +% |\mgllinethickness=0.25ex| +% \end{quote} +% It is also recommended to use font-dependent units for this dimension, like |ex|. +% +% \DescribeMacro{\mglbreakindent} \textsf{\mglTeX} allows line breaking inside verbatim-like environments and commands. When a line of code is broken, |\mglbreakindent| is the indentation of the second, third, etc. continuation lines. The default is +% \begin{quote} +% |\mglbreakindent=1em| +% \end{quote} +% Once more, font-dependent units are encourage. +% +% \section{Behavior of \textsf{\mglTeX}} +% \noindent \textsf{\mglTeX} has many convenient features designed for the comfort of the user, and to reduce the possibility of unintentional malfunction. +% \subsection{Creation and inclusion of MGL scripts and graphics} +% \noindent All environments and commands for MGL code embedding check for multiple scripts with the same name. This detection is performed in order to avoid unintentionally overwriting scripts, or creating confusion with different verbatim chunks of code with the same name. If such multiple naming is found a warning will be issued. However, external scripts are supposed to be responsibility of the user, so no detection of multiple naming will be performed on them. +% +% When \textsf{\mglTeX} is unable to find a graphic that is supposed to include, instead of producing an error, it will warn the user about it, and will display a box in the corresponding position of the document like the one shown in figure~\ref{fig: MGL image not found box}. +% \begin{figure}[!ht] +% \centering +% \fbox{% +% \centering% +% \bfseries\Huge% +% \begin{tabular}{c}MGL\\image\\not\\found\end{tabular}% +% } +% \caption{This box is shown by \textsf{\mglTeX} instead of a graphic that should be included, but can't be found.}\label{fig: MGL image not found box} +% \end{figure} +% Notice that the first time or even the second time \LaTeX{} is executed, many of these boxes will appear in the document, because the first run detects changes on scripts, while the second run creates the graphics, but not all of them are included, until \LaTeX{} is run for the third time. +% +% Likewise, when a script isn't found, a warning will be issued for the user, and, if that script was meant to be included in the document by a |\mglinclude| command, the box shown in figure~\ref{fig: MGL script not found box} will be displayed instead. +% \begin{figure}[!ht] +% \centering +% \fbox{% +% \centering% +% \bfseries\Huge% +% \begin{tabular}{c}MGL\\script\\not\\found\end{tabular}% +% } +% \caption{This box is shown by \textsf{\mglTeX} instead of a script that should be included, but can't be found.}\label{fig: MGL script not found box} +% \end{figure} +% +% When \textsf{\mglTeX} is |off| no MGL graphics will be generated nor will be included, but instead, a box like the one of figure~\ref{fig: mglTeX is off box} will be shown. +% \begin{figure}[!ht] +% \centering +% \fbox{% +% \centering% +% \bfseries\Huge% +% \begin{tabular}{c}\mglTeX\\is off;\\no image\\included\end{tabular}% +% } +% \caption{This box is shown instead of an image when \textsf{\mglTeX} is \texttt{off}.}\label{fig: mglTeX is off box} +% \end{figure} +% +% \subsection{Recompilation-decision algorithm}\label{subsection: recompilation decision} +% \noindent \textsf{\mglTeX} has the builtin capacity of detecting changes in MGL scripts, so that a script is recompiled only when it has changed, not every time \LaTeX{} is executed. This saves a lot of time, since most of the compilation time of a document is spent on the creation (and conversion to another format, if necessary) of the graphics. +% +% This is how the recompilation-decision is performed: When \textsf{\mglTeX} finds an environment or command meant to create a graphic, it checks if the command |\MGL@@@|\meta{script} is defined, where \meta{script} is the name of the current script. If the command is undefined, this means the script has changed, so the corresponding code is transcript to the file \meta{script}.mgl, and the command |\MGL@@@|\meta{script} is defined. If the command is already defined, this means the script has been created on a previous \LaTeX{} run, so this time the embedded code is compared against the contents of the script; if they are equal, then |\MGL@@@|\meta{script} is defined again, otherwise, it is undefined, so the next \LaTeX{} run will rewrite/recompile the code. This process is schematically represented in figure~\ref{fig: recompilation decision}. +% +% \begin{figure}[ht!] +% \centering +% \includegraphics[scale=0.35]{Recompilation_decision} +% \caption{The algorithm used by \textsf{\mglTeX} to decide which scripts recereate/recompile.}\label{fig: recompilation decision} +% \end{figure} +% +% The recompilation-decision mechanism can be fooled, however. The |mgl| environment and |\mglplot| command have the ability to automatically name scripts by means of the use of an internal counter, unless the |label| option is specified. Suppose the user wants to add a new |mgl| environment or |\mglplot| command exactly after the $(n-1)$th script, so the $n$th script will be the newly added, while the old $n$th will be the new $(n+1)$th, and so on, altering the original numbering. This will cause \textsf{\mglTeX} to compare the old $n$th script with the old $(n+1)$th, and so on, deciding they are different, so they will be recompiled. +% +% There are two ways to avoid this problem: The first one is to use the |label| option on the newly arrived; the second is to wrap a complete block of the document with the |\mgltexoff| and |\mgltexon| commands, avoiding recompilation and saving time. This last option will avoid the inclusion of the MGL graphics, so it is only recommended in case of the wrapped scripts being in their final version (not needing further modification), so there is no need of updating the corresponding graphics; then, when the document is compiled in its final version, the |\mgltexoff| and |\mgltexon| can be removed. However, the most recommended way of proceeding is to use the |\mglname| command to create a separated main script per document block (section, chapter, part, etc.), so that, if a new script disrupts the original numbering, \textsf{\mglTeX} will recompile only the scripts of the current block. +% +% There are situations when recompilation of a script has to be forced. For example, if the default quality has changed, but the script hasn't, \textsf{\mglTeX} won't recreate the corresponding graphic by its own initiative, because it won't detect any changes in the code. In order to force recompilation, the image of the corresponding script can be deleted: \textsf{\mglTeX} will detect this abscence in the next \LaTeX{} run and recompile. +% +% \section{Acknowledgements} +% \noindent \textsf{\mglTeX} was born as a small personal project. It has grown and mature under the constant suggestions and requests from Prof. Alexey Balakin. +% +% \section{Redistributing and modifying} +% \noindent The \emph{source code} of \textsf{\mglTeX} (.sty, .dtx, and .ins files) can be redistributed and/or modified under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. The \emph{documentation} of \textsf{\mglTeX} (.dvi, .ps, .pdf and other files) is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License. +% +% \StopEventually{\PrintChanges\PrintIndex} +% +% \section{Implementation} +% \noindent This section documents the complete implementation of \textsf{\mglTeX}. It's main purpose is to facilitate the understanding and maintanance of the package's code. For the following, we use ``|@|'' in the name of macros the user should not modify; the prefix ``|MGL|'' is used to simulate a namespace, so the macros from \textsf{\mglTeX} won't interfere with the ones from other packages. +% +% \subsection{Initialization} +% \noindent We first define some macros that will serve different purposes on different parts of the package. +% \begin{macro}{\MGL@TeX@ext} +% Is used to determine whether the user has chosen to save graphics in \LaTeX/Tikz format. +% \begin{macrocode} +\def\MGL@TeX@ext{.tex} +% \end{macrocode} +% \end{macro} +% +% Now we declare the options |final| and |draft|, which are simply passed to the \textsf{graphicx} package. +% \begin{macrocode} + +\DeclareOption{draft}{% + \PassOptionsToPackage{\CurrentOption}{graphicx}% } \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. +% +% The next options are |on| and |off|. Since they are equivalent to the commands |\mgltexon| and |\mgltexoff|, respectively, instead of writing the same code twice (one time for the options and one time for the commands), we first define the commands and then make the options execute them. +% \begin{macro}{\mgltexon} +% (Re)defines the commands to open, read, write and close scripts, and the command that includes MGL graphics. % \begin{macrocode} -\newif\if@mgltex@on@ + +\def\mgltexon{% +% \end{macrocode} +% \begin{macro}{\MGL@openout} +% Opens a script for writing. It takes two arguments, the first being an output stream number, allocate by |\newwrite| (\TeX{} command), and the second being the path to the script. +% \begin{macrocode} + \def\MGL@openout##1##2{% + \immediate\openout##1="##2"% + }% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\MGL@openin} +% Opens a script for reading. It takes two arguments, the first being an input stream number, allocate by |\newread| (\TeX{} command), and the second being the path to the script. +% \begin{macrocode} + \def\MGL@openin##1##2{% + \immediate\openin##1="##2"% + }% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\MGL@write} +% Writes to a script opened with |\MGL@openout|. Its first argument is the output stream number of the script, and the second is the text to write. +% \begin{macrocode} + \def\MGL@write##1##2{% + \immediate\write##1{##2}% + }% % \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}} +% \end{macro} +% \begin{macro}{\MGL@read} +% Reads one line from a script opened with |\MGL@openin|. Its first argument is the input stream number of the script, and the second is a variable where the read text will be stored. The variable is first initialized as empty; if the end of the script has been reached, then there is nothing to read, so it remains empty; otherwise, one line is read and stored in the variable, locally supressing any end line character (|\endlinechar=-1|). % \begin{macrocode} -\DeclareOption{on}{% - \@mgltex@on@true% - \def\mgl@write#1#2{% - \immediate\write#1{#2}% + \def\MGL@read##1##2{% + \def##2{}% + \ifeof##1\else% + \bgroup% + \endlinechar=-1% + \immediate\global\read##1 to ##2% + \egroup% + \fi% + }% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\MGL@closeout} +% Closes a script opened with |\MGL@openout|, whose stream number is passed as argument. +% \begin{macrocode} + \def\MGL@closeout##1{% + \immediate\closeout##1% } -} % \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). +% \end{macro} +% \begin{macro}{\MGL@closein} +% Closes a script opened with |\MGL@openin|, whose stream number is passed as argument. % \begin{macrocode} -\DeclareOption{off}{% - \@mgltex@on@false% - \def\mgl@write#1#2{}% -} + \def\MGL@closein##1{% + \immediate\closein##1% + } +% \end{macrocode} +% \end{macro} +% \begin{macro}{\MGL@includegraphics} +% This is a quite sophisticated command. It is in charge of including the graphics created by \textsf{\mglTeX}. +% \begin{macrocode} + \def\MGL@includegraphics{% % \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. +% First checks if the image exists. Note the |\MGL@dir| and |\MGL@graphics@dir| macros are set by the user with the |\mgldir| and |\mglgraphicsdir| commands, respectively, while |\MGL@script@name| stores the name of the script ---and thus the image--- executed, and |\MGL@graph@ext| is the extension chosen by the user to save the graphics. % \begin{macrocode} -\newif\if@mgl@comments@ + \IfFileExists{\MGL@dir\MGL@graphics@dir\MGL@script@name\MGL@graph@ext}{% % \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}} +% If the chosen extension is |.tex|, a \LaTeX/Tikz file has been created, which has to be simply included in the document; it will be automatically compiled by \LaTeX{}. (Observe we use the |\MGL@TeX@ext| macro defined above.) +% \begin{macrocode} + \ifx\MGL@graph@ext\MGL@TeX@ext% + \include{\MGL@dir\MGL@graphics@dir\MGL@script@name\MGL@graph@ext}% +% \end{macrocode} +% If the chosen extension is not |.tex|, a normal visual image has been created, so the |\includegraphics| command is invoked to deal with it. The options for this command (like |scale|, |angle|, etc.) are stored in the |\MGL@graph@keys| macro, which is defined by every environment or command that creates and compiles MGL scripts, according to the optional arguments the user has passed. +% \begin{macrocode} + \else% + \expandafter\includegraphics\expandafter[\MGL@graph@keys]{% + \MGL@dir\MGL@graphics@dir\MGL@script@name% + }% + \fi% + }{% +% \end{macrocode} +% If the requested image doesn't exist, the issue a warning message for the user, and print a warning framed box (``\textbf{MGL image not found}'') in the place the image should occupy. +% \begin{macrocode} + \PackageWarning{mgltex}{MGL image "\MGL@script@name" not found}% + \fbox{% + \centering% + \bfseries\Huge% + \begin{tabular}{c}MGL\\image\\not\\found\end{tabular}% + }% + }% + }% +% \end{macrocode} +% \end{macro} +% And here ends the |\mgltexon| command. % \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. +% \end{macro} +% +% \begin{macro}{\mgltexoff} +% (Re)defines the same commands as |\mgltexon| in such a way they accept the same arguments, but do nothing. The exception is |\MGL@includegraphics| which, instead of doing nothing, prints a warning framed box (``\textbf{\mglTeX{} is off; no image included}''). % \begin{macrocode} -\DeclareOption{nocomments}{% - \@mgl@comments@false% +\def\mgltexoff{% + \PackageWarning{mgltex}{mglTeX is off}% + \def\MGL@openout##1##2{}% + \def\MGL@openin##1##2{}% + \def\MGL@write##1##2{}% + \def\MGL@read##1##2{}% + \def\MGL@closeout##1{} + \def\MGL@closein##1{} + \def\MGL@includegraphics{% + \fbox{% + \centering% + \bfseries\Huge% + \begin{tabular}{c}\mglTeX\\is off;\\no image\\included\end{tabular}% + }% + }% } % \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. +% \end{macro} +% Now we can declare the package options |on| and |off| so that they execute |\mgltexon| and |\mgltexoff|, respectively. +% \begin{macrocode} +\DeclareOption{on}{\mgltexon} +\DeclareOption{off}{\mgltexoff} +% \end{macrocode} +% +% The options |nocomments| and |comments| are equivalent to the commands |\mglnocomments| and |\mglcomments|, respectively, so, following the same logic as before, we first define the commands and make the options execute them. +% \begin{macro}{\@MGL@comments@} +% We will need a boolean switch to activate/deactivate commentaries later. % \begin{macrocode} -\DeclareGraphicsExtensions{% - .png,.eps,.jpg,.jpeg,.bps,.pdf,.epsz,.eps.gz,.bpsz,.bps.gz,.gif% +\newif\if@MGL@comments@ +% \end{macrocode} +% \end{macro} +% \begin{macro}{\mglnocomments} Declares |\@MGL@comments@| as false. +% \begin{macrocode} +\def\mglnocomments{\@MGL@comments@false} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\mglcomments} Declares |\@MGL@comments@| as true. +% \begin{macrocode} +\def\mglcomments{\@MGL@comments@true} +% \end{macrocode} +% \end{macro} +% Now, the options call the respective commands. +% \begin{macrocode} +\DeclareOption{nocomments}{\mglnocomments} +\DeclareOption{comments}{\mglcomments} +% \end{macrocode} +% +% \begin{macro}{\mglscale}\begin{macro}{\MGL@scale} +% |\mglscale| sets the value of the |\MGL@scale| macro, which is used later to specify the default scaling for graphics. It only accepts integer values from $1$ to $9$, otherwise it issues a warning and restarts the scaling to $1$. In order to be able to check the validity of the value passed by the user, we first set the |\MGL@scale| macro to that value and test it with the |\ifcase| conditional; if the value is valid, we do nothing, but if it is invalid, we issue a warning and overwrite |\MGL@scale| to $1$. +% \begin{macrocode} + +\def\mglscale#1{ + \def\MGL@scale{#1}% + \ifcase\MGL@scale\or\or\or\or\or\or\or\or\else% + \PackageWarning{mgltex}{% + Scaling value of \MGL@scale\space not allowed; using default (1)% + }% + \def\MGL@scale{1}% + \fi% } +% \end{macrocode} +% \end{macro}\end{macro} +% The pacakage options |1x|, \ldots, |9x| just call |\mglscale| with the appropiate value. +% \begin{macrocode} +\DeclareOption{1x}{\mglscale{1}} +\DeclareOption{2x}{\mglscale{2}} +\DeclareOption{3x}{\mglscale{3}} +\DeclareOption{4x}{\mglscale{4}} +\DeclareOption{5x}{\mglscale{5}} +\DeclareOption{6x}{\mglscale{6}} +\DeclareOption{7x}{\mglscale{7}} +\DeclareOption{8x}{\mglscale{8}} +\DeclareOption{9x}{\mglscale{9}} +% \end{macrocode} +% +% \begin{macro}{\mglquality}\begin{macro}{\MGL@quality} +% |\mglquality| sets the value of the |\MGL@quality| macro, which is used later to specify the default quality for graphics. It only accepts integer values from $0$ to $8$ (the only ones defined by |MathGL|), otherwise it issues a warning and restarts to $2$ (the default for |MathGL|). In order to be able to check the validity of the value passed by the user, we first set the |\MGL@quality| macro to that value and test it with the |\ifcase| conditional; if the value is valid, we print an info message to the |.log| file about the characteristics of the chosen quality, but if it is invalid, we issue a warning and overwrite |\MGL@scale| to $2$. +% \end{macro}\end{macro} +% \begin{macrocode} -\DeclareOption{jpg}{\def\mgl@image@ext{.jpg}} -\DeclareOption{jpeg}{\def\mgl@image@ext{.jpeg}} -\DeclareOption{pdf}{\def\mgl@image@ext{.pdf}} -\DeclareOption{png}{\def\mgl@image@ext{.png}} -\DeclareOption{eps}{\def\mgl@image@ext{.eps}} -\DeclareOption{epsz}{\def\mgl@image@ext{.eps.gz}} -\DeclareOption{bps}{\def\mgl@image@ext{.bps}} -\DeclareOption{bpsz}{\def\mgl@image@ext{.bps.gz}} -\DeclareOption{gif}{\def\mgl@image@ext{.gif}} +\def\mglquality#1{% + \def\MGL@quality{#1}% + \ifcase\MGL@quality% + \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)% + }% + \def\MGL@quality{2}% + \fi% +} +% \end{macrocode} +% The package options |0q|, \ldots, |8q| just call |\mglquality| with the appropiate value. +% \begin{macrocode} +\DeclareOption{0q}{\mglquality{0}} +\DeclareOption{1q}{\mglquality{1}} +\DeclareOption{2q}{\mglquality{2}} +\DeclareOption{3q}{\mglquality{3}} +\DeclareOption{4q}{\mglquality{4}} +\DeclareOption{5q}{\mglquality{5}} +\DeclareOption{6q}{\mglquality{6}} +\DeclareOption{7q}{\mglquality{7}} +\DeclareOption{8q}{\mglquality{8}} +% \end{macrocode} +% +% \begin{macro}{\MGL@graph@ext} +% The following options set the default graphics extension, which is stored in the |\MGL@graph@ext| macro for later use. +% \begin{macrocode} -\DeclareOption{tex}{\def\mgl@image@ext{.tex}} +\DeclareOption{eps}{\def\MGL@graph@ext{.eps}} +\DeclareOption{epsz}{\def\MGL@graph@ext{.epsz}} +\DeclareOption{epsgz}{\def\MGL@graph@ext{.eps.gz}} +\DeclareOption{bps}{\def\MGL@graph@ext{.bps}} +\DeclareOption{bpsz}{\def\MGL@graph@ext{.bpsz}} +\DeclareOption{bpsgz}{\def\MGL@graph@ext{.bps.gz}} +\DeclareOption{pdf}{\def\MGL@graph@ext{.pdf}} +\DeclareOption{png}{\def\MGL@graph@ext{.png}} +\DeclareOption{jpg}{\def\MGL@graph@ext{.jpg}} +\DeclareOption{jpeg}{\def\MGL@graph@ext{.jpeg}} +\DeclareOption{gif}{\def\MGL@graph@ext{.gif}} +\DeclareOption{tex}{\def\MGL@graph@ext{.tex}} % \end{macrocode} -% -% Other options produce an error message. +% \end{macro} +% +% Any other option passed by the user is invalid, so an error message is issued. % \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. +% +% We now declare the default package options, and, finally, process the options the user specifies in the order they are introduced. % \begin{macrocode} -\ExecuteOptions{final,on,nocomments,eps} +\ExecuteOptions{final,on,nocomments,1x,2q,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. +% +% \textsf{\mglTeX} requires the \textsf{keyval} package to define \meta{key}=\meta{value} options for the environments and commands; the \textsf{graphicx} package apports the facilities for inclusion of graphics, and the \textsf{verbatim} package is used as engine for the environments. % \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,}} -\define@key{mgl@keys}{bblly}{\g@addto@macro{\graph@keys}{bblly=#1,}} -\define@key{mgl@keys}{bburx}{\g@addto@macro{\graph@keys}{bburx=#1,}} -\define@key{mgl@keys}{bbury}{\g@addto@macro{\graph@keys}{bbury=#1,}} -\define@key{mgl@keys}{natwidth}{\g@addto@macro{\graph@keys}{natwidth=#1,}} -\define@key{mgl@keys}{natheight}{\g@addto@macro{\graph@keys}{natheight=#1,}} -\define@key{mgl@keys}{hiresbb}{\g@addto@macro{\graph@keys}{hiresbb=#1,}} -\define@key{mgl@keys}{viewport}{\g@addto@macro{\graph@keys}{viewport=#1,}} -\define@key{mgl@keys}{trim}{\g@addto@macro{\graph@keys}{trim=#1,}} -\define@key{mgl@keys}{angle}{\g@addto@macro{\graph@keys}{angle=#1,}} -\define@key{mgl@keys}{origin}{\g@addto@macro{\graph@keys}{origin=#1,}} -\define@key{mgl@keys}{width}{\g@addto@macro{\graph@keys}{width=#1,}} -\define@key{mgl@keys}{height}{\g@addto@macro{\graph@keys}{height=#1,}} -\define@key{mgl@keys}{totalheight}{\g@addto@macro{\graph@keys}{totalheight=#1,}} -\define@key{mgl@keys}{keepaspectratio}{\g@addto@macro{\graph@keys}{keepaspectratio=#1,}} -\define@key{mgl@keys}{scale}{\g@addto@macro{\graph@keys}{scale=#1,}} -\define@key{mgl@keys}{clip}[true]{\g@addto@macro{\graph@keys}{clip=#1,}} -\define@key{mgl@keys}{draft}[false]{\g@addto@macro{\graph@keys}{draft=#1,}} -\define@key{mgl@keys}{type}{\g@addto@macro{\graph@keys}{type=#1,}} -\define@key{mgl@keys}{ext}{\g@addto@macro{\graph@keys}{ext=#1,}} -\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}} +\RequirePackage{keyval} +\RequirePackage{graphicx} +\RequirePackage{verbatim} % \end{macrocode} +% The supported graphic formats are declared, and the |\verbatim@finish| command from the \textsf{verbatim} package is disabled to avoid it from writing a blank line at the end of every script (see subsection~\ref{subsection: warning}). +% \begin{macrocode} +\DeclareGraphicsExtensions{% + .eps,.epsz,.eps.gz,.bps,.bpsz,.bps.gz,.pdf,.png,.jpg,.jpeg,.gif% +} +\let\verbatim@finish\relax +% \end{macrocode} +% +% \begin{macro}{\MGL@graph@keys} +% The main family of \meta{key}=\meta{value} pairs is defined. These pairs are common to every environment or command that produces graphics. Most of the \meta{key}'s are redefinitions of the optional arguments for the |\includegraphics| commands, so they are stored inside the |\MGL@graph@keys| macro, which is later passed to that command as optional argument by |\MGL@includegraphics|. +% \begin{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. +\define@key{MGL@keys}{bb}{\g@addto@macro\MGL@graph@keys{bb=#1,}} +\define@key{MGL@keys}{bbllx}{\g@addto@macro\MGL@graph@keys{bbllx=#1,}} +\define@key{MGL@keys}{bblly}{\g@addto@macro\MGL@graph@keys{bblly=#1,}} +\define@key{MGL@keys}{bburx}{\g@addto@macro\MGL@graph@keys{bburx=#1,}} +\define@key{MGL@keys}{bbury}{\g@addto@macro\MGL@graph@keys{bbury=#1,}} +\define@key{MGL@keys}{natwidth}{\g@addto@macro\MGL@graph@keys{natwidth=#1,}} +\define@key{MGL@keys}{natheight}{\g@addto@macro\MGL@graph@keys{natheight=#1,}} +\define@key{MGL@keys}{hiresbb}{\g@addto@macro\MGL@graph@keys{hiresbb=#1,}} +\define@key{MGL@keys}{viewport}{\g@addto@macro\MGL@graph@keys{viewport=#1,}} +\define@key{MGL@keys}{trim}{\g@addto@macro\MGL@graph@keys{trim=#1,}} +\define@key{MGL@keys}{angle}{\g@addto@macro\MGL@graph@keys{angle=#1,}} +\define@key{MGL@keys}{origin}{\g@addto@macro\MGL@graph@keys{origin=#1,}} +\define@key{MGL@keys}{width}{\g@addto@macro\MGL@graph@keys{width=#1,}} +\define@key{MGL@keys}{height}{\g@addto@macro\MGL@graph@keys{height=#1,}} +\define@key{MGL@keys}{totalheight}{\g@addto@macro\MGL@graph@keys{totalheight=#1,}} +\define@key{MGL@keys}{keepaspectratio}[true]{% + \g@addto@macro\MGL@graph@keys{keepaspectratio=#1,}% +} +\define@key{MGL@keys}{scale}{\g@addto@macro\MGL@graph@keys{scale=#1,}} +\define@key{MGL@keys}{clip}[true]{\g@addto@macro\MGL@graph@keys{clip=#1,}} +\define@key{MGL@keys}{draft}[true]{\g@addto@macro\MGL@graph@keys{draft=#1,}} +\define@key{MGL@keys}{type}{\g@addto@macro\MGL@graph@keys{type=#1,}} +\define@key{MGL@keys}{ext}{\g@addto@macro\MGL@graph@keys{ext=#1,}} +\define@key{MGL@keys}{read}{\g@addto@macro\MGL@graph@keys{read=#1,}} +\define@key{MGL@keys}{command}{\g@addto@macro\MGL@graph@keys{command=#1,}} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\MGL@graph@ext} +% Stores the default extension for the creation of the graphics. +% \begin{macrocode} +\define@key{MGL@keys}{imgext}{\def\MGL@graph@ext{.#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@MGL@lineno@} +% The only \meta{key}=\meta{value} pair needed for verbatim-like environments and commands is the one for the |lineno| option, which sets the value of the |\@MGL@lineno@| boolean macro. % \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,}} -\define@key{mglplot@keys}{bblly}{\g@addto@macro{\graph@keys}{bblly=#1,}} -\define@key{mglplot@keys}{bburx}{\g@addto@macro{\graph@keys}{bburx=#1,}} -\define@key{mglplot@keys}{bbury}{\g@addto@macro{\graph@keys}{bbury=#1,}} -\define@key{mglplot@keys}{natwidth}{\g@addto@macro{\graph@keys}{natwidth=#1,}} -\define@key{mglplot@keys}{natheight}{\g@addto@macro{\graph@keys}{natheight=#1,}} -\define@key{mglplot@keys}{hiresbb}{\g@addto@macro{\graph@keys}{hiresbb=#1,}} -\define@key{mglplot@keys}{viewport}{\g@addto@macro{\graph@keys}{viewport=#1,}} -\define@key{mglplot@keys}{trim}{\g@addto@macro{\graph@keys}{trim=#1,}} -\define@key{mglplot@keys}{angle}{\g@addto@macro{\graph@keys}{angle=#1,}} -\define@key{mglplot@keys}{origin}{\g@addto@macro{\graph@keys}{origin=#1,}} -\define@key{mglplot@keys}{width}{\g@addto@macro{\graph@keys}{width=#1,}} -\define@key{mglplot@keys}{height}{\g@addto@macro{\graph@keys}{height=#1,}} -\define@key{mglplot@keys}{totalheight}{\g@addto@macro{\graph@keys}{totalheight=#1,}} -\define@key{mglplot@keys}{keepaspectratio}{\g@addto@macro{\graph@keys}{keepaspectratio=#1,}} -\define@key{mglplot@keys}{scale}{\g@addto@macro{\graph@keys}{scale=#1,}} -\define@key{mglplot@keys}{clip}[true]{\g@addto@macro{\graph@keys}{clip=#1,}} -\define@key{mglplot@keys}{draft}[false]{\g@addto@macro{\graph@keys}{draft=#1,}} -\define@key{mglplot@keys}{type}{\g@addto@macro{\graph@keys}{type=#1,}} -\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}{imgext}{\def\mglplot@image@ext{.#1}} -\define@key{mglplot@keys}{setup}{\def\mglplot@setup{#1}} +\newif\if@MGL@lineno@ +\define@key{MGL@verb@keys}{lineno}[true]{\csname @MGL@lineno@#1\endcsname} % \end{macrocode} +% \end{macro} +% +% \begin{macro}{\MGL@main@script@name} +% \noindent This macro stores the name of the of the document's main script. It is initialized to the name of the \LaTeX{} document. +% \begin{macrocode} -% A special extension for images created with MathGL is ``.tex'', so we store it within a macro for future use. +\edef\MGL@main@script@name{\jobname} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\MGL@dir} +% This is the \textsf{\mglTeX} main working directory. By default, it is defined to empty, so it points to the path of the \LaTeX{} document. % \begin{macrocode} -\def\TeX@ext{.tex} +\def\MGL@dir{} % \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. +% \end{macro} +% \begin{macro}{\MGL@scripts@dir} +% The subdirectory inside |\MGL@dir| where all MGL scripts will be created. % \begin{macrocode} -\def\mgl@include@image#1{% +\def\MGL@scripts@dir{} % \end{macrocode} -% If the extension of the graphics is ``.tex'', +% \end{macro} +% \begin{macro}{\MGL@graphics@dir} +% The subdirectory inside |\MGL@dir| where all MGL graphics will be created. % \begin{macrocode} - \ifx\mgl@image@ext\TeX@ext% +\def\MGL@graphics@dir{} % \end{macrocode} -% first check if the file exists; +% \end{macro} +% \begin{macro}{\MGL@backups@dir} +% The subdirectory inside |\MGL@dir| where all backups of scripts will be created. % \begin{macrocode} - \IfFileExists{#1.tex}{% +\def\MGL@backups@dir{} % \end{macrocode} -% if so, include it, +% \end{macro} +% \begin{macro}{\MGL@paths} +% This is a list of paths where extracted and external scripts will be searched for by the |\mglgraphics| and |\mglinclude| commands. Since extracted scripts are created inside |\MGL@dir\MGL@scripts@dir| and |\MGL@dir\MGL@backups@dir|, this directories are included. % \begin{macrocode} - \include{#1}% - }{% +\def\MGL@paths{\MGL@dir\MGL@scripts@dir,\MGL@dir\MGL@backups@dir} % \end{macrocode} -% otherwise use the command |\mgl@img@not@found| to create a warning. +% \end{macro} +% +% We set some additional staff that will be used later. +% \begin{macro}{\MGL@main@stream} +% The output stream for the document's main script. % \begin{macrocode} - \mgl@img@not@found{#1}% - }% + +\newwrite\MGL@main@stream % \end{macrocode} -% If the extension of the graphics is not ``.tex'', +% \end{macro} +% \begin{macro}{\MGL@out@stream} +% The output stream for scripts other than the main one. % \begin{macrocode} - \else% +\newwrite\MGL@out@stream +% \end{macrocode} +% \end{macro} +% \begin{macro}{\MGL@in@stream} +% The input stream for scripts other than the main one. +% \begin{macrocode} +\newread\MGL@in@stream % \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. +% \end{macro} +% \begin{macro}{MGL@script@no} +% The internal counter used by environments like |mgl| and commands like |\mglplot| to automatically name scripts. % \begin{macrocode} - \def\next@action{\mgl@img@not@found{#1}}% +\newcounter{MGL@script@no} % \end{macrocode} -% For every extension supported by \mglTeX{}, +% \end{macro} +% \begin{macro}{MGL@line@no} +% The counter used for verbatim-like environments and commands to numerate the lines of code. % \begin{macrocode} - \@for\img@ext:=\Gin@extensions\do{% +\newcounter{MGL@line@no} % \end{macrocode} -% if the file with the current extension exists, +% \end{macro} +% \begin{macro}{MGL@verb@script@no} +% The counter used to numerate verbatim-written scripts with the |\listofmglscripts| command. % \begin{macrocode} - \IfFileExists{#1\img@ext}{% +\newcounter{MGL@verb@script@no} % \end{macrocode} -% overwrite the |\next@action| macro so it uses the |\includegraphics| command to include the image, otherwise do nothing. +% \end{macro} +% \begin{macro}{\@MGL@list@script@} +% The boolean switch used to determine whether to add a verbatim-written script to the \emph{list of MGL scripts}. % \begin{macrocode} - \def\next@action{% - \expandafter\includegraphics\expandafter[\graph@keys]{#1}% - }% - }{}% - }% +\newif\if@MGL@list@script@ % \end{macrocode} -% Execute |\next@action|. +% \end{macro} +% \begin{macro}{\l@MGL@script} +% Finally, the style for the leaders associating script name and page number in the \emph{list of MGL scripts}. % \begin{macrocode} - \next@action% - \fi% +\def\l@MGL@script{\@dottedtocline{1}{0em}{1.5em}} +% \end{macrocode} +% \end{macro} +% +% \subsection{Anatomy of environments and commands}\label{subsection: anatomy} +% \noindent Many of the environments and commands defined by \textsf{\mglTeX} are based on the same pieces of code. So, in order to avoid repetition of commands, we use the concept of \emph{anatomy of environments and commands}, which is basically the idea of taking repetitive pieces of code and enclose them into macros which can later be used. +% +% \begin{macro}{\MGL@setkeys} +% This command recieves two arguments: a family of \meta{key}=\meta{value} pairs, like |MGL@keys|, and a list of such pairs. It first cleans the |\MGL@graph@keys| macro, and the process the list of pairs. +% \begin{macrocode} + +\def\MGL@setkeys#1#2{% + \def\MGL@graph@keys{}% + \setkeys{#1}{#2}% } % \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{macro}{\MGL@codes} +% This macro changes the category codes of all special characters (like |\|, |$|, etc.) to $12$ (other), so they don't have any special meaning and can be processed as normal text. The exception is the new line character (|^^M|), which is kept active for compatibility with the \textsf{verbatim} package. % \begin{macrocode} -\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\MGL@codes{% + \let\do\@makeother\dospecials% + \catcode`\^^M\active% } % \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{macro}{\MGL@document@scripts} +% A macro to store the names of the scripts created or compiled in the document. % \begin{macrocode} -\newcounter{mgl@image@no} +\def\MGL@document@scripts{} % \end{macrocode} -% Create an output stream for the main script \meta{document}.mgl. +% \end{macro} +% \begin{macro}{\MGL@set@script@name}\begin{macro}{\MGL@script@name} +% |\MGL@set@script@name| recieves the name of a script without extension as argument, defines |\MGL@script@name| as that name, and checks if it has already been created or compiled, by comparing it with the names already stored in |\MGL@document@scripts|; if it's there already, warns the user. Finally, adds the name of the script to |\MGL@document@scripts|. +% \begin{macrocode} +\def\MGL@set@script@name#1{% + \edef\MGL@script@name{#1}% + \@for\MGL@temp@a:=\MGL@document@scripts\do{% + \ifx\MGL@temp@a\MGL@script@name% + \PackageWarning{mgltex}{Multiple MGL scripts named "\MGL@script@name.mgl"}% + \fi% + }% + \g@addto@macro\MGL@document@scripts{\MGL@script@name,}% +} +% \end{macrocode} +% \end{macro}\end{macro} +% +% \begin{macro}{\MGL@unchanged} +% This command defines the ``switch'' |\MGL@@@|\meta{script}, where \meta{script} is passed as argument, which indicates the script \meta{script}|.mgl| has not changed. This command has to be written to the |.aux| file to be preserved from compilation to compilation. % \begin{macrocode} -\newwrite\mgl@script +\def\MGL@unchanged#1{% + \global\@namedef{MGL@@@#1}{}% +} % \end{macrocode} -% Open the main script at the beginning of the document (at the moment of the |\begin{document}| command). +% \end{macro} +% +% \begin{macro}{\MGL@process@script} +% It checks whether the ``switch'' |\MGL@@@\MGL@script@name| is undefined, in which case executes its first argument. If the switch is defined, it checks if the corresponding image has been created; if so, it executes its second argument; otherwise, the first one. % \begin{macrocode} -\AtBeginDocument{% - \if@mgltex@on@% - \immediate\openout\mgl@script="\mgl@dir\jobname.mgl"% - \mglsignature@write\mgl@script% - \fi% + +\def\MGL@process@script#1#2{% + \@ifundefined{MGL@@@\MGL@script@name}{% + #1% + }{% + \IfFileExists{\MGL@dir\MGL@graphics@dir\MGL@script@name\MGL@graph@ext}{% + #2% + }{% + #1% + }% + }% } % \end{macrocode} -% At the end of the document (at the moment of the |\end{document}| command): +% \end{macro} +% +% \begin{macro}{\MGL@def@for@loop}\begin{macro}{\MGL@for} +% |\MGL@def@for@loop| defines the command |\MGL@for| which is similar to the |\@for| command from the \LaTeX{} kernel, with the only exception that, instead of iterating over comma-separated lists, it can iterate over lists of items with any kind of separator, which is passed as argument of |\MGL@def@for@loop|. The body of this command is copied from the definition code of |\@for|, extracted from \emph{The \LaTeXe{} Sources} document, replacing the ``|,|'' by ``|#1|''. Note that |\MGL@for| is used only by the |\mglplot| command, but it has been included as part of the \emph{anatomy of environments and commands} to keep cleanness because it is quite long code. % \begin{macrocode} -\AtEndDocument{% + +\def\MGL@def@for@loop#1{% + \long\def\MGL@for##1:=##2\do##3{% + \expandafter\def\expandafter\@fortmp\expandafter{##2}% + \ifx\@fortmp\@empty\else% + \expandafter\MGL@forloop##2#1\@nil#1\@nil\@@##1{##3}% + \fi% + }% + \long\def\MGL@forloop##1#1##2#1##3\@@##4##5{% + \def##4{##1}% + \ifx##4\@nnil\else% + ##5\def##4{##2}% + \ifx##4\@nnil\else% + ##5\MGL@iforloop##3\@@##4{##5}% + \fi% + \fi% + }% + \long\def\MGL@iforloop##1#1##2\@@##3##4{% + \def##3{##1}% + \ifx##3\@nnil% + \expandafter\@fornoop% + \else% + ##4\relax\expandafter\MGL@iforloop% + \fi% + ##2\@@##3{##4}% + }% +} % \end{macrocode} -% write an empty line on the main script (just for elegance), +% The default |\MGL@for| loop iterates over |^^J|-separated lists, i.e, \meta{new line}-character-lists. % \begin{macrocode} - \mgl@write\mgl@script{}% +\MGL@def@for@loop{^^J} % \end{macrocode} -% write the MGL \emph{stop} command to stop the MathGL compiler. +% \end{macro}\end{macro} +% +% \begin{macro}{\MGL@compare@code} +% |\MGL@compare@code| is in charge of comparing the user's MGL code, embedded within \textsf{\mglTeX} environments, with its corresponding extracted script. For that purpose, the |\verbatim@processline| and |\verbatim@finish| commands from the \textsf{verbatim} package are redefined. % \begin{macrocode} - \mgl@write\mgl@script{stop}% + +\def\MGL@compare@code#1{% % \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{macro}{\MGL@next} +% This macro is called at the end of environments that use the |\MGL@compare@code| macro, and performs the ending actions of the comparision process, which are closing the |\MGL@in@stream| and writing the |\MGL@unchanged{\MGL@script@name}| to the |.aux| file. If during the comparison process a difference in the code is found, |\MGL@next| is redefined to only close the |\MGL@in@stream|. % \begin{macrocode} - \mgl@func% + \def\MGL@next{% + \MGL@closein\MGL@in@stream% + \MGL@write\@auxout{\string\MGL@unchanged{\MGL@script@name}}% + }% % \end{macrocode} -% Close the main script. +% \end{macro} +% The |\verbatim@processline| command is redefined to read from the input stream to a temporary variable (|\MGL@temp@a|), and compare it with one line of code in the \LaTeX{} document, which is stored in another temporary variable (|\MGL@temp@b|). In case they are not equal, the |\MGL@next| macro is redefined to only close the input stream, and |\verbatim@processline| is redefine again to do nothing (a little speed-up). % \begin{macrocode} - \immediate\closeout\mgl@script% + \def\verbatim@processline{% + \MGL@read\MGL@in@stream{\MGL@temp@a}% + \edef\MGL@temp@b{\the\verbatim@line}% + \ifx\MGL@temp@a\MGL@temp@b\else% + \def\MGL@next{\MGL@closein\MGL@in@stream}% + \def\verbatim@processline{}% + \fi% + }% +% \end{macrocode} +% The |\verbatim@finish| macro, which is called at the end of the environment, is also redefined to perform one last read of the input stream, and then check if the end of file has been reached; if it hasn't, then, despite the end of the environment has been reached ---thus the end of code---, there is still code inside the script, so there are differences between them, and |\MGL@next| has to be redefined to do nothing but close the input stream. +% \begin{macrocode} + \def\verbatim@finish{% + \MGL@read\MGL@in@stream{\MGL@temp@a}% + \ifeof\MGL@in@stream\else% + \def\MGL@next{\MGL@closein\MGL@in@stream}% + \fi% + }% % \end{macrocode} -% Use the program |mglconv| (part of MathGL) to compile the main script. +% Finally, the input stream is opened, and the comparison is started by calling |\verbatim@start|. % \begin{macrocode} - \mgl@write{18}{mglconv -n "\mgl@dir\jobname.mgl"}% + \MGL@openin\MGL@in@stream{#1}% + \verbatim@start% } - % \end{macrocode} -% \begin{macro}{\mgl} -% The beginning of the |mgl| environment. +% \end{macro} +% +% \begin{macro}{\MGL@write@funcs} +% This macro is used only by the |mglfunc| environment. Its only purpose is to store the commands to insert MGL functions in the main script, and is called at the end of the document or when the |\mglname| command is used. For now, we only ask it to write the |stop| command\footnote{Note the |stop| command is unnecesary in newer versions of the MGL language, but it is kept in \textsf{\mglTeX} for compatibility and for elegance.} that separates the section of scripts from the section of functions in the main script. % \begin{macrocode} -\newcommand\mgl[1][]{% +\def\MGL@write@funcs{\MGL@write\MGL@main@stream{stop^^J}} % \end{macrocode} -% First, process the \meta{key}=\meta{value} options for the environment. +% \end{macro} +% \begin{macro}{\MGL@func} +% This is the command that writes the MGL functions. It is intended to be stored inside |\MGL@write@funcs|. It opens the backup file of the MGL function whose name is passed as argument (and has been created by a |mglfunc| environment), and then calls |\MGL@@func| to transcript from that file, line by line, to the main script. % \begin{macrocode} - \def\graph@keys{}% - \setkeys{mgl@keys}{#1}% +\def\MGL@func#1{% + \MGL@openin\MGL@in@stream{\MGL@dir\MGL@backups@dir#1.mgl}% + \MGL@@func% +} % \end{macrocode} -% Now, make every ``special'' character (\textbackslash, \$, etc.) of category $13$ (other), i.e., make them common characters. +% \end{macro} +% \begin{macro}{\MGL@@func} +% This command transcripts only one line from backup file of a MGL function to the main script. It calls itself recursively until the end of the backup. % \begin{macrocode} - \let\do\@makeother \dospecials% +\def\MGL@@func{% % \end{macrocode} -% Add an end-line character at the end of every read line. This end-line character is declared active (category 12). +% It first reads from the input stream to the |\MGL@temp@a| temporary variable. % \begin{macrocode} - \endlinechar`\^^M \catcode`\^^M\active% + \MGL@read\MGL@in@stream{\MGL@temp@a}% % \end{macrocode} -% Spaces characters are category 10; the spaces at the beginning of every read line are ignored. +% If the end of the file has been reached, the stream is closed. % \begin{macrocode} - \catcode`\ =10% + \ifeof\MGL@in@stream% + \MGL@closein\MGL@in@stream% % \end{macrocode} -% Finally, the command that reads/writes each line of the contents of the environment is called. +% If the end of file hasn't been reached, |\MGL@temp@a| is written to the main script, and |\MGL@@func| is called recursively. % \begin{macrocode} - \mgl@write\mgl@script{quality \mgl@quality}% - \expandafter\mgl@write@line% + \else% + \MGL@write\MGL@main@stream{\MGL@temp@a}% + \expandafter\MGL@@func% + \fi% } % \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{macro}{\MGL@set@verbatim@code} +% This command sets the parameters for verbatim-like environments and commands. +% \begin{macrocode} + +\def\MGL@set@verbatim@code{% +% \end{macrocode} +% The following is standard stuff for verbatim-like environments and commands. +% \begin{macrocode} + \if@minipage\else\vskip\parskip\fi% + \leftskip\@totalleftmargin\rightskip\z@skip% + \parindent\z@\parfillskip\@flushglue\parskip\z@% + \@@par% + \def\par{% + \if@tempswa% + \leavevmode\null\@@par\penalty\interlinepenalty% + \else% + \@tempswatrue% + \ifhmode\@@par\penalty\interlinepenalty\fi% + \fi% + }% + \obeylines% + \let\do\@makeother\dospecials% + \verbatim@font% + \frenchspacing% + \everypar\expandafter{\the\everypar\unpenalty}% +% \end{macrocode} +% If there are no lines of MGL code, instead of issuing an error, we display a package warning. +% \begin{macrocode} + \def\@noitemerr{\PackageWarning{mglTeX}{Empty MGL script}}% +% \end{macrocode} +% The space between the end of the label box and the text of the first item (|\labelsep|) is set to |1em|, while the separation between items (|\itemsep|) is set to zero. +% \begin{macrocode} + \labelsep1em% + \itemsep\z@% +% \end{macrocode} +% Since we want the lines of code to be broken between words, but verbatim spaces are unbreakable, we trick \LaTeX{} by inserting a breakable spaces (|\space|) instead. % \begin{macrocode} -\begingroup% - \escapechar=-1 \relax% - \xdef\end@mgl{\string\\end\string\{mgl\string\}}% -\endgroup + \def\@xobeysp{\space}\@vobeyspaces% +% \end{macrocode} +% However, \LaTeX{} still resists breaking lines as much as possible in order to preserve the shape of paragraphs, so we tell it it's OK not to do so by setting the badness tolerance before hyphenation (|\pretolerance|) and the badness above which bad hboxes will be shown (|\hbadness|) to the maximum value of $10000$ (|\@M|). +% \begin{macrocode} + \pretolerance\@M% + \hbadness\@M% +% \end{macrocode} +% In order to achieve the desired indentation of broken lines, we use the following trick: We increase the |\leftskip| parameter by the amount specified by |\mglbreakindent|, so that lines will be indented; but then we decrease the |\itemindent| parameter by the same amount so the first line won't be indented. +% \begin{macrocode} + \advance\leftskip\mglbreakindent% + \itemindent-\mglbreakindent% +} % \end{macrocode} % \end{macro} +% +% \begin{macro}{\MGL@line@sep} +% This is the separator displayed at the beginning and ending of the |mglblock| and |mglverbatim| environments, to distinguish the MGL code from the normal text. Its definition is similar to the one of the |\dotfill| command, which can be found in \emph{The \LaTeXe{} Sources} document, but |\nopagebreak| commands have been added to avoid unaesthetic page breaking before and after the separators. +% \begin{macrocode} -% \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. +\def\MGL@line@sep{% + \nopagebreak% + \leavevmode\cleaders\hrule height\mgllinethickness\hfill\kern\z@% + \nopagebreak% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\MGL@dash@sep} +% This is the separator displayed at the begginning and ending of the |mglcomments| environment, when it is allowed to be displayed. % \begin{macrocode} -\begingroup% +\def\MGL@dash@sep{% + \nopagebreak% + \leavevmode\cleaders\hb@xt@\mgldashwidth{\hss-\hss}\hfill\kern\z@% + \nopagebreak% +} % \end{macrocode} +% \end{macro} +% +% \subsection{Environments for MGL code embedding} +% \noindent For the following, we agree that if a macro is required by an environment, and it hasn't been already defined, it will be defined between the commands that start and end such environment; also the command's name will have the environment's name as prefix. +% +% \begin{environment}{mgl} +% This environment has to transcript its contents to the document's main script, and create a backup of the code simultaneously; the backup is used to detect changes in following compilations. +% \begin{macro}{\mgl} +% The command that starts the |mgl| environment. It is called by the |\begin{mgl}| command. +% \begin{macrocode} -% Declare the end-line character as active. +\newcommand\mgl[1][]{% +% \end{macrocode} +% We define an additional \meta{key}=\meta{value} pair in the main family of pairs, corresponding to the |label| option for this environment. This definition is local because we don't want to be valid outside the environment. % \begin{macrocode} - \catcode`\^^M\active% + \define@key{MGL@keys}{label}{\def\MGL@script@name{##1}}% % \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. +% The list of comma-separated options is processed. % \begin{macrocode} - \gdef\mgl@write@line#1^^M{% + \MGL@setkeys{MGL@keys}{#1}% % \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. +% If the user hasn't used the |label| option, the automatic naming mechanism is called. Note that |\MGL@main@script@name| is set using the |\mglname| command. % \begin{macrocode} - \def\next@action{% - \mgl@write\mgl@script{#1}% - \mgl@write@line% - }% + \@ifundefined{MGL@script@name}{% + \stepcounter{MGL@script@no}% + \edef\MGL@script@name{\MGL@main@script@name-MGL-\arabic{MGL@script@no}}% + }{}% +% \end{macrocode} +% We use the |\MGL@set@script@name| to test whether the given name has already been used. +% \begin{macrocode} + \MGL@set@script@name{\MGL@script@name}% % \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). +% |\MGL@codes| is used to change the codes of special characters. % \begin{macrocode} - \test@end@mgl{#1}% + \MGL@codes% % \end{macrocode} -% Execute the |\next@action| macro. +% |\MGL@process@script| is used to test whether the code has changed or not the last time \LaTeX{} has been executed. If it has changed, we call the |\mgl@write@script| command to (re)write the code; otherwise, the code is scanned again by asking |\MGL@compare@code| to perform a comparison on the backup file, in order to determine whether the code has changed now. % \begin{macrocode} - \next@action% + \MGL@process@script{% + \mgl@write@script% + }{% + \MGL@compare@code{\MGL@dir\MGL@backups@dir\MGL@script@name.mgl}% }% -\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{macro}{\mgl@write@script} +% (Re)writes the contents of the |mgl| environment. % \begin{macrocode} -\def\test@end@mgl#1{% - \edef\this@line{#1}% - \ifx\this@line\end@mgl% - \def\next@action{\end{mgl}}% - \fi% +\def\mgl@write@script{% +% \end{macrocode} +% \begin{macro}{\MGL@next} +% It contains the actions to perform immediately after the end of |\mgl@write@script|. They are close the output stream; write in the main script the commands to save the image, and to reset the initial values for all MGL parameters and clear the image; finally, write |\MGL@unchanged{\MGL@script@name}| in the |.aux| file. +% \begin{macrocode} + \def\MGL@next{% + \MGL@closeout\MGL@out@stream% + \MGL@write\MGL@main@stream{% + write '\MGL@dir\MGL@graphics@dir\MGL@script@name\MGL@graph@ext'^^J% + ^^Jreset^^J% + }% + \MGL@write\@auxout{\string\MGL@unchanged{\MGL@script@name}}% + }% +% \end{macrocode} +% \end{macro} +% Now we redefine the |\verbatim@processline| macro to write |\the\verbatim@line| to the main script and to the backup file. +% \begin{macrocode} + \def\verbatim@processline{% + \MGL@write\MGL@main@stream{\the\verbatim@line}% + \MGL@write\MGL@out@stream{\the\verbatim@line}% + }% +% \end{macrocode} +% Before writing the MGL code of the environment, we set the default quality. +% \begin{macrocode} + \MGL@write\MGL@main@stream{quality \MGL@quality}% +% \end{macrocode} +% We open the backup file in the output stream. +% \begin{macrocode} + \MGL@openout\MGL@out@stream{\MGL@dir\MGL@backups@dir\MGL@script@name.mgl}% +% \end{macrocode} +% The transcription process starts by calling the |\verbatim@start| command. +% \begin{macrocode} + \verbatim@start% } % \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. +% The command that ends the |mgl| evironment. It is called by the |\end{mgl}| command. It simply calls |\MGL@next| to execute the final actions, and |\MGL@includegraphics| to insert the corresponding image. Note that |\MGL@next| performs different actions depending on whether |\MGL@process@script| calls |\mgl@write@script| or |\MGL@compare@code|, both of which define |\MGL@next| differently. % \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}}% + \MGL@next% + \MGL@includegraphics% } % \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. +% This environment only writes its contents to the document's main script, so no backup is created, nor compilation or inclusion of graphics. +% \begin{macro}{\mgladdon} +% Since this environment doesn't produce any output in the \LaTeX{} document, we start a \emph{space hack} by calling |\@bsphack|. We set the appropiate category codes with |\MGL@codes|; the |\verbatim@processline| is redefined to transcript |\the\verbatim@line| to the main script; finally, the |\verbatim@start| command starts the transcription process. % \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% +\def\mgladdon{% + \@bsphack% + \MGL@codes% + \def\verbatim@processline{% + \MGL@write\MGL@main@stream{\the\verbatim@line}% }% - \mgl[]% -}{} + \verbatim@start% +} % \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. +% \end{macro} +% \begin{macro}{\endmgladdon} +% The environment ends by closing the \emph{space hack} with |\@esphack|. % \begin{macrocode} -\def\mgl@script@written{} +\def\endmgladdon{\@esphack} % \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. +% \end{environment} +% +% \begin{environment}{mglfunc} +% This environment is used to define MGL functions inside the document's main script. Instead of writing directly to the main script, which would cause the MGL parser to end the execution of that script, it writes to a backup file which is later transcript before closing the main script. +% \begin{macro}{\mglfunc} +% It starts the |mglfunc| environment. % \begin{macrocode} -\newwrite\mgl@out@stream + +\newcommand\mglfunc[2][0]{% % \end{macrocode} -% \end{macro} -% \begin{macro}{\mglcode} -% The beginning of the |mglcode| environment. +% Once again, since this command doesn't produce any output in the \LaTeX{} document, we use a \emph{space hack}. % \begin{macrocode} -\newcommand\mglcode[2][]{% - \def\graph@keys{}% + \@bsphack% % \end{macrocode} -% Process the \meta{key}=\meta{value} options. These are the same for the |mgl| environment. +% Although MGL functions and normal scripts are diferent in nature, in the sense that the first don't produce graphics by themselves, we have to check whether the function is being named as another script, because otherwise we run the risk of overwriting a backup file or confusing the parser. % \begin{macrocode} - \setkeys{mgl@keys}{#1}% + \MGL@set@script@name{#2}% % \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. +% The instruction to transcript from the backup file to the main stream is stored in |\MGL@write@funcs| (see subsection \ref{subsection: anatomy}). % \begin{macrocode} - \test@mgl@script@written{#2}% + \g@addto@macro\MGL@write@funcs{\MGL@func{#2}}% % \end{macrocode} -% Add the script's name to the |\mgl@script@written| macro. +% The codes for special characters are set. % \begin{macrocode} - \xdef\mgl@script@written{\mgl@script@written#2,}% + \MGL@codes% % \end{macrocode} -% Open the script for writing. +% The |\verbatim@processline| command is redefined to write |\the\verbatim@line| to the backup file. % \begin{macrocode} - \def\this@script{#2}% - \if@mgltex@on@% - \immediate\openout\mgl@out@stream=\mgl@dir\this@script.mgl% - \mglsignature@write\mgl@out@stream% - \fi% + \def\verbatim@processline{\MGL@write\MGL@out@stream{\the\verbatim@line}}% % \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}. +% The backup file is opened for writing. % \begin{macrocode} - \let\do\@makeother \dospecials% - \endlinechar`\^^M \catcode`\^^M\active% - \obeyspaces% + \MGL@openout\MGL@out@stream{\MGL@dir\MGL@backups@dir\MGL@script@name.mgl}% % \end{macrocode} -% Call the command that will write each line of the contents of the environment. +% The head of the function is written. % \begin{macrocode} - \expandafter\mglcode@write@line% + \MGL@write\MGL@out@stream{func '\MGL@script@name' #1}% +% \end{macrocode} +% The writing process is started. +% \begin{macrocode} + \verbatim@start% } % \end{macrocode} % \end{macro} -% \begin{macro}{\test@mgl@script@written} -% The macro that checks is we are overwriting any script. +% \begin{macro}{\endmglfunc} +% It ends the |mglfunc| environment. +% \begin{macrocode} +\def\endmglfunc{% +% \end{macrocode} +% The end of the function is written. % \begin{macrocode} -\def\test@mgl@script@written#1{% + \MGL@write\MGL@out@stream{return^^J}% % \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. +% The output stream is closed. % \begin{macrocode} - \edef\this@script{#1}% - \@for\mgl@script@name:=\mgl@script@written\do{% - \ifx\this@script\mgl@script@name% - \PackageWarning{mgltex}{Overwriting MGL script "\this@script.mgl"}% - \fi% + \MGL@closeout\MGL@out@stream% +% \end{macrocode} +% The \emph{space hack} is terminated. +% \begin{macrocode} + \@esphack% +}% +% \end{macrocode} +% \end{macro} +% \end{environment} +% +% \begin{environment}{mglcode} +% This environment also checks for changes on the code, but, since it writes to its own script, there is no need to create a backup file (the check is performed using the script itself). +% \begin{macro}{\mglcode} +% It starts the |mglcode| environment. Its anatomy is similar to that of the |\mgl| command. +% \begin{macrocode} + +\newcommand\mglcode[2][]{% + \MGL@setkeys{MGL@keys}{#1}% + \MGL@set@script@name{#2}% + \MGL@codes% + \MGL@process@script{% + \mglcode@write@script% + }{% + \MGL@compare@code{\MGL@dir\MGL@scripts@dir\MGL@script@name.mgl}% }% } % \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{macro}{\mglcode@write@script} +% This command takes care of creating the script for the |mglcode| environment. % \begin{macrocode} -\newtoks\mgl@word -\newtoks\mgl@line -\def\mglcode@write@line#1{% +\def\mglcode@write@script{% % \end{macrocode} -% The next action (stored as |\next@action|) is to read the following character, unless overwritten later. +% \begin{macro}{\MGL@next} +% It performs the actions immediately following the end of |\mglcode@write@script|. % \begin{macrocode} - \let\next@action\mglcode@write@line% + \def\MGL@next{% % \end{macrocode} -% If the current character is an end-line character, +% The output stream is closed. % \begin{macrocode} - \expandafter\if#1\^^M% + \MGL@closeout\MGL@out@stream% % \end{macrocode} -% write the contents of |\mgl@line|, i.e., the current line, and clean |\mgl@word| and |\mgl@line|; +% The |\MGL@unchanged{\MGL@script@name}| command is written to the |.aux| file. % \begin{macrocode} - \mgl@write\mgl@out@stream{\the\mgl@line}% - \mgl@word{}% - \mgl@line{}% + \MGL@write\@auxout{\string\MGL@unchanged{\MGL@script@name}}% % \end{macrocode} -% if the current character is a space, clean |\mgl@word|, but add the space to |\mgl@line|; +% The script compilation instruction is written to the terminal. % \begin{macrocode} - \else\expandafter\if#1\space% - \mgl@word{}% - \mgl@line\expandafter{\the\mgl@line#1}% + \MGL@write{18}{% + mglconv -q \MGL@quality\space -S \MGL@scale\space% + -s "\MGL@dir\MGL@scripts@dir\mglcommonscriptname.mgl"\space% + -o "\MGL@dir\MGL@graphics@dir\MGL@script@name\MGL@graph@ext"\space% + "\MGL@dir\MGL@scripts@dir\MGL@script@name.mgl"% + }% + }% % \end{macrocode} -% otherwise, the current character is alphanumeric and is added both to |\mgl@word| and |\mgl@line|, and +% \end{macro} +% The |\verbatim@processline| command is redefined so it writes |\the\verbatim@line| to the output stream. % \begin{macrocode} - \else% - \mgl@word\expandafter{\the\mgl@word#1}% - \mgl@line\expandafter{\the\mgl@line#1}% + \def\verbatim@processline{\MGL@write\MGL@out@stream{\the\verbatim@line}}% % \end{macrocode} -% we test if the current word (|\mgl@word|) is |\end{mglcode}|, in which case, |\next@action| is overwritten to |\end{mglcode}|. +% The script is opened for writing in the output stream. % \begin{macrocode} - \test@end@mglcode{\the\mgl@word}% - \fi\fi% + \MGL@openout\MGL@out@stream{\MGL@dir\MGL@scripts@dir\MGL@script@name.mgl}% % \end{macrocode} -% Finally, execute |\next@action|. +% The writing process is started by calling the |\verbatim@start| command. % \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\}}% -\endgroup% -\def\test@end@mglcode#1{% - \edef\this@word{#1}% - \ifx\this@word\end@mglcode% - \def\next@action{\end{mglcode}}% - \fi% + \verbatim@start% } % \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. +% It ends the |mglcode| environment. |\MGL@next| is called to perform the final actions and |\MGL@includegraphics| is called to insert the corresponding image. Once more, |\MGL@next| has different meanings depending on whether |\MGL@process@script| branches to |\MGL@compare@code| or |\mglcode@write@script|. % \begin{macrocode} \def\endmglcode{% - \immediate\closeout\mgl@out@stream% - \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}% + \MGL@next% + \MGL@includegraphics% } % \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. +% The only function of this environment is to write its contents to a script; no image is created. It has been considered that scanning the code looking for changes is as much operation-expensive as simply writing the code, so it has been decided that this environment (over)writes the script everytime it's executed, without performing any check. +% \begin{macro}{\mglscript} +% Starts the environment. Its anatomy is similar to the previous environments. Since no output is written to the \LaTeX{} document, a \emph{space hack} is used. % \begin{macrocode} -\bgroup% - \escapechar=-1\relax% - \xdef\end@mglscript{\string\\end\string\{mglscript\string\}}% -\egroup% -\newenvironment{mglscript}[1]{% - \def\test@end@mglcode##1{% - \edef\this@word{##1}% - \ifx\this@word\end@mglscript% - \def\next@action{\end{mglscript}}% - \fi% - }% - \mglcode{#1}% -}{% - \immediate\closeout\mgl@out@stream% +\def\mglscript#1{% + \@bsphack% + \MGL@set@script@name{#1}% + \MGL@codes% + \def\verbatim@processline{\MGL@write\MGL@out@stream{\the\verbatim@line}}% + \MGL@openout\MGL@out@stream{\MGL@dir\MGL@scripts@dir\MGL@script@name.mgl}% + \verbatim@start% } % \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{macro}{\endmglscript} +% It ends the |mglscript| environment. The \emph{space hack} ends here, too. % \begin{macrocode} -\def\mgl@func{} +\def\endmglscript{% + \MGL@closeout\MGL@out@stream% + \@esphack% +} % \end{macrocode} % \end{macro} -% \begin{macro}{\mglgunc} -% The beginning of the |mglfunc| environment. +% \end{environment} +% +% \begin{environment}{mglcommon} +% This environment doesn't require any backup file nor any scanning for changes. Although the user sets the name of the script by redifining |\mglcommonscriptname|, it is necessary to perform a check of the name, just in case a name has been inadvertedly repeated. +% \begin{macro}{\mglcommon} +% Starts the |mglcommon| 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}% +\def\mglcommon{% + \@bsphack% + \MGL@set@script@name{\mglcommonscriptname}% + \MGL@codes% + \def\verbatim@processline{\MGL@write\MGL@out@stream{\the\verbatim@line}}% + \MGL@openout\MGL@out@stream{\MGL@dir\MGL@scripts@dir\MGL@script@name.mgl}% + \verbatim@start% +} % \end{macrocode} -% Add the name of the current function to the list of functions defined. +% It is declared to be an only-preamble command, so it can't be used after the |\begin{document}| instruction. % \begin{macrocode} - \g@addto@macro{\mglfunc@defined}{#2,}% +\@onlypreamble\mglcommon % \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% -% \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{macro}{\endmglcommon} +% It ends the |mglcommon| environment. % \begin{macrocode} - \expandafter\mglfunc@write@line% +\def\endmglcommon{% + \MGL@closeout\MGL@out@stream% + \@esphack% } % \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. +% \end{macro} +% \end{environment} +% +% \subsection{Fast creation of graphics} +% \begin{environment}{mglsetup} +% This environment is meant to contain code that is executed just before the instruction of a |\mglplot| command, producing always the same ouput. Instead of writing a new chunk of code for that purpose, |mglsetup| is defined as a special case of the |mglfunc| environment, with the exception that the MGL function obtained this way doesn't accept any argument ---thus producing always the same output. +% \begin{macro}{\mglsetup} +% It is defined as an alias for |\mglfunc|, but only the name of the MGL function is passed to it, forcing the assumption that the number of arguments for the function is zero. % \begin{macrocode} -\def\test@mglfunc@defined#1{% - \def\this@func{#1}% - \@for\mglfunc@name:=\mglfunc@defined\do{% - \ifx\this@func\mglfunc@name% - \PackageWarning{\mgl@name}{MGL function "#1" has multiple definitions}% - \fi% - }% -} + +\def\mglsetup#1{\mglfunc{#1}}% % \end{macrocode} % \end{macro} -% We declare \emph{locally} the end-line character as active. +% \begin{macro}{\endmglsetup} +% Likewise, it is defined as an alias for |\endmglfunc|. % \begin{macrocode} -\begingroup% - \catcode`\^^M\active% +\let\endmglsetup\endmglfunc % \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. +% \end{macro} +% \end{environment} +% +% \begin{macro}{\mglplot} +% Although the function of this command is quite simple and straightforward, it requires many lines of code and some tricks in order to reach the desired functionality. % \begin{macrocode} - \gdef\mglfunc@write@line#1^^M{% + +\newcommand\mglplot[2][]{% % \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. +% We add some \meta{key}=\meta{value} pairs locally. The |label| key works exactly as the one of the |mgl| environment. % \begin{macrocode} - \def\next@action{% - \g@addto@macro{\mgl@func}{\mgl@write\mgl@script{#1}}% - \expandafter\mglfunc@write@line% - }% + \define@key{MGL@keys}{label}{\edef\MGL@script@name{##1}}% % \end{macrocode} -% Check for the end of the |mglfunc| environment, in which case, |\next@action| is redefined to be |\end{mglfunc}|. +% The |setup| key defines the variable |\MGL@mglplot@setup| which is later used to call a setup function for the corresponding image. % \begin{macrocode} - \test@end@mglfunc{#1}% + \define@key{MGL@keys}{setup}{\def\MGL@mglplot@setup{##1}}% % \end{macrocode} -% Execute |\next@action|. +% The |separator| key uses the |\MGL@def@for@loop| to define |\MGL@for| so that it iterates over lists separated by the indicated separator symbol. % \begin{macrocode} - \next@action% + \define@key{MGL@keys}{separator}{% + \MGL@def@for@loop{##1}% }% % \end{macrocode} -% \end{macro} +% Now, we process the keys passed by the user. % \begin{macrocode} -\endgroup + \MGL@setkeys{MGL@keys}{#1}% % \end{macrocode} -% \begin{macro}{\end@mglfunc} -% \begin{macro}{\test@end@mglfunc} -% By now, we already know now these two commands work. +% If the user hasn't specified a name using the |label| option, then a name is autogenerated following the same naming mechanism of the |mgl| environment. % \begin{macrocode} -\begingroup% - \escapechar=-1 \relax% - \xdef\end@mglfunc{\string\\end\string\{mglfunc\string\}}% -\endgroup -\def\test@end@mglfunc#1{% - \edef\this@line{#1}% - \ifx\this@line\end@mglfunc% - \def\next@action{\end{mglfunc}}% - \fi% -} + \@ifundefined{MGL@script@name}{% + \stepcounter{MGL@script@no} + \edef\MGL@script@name{\MGL@main@script@name-MGL-\arabic{MGL@script@no}} + }{}% % \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. +% The name of the script is checked. % \begin{macrocode} -\def\endmglfunc{% - \g@addto@macro{\mgl@func}{\mgl@write\mgl@script{return}}% -} - -% \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. + \MGL@set@script@name{\MGL@script@name}% +% \end{macrocode} +% If the user hasn't specified a setup, then the only code that has to be written is the non-optional argument of |\mglplot|; it is stored in the temporary variable |\MGL@temp@a|. % \begin{macrocode} - -\def\mglcommonscript{mgl_common_script} + \@ifundefined{MGL@mglplot@setup}{% + \edef\MGL@temp@a{#2}% + }{% % \end{macrocode} -% \end{macro} -% \begin{macro}{\end@mglcommon} -% We already know the purpose of this macro. +% If the user has specified a setup, we store the code to call the setup and the code passed by the user in the temporary variable |\MGL@temp@a|. % \begin{macrocode} -\bgroup% - \escapechar=-1\relax% - \xdef\end@mglcommon{\string\\end\string\{mglcommon\string\}}% -\egroup% + \edef\MGL@temp@a{call '\MGL@mglplot@setup'^^J#2}% + } % \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. +% If the code has changed the last time \LaTeX{} has been run, we call |\mglplot@write@script| to (re)write and (re)compile the script; otherwise, we call |\mglplot@compare@code| to check if it has changed this time. % \begin{macrocode} -\newenvironment{mglcommon}{% - \def\test@end@mglcode##1{% - \edef\this@word{##1}% - \ifx\this@word\end@mglcommon% - \def\next@action{\end{mglcommon}}% - \fi% + \MGL@process@script{% + \mglplot@write@script% + }{% + \mglplot@compare@code% }% - \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. +% Finally, the corresponding image is included in the document. % \begin{macrocode} -\@onlypreamble\mglcommon + \MGL@includegraphics% +} % \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{macro}{\mglplot@write@script} +% This command takes the code stored in the |\MGL@temp@a| variable by the |\mglplot| command and writes it to the document's main script and to a backup file, so changes in the code can be detected. % \begin{macrocode} -\bgroup - \catcode`#=12 - \gdef\mglcomm{#} -\egroup +\def\mglplot@write@script{% % \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. +% The default quality is written to the main script. % \begin{macrocode} -\def\mgltexsignature{% - \mglcomm^^J% - \mglcomm\space This file was autogenerated from the document \jobname.tex on date \today^^J% - \mglcomm% -} + \MGL@write\MGL@main@stream{quality \MGL@quality}% % \end{macrocode} -% \end{macro} -% \begin{macro}{\mglsignature} -% The beginning of the |mglsignature| environment. +% The backup file is opened to write in the output stream. % \begin{macrocode} -\newcommand\mglsignature{% + \MGL@openout\MGL@out@stream{\MGL@dir\MGL@backups@dir\MGL@script@name.mgl}% % \end{macrocode} -% Delete |\mgltexsignature| contents. +% Now we use the |\MGL@for| command to iterate over |\MGL@temp@a|. It takes a piece of code up to the separator symbol indicated by the user, and stores it in the temporary variable |\MGL@temp@b|, which is then written to the main script and backup file. % \begin{macrocode} - \def\mgltexsignature{}% + \MGL@for\MGL@temp@b:=\MGL@temp@a\do{% + \MGL@write\MGL@main@stream{\MGL@temp@b}% + \MGL@write\MGL@out@stream{\MGL@temp@b}% + }% % \end{macrocode} -% We do the same changes of category as in the |mglcode| environment. +% The output stream is closed. % \begin{macrocode} - \let\do\@makeother \dospecials% - \endlinechar`\^^M \catcode`\^^M\active% - \@vobeyspaces% + \MGL@closeout\MGL@out@stream% % \end{macrocode} -% Call the command that will store each line of the signature in the |\mgltexsignature| macro. +% The instructions to save the image and reset the MGL parameters are written to the main script. % \begin{macrocode} - \expandafter\mglsignature@write@line% -} + \MGL@write\MGL@main@stream{% + write '\MGL@dir\MGL@graphics@dir\MGL@script@name\MGL@graph@ext'^^J% + ^^Jreset^^J% + }% % \end{macrocode} -% \end{macro} -% \begin{macro}{\end@mglsignature} -% We already know the purpose of this command. +% Finally, |\MGL@unchanged{\MGL@script@name}| is written to the |.aux| file. % \begin{macrocode} -\begingroup% - \escapechar=-1 \relax% - \xdef\end@mglsignature{\string\\end\string\{mglsignature\string\}}% -\endgroup + \MGL@write\@auxout{\string\MGL@unchanged{\MGL@script@name}}% +} % \end{macrocode} % \end{macro} -% \begin{macro}{\mglsignature@write@line} -% This command stores each line of the signature in the |\mgltexsignature| buffer. +% \begin{macro}{\mglplot@compare@code} +% This macro is in charge of comparing the code from a |\mglplot| command to detect changes. % \begin{macrocode} -\begingroup% -% \catcode`\\=0% - \catcode`\^^M\active% - \gdef\mglsignature@write@line#1^^M{% +\def\mglplot@compare@code{% % \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. +% The action that will finish this command is, for now, to write |\MGL@unchanged{\MGL@script@name}| in the |.aux| file; it is stored in the |\MGL@next| variable. If no changes in the code are found, this will remain as the last action; otherwise, it will be overwritten to do nothing. % \begin{macrocode} - \def\next@action{% - \g@addto@macro{\mgltexsignature}{\mglcomm\space#1^^J} - \mglsignature@write@line% - }% + \def\MGL@next{\MGL@write\@auxout{\string\MGL@unchanged{\MGL@script@name}}}% % \end{macrocode} -% We check if the current line is |\end{mglsignature}|, in which case, overwrite |\next@action| to that command. +% The backup file is opened for reading in the input stream. % \begin{macrocode} - \test@end@mglsignature{#1}% + \MGL@openin\MGL@in@stream{\MGL@dir\MGL@backups@dir\MGL@script@name.mgl}% % \end{macrocode} -% Execute |\next@action|. +% Once again, the |\MGL@for| command is used to iterate over the |\MGL@temp@a| variable defined by |\mglplot|. Pieces of code are taken up to the appearance of the separator symbol indicated by the user. In every iteration, the corresponding piece of code is stored in the |\MGL@temp@b| variable, one line of code is read from the input stream to the variable |\MGL@temp@c|, and these two are compared; if they are different, we redefined |\MGL@next| to do nothing. % \begin{macrocode} - \next@action% + \MGL@for\MGL@temp@b:=\MGL@temp@a\do{% + \MGL@read\MGL@in@stream{\MGL@temp@c}% + \ifx\MGL@temp@b\MGL@temp@c\else% + \let\MGL@next\relax% + \fi% }% -\endgroup % \end{macrocode} -% \end{macro} -% \begin{macro}{\test@end@mglsignature} -% We already know the purpose of this command. +% The input stream is closed. % \begin{macrocode} -\def\test@end@mglsignature#1{% - \edef\this@line{#1}% - \ifx\this@line\end@mglsignature% - \def\next@action{\end{mglsignature}}% - \fi% -} + \MGL@closein\MGL@in@stream% % \end{macrocode} -% \end{macro} -% \begin{macro}{\endmglsignature} -% The end of the |mglsignature| environment. It just adds a comment sign to |\mgltexsignature| for elegance. +% |\MGL@next| is executed. % \begin{macrocode} -\def\endmglsignature{% - \g@addto@macro{\mgltexsignature}{\mglcomm} + \MGL@next% } % \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. +% +% \subsection{Verbatim-like environments} +% \begin{environment}{mglblock} +% \begin{environment}{mglblock*} +% The main body of these environments is the same; the only difference is that the unstarred version creates an entry in the |\listofmglscripts|, while the starred version doesn't. +% \begin{macro}{\mglblock} +% This command defines the switch |\@MGL@list@script@| as true, so a |\listofmglscripts| entry for the code is created, then calls the main body of the environment (|\mglblock@|). % \begin{macrocode} -\def\mglcomment{% - \let\do\@makeother\dospecials% - \obeylines% - \@vobeyspaces% - \verbatim@font% - \small% +\def\mglblock{\@MGL@list@script@true\mglblock@} % \end{macrocode} -% Call the command that will ignore all the commentary. +% \end{macro} +% \begin{macro}{\mglblock*} +% This command defines the switch |\@MGL@list@script@| as false, so no |\listofmglscripts| entry is created, then calls the main body of the environment (|\mglblock@|). % \begin{macrocode} - \mgl@comment% -} +\@namedef{mglblock*}{\@MGL@list@script@false\mglblock@} % \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{macro}{\mglblock@} +% This macro contains the real functionality of the |mglblock| and |mglblock*| environments. It is the common code they both have. % \begin{macrocode} -\begingroup% +\newcommand\mglblock@[2][]{% % \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. +% First, the switch |\@MGL@lineno@| is set to true, so the lines of code will be numbered by default. % \begin{macrocode} - \catcode`|=0\catcode`[= 1\catcode`]=2\catcode`\{=12\catcode`\}=12\catcode`\\=12% + \@MGL@lineno@true% % \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. +% Now we process the decision of the user of keeping the line numbering or not. % \begin{macrocode} - |gdef|mgl@comment#1\end{mglcomment}[% - |if@mgl@comments@% - |begin[center]% - <------------------ MGL comment ------------------>% - #1% - <------------------ MGL comment ------------------>% - |end[center]% - |fi% - |end[mglcomment]]% -|endgroup% + \setkeys{MGL@verb@keys}{#1}% % \end{macrocode} -% \end{macro} -% \begin{macro}{\endmglcomment} -% The end of the environment; it does nothing. +% The name of the script is checked for repetition. % \begin{macrocode} -\def\endmglcomment{} + \MGL@set@script@name{#2}% % \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. +% If the switch |\@MGL@list@script@| is true, we increase the counter for verbatim code (|MGL@verb@script@no|), and add a contents line to the |.lms| file, using the style set by |\l@MGL@script|. In order to be able to use special characters in the name of the script, we use the |\detokenize| primitive. % \begin{macrocode} - -\def\mglsetup@defined{} + \if@MGL@list@script@% + \refstepcounter{MGL@verb@script@no}% + \addcontentsline{lms}{MGL@script}{% + \protect\numberline{\theMGL@verb@script@no.}% + {\ttfamily\protect\detokenize{\MGL@script@name.mgl}}% + }% + \fi% % \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. +% If the switch |\@MGL@lineno@| is true, we create a list such that each item will be labeled or numbered by the |MGL@lineno| counter. The style for the label is set by |\mgllinenostyle|. % \begin{macrocode} -\newcommand\mglsetup[1][generic]{% + \if@MGL@lineno@% + \list{\mgllinenostyle\arabic{MGL@line@no}.}{\usecounter{MGL@line@no}}% % \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. +% Otherwise, we create a list without labeling for the items. % \begin{macrocode} - \test@mglsetup@defined{#1}% + \else% + \list{}{}% + \fi% % \end{macrocode} -% Add the name of the current setup to |\mglsetup@defined|. +% The parameters for the environment are set. % \begin{macrocode} - \g@addto@macro{\mglsetup@defined}{#1,}% + \MGL@set@verbatim@code% % \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. +% The thickness of the box that will contain the name of the script has to be the same as the thickness for the separation line at the begining of the verbatim code. % \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}}% + \fboxrule=\mgllinethickness% % \end{macrocode} -% Here, we do the same changes of category for special characters as we did in the |mgl| environment. +% The separator to indicate the begining of the verbatim code is positioned; we use the |\MGL@line@sep| command to draw it. % \begin{macrocode} - \let\do\@makeother \dospecials% - \endlinechar`\^^M \catcode`\^^M\active% - \catcode`\ =10% + \item[\MGL@line@sep]\fbox{% + \bfseries\ttfamily\expandafter\detokenize\expandafter{\MGL@script@name.mgl}% + }\hskip\labelsep\MGL@line@sep\par\par% % \end{macrocode} -% Call the command that will store in the buffer the instructions to write the lines of MGL code. +% The |\verbatim@processline| is redefined to put |\the\verbatim@line| in an item of the list, and to to also write it to the script file. % \begin{macrocode} - \expandafter\mglsetup@write@line% -} + \def\verbatim@processline{% + \item\the\verbatim@line% + \MGL@write\MGL@out@stream{\the\verbatim@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. +% The script file is opened for writing. % \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% - }% -} + \MGL@openout\MGL@out@stream{\MGL@dir\MGL@scripts@dir\MGL@script@name.mgl}% % \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. +% The writing process starts. % \begin{macrocode} -\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 + \verbatim@start% +} % \end{macrocode} % \end{macro} -% \begin{macro}{\end@mglsetup} -% \begin{macro}{\test@end@mglsetup} -% We already know how these two macros work +% \begin{macro}{\endmglblock} +% To finish the environment's work, the script file is closed, the separator indicating the end of the verbatim code is placed, and the list is ended. % \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% +\def\endmglblock{% + \MGL@closeout\MGL@out@stream% + \item[\MGL@line@sep]\hskip-\labelsep\MGL@line@sep% + \endlist% } % \end{macrocode} % \end{macro} -% \end{macro} -% \begin{macro}{\endmglsetup} -% The end of the |mglsetup| environment. It does nothing. +% \begin{macro}{\endmglblock*} +% It's defined as an alias for |\endmglblock|. % \begin{macrocode} -\def\endmglsetup{} +\expandafter\let\csname endmglblock*\endcsname\endmglblock % \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|. +% \end{environment} +% +% \begin{environment}{mglverbatim} +% \begin{environment}{mglverbatim*} +% These two environments have the same main body. They difference in that the unstarred version creates an entry for the |\listofmglscripts|, while the starred version doesn't. We will apply a similar approach to the used for the |mglblock| and |mglblock*| environments. +% \begin{macro}{\mglverbatim} +% Similar in function to |\mglblock|. % \begin{macrocode} -\def\mglplot{% - \@ifnextchar[{\@mglplot}{\@mglplot[]}% -} +\def\mglverbatim{\@MGL@list@script@true\mglverbatim@} % \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{macro}{\mglverbatim} +% Similar in function to |\mglblock*|. % \begin{macrocode} - \def\mglplot@setup{generic}% - \def\graph@keys{}% - \setkeys{mglplot@keys}{#1}% - \stepcounter{mgl@image@no}% +\@namedef{mglverbatim*}{\@MGL@list@script@false\mglverbatim@} % \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. +% \end{macro} +% \begin{macro}{\mglverbatim@} +% The main body of these environments; it's similar to |\mglblock@|. To explain each line of this command would be repetitive, so we explain only the different parts. % \begin{macrocode} - \ifx\csname mgl@setup@\mglplot@setup\endcsname\@undefined% - \PackageError{\mgl@name}{Setup "\mglplot@setup" undefined}{}% +\newcommand\mglverbatim@[1][]{% + \@MGL@lineno@true% + \define@key{MGL@verb@keys}{label}{\edef\MGL@script@name{##1}}% + \setkeys{MGL@verb@keys}{#1}% + \if@MGL@lineno@% + \list{\mgllinenostyle\arabic{MGL@line@no}.}{\usecounter{MGL@line@no}}% \else% - \csname mgl@setup@\mglplot@setup\endcsname% + \list{}{}% \fi% + \MGL@set@verbatim@code% + \fboxrule=\mgllinethickness% +% \end{macrocode} +% The separator that indicates the begining of the verbatim code is different depending on whether the user has specified a name associated to the code or not. If no name has been indicated, i.e., |\MGL@script@name| is undefined, the separator is just a line; otherwise, i.e., |\MGL@script@name| is defined, the separator is similar to the one of the |mglblock| environment. +% \begin{macrocode} + \@ifundefined{MGL@script@name}{% + \edef\MGL@script@name{\mglverbatimname}% + \item[\MGL@line@sep]\hskip-\labelsep\MGL@line@sep% + }{% + \item[\MGL@line@sep]\fbox{% + \bfseries\ttfamily\expandafter\detokenize\expandafter{\MGL@script@name.mgl}% + }\hskip\labelsep\MGL@line@sep\par\par% + }% % \end{macrocode} -% Call |\@@mglplot| (see below). +% Note that, if the user requests an entry in the |\listofmglscripts|, the contents line is added to the same |.lms| file. So here start the similitudes again. % \begin{macrocode} - \@@mglplot% + \if@MGL@list@script@% + \refstepcounter{MGL@verb@script@no}% + \addcontentsline{lms}{MGL@script}{% + \protect\numberline{\theMGL@verb@script@no.}% + {\ttfamily\protect\detokenize{\MGL@script@name}}% + }% + \fi% + \def\verbatim@processline{% + \item\the\verbatim@line% + }% + \verbatim@start% } % \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{macro}{\endmglverbatim} +% This command could be defined as an alias for |\endmglblock|, for they execute the same instructions. But, for the sake of congruence, we rewrite the code. % \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}}% +\def\endmglverbatim{% + \MGL@closeout\MGL@out@stream% + \item[\MGL@line@sep]\hskip-\labelsep\MGL@line@sep% + \endlist% } % \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{macro}{\endmglverbatim*} +% It is an alias for |\endmglverbatim|. % \begin{macrocode} - -\newcounter{mgl@verb@line@no} +\expandafter\let\csname endmglverbatim*\endcsname\endmglverbatim % \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. +% \end{environment} +% \end{environment} +% +% \begin{environment}{mglcomment} +% This environment has two different behaviors: When commentaries are allowed by the user, it behaves similarly to the |mglverbatim| environment; if commentaries are not allowed, it behaves as the |comment| environment from the \textsf{verbatim} package. So it is natural that we borrow code from them and adapt it to the corresponding situation. +% \begin{macro}{\mglcomment} +% The switch |\@MGL@comments@| governs the behavior of this command. % \begin{macrocode} -\def\mglverbatim{% -% \end{macrocode} -% Initialize the counter for lines of code. -% \begin{macrocode} - \setcounter{mgl@verb@line@no}{0}% +\def\mglcomment{% % \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. +% If the switch is true, i.e., the user requests displaying of commentaries, we start a list without labels, and set the parameters for verbatim text. % \begin{macrocode} - \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% + \if@MGL@comments@% + \list{}{}% + \MGL@set@verbatim@code% % \end{macrocode} -% We do the same changes of categories as in the |mglcode| environment. +% The separator indicating the begining of the commentary is similar to the one used by the |mglblock| and |mglverbatim| environments; the differences are that, instead of using a solid line, we use a dashed line (|\MGL@dash@sep|), and instead of displaying the name of a script, we display |\mglcommentname|. % \begin{macrocode} - \let\do\@makeother \dospecials% - \endlinechar`\^^M \catcode`\^^M\active% - \obeyspaces% + \item\hskip-\labelsep<\MGL@dash@sep\mglcommentname\MGL@dash@sep>% % \end{macrocode} -% use verbatim font. +% The two following lines redefine the |\verbatim@processline| command to display the commentary text line by line as items of the list, and start the process of writing the text. % \begin{macrocode} - \verbatim@font% + \def\verbatim@processline{\item\the\verbatim@line}% + \verbatim@start% % \end{macrocode} -% Call the command that will write each line of the contents of the environment. +% If the switch is false, i.e., the user requests no to display commentaries, we start a \emph{space hack}, since no text output will be produced. Then, the category codes are changed with |\MGL@codes|, and the macros |\verbatim@startline|, |\verbatim@addtoline|, |\verbatim@processline| and |\verbatim@finish| are disabled, as done in the |comment| environment of the \textsf{verbatim} package. Finally, we call the |\verbatim@| command to start reading the text in the environment. % \begin{macrocode} - \expandafter\mglverbatim@ignore@line% + \else% + \@bsphack% + \MGL@codes% + \let\verbatim@startline\relax% + \let\verbatim@addtoline\@gobble% + \let\verbatim@processline\relax% + \let\verbatim@finish\relax% + \verbatim@% + \fi% } % \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{macro}{\endmglcomment} +% The |\@MGL@comments@| switch also governs the behavior of this command. If it's true, then the separator that ends the commentary ---which is the same as the one that starts it--- is displayed, and the list is ended; otherwise, simply the \emph{space hack} is ended. % \begin{macrocode} -\def\mglverbatim@ignore@line#1{% - \expandafter\mglverbatim@write@line% +\def\endmglcomment{% + \if@MGL@comments@% + \item\hskip-\labelsep<\MGL@dash@sep\mglcommentname\MGL@dash@sep>% + \endlist% + \else% + \@esphack% + \fi% } % \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. +% \end{environment} +% +% \subsection{Commands for external scripts} +% \noindent Since external scripts exist independently of the \LaTeX{} document, there is no need of environments to process them, just commands. Remember these commands work on the suposition that the scripts don't change. +% +% \begin{macro}{\mglgraphics} +% This command compiles the external script and includes it in the document. Although that process is simple, the code to execute it is relatively large due to the possibility of the user specifying an optional path, so many parameters have to be checked. % \begin{macrocode} -\def\mglverbatim@write@line#1{% + +\newcommand\mglgraphics[2][]{% % \end{macrocode} -% Unless overwritten later, the next action (|\next@action|) is recursively call |\mglverbatim@write@line|. +% In order to keep all definitions and changes local, we start a local group inside which all \LaTeX{} code will be contained. % \begin{macrocode} - \let\next@action\mglverbatim@write@line% + \bgroup% % \end{macrocode} -% If the character read is an end-line character, +% We add the option |path| for the user to be able to specify the location of the script, which is stored in the variable |\MGL@force@path|. % \begin{macrocode} - \expandafter\if#1\^^M% + \define@key{MGL@keys}{path}{\def\MGL@forced@path{##1}}% % \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|; +% The optional arguments are processed. % \begin{macrocode} - \stepcounter{mgl@verb@line@no}% - \item\mbox{\the\mgl@line}% - \mgl@word{}% - \mgl@line{}% + \MGL@setkeys{MGL@keys}{#1}% % \end{macrocode} -% if the character is a space, clean |\mgl@wors|, but add the space to |\mgl@line|; +% The name of the script is set, though it is not check for multiple naming. This is necessary, since |\MGL@includegraphics| uses this macro. % \begin{macrocode} - \else\expandafter\if#1\space% - \mgl@word{}% - \mgl@line\expandafter{\the\mgl@line#1}% + \edef\MGL@script@name{#2}% % \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. +% If the corresponding image exists, then this script has been compiled in a previous \LaTeX{} run, so nothing is done, but the inclusion of the image. % \begin{macrocode} - \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% -} + \IfFileExists{\MGL@dir\MGL@graphics@dir\MGL@script@name\MGL@graph@ext}{}{% % \end{macrocode} -% \end{macro} -% \begin{macro}{\end@mglverbatim} -% \begin{macro}{\test@end@mglverbatim} -% We already know the purpose of these macros. +% If the image doesn't exist, we check if the user has specified a custom location. % \begin{macrocode} -\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% -} + \@ifundefined{MGL@forced@path}{% % \end{macrocode} -% \end{macro} -% \end{macro} +% If no custom location has been used, we iterate over the list of search paths (|\MGL@paths|): If we find the requested script, then we store its location in |\MGL@temp@b|. % \begin{macrocode} + \@for\MGL@temp@a:=\MGL@paths\do{% + \IfFileExists{\MGL@temp@a\MGL@script@name.mgl}{% + \edef\MGL@temp@b{\MGL@temp@a}% + }{}% + }% + }{% % \end{macrocode} -% \begin{macro}{\endmglverbaim} -% The end of the |mglverbatim| environment. It just closes the |list| environment. +% If the user has specified a path for the script, we check if the script actually exists. If it does, we store its location inside |\MGL@temp@b|. % \begin{macrocode} -\def\endmglverbatim{\endlist} + \IfFileExists{\MGL@forced@path\MGL@script@name.mgl}{% + \edef\MGL@temp@b{\MGL@forced@path}% + }{}% + }% % \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|. +% If |\MGL@temp@b| is not defined, the script has not been found, so a warning is issued. % \begin{macrocode} - -\def\mglblock#1{% + \@ifundefined{MGL@temp@b}{% + \PackageWarning{mgltex}{% + MGL script "\MGL@script@name.mgl" not found% + }% + }{% % \end{macrocode} -% Check if the script already exists, in which case we issue a warning, but proceed anyway. +% If |\MGL@temp@b| is defined, the script has been found, so we compile it. % \begin{macrocode} - \test@mgl@script@written{#1}% + \MGL@write{18}{% + mglconv -q \MGL@quality\space -S \MGL@scale\space% + -s "\MGL@dir\MGL@scripts@dir\mglcommonscriptname.mgl"\space% + -o "\MGL@dir\MGL@graphics@dir\MGL@script@name\MGL@graph@ext"\space% + "\MGL@temp@b\MGL@script@name.mgl"% + }% + }% + }% % \end{macrocode} -% Add the name of the script to the list of scripts written. +% The image is included. % \begin{macrocode} - \xdef\mgl@script@written{\mgl@script@written#1,}% + \MGL@includegraphics% % \end{macrocode} -% We make the same changes of categories as in the |mglcode| environment. +% The local group ends here. % \begin{macrocode} - \let\do\@makeother \dospecials% - \endlinechar`\^^M \catcode`\^^M\active% - \obeyspaces% + \egroup% +} % \end{macrocode} -% Open the output stream for the current script. +% \end{macro} +% +% \begin{macro}{\mglinclude}\begin{macro}{\mglinclude*} +% The purpose of these commands is to transcript the MGL code from a script. Once again, this is a straightforward functionality, but the code is quite large, so it has been separated in various macros. +% +% The unstarred version defines the |\@MGL@list@script@| switch to be true, so the script is listed with the |\listofmglscripts| command, and then it calls the main body of code (|\mglinclude@|), just like the |mglblock| environment does. The starred version defines the switch as false and calls the main body, too. % \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% + +\def\mglinclude{\@MGL@list@script@true\mglinclude@} +\@namedef{mglinclude*}{\@MGL@list@script@false\mglinclude@} % \end{macrocode} -% Call the command that will write each line of the contents of the environment. +% \begin{macro}{\mglinclude@} % \begin{macrocode} - \expandafter\mglblock@write@line% -} +\newcommand\mglinclude@[2][]{% % \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. +% We start a local group to keep definitions and changes local. % \begin{macrocode} -\def\mglblock@write@line#1{% + \bgroup% % \end{macrocode} -% The next action (|\next@action|) is set to recursively call |\mglblock@write@line|, unless it is overwritten later. +% The default behavior is to number lines of MGL code, so the switch |\@MGL@lineno@| is set to true. % \begin{macrocode} - \let\next@action\mglblock@write@line% + \@MGL@lineno@true% % \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|; +% We add the option |path| for the user to be able to specify the location of the script, which is stored in |\MGL@forced@path|. % \begin{macrocode} - \expandafter\if#1\^^M% - \mgl@write\mgl@out@stream{\the\mgl@line}% - \mgl@word{}% - \mgl@line{}% + \define@key{MGL@verb@keys}{path}{\def\MGL@forced@path{##1}}% % \end{macrocode} -% if the read character if a space, clean |\mgl@word|, but add the space to |\mgl@line|; +% The options are processed. % \begin{macrocode} - \else\expandafter\if#1\space% - \mgl@word{}% - \mgl@line\expandafter{\the\mgl@line#1}% + \setkeys{MGL@verb@keys}{#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. +% We don't need to check if there are multiple scripts with the same name, so we namually set |\MGL@script@name|, instead of using |\MGL@set@script@name|. % \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% + \edef\MGL@script@name{#2}% % \end{macrocode} -% Execute |\next@action|. +% We check if the user has specified a custom location for the script. % \begin{macrocode} - \next@action% -} + \@ifundefined{MGL@forced@path}{% % \end{macrocode} -% \end{macro} -% \begin{macro}{\end@mglblock} -% \begin{macro}{\test@end@mglblock} -% We already know the purpose of these macros. +% If no custom location has been used, we iterate over the list |\MGL@paths| to find the script. % \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% -} + \@for\MGL@temp@b:=\MGL@paths\do{% % \end{macrocode} -% \end{macro} -% \end{macro} -% \begin{macro}{\mgl@in@stream} -% We create an input stream to read from MGL scripts. +% If the script exists, we store its location in |\MGL@temp@a|% % \begin{macrocode} -\newread\mgl@in@stream + \IfFileExists{\MGL@temp@b\MGL@script@name.mgl}{% + \edef\MGL@temp@a{\MGL@temp@b}% + }{}% + }% + }{% % \end{macrocode} -% \end{macro} -% \begin{macro}{\endmglblock} -% The end of the |mglblock| environment. +% If the user specified the location of the script, we check if it exists, in which case we store its location in |\MGL@temp@a|. % \begin{macrocode} -\def\endmglblock{% + \IfFileExists{\MGL@script@name.mgl}{% + \edef\MGL@temp@a{\MGL@forced@path}% + }{}% + }% % \end{macrocode} -% Close the output stream. +% If |\MGL@temp@a| is not defined, the script has not been found, so we issue a warning, and display a box in the document with the words \emph{MGL script not found}. % \begin{macrocode} - \immediate\closeout\mgl@out@stream% + \@ifundefined{MGL@temp@a}{% + \PackageWarning{mgltex}{% + MGL script "\MGL@forced@path\MGL@script@name.mgl" not found% + }% + \center% + \fbox{% + \centering% + \bfseries\Huge% + \begin{tabular}{c}MGL\\script\\not\\found\end{tabular}% + }% + \endcenter% + }{% % \end{macrocode} -% Open the input stream. +% If |\MGL@temp@a| is defined, the script has been found, so we call |\mglinclude@@| to set up the inclusion of the script. % \begin{macrocode} - \immediate\openin\mgl@in@stream="\mgl@dir\this@script.mgl"% + \mglinclude@@% + }% + \egroup% +} % \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. +% \end{macro} +% \begin{macro}{\mglinclude@@} +% This macro sets the parameters for the inclusion of the script, and calls the command in charge of the transcription. % \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% +\def\mglinclude@@{% % \end{macrocode} -% Use the verbatim font, and obey spaces, including spaces at the beggining of the line. +% We first add the script to the \LaTeX{} list of included files. % \begin{macrocode} - \verbatim@font% - \@vobeyspaces% + \@addtofilelist{\MGL@script@name.mgl}% % \end{macrocode} -% Call the command that will write the lines of code to the \LaTeX{} document. +% If the user has used the unstarred version of |\mglinclude|, we add a contents line to the |.lms| file. % \begin{macrocode} - \mglblock@read@line% -} + \if@MGL@list@script@% + \refstepcounter{MGL@verb@script@no}% + \addcontentsline{lms}{MGL@script}{% + \protect\numberline{\theMGL@verb@script@no.}% + {\ttfamily\protect\detokenize{\MGL@script@name.mgl}}% + }% + \fi% % \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. +% We start a |\list| in which each line of code will be an item. If the lines have to be numbered, we use the |MGL@line@no| counter. % \begin{macrocode} -\def\mglblock@read@line{% + \if@MGL@lineno@% + \list{\mgllinenostyle\arabic{MGL@line@no}.}{\usecounter{MGL@line@no}}% + \else% + \list{}{}% + \fi% % \end{macrocode} -% Increase the line counter. +% We set the parameters for a verbatim code. % \begin{macrocode} - \stepcounter{mgl@verb@line@no}% + \MGL@set@verbatim@code% % \end{macrocode} -% Read a line from the input stream. +% The heading of the environment is set. It is similar to that of the |mglblock| environment. % \begin{macrocode} - \read\mgl@in@stream to \this@line% + \fboxrule=\mgllinethickness% + \item[\MGL@line@sep]\fbox{% + \bfseries\ttfamily\expandafter\detokenize\expandafter{\MGL@script@name.mgl}% + }\hskip\labelsep\MGL@line@sep\par\par% % \end{macrocode} -% If the end of file has been reached, define |\next@action| to close the input stream, and en the |list| environment; +% We redefine the |\verbatim@processline| macro from the \textsf{verbatim} package to put |\the\verbatim@line| on an item. % \begin{macrocode} - \ifeof\mgl@in@stream% - \def\next@action{% - \immediate\closein\mgl@in@stream% - \endlist% - \endgroup% - }% + \def\verbatim@processline{% + \item\the\verbatim@line% + }% % \end{macrocode} -% otherwise, |\next@action| is write the read line as an item of the |list| environment, and recursively call |\mglblock@read@line|. +% The script is opened for reading. % \begin{macrocode} - \else% - \def\next@action{% - \item\mbox{\this@line}% - \mglblock@read@line% - }% - \fi% + \immediate\openin\MGL@in@stream="\MGL@temp@a\MGL@script@name.mgl"% % \end{macrocode} -% Execute |\next@action|. +% We call |\mglinclude@@@| to start the transcription. % \begin{macrocode} - \next@action% + \mglinclude@@@% } % \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{macro}{\mglinclude@@@} +% This command transcripts the MGL code of the script and closes the list started in |\mglinclude@@|, adding the corresponding separation line to separate the code from normal text. % \begin{macrocode} - \def\graph@keys{}% +\def\mglinclude@@@{% % \end{macrocode} -% Process the \meta{key}=\meta{value} options passed by the user. +% Since the transcription has to be done even when \textsf{\mglTeX} is off, instead of using the |\MGL@read| command ---which is inactive when the package is off---, we use the usual commands from \LaTeX{} to read from the file. % \begin{macrocode} - \setkeys{mgl@keys}{#1}% + \immediate\read\MGL@in@stream to \MGL@temp@b% % \end{macrocode} -% Execute the program |mglconv| (included in MathGL) to compile the corresponding script. +% If the end of file has been reached, we close the input stream, add the separation line, and end the |\list|. % \begin{macrocode} - \mgl@write{18}{mglconv "\mgl@dir#2.mgl" -s "\mgl@dir\mglcommonscript.mgl" -o "\mgl@dir#2\mgl@image@ext"} + \ifeof\MGL@in@stream% + \immediate\closein\MGL@in@stream% + \item[\MGL@line@sep]\hskip-\labelsep\MGL@line@sep% + \endlist% % \end{macrocode} -% Include the generated image with the |\mgl@include@image| command. +% Otherwise, we use |\verbatim@startline| to clean the |\verbatim@line| buffer, then we add the just read line to the buffer, and call |\verbatim@processline| to include it as an item of the list. Finally, we recursively call |\mglinclude@@@| to read the next line. % \begin{macrocode} - \mgl@include@image{\mgl@dir#2}% + \else% + \verbatim@startline% + \expandafter\verbatim@addtoline\expandafter{\MGL@temp@b}% + \verbatim@processline% + \expandafter\mglinclude@@@% + \fi% } % \end{macrocode} % \end{macro} -% \begin{macro}{\mglinclude} -% This command copies verbatim the contents of an external script, and numerates each line of code. +% \end{macro}\end{macro} +% +% \subsection{Additional commands} +% \begin{macro}{\mglname} +% \noindent The purpose of this command is to force the closure of the current main script, compile the corresponding figures, and open a new main script. At first, it is defined to only change the value of |\MGL@main@script@name| because the main script is not opened until the call of |\begin{document}|; but at that point, it is redefined to perform the described actions. % \begin{macrocode} - -\def\mglinclude#1{% +\def\mglname#1{\edef\MGL@main@script@name{#1}} % \end{macrocode} -% Initialize the line counter. +% Here is the redefinition of |\mglname|. % \begin{macrocode} - \setcounter{mgl@verb@line@no}{0}% +\AtBeginDocument{% + \def\mglname#1{% % \end{macrocode} -% Open the script in the input stream. +% We start a space hack, ince this function has no real effect on the document. % \begin{macrocode} - \immediate\openin\mgl@in@stream="\mgl@dir#1.mgl"% + \@bsphack% % \end{macrocode} -% Here, we use the |list| environment to numerate each line of code as an item. We also set some length parameters. +% The MGL functions created throughout the document are written. % \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% + \MGL@write@funcs% % \end{macrocode} -% We do the same changes of category as in the |mglcode| environment, and set the font to verbatim font. +% We force the closure of the main script. We use |\immediate\closeout| instead of |\MGL@closeout| in case \textsf{\mglTeX} is off. % \begin{macrocode} - \let\do\@makeother \dospecials% - \endlinechar`\^^M \catcode`\^^M\active% - \@vobeyspaces% - \verbatim@font% + \immediate\closeout{\MGL@main@stream}% +% \end{macrocode} +% The closed script is compiled. +% \begin{macrocode} + \MGL@write{18}{% + mglconv -q \MGL@quality\space -S \MGL@scale\space% + -s "\MGL@dir\MGL@scripts@dir\mglcommonscriptname.mgl"\space% + -n "\MGL@dir\MGL@scripts@dir\MGL@main@script@name.mgl"% + }% +% \end{macrocode} +% The name of the new main script is updated, and it is check for overwriting, using |\MGL@set@script@name| inside a local group, since this command defines |\MGL@script@name|, which we need undefined in some parts of the code of the package. +% \begin{macrocode} + \edef\MGL@main@script@name{#1}% + \bgroup\MGL@set@script@name{\MGL@main@script@name}\egroup% + \MGL@openout\MGL@main@stream{% + \MGL@dir\MGL@scripts@dir\MGL@main@script@name.mgl% + }% % \end{macrocode} -% We (re)use the |\mglblock@read@line| command to numerate and write each line of code. +% The space hack is ended. % \begin{macrocode} - \mglblock@read@line% + \@esphack% + }% } % \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{macro}{\listofmglscripts} +% This command creates the \emph{list of MGL scripts} section. It has to be defined differently depending on whether the used document class defines the |\l@chapter| command or it only the |\l@section| command, which set the style for making a table of contents entry for the |\chapter| command and the |\section| command, respectively. If none of them are defined, we define our own style based on the latter. % \begin{macrocode} -\def\mgl@dir{} +\ifx\l@chapter\@undefined% % \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. +% If |\l@chapter| is not defined, we check if |\l@section| is. % \begin{macrocode} -\def\mgldir#1{% - \def\mgl@dir{#1}% -} + \ifx\l@section\@undefined% % \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. +% If |\l@section| is not defined, we set the |\lisofmglscripts| command to perform exactly as the |\section*{\listofmglscriptsname}| would do in the usual \textsf{book} and \textsf{article} \LaTeX{} classes, except that the type of section is |MGL@list|. % \begin{macrocode} -\@onlypreamble\mgldir + \def\listofmglscripts{% + \@startsection{MGL@list}% + {1}{0em}{-3.5ex plus -1ex minus -0.2ex}% + {2.5ex plus 0.2ex}% + {\centering\normalfont\bfseries\large}*% + {\listofmglscriptsname}% % \end{macrocode} -% \end{macro} -% \begin{macro}{\mgl@quality} -% We define a macro to store the quality. +% We use the |\@mkboth| command to set the page marks according to the current page style. % \begin{macrocode} -\def\mgl@quality{2} + \@mkboth{% + \MakeUpperCase\listofmglscriptsname% + }{% + \MakeUppercase\listofmglscriptsname% + }% % \end{macrocode} -% \end{macro} -% \begin{macro}{\mglquality} -% This is used to define the quality for MGL graphics. +% The \emph{list of MGL scripts} is created by reading the document's |.lms| file. % \begin{macrocode} -\def\mglquality#1{% + \@starttoc{lms}% + }% % \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% +% The |\l@MGL@list| style has the same code as the |\l@section| style. +% \begin{macrocode} + \newcommand*\l@MGL@list[2]{% + \ifnum \c@tocdepth >\z@ + \addpenalty\@secpenalty + \addvspace{1.0em \@plus\p@}% + \setlength\@tempdima{1.5em}% + \begingroup + \parindent \z@ \rightskip \@pnumwidth + \parfillskip -\@pnumwidth + \leavevmode \bfseries + \advance\leftskip\@tempdima + \hskip -\leftskip + #1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par + \endgroup + \fi% + }% \else% - \PackageWarning{mgltex}{mglTeX is off, quality changes won't have effect}% +% \end{macrocode} +% If the |\l@section| style is defined, the \emph{list of MGL scripts} is just an unumbered section. +% \begin{macrocode} + \def\listofmglscripts{% + \section*{\listofmglscriptsname}% + \@mkboth{% + \MakeUppercase\listofmglscriptsname% + }{% + \MakeUppercase\listofmglscriptsname% + }% + \@starttoc{lms}% + }% \fi% -} +\else% +% \end{macrocode} +% If the |\l@chapter| style is defined, the \emph{list of MGL scripts} is just an unumbered chapter. +% \begin{macrocode} + \def\listofmglscripts{% + \chapter*{\listofmglscriptsname}% + \@mkboth{% + \MakeUpperCase\listofmglscriptsname% + }{% + \MakeUppercase\listofmglscriptsname% + }% + \@starttoc{lms}% + }% +\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{macro}{\mglTeX} +% This macro pretty-prints the name of the package. % \begin{macrocode} -\def\mgltexon{ - \@mgltex@on@true - \def\mgl@write##1##2{% - \immediate\write##1{##2}% - } -} +\def\mglTeX{mgl\TeX} % \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{macro}{\mglTeXwVersion} +% This macro pretty-prints the name of the package with its version in a coherent manner, and separated with an unbreakable space. % \begin{macrocode} -\def\mgltexoff{% - \@mgltex@on@false - \def\mgl@write##1##2{}% -} + +\def\mglTeXwVer{\mglTeX~v4.0} % \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{macro}{\mgldir} +% This command is the interface for the user to change the value of |\MGL@dir|. It is an only-preamble macro, since using it elsewhere would cause faulty behavior. % \begin{macrocode} -\def\mglcomments{ - \@mgl@comments@true -} +\def\mgldir#1{\def\MGL@dir{#1}}\@onlypreamble\mgldir % \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{macro}{\mglscriptsdir} +% This command modifies the value of |\MGL@scripts@dir|. It is also an only-preamble macro. % \begin{macrocode} -\def\mglnocomments{% - \@mgl@comments@false -} +\def\mglscriptsdir#1{\def\MGL@scripts@dir{#1}}\@onlypreamble\mglscriptsdir % \end{macrocode} % \end{macro} -% \begin{macro}{\mglTeX} -% Just pretty-prints the name of the package. +% \begin{macro}{\mglgraphicsdir} +% Modifies the value of |\MGL@graphics@dir|. It is an only-preamble macro. % \begin{macrocode} - -\def\mglTeX{mgl\TeX} +\def\mglgraphicsdir#1{\def\MGL@graphics@dir{#1}}\@onlypreamble\mglgraphicsdir +% \end{macrocode} +% \end{macro} +% \begin{macro}{\mglbackupsdir} +% Modifies the value of |\MGL@backups@dir|. It is an only-preamble macro. +% \begin{macrocode} +\def\mglbackupsdir#1{\def\MGL@backups@dir{#1}}\@onlypreamble\mglbackupsdir +% \end{macrocode} +% \end{macro} +% \begin{macro}{\mglpaths} +% This command adds a list of search paths for scripts to the existing one (|\MGL@paths|). +% \begin{macrocode} +\def\mglpaths#1{\g@addto@macro\MGL@paths{,#1}} % \end{macrocode} % \end{macro} +% +% \begin{macro}{\mglcommonscriptname}\begin{macro}{\mglcommentname}\begin{macro}{\listofmglscriptsname}\begin{macro}{\mglverbatimname}\begin{macro}{\mgllinenostyle}\begin{macro}{\mgldashwidth}\begin{macro}{\mgllinethickness}\begin{macro}{\mglbreakindent} +% \begin{macrocode} +\def\mglcommonscriptname{MGL_common_script} +\def\mglcommentname{MGL commentary} +\def\listofmglscriptsname{List of MGL scripts} +\def\mglverbatimname{(Unnamed MGL verbatim script)} +\def\mgllinenostyle{\footnotesize} +\newdimen\mgldashwidth\mgldashwidth=0.75em +\newdimen\mgllinethickness\mgllinethickness=0.25ex +\newdimen\mglbreakindent\mglbreakindent=1em +% \end{macrocode} +% \end{macro}\end{macro}\end{macro}\end{macro}\end{macro}\end{macro}\end{macro}\end{macro} +% +% \subsection{Final adjustments} +% To finish the code of \textsf{\mglTeX}, we set the behavior of the package at the call of the |\begin{document}| and |\end{document}| commands. +% +% We tell \LaTeX{} to check the name of the document's main script for overwriting. We do this by calling |\MGL@set@script@name| inside a local group, because it defines |\MGL@script@name|, which we need undefined in certain parts of the code. Then the script is opened. We use |\immediate\openout| instead of |\MGL@openout| for this purpose, since, otherwise, we run the risk of the main script not being created when needed, if the user turns off \textsf{\mglTeX} before the |\begin{document}| command, and turns it on immediately after. +% \begin{macrocode} +\AtBeginDocument{% + \bgroup\MGL@set@script@name{\MGL@main@script@name}\egroup% + \immediate\openout\MGL@main@stream=% + \MGL@dir\MGL@scripts@dir\MGL@main@script@name.mgl% +} +% \end{macrocode} +% We also set the actions for the call of |\end{document}| +% \begin{macrocode} +\AtEndDocument{% +% \end{macrocode} +% |\MGL@write@funcs| will simply write the MGL functions throughout the \LaTeX{} document. +% \begin{macrocode} + \MGL@write@funcs% +% \end{macrocode} +% The main script is closed. We use the |\immediate\closeout| construction instead of |\MGL@closeout|, since the script must be closed even when \textsf{\mglTeX} is off. +% \begin{macrocode} + \immediate\closeout\MGL@main@stream% +% \end{macrocode} +% The main script is compiled. +% \begin{macrocode} + \MGL@write{18}{% + mglconv -q \MGL@quality\space -S \MGL@scale\space% + -s "\MGL@dir\MGL@scripts@dir\mglcommonscriptname.mgl"\space% + -n "\MGL@dir\MGL@scripts@dir\MGL@main@script@name.mgl"% + }% +} +% \end{macrocode} +% % \Finale \ No newline at end of file diff --git a/mgltex/mgltex.ins b/mgltex/mgltex.ins index f780ff3..8dc591b 100644 --- a/mgltex/mgltex.ins +++ b/mgltex/mgltex.ins @@ -1,16 +1,17 @@ %% -%% Copyright (C) 2014 by Diego Sejas -%% +%% Copyright (C) 2014--2015 by Diego Sejas Viscarra +%% Copyright (C) 2014--2015 by Alexey Balakin +%% %% This program is free software: you can redistribute it and/or modify it %% under the terms of the GNU General Public License as published by the %% Free Software Foundation, either version 3 of the License, or (at your %% option) any later version. -%% +%% %% This program is distributed in the hope that it will be useful, but %% WITHOUT ANY WARRANTY; without even the implied warranty of %% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General %% Public License for more details. -%% +%% %% You should have received a copy of the GNU General Public License along %% with this program. If not, see . %% @@ -24,7 +25,8 @@ This is a generated file. -Copyright (C) 2014 by Diego Sejas +Copyright (C) 2014--2015 by Diego Sejas Viscarra +Copyright (C) 2014--2015 by Alexey Balakin This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the diff --git a/mgltex/mgltex.pdf b/mgltex/mgltex.pdf index fb4fedfe9a45fcc560e47c830ec8c60b2585331f..fe33fb9449eb503ffd661ddf262edf9795705363 100644 GIT binary patch literal 510993 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 D%cVVxX96Gm}J15|&NE(SkgS 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

-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 z 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ⅆ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

  • S%}u6Jo|#jP+&r^RA2Lq8s?}g|+lXAfNG@lA)JyNIFE0@yaz(l^FQuXB^2sOO zs;JyyiskIXu7!w|J8;!zL7($>EY}Xhcp%{AWq%wyDegHt6}<1X=f9&-+^Mz|xMb~E zkKgZ`Q`yR1xw^&V8m1~6%n5^3u+y;>Z)Z$&EgOC_uBkTC@$Ol!JMfYPqf4BfgJ&j| z^c;D0f79_~PJWC`@)F1pf;y%XR%9X&fNU?3fcv?mh??ZbnE1w03a-&$rnGveP^YB{ z@%8XlIQb|JeG~+_9n(RtDhg+$7iA80{Y$0S)L`%oHqvu9+Pik~>c3@Y@~TSqKR}bD z7XdE0kFmOXU{eSi^@n2yKy|W5)tMARXmk7hVs6ajpic^Mng_f0yvG-82hFBy7o|UC zxuWZ)((;uPAMIulz%IS#36wXKNxJVR9iC*r8Ra}j=k3%R)2V~|kmzQ{#Eq=pHur*H z8H5?8W2W?O{A%nL0kKoZ%4SflcMCMON?JCpuIozuURC)!z#@p7(*v`+u^^`$63cFM zPrCfxQweE6BRF4E3e_#g#j+9;?b*Ck`&7Po(3bqb}#)9=+3A;pC zxn=v0ZIzs7tGh76tD+5o@Rl-F(+G8yUG!$C{o6eWq#zS32uC9}2NU;)zenCAeG^98 z8_B5ibI?-I?D-p8>-APVwR1A&UptJ}1J29iJf(HGVFnBX9E`Q1cpiuV_bH9Olq$9OJ)S7|G1KxyAl9+)ca2Mm0B3-%K*+|GoR z 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%0AY!8SD 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%0AR=E7R&g<*=unMY$Cw*2^rG1 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 literal 244484 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࿎>V^5BYY?mz+jouG!)g58zknQdyEjc3C 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 -%% Copyright (C) 2015 by Alexey Balakin +%% This is file `mgltex.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% mgltex.dtx (with options: `package') +%% +%% This is a generated file. +%% +%% Copyright (C) 2014--2015 by Diego Sejas Viscarra +%% Copyright (C) 2014--2015 by Alexey Balakin %% %% This program is free software: you can redistribute it and/or modify it %% under the terms of the GNU General Public License as published by the @@ -14,13 +23,12 @@ %% %% You should have received a copy of the GNU General Public License along %% with this program. If not, see . -%% +%% \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{mgltex}[/2015/03/29 v3.0 Embed MGL scripts in LaTeX documents] +\ProvidesPackage{mgltex}[2015/11/02 v4.0 Embed MGL scripts into LaTeX documents] -\RequirePackage{keyval} -\RequirePackage{graphicx} +\def\MGL@TeX@ext{.tex} \DeclareOption{draft}{% \PassOptionsToPackage{\CurrentOption}{graphicx}% @@ -29,769 +37,846 @@ \PassOptionsToPackage{\CurrentOption}{graphicx}% } -\DeclareOption{epstopdf}{% - \DeclareGraphicsRule{.eps}{pdf}{.pdf}{`epstopdf #1}% -} - -\DeclareOption{on}{% - \def\MGL@openout#1#2{% - \immediate\openout#1="#2"% +\def\mgltexon{% + \def\MGL@openout##1##2{% + \immediate\openout##1="##2"% + }% + \def\MGL@openin##1##2{% + \immediate\openin##1="##2"% }% - \def\MGL@write#1#2{% - \immediate\write#1{#2}% + \def\MGL@write##1##2{% + \immediate\write##1{##2}% + }% + \def\MGL@read##1##2{% + \def##2{}% + \ifeof##1\else% + \bgroup% + \endlinechar=-1% + \immediate\global\read##1 to ##2% + \egroup% + \fi% + }% + \def\MGL@closeout##1{% + \immediate\closeout##1% + } + \def\MGL@closein##1{% + \immediate\closein##1% + } + \def\MGL@includegraphics{% + \IfFileExists{\MGL@dir\MGL@graphics@dir\MGL@script@name\MGL@graph@ext}{% + \ifx\MGL@graph@ext\MGL@TeX@ext% + \include{\MGL@dir\MGL@graphics@dir\MGL@script@name\MGL@graph@ext}% + \else% + \expandafter\includegraphics\expandafter[\MGL@graph@keys]{% + \MGL@dir\MGL@graphics@dir\MGL@script@name% + }% + \fi% + }{% + \PackageWarning{mgltex}{MGL image "\MGL@script@name" not found}% + \fbox{% + \centering% + \bfseries\Huge% + \begin{tabular}{c}MGL\\image\\not\\found\end{tabular}% + }% + }% }% - \def\MGL@graph@not@found@text{MGL\\image\\not\\found}% - \def\MGL@graph@not@found@message{MGL image "\MGL@this@code@label" not found}% } -\DeclareOption{off}{% - \def\MGL@openout#1#2{}% - \def\MGL@write#1#2{}% - \def\MGL@graph@not@found@text{\mglTeX\\is off,\\no image\\generated}% - \def\MGL@graph@not@found@message{mglTeX is off, MGL image "\MGL@this@code@label" not generated}% +\def\mgltexoff{% + \PackageWarning{mgltex}{mglTeX is off}% + \def\MGL@openout##1##2{}% + \def\MGL@openin##1##2{}% + \def\MGL@write##1##2{}% + \def\MGL@read##1##2{}% + \def\MGL@closeout##1{} + \def\MGL@closein##1{} + \def\MGL@includegraphics{% + \fbox{% + \centering% + \bfseries\Huge% + \begin{tabular}{c}\mglTeX\\is off;\\no image\\included\end{tabular}% + }% + }% } +\DeclareOption{on}{\mgltexon} +\DeclareOption{off}{\mgltexoff} \newif\if@MGL@comments@ -\DeclareOption{comments}{% - \@MGL@comments@true% -} -\DeclareOption{nocomments}{% - \@MGL@comments@false% +\def\mglnocomments{\@MGL@comments@false} +\def\mglcomments{\@MGL@comments@true} +\DeclareOption{nocomments}{\mglnocomments} +\DeclareOption{comments}{\mglcomments} + +\def\mglscale#1{ + \def\MGL@scale{#1}% + \ifcase\MGL@scale\or\or\or\or\or\or\or\or\else% + \PackageWarning{mgltex}{% + Scaling value of \MGL@scale\space not allowed; using default (1)% + }% + \def\MGL@scale{1}% + \fi% } +\DeclareOption{1x}{\mglscale{1}} +\DeclareOption{2x}{\mglscale{2}} +\DeclareOption{3x}{\mglscale{3}} +\DeclareOption{4x}{\mglscale{4}} +\DeclareOption{5x}{\mglscale{5}} +\DeclareOption{6x}{\mglscale{6}} +\DeclareOption{7x}{\mglscale{7}} +\DeclareOption{8x}{\mglscale{8}} +\DeclareOption{9x}{\mglscale{9}} -\DeclareOption{1x}{\def\MGL@scale{1}} -\DeclareOption{2x}{\def\MGL@scale{2}} -\DeclareOption{3x}{\def\MGL@scale{3}} -\DeclareOption{4x}{\def\MGL@scale{4}} -\DeclareOption{5x}{\def\MGL@scale{5}} -\DeclareOption{6x}{\def\MGL@scale{6}} -\DeclareOption{7x}{\def\MGL@scale{7}} -\DeclareOption{8x}{\def\MGL@scale{8}} -\DeclareOption{9x}{\def\MGL@scale{9}} - -\DeclareGraphicsExtensions{% - .png,.eps,.jpg,.jpeg,.bps,.pdf,.epsz,.eps.gz,.bpsz,.bps.gz,.gif% -} -\DeclareOption{jpg}{\def\MGL@graphics@ext{.jpg}} -\DeclareOption{jpeg}{\def\MGL@graphics@ext{.jpeg}} -\DeclareOption{pdf}{\def\MGL@graphics@ext{.pdf}} -\DeclareOption{png}{\def\MGL@graphics@ext{.png}} -\DeclareOption{eps}{\def\MGL@graphics@ext{.eps}} -\DeclareOption{epsz}{\def\MGL@graphics@ext{.eps.gz}} -\DeclareOption{bps}{\def\MGL@graphics@ext{.bps}} -\DeclareOption{bpsz}{\def\MGL@graphics@ext{.bps.gz}} -\DeclareOption{gif}{\def\MGL@graphics@ext{.gif}} -\DeclareOption{tex}{\def\MGL@graphics@ext{.tex}} +\def\mglquality#1{% + \def\MGL@quality{#1}% + \ifcase\MGL@quality% + \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)% + }% + \def\MGL@quality{2}% + \fi% +} +\DeclareOption{0q}{\mglquality{0}} +\DeclareOption{1q}{\mglquality{1}} +\DeclareOption{2q}{\mglquality{2}} +\DeclareOption{3q}{\mglquality{3}} +\DeclareOption{4q}{\mglquality{4}} +\DeclareOption{5q}{\mglquality{5}} +\DeclareOption{6q}{\mglquality{6}} +\DeclareOption{7q}{\mglquality{7}} +\DeclareOption{8q}{\mglquality{8}} + +\DeclareOption{eps}{\def\MGL@graph@ext{.eps}} +\DeclareOption{epsz}{\def\MGL@graph@ext{.epsz}} +\DeclareOption{epsgz}{\def\MGL@graph@ext{.eps.gz}} +\DeclareOption{bps}{\def\MGL@graph@ext{.bps}} +\DeclareOption{bpsz}{\def\MGL@graph@ext{.bpsz}} +\DeclareOption{bpsgz}{\def\MGL@graph@ext{.bps.gz}} +\DeclareOption{pdf}{\def\MGL@graph@ext{.pdf}} +\DeclareOption{png}{\def\MGL@graph@ext{.png}} +\DeclareOption{jpg}{\def\MGL@graph@ext{.jpg}} +\DeclareOption{jpeg}{\def\MGL@graph@ext{.jpeg}} +\DeclareOption{gif}{\def\MGL@graph@ext{.gif}} +\DeclareOption{tex}{\def\MGL@graph@ext{.tex}} \DeclareOption*{\@unknownoptionerror} -\ExecuteOptions{final,on,nocomments,1x,eps} +\ExecuteOptions{final,on,nocomments,1x,2q,eps} \ProcessOptions* -\define@key{MGL@keys}{dir}{\def\MGL@dir{#1}} -\define@key{MGL@keys}{scriptsdir}{\def\MGL@scripts@dir{#1}} -\define@key{MGL@keys}{graphicsdir}{\def\MGL@graphics@dir{#1}} -\define@key{MGL@keys}{backupsdir}{\def\MGL@backups@dir{#1}} -\define@key{MGL@keys}{quality}{\def\MGL@quality{#1}} -\define@key{MGL@keys}{width}{\def\MGL@width{#1}} -\define@key{MGL@keys}{height}{\def\MGL@height{#1}} - -\define@key{mgl@keys}{bb}{\g@addto@macro{\graph@keys}{bb=#1,}} -\define@key{mgl@keys}{bbllx}{\g@addto@macro{\graph@keys}{bbllx=#1,}} -\define@key{mgl@keys}{bblly}{\g@addto@macro{\graph@keys}{bblly=#1,}} -\define@key{mgl@keys}{bburx}{\g@addto@macro{\graph@keys}{bburx=#1,}} -\define@key{mgl@keys}{bbury}{\g@addto@macro{\graph@keys}{bbury=#1,}} -\define@key{mgl@keys}{natwidth}{\g@addto@macro{\graph@keys}{natwidth=#1,}} -\define@key{mgl@keys}{natheight}{\g@addto@macro{\graph@keys}{natheight=#1,}} -\define@key{mgl@keys}{hiresbb}{\g@addto@macro{\graph@keys}{hiresbb=#1,}} -\define@key{mgl@keys}{viewport}{\g@addto@macro{\graph@keys}{viewport=#1,}} -\define@key{mgl@keys}{trim}{\g@addto@macro{\graph@keys}{trim=#1,}} -\define@key{mgl@keys}{angle}{\g@addto@macro{\graph@keys}{angle=#1,}} -\define@key{mgl@keys}{origin}{\g@addto@macro{\graph@keys}{origin=#1,}} -\define@key{mgl@keys}{width}{\g@addto@macro{\graph@keys}{width=#1,}} -\define@key{mgl@keys}{height}{\g@addto@macro{\graph@keys}{height=#1,}} -\define@key{mgl@keys}{totalheight}{\g@addto@macro{\graph@keys}{totalheight=#1,}} -\define@key{mgl@keys}{keepaspectratio}{\g@addto@macro{\graph@keys}{keepaspectratio=#1,}} -\define@key{mgl@keys}{scale}{\g@addto@macro{\graph@keys}{scale=#1,}} -\define@key{mgl@keys}{clip}[true]{\g@addto@macro{\graph@keys}{clip=#1,}} -\define@key{mgl@keys}{draft}[false]{\g@addto@macro{\graph@keys}{draft=#1,}} -\define@key{mgl@keys}{type}{\g@addto@macro{\graph@keys}{type=#1,}} -\define@key{mgl@keys}{ext}{\g@addto@macro{\graph@keys}{ext=#1,}} -\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@graphics@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,}} -\define@key{mglplot@keys}{bburx}{\g@addto@macro{\graph@keys}{bburx=#1,}} -\define@key{mglplot@keys}{bbury}{\g@addto@macro{\graph@keys}{bbury=#1,}} -\define@key{mglplot@keys}{natwidth}{\g@addto@macro{\graph@keys}{natwidth=#1,}} -\define@key{mglplot@keys}{natheight}{\g@addto@macro{\graph@keys}{natheight=#1,}} -\define@key{mglplot@keys}{hiresbb}{\g@addto@macro{\graph@keys}{hiresbb=#1,}} -\define@key{mglplot@keys}{viewport}{\g@addto@macro{\graph@keys}{viewport=#1,}} -\define@key{mglplot@keys}{trim}{\g@addto@macro{\graph@keys}{trim=#1,}} -\define@key{mglplot@keys}{angle}{\g@addto@macro{\graph@keys}{angle=#1,}} -\define@key{mglplot@keys}{origin}{\g@addto@macro{\graph@keys}{origin=#1,}} -\define@key{mglplot@keys}{width}{\g@addto@macro{\graph@keys}{width=#1,}} -\define@key{mglplot@keys}{height}{\g@addto@macro{\graph@keys}{height=#1,}} -\define@key{mglplot@keys}{totalheight}{\g@addto@macro{\graph@keys}{totalheight=#1,}} -\define@key{mglplot@keys}{keepaspectratio}{\g@addto@macro{\graph@keys}{keepaspectratio=#1,}} -\define@key{mglplot@keys}{scale}{\g@addto@macro{\graph@keys}{scale=#1,}} -\define@key{mglplot@keys}{clip}[true]{\g@addto@macro{\graph@keys}{clip=#1,}} -\define@key{mglplot@keys}{draft}[false]{\g@addto@macro{\graph@keys}{draft=#1,}} -\define@key{mglplot@keys}{type}{\g@addto@macro{\graph@keys}{type=#1,}} -\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}{imgext}{\def\MGL@graphics@ext{.#1}} -\define@key{mglplot@keys}{setup}{\def\mglplot@setup{#1}} - -\def\mglsettings#1{% - \setkeys{MGL@keys}{#1}% -} -\@onlypreamble\mglsettings +\RequirePackage{keyval} +\RequirePackage{graphicx} +\RequirePackage{verbatim} +\DeclareGraphicsExtensions{% + .eps,.epsz,.eps.gz,.bps,.bpsz,.bps.gz,.pdf,.png,.jpg,.jpeg,.gif% +} +\let\verbatim@finish\relax + +\define@key{MGL@keys}{bb}{\g@addto@macro\MGL@graph@keys{bb=#1,}} +\define@key{MGL@keys}{bbllx}{\g@addto@macro\MGL@graph@keys{bbllx=#1,}} +\define@key{MGL@keys}{bblly}{\g@addto@macro\MGL@graph@keys{bblly=#1,}} +\define@key{MGL@keys}{bburx}{\g@addto@macro\MGL@graph@keys{bburx=#1,}} +\define@key{MGL@keys}{bbury}{\g@addto@macro\MGL@graph@keys{bbury=#1,}} +\define@key{MGL@keys}{natwidth}{\g@addto@macro\MGL@graph@keys{natwidth=#1,}} +\define@key{MGL@keys}{natheight}{\g@addto@macro\MGL@graph@keys{natheight=#1,}} +\define@key{MGL@keys}{hiresbb}{\g@addto@macro\MGL@graph@keys{hiresbb=#1,}} +\define@key{MGL@keys}{viewport}{\g@addto@macro\MGL@graph@keys{viewport=#1,}} +\define@key{MGL@keys}{trim}{\g@addto@macro\MGL@graph@keys{trim=#1,}} +\define@key{MGL@keys}{angle}{\g@addto@macro\MGL@graph@keys{angle=#1,}} +\define@key{MGL@keys}{origin}{\g@addto@macro\MGL@graph@keys{origin=#1,}} +\define@key{MGL@keys}{width}{\g@addto@macro\MGL@graph@keys{width=#1,}} +\define@key{MGL@keys}{height}{\g@addto@macro\MGL@graph@keys{height=#1,}} +\define@key{MGL@keys}{totalheight}{\g@addto@macro\MGL@graph@keys{totalheight=#1,}} +\define@key{MGL@keys}{keepaspectratio}[true]{% + \g@addto@macro\MGL@graph@keys{keepaspectratio=#1,}% +} +\define@key{MGL@keys}{scale}{\g@addto@macro\MGL@graph@keys{scale=#1,}} +\define@key{MGL@keys}{clip}[true]{\g@addto@macro\MGL@graph@keys{clip=#1,}} +\define@key{MGL@keys}{draft}[true]{\g@addto@macro\MGL@graph@keys{draft=#1,}} +\define@key{MGL@keys}{type}{\g@addto@macro\MGL@graph@keys{type=#1,}} +\define@key{MGL@keys}{ext}{\g@addto@macro\MGL@graph@keys{ext=#1,}} +\define@key{MGL@keys}{read}{\g@addto@macro\MGL@graph@keys{read=#1,}} +\define@key{MGL@keys}{command}{\g@addto@macro\MGL@graph@keys{command=#1,}} +\define@key{MGL@keys}{imgext}{\def\MGL@graph@ext{.#1}} + +\newif\if@MGL@lineno@ +\define@key{MGL@verb@keys}{lineno}[true]{\csname @MGL@lineno@#1\endcsname} + +\edef\MGL@main@script@name{\jobname} \def\MGL@dir{} -\def\mgldir#1{% - \def\MGL@dir{#1}% -} -\@onlypreamble\mgldir - \def\MGL@scripts@dir{} -\def\mglscriptsdir#1{% - \def\MGL@scripts@dir{#1}% -} -\@onlypreamble\mglscriptsdir - \def\MGL@graphics@dir{} -\def\mglgraphicsdir#1{% - \def\MGL@graphics@dir{#1}% -} -\@onlypreamble\mglscriptsdir - \def\MGL@backups@dir{} -\def\mglbackupsdir#1{% - \def\MGL@backups@dir{#1}% -} -\@onlypreamble\mglbackupsdir +\def\MGL@paths{\MGL@dir\MGL@scripts@dir,\MGL@dir\MGL@backups@dir} -\def\TeX@ext{.tex} -\def\MGL@include@graphics{% - \ifx\MGL@graphics@ext\TeX@ext% - \IfFileExists{\MGL@this@code@label.tex}{% - \include{\MGL@dir\MGL@graphics@dir\MGL@this@code@label}% - }{% - \MGL@graph@not@found% - }% - \else% - \def\MGL@next@action{\MGL@graph@not@found}% - \@for\MGL@graph@ext:=\Gin@extensions\do{%b - \IfFileExists{\MGL@dir\MGL@graphics@dir\MGL@this@code@label\MGL@graph@ext}{% - \def\MGL@next@action{% - \expandafter\includegraphics\expandafter[\graph@keys]{\MGL@dir\MGL@graphics@dir\MGL@this@code@label}% - }% - }{}% - }% - \MGL@next@action% - \fi% -} -\def\MGL@graph@not@found{% - \PackageWarning{mgltex}{\MGL@graph@not@found@message}% - \fbox{% - \centering% - \bfseries\Huge% - \begin{tabular}{c}\MGL@graph@not@found@text\end{tabular}% - }% -} - -\def\MGL@openin#1#2{% - \immediate\openin#1="#2"% -} -\def\MGL@read#1#2{% - \def#2{}% - \ifeof#1\else% - \immediate\read#1 to #2% - \fi% -} -\def\MGL@closein#1{% - \immediate\closein#1% -} -\def\MGL@closeout#1{% - \immediate\closeout#1% -} -\def\MGL@unchanged#1{% - \global\@namedef{MGL@@@#1}{}% -} -\def\MGL@scripts@written{} -\def\MGL@funcs{} - -\newwrite\MGL@script -\newread\MGL@in@stream +\newwrite\MGL@main@stream \newwrite\MGL@out@stream +\newread\MGL@in@stream +\newcounter{MGL@script@no} +\newcounter{MGL@line@no} +\newcounter{MGL@verb@script@no} +\newif\if@MGL@list@script@ +\def\l@MGL@script{\@dottedtocline{1}{0em}{1.5em}} -\AtBeginDocument{% - \MGL@openout{\MGL@script}{\MGL@dir\MGL@scripts@dir\jobname.mgl}% - \MGL@write\MGL@script{\MGL@signature}% -} -\AtEndDocument{% - \MGL@write\MGL@script{stop}% - \MGL@write\MGL@script{}% - \bgroup% - \endlinechar=-1\relax% - \MGL@funcs% - \egroup% - \MGL@closeout{\MGL@script}% - \MGL@write{18}{mglconv -n -q \MGL@quality\space -S \MGL@scale\space "\MGL@dir\MGL@scripts@dir\jobname.mgl"}% -} - -%%%%% Anatomy of environments and commands %%%%% \def\MGL@setkeys#1#2{% - \def\graph@keys{}% + \def\MGL@graph@keys{}% \setkeys{#1}{#2}% } -\newcounter{MGL@script@no} -\def\MGL@create@code@label{% - \stepcounter{MGL@script@no}% - \edef\MGL@this@code@label{\jobname-MGL-\arabic{MGL@script@no}}% - \xdef\MGL@scripts@written{\MGL@scripts@written\MGL@this@code@label,}% +\def\MGL@codes{% + \let\do\@makeother\dospecials% + \catcode`\^^M\active% } -\def\MGL@test@code@label#1{% - \edef\MGL@this@code@label{#1}% - \@for\MGL@script@name:=\MGL@scripts@written\do{% - \ifx\MGL@this@code@label\MGL@script@name% - \PackageWarning{mgltex}{Overwriting MGL code labeled "\MGL@this@code@label"}% +\def\MGL@document@scripts{} +\def\MGL@set@script@name#1{% + \edef\MGL@script@name{#1}% + \@for\MGL@temp@a:=\MGL@document@scripts\do{% + \ifx\MGL@temp@a\MGL@script@name% + \PackageWarning{mgltex}{Multiple MGL scripts named "\MGL@script@name.mgl"}% \fi% }% - \xdef\MGL@scripts@written{\MGL@scripts@written\MGL@this@code@label,}% + \g@addto@macro\MGL@document@scripts{\MGL@script@name,}% } -\def\MGL@codes{% - \let\do\@makeother\dospecials\relax% - \endlinechar`\^^M \catcode`\^^M\active\relax% - \catcode`\ =10\relax% -} -\def\MGL@verb@codes{% - \let\do\@makeother\dospecials\relax% - \endlinechar`\^^M\relax\catcode`\^^M\active\relax% -} - -\def\MGL@test@end@env#1{% - \edef\MGL@this@line{#1}% - \ifx\MGL@this@line\MGL@end@env@cmd% - \def\MGL@next@action{\MGL@end@env}% - \fi% +\def\MGL@unchanged#1{% + \global\@namedef{MGL@@@#1}{}% } -\def\MGL@def@end@env@cmd#1{% - \def\MGL@end@env{\end{#1}}% - \begingroup% - \escapechar=-1 \relax% - \xdef\MGL@end@env@cmd{\string\\end\string\{#1\string\}}% - \endgroup% +\def\MGL@process@script#1#2{% + \@ifundefined{MGL@@@\MGL@script@name}{% + #1% + }{% + \IfFileExists{\MGL@dir\MGL@graphics@dir\MGL@script@name\MGL@graph@ext}{% + #2% + }{% + #1% + }% + }% } -\def\MGL@set@write@script@out{% - \def\MGL@write@code@action##1{% - \MGL@write\MGL@script{##1}% - \MGL@write\MGL@out@stream{##1}% +\def\MGL@def@for@loop#1{% + \long\def\MGL@for##1:=##2\do##3{% + \expandafter\def\expandafter\@fortmp\expandafter{##2}% + \ifx\@fortmp\@empty\else% + \expandafter\MGL@forloop##2#1\@nil#1\@nil\@@##1{##3}% + \fi% }% -} -\def\MGL@set@write@script{% - \def\MGL@write@code@action##1{% - \MGL@write\MGL@script{##1}% + \long\def\MGL@forloop##1#1##2#1##3\@@##4##5{% + \def##4{##1}% + \ifx##4\@nnil\else% + ##5\def##4{##2}% + \ifx##4\@nnil\else% + ##5\MGL@iforloop##3\@@##4{##5}% + \fi% + \fi% }% -} -\def\MGL@set@write@out{% - \def\MGL@write@code@action##1{% - \MGL@write\MGL@out@stream{##1}% + \long\def\MGL@iforloop##1#1##2\@@##3##4{% + \def##3{##1}% + \ifx##3\@nnil% + \expandafter\@fornoop% + \else% + ##4\relax\expandafter\MGL@iforloop% + \fi% + ##2\@@##3{##4}% }% } -\begingroup% - \catcode`\^^M\active\relax% - \gdef\MGL@ignore@line#1^^M{% - \expandafter\MGL@write@line% +\MGL@def@for@loop{^^J} + +\def\MGL@compare@code#1{% + \def\MGL@next{% + \MGL@closein\MGL@in@stream% + \MGL@write\@auxout{\string\MGL@unchanged{\MGL@script@name}}% }% - \gdef\MGL@write@line#1^^M{% - \def\MGL@next@action{% - \MGL@write@code@action{#1}% - \MGL@write@line% - }% - \MGL@test@end@env{#1}% - \MGL@next@action% - }% - \gdef\MGL@compare@line#1^^M{% - \def\MGL@next@action{% - \def\MGL@this@line{#1^^M}% - \MGL@read\MGL@in@stream{\MGL@this@code@line}% - \ifx\MGL@this@code@line\MGL@this@line\else% - \def\MGL@future@action{}% - \fi% - \MGL@compare@line% - }% - \edef\MGL@this@line{#1}% - \ifx\MGL@this@line\MGL@end@env@cmd% - \def\MGL@next@action{\MGL@end@env}% - \MGL@read\MGL@in@stream{\MGL@this@code@line}% - \ifeof\MGL@in@stream\else% - \def\MGL@future@action{}% - \fi% + \def\verbatim@processline{% + \MGL@read\MGL@in@stream{\MGL@temp@a}% + \edef\MGL@temp@b{\the\verbatim@line}% + \ifx\MGL@temp@a\MGL@temp@b\else% + \def\MGL@next{\MGL@closein\MGL@in@stream}% + \def\verbatim@processline{}% \fi% - \MGL@next@action% }% -\endgroup - -\def\MGL@set@write@verb@out{% - \def\MGL@write@verb@code@action{% - \MGL@write\MGL@out@stream{\the\MGL@line}% + \def\verbatim@finish{% + \MGL@read\MGL@in@stream{\MGL@temp@a}% + \ifeof\MGL@in@stream\else% + \def\MGL@next{\MGL@closein\MGL@in@stream}% + \fi% }% + \MGL@openin\MGL@in@stream{#1}% + \verbatim@start% } -\def\MGL@set@write@verb@to@doc{% - \def\MGL@write@verb@code@action{% - \stepcounter{MGL@verb@line@no}% - \item\mbox{\the\MGL@line}% - }% + +\def\MGL@write@funcs{\MGL@write\MGL@main@stream{stop^^J}} +\def\MGL@func#1{% + \MGL@openin\MGL@in@stream{\MGL@dir\MGL@backups@dir#1.mgl}% + \MGL@@func% } -\begingroup% - \catcode`\^^M\active\relax% - \gdef\MGL@ignore@verb@line#1^^M{% - \expandafter\MGL@write@verb@line% - } -\endgroup% -\newtoks\MGL@word -\newtoks\MGL@line -\def\MGL@write@verb@line#1{% - \let\MGL@next@action\MGL@write@verb@line% - \expandafter\if#1\^^M% - \MGL@write@verb@code@action% - \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}% - \MGL@test@end@env{\the\MGL@word}% - \fi\fi% - \MGL@next@action% -} -\def\MGL@rewrite@code#1{% - \MGL@read\MGL@in@stream{\MGL@this@code@line}% +\def\MGL@@func{% + \MGL@read\MGL@in@stream{\MGL@temp@a}% \ifeof\MGL@in@stream% - \MGL@closein{\MGL@in@stream}% + \MGL@closein\MGL@in@stream% \else% - \MGL@write#1{\MGL@this@code@line}% - \MGL@rewrite@code{#1}% + \MGL@write\MGL@main@stream{\MGL@temp@a}% + \expandafter\MGL@@func% \fi% } -\begingroup% - \catcode`\^^M\active\relax% - \gdef\MGL@compare@next@verb@line#1^^M{% - \expandafter\MGL@compare@verb@line% - }% -\endgroup -\def\MGL@compare@verb@line#1{% - \let\MGL@next@action\MGL@compare@verb@line% - \expandafter\if#1\^^M% - \MGL@line\expandafter{\the\MGL@line#1}% - \MGL@read\MGL@in@stream{\MGL@this@code@line}% - \edef\MGL@this@line{\the\MGL@line}% - \ifx\MGL@this@line\MGL@this@code@line\else% - \def\MGL@future@action{}% - \fi% - \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}% - \edef\MGL@this@line{\the\MGL@word}% - \ifx\MGL@this@line\MGL@end@env@cmd% - \def\MGL@next@action{\MGL@end@env}% - \MGL@read\MGL@in@stream{\MGL@this@code@line}% - \ifeof\MGL@in@stream\else% - \def\MGL@future@action{}% - \fi% + +\def\MGL@set@verbatim@code{% + \if@minipage\else\vskip\parskip\fi% + \leftskip\@totalleftmargin\rightskip\z@skip% + \parindent\z@\parfillskip\@flushglue\parskip\z@% + \@@par% + \def\par{% + \if@tempswa% + \leavevmode\null\@@par\penalty\interlinepenalty% + \else% + \@tempswatrue% + \ifhmode\@@par\penalty\interlinepenalty\fi% \fi% - \fi\fi% - \MGL@next@action% -} -\newcounter{MGL@verb@line@no} -\def\MGL@prepare@verb@env{% - \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% - \MGL@verb@codes% - \obeyspaces% + }% + \obeylines% + \let\do\@makeother\dospecials% \verbatim@font% + \frenchspacing% + \everypar\expandafter{\the\everypar\unpenalty}% + \def\@noitemerr{\PackageWarning{mglTeX}{Empty MGL script}}% + \labelsep1em% + \itemsep\z@% + \def\@xobeysp{\space}\@vobeyspaces% + \pretolerance\@M% + \hbadness\@M% + \advance\leftskip\mglbreakindent% + \itemindent-\mglbreakindent% } -\def\MGL@rewrite@code@verb{% - \stepcounter{MGL@verb@line@no}% - \MGL@read\MGL@in@stream{\MGL@this@code@line}% - \ifeof\MGL@in@stream% - \def\MGL@next@action{% - \MGL@closein{\MGL@in@stream}% - \endlist% - }% - \else% - \def\MGL@next@action{% - \item\mbox{\MGL@this@code@line}% - \MGL@rewrite@code@verb% - }% - \fi% - \MGL@next@action% -} -%%%%% Anatomy of environments and commands %%%%% + +\def\MGL@line@sep{\leavevmode\cleaders\hrule height\mgllinethickness\hfill\kern\z@} +\def\MGL@dash@sep{\leavevmode\cleaders\hb@xt@\mgldashwidth{\hss-\hss}\hfill\kern\z@} \newcommand\mgl[1][]{% - \MGL@setkeys{mgl@keys}{#1}% - \MGL@create@code@label% + \define@key{MGL@keys}{label}{\def\MGL@script@name{##1}}% + \MGL@setkeys{MGL@keys}{#1}% + \@ifundefined{MGL@script@name}{% + \stepcounter{MGL@script@no}% + \edef\MGL@script@name{\MGL@main@script@name-MGL-\arabic{MGL@script@no}}% + }{}% + \MGL@set@script@name{\MGL@script@name}% \MGL@codes% - \MGL@def@end@env@cmd{mgl}% - \def\MGL@future@action{% - \MGL@write\@auxout{\string\MGL@unchanged{\MGL@this@code@label}}% - }% - \MGL@set@write@script@out% - \@ifundefined{MGL@@@\MGL@this@code@label}{% - \MGL@write\MGL@script{quality \MGL@quality}% - \MGL@write\MGL@script{setsize \MGL@width\space\MGL@height}% - \MGL@openout{\MGL@out@stream}{\MGL@dir\MGL@backups@dir\MGL@this@code@label.mgl.backup}% - \def\MGL@save@action{% - \MGL@write\MGL@script{write '\MGL@dir\MGL@graphics@dir\MGL@this@code@label\MGL@graphics@ext'}% - \MGL@write\MGL@script{reset}% - \MGL@write\MGL@script{}% - } - \expandafter\MGL@write@line% + \MGL@process@script{% + \mgl@write@script% }{% - \def\MGL@save@action{}% - \MGL@openin{\MGL@in@stream}{\MGL@dir\MGL@backups@dir\MGL@this@code@label.mgl.backup}% - \expandafter\MGL@compare@line% + \MGL@compare@code{\MGL@dir\MGL@backups@dir\MGL@script@name.mgl}% }% } +\def\mgl@write@script{% + \def\MGL@next{% + \MGL@closeout\MGL@out@stream% + \MGL@write\MGL@main@stream{% + write '\MGL@dir\MGL@graphics@dir\MGL@script@name\MGL@graph@ext'^^J% + ^^Jreset^^J% + }% + \MGL@write\@auxout{\string\MGL@unchanged{\MGL@script@name}}% + }% + \def\verbatim@processline{% + \MGL@write\MGL@main@stream{\the\verbatim@line}% + \MGL@write\MGL@out@stream{\the\verbatim@line}% + }% + \MGL@write\MGL@main@stream{quality \MGL@quality}% + \MGL@openout\MGL@out@stream{\MGL@dir\MGL@backups@dir\MGL@script@name.mgl}% + \verbatim@start% +} \def\endmgl{% - \MGL@closeout{\MGL@out@stream}% - \MGL@closein{\MGL@in@stream}% - \MGL@save@action% - \MGL@future@action% - \MGL@include@graphics% + \MGL@next% + \MGL@includegraphics% } \def\mgladdon{% + \@bsphack% \MGL@codes% - \MGL@def@end@env@cmd{mgladdon}% - \MGL@set@write@out% - \MGL@set@write@script% - \expandafter\MGL@write@line% + \def\verbatim@processline{% + \MGL@write\MGL@main@stream{\the\verbatim@line}% + }% + \verbatim@start% } -\def\endmgladdon{% - \MGL@write\MGL@script{}% +\def\endmgladdon{\@esphack} + +\newcommand\mglfunc[2][0]{% + \@bsphack% + \MGL@set@script@name{#2}% + \g@addto@macro\MGL@write@funcs{\MGL@func{#2}}% + \MGL@codes% + \def\verbatim@processline{\MGL@write\MGL@out@stream{\the\verbatim@line}}% + \MGL@openout\MGL@out@stream{\MGL@dir\MGL@backups@dir\MGL@script@name.mgl}% + \MGL@write\MGL@out@stream{func '\MGL@script@name' #1}% + \verbatim@start% } +\def\endmglfunc{% + \MGL@write\MGL@out@stream{return^^J}% + \MGL@closeout\MGL@out@stream% + \@esphack% +}% \newcommand\mglcode[2][]{% - \MGL@setkeys{mgl@keys}{#1}% - \MGL@test@code@label{#2}% - \MGL@verb@codes% - \MGL@def@end@env@cmd{mglcode}% - \@ifundefined{MGL@@@\MGL@this@code@label}{% - \def\MGL@future@action{% - \MGL@write{18}{% - mglconv -q \MGL@quality\space -S \MGL@scale\space -s "\MGL@dir\MGL@scripts@dir\mglcommonscript.mgl" -o "\MGL@dir\MGL@graphics@dir\MGL@this@code@label\MGL@graphics@ext" "\MGL@dir\MGL@scripts@dir\MGL@this@code@label.mgl"% - }% - \MGL@write\@auxout{\string\MGL@unchanged{\MGL@this@code@label}}% - }% - \MGL@set@write@verb@out% - \MGL@openout{\MGL@out@stream}{\MGL@dir\MGL@backups@dir\MGL@this@code@label.mgl.backup}% - \expandafter\MGL@ignore@verb@line% + \MGL@setkeys{MGL@keys}{#1}% + \MGL@set@script@name{#2}% + \MGL@codes% + \MGL@process@script{% + \mglcode@write@script% }{% - \def\MGL@future@action{% - \MGL@write\@auxout{\string\MGL@unchanged{\MGL@this@code@label}}% + \MGL@compare@code{\MGL@dir\MGL@scripts@dir\MGL@script@name.mgl}% + }% +} +\def\mglcode@write@script{% + \def\MGL@next{% + \MGL@closeout\MGL@out@stream% + \MGL@write\@auxout{\string\MGL@unchanged{\MGL@script@name}}% + \MGL@write{18}{% + mglconv -q \MGL@quality\space -S \MGL@scale\space% + -s "\MGL@dir\MGL@scripts@dir\mglcommonscriptname.mgl"\space% + -o "\MGL@dir\MGL@graphics@dir\MGL@script@name\MGL@graph@ext"\space% + "\MGL@dir\MGL@scripts@dir\MGL@script@name.mgl"% }% - \MGL@openin{\MGL@in@stream}{\MGL@dir\MGL@backups@dir\MGL@this@code@label.mgl.backup}% - \expandafter\MGL@compare@next@verb@line% }% + \def\verbatim@processline{\MGL@write\MGL@out@stream{\the\verbatim@line}}% + \MGL@openout\MGL@out@stream{\MGL@dir\MGL@scripts@dir\MGL@script@name.mgl}% + \verbatim@start% } \def\endmglcode{% - \MGL@closeout{\MGL@out@stream}% - \MGL@closein{\MGL@in@stream}% - \bgroup% - \endlinechar=-1\relax% - \MGL@openin{\MGL@in@stream}{\MGL@dir\MGL@backups@dir\MGL@this@code@label.mgl.backup}% - \MGL@openout{\MGL@out@stream}{\MGL@dir\MGL@scripts@dir\MGL@this@code@label.mgl}% - \MGL@write\MGL@out@stream{\MGL@signature}% - \MGL@rewrite@code{\MGL@out@stream}% - \MGL@closein{\MGL@in@stream}% - \MGL@closeout{\MGL@out@stream}% - \egroup% - \MGL@future@action% - \MGL@include@graphics% + \MGL@next% + \MGL@includegraphics% } \def\mglscript#1{% - \MGL@test@code@label{#1}% - \MGL@verb@codes% - \MGL@def@end@env@cmd{mglscript}% - \MGL@set@write@verb@out% - \MGL@openout{\MGL@out@stream}{\MGL@dir\MGL@scripts@dir\MGL@this@code@label.mgl}% - \MGL@write\MGL@out@stream{\MGL@signature}% - \expandafter\MGL@ignore@verb@line% + \@bsphack% + \MGL@set@script@name{#1}% + \MGL@codes% + \def\verbatim@processline{\MGL@write\MGL@out@stream{\the\verbatim@line}}% + \MGL@openout\MGL@out@stream{\MGL@dir\MGL@scripts@dir\MGL@script@name.mgl}% + \verbatim@start% } \def\endmglscript{% - \MGL@closeout{\MGL@out@stream}% + \MGL@closeout\MGL@out@stream% + \@esphack% } -\newcommand\mglfunc[2][0]{% - \MGL@test@code@label{#2}% +\def\mglcommon{% + \@bsphack% + \MGL@set@script@name{\mglcommonscriptname}% \MGL@codes% - \MGL@def@end@env@cmd{mglfunc}% - \MGL@openout{\MGL@out@stream}{\MGL@dir\MGL@backups@dir\MGL@this@code@label.mgl.backup}% - \MGL@write\MGL@out@stream{func #2 #1}% - \g@addto@macro{\MGL@funcs}{\MGL@rewrite@func{#2}}% - \MGL@set@write@out% - \expandafter\MGL@ignore@line% + \def\verbatim@processline{\MGL@write\MGL@out@stream{\the\verbatim@line}}% + \MGL@openout\MGL@out@stream{\MGL@dir\MGL@scripts@dir\MGL@script@name.mgl}% + \verbatim@start% } -\def\endmglfunc{% - \MGL@write\MGL@out@stream{return}% - \MGL@write\MGL@out@stream{}% - \MGL@closeout{\MGL@out@stream}% -} -\def\MGL@rewrite@func#1{% - \MGL@openin{\MGL@in@stream}{\MGL@dir\MGL@backups@dir#1.mgl.backup}% - \MGL@rewrite@code{\MGL@script}% +\@onlypreamble\mglcommon +\def\endmglcommon{% + \MGL@closeout\MGL@out@stream% + \@esphack% } -\def\mglverbatim{% - \MGL@def@end@env@cmd{mglverbatim}% - \MGL@prepare@verb@env% - \MGL@set@write@verb@to@doc - \expandafter\MGL@ignore@verb@line% -} -\def\endmglverbatim{\endlist} +\def\mglsetup#1{\mglfunc{#1}}% +\let\endmglsetup\endmglfunc -\def\mglblock#1{% - \MGL@test@code@label{#1}% - \MGL@verb@codes% - \obeyspaces% - \MGL@def@end@env@cmd{mglblock}% - \MGL@set@write@verb@out% - \MGL@openout{\MGL@out@stream}{\MGL@dir\MGL@scripts@dir\MGL@this@code@label.mgl}% - \MGL@write\MGL@out@stream{\MGL@signature}% - \expandafter\MGL@ignore@verb@line% +\newcommand\mglplot[2][]{% + \define@key{MGL@keys}{label}{\edef\MGL@script@name{##1}}% + \define@key{MGL@keys}{setup}{\def\MGL@mglplot@setup{##1}}% + \define@key{MGL@keys}{separator}{% + \MGL@def@for@loop{##1}% + }% + \MGL@setkeys{MGL@keys}{#1}% + \@ifundefined{MGL@script@name}{% + \stepcounter{MGL@script@no} + \edef\MGL@script@name{\MGL@main@script@name-MGL-\arabic{MGL@script@no}} + }{}% + \MGL@set@script@name{\MGL@script@name}% + \@ifundefined{MGL@mglplot@setup}{% + \edef\MGL@temp@a{#2}% + }{% + \edef\MGL@temp@a{call '\MGL@mglplot@setup'^^J#2}% + } + \MGL@process@script{% + \mglplot@write@script% + }{% + \mglplot@compare@code% + }% + \MGL@includegraphics% +} +\def\mglplot@write@script{% + \MGL@write\MGL@main@stream{quality \MGL@quality}% + \MGL@openout\MGL@out@stream{\MGL@dir\MGL@backups@dir\MGL@script@name.mgl}% + \MGL@for\MGL@temp@b:=\MGL@temp@a\do{% + \MGL@write\MGL@main@stream{\MGL@temp@b}% + \MGL@write\MGL@out@stream{\MGL@temp@b}% + }% + \MGL@closeout\MGL@out@stream% + \MGL@write\MGL@main@stream{% + write '\MGL@dir\MGL@graphics@dir\MGL@script@name\MGL@graph@ext'^^J% + ^^Jreset^^J% + }% + \MGL@write\@auxout{\string\MGL@unchanged{\MGL@script@name}}% +} +\def\mglplot@compare@code{% + \def\MGL@next{\MGL@write\@auxout{\string\MGL@unchanged{\MGL@script@name}}}% + \MGL@openin\MGL@in@stream{\MGL@dir\MGL@backups@dir\MGL@script@name.mgl}% + \MGL@for\MGL@temp@b:=\MGL@temp@a\do{% + \MGL@read\MGL@in@stream{\MGL@temp@c}% + \ifx\MGL@temp@b\MGL@temp@c\else% + \let\MGL@next\relax% + \fi% + }% + \MGL@closein\MGL@in@stream% + \MGL@next% +} + +\def\mglblock{\@MGL@list@script@true\mglblock@} +\@namedef{mglblock*}{\@MGL@list@script@false\mglblock@} +\newcommand\mglblock@[2][]{% + \@MGL@lineno@true% + \setkeys{MGL@verb@keys}{#1}% + \MGL@set@script@name{#2}% + \if@MGL@list@script@% + \refstepcounter{MGL@verb@script@no}% + \addcontentsline{lms}{MGL@script}{% + \protect\numberline{\theMGL@verb@script@no.}% + {\ttfamily\protect\detokenize{\MGL@script@name.mgl}}% + }% + \fi% + \if@MGL@lineno@% + \list{\mgllinenostyle\arabic{MGL@line@no}.}{\usecounter{MGL@line@no}}% + \else% + \list{}{}% + \fi% + \MGL@set@verbatim@code% + \fboxrule=\mgllinethickness% + \item[\MGL@line@sep]\fbox{% + \bfseries\ttfamily\expandafter\detokenize\expandafter{\MGL@script@name.mgl}% + }\hskip\labelsep\MGL@line@sep\par\par% + \def\verbatim@processline{% + \item\the\verbatim@line% + \MGL@write\MGL@out@stream{\the\verbatim@line}% + }% + \MGL@openout\MGL@out@stream{\MGL@dir\MGL@scripts@dir\MGL@script@name.mgl}% + \verbatim@start% } \def\endmglblock{% - \MGL@closeout{\MGL@out@stream}% - \mglinclude{\MGL@this@code@label}% + \MGL@closeout\MGL@out@stream% + \item[\MGL@line@sep]\hskip-\labelsep\MGL@line@sep% + \endlist% +} +\expandafter\let\csname endmglblock*\endcsname\endmglblock + +\def\mglverbatim{\@MGL@list@script@true\mglverbatim@} +\@namedef{mglverbatim*}{\@MGL@list@script@false\mglverbatim@} +\newcommand\mglverbatim@[1][]{% + \@MGL@lineno@true% + \define@key{MGL@verb@keys}{label}{\edef\MGL@script@name{##1}}% + \setkeys{MGL@verb@keys}{#1}% + \if@MGL@lineno@% + \list{\mgllinenostyle\arabic{MGL@line@no}.}{\usecounter{MGL@line@no}}% + \else% + \list{}{}% + \fi% + \MGL@set@verbatim@code% + \fboxrule=\mgllinethickness% + \@ifundefined{MGL@script@name}{% + \edef\MGL@script@name{\mglverbatimname}% + \item[\MGL@line@sep]\hskip-\labelsep\MGL@line@sep% + }{% + \item[\MGL@line@sep]\fbox{% + \bfseries\ttfamily\expandafter\detokenize\expandafter{\MGL@script@name.mgl}% + }\hskip\labelsep\MGL@line@sep\par\par% + }% + \if@MGL@list@script@% + \refstepcounter{MGL@verb@script@no}% + \addcontentsline{lms}{MGL@script}{% + \protect\numberline{\theMGL@verb@script@no.}% + {\ttfamily\protect\detokenize{\MGL@script@name}}% + }% + \fi% + \def\verbatim@processline{% + \item\the\verbatim@line% + }% + \verbatim@start% } +\def\endmglverbatim{% + \MGL@closeout\MGL@out@stream% + \item[\MGL@line@sep]\hskip-\labelsep\MGL@line@sep% + \endlist% +} +\expandafter\let\csname endmglverbatim*\endcsname\endmglverbatim -\def\mglinclude#1{% - \bgroup% - \MGL@prepare@verb@env% - \MGL@openin{\MGL@in@stream}{\MGL@dir\MGL@scripts@dir#1.mgl}% - \MGL@rewrite@code@verb% - \egroup% +\def\mglcomment{% + \if@MGL@comments@% + \list{}{}% + \MGL@set@verbatim@code% + \item\hskip-\labelsep<\MGL@dash@sep\mglcommentname\MGL@dash@sep>% + \def\verbatim@processline{\item\the\verbatim@line}% + \verbatim@start% + \else% + \@bsphack% + \MGL@codes% + \let\verbatim@startline\relax% + \let\verbatim@addtoline\@gobble% + \let\verbatim@processline\relax% + \let\verbatim@finish\relax% + \verbatim@% + \fi% +} +\def\endmglcomment{% + \if@MGL@comments@% + \item\hskip-\labelsep<\MGL@dash@sep\mglcommentname\MGL@dash@sep>% + \endlist% + \else% + \@esphack% + \fi% } \newcommand\mglgraphics[2][]{% - \MGL@setkeys{mgl@keys}{#1}% - \edef\MGL@this@code@label{#2}% - \IfFileExists{\MGL@dir\MGL@graphics@dir\MGL@this@code@label\MGL@graphics@ext}{}{% - \MGL@write{18}{mglconv -q \MGL@quality\space -S \MGL@scale\space -s "\MGL@dir\MGL@scripts@dir\mglcommonscript.mgl" -o "\MGL@dir\MGL@graphics@dir\MGL@this@code@label\MGL@graphics@ext" "\MGL@dir\MGL@scripts@dir\MGL@this@code@label.mgl"} + \bgroup% + \define@key{MGL@keys}{path}{\def\MGL@forced@path{##1}}% + \MGL@setkeys{MGL@keys}{#1}% + \edef\MGL@script@name{#2}% + \IfFileExists{\MGL@dir\MGL@graphics@dir\MGL@script@name\MGL@graph@ext}{}{% + \@ifundefined{MGL@forced@path}{% + \@for\MGL@temp@a:=\MGL@paths\do{% + \IfFileExists{\MGL@temp@a\MGL@script@name.mgl}{% + \edef\MGL@temp@b{\MGL@temp@a}% + }{}% + }% + }{% + \IfFileExists{\MGL@forced@path\MGL@script@name.mgl}{% + \edef\MGL@temp@b{\MGL@forced@path}% + }{}% + }% + \@ifundefined{MGL@temp@b}{% + \PackageWarning{mgltex}{% + MGL script "\MGL@script@name.mgl" not found% + }% + }{% + \MGL@write{18}{% + mglconv -q \MGL@quality\space -S \MGL@scale\space% + -s "\MGL@dir\MGL@scripts@dir\mglcommonscriptname.mgl"\space% + -o "\MGL@dir\MGL@graphics@dir\MGL@script@name\MGL@graph@ext"\space% + "\MGL@temp@b\MGL@script@name.mgl"% + }% + }% }% - \MGL@write\@auxout{\string\MGL@unchanged{\MGL@this@code@label}}% - \MGL@include@graphics% + \MGL@includegraphics% + \egroup% } -\def\mglcommonscript{common_script} -\def\mglcommon{% - \MGL@test@code@label{\mglcommonscript}% - \MGL@codes% - \MGL@def@end@env@cmd{mglcommon}% - \MGL@set@write@out% - \MGL@openout{\MGL@out@stream}{\MGL@dir\MGL@scripts@dir\MGL@this@code@label.mgl}% - \MGL@write\MGL@out@stream{\MGL@signature}% - \MGL@write\MGL@out@stream{quality \MGL@quality}% - \MGL@write\MGL@out@stream{setsize \MGL@width\space\MGL@height}% - \expandafter\MGL@ignore@line% -} -\@onlypreamble\mglcommon -\def\endmglcommon{% - \MGL@closeout\MGL@out@stream% +\def\mglinclude{\@MGL@list@script@true\mglinclude@} +\@namedef{mglinclude*}{\@MGL@list@script@false\mglinclude@} +\newcommand\mglinclude@[2][]{% \bgroup% - \endlinechar=-1\relax% - \MGL@openin{\MGL@in@stream}{\MGL@dir\MGL@scripts@dir\MGL@this@code@label.mgl}% - \MGL@openout{\MGL@out@stream}{\MGL@dir\MGL@backups@dir\MGL@this@code@label.mgl.backup}% - \MGL@rewrite@code{\MGL@out@stream}% - \MGL@closein{\MGL@in@stream}% - \MGL@closeout{\MGL@out@stream}% + \@MGL@lineno@true% + \define@key{MGL@verb@keys}{path}{\def\MGL@forced@path{##1}}% + \setkeys{MGL@verb@keys}{#1}% + \edef\MGL@script@name{#2}% + \@ifundefined{MGL@forced@path}{% + \@for\MGL@temp@b:=\MGL@paths\do{% + \IfFileExists{\MGL@temp@b\MGL@script@name.mgl}{% + \edef\MGL@temp@a{\MGL@temp@b}% + }{}% + }% + }{% + \IfFileExists{\MGL@script@name.mgl}{% + \edef\MGL@temp@a{\MGL@forced@path}% + }{}% + }% + \@ifundefined{MGL@temp@a}{% + \PackageWarning{mgltex}{% + MGL script "\MGL@forced@path\MGL@script@name.mgl" not found% + }% + \center% + \fbox{% + \centering% + \bfseries\Huge% + \begin{tabular}{c}MGL\\script\\not\\found\end{tabular}% + }% + \endcenter% + }{% + \mglinclude@@% + }% \egroup% } - -\def\MGL@setups@written{} -\def\mglsetup#1{% - \MGL@test@code@label{#1}% - \xdef\MGL@setups@written{\MGL@setups@written\MGL@this@code@label,} - \g@addto@macro{\MGL@funcs}{\MGL@rewrite@func{#1}}% - \MGL@codes% - \MGL@def@end@env@cmd{mglsetup}% - \MGL@openout{\MGL@out@stream}{\MGL@dir\MGL@backups@dir\MGL@this@code@label.mgl.backup}% - \MGL@write\MGL@out@stream{func #1}% - \MGL@set@write@out% - \expandafter\MGL@ignore@line% -} -\def\endmglsetup{% - \MGL@write\MGL@out@stream{return}% - \MGL@write\MGL@out@stream{}% - \MGL@closeout{\MGL@out@stream}% -} - -\def\mglplot@call@setup{% - \ifx\mglplot@setup\@empty\else% - \def\MGL@future@action{% - \PackageWarning{mgltex}{No "\mglplot@setup" setup for \string\mglplot}% - }% - \@for\MGL@setup:=\MGL@setups@written\do{% - \ifx\MGL@setup\mglplot@setup% - \MGL@write\MGL@script{call '\mglplot@setup'}% - \MGL@write\MGL@out@stream{\mglplot@setup}% - \def\MGL@future@action{}% - \fi% +\def\mglinclude@@{% + \@addtofilelist{\MGL@script@name.mgl}% + \if@MGL@list@script@% + \refstepcounter{MGL@verb@script@no}% + \addcontentsline{lms}{MGL@script}{% + \protect\numberline{\theMGL@verb@script@no.}% + {\ttfamily\protect\detokenize{\MGL@script@name.mgl}}% }% \fi% + \if@MGL@lineno@% + \list{\mgllinenostyle\arabic{MGL@line@no}.}{\usecounter{MGL@line@no}}% + \else% + \list{}{}% + \fi% + \MGL@set@verbatim@code% + \fboxrule=\mgllinethickness% + \item[\MGL@line@sep]\fbox{% + \bfseries\ttfamily\expandafter\detokenize\expandafter{\MGL@script@name.mgl}% + }\hskip\labelsep\MGL@line@sep\par\par% + \def\verbatim@processline{% + \item\the\verbatim@line% + }% + \immediate\openin\MGL@in@stream="\MGL@temp@a\MGL@script@name.mgl"% + \mglinclude@@@% +} +\def\mglinclude@@@{% + \immediate\read\MGL@in@stream to \MGL@temp@b% + \ifeof\MGL@in@stream% + \immediate\closein\MGL@in@stream% + \item[\MGL@line@sep]\hskip-\labelsep\MGL@line@sep% + \endlist% + \else% + \verbatim@startline% + \expandafter\verbatim@addtoline\expandafter{\MGL@temp@b}% + \verbatim@processline% + \expandafter\mglinclude@@@% + \fi% +} +\def\mglname#1{\edef\MGL@main@script@name{#1}} +\AtBeginDocument{% + \def\mglname#1{% + \@bsphack% + \MGL@write@funcs% + \immediate\closeout{\MGL@main@stream}% + \MGL@write{18}{% + mglconv -q \MGL@quality\space -S \MGL@scale\space% + -s "\MGL@dir\MGL@scripts@dir\mglcommonscriptname.mgl"\space% + -n "\MGL@dir\MGL@scripts@dir\MGL@main@script@name.mgl"% + }% + \edef\MGL@main@script@name{#1}% + \bgroup\MGL@set@script@name{\MGL@main@script@name}\egroup% + \MGL@openout\MGL@main@stream{% + \MGL@dir\MGL@scripts@dir\MGL@main@script@name.mgl% + }% + \@esphack% + }% } -\newcommand\mglplot[2][]{% - \bgroup% - \def\mglplot@setup{}% - \MGL@setkeys{mglplot@keys}{#1}% - \MGL@create@code@label% - \@ifundefined{MGL@@@\MGL@this@code@label}{% - \MGL@write\MGL@script{quality \MGL@quality}% - \MGL@write\MGL@script{setsize \MGL@width\space\MGL@height}% - \MGL@openout{\MGL@out@stream}{\MGL@dir\MGL@backups@dir\MGL@this@code@label.mgl.backup}% - \mglplot@call@setup% - \MGL@write\MGL@script{#2}% - \MGL@write\MGL@out@stream{#2}% - \MGL@closeout{\MGL@out@stream}% - \MGL@write\MGL@script{write '\MGL@dir\MGL@graphics@dir\MGL@this@code@label\MGL@graphics@ext'}% - \MGL@write\MGL@script{reset}% - \MGL@write\MGL@script{}% - \MGL@write\@auxout{\string\MGL@unchanged{\MGL@this@code@label}}% - }{% - \endlinechar=-1\relax% - \MGL@openin{\MGL@in@stream}{\MGL@dir\MGL@backups@dir\MGL@this@code@label.mgl.backup}% - \ifx\mglplot@setup\@empty\else% - \MGL@read\MGL@in@stream{\MGL@this@code@line}% - \ifx\MGL@this@code@line\mglplot@setup% - \MGL@read\MGL@in@stream{\MGL@this@code@line}% - \edef\MGL@this@line{#2}% - \ifx\MGL@this@code@line\MGL@this@line% - \MGL@write\@auxout{\string\MGL@unchanged{\MGL@this@code@label}}% - \fi% - \fi% +\ifx\l@chapter\@undefined% + \ifx\l@section\@undefined% + \def\listofmglscripts{% + \@startsection{MGL@list}% + {1}{0em}{-3.5ex plus -1ex minus -0.2ex}% + {2.5ex plus 0.2ex}% + {\centering\normalfont\bfseries\large}*% + {\listofmglscriptsname}% + \@mkboth{% + \MakeUpperCase\listofmglscriptsname% + }{% + \MakeUppercase\listofmglscriptsname% + }% + \@starttoc{lms}% + }% + \newcommand*\l@MGL@list[2]{% + \ifnum \c@tocdepth >\z@ + \addpenalty\@secpenalty + \addvspace{1.0em \@plus\p@}% + \setlength\@tempdima{1.5em}% + \begingroup + \parindent \z@ \rightskip \@pnumwidth + \parfillskip -\@pnumwidth + \leavevmode \bfseries + \advance\leftskip\@tempdima + \hskip -\leftskip + #1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par + \endgroup \fi% - \MGL@closein{\MGL@in@stream} }% - \egroup% -}% - -\def\mglcomment{% - \MGL@codes% - \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\MGL@signature{} -\begingroup% - \catcode`#=12\relax% - \gdef\MGL@comm@sym{#} -\endgroup -\def\mglsignature{% - \MGL@verb@codes% - \obeyspaces% - \MGL@def@end@env@cmd{mglsignature}% - \def\MGL@write@code@action##1{\g@addto@macro{\MGL@signature}{\MGL@comm@sym\space##1^^J}}% - \catcode`|=0\relax\catcode`[=1\relax\catcode`]=2\relax% - \expandafter\MGL@ignore@line% -} -\def\endmglsignature{} - -\def\MGL@quality{2} -\def\mglquality#1{% - \def\MGL@quality{#1}% - \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)}% + \def\listofmglscripts{% + \section*{\listofmglscriptsname}% + \@mkboth{% + \MakeUppercase\listofmglscriptsname% + }{% + \MakeUppercase\listofmglscriptsname% + }% + \@starttoc{lms}% + }% \fi% -} -\@onlypreamble\mglquality +\else% + \def\listofmglscripts{% + \chapter*{\listofmglscriptsname}% + \@mkboth{% + \MakeUpperCase\listofmglscriptsname% + }{% + \MakeUppercase\listofmglscriptsname% + }% + \@starttoc{lms}% + }% +\fi% -\def\MGL@width{640} -\def\MGL@height{480} -\def\mglsetsize#1#2{% - \def\MGL@width{#1}% - \def\MGL@height{#2}% -} -\@onlypreamble\mglsetsize +\def\mglTeX{mgl\TeX} -\def\mgltexon{ - \def\MGL@openout##1##2{% - \immediate\openout##1="##2"% - }% - \def\MGL@write##1##2{% - \immediate\write##1{##2}% - }% - \def\MGL@graph@not@found@text{MGL\\image\\not\\found}% - \def\MGL@graph@not@found@message{MGL image "\MGL@this@code@label" not found}% -} -\def\mgltexoff{% - \def\MGL@openout##1##2{}% - \def\MGL@write##1##2{}% - \def\MGL@graph@not@found@text{\mglTeX\\is off,\\no image\\generated}% - \def\MGL@graph@not@found@message{mglTeX is off, MGL image "\MGL@this@code@label" not generated}% -} +\def\mglTeXwVer{\mglTeX~v4.0} + +\def\mgldir#1{\def\MGL@dir{#1}}\@onlypreamble\mgldir +\def\mglscriptsdir#1{\def\MGL@scripts@dir{#1}}\@onlypreamble\mglscriptsdir +\def\mglgraphicsdir#1{\def\MGL@graphics@dir{#1}}\@onlypreamble\mglgraphicsdir +\def\mglbackupsdir#1{\def\MGL@backups@dir{#1}}\@onlypreamble\mglbackupsdir +\def\mglpaths#1{\g@addto@macro\MGL@paths{,#1}} -\def\mglcomments{ - \@MGL@comments@true% +\def\mglcommonscriptname{MGL_common_script} +\def\mglcommentname{MGL commentary} +\def\listofmglscriptsname{List of MGL scripts} +\def\mglverbatimname{(Unnamed MGL verbatim script)} +\def\mgllinenostyle{\footnotesize} +\newdimen\mgldashwidth\mgldashwidth=0.75em +\newdimen\mgllinethickness\mgllinethickness=0.25ex +\newdimen\mglbreakindent\mglbreakindent=1em + +\AtBeginDocument{% + \bgroup\MGL@set@script@name{\MGL@main@script@name}\egroup% + \immediate\openout\MGL@main@stream=% + \MGL@dir\MGL@scripts@dir\MGL@main@script@name.mgl% } -\def\mglnocomments{% - \@MGL@comments@false% +\AtEndDocument{% + \MGL@write@funcs% + \immediate\closeout\MGL@main@stream% + \MGL@write{18}{% + mglconv -q \MGL@quality\space -S \MGL@scale\space% + -s "\MGL@dir\MGL@scripts@dir\mglcommonscriptname.mgl"\space% + -n "\MGL@dir\MGL@scripts@dir\MGL@main@script@name.mgl"% + }% } - -\def\mglTeX{mgl\TeX} \ No newline at end of file +\endinput +%% +%% End of file `mgltex.sty'. diff --git a/mgltex/sample.tex b/mgltex/sample.tex index 0fe9dc2..a44dedb 100644 --- a/mgltex/sample.tex +++ b/mgltex/sample.tex @@ -15,9 +15,9 @@ define gravity 9.81 \end{mglcommon} -\begin{mglsignature} - This scripts was generated on date |today. -\end{mglsignature} +%\begin{mglsignature} +% This scripts was generated on date |today. +%\end{mglsignature} \begin{document} diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 504e7a8..a16a01c 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -23,6 +23,9 @@ ${MathGL_BINARY_DIR}/include/mgl2/dllexport.h cont.hpp ) add_definitions(-DMGL_SRC) +if(MGL_HAVE_GSL2) + add_definitions(-DMGL_HAVE_GSL2) +endif(MGL_HAVE_GSL2) if(MGL_HAVE_PNG) set(prc_src prc/PRCbitStream.cc prc/PRCdouble.cc prc/oPRCFile.cc prc/writePRC.cc prc.cpp ) @@ -40,20 +43,9 @@ endif(MGL_HAVE_OPENGL) include(GenerateExportHeader) add_compiler_export_flags() -add_library(mgl SHARED ${mgl_src} ${mgl_hdr}) -add_library(mgl-static STATIC ${mgl_src} ${mgl_hdr}) -set_target_properties(mgl PROPERTIES CLEAN_DIRECT_OUTPUT 1) -set_target_properties(mgl-static PROPERTIES CLEAN_DIRECT_OUTPUT 1) -target_compile_definitions(mgl-static PUBLIC MGL_STATIC_DEFINE) +mgl_add_lib(mgl ${mgl_src} ${mgl_hdr}) generate_export_header(mgl EXPORT_FILE_NAME ../include/mgl2/dllexport.h) -if(enable-mgl2) - set_target_properties(mgl PROPERTIES OUTPUT_NAME "mgl2") - set_target_properties(mgl-static PROPERTIES OUTPUT_NAME "mgl2") -else(enable-mgl2) - set_target_properties(mgl-static PROPERTIES OUTPUT_NAME "mgl") -endif(enable-mgl2) - # if(MGL_HAVE_LTDL) # target_link_libraries(mgl ${LTDL_LIB}) # include_directories(${LTDL_INCLUDE_DIR}) @@ -113,44 +105,14 @@ if(MGL_HAVE_ZLIB) include_directories(${ZLIB_INCLUDE_DIR}) endif(MGL_HAVE_ZLIB) -if(MGL_HAVE_MPI) - add_library(mgl-mpi SHARED mpi.cpp ../include/mgl2/mpi.h) - add_library(mgl-mpi-static STATIC mpi.cpp ../include/mgl2/mpi.h) - set_target_properties(mgl-mpi PROPERTIES CLEAN_DIRECT_OUTPUT 1) - set_target_properties(mgl-mpi PROPERTIES DEFINE_SYMBOL "mgl_EXPORTS") - set_target_properties(mgl-mpi-static PROPERTIES OUTPUT_NAME "mgl-mpi") - set_target_properties(mgl-mpi-static PROPERTIES CLEAN_DIRECT_OUTPUT 1) - target_compile_definitions(mgl-mpi-static PUBLIC MGL_STATIC_DEFINE) - - if(enable-mgl2) - set_target_properties(mgl-mpi PROPERTIES OUTPUT_NAME "mgl2-mpi") - set_target_properties(mgl-mpi-static PROPERTIES OUTPUT_NAME "mgl2-mpi") - else(enable-mgl2) - set_target_properties(mgl-mpi-static PROPERTIES OUTPUT_NAME "mgl-mpi") - endif(enable-mgl2) - - target_link_libraries(mgl-mpi ${MPI_LIBRARIES} ) -# include_directories(${MPI_C_INCLUDE_PATH}) - include_directories(${MPI_CXX_INCLUDE_PATH}) - - set_target_properties(mgl-mpi PROPERTIES SOVERSION ${MathGL_SOVERSION}) - install( - TARGETS mgl-mpi mgl-mpi-static - RUNTIME DESTINATION bin - ARCHIVE DESTINATION ${MGL_LIB_INSTALL_DIR} - LIBRARY DESTINATION ${MGL_LIB_INSTALL_DIR} - ) -endif(MGL_HAVE_MPI) - if(M_LIB) target_link_libraries(mgl ${M_LIB}) endif(M_LIB) -set_target_properties(mgl PROPERTIES SOVERSION ${MathGL_SOVERSION}) -install( - TARGETS mgl mgl-static - RUNTIME DESTINATION bin - ARCHIVE DESTINATION ${MGL_LIB_INSTALL_DIR} - LIBRARY DESTINATION ${MGL_LIB_INSTALL_DIR} -) +if(MGL_HAVE_MPI) + mgl_add_lib(mpi mpi.cpp ../include/mgl2/mpi.h) + target_link_libraries(mgl-mpi ${MPI_LIBRARIES} ) + target_include_directories(mgl-mpi SYSTEM PUBLIC ${MPI_CXX_INCLUDE_PATH}) +endif(MGL_HAVE_MPI) + install(FILES ${MathGL_BINARY_DIR}/include/mgl2/dllexport.h DESTINATION ${MGL_INCLUDE_PATH}) diff --git a/src/addon.cpp b/src/addon.cpp index 9537f09..c0f64d7 100644 --- a/src/addon.cpp +++ b/src/addon.cpp @@ -75,12 +75,12 @@ MGL_EXPORT char *mgl_fgetstr(FILE *fp) void MGL_EXPORT mgl_fgetpar(FILE *fp, const char *str, ...) { if(!str || !str[0]) return; - long len=strlen(str); + const size_t len=strlen(str); char *s, *t; va_list lst; va_start(lst,str); t = mgl_fgetstr(fp); - for(long i=0;i0 && !get(MGL_NOSUBTICKS)) + if(aa.ds>0 && !get(MGL_NOSUBTICKS) && (fabs(aa.v1)>1e-150 || fabs(aa.v2)>1e-150)) { if(aa.v2>aa.v1) v0 = v0 - aa.ds*floor((v0-aa.v1)/aa.ds+1e-3); else v0 = v0 - aa.ds*floor((v0-aa.v2)/aa.ds+1e-3); @@ -633,7 +632,7 @@ void mglCanvas::DrawLabels(mglAxis &aa, bool inv, const mglMatrix *M) if(ux<0 || (ux==0 && uy<0)) { ux=-ux; uy=-uy; pp.w=-pp.w; } pp.u = ux; pp.v = uy; mreal pu = p.x*ux+p.y*uy, pv = p.y*ux-p.x*uy; /*, su = ps.x*ux+ps.y*uy;*/ - if(aa.ch!='c') up[i] = ((pv>0) ^ inv) ? 'T':'t'; + if(aa.ch!='c') up[i] = ((pv>0) ^ inv) ? 'T':'t'; else up[i]=(aa.ns==0 || aa.ns==3)?'t':'T'; int t=0; if(algn) diff --git a/src/base.cpp b/src/base.cpp index a502780..bd605a3 100644 --- a/src/base.cpp +++ b/src/base.cpp @@ -187,11 +187,11 @@ const char *mglWarn[mglWarnEnd] = {"data dimension(s) is incompatible", //mglWar "axis ranges are incompatible", //mglWarnTern "pointer is NULL", //mglWarnNull "not enough space for plot", //mglWarnSpc - "There are wrong argument(s) in script",//mglScrArg - "There are wrong command in script", //mglScrCmd - "There are too long string in script", //mglScrLong - "There are unbalanced ' in script", //mglScrStr - "There are changing temporary data in script"}; //mglScrTemp + "There is wrong argument(s) in script", //mglScrArg + "There is wrong command(s) in script", //mglScrCmd + "There is too long string(s) in script", //mglScrLong + "There is unbalanced ' in script", //mglScrStr + "There is changing temporary data in script"}; //mglScrTemp //----------------------------------------------------------------------------- extern bool mglPrintWarn; void mglBase::SetWarn(int code, const char *who) @@ -251,6 +251,17 @@ long mglBase::AddGlyph(int s, long j) //----------------------------------------------------------------------------- // Add points to the buffer //----------------------------------------------------------------------------- +void inline mgl_put_inbox(mreal a1, mreal a2, mreal &a) +{ + if(a1a2) a=a2; } + else { if(aa1) a=a1; } +} +void MGL_NO_EXPORT mgl_coor_box(HMGL gr, mglPoint &p) +{ + mgl_put_inbox(gr->Min.x, gr->Max.x, p.x); + mgl_put_inbox(gr->Min.y, gr->Max.y, p.y); + mgl_put_inbox(gr->Min.z, gr->Max.z, p.z); +} long mglBase::AddPnt(const mglMatrix *mat, mglPoint p, mreal c, mglPoint n, mreal a, int scl) { // scl=0 -- no scaling @@ -258,9 +269,14 @@ long mglBase::AddPnt(const mglMatrix *mat, mglPoint p, mreal c, mglPoint n, mrea // scl&2 -- disable NAN at scaling // scl&4 -- disable NAN for normales if no light // scl&8 -- bypass palette for enabling alpha + // scl&16 -- put points inside axis range if(mgl_isnan(c) || mgl_isnan(a)) return -1; bool norefr = mgl_isnan(n.x) && mgl_isnan(n.y) && !mgl_isnan(n.z); - if(scl>0) ScalePoint(mat,p,n,!(scl&2)); + if(scl>0) + { + if(scl&16) mgl_coor_box(this, p); + ScalePoint(mat,p,n,!(scl&2)); + } if(mgl_isnan(p.x)) return -1; a = (a>=0 && a<=1) ? a : AlphaDef; c = (c>=0) ? c:CDef; @@ -442,12 +458,36 @@ bool mglBase::ScalePoint(const mglMatrix *, mglPoint &p, mglPoint &n, bool use_n } else { - if(x1Max.x) {x=Max.x; n.Set(1,0,0);} - if(y1Max.y) {y=Max.y; n.Set(0,1,0);} - if(z1Max.z) {z=Max.z; n.Set(0,0,1);} + if(Min.xMax.x) {x=Max.x; n.Set(1,0,0);} + } + else + { + if(x1Min.x) {x=Min.x; n.Set(1,0,0);} + } + if(Min.yMax.y) {y=Max.y; n.Set(0,1,0);} + } + else + { + if(y1Min.y) {y=Min.y; n.Set(0,1,0);} + } + if(Min.zMax.z) {z=Max.z; n.Set(0,0,1);} + } + else + { + if(z1Min.z) {z=Min.z; n.Set(0,0,1);} + } } x1=x; y1=y; z1=z; @@ -494,7 +534,7 @@ bool mglBase::ScalePoint(const mglMatrix *, mglPoint &p, mglPoint &n, bool use_n //----------------------------------------------------------------------------- void mglScaleAxis(mreal &v1, mreal &v2, mreal &v0, mreal x1, mreal x2) { - if(x1==x2 || v1==v2) return; + if(!mgl_isrange(x1,x2) || !mgl_isrange(v1,v2)) return; mreal dv,d0; x2-=1; if(v1*v2>0 && (v2/v1>=100 || v2/v1<=0.01)) // log scale { @@ -523,11 +563,11 @@ void mglBase::SetOrigin(mreal x0, mreal y0, mreal z0, mreal c0) //----------------------------------------------------------------------------- void mglBase::SetRanges(mglPoint m1, mglPoint m2) { - if(m1.x!=m2.x) { Min.x=m1.x; Max.x=m2.x; } - if(m1.y!=m2.y) { Min.y=m1.y; Max.y=m2.y; } - if(m1.z!=m2.z) { Min.z=m1.z; Max.z=m2.z; } - if(m1.c!=m2.c) { Min.c=m1.c; Max.c=m2.c; } - else { Min.c=Min.z;Max.c=Max.z;} + if(mgl_isrange(m1.x, m2.x)) { Min.x=m1.x; Max.x=m2.x; } + if(mgl_isrange(m1.y, m2.y)) { Min.y=m1.y; Max.y=m2.y; } + if(mgl_isrange(m1.z, m2.z)) { Min.z=m1.z; Max.z=m2.z; } + if(mgl_isrange(m1.c, m2.c)) { Min.c=m1.c; Max.c=m2.c; } + else { Min.c=Min.z;Max.c=Max.z;} if(Org.xMax.x && mgl_isnum(Org.x)) Org.x = Max.x; @@ -557,7 +597,7 @@ void mglBase::CRange(HCDT a,bool add, mreal fact) } void mglBase::CRange(mreal v1,mreal v2,bool add) { - if(v1==v2 && !add) return; + if(!mgl_isrange(v1,v2) && !add) return; if(!add) { if(mgl_isnum(v1)) Min.c = v1; @@ -592,7 +632,7 @@ void mglBase::XRange(HCDT a,bool add,mreal fact) } void mglBase::XRange(mreal v1,mreal v2,bool add) { - if(v1==v2 && !add) return; + if(!mgl_isrange(v1,v2) && !add) return; if(!add) { if(mgl_isnum(v1)) Min.x = v1; @@ -627,7 +667,7 @@ void mglBase::YRange(HCDT a,bool add,mreal fact) } void mglBase::YRange(mreal v1,mreal v2,bool add) { - if(v1==v2 && !add) return; + if(!mgl_isrange(v1,v2) && !add) return; if(!add) { if(mgl_isnum(v1)) Min.y = v1; @@ -663,7 +703,7 @@ void mglBase::ZRange(HCDT a,bool add,mreal fact) } void mglBase::ZRange(mreal v1,mreal v2,bool add) { - if(v1==v2 && !add) return; + if(!mgl_isrange(v1,v2) && !add) return; if(!add) { if(mgl_isnum(v1)) Min.z = v1; @@ -692,10 +732,10 @@ void mglBase::ZRange(mreal v1,mreal v2,bool add) //----------------------------------------------------------------------------- void mglBase::SetAutoRanges(mreal x1, mreal x2, mreal y1, mreal y2, mreal z1, mreal z2, mreal c1, mreal c2) { - if(x1!=x2) { Min.x = x1; Max.x = x2; } - if(y1!=y2) { Min.y = y1; Max.y = y2; } - if(z1!=z2) { Min.z = z1; Max.z = z2; } - if(c1!=c2) { Min.c = c1; Max.c = c2; } + if(mgl_isrange(x1,x2)) { Min.x = x1; Max.x = x2; } + if(mgl_isrange(y1,y2)) { Min.y = y1; Max.y = y2; } + if(mgl_isrange(z1,z2)) { Min.z = z1; Max.z = z2; } + if(mgl_isrange(c1,c2)) { Min.c = c1; Max.c = c2; } } //----------------------------------------------------------------------------- void mglBase::Ternary(int t) diff --git a/src/canvas.cpp b/src/canvas.cpp index c016c2d..ba7dfd2 100644 --- a/src/canvas.cpp +++ b/src/canvas.cpp @@ -223,7 +223,7 @@ int Height; ///< Height of the image int Depth; ///< Depth of the image int CurFrameId; ///< Number of automaticle created frames GifFileType *gif;*/ - SetDrawReg(1,1,0); Perspective(0); + SetDrawReg(1,1,0); Perspective(0); SetPenDelta(1); memcpy(mgl_mask_val, mgl_mask_def, 16*sizeof(uint64_t)); // should be > 16*8 ax.Clear(); ay.Clear(); az.Clear(); ac.Clear(); mgl_clear_fft(); DefMaskAn=0; ResetMask(); @@ -497,8 +497,7 @@ pthread_mutex_lock(&mutexPtx); mglColor mc = Txt[long(col1)].GetC(col1); mglPrim a(6); a.n1 = p; a.n2 = int(255*mc.r) + 256*(int(255*mc.g) + 256*int(255*mc.b)); - mglText txt(text,font); - a.n3 = Ptx.size(); Ptx.push_back(txt); + a.n3 = Ptx.size(); Ptx.push_back(mglText(text,font)); a.s = size; a.w = shift; a.p=ftet; add_prim(a); } @@ -530,6 +529,7 @@ pthread_mutex_lock(&mutexPtx); pt.x=pt.xx=pp.x; pt.y=pt.yy=pp.y; #pragma omp critical(pnt) {k4=Pnt.size(); MGL_PUSH(Pnt,pt,mutexPnt);} + PDef = 0xffff; // reset to solid line line_plot(k1,k2); line_plot(k1,k3); line_plot(k4,k2); line_plot(k4,k3); mreal bl = AddTexture('w'); @@ -831,15 +831,18 @@ std::wstring MGL_EXPORT mgl_ftoa(double v, const char *fmt) // clear exp format int st = se[0]=='-'?1:0; - if(plus || se[3+st+dig]=='-') // first remove zeros after 'e' + if(strcmp(sf,"nan")) { - for(i=(dig>0?4:3)+st+dig;i0?4:3)+st+dig,se+i,le-i+1); - } - else - { - for(i=(dig>0?3:2)+st+dig;i0?3:2)+st+dig,se+i,le-i+1); + if(plus || se[3+st+dig]=='-') // first remove zeros after 'e' + { + for(i=(dig>0?4:3)+st+dig;i0?4:3)+st+dig,se+i,le-i+1); + } + else + { + for(i=(dig>0?3:2)+st+dig;i0?3:2)+st+dig,se+i,le-i+1); + } } le=strlen(se); // don't allow '+' at the end diff --git a/src/canvas_cf.cpp b/src/canvas_cf.cpp index 76f8448..f8b3af6 100644 --- a/src/canvas_cf.cpp +++ b/src/canvas_cf.cpp @@ -483,3 +483,7 @@ void MGL_EXPORT mgl_rasterize(HMGL gr) { mglCanvas *g = dynamic_cast(gr); if(g) g->Rasterize(); } void MGL_EXPORT mgl_rasterize_(uintptr_t *gr) { _GR_->Rasterize(); } //----------------------------------------------------------------------------- +void MGL_EXPORT mgl_pen_delta(HMGL gr, double d) +{ mglCanvas *g = dynamic_cast(gr); if(g) g->SetPenDelta(d); } +void MGL_EXPORT mgl_pen_delta_(uintptr_t *gr, double *d) { _GR_->SetPenDelta(*d); } +//----------------------------------------------------------------------------- diff --git a/src/complex.cpp b/src/complex.cpp index 7967e67..73dabab 100644 --- a/src/complex.cpp +++ b/src/complex.cpp @@ -22,6 +22,9 @@ #include "mgl2/thread.h" #include "interp.hpp" +#define mgl2 mreal(2) +#define mgl3 mreal(3) +#define mgl4 mreal(4) //----------------------------------------------------------------------------- void MGL_EXPORT mglStartThreadC(void *(*func)(void *), void (*post)(mglThreadC *,dual *), long n, diff --git a/src/complex_io.cpp b/src/complex_io.cpp index 5ddb462..a1dee5d 100644 --- a/src/complex_io.cpp +++ b/src/complex_io.cpp @@ -236,41 +236,49 @@ void MGL_EXPORT mgl_datac_set_id_(uintptr_t *d, const char *eq,int l) { char *s=new char[l+1]; memcpy(s,eq,l); s[l]=0; mgl_datac_set_id(_DC_, s); delete []s; } //----------------------------------------------------------------------------- -void MGL_NO_EXPORT mgl_cprint(FILE *fp, mreal re, mreal im, char ch) +std::string MGL_NO_EXPORT mgl_cprint(mreal re, mreal im, char ch) { - if(im>0) fprintf(fp,"%g+i%g%c",re,im,ch); - else if(im<0) fprintf(fp,"%g-i%g%c",re,-im,ch); - else fprintf(fp,"%g%c",re,ch); + char buf[128]; + if(im>0) snprintf(buf,128,"%g+i%g%c",re,im,ch); + else if(im<0) snprintf(buf,128,"%g-i%g%c",re,-im,ch); + else snprintf(buf,128,"%g%c",re,ch); + return std::string(buf); } -void MGL_EXPORT mgl_datac_save(HCDT d, const char *fname,long ns) +std::string MGL_EXPORT mgl_datac_to_string(HCDT d, long ns) { + std::string out; const mglDataC *dd = dynamic_cast(d); - if(!dd) { mgl_data_save(d,fname,ns); return; } - FILE *fp = fopen(fname,"w"); - if(!fp) return; + if(!dd) { return mgl_data_to_string(d,ns); } long nx=dd->nx, ny=dd->ny, nz=dd->nz; const std::string loc = setlocale(LC_NUMERIC, NULL); setlocale(LC_NUMERIC, "C"); if(ns<0 || (ns>=nz && nz>1)) for(long k=0;ka[j+nx*(i+ny*k)]), imag(dd->a[j+nx*(i+ny*k)]),'\t'); - mgl_cprint(fp, real(dd->a[nx-1+nx*(i+ny*k)]), imag(dd->a[nx-1+nx*(i+ny*k)]),'\n'); + for(long j=0;ja[j+nx*(i+ny*k)]), imag(dd->a[j+nx*(i+ny*k)]),'\t'); + out+=mgl_cprint(real(dd->a[nx-1+nx*(i+ny*k)]), imag(dd->a[nx-1+nx*(i+ny*k)]),'\n'); } - fprintf(fp,"\n"); + out += "\n"; } else { // save selected slice if(nz>1) for(long i=0;ia[j+nx*(i+ny*ns)]), imag(dd->a[j+nx*(i+ny*ns)]),'\t'); - mgl_cprint(fp, real(dd->a[nx-1+nx*(i+ny*ns)]), imag(dd->a[nx-1+nx*(i+ny*ns)]),'\n'); + for(long j=0;ja[j+nx*(i+ny*ns)]), imag(dd->a[j+nx*(i+ny*ns)]),'\t'); + out+=mgl_cprint(real(dd->a[nx-1+nx*(i+ny*ns)]), imag(dd->a[nx-1+nx*(i+ny*ns)]),'\n'); } else if(nsa[j+nx*ns]), imag(dd->a[j+nx*ns]),'\t'); + out+=mgl_cprint(real(dd->a[j+nx*ns]), imag(dd->a[j+nx*ns]),'\t'); } setlocale(LC_NUMERIC, loc.c_str()); - fclose(fp); + return out; +} +void MGL_EXPORT mgl_datac_save(HCDT d, const char *fname,long ns) +{ + FILE *fp = fopen(fname,"w"); + if(fp) { fprintf(fp,"%s",mgl_datac_to_string(d,ns).c_str()); fclose(fp); } } void MGL_EXPORT mgl_datac_save_(uintptr_t *d, const char *fname,int *ns,int l) { char *s=new char[l+1]; memcpy(s,fname,l); s[l]=0; @@ -607,7 +615,7 @@ MGL_NO_EXPORT void *mgl_cmodify(void *par) void MGL_EXPORT mgl_datac_modify(HADT d, const char *eq,long dim) { long nx=d->nx, ny=d->ny, nz=d->nz, par[3]={nx,ny,nz}; - if(dim<=0) mgl_datac_modify_vw(d,eq,0,0); // fastes variant for whole array + if(dim<=0) mgl_datac_modify_vw(d,eq,0,0); // fastest variant for whole array mglFormulaC f(eq); if(nz>1) // 3D array { @@ -779,6 +787,22 @@ HMDT MGL_EXPORT mgl_datac_imag(HCDT d) uintptr_t MGL_EXPORT mgl_datac_imag_(uintptr_t *d) { return uintptr_t(mgl_datac_imag(_DC_)); } //----------------------------------------------------------------------------- +HMDT MGL_EXPORT mgl_datac_norm(HCDT d) +{ + long nx=d->GetNx(),ny=d->GetNy(),nz=d->GetNz(); + mglData *r=new mglData(nx,ny,nz); + const mglDataC *dd = dynamic_cast(d); + if(dd) +#pragma omp parallel for + for(long i=0;ia[i] = norm(dd->a[i]); + else +#pragma omp parallel for + for(long i=0;ia[i] = mgl_ipow(d->vthr(i),2); + return r; +} +uintptr_t MGL_EXPORT mgl_datac_norm_(uintptr_t *d) +{ return uintptr_t(mgl_datac_norm(_DC_)); } +//----------------------------------------------------------------------------- HMDT MGL_EXPORT mgl_datac_abs(HCDT d) { long nx=d->GetNx(),ny=d->GetNy(),nz=d->GetNz(); @@ -871,18 +895,36 @@ int MGL_EXPORT mgl_datac_read_hdf(HADT d,const char *fname,const char *data) if(hd<0) return false; hs = H5Dget_space(hd); rank = H5Sget_simple_extent_ndims(hs); - if(rank>0 && rank<=3) + if(rank>0 && rank<=4) { H5Sget_simple_extent_dims(hs,dims,0); - if(rank==2) { dims[2]=dims[0]; dims[0]=dims[1]=1; } - else if(rank==3) { dims[2]=dims[1]; dims[1]=dims[0]; dims[0]=1; } -// else if(rank>3) continue; - mgl_datac_create(d,dims[2],dims[1],dims[0]); + if(dims[rank-1]==2) + { + if(rank==1) { dims[2]=dims[0]=dims[1]=1; } + else if(rank==2) { dims[2]=dims[0]; dims[0]=dims[1]=1; } + else if(rank==3) { dims[2]=dims[1]; dims[1]=dims[0]; dims[0]=1; } + mgl_datac_create(d,dims[2],dims[1],dims[0]); #if MGL_USE_DOUBLE - H5Dread(hd, H5T_NATIVE_DOUBLE, H5S_ALL, H5S_ALL, H5P_DEFAULT, d->a); + H5Dread(hd, H5T_NATIVE_DOUBLE, H5S_ALL, H5S_ALL, H5P_DEFAULT, d->a); #else - H5Dread(hd, H5T_NATIVE_FLOAT, H5S_ALL, H5S_ALL, H5P_DEFAULT, d->a); + H5Dread(hd, H5T_NATIVE_FLOAT, H5S_ALL, H5S_ALL, H5P_DEFAULT, d->a); #endif + } + else if(rank<=3) + { + if(rank==1) { dims[2]=dims[0]; dims[0]=dims[1]=1; } + else if(rank==2) { dims[2]=dims[1]; dims[1]=dims[0]; dims[0]=1; } + mgl_datac_create(d,dims[2],dims[1],dims[0]); + long nn = dims[2]*dims[1]*dims[0]; + mreal *a = new mreal[nn]; +#if MGL_USE_DOUBLE + H5Dread(hd, H5T_NATIVE_DOUBLE, H5S_ALL, H5S_ALL, H5P_DEFAULT, a); +#else + H5Dread(hd, H5T_NATIVE_FLOAT, H5S_ALL, H5S_ALL, H5P_DEFAULT, a); +#endif + for(long i=0;ia[i] = a[i]; + delete []a; + } } H5Sclose(hs); H5Dclose(hd); H5Fclose(hf); return true; } diff --git a/src/crust.cpp b/src/crust.cpp index 5c48f28..954f626 100644 --- a/src/crust.cpp +++ b/src/crust.cpp @@ -20,6 +20,7 @@ #include #include #include +#include #include "mgl2/other.h" #include "mgl2/data.h" #include "mgl2/thread.h" @@ -497,30 +498,72 @@ HMDT MGL_EXPORT mgl_triangulation_2d(HCDT x, HCDT y) if(y->GetNN()!=n) return nums; // use s-hull here std::vector pts; - std::vector out; Shx pt; - double mx = 0, my = 0; - for(long i=0;ivthr(i)); if(t>mx) mx=t; - t = fabs(y->vthr(i)); if(t>my) my=t; - } - mx *= 1e-15; my *= 1e-15; + // Filter NaNs and Infs and calculate axiswise ranges + + double min_r = std::numeric_limits::infinity(); + double max_r = -std::numeric_limits::infinity(); + double min_c = std::numeric_limits::infinity(); + double max_c = -std::numeric_limits::infinity(); + for(long i=0;ivthr(i); pt.c = y->vthr(i); if(mgl_isbad(pt.r) || mgl_isbad(pt.c)) continue; - if(fabs(pt.r) triads; - if(de_duplicate(pts, out)) - mgl_set_global_warn("There are duplicated points for triangulation."); - s_hull_pro(pts, triads); + + static const double float_eps = std::numeric_limits::epsilon(); + Dupex grid_step(float_eps*std::max((max_r - min_r), std::max(std::abs(max_r), std::abs(min_r))), + float_eps * std::max((max_c - min_c), std::max(std::abs(max_c), std::abs(min_c)))); + + const size_t original_size = pts.size(); + + if(pts.size() >= 3u && 0. < grid_step.r && 0. < grid_step.c) { + std::vector out; + de_duplicate(pts, out, grid_step); + + if (pts.size() >= 3u && s_hull_pro(pts, triads) < 0) { + // Error occured. It may be caused by degenerated dataset. Well, let's try to increment rounding grid step. + // Why 4? Why not. There are no particular reasons for this. + grid_step.r *= 4.; + grid_step.c *= 4.; + + out.clear(); + triads.clear(); + + de_duplicate(pts, out, grid_step); + + if (pts.size() >= 3u && s_hull_pro(pts, triads) < 0) { + // Last try. Let's assume uniform points distribution and use range / sqrt(pts.size()) * 2 as epsilon. + // It removes a 3/4 of points in optimal case but in the worst case it merges all points to the one. + const double density = 1. + floor(0.5 + std::sqrt(static_cast(pts.size()))); + grid_step.r = (max_r - min_r) / density * 2.; + grid_step.c = (max_c - min_c) / density * 2.; + + out.clear(); + de_duplicate(pts, out, grid_step); + + triads.clear(); + s_hull_pro(pts, triads); + } + } + } + + if (triads.empty()) { + mgl_set_global_warn("Cannot triangulate this set!"); + } else if(original_size > pts.size()) { + mgl_set_global_warn("There are duplicated or indistinguishably adjacent points for triangulation."); + } + long m = triads.size(); nums=new mglData(3,m); for(long i=0;i0) continue; - r = mgl_norm(qq[i]-qq[k1]); + r = mgl_anorm(qq[i]-qq[k1]); if(rr) rm = r; } rs += sqrt(rm); @@ -712,7 +755,7 @@ long MGL_NO_EXPORT mgl_crust(long n,mglPoint *pp,long **nn,mreal ff) memset(set,0,100*sizeof(long)); for(ii=0,j=0;j(d); - if(dd) res = dd->ny*dd->nz==1?mglSpline1st(dd->a,dd->nx,x):mglSpline3st(dd->a,dd->nx,dd->ny,dd->nz,x,y,z); - const mglDataC *dc=dynamic_cast(d); - if(dc) res = abs(dc->ny*dc->nz==1?mglSpline1st(dc->a,dc->nx,x):mglSpline3st(dc->a,dc->nx,dc->ny,dc->nz,x,y,z)); - const mglDataV *dv=dynamic_cast(d); - if(dv) res = dv->value(x,y,z); - const mglDataF *df=dynamic_cast(d); - if(df) res = df->value(x,y,z); - return res; // TODO non-mglData: spline mglDataT, mglDataR + return d->value(x,y,z); } //----------------------------------------------------------------------------- mreal MGL_EXPORT mgl_data_spline_ext(HCDT d, mreal x,mreal y,mreal z, mreal *dx,mreal *dy,mreal *dz) { if(mgl_isbad(x) || mgl_isbad(y) || mgl_isbad(z)) return NAN; - mreal res = 0; - const mglData *dd=dynamic_cast(d); - if(dd) res = mglSpline3t(dd->a,dd->nx,dd->ny,dd->nz,x,y,z,dx,dy,dz); - const mglDataC *dc=dynamic_cast(d); - if(dc) - { dual a,ax,ay,az; mreal res; - a = mglSpline3t(dc->a,dc->nx,dc->ny,dc->nz,x,y,z,&ax,&ay,&az); res = abs(a); - if(dx) *dx = res?(real(a)*real(ax)+imag(a)*imag(ax))/res:0; - if(dy) *dy = res?(real(a)*real(ay)+imag(a)*imag(ay))/res:0; - if(dz) *dz = res?(real(a)*real(az)+imag(a)*imag(az))/res:0; } - const mglDataV *dv=dynamic_cast(d); - if(dv) res = dv->value(x,y,z,dx,dy,dz); - const mglDataF *df=dynamic_cast(d); - if(df) res = df->value(x,y,z,dx,dy,dz); - return res; // TODO non-mglData: spline mglDataT, mglDataR + return d->valueD(x,y,z,dx,dy,dz); } //----------------------------------------------------------------------------- mreal MGL_EXPORT mgl_data_spline_(uintptr_t *d, mreal *x,mreal *y,mreal *z) diff --git a/src/data_ex.cpp b/src/data_ex.cpp index 031c0b1..2a6a92c 100644 --- a/src/data_ex.cpp +++ b/src/data_ex.cpp @@ -826,3 +826,164 @@ mreal MGL_EXPORT mgl_find_root_txt_(const char *func, mreal *ini, const char *va mreal r = mgl_find_root_txt(s,*ini,*var); delete []s; return r; } //----------------------------------------------------------------------------- +MGL_NO_EXPORT void *mgl_pulse_z(void *par) +{ + mglThreadD *t=(mglThreadD *)par; + long nz=t->p[2], nn=t->n; + mreal *b=t->a; + const mreal *a=t->b; +#if !MGL_HAVE_PTHREAD +#pragma omp parallel for +#endif + for(long i=t->id;i0 && j00;j--) + { register long i0=i+nn*j; + if((a[i0]-C)*(a[i0-nn]-C)<0) j1 = j - (a[i0]-C)/(a[i0]-a[i0-nn]); + } + b[i+3*nn]=j2-j1; b[i+4*nn]=0; + if(j2>j1) for(long j = j1;j<=j2;j++) b[i+4*nn] += a[i+nn*j]; + } + else // maximum at the edges + { b[i]=m; b[i+nn]=j0; b[i+2*nn]=b[i+3*nn]=b[i+4*nn]=NAN; } + } + return 0; +} +MGL_NO_EXPORT void *mgl_pulse_y(void *par) +{ + mglThreadD *t=(mglThreadD *)par; + long nx=t->p[0], ny=t->p[1], nn=t->n; + mreal *b=t->a; + const mreal *a=t->b; +#if !MGL_HAVE_PTHREAD +#pragma omp parallel for +#endif + for(long i=t->id;i0 && j00;j--) + { register long i0=k+nx*j; + if((a[i0]-C)*(a[i0-nx]-C)<0) j1 = j - (a[i0]-C)/(a[i0]-a[i0-nx]); + } + b[ki+3*nx]=j2-j1; b[ki+4*nx]=0; + if(j2>j1) for(long j = j1;j<=j2;j++) b[ki+4*nx] += a[k+nx*j]; + } + else // maximum at the edges + { b[ki]=m; b[ki+nx]=j0; b[ki+2*nx]=b[ki+3*nx]=b[ki+4*nx]=NAN; } + } + return 0; +} +MGL_NO_EXPORT void *mgl_pulse_x(void *par) +{ + mglThreadD *t=(mglThreadD *)par; + long nx=t->p[0], nn=t->n; + mreal *b=t->a; + const mreal *a=t->b; +#if !MGL_HAVE_PTHREAD +#pragma omp parallel for +#endif + for(long i=t->id;i0 && j00;j--) + { register long i0=j+k; + if((a[i0]-C)*(a[i0-1]-C)<0) j1 = j - (a[i0]-C)/(a[i0]-a[i0-1]); + } + b[5*i+3]=j2-j1; b[5*i+4]=0; + if(j2>j1) for(long j = j1;j<=j2;j++) b[5*i+4] += a[j+k]; + } + else // maximum at the edges + { b[5*i]=m; b[5*i+1]=j0; b[5*i+2]=b[5*i+3]=b[5*i+4]=NAN; } + } + return 0; +} +HMDT MGL_EXPORT mgl_data_pulse(HCDT dat, char dir) +{ +// if(!dir || *dir==0) return 0; + long nx=dat->GetNx(),ny=dat->GetNy(),nz=dat->GetNz(); + long p[3]={nx,ny,nz}; + mreal *c = new mreal[nx*ny*nz], *b=0; + + const mglData *d=dynamic_cast(dat); + if(d) memcpy(c,d->a,nx*ny*nz*sizeof(mreal)); + else +#pragma omp parallel for + for(long i=0;ivthr(i); + + if(dir=='z' && nz>1) + { + b = new mreal[nx*ny*5]; + mglStartThread(mgl_pulse_z,0,nx*ny,b,c,0,p); p[2] = 5; + } + else if(dir=='y' && ny>1) + { + b = new mreal[5*nx*nz]; + mglStartThread(mgl_pulse_y,0,nx*p[2],b,c,0,p); p[1] = 5; + } + else if(dir=='x' && nx>1) + { + b = new mreal[5*ny*nz]; + mglStartThread(mgl_pulse_x,0,p[1]*p[2],b,c,0,p); p[0] = 5; + } + mglData *r=0; + if(b) + { + r=new mglData(p[0],p[1],p[2]); + memcpy(r->a,b,p[0]*p[1]*p[2]*sizeof(mreal)); + delete []b; + } + delete []c; return r; +} +uintptr_t MGL_EXPORT mgl_data_pulse_(uintptr_t *d, const char *dir,int l) +{ return uintptr_t(mgl_data_pulse(_DT_,dir[0])); } +//----------------------------------------------------------------------------- diff --git a/src/data_io.cpp b/src/data_io.cpp index 5761256..6929912 100644 --- a/src/data_io.cpp +++ b/src/data_io.cpp @@ -286,37 +286,45 @@ void MGL_EXPORT mgl_data_set_name_(uintptr_t *d, const char *name,int l) void MGL_EXPORT mgl_data_set_func(mglDataA *dat, void (*func)(void *), void *par) { dat->func = func; dat->o = par; } //----------------------------------------------------------------------------- -void MGL_EXPORT mgl_data_save(HCDT d, const char *fname,long ns) +std::string MGL_EXPORT mgl_data_to_string(HCDT d, long ns) { - FILE *fp = fopen(fname,"w"); - if(!fp) return; long nx=d->GetNx(), ny=d->GetNy(), nz=d->GetNz(); const std::string loc = setlocale(LC_NUMERIC, NULL); setlocale(LC_NUMERIC, "C"); + std::string out; char buf[512]; if(ns<0 || (ns>=nz && nz>1)) for(long k=0;k(d); - if(dr && !dr->id.empty()) fprintf(fp,"## %s\n",dr->id.c_str()); + if(dr && !dr->id.empty()) + { snprintf(buf,512,"## %s\n",dr->id.c_str()); out += buf; } const mglDataC *dc = dynamic_cast(d); - if(dc && !dc->id.empty()) fprintf(fp,"## %s\n",dc->id.c_str()); + if(dc && !dc->id.empty()) + { snprintf(buf,512,"## %s\n",dc->id.c_str()); out += buf; } for(long i=0;iv(j,i,k)); - fprintf(fp,"%g\n",d->v(nx-1,i,k)); + for(long j=0;jv(j,i,k)); out += buf; } + snprintf(buf,512,"%g\n",d->v(nx-1,i,k)); out += buf; } - fprintf(fp,"\n"); + out += "\n"; } else { // save selected slice if(nz>1) for(long i=0;iv(j,i,ns)); - fprintf(fp,"%g\n",d->v(nx-1,i,ns)); + for(long j=0;jv(j,i,ns)); out += buf; } + snprintf(buf,512,"%g\n",d->v(nx-1,i,ns)); out += buf; } else if(nsv(j,ns)); + { snprintf(buf,512,"%g\t",d->v(j,ns)); out += buf; } } setlocale(LC_NUMERIC, loc.c_str()); - fclose(fp); + return out; +} +void MGL_EXPORT mgl_data_save(HCDT d, const char *fname,long ns) +{ + FILE *fp = fopen(fname,"w"); + if(fp) { fprintf(fp,"%s",mgl_data_to_string(d,ns).c_str()); fclose(fp); } } void MGL_EXPORT mgl_data_save_(uintptr_t *d, const char *fname,int *ns,int l) { char *s=new char[l+1]; memcpy(s,fname,l); s[l]=0; diff --git a/src/evalc.cpp b/src/evalc.cpp index 1eca3d9..6be9232 100644 --- a/src/evalc.cpp +++ b/src/evalc.cpp @@ -30,6 +30,9 @@ EQ_NUM=0, // a variable substitution EQ_RND, // random number EQ_A, // numeric constant // normal functions of 2 arguments +EQ_LT, // comparison xy +EQ_EQ, // comparison x=y EQ_ADD, // addition x+y EQ_SUB, // substraction x-y EQ_MUL, // multiplication x*y @@ -91,6 +94,17 @@ mglFormulaC::mglFormulaC(const char *string) len-=2; str[len]=0; } len=strlen(str); + n=mglFindInText(str,"<>="); // low priority -- conditions + if(n>=0) + { + if(str[n]=='<') Kod=EQ_LT; + else if(str[n]=='>') Kod=EQ_GT; + else Kod=EQ_EQ; + str[n]=0; + Left=new mglFormulaC(str); + Right=new mglFormulaC(str+n+1); + delete []str; return; + } n=mglFindInText(str,"+-"); // normal priority -- additions if(n>=0 && (n<2 || str[n-1]!='e' || (str[n-2]!='.' && !isdigit(str[n-2])))) { @@ -208,6 +222,9 @@ dual mglFormulaC::Calc(const dual var[MGL_VS]) const return CalcIn(var); } //----------------------------------------------------------------------------- +dual MGL_LOCAL_CONST ceqc(dual a,dual b) {return a==b?1:0;} +dual MGL_LOCAL_CONST cltc(dual a,dual b) {return real(a-b)<0?1:0;} +dual MGL_LOCAL_CONST cgtc(dual a,dual b) {return real(a-b)>0?1:0;} dual MGL_LOCAL_CONST addc(dual a,dual b) {return a+b;} dual MGL_LOCAL_CONST subc(dual a,dual b) {return a-b;} dual MGL_LOCAL_CONST mulc(dual a,dual b) {return a*b;} @@ -241,12 +258,12 @@ dual MGL_LOCAL_CONST lgc(dual x) { return log10(x);} //----------------------------------------------------------------------------- typedef dual (*func_1)(dual); typedef dual (*func_2)(dual, dual); +static const func_2 f2[EQ_SIN-EQ_LT] = {cltc,cgtc,ceqc,addc,subc,mulc,divc,ipwc,powc,llgc}; +static const func_1 f1[EQ_LAST-EQ_SIN] = {sinc,cosc,tanc,asinc,acosc,atanc,sinhc,coshc,tanhc, + asinhc,acoshc,atanhc,sqrtc,expc,expi,logc,lgc,absc,argc,conjc}; // evaluation of embedded (included) expressions dual mglFormulaC::CalcIn(const dual *a1) const { - func_2 f2[EQ_SIN-EQ_ADD] = {addc,subc,mulc,divc,ipwc,powc,llgc}; - func_1 f1[EQ_LAST-EQ_SIN] = {sinc,cosc,tanc,asinc,acosc,atanc,sinhc,coshc,tanhc, - asinhc,acoshc,atanhc,sqrtc,expc,expi,logc,lgc,absc,argc,conjc}; // if(Error) return 0; if(Kod==EQ_A) return a1[(int)Res.real()]; if(Kod==EQ_RND) return mgl_rnd(); @@ -258,7 +275,7 @@ dual mglFormulaC::CalcIn(const dual *a1) const if(KodCalcIn(a1); - b = mgl_isfin(b)?f2[Kod-EQ_ADD](a,b):NAN; + b = mgl_isfin(b)?f2[Kod-EQ_LT](a,b):NAN; return mgl_isfin(b)?b:NAN; } else diff --git a/src/evalp.cpp b/src/evalp.cpp index af4d016..0499fa0 100644 --- a/src/evalp.cpp +++ b/src/evalp.cpp @@ -714,9 +714,9 @@ HMDT MGL_NO_EXPORT mglFormulaCalc(std::wstring str, mglParser *arg, const std::v HMDT res = new mglData; res->a[0]=NAN; return res; } //----------------------------------------------------------------------------- -dual MGL_LOCAL_CONST ceqc(dual a,dual b) {return a==b?1:0;} -dual MGL_LOCAL_CONST cltc(dual a,dual b) {return real(a-b)<0?1:0;} -dual MGL_LOCAL_CONST cgtc(dual a,dual b) {return real(a-b)>0?1:0;} +dual MGL_LOCAL_CONST ceqc(dual a,dual b); //{return a==b?1:0;} +dual MGL_LOCAL_CONST cltc(dual a,dual b); //{return real(a-b)<0?1:0;} +dual MGL_LOCAL_CONST cgtc(dual a,dual b); //{return real(a-b)>0?1:0;} dual MGL_LOCAL_CONST ipwc(dual a,dual b); //{return mgl_ipowc(a,int(b.real()));} dual MGL_LOCAL_CONST powc(dual a,dual b); //{return exp(b*log(a)); } dual MGL_LOCAL_CONST llgc(dual a,dual b); //{return log(a)/log(b); } diff --git a/src/exec.cpp b/src/exec.cpp index 98e8b0a..6213155 100644 --- a/src/exec.cpp +++ b/src/exec.cpp @@ -66,6 +66,13 @@ int MGL_NO_EXPORT mgls_alpha(mglGraph *gr, long , mglArg *a, const char *k, cons else res = 1; return res; } //----------------------------------------------------------------------------- +int MGL_NO_EXPORT mgls_pendelta(mglGraph *gr, long , mglArg *a, const char *k, const char *) +{ + int res=0; + if(!strcmp(k,"n")) gr->SetPenDelta(a[0].v); + else res = 1; return res; +} +//----------------------------------------------------------------------------- int MGL_NO_EXPORT mgls_plotid(mglGraph *gr, long , mglArg *a, const char *k, const char *) { int res=0; @@ -426,7 +433,7 @@ int MGL_NO_EXPORT mgls_copy(mglGraph *gr, long , mglArg *a, const char *k, const mglData *D = dynamic_cast(a[1].d); mglDataC *C = dynamic_cast(a[2].d); if(D && C) { d->Set(C->Real()); D->Set(C->Imag()); } - else res = 1; + else res = 1; } else if(!strcmp(k,"dn")) *d = a[1].v; else res = 1; return res; @@ -1096,6 +1103,26 @@ int MGL_NO_EXPORT mgls_line(mglGraph *gr, long , mglArg *a, const char *k, const else res = 1; gr->Self()->LoadState(); return res; } //----------------------------------------------------------------------------- +int MGL_NO_EXPORT mgls_lamerey(mglGraph *gr, long , mglArg *a, const char *k, const char *opt) +{ + int res=0; + if(!strcmp(k,"nd")) gr->Lamerey(a[0].v,*(a[1].d),"",opt); + else if(!strcmp(k,"nds")) gr->Lamerey(a[0].v,*(a[1].d),a[2].s.c_str(),opt); + else if(!strcmp(k,"ns")) gr->Lamerey(a[0].v,a[1].s.c_str(),"",opt); + else if(!strcmp(k,"nss")) gr->Lamerey(a[0].v,a[1].s.c_str(),a[2].s.c_str(),opt); + else res = 1; return res; +} +//----------------------------------------------------------------------------- +int MGL_NO_EXPORT mgls_bifurcation(mglGraph *gr, long , mglArg *a, const char *k, const char *opt) +{ + int res=0; + if(!strcmp(k,"nd")) gr->Bifurcation(a[0].v,*(a[1].d),"",opt); + else if(!strcmp(k,"nds")) gr->Bifurcation(a[0].v,*(a[1].d),a[2].s.c_str(),opt); + else if(!strcmp(k,"ns")) gr->Bifurcation(a[0].v,a[1].s.c_str(),"",opt); + else if(!strcmp(k,"nss")) gr->Bifurcation(a[0].v,a[1].s.c_str(),a[2].s.c_str(),opt); + else res = 1; return res; +} +//----------------------------------------------------------------------------- int MGL_NO_EXPORT mgls_errbox(mglGraph *gr, long , mglArg *a, const char *k, const char *opt) { int res=0; gr->Self()->SaveState(opt); @@ -1222,6 +1249,18 @@ int MGL_NO_EXPORT mgls_mark(mglGraph *gr, long , mglArg *a, const char *k, const else res = 1; return res; } //----------------------------------------------------------------------------- +int MGL_NO_EXPORT mgls_pmap(mglGraph *gr, long , mglArg *a, const char *k, const char *opt) +{ + int res=0; + if(!strcmp(k,"dd")) gr->Pmap(*(a[0].d), *(a[1].d), "",opt); + else if(!strcmp(k,"dds")) gr->Pmap(*(a[0].d), *(a[1].d), a[2].s.c_str(),opt); + else if(!strcmp(k,"ddd")) gr->Pmap(*(a[0].d), *(a[1].d), *(a[2].d), "",opt); + else if(!strcmp(k,"ddds")) gr->Pmap(*(a[0].d), *(a[1].d), *(a[2].d), a[3].s.c_str(),opt); + else if(!strcmp(k,"dddd")) gr->Pmap(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d), "",opt); + else if(!strcmp(k,"dddds")) gr->Pmap(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d), a[4].s.c_str(),opt); + else res = 1; return res; +} +//----------------------------------------------------------------------------- int MGL_NO_EXPORT mgls_map(mglGraph *gr, long , mglArg *a, const char *k, const char *opt) { int res=0; @@ -1325,6 +1364,7 @@ int MGL_NO_EXPORT mgls_savehdf(mglGraph *, long , mglArg *a, const char *k, cons { int res=0; if(!strcmp(k,"dss")) a[0].d->SaveHDF(a[1].s.c_str(), a[2].s.c_str()); + else if(!strcmp(k,"dssn")) a[0].d->SaveHDF(a[1].s.c_str(), a[2].s.c_str(),mgl_int(a[3].v)); else res = 1; return res; } //----------------------------------------------------------------------------- @@ -1431,6 +1471,24 @@ int MGL_NO_EXPORT mgls_save(mglGraph *, long , mglArg *a, const char *k, const c { int res=0; if(!strcmp(k,"ds")) a[0].d->Save(a[1].s.c_str()); + else if(!strcmp(k,"ss")) + { + FILE *fp = fopen(a[1].s.c_str(),"a"); + size_t pos; std::string s=a[0].s; + while((pos=s.find("\\n"))!=std::string::npos) + { s[pos]=' '; s[pos+1]='\n'; } + while((pos=s.find("\b\b"))!=std::string::npos) s.erase(pos,2); + fprintf(fp,"%s\n",s.c_str()); fclose(fp); + } + else if(!strcmp(k,"sss")) + { + FILE *fp = fopen(a[1].s.c_str(),a[2].s.c_str()); + size_t pos; std::string s=a[0].s; + while((pos=s.find("\\n"))!=std::string::npos) + { s[pos]=' '; s[pos+1]='\n'; } + while((pos=s.find("\b\b"))!=std::string::npos) s.erase(pos,2); + fprintf(fp,"%s\n",s.c_str()); fclose(fp); + } else res = 1; return res; } //----------------------------------------------------------------------------- @@ -2267,6 +2325,22 @@ int MGL_NO_EXPORT mgls_info(mglGraph *gr, long , mglArg *a, const char *k, const else res = 1; return res; } //----------------------------------------------------------------------------- +int MGL_NO_EXPORT mgls_print(mglGraph *gr, long , mglArg *a, const char *k, const char *) +{ + int res=0; + if(!strcmp(k,"d")) printf("%s\n",a[0].d->PrintInfo()); + else if(!strcmp(k,"s")) printf("%s\n",a[0].s.c_str()); + else if(!strcmp(k,"n")) printf("value = %g\n",a[0].v); + else res = 1; fflush(stdout); return res; +} +//----------------------------------------------------------------------------- +int MGL_NO_EXPORT mgls_echo(mglGraph *gr, long , mglArg *a, const char *k, const char *) +{ + int res=0; + if(!strcmp(k,"d")) gr->SetWarn(-1,a[0].d->Get().c_str()); + else res = 1; return res; +} +//----------------------------------------------------------------------------- int MGL_NO_EXPORT mgls_integrate(mglGraph *, long , mglArg *a, const char *k, const char *) { int res=0; @@ -2529,6 +2603,15 @@ int MGL_NO_EXPORT mgls_momentum(mglGraph *, long , mglArg *a, const char *k, con else res = 1; return res; } //----------------------------------------------------------------------------- +int MGL_NO_EXPORT mgls_pulse(mglGraph *, long , mglArg *a, const char *k, const char *) +{ + int res=0; + if(k[0]=='d' && a[0].d->temp) return 5; + mglData *d = dynamic_cast(a[0].d); + if(d && !strcmp(k,"dds")) *d = mglData(true,mgl_data_pulse(a[1].d,a[2].s[0])); + else res = 1; return res; +} +//----------------------------------------------------------------------------- int MGL_NO_EXPORT mgls_fit(mglGraph *gr, long , mglArg *a, const char *k, const char *opt) { int res=0; @@ -2666,10 +2749,10 @@ int MGL_NO_EXPORT mgls_fsurf(mglGraph *gr, long , mglArg *a, const char *k, cons else res = 1; return res; } //----------------------------------------------------------------------------- -int MGL_NO_EXPORT mgls_fgets(mglGraph *gr, long , mglArg *a, const char *k, const char *opt) // NOTE don't use options -- Puts can be part of group +int MGL_NO_EXPORT mgls_fgets(mglGraph *gr, long , mglArg *a, const char *k, const char *opt) { int res=0; gr->Self()->SaveState(opt); - char buf[1024]; + char buf[4096]; FILE *fp; if(!strncmp(k,"nns",3)) { @@ -2680,9 +2763,9 @@ int MGL_NO_EXPORT mgls_fgets(mglGraph *gr, long , mglArg *a, const char *k, cons gr->SetWarn(mglWarnOpen,a[2].s.c_str()); return res; } - for(i=0;iSetWarn(mglWarnOpen,(a[2].s+" - line "+b).c_str()); @@ -2700,9 +2783,9 @@ int MGL_NO_EXPORT mgls_fgets(mglGraph *gr, long , mglArg *a, const char *k, cons gr->SetWarn(mglWarnOpen,a[3].s.c_str()); return res; } - for(i=0;iSetWarn(mglWarnOpen,(a[3].s+" - line "+b).c_str()); @@ -2714,6 +2797,59 @@ int MGL_NO_EXPORT mgls_fgets(mglGraph *gr, long , mglArg *a, const char *k, cons else res = 1; gr->Self()->LoadState(); return res; } //----------------------------------------------------------------------------- +int MGL_NO_EXPORT mgls_fscanf(mglGraph *gr, long , mglArg *a, const char *k, const char *) +{ + int res=0; + if(!strcmp(k,"dss")) + { + mglData *d = dynamic_cast(a[0].d); + if(!d) return 1; + // first scan for all "%g" + char *buf=new char[a[2].s.length()],*s=buf; + strcpy(buf,a[2].s.c_str()); + std::vector strs; + for(size_t i=0;buf[i];i++) + { + if(buf[i]=='%' && buf[i+1]=='%') i++; + else if(buf[i]=='%' && buf[i+1]=='g') + { buf[i]=0; strs.push_back(s); s = buf+i+2; } + } + delete []buf; + if(strs.size()<1) return 0; + // read proper lines from file + std::vector bufs; + FILE *fp=fopen(a[1].s.c_str(),"r"); + if(!fp) + { + gr->SetWarn(mglWarnOpen,a[3].s.c_str()); + return res; + } + while(!feof(fp)) + { + s = mgl_fgetstr(fp); + if(!strncmp(s,strs[0].c_str(),strs[0].length())) + bufs.push_back(s); + } + fclose(fp); + // parse lines and collect data + const size_t nx=strs.size(), ny=bufs.size(); + if(ny<1) return 0; + d->Create(nx,ny); + for(size_t j=0;ja[i+nx*j] = atof(p); + } + } + } + else res = 1; return res; +} +//----------------------------------------------------------------------------- int MGL_NO_EXPORT mgls_import(mglGraph *, long , mglArg *a, const char *k, const char *) { int res=0; @@ -3266,6 +3402,7 @@ mglCommand mgls_base_cmd[] = { {"barwidth","Set default bars width","barwidth val", mgls_barwidth ,2}, {"beam","Draw quasioptical beam","beam Tr G1 G2 Adat r ['sch' flag num] ", mgls_beam ,9}, {"belt","Draw belts","belt Zdat ['fmt']|Xdat Ydat Zdat ['fmt']", mgls_belt ,8}, + {"bifurcation","Draw Bifurcation diagram","bifurcation dx Func ['fmt']|dx 'func' ['fmt']", mgls_bifurcation,13}, {"box","Draw bounding box","box ['fmt' ticks]", mgls_box ,12}, {"boxplot","Draw boxplot for 2D data","boxplot Ydat ['fmt']|Xdat Ydat ['fmt']", mgls_boxplot ,7}, {"boxs","Draw boxes","boxs Zdat ['fmt']|Xdat Ydat Zdat ['fmt']", mgls_boxs ,8}, @@ -3328,6 +3465,7 @@ mglCommand mgls_base_cmd[] = { {"dots","Draw dots for arbitrary data points","dots Xdat Ydat Zdat ['fmt']|Xdat Ydat Zdat Adat ['fmt']|Xdat Ydat Zdat Cdat Adat ['fmt']", mgls_dots ,9}, {"drawreg","Set draw region for quality&4","drawreg|nx ny m", mgls_drawreg ,2}, {"drop","Draw drop","drop x0 y0 dx dy r ['col' sh asp]|x0 y0 z0 dx dy dz r ['col' sh asp]", mgls_drop ,13}, + {"echo","Print content of the data","echo Dat", mgls_echo ,3}, {"ellipse","Draw ellipse","ellipse x1 y1 x2 y2 r ['fmt']|x1 y1 z1 x2 y2 z2 r ['fmt']", mgls_ellipse ,13}, {"else","Execute if condition is false","else", 0, 6}, {"elseif","Conditional operator","elseif val|Dat ['cond']", 0, 6}, @@ -3355,8 +3493,9 @@ mglCommand mgls_base_cmd[] = { {"font","Setup font","font 'fmt' [size]", mgls_font ,15}, {"for","For cycle","for $N v1 v2 [dv] | $N Dat", 0, 6}, {"fourier","In-place Fourier transform","fourier ReDat ImDat 'dir'|Cmplx 'dir'", mgls_fourier , 16}, - {"fplot","Plot curve by formula","fplot 'y_x' ['fmt']|'x_t' 'y_t' 'z_t' ['fmt']", mgls_fplot ,1}, - {"fsurf","Plot surface by formula","fsurf 'z_xy' ['fmt']|'x_uv' 'y_uv' 'z_uv' ['fmt']", mgls_fsurf ,1}, + {"fplot","Plot curve by formula","fplot 'y(x)' ['fmt']|'x(t)' 'y(t)' 'z(t)' ['fmt']", mgls_fplot ,1}, + {"fscanf","Get fromated data from file","fscanf Dat 'fname 'templ'", mgls_fscanf ,4}, + {"fsurf","Plot surface by formula","fsurf 'z(x,y)' ['fmt']|'x(u,v)' 'y(u,v)' 'z(u,v)' ['fmt']", mgls_fsurf ,1}, {"func","Start function definition and stop execution of main script","func 'name' [narg]", 0, 6}, {"grad","Draw gradient lines for scalar field","grad Phi ['fmt' num]|Xdat Ydat Phi ['fmt' num]|Xdat Ydat Zdat Phi ['fmt' num]", mgls_grad ,8}, {"grid","Draw grid","grid ['dir' 'fmt']", mgls_grid ,12}, @@ -3369,13 +3508,14 @@ mglCommand mgls_base_cmd[] = { {"idset","Set column id for data","idset Dat 'ids'", mgls_idset ,3}, {"if","Conditional operator","if val|Dat ['cond']", 0, 6}, {"import","Import data from PNG picture","import Dat 'fname' 'scheme' [v1 v2]", mgls_import ,4}, - {"info","Print information about data","info Dat [detail]|'message'", mgls_info ,3}, + {"info","Print message or information about the data","info Dat [detail]|'message'|const", mgls_info ,3}, {"inplot","Set position of plot in picture","x1 x2 y1 y2 [rel]", mgls_inplot ,5}, {"insert","Insert slice of data","insert Dat 'dir' [pos=0 num=1]", mgls_insert ,3}, {"integrate","Integrate data","integrate Dat 'dir'", mgls_integrate ,16}, {"jacobian","Get Jacobian","jacobian Res Xdat Ydat [Zdat]", mgls_jacobian ,4}, {"join","Join data arrays","join Dat Add", mgls_join ,3}, {"label","Draw label at arbitrary position","label Ydat 'txt' ['fmt'='']|Xdat Ydat 'txt' ['fmt'='']|Xdat Ydat Zdat 'txt' ['fmt'='']", mgls_label ,7}, + {"lamerey","Draw Lamerey diagram","lamerey x0 Func ['fmt']|x0 'func' ['fmt']", mgls_lamerey ,13}, {"legend","Draw legend","legend [pos 'fmt']|x y ['fmt']", mgls_legend ,15}, {"legendmarks","Set number of marks in the legend","legendmarks val", mgls_legendmarks ,15}, {"light","Setup light","light [val] | val num | num xpos ypos zpos ['fmt' br]", mgls_light ,2}, @@ -3408,11 +3548,15 @@ mglCommand mgls_base_cmd[] = { {"origintick","Set tick labels drawing at origin","origintick val", mgls_origintick ,14}, {"palette","Set palette for 1D plots","palette 'colors'", mgls_palette ,2}, {"pde","Solve PDE","pde Res 'ham' IniRe IniIm [dz k0]", mgls_pde ,4}, + {"pendelta","Set size of semi-transparent area","pen_delta val", mgls_pendelta ,2}, {"perspective","Set perspective","perspective val", mgls_perspective ,2}, {"pipe","Draw flow pipes for vector field","pipe Udat Vdat ['fmt' rad num]|Xdat Ydat Udat Vdat ['fmt' rad num]|Udat Vdat Wdat ['fmt' rad num]|Xdat Ydat Zdat Udat Vdat Wdat ['fmt' rad num]", mgls_pipe ,11}, {"plot","Draw usual plot for 1D data","plot Ydat ['fmt']|Xdat Ydat ['fmt']|Xdat Ydat Zdat ['fmt']", mgls_plot ,7}, {"plotid","Set default filename","plotid 'name'", mgls_plotid ,2}, + {"pmap","Draw Poincare map","pmap Ydat Rdat ['fmt']|Xdat Ydat Rdat ['fmt']|Xdat Ydat Zdat Rdat ['fmt']", mgls_pmap ,7}, {"polygon","Draw polygon","polygon x1 y1 x2 y2 num ['fmt']|x1 y1 z1 x2 y2 z2 num ['fmt']", mgls_polygon ,13}, + {"print","Immediately print the message","info 'message'|Dat [detail]|const", mgls_print ,3}, + {"pulse","Get pulse properties","pulse Res Dat 'dir'", mgls_pulse ,4}, {"put","Put value (numeric or array) to given data element","put Dat val [i j k] | Dat Val [i j k]", mgls_put ,3}, {"putsfit","Print fitted formula","putsfit x y ['pre' 'font' size]|x y z ['pre' 'font' size]", mgls_putsfit ,15}, {"qo2d","Solve PDE in accompanied coordinates for 2d case","qo2d Res 'ham' IniRe IniIm Ray [r k0 Xout Yout]", mgls_qo2d ,4}, @@ -3440,7 +3584,7 @@ mglCommand mgls_base_cmd[] = { {"roots", "Find roots using data as initial values", "roots Res 'func' Ini ['var']|Res 'func' ini ['var']", mgls_roots ,4}, {"rotate","Rotate plot","rotate tetz tetx [tety] | tet x y z", mgls_rotate ,5}, {"rotatetext","Set to auto rotate text or not","rotatetext val", mgls_rotatetext ,15}, - {"save","Save data to file","save Dat 'file'", mgls_save ,3}, + {"save","Save data to file","save Dat 'file'|'str' 'file'|'str' 'file' 'how'", mgls_save ,3}, {"savehdf","Save data to HDF5 file","savehdf Dat 'file' 'id'", mgls_savehdf ,3}, {"setsize","Set picture size","setsize width height", mgls_setsize ,2}, {"sew","Remove jump into the data, like phase jumps","sew Dat ['dir' da]", mgls_sew ,16}, diff --git a/src/export_2d.cpp b/src/export_2d.cpp index 4c6c7a2..b8013f4 100644 --- a/src/export_2d.cpp +++ b/src/export_2d.cpp @@ -190,7 +190,7 @@ void MGL_EXPORT mgl_write_eps(HMGL gr, const char *fname,const char *descr) fprintf(fb, "%%%%BoundingBox: 0 0 %d %d\n", w, h); fclose(fb); delete []buf; } - + const std::string loc = setlocale(LC_NUMERIC, NULL); setlocale(LC_NUMERIC, "C"); mgl_printf(fp, gz, "%%!PS-Adobe-3.0 EPSF-3.0\n%%%%BoundingBox: 0 0 %d %d\n", w, h); mgl_printf(fp, gz, "%%%%Created by MathGL library\n%%%%Title: %s\n",descr ? descr : fname); @@ -248,7 +248,7 @@ void MGL_EXPORT mgl_write_eps(HMGL gr, const char *fname,const char *descr) if(m_P) mgl_printf(fp, gz, "/m_P {m_p 0 sm rm m_s} def\n"); if(m_X) mgl_printf(fp, gz, "/m_X {m_x ss sm rm m_s} def\n"); // if(m_C) mgl_printf(fp, gz, "/m_C {m_c m_o} def\n"); - mgl_printf(fp, gz, "\n"); + mgl_printf(fp, gz, "1 setlinecap\n1 setlinejoin\n\n"); // manual setting round line cap // Write background image first const unsigned char *img = mgl_get_background(gr); @@ -434,7 +434,7 @@ void MGL_EXPORT mgl_write_svg(HMGL gr, const char *fname,const char *descr) // currentColor -> inherit ??? - mgl_printf(fp, gz, "\n"); + mgl_printf(fp, gz, "\n"); // write primitives mreal wp=-1; register long i; diff --git a/src/fft.cpp b/src/fft.cpp index 7ea43f8..f100f57 100644 --- a/src/fft.cpp +++ b/src/fft.cpp @@ -1072,12 +1072,12 @@ 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 kk = strchr(how,'k'); + bool kk = mglchr(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(mglchr(how,'y')) { n=d->ny; dn=d->nx; } + if(mglchr(how,'z')) { n=d->nz; dn=d->nx*d->ny; } + if(mglchr(how,'h')) // Hankel { #if MGL_HAVE_GSL gsl_dht *dht = gsl_dht_new(n,0,1); diff --git a/src/fit.cpp b/src/fit.cpp index 6a42a4b..d4f62e3 100644 --- a/src/fit.cpp +++ b/src/fit.cpp @@ -192,14 +192,23 @@ mreal MGL_NO_EXPORT mgl_fit_base(mglFitData &fd, mreal *ini) status = gsl_multifit_test_delta (s->dx, s->x, 1e-4, 1e-4 ); } while ( status == GSL_CONTINUE && iter < 500 ); + gsl_matrix *covar = gsl_matrix_alloc(m, m); - gsl_multifit_covar (s->J, 0.0, covar ); +#ifdef HAVE_GSL_2 + gsl_matrix *J = gsl_matrix_alloc(s->fdf->n, s->fdf->p); + gsl_multifit_fdfsolver_jac(s, J); + gsl_multifit_covar (J, 0.0, covar); + gsl_matrix_free (J); +#else + gsl_multifit_covar(s->J, 0.0, covar); +#endif mglFitCovar.Set(covar); + gsl_matrix_free(covar); + mreal res = gsl_blas_dnrm2(s->f); for(i=0;ix, i); // free memory - gsl_multifit_fdfsolver_free (s); - gsl_matrix_free (covar); + gsl_multifit_fdfsolver_free(s); delete []x_init; return res; #else diff --git a/src/interp.hpp b/src/interp.hpp index 46eee6d..61b2a33 100644 --- a/src/interp.hpp +++ b/src/interp.hpp @@ -39,22 +39,20 @@ template Treal mglLineart(const Treal *a, long nx, long ny, long n //----------------------------------------------------------------------------- template Treal mgl_spline3t(const Treal y[4], long n, mreal dx, Treal &dy) { - Treal d[3], t0,t1, f0,d0; + Treal d[3]; d[0] = -(y[2]-mreal(4)*y[1]+mreal(3)*y[0])/mreal(2); d[1] = (y[2]-y[0])/mreal(2); d[2] = (y[3]-y[1])/mreal(2); -// d[3] = (mreal(3)*y[3]-mreal(4)*y[2]+y[1])/mreal(2); - t0 = (y[2]+y[0])/mreal(2)-y[1]; - t1 = (y[3]+y[1])/mreal(2)-y[2]; - f0 = y[n]; d0 = d[n]; - Treal res = 0; + Treal t0 = (y[2]+y[0])/mreal(2)-y[1]; + Treal t1 = (y[3]+y[1])/mreal(2)-y[2]; + Treal f0 = y[n], d0 = d[n], res = 0; if(n==1) { - Treal f1 = y[2], d1 = d[2]; - Treal b3 = mreal(10)*(f1-f0)+t1-mreal(3)*t0-mreal(4)*d1-mreal(6)*d0; - Treal b4 = mreal(15)*(f0-f1)-mreal(2)*t1+mreal(3)*t0+mreal(7)*d1+mreal(8)*d0; - Treal b5 = mreal(6)*(f1-f0)+t1-t0-mreal(3)*d1-mreal(3)*d0; + Treal df = y[2]-f0, d1 = d[2]; + Treal b3 = mreal(10)*df+t1-mreal(3)*t0-mreal(4)*d1-mreal(6)*d0; + Treal b4 = mreal(-15)*df-mreal(2)*t1+mreal(3)*t0+mreal(7)*d1+mreal(8)*d0; + Treal b5 = mreal(6)*df+t1-t0-mreal(3)*d1-mreal(3)*d0; dy = d0 + dx*(mreal(2)*t0+dx*(mreal(3)*b3+dx*(mreal(4)*b4+dx*mreal(5)*b5))); // d2y = mreal(2)*t0 + dx*(mreal(6)*b3+dx*(mreal(12)*b4+dx*mreal(20)*b5)); // 2nd derivative for future res = f0 + dx*(d0+dx*(t0+dx*(b3+dx*(b4+dx*b5)))); @@ -68,22 +66,20 @@ template Treal mgl_spline3t(const Treal y[4], long n, mreal dx, Tr //----------------------------------------------------------------------------- template Treal mgl_spline3st(const Treal y[4], long n, mreal dx) { - Treal d[3], t0,t1, f0,d0; + Treal d[3]; d[0] = -(y[2]-mreal(4)*y[1]+mreal(3)*y[0])/mreal(2); d[1] = (y[2]-y[0])/mreal(2); d[2] = (y[3]-y[1])/mreal(2); -// d[3] = (mreal(3)*y[3]-mreal(4)*y[2]+y[1])/mreal(2); - Treal res; - f0 = y[n]; d0 = d[n]; - t0 = (y[2]+y[0])/mreal(2)-y[1]; - t1 = (y[3]+y[1])/mreal(2)-y[2]; + Treal f0 = y[n], d0 = d[n], res; + Treal t0 = (y[2]+y[0])/mreal(2)-y[1]; + Treal t1 = (y[3]+y[1])/mreal(2)-y[2]; if(n==1) { - Treal f1 = y[2], d1 = d[2]; - Treal b3 = mreal(10)*(f1-f0)+t1-mreal(3)*t0-mreal(4)*d1-mreal(6)*d0; - Treal b4 = mreal(15)*(f0-f1)-mreal(2)*t1+mreal(3)*t0+mreal(7)*d1+mreal(8)*d0; - Treal b5 = mreal(6)*(f1-f0)+t1-t0-mreal(3)*d1-mreal(3)*d0; + Treal df = y[2]-f0, d1 = d[2]; + Treal b3 = mreal(10)*df+t1-mreal(3)*t0-mreal(4)*d1-mreal(6)*d0; + Treal b4 = mreal(-15)*df-mreal(2)*t1+mreal(3)*t0+mreal(7)*d1+mreal(8)*d0; + Treal b5 = mreal(6)*df+t1-t0-mreal(3)*d1-mreal(3)*d0; res = f0 + dx*(d0+dx*(t0+dx*(b3+dx*(b4+dx*b5)))); } else res = f0 + dx*(d0+dx*(n<1?t0:t1)); diff --git a/src/opengl.cpp b/src/opengl.cpp index abdf610..f0bc699 100644 --- a/src/opengl.cpp +++ b/src/opengl.cpp @@ -79,7 +79,6 @@ void mglCanvasGL::Finish() PDef=pdef; pPos=ss; PenWidth=ww; } glFinish(); -// glBegin(GL_LINES); glColor3f(0,0,1); glVertex2f(0.1,0.1); glVertex2f(0.9,0.9); glEnd(); } //----------------------------------------------------------------------------- bool mglCanvasGL::Alpha(bool enable) diff --git a/src/parser.cpp b/src/parser.cpp index 7d34b41..7d5070a 100644 --- a/src/parser.cpp +++ b/src/parser.cpp @@ -59,6 +59,7 @@ void mglParser::ScanFunc(const wchar_t *line) if(!line) { func.clear(); num=0; return; } num++; + while(*line<=' ' && *line!=0) line++; if(wcsncmp(line,L"func",4) || line[4]>' ') return; register long i; for(i=4;line[i]<=' ' || line[i]=='\'';i++); @@ -167,6 +168,9 @@ mglParser::mglParser(bool setsize) mglParser::~mglParser() { DeleteAll(); delete []fval; + for(size_t i=0;iMessage()); } diff --git a/src/pixel.cpp b/src/pixel.cpp index 3a753ed..0427ef7 100644 --- a/src/pixel.cpp +++ b/src/pixel.cpp @@ -31,16 +31,18 @@ inline mreal get_pfact(float pf, float Depth) void mglCanvas::SetSize(int w,int h,bool clf) { if(w<=0 || h<=0) { SetWarn(mglWarnSize,"SetSize"); return; } - if(Width==w || Height==h) + if(Width==w && Height==h) { InPlot(0,1,0,1,false); if(clf || (Quality&4)) Clf(); return; } - double dx = double(w)/Width, dy = double(h)/Height, dz = sqrt(double(w*h))/Depth; + const double dx = double(w)/Width; + const double dy = double(h)/Height; + const double dz = sqrt(double(w*h))/Depth; Width = w; Height = h; Depth = long(sqrt(double(w*h))); - long s = long(w)*long(h); + const long s = long(w)*long(h); #if MGL_HAVE_PTHREAD pthread_mutex_lock(&mutexClf); #elif MGL_HAVE_OMP @@ -71,7 +73,7 @@ void mglCanvas::SetSize(int w,int h,bool clf) #elif MGL_HAVE_OMP omp_set_lock(&lockClf); #endif - long n = long(Pnt.size()); + const long n = long(Pnt.size()); #pragma omp parallel for for(long i=0;i &pnt = DrwDat[k].Pnt; - n = long(pnt.size()); + const long n = long(pnt.size()); #pragma omp parallel for for(long i=0;ix2 - d->x1; + const int dd = d->x2 - d->x1; for(long j=d->y1;jy2;j++) { register long i = d->x1+Width*(Height-1-j); @@ -161,7 +163,7 @@ long mglCanvas::ProjScale(int nf, long id, bool text) const mglPnt &pi = Pnt[id]; mglPoint pp(pi.x,pi.y,pi.z), nn(pi.u,pi.v,pi.w), p, n; if(mgl_isnan(pp.x)) return -1; - mreal w=B1.b[0]/2, h=B1.b[4]/2, d=B1.b[8]/2, xx=B1.x-w/2, yy=B1.y-h/2; + const mreal w=B1.b[0]/2, h=B1.b[4]/2, d=B1.b[8]/2, xx=B1.x-w/2, yy=B1.y-h/2; if(pi.sub>=0) { mglPoint q(RestorePnt(pp)/(2*B.pf)); @@ -206,23 +208,23 @@ void mglCanvas::LightScale(const mglMatrix *M) // NOTE: Perspective is not fully supported now !!! Also it use LAST InPlot parameters!!! mglPoint mglCanvas::RestorePnt(mglPoint ps, bool norm) const { - mreal s3 = 2*B.pf; + const mreal s3 = 2*B.pf; mglPoint p; - mreal W=Width/2, H=Height/2, D=Depth/2; + const mreal W=Width/2, H=Height/2, D=Depth/2; const mreal *b=B.b,*d=Bp.b; mreal cx = B.z*d[2]+B.y*d[1]+B.x*d[0]-Bp.x*W-d[0]*W+W-d[1]*H-d[2]*D; - mreal c0 = b[6]*d[2]+b[3]*d[1]+b[0]*d[0]; - mreal c1 = b[7]*d[2]+b[4]*d[1]+b[1]*d[0]; - mreal c2 = b[8]*d[2]+b[5]*d[1]+b[2]*d[0]; + const mreal c0 = b[6]*d[2]+b[3]*d[1]+b[0]*d[0]; + const mreal c1 = b[7]*d[2]+b[4]*d[1]+b[1]*d[0]; + const mreal c2 = b[8]*d[2]+b[5]*d[1]+b[2]*d[0]; mreal cy = B.z*d[5]+B.y*d[4]+B.x*d[3]-d[3]*W-Bp.y*H-d[4]*H+H-d[5]*D; - mreal c3 = b[6]*d[5]+b[3]*d[4]+b[0]*d[3]; - mreal c4 = b[7]*d[5]+b[4]*d[4]+b[1]*d[3]; - mreal c5 = b[8]*d[5]+b[5]*d[4]+b[2]*d[3]; + const mreal c3 = b[6]*d[5]+b[3]*d[4]+b[0]*d[3]; + const mreal c4 = b[7]*d[5]+b[4]*d[4]+b[1]*d[3]; + const mreal c5 = b[8]*d[5]+b[5]*d[4]+b[2]*d[3]; mreal cz = B.z*d[8]+B.y*d[7]+B.x*d[6]-d[6]*W-d[7]*H-Bp.z*D-d[8]*D+D; - mreal c6 = b[6]*d[8]+b[3]*d[7]+b[0]*d[6]; - mreal c7 = b[7]*d[8]+b[4]*d[7]+b[1]*d[6]; - mreal c8 = b[8]*d[8]+b[5]*d[7]+b[2]*d[6]; + const mreal c6 = b[6]*d[8]+b[3]*d[7]+b[0]*d[6]; + const mreal c7 = b[7]*d[8]+b[4]*d[7]+b[1]*d[6]; + const mreal c8 = b[8]*d[8]+b[5]*d[7]+b[2]*d[6]; if(norm) cx=cy=cz=0; if(mgl_isnum(ps.z)) // try to take into account perspective if z-value is provided @@ -231,8 +233,8 @@ mglPoint mglCanvas::RestorePnt(mglPoint ps, bool norm) const ps.x = Width/2 + (ps.x-Width/2)/dd; ps.y = Height/2+ (ps.y-Height/2)/dd; } - mreal xx = ps.x-cx, yy = ps.y-cy, zz = ps.z-cz; - mreal d1=c0*c4-c1*c3, d2=c1*c5-c2*c4, d3=c0*c5-c2*c3; + const mreal xx = ps.x-cx, yy = ps.y-cy, zz = ps.z-cz; + const mreal d1=c0*c4-c1*c3, d2=c1*c5-c2*c4, d3=c0*c5-c2*c3; if(mgl_isnum(zz)) // try to use z-values { @@ -291,7 +293,7 @@ void MGL_NO_EXPORT mgl_prm_swap(mglPrim &s1,mglPrim &s2,mglPrim *buf) memcpy(&s1, &s2, sizeof(mglPrim)); memcpy(&s2, buf, sizeof(mglPrim)); } -void MGL_NO_EXPORT sort_prm_c(size_t l0, size_t r0, mglStack &s, mglPrim *buf) +void MGL_NO_EXPORT sort_prm_c(const size_t l0, const size_t r0, mglStack &s, mglPrim *buf) { if(l0==r0) return; if(l0+1==r0) @@ -303,7 +305,7 @@ void MGL_NO_EXPORT sort_prm_c(size_t l0, size_t r0, mglStack &s, mglPri if(del) buf = (mglPrim*)malloc(sizeof(mglPrim)); size_t l=l0, r=r0; - long v = s[(l+r)/2].n1; + const long v = s[(l+r)/2].n1; for(size_t i=l0;i<=r0;i++) // first collect <0 if(s[i].n1= sqrt(2*num_thr) ??? - int nx=Q,ny=Q; // TODO find dependence on Q for 1, 2, 4, 8 threads. Try to select optimal + const int nx=Q,ny=Q; // TODO find dependence on Q for 1, 2, 4, 8 threads. Try to select optimal if(!(Quality&3)) #if !MGL_HAVE_PTHREAD #pragma omp parallel for @@ -628,7 +629,7 @@ void mglCanvas::pxl_primpx(long id, long n, const void *) // NOTE this variant i void mglCanvas::pxl_dotsdr(long id, long n, const void *) { const mreal *b = Bp.b; - mreal dx = -Bp.x*Width/2, dy = -Bp.y*Height/2, dz = Depth/2.; + const mreal dx = -Bp.x*Width/2, dy = -Bp.y*Height/2, dz = Depth/2.; #if !MGL_HAVE_PTHREAD #pragma omp parallel for #endif @@ -813,6 +814,11 @@ void mglCanvas::pnt_plot(long x,long y,mreal z,const unsigned char ci[4], int ob { combine(c,cc+8); memcpy(cc+8,c,4); } } } + if(Quality&MGL_DRAW_FAST) + { + if(z>=zz[0]) // point upper the background + { zz[0]=z; combine(cc,c); OI[i0]=obj_id; } + } else { if(z>=zz[0]) // point upper the background @@ -826,16 +832,15 @@ unsigned char* mglCanvas::col2int(const mglPnt &p,unsigned char *r, int obj_id) // if(!r) return r; // NOTE r must be provided! if(p.a<=0) { memset(r,0,4); return r; } register float b0=0,b1=0,b2=0, ar,ag,ab,dif; - size_t nl = p.sub>=0?p.sub:1-p.sub; - bool glob = !get(MGL_LOCAL_LIGHT); + const size_t nl = p.sub>=0?p.sub:1-p.sub; + const bool glob = !get(MGL_LOCAL_LIGHT); ar = ag = ab = glob?AmbBr:Sub[nl].AmbBr; dif = glob?DifBr:Sub[nl].DifBr; if(mgl_isnum(p.u+p.v+p.w)) { float d0,d1,d2,nn; - register long i; - for(i=0;i<10;i++) + for(long i=0;i<10;i++) { const mglLight &ll=glob?light[i]:Sub[nl].light[i]; if(!ll.n) continue; @@ -897,7 +902,7 @@ void mglCanvas::combine(unsigned char *c1, const unsigned char *c2) const { if(c2[3]) { - register unsigned a1=c1[3], a2=c2[3]; + const register unsigned a1=c1[3], a2=c2[3]; if(a2==255 || a1==0) { memcpy(c1,c2,4); return; } if((Flag&3)==0) { @@ -937,7 +942,7 @@ unsigned char **mglCanvas::GetRGBLines(long &w, long &h, unsigned char *&f, bool return p; } //----------------------------------------------------------------------------- -bool MGL_LOCAL_PURE visible(long i, long j, const unsigned char m[8], mreal pw, int a) // Check if pixel visible +bool inline visible(long i, long j, const unsigned char m[8], mreal pw, int a) // Check if pixel visible { register float c = mgl_cos[(a+360)%360], s = mgl_cos[(a+450)%360]; // register int ii = int(0.5+(i*c+j*s)/pw)%8, jj = int(0.5+(j*c-i*s)/pw)%8; @@ -960,7 +965,6 @@ void mglCanvas::quad_draw(const mglPnt &p1, const mglPnt &p2, const mglPnt &p3, } unsigned char r[4]; long y1,x1,y2,x2; - float dd,dsx,dsy; mglPnt d1(p2-p1), d2(p3-p1), d3(p4+p1-p2-p3); if(d1.x==0 && d1.y==0) { trig_draw(p1,p3,p4,true,d); return; } @@ -974,18 +978,18 @@ void mglCanvas::quad_draw(const mglPnt &p1, const mglPnt &p2, const mglPnt &p3, y1=mgl_max(y1,d->y1); y2=mgl_min(y2,d->y2); // if(x1>x2 || y1>y2) return; - dd = d1.x*d2.y-d1.y*d2.x; - dsx =-4*(d2.y*d3.x - d2.x*d3.y)*d1.y; - dsy = 4*(d2.y*d3.x - d2.x*d3.y)*d1.x; + const float dd = d1.x*d2.y-d1.y*d2.x; + const float dsx =-4*(d2.y*d3.x - d2.x*d3.y)*d1.y; + const float dsy = 4*(d2.y*d3.x - d2.x*d3.y)*d1.x; mglPoint n1(mglPoint(p2.x-p1.x,p2.y-p1.y,p2.z-p1.z)^mglPoint(p3.x-p1.x,p3.y-p1.y,p3.z-p1.z)); mglPoint n2(mglPoint(p2.x-p4.x,p2.y-p4.y,p2.z-p4.z)^mglPoint(p3.x-p4.x,p3.y-p4.y,p3.z-p4.z)); mglPoint nr((n1.x+n2.x)*0.5,(n1.y+n2.y)*0.5,(n1.z+n2.z)*0.5); - float x0 = p1.x, y0 = p1.y; - int oi = d->ObjId, ang=d->angle; - mreal pw = d->PenWidth; - uint64_t pd = d->PDef; + const float x0 = p1.x, y0 = p1.y; + const int oi = d->ObjId, ang=d->angle; + const mreal pw = d->PenWidth; + const uint64_t pd = d->PDef; for(long j=y1;j<=y2;j++) for(long i=x1;i<=x2;i++) { if(pd==MGL_SOLID_MASK || visible(i,j,d->m, pw,ang)) @@ -1068,13 +1072,12 @@ void mglCanvas::trig_draw(const mglPnt &p1, const mglPnt &p2, const mglPnt &p3, { fast_draw(p1,p2,d); fast_draw(p1,p3,d); fast_draw(p2,p3,d); return; } unsigned char r[4]; long y1,x1,y2,x2; - float dxu,dxv,dyu,dyv; - mglPnt d1(p2-p1), d2(p3-p1), p; + const mglPnt d1(p2-p1), d2(p3-p1); - dxu = d2.x*d1.y - d1.x*d2.y; - if(fabs(dxu)<1e-5) return; // points lies on the same line - dyv =-d1.x/dxu; dxv = d1.y/dxu; - dyu = d2.x/dxu; dxu =-d2.y/dxu; + const float tmp = d2.x*d1.y - d1.x*d2.y; + if(fabs(tmp)<1e-5) return; // points lies on the same line + const float dyv =-d1.x/tmp, dxv = d1.y/tmp; + const float dyu = d2.x/tmp, dxu =-d2.y/tmp; x1 = long(mgl_min(p1.xd->y1?y1:d->y1; y2=y2y2?y2:d->y2; // if(x1>x2 || y1>y2) return; // default normale - mglPoint nr(mglPoint(p2.x-p1.x,p2.y-p1.y,p2.z-p1.z)^mglPoint(p3.x-p1.x,p3.y-p1.y,p3.z-p1.z)); - float x0 = p1.x, y0 = p1.y; - float dz = Width>2 ? 1 : 1e-5*Width; // provide additional height to be well visible on the surfaces - if(anorm) dz=0; - int oi = d->ObjId, ang=d->angle; - mreal pw = d->PenWidth; - uint64_t pd = d->PDef; + const mglPoint nr(mglPoint(p2.x-p1.x,p2.y-p1.y,p2.z-p1.z)^mglPoint(p3.x-p1.x,p3.y-p1.y,p3.z-p1.z)); + const float x0 = p1.x, y0 = p1.y; + // provide additional height to be well visible on the surfaces + const float dz = anorm? 0 : (Width>2 ? 1 : 1e-5*Width); + const int oi = d->ObjId, ang=d->angle; + const mreal pw = d->PenWidth; + const uint64_t pd = d->PDef; if(Quality&MGL_DRAW_NORM) for(long j=y1;j<=y2;j++) for(long i=x1;i<=x2;i++) { if(pd==MGL_SOLID_MASK || visible(i,j,d->m, pw,ang)) @@ -1098,7 +1101,7 @@ void mglCanvas::trig_draw(const mglPnt &p1, const mglPnt &p2, const mglPnt &p3, register float xx = (i-x0), yy = (j-y0); register float u = dxu*xx+dyu*yy, v = dxv*xx+dyv*yy; if(u<0 || v<0 || u+v>1) continue; - p = p1+d1*u+d2*v; + mglPnt p(p1+d1*u+d2*v); if(mgl_isnan(p.u) && mgl_isnum(p.v) && anorm) { p.u = nr.x; p.v = nr.y; p.w = nr.z; } pnt_plot(i,j,p.z+dz,col2int(p,r,oi),oi); @@ -1143,37 +1146,35 @@ inline unsigned char mgl_sline(unsigned char c,float x) { x*=x/2; return (unsigned char)((c)/(1+x+x*x/5)); } void mglCanvas::line_draw(const mglPnt &p1, const mglPnt &p2, const mglDrawReg *dr) { - if((Quality&3)<2) { fast_draw(p1,p2,dr); return; } + if((Quality&3)==MGL_DRAW_WIRE) { fast_draw(p1,p2,dr); return; } // previously was <2. This may slightly slow down for Quality=1 unsigned char r[4]; long y1,x1,y2,x2; - float pw=dr->PenWidth, dxu,dxv,dyu,dyv,dd,dpw=3; - float dz = Width>2 ? 1 : 1e-5*Width; // provide additional height to be well visible on the surfaces - int oi = dr->ObjId; - - if(oi==HighId) { pw *= 2; dpw=2; } - mglPnt d(p2-p1), p; + const float dz = Width>2 ? 1 : 1e-5*Width; // provide additional height to be well visible on the surfaces + const int oi = dr->ObjId; + const float pw=dr->PenWidth*(oi==HighId?2:1), dpw=pen_delta*(oi==HighId?2:3); + const mglPnt d(p2-p1); bool hor = fabs(d.x)>fabs(d.y); x1 = long(p1.xp2.x?p1.x:p2.x); y2 = long(p1.y>p2.y?p1.y:p2.y); - x1 -= pw+3.5; x2 += pw+3.5; - y1 -= pw+3.5; y2 += pw+3.5; + x1 -= pw+10/dpw; x2 += pw+10/dpw; + y1 -= pw+10/dpw; y2 += pw+10/dpw; x1=x1>dr->x1?x1:dr->x1; x2=x2x2?x2:dr->x2; y1=y1>dr->y1?y1:dr->y1; y2=y2y2?y2:dr->y2; - dd = hypot(d.x, d.y); + const float dd = hypot(d.x, d.y); // if(x1>x2 || y1>y2 || dd<1e-5) return; if(dd<1e-5) return; - dxv = d.y/dd; dyv =-d.x/dd; - dxu = d.x/dd; dyu = d.y/dd; + const float dxv = d.y/dd, dyv =-d.x/dd; + const float dxu = d.x/dd, dyu = d.y/dd; - uint64_t pd = dr->PDef; - mreal pp = dr->pPos; + const uint64_t pd = dr->PDef; + const mreal pp = dr->pPos; if(hor) for(long i=x1;i<=x2;i++) { - y1 = int(p1.y+d.y*(i-p1.x)/d.x - pw - 3.5); - y2 = int(p1.y+d.y*(i-p1.x)/d.x + pw + 3.5); + y1 = int(p1.y+d.y*(i-p1.x)/d.x - pw - 10/dpw); + y2 = int(p1.y+d.y*(i-p1.x)/d.x + pw + 10/dpw); y1=y1>dr->y1?y1:dr->y1; y2=y2y2?y2:dr->y2; if(y1>y2) continue; for(long j=y1;j<=y2;j++) @@ -1182,17 +1183,17 @@ void mglCanvas::line_draw(const mglPnt &p1, const mglPnt &p2, const mglDrawReg * register float u = dxu*xx+dyu*yy, v = dxv*xx+dyv*yy; v = v*v; if(u<0) v += u*u; else if(u>dd) v += (u-dd)*(u-dd); - if(v>pw*pw) continue; +// if(v>pw*pw) continue; if(!(pd & ( 1L<dr->x1?x1:dr->x1; x2=x2x2?x2:dr->x2; if(x1>x2) continue; @@ -1202,9 +1203,9 @@ void mglCanvas::line_draw(const mglPnt &p1, const mglPnt &p2, const mglDrawReg * register float u = dxu*xx+dyu*yy, v = dxv*xx+dyv*yy; v = v*v; if(u<0) v += u*u; else if(u>dd) v += (u-dd)*(u-dd); - if(v>pw*pw) continue; +// if(v>pw*pw) continue; if(!(pd & (1L<ObjId; + const mglPnt d(p2-p1); + const int oi = dr->ObjId; unsigned char r[4]; col2int(p1,r,oi); long y1,x1,y2,x2; - bool hor = fabs(d.x)>fabs(d.y); + const bool hor = fabs(d.x)>fabs(d.y); x1 = long(p1.xp2.x?p1.x:p2.x); y2 = long(p1.y>p2.y?p1.y:p2.y); x1=x1>dr->x1?x1:dr->x1; x2=x2x2?x2:dr->x2; y1=y1>dr->y1?y1:dr->y1; y2=y2y2?y2:dr->y2; if(x1>x2 || y1>y2) return; - float dz = Width>2 ? 1 : 1e-5*Width; // provide additional height to be well visible on the surfaces + const float dz = Width>2 ? 1 : 1e-5*Width; // provide additional height to be well visible on the surfaces if(hor) for(long i=x1;i<=x2;i++) { @@ -1258,8 +1259,8 @@ void mglCanvas::line_pix(long i, long j, const mglPnt &p1, const mglPnt &p2, con register float u = dxu*xx+dyu*yy, v = dxv*xx+dyv*yy; v = v*v; if(u<0) v += u*u; else if(u>dd) v += (u-dd)*(u-dd); - register float pw=dr->PenWidth, dpw=3; - if(dr->ObjId==HighId) { pw *= 2; dpw=2; } + register float pw=dr->PenWidth, dpw=3*pen_delta; + if(dr->ObjId==HighId) { pw *= 2; dpw=2*pen_delta; } if(v>pw*pw || !(dr->PDef & ( 1L<pPos+u/pw/1.5, 16)) ) )) return; mglPnt p(p1+d*(u/dd)); unsigned char r[4]; @@ -1272,14 +1273,14 @@ void mglCanvas::line_pix(long i, long j, const mglPnt &p1, const mglPnt &p2, con void mglCanvas::pnt_draw(const mglPnt &p, const mglDrawReg *dr) { // if(k<0 || !dr) return; - float pw=3*dr->PenWidth,dpw=3; - int oi = dr->ObjId; - if(oi==HighId) { pw *= 2; dpw=2; } + const int oi = dr->ObjId; + const float pw=(oi==HighId?6:3)*dr->PenWidth,dpw=(oi==HighId?2:3)*pen_delta; unsigned char cs[4], cc; col2int(p,cs,oi); cc = cs[3]; if(cc==0) return; - long s = long(5.5+fabs(pw)); - long i1=mgl_max(-s,dr->x1-p.x),i2=mgl_min(s,dr->x2-p.x), j1=mgl_max(-s,dr->y1-p.y),j2=mgl_min(s,dr->y2-p.y); + const long s = long(pw+10/dpw+fabs(pw)); + const long i1=mgl_max(-s,dr->x1-p.x),i2=mgl_min(s,dr->x2-p.x); + const long j1=mgl_max(-s,dr->y1-p.y),j2=mgl_min(s,dr->y2-p.y); if(!(Quality&3)) for(long j=j1;j<=j2;j++) for(long i=i1;i<=i2;i++) // fast draw { register float v = i*i+j*j; @@ -1296,33 +1297,36 @@ void mglCanvas::pnt_draw(const mglPnt &p, const mglDrawReg *dr) //----------------------------------------------------------------------------- void mglCanvas::pnt_pix(long i, long j, const mglPnt &p, const mglDrawReg *dr) { - register float pw=3*dr->PenWidth,dpw=3; - if(dr->ObjId==HighId) { pw *= 2; dpw=2; } + register float pw=3*dr->PenWidth,dpw=3*pen_delta; + if(dr->ObjId==HighId) { pw *= 2; dpw=2*pen_delta; } unsigned char cs[4]; col2int(p,cs,dr->ObjId); register float xx = (i-p.x), yy = (j-p.y), v = xx*xx+yy*yy; - if(cs[3]==0 || v>(5.5+pw)*(5.5+pw)) return; + if(cs[3]==0 || v>(10/dpw+pw)*(10/dpw+pw)) return; if(v<(pw-1)*(pw-1)/4) cs[3] = mgl_sline(cs[3],dpw*(sqrt(v)+(1-pw)/2)); pnt_plot(i,j,p.z,cs,dr->ObjId); } //----------------------------------------------------------------------------- void mglCanvas::mark_draw(const mglPnt &q, char type, mreal size, mglDrawReg *d) { - int oi = d->ObjId; - unsigned char cs[4], ca; col2int(q,cs,oi); ca = cs[3];// = size>0 ? 255 : 255*q.t; - mreal ss=fabs(size), pw=1,dpw=3; + const int oi = d->ObjId; + unsigned char cs[4]; col2int(q,cs,oi); + const unsigned char ca = cs[3];// = size>0 ? 255 : 255*q.t; + const mreal ss=(strchr("xsSoO",type)?1:1.1)*fabs(size), dpw=(oi==HighId?2:3)*pen_delta; + mreal PW=1; if(type=='.' || ss==0) { - if(d) pw = 3*(ss?ss:sqrt(font_factor/400)); - register mreal dd = pw+3.5; + if(d) PW = 3*(ss?ss:sqrt(font_factor/400)); + if(oi==HighId) PW *= 2; + const mreal pw = PW; + register mreal dd = pw+10/dpw; long x1 = long(q.x-dd), y1 = long(q.y-dd); // bounding box long x2 = long(q.x+dd), y2 = long(q.y+dd); x1=x1>d->x1?x1:d->x1; x2=x2x2?x2:d->x2; y1=y1>d->y1?y1:d->y1; y2=y2y2?y2:d->y2; if(x1>x2 || y1>y2) return; - if(oi==HighId) { pw *= 2; dpw=2; } for(long j=y1;j<=y2;j++) for(long i=x1;i<=x2;i++) { register float dx=i-q.x, dy=j-q.y, v=dx*dx+dy*dy; @@ -1336,13 +1340,13 @@ void mglCanvas::mark_draw(const mglPnt &q, char type, mreal size, mglDrawReg *d) if(d) { d->PDef = MGL_SOLID_MASK; d->angle = 0; - pw = d->PenWidth*sqrt(fabs(50*size)); - if(pw<1) pw=1; + PW = d->PenWidth*sqrt(fabs(50*size)); + if(PW<1) PW=1; } - if(!strchr("xsSoO",type)) ss *= 1.1; - if(oi==HighId) { pw *= 2; dpw=2; } + if(oi==HighId) PW *= 2; + const mreal pw = PW; - register mreal dd = ss+pw+3.5; + register mreal dd = ss+pw+10/dpw; long x1 = long(q.x-dd), y1 = long(q.y-dd); // bounding box long x2 = long(q.x+dd), y2 = long(q.y+dd); x1=x1>d->x1?x1:d->x1; x2=x2x2?x2:d->x2; @@ -1811,7 +1815,7 @@ void mglCanvas::mark_pix(long i, long j, const mglPnt &q, char type, mreal size, register float pw=d->PenWidth; register float xx = (i-q.x), yy = (j-q.y), v = hypot(xx,yy); v = (v-ss)*(v-ss); - if(v>pw*pw) return; +// if(v>pw*pw) return; if(v>(pw-1)*(pw-1)/4) cs[3] = mgl_sline(cs[3],2*(sqrt(v)+(1-pw)/2)); register float dz = Width>2 ? 1 : 1e-5*Width; // provide additional height to be well visible on the surfaces pnt_plot(i,j,q.z+dz,cs,d->ObjId); @@ -1823,7 +1827,7 @@ void mglCanvas::mark_pix(long i, long j, const mglPnt &q, char type, mreal size, register float pw=d->PenWidth; register float xx = (i-q.x), yy = (j-q.y), v = hypot(xx,yy); v = (v-ss)*(v-ss); - if(v>pw*pw) return; +// if(v>pw*pw) return; if(v>(pw-1)*(pw-1)/4) cs[3] = mgl_sline(cs[3],2*(sqrt(v)+(1-pw)/2)); register float dz = Width>2 ? 1 : 1e-5*Width; // provide additional height to be well visible on the surfaces pnt_plot(i,j,q.z+dz,cs,d->ObjId); diff --git a/src/plot.cpp b/src/plot.cpp index c0c6787..4226c31 100644 --- a/src/plot.cpp +++ b/src/plot.cpp @@ -511,15 +511,15 @@ void MGL_EXPORT mgl_area_xyz(HMGL gr, HCDT x, HCDT y, HCDT z, const char *pen, c nn.Set(-y->dvx(0,my),x->dvx(0,mx)); mglPoint p(x->v(0,mx),y->v(0,my),z->v(0,mz)); - long n1 = gr->AddPnt(p,c1,nn,-1,11); p.z = z0; - long n2 = gr->AddPnt(p,c2,nn,-1,11); + long n1 = gr->AddPnt(p,c1,nn,-1,27); p.z = z0; + long n2 = gr->AddPnt(p,c2,nn,-1,27); for(long i=1;idvx(i,my),x->dvx(i,mx)); p.Set(x->v(i,mx),y->v(i,my),z->v(i,mz)); if(sh) c2=c1=gr->NextColor(pal,i); - n1 = gr->AddPnt(p,c1,nn,-1,11); p.z = z0; n2 = gr->AddPnt(p,c2,nn,-1,11); + n1 = gr->AddPnt(p,c1,nn,-1,27); p.z = z0; n2 = gr->AddPnt(p,c2,nn,-1,27); if(wire) { gr->line_plot(n1,n2); gr->line_plot(n3,n4); @@ -556,14 +556,14 @@ void MGL_EXPORT mgl_area_xy(HMGL gr, HCDT x, HCDT y, const char *pen, const char mreal z0 = zm + (m-1-j)*(gr->Max.z-zm)/m; mglPoint p(x->v(0,mx),y->v(0,my),z0); - long n1 = gr->AddPnt(p,c1,nn,-1,11); p.y = y0; - long n2 = gr->AddPnt(p,c2,nn,-1,11); + long n1 = gr->AddPnt(p,c1,nn,-1,27); p.y = y0; + long n2 = gr->AddPnt(p,c2,nn,-1,27); for(long i=1;iv(i,mx),y->v(i,my),z0); if(sh) c2=c1=gr->NextColor(pal,i); - n1 = gr->AddPnt(p,c1,nn,-1,11); p.y = y0; n2 = gr->AddPnt(p,c2,nn,-1,11); + n1 = gr->AddPnt(p,c1,nn,-1,27); p.y = y0; n2 = gr->AddPnt(p,c2,nn,-1,27); if(wire) { gr->line_plot(n1,n2); gr->line_plot(n3,n4); @@ -631,14 +631,14 @@ void MGL_EXPORT mgl_region_3d(HMGL gr, HCDT x1, HCDT y1, HCDT z1, HCDT x2, HCDT long mz = (zhave && jGetNy()) ? j:0; mreal z0 = zm + (m-1-j)*(gr->Max.z-zm)/m; - long n1 = gr->AddPnt(mglPoint(x1->v(0,mx),y1->v(0,my),zhave?z1->v(0,mz):z0),c1,nn,-1,11); - long n2 = gr->AddPnt(mglPoint(x2->v(0,mx),y2->v(0,my),zhave?z2->v(0,mz):z0),c2,nn,-1,11); + long n1 = gr->AddPnt(mglPoint(x1->v(0,mx),y1->v(0,my),zhave?z1->v(0,mz):z0),c1,nn,-1,27); + long n2 = gr->AddPnt(mglPoint(x2->v(0,mx),y2->v(0,my),zhave?z2->v(0,mz):z0),c2,nn,-1,27); for(long i=1;iNextColor(pal,i); - n1 = gr->AddPnt(mglPoint(x1->v(i,mx),y1->v(i,my),zhave?z1->v(i,mz):z0),c1,nn,-1,11); - n2 = gr->AddPnt(mglPoint(x2->v(i,mx),y2->v(i,my),zhave?z2->v(i,mz):z0),c2,nn,-1,11); + n1 = gr->AddPnt(mglPoint(x1->v(i,mx),y1->v(i,my),zhave?z1->v(i,mz):z0),c1,nn,-1,27); + n2 = gr->AddPnt(mglPoint(x2->v(i,mx),y2->v(i,my),zhave?z2->v(i,mz):z0),c2,nn,-1,27); gr->quad_plot(n1,n2,n3,n4); } } @@ -670,16 +670,16 @@ void MGL_EXPORT mgl_region_xy(HMGL gr, HCDT x, HCDT y1, HCDT y2, const char *pen mreal z0 = zm + (m-1-j)*(gr->Max.z-zm)/m; mreal f1 = y1->v(0,j), f2 = y2->v(0,j), xx = x->v(0,mx); - long n1 = gr->AddPnt(mglPoint(xx,f1,z0),c1,nn,-1,11); - long n2 = gr->AddPnt(mglPoint(xx,f2,z0),c2,nn,-1,11); + long n1 = gr->AddPnt(mglPoint(xx,f1,z0),c1,nn,-1,27); + long n2 = gr->AddPnt(mglPoint(xx,f2,z0),c2,nn,-1,27); for(long i=1;iv(i,j); f2 = y2->v(i,j); xx = x->v(i,mx); if(sh) c2=c1=gr->NextColor(pal,i); - n1 = gr->AddPnt(mglPoint(xx,f1,z0),c1,nn,-1,11); - n2 = gr->AddPnt(mglPoint(xx,f2,z0),c2,nn,-1,11); + n1 = gr->AddPnt(mglPoint(xx,f1,z0),c1,nn,-1,27); + n2 = gr->AddPnt(mglPoint(xx,f2,z0),c2,nn,-1,27); if(!inside || (f2>f1 && f4>f3)) gr->quad_plot(n1,n2,n3,n4); } } @@ -1327,10 +1327,10 @@ void MGL_EXPORT mgl_error_exy(HMGL gr, HCDT x, HCDT y, HCDT ex, HCDT ey, const c { mreal vx=x->v(i,mx), ve=ex->v(i,m1), vy=y->v(i,my), vf=ey->v(i,m2); mreal c = sh ? gr->NextColor(pal,i):gr->CDef; - long n1 = gr->AddPnt(mglPoint(vx-ve, vy+vf, zVal),c,q,-1,11); - long n2 = gr->AddPnt(mglPoint(vx-ve, vy-vf, zVal),c,q,-1,11); - long n3 = gr->AddPnt(mglPoint(vx+ve, vy+vf, zVal),c,q,-1,11); - long n4 = gr->AddPnt(mglPoint(vx+ve, vy-vf, zVal),c,q,-1,11); + long n1 = gr->AddPnt(mglPoint(vx-ve, vy+vf, zVal),c,q,-1,27); + long n2 = gr->AddPnt(mglPoint(vx-ve, vy-vf, zVal),c,q,-1,27); + long n3 = gr->AddPnt(mglPoint(vx+ve, vy+vf, zVal),c,q,-1,27); + long n4 = gr->AddPnt(mglPoint(vx+ve, vy-vf, zVal),c,q,-1,27); gr->line_plot(n1,n2); gr->line_plot(n1,n3); gr->line_plot(n4,n2); gr->line_plot(n4,n3); } @@ -1338,10 +1338,10 @@ void MGL_EXPORT mgl_error_exy(HMGL gr, HCDT x, HCDT y, HCDT ex, HCDT ey, const c { mreal vx=x->v(i,mx), ve=ex->v(i,m1), vy=y->v(i,my), vf=ey->v(i,m2); mreal c = sh ? gr->NextColor(pal,i):gr->CDef; - long n1 = gr->AddPnt(mglPoint(vx, vy+vf, zVal),c,q,-1,11); - long n2 = gr->AddPnt(mglPoint(vx-ve, vy, zVal),c,q,-1,11); - long n3 = gr->AddPnt(mglPoint(vx, vy-vf, zVal),c,q,-1,11); - long n4 = gr->AddPnt(mglPoint(vx+ve, vy, zVal),c,q,-1,11); + long n1 = gr->AddPnt(mglPoint(vx, vy+vf, zVal),c,q,-1,27); + long n2 = gr->AddPnt(mglPoint(vx-ve, vy, zVal),c,q,-1,27); + long n3 = gr->AddPnt(mglPoint(vx, vy-vf, zVal),c,q,-1,27); + long n4 = gr->AddPnt(mglPoint(vx+ve, vy, zVal),c,q,-1,27); gr->line_plot(n1,n2); gr->line_plot(n2,n3); gr->line_plot(n3,n4); gr->line_plot(n4,n1); } @@ -1354,7 +1354,7 @@ void MGL_EXPORT mgl_error_exy(HMGL gr, HCDT x, HCDT y, HCDT ex, HCDT ey, const c { n1 = n2; n2 = gr->AddPnt(mglPoint(vx+ve*mgl_cos[(18*k)%360], - vy+vf*mgl_cos[(270+18*k)%360], zVal),c,q,-1,11); + vy+vf*mgl_cos[(270+18*k)%360], zVal),c,q,-1,27); if(k>0) gr->line_plot(n1,n2); } } @@ -1365,10 +1365,10 @@ void MGL_EXPORT mgl_error_exy(HMGL gr, HCDT x, HCDT y, HCDT ex, HCDT ey, const c { mreal vx=x->v(i,mx), ve=ex->v(i,m1), vy=y->v(i,my), vf=ey->v(i,m2); mreal c = sh ? gr->NextColor(pal,i):gr->CDef; - long n1 = gr->AddPnt(mglPoint(vx, vy+vf, zVal),c,q,-1,11); - long n2 = gr->AddPnt(mglPoint(vx-ve, vy, zVal),c,q,-1,11); - long n3 = gr->AddPnt(mglPoint(vx, vy-vf, zVal),c,q,-1,11); - long n4 = gr->AddPnt(mglPoint(vx+ve, vy, zVal),c,q,-1,11); + long n1 = gr->AddPnt(mglPoint(vx, vy+vf, zVal),c,q,-1,27); + long n2 = gr->AddPnt(mglPoint(vx-ve, vy, zVal),c,q,-1,27); + long n3 = gr->AddPnt(mglPoint(vx, vy-vf, zVal),c,q,-1,27); + long n4 = gr->AddPnt(mglPoint(vx+ve, vy, zVal),c,q,-1,27); gr->line_plot(n1,n3); gr->line_plot(n2,n4); } break; case 'X': case 'x': @@ -1376,10 +1376,10 @@ void MGL_EXPORT mgl_error_exy(HMGL gr, HCDT x, HCDT y, HCDT ex, HCDT ey, const c { mreal vx=x->v(i,mx), ve=ex->v(i,m1), vy=y->v(i,my), vf=ey->v(i,m2); mreal c = sh ? gr->NextColor(pal,i):gr->CDef; - long n1 = gr->AddPnt(mglPoint(vx-ve, vy+vf, zVal),c,q,-1,11); - long n2 = gr->AddPnt(mglPoint(vx-ve, vy-vf, zVal),c,q,-1,11); - long n3 = gr->AddPnt(mglPoint(vx+ve, vy+vf, zVal),c,q,-1,11); - long n4 = gr->AddPnt(mglPoint(vx+ve, vy-vf, zVal),c,q,-1,11); + long n1 = gr->AddPnt(mglPoint(vx-ve, vy+vf, zVal),c,q,-1,27); + long n2 = gr->AddPnt(mglPoint(vx-ve, vy-vf, zVal),c,q,-1,27); + long n3 = gr->AddPnt(mglPoint(vx+ve, vy+vf, zVal),c,q,-1,27); + long n4 = gr->AddPnt(mglPoint(vx+ve, vy-vf, zVal),c,q,-1,27); gr->line_plot(n1,n4); gr->line_plot(n2,n3); } break; case 'S': @@ -1387,10 +1387,10 @@ void MGL_EXPORT mgl_error_exy(HMGL gr, HCDT x, HCDT y, HCDT ex, HCDT ey, const c { mreal vx=x->v(i,mx), ve=ex->v(i,m1), vy=y->v(i,my), vf=ey->v(i,m2); mreal c = sh ? gr->NextColor(pal,i):gr->CDef; - long n1 = gr->AddPnt(mglPoint(vx-ve, vy+vf, zVal),c,q,-1,11); - long n2 = gr->AddPnt(mglPoint(vx-ve, vy-vf, zVal),c,q,-1,11); - long n3 = gr->AddPnt(mglPoint(vx+ve, vy+vf, zVal),c,q,-1,11); - long n4 = gr->AddPnt(mglPoint(vx+ve, vy-vf, zVal),c,q,-1,11); + long n1 = gr->AddPnt(mglPoint(vx-ve, vy+vf, zVal),c,q,-1,27); + long n2 = gr->AddPnt(mglPoint(vx-ve, vy-vf, zVal),c,q,-1,27); + long n3 = gr->AddPnt(mglPoint(vx+ve, vy+vf, zVal),c,q,-1,27); + long n4 = gr->AddPnt(mglPoint(vx+ve, vy-vf, zVal),c,q,-1,27); gr->quad_plot(n1,n2,n3,n4); } break; case 'D': @@ -1398,10 +1398,10 @@ void MGL_EXPORT mgl_error_exy(HMGL gr, HCDT x, HCDT y, HCDT ex, HCDT ey, const c { mreal vx=x->v(i,mx), ve=ex->v(i,m1), vy=y->v(i,my), vf=ey->v(i,m2); mreal c = sh ? gr->NextColor(pal,i):gr->CDef; - long n1 = gr->AddPnt(mglPoint(vx, vy+vf, zVal),c,q,-1,11); - long n2 = gr->AddPnt(mglPoint(vx-ve, vy, zVal),c,q,-1,11); - long n3 = gr->AddPnt(mglPoint(vx, vy-vf, zVal),c,q,-1,11); - long n4 = gr->AddPnt(mglPoint(vx+ve, vy, zVal),c,q,-1,11); + long n1 = gr->AddPnt(mglPoint(vx, vy+vf, zVal),c,q,-1,27); + long n2 = gr->AddPnt(mglPoint(vx-ve, vy, zVal),c,q,-1,27); + long n3 = gr->AddPnt(mglPoint(vx, vy-vf, zVal),c,q,-1,27); + long n4 = gr->AddPnt(mglPoint(vx+ve, vy, zVal),c,q,-1,27); gr->quad_plot(n1,n4,n2,n3); } break; case 'O': @@ -1414,7 +1414,7 @@ void MGL_EXPORT mgl_error_exy(HMGL gr, HCDT x, HCDT y, HCDT ex, HCDT ey, const c { n1 = n2; n2 = gr->AddPnt(mglPoint(vx+ve*mgl_cos[(18*k)%360], - vy+vf*mgl_cos[(270+18*k)%360], zVal),c,q,-1,11); + vy+vf*mgl_cos[(270+18*k)%360], zVal),c,q,-1,27); if(k>0) gr->trig_plot(n1,n2,n3); } } break; @@ -1432,12 +1432,12 @@ void MGL_EXPORT mgl_error_exy(HMGL gr, HCDT x, HCDT y, HCDT ex, HCDT ey, const c mreal c = sh ? gr->NextColor(pal,i):gr->CDef; if(mk) gr->mark_plot(gr->AddPnt(mglPoint(vx,vy,zVal),c), mk); - long n1 = gr->AddPnt(mglPoint(vx, vy+vf, zVal),c,q,-1,11); - long n2 = gr->AddPnt(mglPoint(vx, vy-vf, zVal),c,q,-1,11); + long n1 = gr->AddPnt(mglPoint(vx, vy+vf, zVal),c,q,-1,27); + long n2 = gr->AddPnt(mglPoint(vx, vy-vf, zVal),c,q,-1,27); gr->line_plot(n1,n2); gr->arrow_plot(n1,n2,'I'); gr->arrow_plot(n2,n1,'I'); - n1 = gr->AddPnt(mglPoint(vx+ve, vy, zVal),-1,q,c,11); - n2 = gr->AddPnt(mglPoint(vx-ve, vy, zVal),-1,q,c,11); + n1 = gr->AddPnt(mglPoint(vx+ve, vy, zVal),-1,q,c,27); + n2 = gr->AddPnt(mglPoint(vx-ve, vy, zVal),-1,q,c,27); gr->line_plot(n1,n2); gr->arrow_plot(n1,n2,'I'); gr->arrow_plot(n2,n1,'I'); } } @@ -1581,7 +1581,7 @@ void MGL_EXPORT mgl_mark_xyz(HMGL gr, HCDT x, HCDT y, HCDT z, HCDT r, const char m = x->GetNy() > y->GetNy() ? x->GetNy() : y->GetNy(); m = z->GetNy() > m ? z->GetNy() : m; char mk=gr->SetPenPal(pen,&pal); gr->Reserve(n*m); - if(mk==0) return; + if(mk==0) mk='.'; bool sh = mglchr(pen,'!'); for(long j=0;jGetNx(),pal; + if(mgl_check_dim0(gr,x,y,z,r,"Mark")) return; + + gr->SaveState(opt); + static int cgid=1; gr->StartGroup("Mark",cgid++); + m = x->GetNy() > y->GetNy() ? x->GetNy() : y->GetNy(); + m = z->GetNy() > m ? z->GetNy() : m; + char mk=gr->SetPenPal(pen,&pal); gr->Reserve(n*m); + if(mk==0) mk='.'; + + for(long j=0;jNeedStop()) break; + gr->NextColor(pal); + long mx = jGetNy() ? j:0, my = jGetNy() ? j:0; + long mz = jGetNy() ? j:0, mr = jGetNy() ? j:0; + for(long i=0;iv(i,mr), r2 = r->v(i+1,mr); + if(r1==0) gr->mark_plot(gr->AddPnt(mglPoint(x->v(i,mx),y->v(i,my),z->v(i,mz))), mk); + if(r1*r2<0) + { + mreal d = r1/(r1-r2); + mglPoint p(x->v(i,mx)*(1-d)+x->v(i+1,mx)*d, y->v(i,my)*(1-d)+y->v(i+1,my)*d, z->v(i,mz)*(1-d)+d*z->v(i+1,mz)); + gr->mark_plot(gr->AddPnt(p), mk); + } + } + } + gr->EndGroup(); +} +//----------------------------------------------------------------------------- +void MGL_EXPORT mgl_pmap_xy(HMGL gr, HCDT x, HCDT y, HCDT r, const char *pen, const char *opt) +{ + gr->SaveState(opt); + mglDataV z(y->GetNx()); z.Fill(gr->AdjustZMin()); + mgl_pmap_xyz(gr,x,y,&z,r,pen,0); +} +//----------------------------------------------------------------------------- +void MGL_EXPORT mgl_pmap(HMGL gr, HCDT y, HCDT r, const char *pen, const char *opt) +{ + register long n=y->GetNx(); + gr->SaveState(opt); + mglDataV x(n), z(n); + x.Fill(gr->Min.x,gr->Max.x); z.Fill(gr->AdjustZMin()); + mgl_pmap_xyz(gr,&x,y,&z,r,pen,0); +} +//----------------------------------------------------------------------------- +void MGL_EXPORT mgl_pmap_xyz_(uintptr_t *gr, uintptr_t *x, uintptr_t *y, uintptr_t *z, uintptr_t *r, const char *pen, const char *opt,int l,int lo) +{ char *s=new char[l+1]; memcpy(s,pen,l); s[l]=0; + char *o=new char[lo+1]; memcpy(o,opt,lo); o[lo]=0; + mgl_pmap_xyz(_GR_, _DA_(x), _DA_(y), _DA_(z), _DA_(r),s,o); + delete []o; delete []s; } +//----------------------------------------------------------------------------- +void MGL_EXPORT mgl_pmap_xy_(uintptr_t *gr, uintptr_t *x, uintptr_t *y, uintptr_t *r, const char *pen, const char *opt,int l,int lo) +{ char *s=new char[l+1]; memcpy(s,pen,l); s[l]=0; + char *o=new char[lo+1]; memcpy(o,opt,lo); o[lo]=0; + mgl_pmap_xy(_GR_, _DA_(x), _DA_(y), _DA_(r),s,o); delete []o; delete []s; } +//----------------------------------------------------------------------------- +void MGL_EXPORT mgl_pmap_(uintptr_t *gr, uintptr_t *y, uintptr_t *r, const char *pen, const char *opt,int l,int lo) +{ char *s=new char[l+1]; memcpy(s,pen,l); s[l]=0; + char *o=new char[lo+1]; memcpy(o,opt,lo); o[lo]=0; + mgl_pmap(_GR_,_DA_(y),_DA_(r),s,o); delete []o; delete []s; } +//----------------------------------------------------------------------------- diff --git a/src/prim.cpp b/src/prim.cpp index 8d5c1f2..d62c086 100644 --- a/src/prim.cpp +++ b/src/prim.cpp @@ -918,7 +918,7 @@ void MGL_EXPORT mgl_logo(HMGL gr, long w, long h, const unsigned char *rgba, int gr->Reserve(4*(w+1)*(h+1)); for(long j=0;jAddPnt(mglPoint(x1+dx*i,y1+dy*j,z),0); gr->SetRGBA(k1,c); k2 = gr->AddPnt(mglPoint(x1+dx*(i+1),y1+dy*j,z),0); gr->SetRGBA(k2,c); @@ -934,7 +934,7 @@ void MGL_EXPORT mgl_logo(HMGL gr, long w, long h, const unsigned char *rgba, int long *pos = new long[w*h]; for(long j=0;jAddPnt(mglPoint(x1+dx*i,y1+dy*j,z),0); gr->SetRGBA(pos[i1],mglColor(rgba[i0]/255.,rgba[i0+1]/255.,rgba[i0+2]/255.)); } @@ -963,3 +963,144 @@ void MGL_EXPORT mgl_logo_file_(uintptr_t *gr, const char *fname, int *smooth, co char *f=new char[n+1]; memcpy(f,opt,n); f[n]=0; mgl_logo_file(_GR_,s,*smooth,f); delete []s; delete []f; } //----------------------------------------------------------------------------- +// +// Lamerey series +// +//----------------------------------------------------------------------------- +void MGL_EXPORT mgl_lamerey(HMGL gr, double x0, double (*f)(double,void *), void *par, const char *stl, const char *opt) +{ + static int cgid=1; gr->StartGroup("Lamerey",cgid++); + mreal r=gr->SaveState(opt); + double x=x0, dx = 1e-5*fabs(gr->Max.x-gr->Min.x); + long n = r>2 ? long(r+0.5):20, n1, n2; + gr->SetPenPal(stl); gr->Reserve(6*n+1); + bool vect = mglchr(stl,'v'); + n2 = gr->AddPnt(mglPoint(x,x,gr->Max.z)); + if(!mglchr(stl,'~')) + { + n1 = gr->AddPnt(mglPoint(x,gr->GetOrgY('x'),gr->Max.z)); + gr->line_plot(n1,n2); if(vect) gr->vect_plot(n1,n2,0.3*gr->GetArrowSize()); + } + for(long i=0;iAddPnt(mglPoint(x0,x,gr->Max.z)); + gr->line_plot(n1,n2); if(vect) gr->vect_plot(n1,n2,0.3*gr->GetArrowSize()); + n1=n2; n2 = gr->AddPnt(mglPoint(x,x,gr->Max.z)); + gr->line_plot(n1,n2); if(vect) gr->vect_plot(n1,n2,0.3*gr->GetArrowSize()); + } + gr->EndGroup(); +} +//----------------------------------------------------------------------------- +struct mglDatSpl { HCDT d; double x0,dx; double y0,dy; }; +double MGL_NO_EXPORT func_dat(double x, void *p) +{ mglDatSpl *s = (mglDatSpl *)p; return s->d->value((x-s->x0)*s->dx); } +void MGL_EXPORT mgl_lamerey_dat(HMGL gr, double x0, HCDT f, const char *stl, const char *opt) +{ + mreal r = gr->SaveState(opt); + char buf[64]=""; if(r>2) sprintf(buf,"value %g",r); + mglDatSpl s; s.d=f; s.x0=gr->Min.x; s.dx=f->GetNx()/(gr->Max.x-gr->Min.x); + mgl_lamerey(gr,x0,func_dat,&s,stl,buf); +} +//----------------------------------------------------------------------------- +double MGL_NO_EXPORT func_str(double x, void *p) +{ HMEX s = (HMEX)p; return mgl_expr_eval(s,x,0,0); } +void MGL_EXPORT mgl_lamerey_str(HMGL gr, double x0, const char *f, const char *stl, const char *opt) +{ + HMEX eq = mgl_create_expr(f); + mgl_lamerey(gr,x0,func_str,eq,stl,opt); + mgl_delete_expr(eq); +} +//----------------------------------------------------------------------------- +void MGL_EXPORT mgl_lamerey_dat_(uintptr_t *gr, double *x0, uintptr_t *f, const char *stl, const char *opt, int l,int n) +{ char *s=new char[l+1]; memcpy(s,stl,l); s[l]=0; + char *o=new char[n+1]; memcpy(o,opt,n); o[n]=0; + mgl_lamerey_dat(_GR_,*x0,_DA_(f),s,o); delete []s; delete []o; } +//----------------------------------------------------------------------------- +void MGL_EXPORT mgl_lamerey_str_(uintptr_t *gr, double *x0, const char *func, const char *stl, const char *opt, int m,int l,int n) +{ char *s=new char[l+1]; memcpy(s,stl,l); s[l]=0; + char *o=new char[n+1]; memcpy(o,opt,n); o[n]=0; + char *f=new char[m+1]; memcpy(f,func,m); f[m]=0; + mgl_lamerey_str(_GR_,*x0,f,s,o); delete []f; delete []s; delete []o; } +//----------------------------------------------------------------------------- +// +// Bifurcation series +// +//----------------------------------------------------------------------------- +void MGL_EXPORT mgl_bifurcation(HMGL gr, double dx, double (*f)(double,double,void *), void *par, const char *stl, const char *opt) +{ + if((gr->Max.x-gr->Min.x)*dx<=0) { gr->SetWarn(mglWarnSlc,"Bifurcation"); return; } + static int cgid=1; gr->StartGroup("Bifurcation",cgid++); + mreal res=gr->SaveState(opt); + long n = res>2 ? long(res+0.5):1024, m=(gr->Max.x-gr->Min.x)/dx, m1=0,m2=0; + gr->SetPenPal(stl); gr->Reserve(2*n*m); + double *v1=new double[n], *v2=new double[n], dd=0.1*fabs(gr->Max.y-gr->Min.y)/n; + double r = gr->Min.y+mgl_rnd()*(gr->Max.y-gr->Min.y), r0 = r; + + bool fin=false; + for(long i=0;i<10*n;i++) r = f(gr->Min.x,r,par); // wait for loop stabilization + for(m1=0;m1Min.x,r,par); + for(long j=0;jMin.x+dx;xx<=gr->Max.x;xx+=dx) + { + m2=m1; memcpy(v2,v1,n*sizeof(double)); r=r0; + for(long i=0;i<10*n;i++) r = f(xx,r,par); // wait for loop stabilization + for(fin=false,m1=0;m1=m2) for(long i=0;iline_plot(gr->AddPnt(mglPoint(xx-dx,vv,gr->Max.z)), gr->AddPnt(mglPoint(xx,v1[i],gr->Max.z))); + } + else for(long i=0;iline_plot(gr->AddPnt(mglPoint(xx-dx,v1[i],gr->Max.z)), gr->AddPnt(mglPoint(xx,v1[i],gr->Max.z))); + } + gr->EndGroup(); delete []v1; delete []v2; +} +//----------------------------------------------------------------------------- +double MGL_NO_EXPORT bif_dat(double x, double y, void *p) +{ mglDatSpl *s = (mglDatSpl *)p; return s->d->value((x-s->x0)*s->dx, (y-s->y0)*s->dy); } +void MGL_EXPORT mgl_bifurcation_dat(HMGL gr, double dx, HCDT f, const char *stl, const char *opt) +{ + if(dx==0 || (gr->Max.x-gr->Min.x)*dx<0) { gr->SetWarn(mglWarnSlc,"Bifurcation"); return; } + if(f->GetNy()<2) { gr->SetWarn(mglWarnLow,"Bifurcation"); return; } + mreal r = gr->SaveState(opt); + char buf[64]=""; if(r>2) sprintf(buf,"value %g",r); + mglDatSpl s; s.d=f; + s.x0=gr->Min.x; s.dx=f->GetNx()/(gr->Max.x-gr->Min.x); + s.y0=gr->Min.y; s.dy=f->GetNy()/(gr->Max.y-gr->Min.y); + mgl_bifurcation(gr,dx,bif_dat,&s,stl,buf); +} +//----------------------------------------------------------------------------- +double MGL_NO_EXPORT bif_str(double x, double y, void *p) +{ HMEX s = (HMEX)p; return mgl_expr_eval(s,x,y,0); } +void MGL_EXPORT mgl_bifurcation_str(HMGL gr, double dx, const char *f, const char *stl, const char *opt) +{ + HMEX eq = mgl_create_expr(f); + mgl_bifurcation(gr,dx,bif_str,eq,stl,opt); + mgl_delete_expr(eq); +} +//----------------------------------------------------------------------------- +void MGL_EXPORT mgl_bifurcation_dat_(uintptr_t *gr, double *dx, uintptr_t *f, const char *stl, const char *opt, int l,int n) +{ char *s=new char[l+1]; memcpy(s,stl,l); s[l]=0; + char *o=new char[n+1]; memcpy(o,opt,n); o[n]=0; + mgl_bifurcation_dat(_GR_,*dx,_DA_(f),s,o); delete []s; delete []o; } +//----------------------------------------------------------------------------- +void MGL_EXPORT mgl_bifurcation_str_(uintptr_t *gr, double *dx, const char *func, const char *stl, const char *opt, int m,int l,int n) +{ char *s=new char[l+1]; memcpy(s,stl,l); s[l]=0; + char *o=new char[n+1]; memcpy(o,opt,n); o[n]=0; + char *f=new char[m+1]; memcpy(f,func,m); f[m]=0; + mgl_bifurcation_str(_GR_,*dx,f,s,o); delete []f; delete []s; delete []o; } +//----------------------------------------------------------------------------- diff --git a/src/s_hull/s_hull_pro.cpp b/src/s_hull/s_hull_pro.cpp index 2ff4236..eb022b4 100644 --- a/src/s_hull/s_hull_pro.cpp +++ b/src/s_hull/s_hull_pro.cpp @@ -532,6 +532,10 @@ long s_hull_pro( std::vector &pts, std::vector &triads) } + if (e1 < 0) { + // Cannot find visible point - it might be caused by numerical issues on some kind of datasets + return (-5); + } // triangle pidx starts at e1 and ends at e2 (inclusive). if( e2 < numh ) @@ -766,20 +770,31 @@ void circle_cent4(double r1,double c1, double r2,double c2, double r3,double c3, } +namespace { + +/** + * Rounds the value given to the nearest multiple of the epsilon given + */ +double coarsen(const double value, const double epsilon) { + const double minimal_epsilon = std::numeric_limits::epsilon() * value; + return (epsilon < minimal_epsilon) ? value : floor(value / epsilon + 0.5) * epsilon; +} + +} + /* test a set of points for duplicates. erase duplicate points, do not change point ids. */ -long de_duplicate( std::vector &pts, std::vector &outx ) { - +long de_duplicate( std::vector &pts, std::vector &outx, const Dupex epsilon ) { long nump = (long) pts.size(); std::vector dpx; Dupex d; for( long k=0; k #include #include +#include /* for use in s_hull_pro.cpp @@ -137,7 +138,7 @@ long T_flip_pro( std::vector &pts, std::vector &triads, std::vector< long T_flip_pro_idx( std::vector &pts, std::vector &triads, std::vector &slump, std::set &ids); long read_Shx(std::vector &pts, char * fname); -long de_duplicate( std::vector &pts, std::vector &outx ); +long de_duplicate( std::vector &pts, std::vector &outx, Dupex epsilon = Dupex(std::numeric_limits::epsilon(),std::numeric_limits::epsilon()) ); long de_duplicateX( std::vector &pts, std::vector &outx,std::vector &pts2 ); long test_center(Shx &pt0, Shx &pt1,Shx &pt2); diff --git a/src/vect.cpp b/src/vect.cpp index 9983da4..1e3c23a 100644 --- a/src/vect.cpp +++ b/src/vect.cpp @@ -21,7 +21,6 @@ #include "mgl2/eval.h" #include "mgl2/data.h" #include "mgl2/base.h" -#define MGL_FLOW_ACC 0.05 // accuracy of loop detection //----------------------------------------------------------------------------- // // Traj series @@ -72,7 +71,7 @@ void MGL_EXPORT mgl_traj_xyz(HMGL gr, HCDT x, HCDT y, HCDT z, HCDT ax, HCDT ay, dd = dd ? sqrt(dx*dx+dy*dy+dz*dz)/dd : 0; } else dd = len; - gr->vect_plot(gr->AddPnt(p1), gr->AddPnt(p1+dd*p2,-1,mglPoint(NAN),-1,2)); + gr->vect_plot(gr->AddPnt(p1), gr->AddPnt(p1+dd*p2,-1,mglPoint(NAN),-1,2),gr->GetArrowSize()); } } gr->EndGroup(); @@ -168,7 +167,7 @@ void MGL_EXPORT mgl_vect_xy(HMGL gr, HCDT x, HCDT y, HCDT ax, HCDT ay, const cha if(n1<0 && n2>=0) n1=gr->AddPnt(p1,c1,mglPoint(NAN),-1,2); if(n2<0 && n1>=0) n2=gr->AddPnt(p2,c2,mglPoint(NAN),-1,2); if(dot) { gr->line_plot(n1,n2); gr->mark_plot(n1,'.'); } - else gr->vect_plot(n1,n2); + else gr->vect_plot(n1,n2,gr->GetArrowSize()); } } gr->EndGroup(); @@ -267,7 +266,7 @@ void MGL_EXPORT mgl_vect_xyz(HMGL gr, HCDT x, HCDT y, HCDT z, HCDT ax, HCDT ay, if(n1<0 && n2>=0) n1=gr->AddPnt(p1,c1,mglPoint(NAN),-1,2); if(n2<0 && n1>=0) n2=gr->AddPnt(p2,c2,mglPoint(NAN),-1,2); if(dot) { gr->line_plot(n1,n2); gr->mark_plot(n1,'.'); } - else gr->vect_plot(n1,n2); + else gr->vect_plot(n1,n2,gr->GetArrowSize()); } } gr->EndGroup(); @@ -469,7 +468,7 @@ void MGL_EXPORT mgl_vect3_xyz(HMGL gr, HCDT x, HCDT y, HCDT z, HCDT ax, HCDT ay, if(n1<0 && n2>=0) n1=gr->AddPnt(p1,c1,mglPoint(NAN),-1,2); if(n2<0 && n1>=0) n2=gr->AddPnt(p2,c2,mglPoint(NAN),-1,2); if(dot) { gr->line_plot(n1,n2); gr->mark_plot(n1,'.'); } - else gr->vect_plot(n1,n2); + else gr->vect_plot(n1,n2,gr->GetArrowSize()); } gr->EndGroup(); } @@ -501,26 +500,29 @@ void MGL_EXPORT mgl_vect3_(uintptr_t *gr, uintptr_t *ax, uintptr_t *ay, uintptr_ //----------------------------------------------------------------------------- void MGL_NO_EXPORT flow(mglBase *gr, double zVal, double u, double v, const mglData &x, const mglData &y, const mglData &ax, const mglData &ay, long ss, bool vv) { - long n=10*(ax.nx+ax.ny); + long n=100*(ax.nx+ax.ny); bool nboth = x.nx*x.ny!=ax.nx*ax.ny || y.nx*y.ny!=ax.nx*ax.ny; mglPoint *pp = new mglPoint[n], dp; mglPoint dx(1/fabs(gr->Max.x-gr->Min.x),1/fabs(gr->Max.y-gr->Min.y),1/fabs(gr->Max.z-gr->Min.z)); + mglPoint nx(ax.nx,ax.ny); - mreal dt = 0.5/(ax.nx > ax.ny ? ax.nx : ax.ny),e,f,g,ff[4],gg[4],h,s=2; + mreal dt = 0.5/(ax.nx > ax.ny ? ax.nx : ax.ny),e,f,g,ff[4],gg[4],h,s=2,acc=dt/20; if(u<0 || v<0) { dt = -dt; u = -u; v = -v; s *= -1;} - register long k=0,m; + long k=0; bool end = false; if(nboth) do{ mglPoint dif; pp[k].x = x.Spline1(dif,u,0,0); f = ax.Spline1(u,v,0)/dif.x; pp[k].y = y.Spline1(dif,v,0,0); g = ay.Spline1(u,v,0)/dif.x; pp[k].z = zVal; - for(m=0;mGetC(ss,s*h); if(h<1e-5) break; // stationary point - k++; + if(k==0 || mgl_anorm((pp[k]-pp[k-1])/nx)>=1) k++; // find next point by midpoint method h+=1; ff[0]=f*dt/h; gg[0]=g*dt/h; e = u+ff[0]/2; h = v+gg[0]/2; @@ -543,16 +545,18 @@ void MGL_NO_EXPORT flow(mglBase *gr, double zVal, double u, double v, const mglD else do{ mglPoint dif; register mreal xu,xv,yu,yv,det,xx,yy; - pp[k].x = x.Spline1(dif,u,v,0); xu=dif.x; xv=dif.y; - pp[k].y = y.Spline1(dif,u,v,0); yu=dif.x; yv=dif.y; - xx = ax.Spline1(u,v,0); yy = ay.Spline1(u,v,0); - det = xv*yu-xu*yv; f = (yy*xv-xx*yv)/det; g = (xx*yu-yy*xu)/det; + pp[k].x = x.Spline1(dif,u,v,0); xu=dif.x; xv=dif.y; + pp[k].y = y.Spline1(dif,u,v,0); yu=dif.x; yv=dif.y; + xx = ax.Spline1(u,v,0); yy = ay.Spline1(u,v,0); + det = xv*yu-xu*yv; f = (yy*xv-xx*yv)/det; g = (xx*yu-yy*xu)/det; pp[k].z = zVal; - for(m=0;mGetC(ss,s*h); if(h<1e-5) break; // stationary point - k++; + if(k==0 || mgl_anorm((pp[k]-pp[k-1])/nx)>=1) k++; // find next point by midpoint method h+=1; ff[0]=f*dt/h; gg[0]=g*dt/h; e = u+ff[0]/2; h = v+gg[0]/2; @@ -580,15 +584,15 @@ void MGL_NO_EXPORT flow(mglBase *gr, double zVal, double u, double v, const mglD } while(!end); if(k>1) { - long j,a=long(1./fabs(dt)); + long j,a=long(0.3*gr->GetArrowSize()/fabs(dt)); gr->Reserve(k); j = gr->AddPnt(pp[0],pp[0].c); for(long i=1;iAddPnt(pp[i],pp[i].c); if(vv && i%a==0) { - if(dt<0) gr->vect_plot(j,jj,a/5); - else gr->vect_plot(jj,j,a/5); + if(dt<0) gr->vect_plot(j,jj,a/3); + else gr->vect_plot(jj,j,a/3); } else gr->line_plot(jj,j); } @@ -615,7 +619,6 @@ void MGL_EXPORT mgl_flow_xy(HMGL gr, HCDT x, HCDT y, HCDT ax, HCDT ay, const cha { if(gr->NeedStop()) break; if(ax->GetNz()>1) zVal = gr->Min.z+(gr->Max.z-gr->Min.z)*mreal(k)/(ax->GetNz()-1); -//#pragma omp parallel for collapse(2) for(long i=0;iMax.x-gr->Min.x),1/fabs(gr->Max.y-gr->Min.y),1/fabs(gr->Max.z-gr->Min.z)); + mglPoint nx(ax.nx,ax.ny,ax.nz); nn = (ax.nx > ax.ny ? ax.nx : ax.ny); nn = (nn > ax.nz ? nn : ax.nz); - mreal dt = 0.2/nn, e,f,g,ee[4],ff[4],gg[4],h,s=2,u1,v1,w1; + mreal dt = 0.2/nn, e,f,g,ee[4],ff[4],gg[4],h,s=2,u1,v1,w1,acc=dt/20; if(u<0 || v<0 || w<0) { dt = -dt; u = -u; v = -v; w = -w; s *= -1;} - register long k=0,m; + long k=0; bool end = false; if(nboth) do{ mglPoint dif; pp[k].x = x.Spline1(dif,u,0,0); e = ax.Spline1(u,v,w)/dif.x; pp[k].y = y.Spline1(dif,v,0,0); f = ay.Spline1(u,v,w)/dif.x; pp[k].z = z.Spline1(dif,w,0,0); g = az.Spline1(u,v,w)/dif.x; - for(m=0;mGetC(ss,s*h); if(h<1e-5) break; // stationary point - k++; + if(k==0 || mgl_anorm((pp[k]-pp[k-1])/nx)>=1) k++; // find next point by midpoint method h+=1; ee[0]=e*dt/h; ff[0]=f*dt/h; gg[0]=g*dt/h; u1 = u+ee[0]/2; v1 = v+ff[0]/2; w1 = w+gg[0]/2; @@ -790,11 +796,13 @@ void flow(mglBase *gr, double u, double v, double w, const mglData &x, const mgl e = (-xv*yw*zz+xw*yv*zz+xv*yy*zw-xx*yv*zw-xw*yy*zv+xx*yw*zv)/det; f = (xu*yw*zz-xw*yu*zz-xu*yy*zw+xx*yu*zw+xw*yy*zu-xx*yw*zu)/det; g = (-xu*yv*zz+xv*yu*zz+xu*yy*zv-xx*yu*zv-xv*yy*zu+xx*yv*zu)/det; - for(m=0;mGetC(ss,s*h); if(h<1e-5) break; // stationary point - k++; + if(k==0 || mgl_anorm((pp[k]-pp[k-1])/nx)>=1) k++; // find next point by midpoint method h+=1; ee[0]=e*dt/h; ff[0]=f*dt/h; gg[0]=g*dt/h; u1 = u+ee[0]/2; v1 = v+ff[0]/2; w1 = w+gg[0]/2; @@ -835,14 +843,14 @@ void flow(mglBase *gr, double u, double v, double w, const mglData &x, const mgl } while(!end); if(k>1) { - long j,a=long(1./fabs(dt)); - mreal rr = mgl_norm(gr->Max-gr->Min)*gr->BarWidth/25, ll; + long j,a=long(gr->GetArrowSize()/fabs(dt)); + mreal rr = mgl_anorm(gr->Max-gr->Min)*gr->BarWidth/25, ll; mglPoint q1,q2,l; long n1=-1,n2=-1,n3=-1,n4=-1; gr->Reserve(4*k); j = gr->AddPnt(pp[0],pp[0].c); - l = pp[1] - pp[0]; l /= mgl_norm(l); - q1.Set(l.y,-l.x,0); ll = mgl_norm(q1); + l = pp[1] - pp[0]; l /= mgl_anorm(l); + q1.Set(l.y,-l.x,0); ll = mgl_anorm(q1); if(ll) q1 /= ll; else q1.Set(0,1,0); q2 = q1^l; if(xo) { n1 = gr->AddPnt(pp[0],-1,q2); n2 = gr->AddPnt(pp[0]+rr*q1,-1,q2); } @@ -852,12 +860,12 @@ void flow(mglBase *gr, double u, double v, double w, const mglData &x, const mgl long jj=j; j = gr->AddPnt(pp[i],pp[i].c); if(vv && i%a==0) { - if(dt<0) gr->vect_plot(j,jj,a/5); - else gr->vect_plot(jj,j,a/5); + if(dt<0) gr->vect_plot(j,jj,a/3); + else gr->vect_plot(jj,j,a/3); } else gr->line_plot(jj,j); - l = pp[i]-pp[i-1]; l /= mgl_norm(l); - q1 -= l*(l*q1); q1/= mgl_norm(q1); q2 = q1^l; + l = pp[i]-pp[i-1]; l /= mgl_anorm(l); + q1 -= l*(l*q1); q1/= mgl_anorm(q1); q2 = q1^l; long m1 = n1, m2 = n2, m3 = n3, m4 = n4; if(xo) { n1 = gr->AddPnt(pp[i],-1,q2); n2 = gr->AddPnt(pp[i]+rr*q1,-1,q2); gr->quad_plot(n1,n2,m1,m2); } @@ -880,7 +888,6 @@ void MGL_EXPORT mgl_flow_xyz(HMGL gr, HCDT x, HCDT y, HCDT z, HCDT ax, HCDT ay, bool vv = mglchr(sch,'v'), xo = mglchr(sch,'x'), zo = mglchr(sch,'z'); mglData xx(x), yy(y), zz(z), bx(ax), by(ay), bz(az); -//#pragma omp parallel for collapse(3) for(long i=0;iMax.x-gr->Min.x),1/fabs(gr->Max.y-gr->Min.y),1/fabs(gr->Max.z-gr->Min.z)); + mglPoint nx(ax.nx,ax.ny); - mreal dt = 0.5/(ax.nx > ax.ny ? ax.nx : ax.ny),e,f,g,ff[4],gg[4],h,s=2; + mreal dt = 0.5/(ax.nx > ax.ny ? ax.nx : ax.ny),e,f,g,ff[4],gg[4],h,s=2,acc=dt/20; mreal ss = 16./mgl_ipow(gr->Max.c - gr->Min.c,2); if(u<0 || v<0) { dt = -dt; u = -u; v = -v; s *= -1;} - register long k=0,m; + long k=0; bool end = false; if(nboth) do{ mglPoint dif; pp[k].x = x.Spline1(dif,u,0,0); f = ax.Spline1(u,v,0)/dif.x; pp[k].y = y.Spline1(dif,v,0,0); g = ay.Spline1(u,v,0)/dif.x; pp[k].z = zVal; - for(m=0;mGetC(sc,s*h); pp[k].c = r0>0 ? r0*sqrt(1e-2+ss*h*h)/2 : -r0/sqrt(1e-2+ss*h*h)/5; if(h<1e-5) break; // stationary point - k++; + if(k==0 || mgl_anorm((pp[k]-pp[k-1])/nx)>=1) k++; // find next point by midpoint method h+=1; ff[0]=f*dt/h; gg[0]=g*dt/h; e = u+ff[0]/2; h = v+gg[0]/2; @@ -1122,12 +1132,14 @@ void MGL_NO_EXPORT flowr(mglBase *gr, double zVal, double u, double v, const mgl xx = ax.Spline1(u,v,0); yy = ay.Spline1(u,v,0); det = xv*yu-xu*yv; f = (yy*xv-xx*yv)/det; g = (xx*yu-yy*xu)/det; pp[k].z = zVal; - for(m=0;mGetC(sc,s*h); pp[k].c = r0>0 ? r0*sqrt(1e-2+ss*h*h)/2 : -r0/sqrt(1e-2+ss*h*h)/5; if(h<1e-5) break; // stationary point - k++; + if(k==0 || mgl_anorm((pp[k]-pp[k-1])/nx)>=1) k++; // find next point by midpoint method h+=1; ff[0]=f*dt/h; gg[0]=g*dt/h; e = u+ff[0]/2; h = v+gg[0]/2; @@ -1211,7 +1223,6 @@ void MGL_EXPORT mgl_pipe_xy(HMGL gr, HCDT x, HCDT y, HCDT ax, HCDT ay, const cha { if(gr->NeedStop()) break; if(ax->GetNz()>1) zVal = gr->Min.z+(gr->Max.z-gr->Min.z)*mreal(k)/(ax->GetNz()-1); -//#pragma omp parallel for collapse(2) for(long i=0;iMax.x-gr->Min.x),1/fabs(gr->Max.y-gr->Min.y),1/fabs(gr->Max.z-gr->Min.z)); + mglPoint nx(ax.nx,ax.ny,ax.nz); nn = (ax.nx > ax.ny ? ax.nx : ax.ny); nn = (nn > ax.nz ? nn : ax.nz); - mreal dt = 0.2/nn, e,f,g,ee[4],ff[4],gg[4],h,s=2,u1,v1,w1; + mreal dt = 0.2/nn, e,f,g,ee[4],ff[4],gg[4],h,s=2,u1,v1,w1,acc=dt/20; mreal ss = 16./mgl_ipow(gr->Max.c - gr->Min.c,2); if(u<0 || v<0 || w<0) { dt = -dt; u = -u; v = -v; w = -w; s *= -1;} - register long k=0,m; + long k=0; bool end = false; if(nboth) do{ mglPoint dif; pp[k].x = x.Spline1(dif,u,0,0); e = ax.Spline1(u,v,w)/dif.x; pp[k].y = y.Spline1(dif,v,0,0); f = ay.Spline1(u,v,w)/dif.x; pp[k].z = z.Spline1(dif,w,0,0); g = az.Spline1(u,v,w)/dif.x; - for(m=0;mGetC(sc,s*h); pp[k].c = r0>0 ? r0*sqrt(1e-2+ss*h*h)/2 : -r0/sqrt(1e-2+ss*h*h)/5; if(h<1e-5) break; // stationary point - k++; + if(k==0 || mgl_anorm((pp[k]-pp[k-1])/nx)>=1) k++; // find next point by midpoint method h+=1; ee[0]=e*dt/h; ff[0]=f*dt/h; gg[0]=g*dt/h; u1 = u+ee[0]/2; v1 = v+ff[0]/2; w1 = w+gg[0]/2; @@ -1324,12 +1338,14 @@ void flowr(mglBase *gr, double u, double v, double w, const mglData &x, const mg e = (-xv*yw*zz+xw*yv*zz+xv*yy*zw-xx*yv*zw-xw*yy*zv+xx*yw*zv)/det; f = (xu*yw*zz-xw*yu*zz-xu*yy*zw+xx*yu*zw+xw*yy*zu-xx*yw*zu)/det; g = (-xu*yv*zz+xv*yu*zz+xu*yy*zv-xx*yu*zv-xv*yy*zu+xx*yv*zu)/det; - for(m=0;mGetC(sc,s*h); pp[k].c = r0>0 ? r0*sqrt(1e-2+ss*h*h)/2 : -r0/sqrt(1e-2+ss*h*h)/5; if(h<1e-5) break; // stationary point - k++; + if(k==0 || mgl_anorm((pp[k]-pp[k-1])/nx)>=1) k++; // find next point by midpoint method h+=1; ee[0]=e*dt/h; ff[0]=f*dt/h; gg[0]=g*dt/h; u1 = u+ee[0]/2; v1 = v+ff[0]/2; w1 = w+gg[0]/2; @@ -1420,7 +1436,6 @@ void MGL_EXPORT mgl_pipe_xyz(HMGL gr, HCDT x, HCDT y, HCDT z, HCDT ax, HCDT ay, bool cnt=!mglchr(sch,'#'); mglData xx(x), yy(y), zz(z), bx(ax), by(ay), bz(az); -//#pragma omp parallel for collapse(3) for(long i=0;i #include //----------------------------------------------------------------------------- +#include #include "prop_dlg.h" #include "udav_wnd.h" #include "plot_pnl.h" @@ -43,12 +44,13 @@ extern int defFontSize; extern QString pathHelp; extern bool mglAutoExecute; extern bool mglAutoSave; -extern bool mglAutoPure; +// extern bool mglAutoPure; extern bool mglCompleter; extern bool editPosBottom; extern bool loadInNewWnd; extern bool mglHighlight; extern bool mglDotsRefr; +extern bool mglWheelZoom; int defWidth, defHeight; QString pathFont; QString lang[]={"","ru"}; @@ -161,8 +163,10 @@ PropDialog::PropDialog(QWidget *parent) : QDialog(parent) load->setChecked(loadInNewWnd); v->addWidget(load); save = new QCheckBox(tr("Automatically save before redrawing (F5)"), this); save->setChecked(mglAutoSave); v->addWidget(save); - pure = new QCheckBox(tr("Disable face drawing (faster) for mouse rotation/shift/zoom."), this); - pure->setChecked(mglAutoPure); v->addWidget(pure); pure->setEnabled(false); +// pure = new QCheckBox(tr("Disable face drawing (faster) for mouse rotation/shift/zoom."), this); +// pure->setChecked(mglAutoPure); v->addWidget(pure); pure->setEnabled(false); + wheel = new QCheckBox(tr("Enable mouse wheel for zooming."), this); + wheel->setChecked(mglWheelZoom); v->addWidget(wheel); cmpl = new QCheckBox(tr("Enable keywords completition"), this); cmpl->setChecked(mglCompleter); v->addWidget(cmpl); high = new QCheckBox(tr("Highlight current object(s)"), this); @@ -231,9 +235,10 @@ void PropDialog::applyChanges() loadInNewWnd = load->isChecked(); mglAutoSave = save->isChecked(); mglHighlight = high->isChecked(); - mglAutoPure = pure->isChecked(); +// mglAutoPure = pure->isChecked(); mglCompleter = cmpl->isChecked(); mglDotsRefr = dots->isChecked(); + mglWheelZoom = wheel->isChecked(); // apply changes for all windows #ifdef WIN32 @@ -248,6 +253,7 @@ void PropDialog::applyChanges() if(ok) { s->writeSettings(); ok = false; } s->edit->setEditorFont(); s->graph->setMGLFont(pathFont); + s->graph->mgl->enableWheel = mglWheelZoom; s->setEditPos(editPosBottom); s->edit->setCompleter(mglCompleter); s->update(); diff --git a/udav/prop_dlg.h b/udav/prop_dlg.h index 22b58e3..193aaef 100644 --- a/udav/prop_dlg.h +++ b/udav/prop_dlg.h @@ -56,7 +56,7 @@ private: void setC(int k); QLabel *lbl; QPushButton *cb[10]; - QCheckBox *run, *edt, *load, *save, *pure, *cmpl, *high, *dots; + QCheckBox *run, *edt, *load, *save, *cmpl, *high, *dots, *wheel; //, *pure; QLineEdit *hlp, *defW, *defH; QFont defFont; QColor cc[10]; diff --git a/udav/qmglsyntax.cpp b/udav/qmglsyntax.cpp index c088d98..1534a49 100644 --- a/udav/qmglsyntax.cpp +++ b/udav/qmglsyntax.cpp @@ -114,7 +114,7 @@ MessSyntax::MessSyntax(QTextEdit *textEdit) : QSyntaxHighlighter(textEdit) {} //----------------------------------------------------------------------------- void MessSyntax::highlightBlock(const QString &text) { - if(text.left(7) == ("In line")) + if(text.contains("in line ")) setFormat(0, text.length(), QColor(255,0,0)); } //----------------------------------------------------------------------------- diff --git a/udav/text_pnl.cpp b/udav/text_pnl.cpp index 3ff5462..293c10b 100644 --- a/udav/text_pnl.cpp +++ b/udav/text_pnl.cpp @@ -78,6 +78,8 @@ TextPanel::TextPanel(QWidget *parent) : QWidget(parent) defFontSize = int(edit->fontPointSize()); edit->setLineWrapMode(QTextEdit::NoWrap); setCompleter(mglCompleter); + QFontMetrics metrics(edit->currentFont()); + edit->setTabStopWidth(4 * metrics.width(' ')); menu = new QMenu(tr("Edit"),this); QBoxLayout *v = new QVBoxLayout(this); @@ -256,7 +258,12 @@ void TextPanel::addStyle() } //----------------------------------------------------------------------------- void TextPanel::setEditorFont(QFont *f) -{ edit->setFont(f ? *f : QFont(defFontFamily, defFontSize)); } +{ + QFont d(defFontFamily, defFontSize); + edit->setFont(f ? *f : d); + QFontMetrics metrics(f ? *f : d); + edit->setTabStopWidth(4 * metrics.width(' ')); +} //----------------------------------------------------------------------------- QString TextPanel::selection() { return edit->textCursor().block().text(); } @@ -453,7 +460,7 @@ void TextPanel::load(const QString &fileName) graph->mgl->primitives = str.section("#----- End of QMathGL block -----\n",0,0); str = str.section("#----- End of QMathGL block -----\n",1); } - + if(narg>0) setCurrentFile(fileName.left(fileName.length()-3)+"mgl"); edit->setText(str); graph->animParseText(edit->toPlainText()); diff --git a/udav/textedit.cpp b/udav/textedit.cpp index ff16d95..7a04610 100644 --- a/udav/textedit.cpp +++ b/udav/textedit.cpp @@ -39,6 +39,7 @@ ****************************************************************************/ #include "textedit.h" +#include #include #include #include @@ -49,12 +50,22 @@ #include #include #include +#include + extern QColor mglColorScheme[10]; //----------------------------------------------------------------------------- TextEdit::TextEdit(QWidget *parent) : QTextEdit(parent) { c=0; connect(this, SIGNAL(cursorPositionChanged()), this, SLOT(highlight())); + // Line numbers + lineNumberArea = new LineNumberArea(this); + connect(document(), SIGNAL(blockCountChanged(int)), this, SLOT(updateLineNumberAreaWidth(int))); + connect(document(), SIGNAL(blockCountChanged(int)), this, SLOT(updateLineNumberArea(int))); + connect(verticalScrollBar(), SIGNAL(valueChanged(int)), this, SLOT(updateLineNumberArea(int))); + connect(this, SIGNAL(textChanged()), this, SLOT(updateLineNumberArea())); + connect(this, SIGNAL(cursorPositionChanged()), this, SLOT(updateLineNumberArea())); + updateLineNumberAreaWidth(0); } //----------------------------------------------------------------------------- void TextEdit::highlight() @@ -149,3 +160,166 @@ void TextEdit::keyPressEvent(QKeyEvent *e) c->complete(cr); // popup it up! } //----------------------------------------------------------------------------- +// +// Line numbering (slightly modified code of Gauthier Boaglio) +// Original: https://stackoverflow.com/questions/2443358/how-to-add-lines-numbers-to-qtextedit/ +// +//----------------------------------------------------------------------------- +int TextEdit::lineNumberAreaWidth() +{ + int digits = 1; + int max = qMax(1, document()->blockCount()); + while (max >= 10) { max /= 10; ++digits; } + int space = 13 + fontMetrics().width(QLatin1Char('9')) * (digits); + return space; +} +//----------------------------------------------------------------------------- +void TextEdit::updateLineNumberAreaWidth(int /* newBlockCount */) +{ setViewportMargins(lineNumberAreaWidth(), 0, 0, 0); } +//----------------------------------------------------------------------------- +void TextEdit::updateLineNumberArea(QRectF /*rect_f*/) +{ TextEdit::updateLineNumberArea(); } +//----------------------------------------------------------------------------- +void TextEdit::updateLineNumberArea(int /*slider_pos*/) +{ TextEdit::updateLineNumberArea(); } +//----------------------------------------------------------------------------- +void TextEdit::updateLineNumberArea() +{ + /* When the signal is emitted, the sliderPosition has been adjusted according to the action, + * but the value has not yet been propagated (meaning the valueChanged() signal was not yet emitted), + * and the visual display has not been updated. In slots connected to this signal you can thus safely + * adjust any action by calling setSliderPosition() yourself, based on both the action and the + * slider's value. */ + // Make sure the sliderPosition triggers one last time the valueChanged() signal with the actual value !!!! + verticalScrollBar()->setSliderPosition(verticalScrollBar()->sliderPosition()); + + // Since "QTextEdit" does not have an "updateRequest(...)" signal, we chose + // to grab the imformations from "sliderPosition()" and "contentsRect()". + // See the necessary connections used (Class constructor implementation part). + + QRect rect = contentsRect(); + lineNumberArea->update(0, rect.y(), lineNumberArea->width(), rect.height()); + updateLineNumberAreaWidth(0); + //---------- + int dy = verticalScrollBar()->sliderPosition(); + if (dy > -1) { + lineNumberArea->scroll(0, dy); + } + + // Addjust slider to alway see the number of the currently being edited line... + int first_block_id = getFirstVisibleBlockId(); + if (first_block_id == 0 || textCursor().block().blockNumber() == first_block_id-1) + verticalScrollBar()->setSliderPosition(dy-document()->documentMargin()); +} +//----------------------------------------------------------------------------- +void TextEdit::resizeEvent(QResizeEvent *e) +{ + QTextEdit::resizeEvent(e); + QRect cr = contentsRect(); + lineNumberArea->setGeometry(QRect(cr.left(), cr.top(), lineNumberAreaWidth(), cr.height())); +} +//----------------------------------------------------------------------------- +int TextEdit::getFirstVisibleBlockId() +{ + // Detect the first block for which bounding rect - once translated + // in absolute coordinated - is contained by the editor's text area + + // Costly way of doing but since "blockBoundingGeometry(...)" doesn't + // exists for "QTextEdit"... + + QTextCursor curs = QTextCursor(document()); + curs.movePosition(QTextCursor::Start); + for(int i=0; i < document()->blockCount(); ++i) + { + QTextBlock block = curs.block(); + + QRect r1 = viewport()->geometry(); + QRect r2 = document()->documentLayout()->blockBoundingRect(block).translated( + viewport()->geometry().x(), viewport()->geometry().y() - ( + verticalScrollBar()->sliderPosition() + ) ).toRect(); + + if (r1.contains(r2, true)) { return i; } + + curs.movePosition(QTextCursor::NextBlock); + } + + return 0; +} +//----------------------------------------------------------------------------- +void TextEdit::lineNumberAreaPaintEvent(QPaintEvent *event) +{ + verticalScrollBar()->setSliderPosition(verticalScrollBar()->sliderPosition()); + + QPainter painter(lineNumberArea); + painter.fillRect(event->rect(), Qt::lightGray); + int blockNumber = getFirstVisibleBlockId(); + + QTextBlock block = document()->findBlockByNumber(blockNumber); + QTextBlock prev_block = (blockNumber > 0) ? document()->findBlockByNumber(blockNumber-1) : block; + int translate_y = (blockNumber > 0) ? -verticalScrollBar()->sliderPosition() : 0; + + int top = viewport()->geometry().top(); + + // Adjust text position according to the previous "non entirely visible" block + // if applicable. Also takes in consideration the document's margin offset. + int additional_margin; + if (blockNumber == 0) // Simply adjust to document's margin + additional_margin = (int) document()->documentMargin() -1 - verticalScrollBar()->sliderPosition(); + else // Getting the height of the visible part of the previous "non entirely visible" block + additional_margin = (int) document()->documentLayout()->blockBoundingRect(prev_block) + .translated(0, translate_y).intersected(viewport()->geometry()).height(); + top += additional_margin; // Shift the starting point + + int bottom = top + (int) document()->documentLayout()->blockBoundingRect(block).height(); + + QColor colErr(255, 0, 0); // Error line + QColor colCur(0, 128, 255); // Current line + QColor colDef(0,0,0); // Other lines + + // Draw the numbers (displaying the current line number in green) + while (block.isValid() && top <= event->rect().bottom()) + { + if (block.isVisible() && bottom >= event->rect().top()) + { + QString number = QString::number(blockNumber + 1); + painter.setPen(QColor(120, 120, 120)); + painter.setPen((textCursor().blockNumber() == blockNumber) ? colCur : + (isErrLine(blockNumber+1)?colErr:colDef) ); + painter.drawText(-5, top, lineNumberArea->width(), fontMetrics().height(), Qt::AlignRight, number); + } + + block = block.next(); + top = bottom; + bottom = top + (int) document()->documentLayout()->blockBoundingRect(block).height(); + blockNumber++; + } +} +//----------------------------------------------------------------------------- +bool TextEdit::isErrLine(int line) const +{ + for(size_t i=0;ilineNumberAreaWidth(), 0); } +//----------------------------------------------------------------------------- +void LineNumberArea::paintEvent(QPaintEvent *event) +{ codeEditor->lineNumberAreaPaintEvent(event); } +//----------------------------------------------------------------------------- diff --git a/udav/textedit.h b/udav/textedit.h index 85b9c12..6a54db9 100644 --- a/udav/textedit.h +++ b/udav/textedit.h @@ -52,19 +52,46 @@ public: TextEdit(QWidget *parent = 0); void setCompleter(QCompleter *c); QCompleter *completer() const { return c; } - + int getFirstVisibleBlockId(); + void lineNumberAreaPaintEvent(QPaintEvent *event); + int lineNumberAreaWidth(); + +public slots: + void resizeEvent(QResizeEvent *e); + void setErrMessage(const QString &s); + protected: void keyPressEvent(QKeyEvent *e); void focusInEvent(QFocusEvent *e); - + bool isErrLine(int line) const; + private slots: void insertCompletion(const QString &completion); void highlight(); + void updateLineNumberAreaWidth(int newBlockCount); + void updateLineNumberArea(QRectF /*rect_f*/); + void updateLineNumberArea(int /*slider_pos*/); + void updateLineNumberArea(); private: QString textUnderCursor() const; QCompleter *c; + QWidget *lineNumberArea; + std::vector err; }; +//----------------------------------------------------------------------------- +class LineNumberArea : public QWidget +{ + Q_OBJECT +public: + LineNumberArea(TextEdit *editor); + QSize sizeHint() const; +protected: + void paintEvent(QPaintEvent *event); +private: + TextEdit *codeEditor; +}; + //----------------------------------------------------------------------------- #endif // TEXTEDIT_H //----------------------------------------------------------------------------- diff --git a/udav/udav.desktop b/udav/udav.desktop index 3565b80..4c06fe3 100755 --- a/udav/udav.desktop +++ b/udav/udav.desktop @@ -4,9 +4,10 @@ Type=Application Terminal=false Icon=udav Name=UDAV -Exec=udav +Exec=udav %f MimeType=text/mgl; Comment=Data handling and plotting tool Comment[en_US]=Data handling and plotting tool Comment[ru_RU]=Обработка и отображение данных Categories=Education;Science;Math; +Keywords=Visualization;Data;Array; \ No newline at end of file diff --git a/udav/udav_wnd.cpp b/udav/udav_wnd.cpp index 66087cd..9ce96a6 100644 --- a/udav/udav_wnd.cpp +++ b/udav/udav_wnd.cpp @@ -53,9 +53,10 @@ bool editPosBottom = false; bool mglAutoSave = false; bool mglHighlight = true; bool mglDotsRefr = true; -bool mglAutoPure = true; +// bool mglAutoPure = true; bool mglCompleter = true; bool loadInNewWnd = false; +bool mglWheelZoom = false; QString pathHelp; extern mglParse parser; extern QColor mglColorScheme[10]; @@ -132,6 +133,7 @@ int main(int argc, char **argv) mw->load(codec->toUnicode(argv[1]), true); } mw->show(); + mw->edit->edit->setFocus(); a.connect(&a, SIGNAL(lastWindowClosed()), &a, SLOT(quit())); if(showHint) udavShowHint(mw); return a.exec(); @@ -161,7 +163,7 @@ MainWindow::MainWindow(QWidget *wp) : QMainWindow(wp) rtab->setMovable(true); rtab->setTabPosition(QTabWidget::South); messWnd = new QDockWidget(tr("Messages and warnings"),this); - mess = new TextEdit(this); messWnd->setWidget(mess); + mess = new QTextEdit(this); messWnd->setWidget(mess); messWnd->setAllowedAreas(Qt::TopDockWidgetArea | Qt::BottomDockWidgetArea); addDockWidget(Qt::BottomDockWidgetArea, messWnd); messWnd->resize(size().width(), 0); new MessSyntax(mess); @@ -217,6 +219,7 @@ MainWindow::MainWindow(QWidget *wp) : QMainWindow(wp) edit = new TextPanel(this); edit->graph = graph; graph->textMGL = edit->edit; connect(graph->mgl,SIGNAL(showWarn(QString)),mess,SLOT(setText(QString))); + connect(graph->mgl,SIGNAL(showWarn(QString)),edit->edit,SLOT(setErrMessage(QString))); connect(graph,SIGNAL(clearWarn()),mess,SLOT(clear())); ltab->addTab(edit,QPixmap(":/png/text-plain.png"),tr("Script")); @@ -471,12 +474,13 @@ void MainWindow::writeSettings() settings.setValue("/autoSave", mglAutoSave); settings.setValue("/highlight", mglHighlight); settings.setValue("/dotsRefresh", mglDotsRefr); - settings.setValue("/autoPure", mglAutoPure); +// settings.setValue("/autoPure", mglAutoPure); settings.setValue("/editAtTop", editPosBottom); settings.setValue("/fontFamily", defFontFamily); settings.setValue("/fontSize", defFontSize); settings.setValue("/loadInNewWnd", loadInNewWnd); settings.setValue("/completer", mglCompleter); + settings.setValue("/wheelZoom", mglWheelZoom); settings.endGroup(); } //----------------------------------------------------------------------------- @@ -506,18 +510,20 @@ void MainWindow::readSettings() mglColorScheme[7] = QColor(settings.value("/colFCKeyword","#007F7F").toString()); mglColorScheme[8] = QColor(settings.value("/colReserved", "#0000FF").toString()); mglColorScheme[9] = QColor(settings.value("/colCurrLine", "#FFFFCC").toString()); - mglAutoSave = settings.value("/autoSave", false).toBool(); - mglHighlight = settings.value("/highlight", true).toBool(); - mglAutoPure = settings.value("/autoPure", true).toBool(); - mglAutoExecute = settings.value("/autoExec", true).toBool(); + mglAutoSave = settings.value("/autoSave", false).toBool(); + mglHighlight = settings.value("/highlight", true).toBool(); +// mglAutoPure = settings.value("/autoPure", true).toBool(); + mglAutoExecute = settings.value("/autoExec", true).toBool(); editPosBottom = settings.value("/editAtTop", false).toBool(); - mglCompleter = settings.value("/completer", true).toBool(); + mglCompleter = settings.value("/completer", true).toBool(); + mglWheelZoom = settings.value("/wheelZoom", false).toBool(); loadInNewWnd = settings.value("/loadInNewWnd", false).toBool(); mglDotsRefr = settings.value("/dotsRefresh", true).toBool(); defFontFamily = settings.value("/fontFamily", "Georgia").toString(); defFontSize = settings.value("/fontSize", 10).toInt(); edit->setEditorFont(); setEditPos(editPosBottom); graph->setMGLFont(pathFont); + graph->mgl->enableWheel = mglWheelZoom; defWidth = settings.value("/defWidth", 640).toInt(); defHeight = settings.value("/defHeight", 480).toInt(); diff --git a/utils/CMakeLists.txt b/utils/CMakeLists.txt index b6e5bea..8b04bf1 100644 --- a/utils/CMakeLists.txt +++ b/utils/CMakeLists.txt @@ -24,11 +24,11 @@ if(enable-qt) if(enable-qt5) include(../cmake-qt5.txt) target_link_libraries(mglview mgl-qt5) - qt5_use_modules(mglview Core Widgets Gui PrintSupport) + qt5_use_modules(mglview ${MGL_QT5_LIBS}) else(enable-qt5) include(../cmake-qt4.txt) target_link_libraries(mglview mgl-qt4) - target_link_libraries(mglview ${QT_LIBRARIES}) + qt4_use_modules(mglview ${MGL_QT4_LIBS}) endif(enable-qt5) install( diff --git a/utils/make_bin.cpp b/utils/make_bin.cpp index ac9a44c..44d25ee 100644 --- a/utils/make_bin.cpp +++ b/utils/make_bin.cpp @@ -24,11 +24,10 @@ int main(int argc, char *argv[]) { mglFont fnt; std::string path, base, fname; - char ch; while(1) { - ch = getopt(argc, argv, "p:o:h"); + int ch = getopt(argc, argv, "p:o:h"); if(ch=='p') path = optarg; else if(ch=='o') fname = optarg; else if(ch=='h' || (ch==-1 && optind>=argc)) @@ -39,11 +38,10 @@ int main(int argc, char *argv[]) "\t-p path set specific path for base font files\n" "\t-o fname set output filename (use ${base}.vfmb by default)\n" "\t-h print this message\n" ); - ch = 'h'; break; + return 0; } else if(ch==-1 && optind var; std::wstring str; bool none=false; while(1) { - ch = getopt(argc, argv, "1:2:3:4:5:6:7:8:9:hno:L:C:A:s:S:q:"); + int ch = getopt(argc, argv, "1:2:3:4:5:6:7:8:9:hno:L:C:A:s:S:q:"); if(ch>='1' && ch<='9') p.AddParam(ch-'0', optarg); else if(ch=='s') { @@ -89,13 +89,12 @@ int main(int argc, char *argv[]) "\t-C n1:n2 add animation value in range [n1,n2] with step 1\n" "\t- get script from standard input\n" "\t-h print this message\n" ); - ch = 'h'; break; + return 0; } else if(ch=='o') strncpy(oname, optarg,256); else if(ch==-1 && optind='1' && ch<='9') p.AddParam(ch-'0', optarg); else if(ch=='s') { @@ -69,12 +69,11 @@ int main(int argc, char **argv) "\t-L loc set locale to loc\n" "\t- get script from standard input\n" "\t-h print this message\n" ); - ch = 'h'; break; + return 0; } else if(ch==-1 && optind(GR); if(!gg) return; - if(mgl_use_graph(gr,-1)<1) mgl_delete_graph(gr); + if(gr && mgl_use_graph(gr,-1)<1) mgl_delete_graph(gr); gr=gg; mgl_use_graph(gg,1); gr->SetEventFunc(mgl_fltk_event_func, NULL); } @@ -378,7 +378,7 @@ void Fl_MGLView::update() } void MGL_NO_EXPORT mgl_draw_cb(Fl_Widget*, void* v) { if(v) ((Fl_MGLView*)v)->update(); } -void mglCanvasFL::Update() { mgl->update(); } +void mglCanvasFL::Update() { mgl->update(); Wnd->show(); } //----------------------------------------------------------------------------- void MGL_NO_EXPORT mgl_export_png_cb(Fl_Widget*, void* v) { @@ -649,7 +649,7 @@ Fl_MGLView::~Fl_MGLView() {} // //----------------------------------------------------------------------------- mglCanvasFL::mglCanvasFL() : mglCanvasWnd() { Wnd=0; } -mglCanvasFL::~mglCanvasFL() { if(Wnd) delete Wnd; } +mglCanvasFL::~mglCanvasFL() { if(Wnd) { mgl->FMGL->gr=0; delete Wnd; } } //----------------------------------------------------------------------------- void mglCanvasFL::GotoFrame(int d) { diff --git a/widgets/qt.cpp b/widgets/qt.cpp index ad6bb1b..e371e45 100644 --- a/widgets/qt.cpp +++ b/widgets/qt.cpp @@ -82,27 +82,7 @@ void MGL_EXPORT mgl_ask_qt(const wchar_t *quest, wchar_t *res) { QInputDialog::getText(QApplication::activeWindow(), "MathGL", QString::fromWCharArray(quest)).toWCharArray(res); } //----------------------------------------------------------------------------- -// -// class QMathGL -// -//----------------------------------------------------------------------------- -/// Internal class to be used for multi-threading plotting -/*class mglTask : public QObject -{ - Q_OBJECT -public: - mglCanvas *gr; ///< Built-in mglCanvasQT-er instance (used by default) - void *draw_par; ///< Parameters for drawing function mglCanvasWnd::DrawFunc. - /// Drawing function for window procedure. It should return the number of frames. - int (*draw_func)(mglBase *gr, void *par); - mglDraw *draw; ///< Class for drawing -- need to call directly due to inheritance mechanism -public slots: - void doWork(); -signals: - void plotDone(); -}; -//----------------------------------------------------------------------------- -void mglTask::doWork() +/*void mglTask::doWork() { setlocale(LC_NUMERIC, "C"); if(mgl_is_frames(gr)) mgl_new_frame(gr); @@ -142,7 +122,7 @@ QMathGL::QMathGL(QWidget *parent, Qt::WindowFlags f) : QWidget(parent, f) QMathGL::~QMathGL() { timer->stop(); timerRefr->stop(); - if(mgl_use_graph(gr,-1)<1) mgl_delete_graph(gr); + if(gr && mgl_use_graph(gr,-1)<1) mgl_delete_graph(gr); if(grBuf) delete []grBuf; if(draw) delete draw; } @@ -988,7 +968,7 @@ void QMathGL::addText(QString txt) mglCanvasQT::mglCanvasQT() : mglCanvasWnd() { Wnd = 0; } mglCanvasQT::~mglCanvasQT() -{ if(Wnd) delete Wnd; } +{ if(Wnd) { QMGL->gr=0; delete Wnd; } } //----------------------------------------------------------------------------- void mglCanvasQT::GotoFrame(int d) { @@ -1009,13 +989,13 @@ void mglCanvasQT::ToggleAlpha() { QMGL->setAlpha(!QMGL->getAlpha()); } //----------------------------------------------------------------------------- void mglCanvasQT::ToggleLight() { QMGL->setLight(!QMGL->getLight()); } //----------------------------------------------------------------------------- -void mglCanvasQT::ToggleNo() { QMGL->restore(); } +void mglCanvasQT::ToggleNo() { QMGL->restore(); } //----------------------------------------------------------------------------- void mglCanvasQT::ToggleZoom() { QMGL->setZoom(!QMGL->getZoom()); } //----------------------------------------------------------------------------- void mglCanvasQT::ToggleRotate(){ QMGL->setRotate(!QMGL->getRotate());} //----------------------------------------------------------------------------- -void mglCanvasQT::Update() { SetCurFig(0); QMGL->update(); } +void mglCanvasQT::Update() { SetCurFig(0); QMGL->update(); Wnd->show(); } //----------------------------------------------------------------------------- void mglCanvasQT::Adjust() { QMGL->adjust(); } //----------------------------------------------------------------------------- diff --git a/widgets/qt4/CMakeLists.txt b/widgets/qt4/CMakeLists.txt index 00affe5..569f931 100644 --- a/widgets/qt4/CMakeLists.txt +++ b/widgets/qt4/CMakeLists.txt @@ -1,71 +1,29 @@ include(GenerateExportHeader) add_compiler_export_flags() -function(libmglqt mglqt) - add_library(mgl-${mglqt} SHARED ${MGL_QT_FILES}) - add_library(mgl-${mglqt}-static STATIC ${MGL_QT_FILES}) - set_target_properties(mgl-${mglqt} PROPERTIES SOVERSION ${MathGL_SOVERSION}) - set_target_properties(mgl-${mglqt} PROPERTIES CLEAN_DIRECT_OUTPUT 1) - set_target_properties(mgl-${mglqt} PROPERTIES DEFINE_SYMBOL "mgl_EXPORTS") - set_target_properties(mgl-${mglqt}-static PROPERTIES CLEAN_DIRECT_OUTPUT 1) - target_compile_definitions(mgl-${mglqt}-static PUBLIC MGL_STATIC_DEFINE) - target_link_libraries(mgl-${mglqt} mgl) - target_link_libraries(mgl-${mglqt} ${QT_LIBRARIES}) - - if(enable-mgl2) - set_target_properties(mgl-${mglqt} PROPERTIES OUTPUT_NAME "mgl2-${mglqt}") - set_target_properties(mgl-${mglqt}-static PROPERTIES OUTPUT_NAME "mgl2-${mglqt}") - else(enable-mgl2) - set_target_properties(mgl-${mglqt}-static PROPERTIES OUTPUT_NAME "mgl-${mglqt}") - endif(enable-mgl2) - - install( - TARGETS mgl-${mglqt} mgl-${mglqt}-static - RUNTIME DESTINATION bin - ARCHIVE DESTINATION ${MGL_LIB_INSTALL_DIR} - LIBRARY DESTINATION ${MGL_LIB_INSTALL_DIR} - ) -endfunction(libmglqt mglqt) if(enable-qt4) include(../../cmake-qt4.txt) - qt4_wrap_cpp(MGL_MOC_FILES ../../include/mgl2/qmathgl.h) - set(MGL_QT_FILES ../qt.cpp ${MGL_MOC_FILES} ../../include/mgl2/qt.h ../../include/mgl2/qmathgl.h) - libmglqt(qt4) + set(MGL_QT4_FILES ../qt.cpp ../../include/mgl2/qt.h ../../include/mgl2/qmathgl.h) + mgl_add_lib(qt4 ${MGL_QT4_FILES}) + qt4_use_modules(mgl-qt4 ${MGL_QT4_LIBS}) + qt4_use_modules(mgl-qt4-static ${MGL_QT4_LIBS}) + target_link_libraries(mgl-qt4 mgl) + target_link_libraries(mgl-qt4-static mgl) if(NOT enable-qt5asqt) - libmglqt(qt) + mgl_add_lib(qt ${MGL_QT4_FILES}) + qt4_use_modules(mgl-qt ${MGL_QT4_LIBS}) + qt4_use_modules(mgl-qt-static ${MGL_QT4_LIBS}) + target_link_libraries(mgl-qt mgl) + target_link_libraries(mgl-qt-static mgl) endif(NOT enable-qt5asqt) if(MGL_HAVE_FLTK AND NOT enable-qt5) - include_directories(${FLTK_INCLUDE_DIR}) - - set(MGL_WND_SRC ${MGL_QT_FILES} ../fltk.cpp ../../include/mgl2/fltk.h) - - add_library(mgl-wnd SHARED ${MGL_WND_SRC}) - add_library(mgl-wnd-static STATIC ${MGL_WND_SRC}) - - set_target_properties(mgl-wnd PROPERTIES SOVERSION ${MathGL_SOVERSION}) - set_target_properties(mgl-wnd PROPERTIES CLEAN_DIRECT_OUTPUT 1) - set_target_properties(mgl-wnd PROPERTIES DEFINE_SYMBOL "mgl_EXPORTS") - set_target_properties(mgl-wnd-static PROPERTIES CLEAN_DIRECT_OUTPUT 1) - target_compile_definitions(mgl-wnd-static PUBLIC MGL_STATIC_DEFINE) - if(enable-mgl2) - set_target_properties(mgl-wnd PROPERTIES OUTPUT_NAME "mgl2-wnd") - set_target_properties(mgl-wnd-static PROPERTIES OUTPUT_NAME "mgl2-wnd") - else(enable-mgl2) - set_target_properties(mgl-wnd-static PROPERTIES OUTPUT_NAME "mgl-wnd") - endif(enable-mgl2) - - target_link_libraries(mgl-wnd mgl) - target_link_libraries(mgl-wnd ${QT_LIBRARIES}) - target_link_libraries(mgl-wnd ${FLTK_LIBRARIES}) - - install( - TARGETS mgl-wnd mgl-wnd-static - RUNTIME DESTINATION bin - ARCHIVE DESTINATION ${MGL_LIB_INSTALL_DIR} - LIBRARY DESTINATION ${MGL_LIB_INSTALL_DIR} - ) + mgl_add_lib(wnd ${MGL_QT4_FILES} ../fltk.cpp ../../include/mgl2/fltk.h) + target_include_directories(mgl-wnd SYSTEM PUBLIC ${FLTK_INCLUDE_DIR}) + target_include_directories(mgl-wnd-static SYSTEM PUBLIC ${FLTK_INCLUDE_DIR}) + qt4_use_modules(mgl-wnd ${MGL_QT4_LIBS}) + qt4_use_modules(mgl-wnd-static ${MGL_QT4_LIBS}) + target_link_libraries(mgl-wnd mgl ${FLTK_LIBRARIES}) + target_link_libraries(mgl-wnd-static mgl ${FLTK_LIBRARIES}) endif(MGL_HAVE_FLTK AND NOT enable-qt5) -else(enable-qt4) - set(MGL_HAVE_QT4 0) endif(enable-qt4) diff --git a/widgets/qt5/CMakeLists.txt b/widgets/qt5/CMakeLists.txt index da87a6b..dcc30e5 100644 --- a/widgets/qt5/CMakeLists.txt +++ b/widgets/qt5/CMakeLists.txt @@ -1,72 +1,28 @@ include(GenerateExportHeader) add_compiler_export_flags() -function(libmglqt mglqt) - add_library(mgl-${mglqt} SHARED ${MGL_QT_FILES}) - add_library(mgl-${mglqt}-static STATIC ${MGL_QT_FILES}) - set_target_properties(mgl-${mglqt} PROPERTIES SOVERSION ${MathGL_SOVERSION}) - set_target_properties(mgl-${mglqt} PROPERTIES CLEAN_DIRECT_OUTPUT 1) - set_target_properties(mgl-${mglqt} PROPERTIES DEFINE_SYMBOL "mgl_EXPORTS") - set_target_properties(mgl-${mglqt}-static PROPERTIES CLEAN_DIRECT_OUTPUT 1) - target_compile_definitions(mgl-${mglqt}-static PUBLIC MGL_STATIC_DEFINE) - target_link_libraries(mgl-${mglqt} mgl) - qt5_use_modules(mgl-${mglqt} Core Widgets Gui PrintSupport) - qt5_use_modules(mgl-${mglqt}-static Core Widgets Gui PrintSupport) - if(enable-mgl2) - set_target_properties(mgl-${mglqt} PROPERTIES OUTPUT_NAME "mgl2-${mglqt}") - set_target_properties(mgl-${mglqt}-static PROPERTIES OUTPUT_NAME "mgl2-${mglqt}") - else(enable-mgl2) - set_target_properties(mgl-${mglqt}-static PROPERTIES OUTPUT_NAME "mgl-${mglqt}") - endif(enable-mgl2) - install( - TARGETS mgl-${mglqt} mgl-${mglqt}-static - RUNTIME DESTINATION bin - ARCHIVE DESTINATION ${MGL_LIB_INSTALL_DIR} - LIBRARY DESTINATION ${MGL_LIB_INSTALL_DIR} - ) -endfunction(libmglqt mglqt) - if(enable-qt5) include(../../cmake-qt5.txt) - qt5_wrap_cpp(MGL_MOC_FILES ../../include/mgl2/qmathgl.h) - set(MGL_QT_FILES ../qt.cpp ${MGL_MOC_FILES} ../../include/mgl2/qt.h ../../include/mgl2/qmathgl.h) - libmglqt(qt5) + set(MGL_QT5_FILES ../qt.cpp ../../include/mgl2/qt.h ../../include/mgl2/qmathgl.h) + mgl_add_lib(qt5 ${MGL_QT5_FILES}) + qt5_use_modules(mgl-qt5 ${MGL_QT5_LIBS}) + qt5_use_modules(mgl-qt5-static ${MGL_QT5_LIBS}) + target_link_libraries(mgl-qt5 mgl) + target_link_libraries(mgl-qt5-static mgl) if(enable-qt5asqt) - libmglqt(qt) + mgl_add_lib(qt ${MGL_QT5_FILES}) + qt5_use_modules(mgl-qt ${MGL_QT5_LIBS}) + qt5_use_modules(mgl-qt-static ${MGL_QT5_LIBS}) + target_link_libraries(mgl-qt mgl) + target_link_libraries(mgl-qt-static mgl) endif(enable-qt5asqt) - if(MGL_HAVE_FLTK) - include_directories(${FLTK_INCLUDE_DIR}) - - set(MGL_WND_SRC ${MGL_QT_FILES} ../fltk.cpp ../../include/mgl2/fltk.h) - - add_library(mgl-wnd SHARED ${MGL_WND_SRC}) - add_library(mgl-wnd-static STATIC ${MGL_WND_SRC}) - - set_target_properties(mgl-wnd PROPERTIES SOVERSION ${MathGL_SOVERSION}) - set_target_properties(mgl-wnd PROPERTIES CLEAN_DIRECT_OUTPUT 1) - set_target_properties(mgl-wnd PROPERTIES DEFINE_SYMBOL "mgl_EXPORTS") - set_target_properties(mgl-wnd-static PROPERTIES CLEAN_DIRECT_OUTPUT 1) - target_compile_definitions(mgl-wnd-static PUBLIC MGL_STATIC_DEFINE) - if(enable-mgl2) - set_target_properties(mgl-wnd PROPERTIES OUTPUT_NAME "mgl2-wnd") - set_target_properties(mgl-wnd-static PROPERTIES OUTPUT_NAME "mgl2-wnd") - else(enable-mgl2) - set_target_properties(mgl-wnd-static PROPERTIES OUTPUT_NAME "mgl-wnd") - endif(enable-mgl2) - - target_link_libraries(mgl-wnd mgl) - qt5_use_modules(mgl-wnd Core Widgets Gui PrintSupport) - qt5_use_modules(mgl-wnd-static Core Widgets Gui PrintSupport) - target_link_libraries(mgl-wnd ${FLTK_LIBRARIES}) - - install( - TARGETS mgl-wnd mgl-wnd-static - RUNTIME DESTINATION bin - ARCHIVE DESTINATION ${MGL_LIB_INSTALL_DIR} - LIBRARY DESTINATION ${MGL_LIB_INSTALL_DIR} - ) + mgl_add_lib(wnd ${MGL_QT5_FILES} ../fltk.cpp ../../include/mgl2/fltk.h) + target_include_directories(mgl-wnd SYSTEM PUBLIC ${FLTK_INCLUDE_DIR}) + target_include_directories(mgl-wnd-static SYSTEM PUBLIC ${FLTK_INCLUDE_DIR}) + qt5_use_modules(mgl-wnd ${MGL_QT5_LIBS}) + qt5_use_modules(mgl-wnd-static ${MGL_QT5_LIBS}) + target_link_libraries(mgl-wnd mgl ${FLTK_LIBRARIES}) + target_link_libraries(mgl-wnd-static mgl ${FLTK_LIBRARIES}) endif(MGL_HAVE_FLTK) -else(enable-qt5) - set(MGL_HAVE_QT5 0) endif(enable-qt5) -- 2.30.2