cmake_minimum_required(VERSION 3.1.0)
if(POLICY CMP0078)
- cmake_policy(SET CMP0078 OLD)
+ cmake_policy(SET CMP0078 NEW)
endif()
if(POLICY CMP0086)
- cmake_policy(SET CMP0086 OLD)
+ cmake_policy(SET CMP0086 NEW)
+endif()
+if(POLICY CMP0127)
+ cmake_policy(SET CMP0127 NEW)
endif()
project( MathGL2 )
endif(NOT CMAKE_BUILD_TYPE)
set(CMAKE_VERBOSE_MAKEFILE ON)
-set(MathGL_VERSION_MAJOR 2)
-set(MathGL_VERSION_MINOR 5)
+set(MathGL_VERSION_MAJOR 8)
+set(MathGL_VERSION_MINOR 0)
set(MathGL_PATCH_VERSION 0)
set(MathGL_VERSION ${MathGL_VERSION_MAJOR}.${MathGL_VERSION_MINOR}.${MathGL_PATCH_VERSION})
-set(MathGL_SOVERSION 7.6.0)
+set(MathGL_SOVERSION 8.0)
string(TIMESTAMP MathGL_DATE UTC)
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
CMAKE_DEPENDENT_OPTION(enable-glut "Enable glut support" OFF "NOT enable-all-widgets" ON)
CMAKE_DEPENDENT_OPTION(enable-fltk "Enable fltk widget" OFF "NOT enable-all-widgets" ON)
CMAKE_DEPENDENT_OPTION(enable-wx "Enable wxWidget widget" OFF "NOT enable-all-widgets" ON)
-CMAKE_DEPENDENT_OPTION(enable-qt "Enable Qt4 and/or Qt5 widget(s)" OFF "NOT enable-all-widgets" ON)
-option(enable-qt4 "Enable Qt4 widget" OFF)
-CMAKE_DEPENDENT_OPTION(enable-qt4asqt "Set Qt4 as default libmgl-qt" OFF "enable-qt4" OFF)
-option(enable-qt5 "Enable Qt5 widget" OFF)
+#CMAKE_DEPENDENT_OPTION(enable-qt "Enable Qt4 and/or Qt5 widget(s)" OFF "NOT enable-all-widgets" ON)
+CMAKE_DEPENDENT_OPTION(enable-qt "Enable Qt5 widget" OFF "NOT enable-all-widgets" ON)
+#option(enable-qt5 "Enable Qt5 widget" OFF)
CMAKE_DEPENDENT_OPTION(enable-qt5asqt "Set Qt5 as default libmgl-qt" OFF "enable-qt5" OFF)
CMAKE_DEPENDENT_OPTION(enable-freetype "Enable freetype support" OFF "NOT enable-all" ON)
set(PY3VERSION_DOTTED "3.8" CACHE STRING "Used python version")
unset(CMAKE_REQUIRED_FLAGS)
endif(${CMAKE_SIZEOF_VOID_P} EQUAL 4)
+#if(enable-qt)
+# if(Qt4_FOUND)
+# set(enable-qt4 ON)
+# find_package(Qt5 COMPONENTS Widgets)
+# set(enable-qt5 ON)
+# endif(Qt5Widgets_FOUND)
+# else(Qt4_FOUND)
+# set(enable-qt5 ON)
+# endif(Qt4_FOUND)
+#endif(enable-qt)
if(enable-qt)
- FIND_PACKAGE(Qt4 4.8)
- if(Qt4_FOUND)
- set(enable-qt4 ON)
- find_package(Qt5 COMPONENTS Widgets)
- if(Qt5Widgets_FOUND)
- set(enable-qt5 ON)
- endif(Qt5Widgets_FOUND)
- else(Qt4_FOUND)
- set(enable-qt5 ON)
- endif(Qt4_FOUND)
+ find_package(Qt5 COMPONENTS Widgets)
+ set(enable-qt5 ON)
+ if(NOT Qt5Widgets_FOUND)
+ message(SEND_ERROR "Couldn't find Qt5 widgets.")
+ endif(NOT Qt5Widgets_FOUND)
endif(enable-qt)
if(enable-qt4 OR enable-qt5)
+8.0 Released 1 January 2022
+
+* Change version numbering according Debian rules.
+* Add accurate line segment and quadrangle/triangle face cutting at axis border crossing.
+* Add 'fastcut' for disable accurate but slow line/trig/quad primitives cutting at axis borders.
+* Restore back transparent background by default. You can set non-transparent background by using 'clf' or 'background' functions.
+* Compatibility changes for Qt5.15 and MSVC.
+INCOMPATIBLE:
+* Change colorbar C-functions by adding last argument for options.
+* Add alpha-value in fill_background().
+* Disable Qt4 interface by default.
+
2.5 Released 8 December 2021
* Add 'keep' for keeping the data phase/sign or value along line i and j in given direction
int height = 600;\r
int big = 0;\r
int srnd = 0;\r
+int fastcut = 0;\r
int use_mgl = 0;\r
int verbose = 0;\r
int quality = MGL_DRAW_NORM;\r
void save(mglGraph *gr,const char *name,const char *suf);\r
void test(mglGraph *gr)\r
{\r
-// gr->Box(); gr->WritePNG("1.png"); return;\r
- \r
mglParse par;\r
- par.Execute(gr,"colorbar;size -2;crange 0 1;value 90");\r
+ par.Execute(gr,"plot [0,-1,nan,0.1,0.5,1.1] 'o'"); //fplot 'x'"); //"box:fplot '2*sin(pi*x)' 'ko'");\r
+// par.Execute(gr,"colorbar;size -2;crange 0 1;value 90");\r
// par.Execute(gr,"fplot 'x';legend 'рус':legend");\r
// par.Execute(gr,"fsurf 'x*y':rasterize:clf:fplot 'sin(x)' '2q':axis");\r
// par.Execute(gr,"xrange 0 1:new x 10 '3*x':echo x\nnew a 10 'value([0,1,-1],3*x)':echo a\nnew b 10 'spline([0,1,-1],3*x)':echo b");\r
{ "list", no_argument, NULL, 'l' },\r
{ "mgl", no_argument, &use_mgl, 1 },\r
{ "srnd", no_argument, &srnd, 1 },\r
+ { "fast", no_argument, &fastcut, 1 },\r
\r
{ "png", no_argument, &type, 0 },\r
{ "eps", no_argument, &type, 1 },\r
delete gr; return 0; }\r
else if(dotest==3)\r
{\r
+ gr->SetFastCut(fastcut);\r
int qual[7]={0,1,2,4,5,6,8};\r
size_t ll=strlen(mmgl_dat_prepare)+1;\r
mglParse par;\r
gr->VertexColor(false); gr->Compression(false);\r
if(name[0]==0)\r
{\r
+ gr->SetFastCut(fastcut);\r
while(s->name[0]) // all samples\r
{\r
if(!strcmp(s->name,"icon")) { s++; continue; }\r
}\r
else // manual sample\r
{\r
+ gr->SetFastCut(fastcut);\r
mglSample tst; tst.name=name;\r
int i=0;\r
for(i=0;samp[i].name[0];i++); // determine the number of samples\r
else if(ch=='o') fname = optarg;
else if(ch=='h' || (ch==-1 && optind>=argc))
{
- printf("make_bin convert mgl font to binary file.\nCurrent version is 2.%g\n",MGL_VER2);
+ printf("make_bin convert mgl font to binary file.\nCurrent version is %s\n",MGL_VER_STRING);
printf("Usage:\tmake_bin [parameter(s)] base\n");
printf(
"\t-p path set specific path for base font files\n"
#ifndef _MGL_CONFIG_H_
#define _MGL_CONFIG_H_
-#define MGL_VER2 ${MathGL_VERSION_MINOR}.${MathGL_PATCH_VERSION} // minor version of MathGL 2.* (like 1.3 for v.2.1.3)
+//#define MGL_VER2 ${MathGL_VERSION_MINOR}.${MathGL_PATCH_VERSION} // minor version of MathGL 2.* (like 1.3 for v.2.1.3)
#define MGL_VER_MAJOR ${MathGL_VERSION_MAJOR}
#define MGL_VER_MINOR ${MathGL_VERSION_MINOR}
#define MGL_VER_PATCH ${MathGL_PATCH_VERSION}
};\r
//-----------------------------------------------------------------------------\r
/// List of user-defined data arrays\r
+#ifndef MGL_WIDGETS_DLL\r
MGL_EXPORT extern std::vector<mglDataA*> mglDataList;\r
+#else\r
+__declspec(dllimport) extern std::vector<mglDataA*> mglDataList;\r
+#endif\r
//-----------------------------------------------------------------------------\r
/// Abstract class for data array\r
class MGL_EXPORT mglDataA\r
dat = new T*[(size_t)1<<MGL_PB];\r
*dat = new T[(size_t)1<<MGL_PB]; reserve(st.n);\r
for(size_t i=0;i<nb;i++)\r
- memcpy(dat[i],st.dat[i],((size_t)1<<MGL_PB)*sizeof(T));\r
+ memcpy((void*)(dat[i]),st.dat[i],((size_t)1<<MGL_PB)*sizeof(T));\r
n=st.n; }\r
mglStack()\r
{ mutex = 0; n=0; nb=1; MGL_PB = mgl_bsize(0);\r
{\r
clear(); reserve(st.n);\r
for(size_t i=0;i<nb;i++)\r
- memcpy(dat[i],st.dat[i],((size_t)1<<MGL_PB)*sizeof(T));\r
+ memcpy((void*)(dat[i]),st.dat[i],((size_t)1<<MGL_PB)*sizeof(T));\r
n = st.n; return st;\r
}\r
};\r
/// Structure for transformation matrix\r
struct MGL_EXPORT mglMatrix\r
{\r
- float x,y,z,pf;\r
- float b[9];\r
+ float x,y,z,pf; // shifting values\r
+ float b[9]; // matrix coefficients\r
+ float ib[9]; // inverse matrix coefficients\r
bool norot; // flag to disable pnts rotation\r
mglMatrix() { clear(); }\r
- mglMatrix(const mglMatrix &aa) : x(aa.x),y(aa.y),z(aa.z),pf(aa.pf),norot(aa.norot) { memcpy(b,aa.b,9*sizeof(float)); }\r
+ mglMatrix(const mglMatrix &aa) : x(aa.x),y(aa.y),z(aa.z),pf(aa.pf),norot(aa.norot)\r
+ { memcpy(b,aa.b,9*sizeof(float)); memcpy(ib,aa.ib,9*sizeof(float)); }\r
void Rotate(mreal tetz,mreal tetx,mreal tety);\r
void RotateN(mreal Tet,mreal x,mreal y,mreal z);\r
- inline void clear() { x=y=z=pf=0; memset(b,0,9*sizeof(float)); b[0]=b[4]=b[8]=1; norot=false; }\r
+ inline void clear()\r
+ { x=y=z=pf=0; memset(b,0,9*sizeof(float)); memset(ib,0,9*sizeof(float)); b[0]=b[4]=b[8]=ib[0]=ib[4]=ib[8]=1; norot=false; }\r
inline const mglMatrix &operator=(const mglMatrix &a)\r
- { x=a.x; y=a.y; z=a.z; pf=a.pf; memcpy(b,a.b,9*sizeof(float)); norot=false; return a; }\r
+ { x=a.x; y=a.y; z=a.z; pf=a.pf; memcpy(b,a.b,9*sizeof(float)); memcpy(ib,a.ib,9*sizeof(float)); norot=false; return a; }\r
+ inline void invert()\r
+ { float d = b[0]*(b[4]*b[8]-b[5]*b[7])-b[1]*(b[3]*b[8]-b[5]*b[6])+b[2]*(b[3]*b[7]-b[4]*b[6]); // determinant\r
+ ib[0] = (b[4]*b[8]-b[5]*b[7])/d; ib[1] = (b[2]*b[7]-b[1]*b[8])/d; ib[2] = (b[1]*b[5]-b[2]*b[4])/d;\r
+ ib[3] = (b[5]*b[6]-b[3]*b[8])/d; ib[4] = (b[0]*b[8]-b[2]*b[6])/d; ib[5] = (b[2]*b[3]-b[0]*b[5])/d;\r
+ ib[6] = (b[3]*b[7]-b[4]*b[6])/d; ib[7] = (b[1]*b[6]-b[0]*b[7])/d; ib[8] = (b[0]*b[4]-b[1]*b[3])/d; }\r
};\r
inline bool operator==(const mglMatrix &a, const mglMatrix &b)\r
{ return ((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y)+(a.z-b.z)*(a.z-b.z)+(a.pf-b.pf)*(a.pf-b.pf)==0)&&!memcmp(b.b,a.b,9*sizeof(float));}\r
mglPrim(const mglPrim &aa) : n1(aa.n1),n2(aa.n2),n3(aa.n3),n4(aa.n4),type(aa.type),angl(aa.angl),id(aa.id),z(aa.z),w(aa.w),m(aa.m) {}\r
const mglPrim &operator=(const mglPrim &aa)\r
{ n1=aa.n1; n2=aa.n2; n3=aa.n3; n4=aa.n4; type=aa.type; angl=aa.angl; id=aa.id; z=aa.z; w=aa.w; m=aa.m; return aa; }\r
+#if MGL_HAVE_RVAL\r
+ mglPrim(mglPrim &&aa) : n1(aa.n1),n2(aa.n2),n3(aa.n3),n4(aa.n4),type(aa.type),angl(aa.angl),id(aa.id),z(aa.z),w(aa.w),m(aa.m) {}\r
+#endif\r
};\r
bool operator<(const mglPrim &a,const mglPrim &b);\r
bool operator>(const mglPrim &a,const mglPrim &b);\r
int id; ///< object id\r
\r
mglBlock():n1(0),n2(0),n3(0),n4(0),AmbBr(0.5),DifBr(0.5),id(0) {}\r
- mglBlock(const mglBlock &aa) { memcpy(this, &aa, sizeof(mglBlock)); }\r
+ mglBlock(const mglBlock &aa) { memcpy((void*)this, &aa, sizeof(mglBlock)); }\r
const mglBlock &operator=(const mglBlock &aa)\r
{ n1=aa.n1; n2=aa.n2; n3=aa.n3; n4=aa.n4; for(int i=0;i<10;i++) light[i]=aa.light[i];\r
AmbBr=aa.AmbBr; DifBr=aa.DifBr; B=aa.B; id=aa.id; return aa; }\r
mglPnt(const mglPnt &aa) : sub(aa.sub) { memcpy(dat,aa.dat,15*sizeof(float)); }\r
inline const mglPnt&operator=(const mglPnt &aa) { sub=aa.sub; memcpy(dat,aa.dat,15*sizeof(float)); return aa; }\r
inline bool same(const mglPnt &p, mreal d) const { return fabs(x-p.x)<d && fabs(y-p.y)<d; }\r
+#if MGL_HAVE_RVAL\r
+ mglPnt(mglPnt &&d):x(d.x),y(d.y),z(d.z),u(d.u),v(d.v),w(d.w),r(d.r),g(d.g),b(d.b),a(d.a),xx(d.xx),yy(d.yy),zz(d.zz),c(d.c),ta(d.ta),sub(d.sub) {}\r
+#endif\r
};\r
inline mglPnt operator+(const mglPnt &a, const mglPnt &b)\r
//{ mglPnt p; for(long i=0;i<10;i++) p.dat[i] = a.dat[i]+b.dat[i]; p.sub=a.sub; return p; }\r
{ col = new mglColor[MGL_TEXTURE_COLOURS]; Set(cols,smooth,alpha); }\r
mglTexture(const mglTexture &aa) : n(aa.n),Smooth(aa.Smooth),Alpha(aa.Alpha)\r
{ col = new mglColor[MGL_TEXTURE_COLOURS]; memcpy(Sch,aa.Sch,260);\r
- memcpy(col,aa.col,MGL_TEXTURE_COLOURS*sizeof(mglColor));\r
- c0 = new mglColor[2*aa.n]; memcpy(c0,aa.c0,2*aa.n*sizeof(mglColor));\r
+ memcpy((void*)col,aa.col,MGL_TEXTURE_COLOURS*sizeof(mglColor));\r
+ c0 = new mglColor[2*aa.n]; memcpy((void*)c0,aa.c0,2*aa.n*sizeof(mglColor));\r
val = new float[aa.n]; memcpy(val,aa.val,aa.n*sizeof(float)); }\r
#if MGL_HAVE_RVAL\r
mglTexture(mglTexture &&aa) : n(aa.n),c0(aa.c0),val(aa.val),Smooth(aa.Smooth),Alpha(aa.Alpha)\r
void GetRGBAOBJ(unsigned char *f) const; // Export repeating border colors, since OBJ by default wraps textures and we need an extra boundary to work around implementation quirks\r
inline const mglTexture &operator=(const mglTexture &aa)\r
{ n=aa.n; Smooth=aa.Smooth; Alpha=aa.Alpha;\r
- memcpy(col,aa.col,MGL_TEXTURE_COLOURS*sizeof(mglColor));\r
+ memcpy((void*)col,aa.col,MGL_TEXTURE_COLOURS*sizeof(mglColor));\r
memcpy(Sch,aa.Sch,260); return aa; }\r
};\r
//-----------------------------------------------------------------------------\r
/// Structure for drawing region\r
struct MGL_EXPORT mglDrawReg\r
{\r
- mglDrawReg() { memset(this,0,sizeof(mglDrawReg)); }\r
+ mglDrawReg() : PDef(0),angle(0),ObjId(0),PenWidth(0),pPos(0) ,x1(0),x2(0),y1(0),y2(0) {}\r
mglDrawReg(const mglDrawReg &aa) : PDef(aa.PDef),angle(aa.angle),ObjId(aa.ObjId),PenWidth(aa.PenWidth),pPos(aa.pPos) ,x1(aa.x1),x2(aa.x2),y1(aa.y1),y2(aa.y2) {}\r
#if MGL_HAVE_RVAL\r
mglDrawReg(mglDrawReg &&aa) : PDef(aa.PDef),angle(aa.angle),ObjId(aa.ObjId),PenWidth(aa.PenWidth),pPos(aa.pPos) ,x1(aa.x1),x2(aa.x2),y1(aa.y1),y2(aa.y2) {}\r
void Labelw(char dir, const wchar_t *text, mreal pos=0, const char *opt="");\r
\r
/// Draw colorbar at edge of axis\r
- void Colorbar(const char *sch=0);\r
- void Colorbar(const char *sch, mreal x, mreal y, mreal w, mreal h);\r
+ void Colorbar(const char *sch=0, const char *opt=0);\r
+ void Colorbar(const char *sch, mreal x, mreal y, mreal w, mreal h, const char *opt=0);\r
/// Draw colorbar at edge of axis for manual colors\r
- void Colorbar(HCDT v, const char *sch=0);\r
- void Colorbar(HCDT v, const char *sch, mreal x, mreal y, mreal w, mreal h);\r
+ void Colorbar(HCDT v, const char *sch=0, const char *opt=0);\r
+ void Colorbar(HCDT v, const char *sch, mreal x, mreal y, mreal w, mreal h, const char *opt=0);\r
\r
/// Draw legend of accumulated strings at position (x, y) by font with size\r
inline void Legend(mreal x, mreal y, const char *font="#", const char *opt="")\r
bool ScalePoint(const mglMatrix *M, mglPoint &p, mglPoint &n, bool use_nan=true) const;\r
void LightScale(const mglMatrix *M); ///< Additionally scale positions of light sources\r
void LightScale(const mglMatrix *M, mglLight &l); ///< Additionally scale positions of light\r
+ /// Add crossing point at the boundary and straight line between q1, q2. At this q1 should be inside.\r
+ long AddPairBnd(const mglPnt &q1, const mglPnt &q2);\r
/// Push drawing data (for frames only). NOTE: can be VERY large\r
long PushDrwDat();\r
/// Retur color for primitive depending lighting\r
float pen_delta; ///< delta pen width (dpw) -- the size of semi-transparent region for lines, marks, ...\r
\r
/// Draw generic colorbar\r
- void colorbar(HCDT v, const mreal *s, int where, mreal x, mreal y, mreal w, mreal h, bool text);\r
+ void colorbar(HCDT v, const mreal *s, int where, mreal x, mreal y, mreal w, mreal h, bool text, const char *opt=0);\r
/// Draw labels for ticks\r
void DrawLabels(mglAxis &aa, bool inv=false, const mglMatrix *M=0);\r
/// Get label style\r
* ‘+’ for printing ‘+’ for positive ticks;\r
* ‘-’ for printing usual ‘-’ in ticks labels;\r
* ‘0123456789’ for precision at printing ticks labels.*/\r
-void MGL_EXPORT mgl_colorbar(HMGL gr, const char *sch);\r
-void MGL_EXPORT mgl_colorbar_(uintptr_t *gr, const char *sch,int);\r
+void MGL_EXPORT mgl_colorbar(HMGL gr, const char *sch, const char *opt);\r
+void MGL_EXPORT mgl_colorbar_(uintptr_t *gr, const char *sch, const char *opt,int,int);\r
/// Draw colorbar at manual position\r
/** Parameter \a sch may contain:\r
* ‘<>^_’ for positioning at left, at right, at top or at bottom correspondingly;\r
* ‘+’ for printing ‘+’ for positive ticks;\r
* ‘-’ for printing usual ‘-’ in ticks labels;\r
* ‘0123456789’ for precision at printing ticks labels.*/\r
-void MGL_EXPORT mgl_colorbar_ext(HMGL gr, const char *sch, double x, double y, double w, double h);\r
-void MGL_EXPORT mgl_colorbar_ext_(uintptr_t *gr, const char *sch, mreal *x, mreal *y, mreal *w, mreal *h,int);\r
+void MGL_EXPORT mgl_colorbar_ext(HMGL gr, const char *sch, double x, double y, double w, double h, const char *opt);\r
+void MGL_EXPORT mgl_colorbar_ext_(uintptr_t *gr, const char *sch, mreal *x, mreal *y, mreal *w, mreal *h, const char *opt, int,int);\r
/// Draw colorbar with manual colors at edge of axis\r
/** Parameter \a sch may contain:\r
* ‘<>^_’ for positioning at left, at right, at top or at bottom correspondingly;\r
* ‘+’ for printing ‘+’ for positive ticks;\r
* ‘-’ for printing usual ‘-’ in ticks labels;\r
* ‘0123456789’ for precision at printing ticks labels.*/\r
-void MGL_EXPORT mgl_colorbar_val(HMGL gr, HCDT dat, const char *sch);\r
-void MGL_EXPORT mgl_colorbar_val_(uintptr_t *gr, uintptr_t *dat, const char *sch,int);\r
+void MGL_EXPORT mgl_colorbar_val(HMGL gr, HCDT dat, const char *sch, const char *opt);\r
+void MGL_EXPORT mgl_colorbar_val_(uintptr_t *gr, uintptr_t *dat, const char *sch, const char *opt,int,int);\r
/// Draw colorbar with manual colors at manual position\r
/** Parameter \a sch may contain:\r
* ‘<>^_’ for positioning at left, at right, at top or at bottom correspondingly;\r
* ‘+’ for printing ‘+’ for positive ticks;\r
* ‘-’ for printing usual ‘-’ in ticks labels;\r
* ‘0123456789’ for precision at printing ticks labels.*/\r
-void MGL_EXPORT mgl_colorbar_val_ext(HMGL gr, HCDT dat, const char *sch,double x, double y, double w, double h);\r
-void MGL_EXPORT mgl_colorbar_val_ext_(uintptr_t *gr, uintptr_t *dat, const char *sch, mreal *x, mreal *y, mreal *w, mreal *h,int);\r
+void MGL_EXPORT mgl_colorbar_val_ext(HMGL gr, HCDT dat, const char *sch,double x, double y, double w, double h, const char *opt);\r
+void MGL_EXPORT mgl_colorbar_val_ext_(uintptr_t *gr, uintptr_t *dat, const char *sch, mreal *x, mreal *y, mreal *w, mreal *h, const char *opt, int,int);\r
\r
/// Add string to legend\r
void MGL_EXPORT mgl_add_legend(HMGL gr, const char *text,const char *style);\r
void MGL_EXPORT mgl_clf_nfog_(uintptr_t *gr);\r
/// Clear up the frame and fill background by specified color\r
void MGL_EXPORT mgl_clf_rgb(HMGL gr, double r, double g, double b);\r
+void MGL_EXPORT mgl_clf_rgba(HMGL gr, double r, double g, double b, double a);\r
void MGL_EXPORT mgl_clf_rgb_(uintptr_t *gr, mreal *r, mreal *g, mreal *b);\r
+void MGL_EXPORT mgl_clf_rgba_(uintptr_t *gr, mreal *r, mreal *g, mreal *b, mreal *a);\r
/// Clear up the frame and fill background by specified color\r
void MGL_EXPORT mgl_clf_chr(HMGL gr, char col);\r
void MGL_EXPORT mgl_clf_chr_(uintptr_t *gr, const char *col, int);\r
void MGL_EXPORT mgl_load_background_ext(HMGL gr, const char *fname, const char *how, double alpha);\r
void MGL_EXPORT mgl_load_background_ext_(uintptr_t *gr, const char *fname, const char *how, mreal *alpha, int,int);\r
/// Fill background by specified color. Colors r,g,b should be in range [0,1].\r
-void MGL_EXPORT mgl_fill_background(HMGL gr, double r, double g, double b);\r
-void MGL_EXPORT mgl_fill_background_(uintptr_t *gr, double *r, double *g, double *b);\r
+void MGL_EXPORT mgl_fill_background(HMGL gr, double r, double g, double b, double a);\r
+void MGL_EXPORT mgl_fill_background_(uintptr_t *gr, double *r, double *g, double *b, double *a);\r
\r
/// Put further plotting in m-th cell of nx*ny grid of the image.\r
/** String \a style may contain:\r
#else\r
#define MGL_FUNC_CONST\r
#define MGL_FUNC_PURE\r
+#define MGL_FUNC_INIT\r
+#define MGL_FUNC_FINI\r
#endif\r
+\r
#define MGL_EXPORT_CONST MGL_EXPORT MGL_FUNC_CONST\r
#define MGL_EXPORT_PURE MGL_EXPORT MGL_FUNC_PURE\r
#define MGL_LOCAL_CONST MGL_NO_EXPORT MGL_FUNC_CONST\r
#define getcwd _getcwd\r
#define chdir _chdir // BORLAND has chdir\r
#endif\r
+#if (_MSC_VER<1500)\r
#define snprintf _snprintf\r
+#endif\r
#if (_MSC_VER<1600) // based on https://hg.python.org/cpython/rev/9aedb876c2d7\r
#define hypot _hypot\r
#endif\r
#define MGL_GRAY_MODE 0x00200000 ///< Convert all colors to gray ones\r
#define MGL_FULL_CURV 0x00400000 ///< Disable omitting points in straight-line part(s).\r
#define MGL_NO_SCALE_REL 0x00800000 ///< Disable font scaling in relative inplots\r
+#define MGL_FAST_PRIM 0x01000000 ///< Disable accurate primitive cutting at axis borders\r
//-----------------------------------------------------------------------------\r
#ifdef __cplusplus\r
#include <string>\r
/// Set to draw tick labels at axis origin\r
inline void SetOriginTick(bool enable=true)\r
{ mgl_set_flag(gr,!enable, MGL_NO_ORIGIN); }\r
+ /// Disable accurate but slower primitive cutting at axis borders\r
+ inline void SetFastCut(bool enable) { mgl_set_flag(gr,enable, MGL_FAST_PRIM); }\r
/// Set bit-value flag of HMGL state (for advanced users only)\r
inline void SetFlagAdv(int val, uint32_t flag)\r
{ mgl_set_flag(gr, val, flag); }\r
\r
/// Clear up the frame and fill background by specified color\r
inline void Clf(double r, double g, double b) { mgl_clf_rgb(gr, r, g, b); }\r
+ /// Clear up the frame and fill background by specified color\r
+ inline void Clf(double r, double g, double b, double a) { mgl_clf_rgba(gr, r, g, b, a); }\r
+ /// Clear up the frame and fill background by specified color\r
+ inline void Clf(mglColor c) { mgl_clf_rgba(gr, c.r, c.g, c.b, c.a); }\r
/// Clear up the frame and fill background by specified color with manual transparency\r
inline void Clf(const char *col) { mgl_clf_str(gr, col); }\r
/// Clear up the frame and fill background by specified color\r
{ mgl_load_background_ext(gr,fname,how,alpha); }\r
/// Fill background image by specified color. Colors r,g,b should be in range [0,1].\r
inline void FillBackground(const mglColor &cc)\r
- { mgl_fill_background(gr, cc.r,cc.g,cc.b); }\r
+ { mgl_fill_background(gr, cc.r,cc.g,cc.b,cc.a); }\r
/// Force drawing the image and use it as background one\r
inline void Rasterize() { mgl_rasterize(gr); }\r
\r
* ‘+’ for printing ‘+’ for positive ticks;\r
* ‘-’ for printing usual ‘-’ in ticks labels;\r
* ‘0123456789’ for precision at printing ticks labels.*/\r
- inline void Colorbar(const char *sch="")\r
- { mgl_colorbar(gr, sch); }\r
+ inline void Colorbar(const char *sch="", const char *opt="")\r
+ { mgl_colorbar(gr, sch, opt); }\r
/// Draw colorbar at manual position\r
/** Parameter \a sch may contain:\r
* ‘<>^_’ for positioning at left, at right, at top or at bottom correspondingly;\r
* ‘+’ for printing ‘+’ for positive ticks;\r
* ‘-’ for printing usual ‘-’ in ticks labels;\r
* ‘0123456789’ for precision at printing ticks labels.*/\r
- inline void Colorbar(const char *sch,double x,double y,double w=1,double h=1)\r
- { mgl_colorbar_ext(gr, sch, x,y,w,h); }\r
+ inline void Colorbar(const char *sch,double x,double y,double w=1,double h=1, const char *opt="")\r
+ { mgl_colorbar_ext(gr, sch, x,y,w,h, opt); }\r
/// Draw colorbar with manual colors at edge of axis\r
/** Parameter \a sch may contain:\r
* ‘<>^_’ for positioning at left, at right, at top or at bottom correspondingly;\r
* ‘+’ for printing ‘+’ for positive ticks;\r
* ‘-’ for printing usual ‘-’ in ticks labels;\r
* ‘0123456789’ for precision at printing ticks labels.*/\r
- inline void Colorbar(const mglDataA &val, const char *sch="")\r
- { mgl_colorbar_val(gr, &val, sch); }\r
+ inline void Colorbar(const mglDataA &val, const char *sch="", const char *opt="")\r
+ { mgl_colorbar_val(gr, &val, sch, opt); }\r
/// Draw colorbar with manual colors at manual position\r
/** Parameter \a sch may contain:\r
* ‘<>^_’ for positioning at left, at right, at top or at bottom correspondingly;\r
* ‘+’ for printing ‘+’ for positive ticks;\r
* ‘-’ for printing usual ‘-’ in ticks labels;\r
* ‘0123456789’ for precision at printing ticks labels.*/\r
- inline void Colorbar(const mglDataA &val, const char *sch,double x,double y,double w=1,double h=1)\r
- { mgl_colorbar_val_ext(gr, &val, sch, x,y,w,h); }\r
+ inline void Colorbar(const mglDataA &val, const char *sch,double x,double y,double w=1,double h=1, const char *opt="")\r
+ { mgl_colorbar_val_ext(gr, &val, sch, x,y,w,h, opt); }\r
\r
/// Add string to legend\r
inline void AddLegend(const char *text,const char *style)\r
class QTimer;\r
class mglCanvas;\r
class mglTask;\r
+#if MGL_FORCE_QT4\r
+#define angleDelta() delta()\r
+#define setPageOrientation(a) setOrientation(a)\r
+#define horizontalAdvance(a) width(a)\r
+#define asprintf(a) sprintf(a)\r
+#define setTabStopWidth(a) setTabStopDistance(a) \r
+#define QPageLayout QPrinter\r
+#endif\r
//-----------------------------------------------------------------------------\r
/// Class is Qt widget which display MathGL graphics\r
class MGL_EXPORT QMathGL : public QWidget\r
inline mreal val(int i) const { mreal dat[4]={x,y,z,c}; return dat[i]; }
inline mreal norm() const { return sqrt(x*x+y*y+z*z); }
inline void Normalize() { mreal v=norm(); x/=v; y/=v; z/=v; }
+ inline bool same(const mglPoint &a) const // NOTE: exact comparison is used here
+ { return (a.x-x)*(a.x-x)+(a.y-y)*(a.y-y)==0; }
inline const mglPoint &operator=(const mglPoint &p)
{ x=p.x; y=p.y; z=p.z; c=p.c; return p; }
int y = (int)xy.section(" ",1,1).toDouble();
mglPoint p = gr.CalcXYZ(x,y);
QString res;
- res.sprintf("x = %g, y = %g, z = %g for point (%d, %d)\n", p.x, p.y, p.z, x,y);
+ res.asprintf("x = %g, y = %g, z = %g for point (%d, %d)\n", p.x, p.y, p.z, x,y);
qDebug() << res+"\nask"+xy;
return res+"\nask"+xy;
}
SWIG_ADD_LIBRARY(mathgl LANGUAGE python SOURCES mathgl.i)
endif(${CMAKE_VERSION} VERSION_LESS "3.8.0")
SWIG_LINK_LIBRARIES(mathgl mgl ${PYTHON_LIBRARIES})
- set_target_properties(_mathgl PROPERTIES BUILD_WITH_INSTALL_RPATH ON)
+ set_target_properties(mathgl PROPERTIES BUILD_WITH_INSTALL_RPATH ON)
add_custom_command(OUTPUT mathgl.pyc
COMMAND ${PYTHON_EXECUTABLE}
ARGS -c \"from py_compile import compile\; compile('mathgl.py') \"
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/lang
- DEPENDS _mathgl
+ DEPENDS mathgl
)
- add_custom_target(mgl_python_module ALL DEPENDS _mathgl mathgl.pyc)
+ add_custom_target(mgl_python_module ALL DEPENDS mathgl mathgl.pyc)
- install(FILES ${MathGL2_BINARY_DIR}/lang/mathgl.py ${MathGL2_BINARY_DIR}/lang/__pycache__/mathgl.cpython-${PY3VERSION_NODOT}.pyc DESTINATION ${MGL_PYTHON_SITE_PACKAGES}/mathgl/__pycache__)
- install (TARGETS _mathgl LIBRARY DESTINATION ${MGL_PYTHON_SITE_PACKAGES}/mathgl)
+ install(FILES ${MathGL2_BINARY_DIR}/lang/mathgl.py ${MathGL2_BINARY_DIR}/lang/__pycache__/mathgl.cpython-${PYTHON_VERSION_MAJOR}${PYTHON_VERSION_MINOR}.pyc DESTINATION ${MGL_PYTHON_SITE_PACKAGES}/mathgl/__pycache__)
+ install (TARGETS mathgl LIBRARY DESTINATION ${MGL_PYTHON_SITE_PACKAGES}/mathgl)
set(mgl_clean_files ${mgl_clean_files} mathgl.py)
endif(enable-python)
/// Set to draw tick labels at axis origin
inline void SetOriginTick(bool enable=true)
{ mgl_set_flag(gr,!enable, MGL_NO_ORIGIN); }
+ /// Disable accurate primitive cutting at axis borders
+ inline void SetFastCut(bool enable) { mgl_set_flag(gr,enable, MGL_FAST_PRIM); }
/// Set bit-value flag of HMGL state (for advanced users only)
inline void SetFlagAdv(int val, uint32_t flag)
{ mgl_set_flag(gr, val, flag); }
/// Clear up the frame and fill background by specified color
inline void Clf(double r, double g, double b) { mgl_clf_rgb(gr, r, g, b); }
+ /// Clear up the frame and fill background by specified color
+ inline void Clf(double r, double g, double b, double a) { mgl_clf_rgba(gr, r, g, b, a); }
+ /// Clear up the frame and fill background by specified color
+ inline void Clf(mglColor c) { mgl_clf_rgba(gr, c.r, c.g, c.b, c.a); }
/// Clear up the frame and fill background by specified color with manual transparency
inline void Clf(const char *col) { mgl_clf_str(gr, col); }
/// Clear up the frame and fill background by specified color
/// Draw user-defined symbol in position p along direction d
inline void Symbol(mglPoint p, mglPoint d, char id, const char *how="", double size=-1)
{ mgl_symbol_dir(gr, p.x, p.y, p.z, d.x, d.y, d.z, id, how, size); }
+
/// Print text in position p with specified font
inline void Putsw(mglPoint p,const wchar_t *text,const char *font=":C",double size=-1)
{ mgl_putsw(gr, p.x, p.y, p.z, text, font, size); }
* ‘+’ for printing ‘+’ for positive ticks;
* ‘-’ for printing usual ‘-’ in ticks labels;
* ‘0123456789’ for precision at printing ticks labels.*/
- inline void Colorbar(const char *sch="")
- { mgl_colorbar(gr, sch); }
+ inline void Colorbar(const char *sch="", const char *opt="")
+ { mgl_colorbar(gr, sch, opt); }
/// Draw colorbar at manual position
/** Parameter \a sch may contain:
* ‘<>^_’ for positioning at left, at right, at top or at bottom correspondingly;
* ‘+’ for printing ‘+’ for positive ticks;
* ‘-’ for printing usual ‘-’ in ticks labels;
* ‘0123456789’ for precision at printing ticks labels.*/
- inline void Colorbar(const char *sch,double x,double y,double w=1,double h=1)
- { mgl_colorbar_ext(gr, sch, x,y,w,h); }
+ inline void Colorbar(const char *sch,double x,double y,double w=1,double h=1, const char *opt="")
+ { mgl_colorbar_ext(gr, sch, x,y,w,h, opt); }
/// Draw colorbar with manual colors at edge of axis
/** Parameter \a sch may contain:
* ‘<>^_’ for positioning at left, at right, at top or at bottom correspondingly;
* ‘+’ for printing ‘+’ for positive ticks;
* ‘-’ for printing usual ‘-’ in ticks labels;
* ‘0123456789’ for precision at printing ticks labels.*/
- inline void Colorbar(const mglData &val, const char *sch="")
- { mgl_colorbar_val(gr, &val, sch); }
+ inline void Colorbar(const mglData &val, const char *sch="", const char *opt="")
+ { mgl_colorbar_val(gr, &val, sch, opt); }
/// Draw colorbar with manual colors at manual position
/** Parameter \a sch may contain:
* ‘<>^_’ for positioning at left, at right, at top or at bottom correspondingly;
* ‘+’ for printing ‘+’ for positive ticks;
* ‘-’ for printing usual ‘-’ in ticks labels;
* ‘0123456789’ for precision at printing ticks labels.*/
- inline void Colorbar(const mglData &val, const char *sch,double x,double y,double w=1,double h=1)
- { mgl_colorbar_val_ext(gr, &val, sch, x,y,w,h); }
+ inline void Colorbar(const mglData &val, const char *sch,double x,double y,double w=1,double h=1, const char *opt="")
+ { mgl_colorbar_val_ext(gr, &val, sch, x,y,w,h, opt); }
/// Add string to legend
inline void AddLegend(const char *text,const char *style)
msgstr ""
"Project-Id-Version: MathGL2 2.4.2\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-12-03 16:47+0300\n"
+"POT-Creation-Date: 2021-12-27 05:03+0300\n"
"PO-Revision-Date: 2018-03-24 11:08-0400\n"
"Last-Translator: Diego Sejas Viscarra <dsejas.math@protonmail.com>\n"
"Language-Team: \n"
msgid " Yes "
msgstr " Sí "
-#: udav/plot_pnl.cpp:191
+#: udav/plot_pnl.cpp:192
#, c-format
msgid "%d - %d of %d"
msgstr "%d - %d de %d"
msgid "About Qt"
msgstr "Acerca de Qt"
-#: widgets/qt.cpp:1173 udav/plot_pnl.cpp:372
+#: widgets/qt.cpp:1173 udav/plot_pnl.cpp:373
msgid "Add arc"
msgstr "Añadir arco"
-#: widgets/qt.cpp:1176 udav/plot_pnl.cpp:375
+#: widgets/qt.cpp:1176 udav/plot_pnl.cpp:376
msgid "Add arc which properties can be changed later by mouse."
msgstr "Añadir arco configurable por el mouse."
msgid "Add command option(s)"
msgstr "Añadir opción(es) de comando"
-#: widgets/qt.cpp:1178 udav/plot_pnl.cpp:378
+#: widgets/qt.cpp:1178 udav/plot_pnl.cpp:379
msgid "Add curve"
msgstr "Añadir curva"
-#: widgets/qt.cpp:1181 udav/plot_pnl.cpp:381
+#: widgets/qt.cpp:1181 udav/plot_pnl.cpp:382
msgid "Add curve which properties can be changed later by mouse."
msgstr "Añadir curva configurable por el mouse."
msgid "Add data or number"
msgstr "Añadir datos o número"
-#: widgets/qt.cpp:1193 udav/plot_pnl.cpp:396
+#: widgets/qt.cpp:1193 udav/plot_pnl.cpp:397
msgid "Add ellipse"
msgstr "Añadir elipse"
-#: widgets/qt.cpp:1196 udav/plot_pnl.cpp:399 udav/plot_pnl.cpp:405
+#: widgets/qt.cpp:1196 udav/plot_pnl.cpp:400 udav/plot_pnl.cpp:406
msgid "Add ellipse which properties can be changed later by mouse."
msgstr "Añadir elipse configurable por el mouse."
msgstr "Añadir gráfico interno"
# Anadir a la leyenda?
-#: src/exec_set.cpp:800
+#: src/exec_set.cpp:808
msgid "Add legend entry"
msgstr "Añadir entrada a leyenda"
msgid "Add legend entry for the plot"
msgstr "Añadir entrada a leyenda del gráfico"
-#: widgets/qt.cpp:1168 udav/plot_pnl.cpp:366
+#: widgets/qt.cpp:1168 udav/plot_pnl.cpp:367
msgid "Add line"
msgstr "Añadir línea"
-#: widgets/qt.cpp:1171 udav/plot_pnl.cpp:369
+#: widgets/qt.cpp:1171 udav/plot_pnl.cpp:370
msgid "Add line which properties can be changed later by mouse."
msgstr "Añadir línea configurable por el mouse."
-#: widgets/qt.cpp:1203 udav/plot_pnl.cpp:408
+#: widgets/qt.cpp:1203 udav/plot_pnl.cpp:409
msgid "Add mark"
msgstr "Añadir marca"
# Marker or mark?
-#: widgets/qt.cpp:1206 udav/plot_pnl.cpp:411
+#: widgets/qt.cpp:1206 udav/plot_pnl.cpp:412
msgid "Add marker which properties can be changed later by mouse."
msgstr "Añadir marca configurable por el mouse."
-#: widgets/qt.cpp:1198 udav/plot_pnl.cpp:402
+#: widgets/qt.cpp:1198 udav/plot_pnl.cpp:403
msgid "Add polygon"
msgstr "Añadir polígono"
msgstr "Añadir primitiva"
# rect?
-#: widgets/qt.cpp:1183 udav/plot_pnl.cpp:384
+#: widgets/qt.cpp:1183 udav/plot_pnl.cpp:385
msgid "Add rect"
msgstr "Añadir rectángulo"
-#: widgets/qt.cpp:1186 udav/plot_pnl.cpp:387
+#: widgets/qt.cpp:1186 udav/plot_pnl.cpp:388
msgid "Add rectangle which properties can be changed later by mouse."
msgstr "Añadir rectángulo configurable por el mouse."
-#: widgets/qt.cpp:1188 udav/plot_pnl.cpp:390
+#: widgets/qt.cpp:1188 udav/plot_pnl.cpp:391
msgid "Add rhombus"
msgstr "Añadir rombo"
-#: widgets/qt.cpp:1191 udav/plot_pnl.cpp:393
+#: widgets/qt.cpp:1191 udav/plot_pnl.cpp:394
msgid "Add rhombus which properties can be changed later by mouse."
msgstr "Añadir rombo configurable por el mouse."
-#: widgets/qt.cpp:1208 udav/plot_pnl.cpp:414
+#: widgets/qt.cpp:1208 udav/plot_pnl.cpp:415
msgid "Add text"
msgstr "Añadir texto"
-#: widgets/qt.cpp:1211 udav/plot_pnl.cpp:417
+#: widgets/qt.cpp:1211 udav/plot_pnl.cpp:418
msgid "Add text which properties can be changed later by mouse."
msgstr "Añadir texto configurable por el mouse."
-#: src/exec_prm.cpp:662
+#: src/exec_prm.cpp:663
msgid "Add title for current subplot/inplot"
msgstr "Añadir titulo al subgráfica/gráfica interna"
msgstr "Añadir a"
# user-defined
-#: src/exec_set.cpp:801
+#: src/exec_set.cpp:809
msgid "Add user-defined symbol"
msgstr "Añadir símbolo personalizado"
msgid "Adjust picture size to fill drawing area"
msgstr "Ajustar imagen al área de dibujo"
-#: widgets/fltk.cpp:846 widgets/qt.cpp:1156 udav/plot_pnl.cpp:337
+#: widgets/fltk.cpp:846 widgets/qt.cpp:1156 udav/plot_pnl.cpp:338
msgid "Adjust size"
msgstr "Ajustar tamaño"
-#: src/exec_set.cpp:802
+#: src/exec_set.cpp:810
msgid "Adjust ticks for best view"
msgstr "Optimizar marcas de los ejes"
#. graphics menu
#: widgets/qt.cpp:1115 udav/opt_dlg.cpp:51 udav/setup_dlg.cpp:109
-#: udav/plot_pnl.cpp:290 mgllab/dialogs.cpp:109
+#: udav/plot_pnl.cpp:291 mgllab/dialogs.cpp:109
msgid "Alpha"
msgstr "Alfa"
msgstr "Ángulo alrededor del eje z (en grados)"
#. animation menu
-#: widgets/qt.cpp:1261 widgets/qt.cpp:1262 udav/plot_pnl.cpp:559
+#: widgets/qt.cpp:1261 widgets/qt.cpp:1262 udav/plot_pnl.cpp:560
#: mgllab/mathgl.cpp:185
msgid "Animation"
msgstr "Animación"
msgid "Aspect x/z"
msgstr "Aspecto x/z"
-#: src/exec_set.cpp:808
+#: src/exec_set.cpp:816
msgid "Attach light settings to inplot"
msgstr "Vincular configuración de luz a gráfico interno"
msgid "Cancel"
msgstr "Cancelar"
-#: src/crust.cpp:588
+#: src/crust.cpp:617
msgid "Cannot triangulate this set!"
msgstr "¡Imposible triangular conjunto!"
msgid "Change (resize) data"
msgstr "Cambiar (tamaño de) datos"
-#: widgets/qt.cpp:1158 udav/plot_pnl.cpp:339
+#: widgets/qt.cpp:1158 udav/plot_pnl.cpp:340
msgid "Change canvas size to fill whole region (F6)."
msgstr "Maximizar el área de dibujo (F6)."
-#: src/exec_set.cpp:812
+#: src/exec_set.cpp:820
msgid "Change current directory"
msgstr "Cambiar directorio actual"
msgid "Change font"
msgstr "Cambiar fuente"
-#: src/exec_set.cpp:864
+#: src/exec_set.cpp:873
msgid "Change view angles - use 'rotate' for plot rotation"
msgstr "Modificar ángulos - use \"rotate\" para rotar gráfico"
msgid "Clear all"
msgstr "Borrar todo"
-#: src/exec_set.cpp:813
+#: src/exec_set.cpp:821
msgid "Clear legend entries"
msgstr "Borrar entradas de leyenda"
-#: src/exec_set.cpp:814
+#: src/exec_set.cpp:822
msgid "Clear picture"
msgstr "Borrar imagen"
msgid "Comments"
msgstr "Comentarios"
-#: src/exec_prm.cpp:650
+#: src/exec_prm.cpp:651
msgid "Computes the attractor of an IFS"
msgstr "Calcula el atractor de un IFS"
-#: src/exec_prm.cpp:651
+#: src/exec_prm.cpp:652
msgid "Computes the attractor of an IFS for 3d case"
msgstr "Calcula el atractor de un IFS para el caso 3d"
-#: src/exec_prm.cpp:652
+#: src/exec_prm.cpp:653
msgid "Computes the attractor of an IFS with parameters from *.ifs file"
msgstr "Calcula el atractor de un IFS con parámetros de un archivo *.ifs"
-#: src/exec_prm.cpp:646
+#: src/exec_prm.cpp:647
msgid "Computes the flame fractal"
msgstr "Calcula un fractal de flama"
msgid "Conditional operator"
msgstr "Operador condicional"
-#: udav/plot_pnl.cpp:358
+#: udav/plot_pnl.cpp:359
msgid "Copy click coor."
msgstr "Copiar coords. al clicar"
# Clipboard=?
-#: udav/plot_pnl.cpp:360
+#: udav/plot_pnl.cpp:361
msgid "Copy coordinates of last mouse click to clipboard."
msgstr "Copiar coordenadas del último clic. a memoria"
msgid "Copy graphics"
msgstr "Copiar gráfico"
-#: widgets/qt.cpp:1162 udav/plot_pnl.cpp:354
+#: widgets/qt.cpp:1162 udav/plot_pnl.cpp:355
msgid "Copy graphics to clipboard (Ctrl+Shift+G)."
msgstr "Copiar gráfico a memoria (Ctrl+Shift+G)."
msgid "Copy image to clipboard"
msgstr "Copiar imagen a memoria"
-#: widgets/qt.cpp:1160 udav/plot_pnl.cpp:352
+#: widgets/qt.cpp:1160 udav/plot_pnl.cpp:353
msgid "Copy plot"
msgstr "Copiar gráfico"
msgid "Data transform"
msgstr "Transformar datos"
-#: udav/plot_pnl.cpp:556
+#: udav/plot_pnl.cpp:557
msgid "Decrease \\phi angle by 10 degrees."
msgstr "Decrementar ángulo \\phi en 10 grados."
-#: udav/plot_pnl.cpp:548
+#: udav/plot_pnl.cpp:549
msgid "Decrease \\theta angle by 10 degrees."
msgstr "Decrementar ángulo \\theta en 10 grados."
msgid "Delete data or slice of data"
msgstr "Borrar datos o porción de los datos"
-#: udav/plot_pnl.cpp:426
+#: udav/plot_pnl.cpp:427
msgid "Delete selected"
msgstr "Borrar seleccion"
msgid "Delete selected data."
msgstr "Borrar datos seleccionados."
-#: udav/plot_pnl.cpp:428
+#: udav/plot_pnl.cpp:429
msgid "Delete selected plot."
msgstr "Borrar gráfico seleccionado."
msgid "Direction along which data will be filled"
msgstr "Dirección para llenar los datos"
+#: src/exec_set.cpp:830
+msgid "Disable accurate primitive cutting at axis borders"
+msgstr ""
+
#: udav/subplot_dlg.cpp:105 udav/subplot_dlg.cpp:122
msgid "Distance between cells"
msgstr "Distancia entre celdas"
msgid "Draw TeX mark at point position"
msgstr "Graficar marca de TeX en posición"
-#: src/exec_prm.cpp:628
+#: src/exec_prm.cpp:629
msgid "Draw angle arc"
msgstr "Graficar arco"
msgid "Draw binormales for 1D data"
msgstr "Gráfica de binormales para datos 1D"
-#: src/exec_prm.cpp:655
+#: src/exec_prm.cpp:656
msgid "Draw bitmap (logo) along axis range"
msgstr "Graficar imagen (logo) en el rango de ejes"
-#: src/exec_prm.cpp:632
+#: src/exec_prm.cpp:633
msgid "Draw bounding box"
msgstr "Graficar bordes"
msgid "Draw chart"
msgstr "Gráfica de cuadros"
-#: src/exec_prm.cpp:633
+#: src/exec_prm.cpp:634
msgid "Draw circle"
msgstr "Graficar círculo"
msgid "Draw cloud"
msgstr "Gráfica de nube"
-#: src/exec_prm.cpp:635
+#: src/exec_prm.cpp:636
msgid "Draw colorbar"
msgstr "Graficar barra de colores"
-#: src/exec_prm.cpp:636
+#: src/exec_prm.cpp:637
msgid "Draw cone"
msgstr "Dibujar cono"
msgid "Draw contour tubes for surface of triangles"
msgstr "Cilindros de nivel para superficie de triángulos"
-#: src/exec_prm.cpp:637
+#: src/exec_prm.cpp:638
msgid "Draw curve"
msgstr "Graficar curva"
msgid "Draw dots for arbitrary data points"
msgstr "Diagrama de puntos para datos arbitrarios"
-#: src/exec_prm.cpp:638
+#: src/exec_prm.cpp:639
msgid "Draw drop"
msgstr "Graficar gota"
-#: src/exec_prm.cpp:639
+#: src/exec_prm.cpp:640
msgid "Draw ellipse"
msgstr "Graficar elipse"
-#: src/exec_prm.cpp:640
+#: src/exec_prm.cpp:641
msgid "Draw error box"
msgstr "Graficar caja de error"
msgid "Draw error boxes"
msgstr "Graficar cajas de error"
-#: src/exec_prm.cpp:641
+#: src/exec_prm.cpp:642
msgid "Draw face (quadrangle)"
msgstr "Graficar faceta (cuadrángulo)"
-#: src/exec_prm.cpp:642
+#: src/exec_prm.cpp:643
msgid "Draw face perpendicular to x-axis"
msgstr "Graficar faceta perpendicular al eje x"
-#: src/exec_prm.cpp:643
+#: src/exec_prm.cpp:644
msgid "Draw face perpendicular to y-axis"
msgstr "Graficar faceta perpendicular al eje y"
-#: src/exec_prm.cpp:644
+#: src/exec_prm.cpp:645
msgid "Draw face perpendicular to z-axis"
msgstr "Graficar faceta perpendicular al eje z"
msgid "Draw gradient lines for scalar field"
msgstr "Graficar líneas de gradiente para campo escalar"
-#: src/exec_prm.cpp:649
+#: src/exec_prm.cpp:650
msgid "Draw grid"
msgstr "Graficar grilla"
msgid "Draw label at arbitrary position"
msgstr "Etiqueta en posición arbitraria"
-#: src/exec_prm.cpp:634
+#: src/exec_prm.cpp:635
#, fuzzy
msgid "Draw label for colorbar"
msgstr "Etiqueta para eje t"
-#: src/exec_prm.cpp:663
+#: src/exec_prm.cpp:664
msgid "Draw label for t-axis"
msgstr "Etiqueta para eje t"
-#: src/exec_prm.cpp:664
+#: src/exec_prm.cpp:665
msgid "Draw label for x-axis"
msgstr "Etiqueta para el eje x"
-#: src/exec_prm.cpp:665
+#: src/exec_prm.cpp:666
msgid "Draw label for y-axis"
msgstr "Etiqueta para el eje y"
-#: src/exec_prm.cpp:666
+#: src/exec_prm.cpp:667
msgid "Draw label for z-axis"
msgstr "Etiqueta para el eje z"
-#: src/exec_prm.cpp:653
+#: src/exec_prm.cpp:654
msgid "Draw legend"
msgstr "Graficar leyenda"
-#: src/exec_prm.cpp:654
+#: src/exec_prm.cpp:655
msgid "Draw line"
msgstr "Graficar recta"
msgid "Draw mesh surface"
msgstr "Graficar grilla de superficie"
-#: src/exec_prm.cpp:631
+#: src/exec_prm.cpp:632
msgid "Draw point (ball)"
msgstr "Graficar punto (esfera)"
-#: src/exec_prm.cpp:656
+#: src/exec_prm.cpp:657
msgid "Draw polygon"
msgstr "Graficar polígono"
msgid "Draw reconstructed surface for arbitrary data points"
msgstr "Graficar superficie reconstruida para puntos arbitrarios"
-#: src/exec_prm.cpp:657
+#: src/exec_prm.cpp:658
msgid "Draw rectangle"
msgstr "Graficar rectángulo"
-#: src/exec_prm.cpp:658
+#: src/exec_prm.cpp:659
msgid "Draw rhombus"
msgstr "Graficar rombo"
msgid "Draw solid surface transpared by other data"
msgstr "Superficie sólida con transparencia de otros datos"
-#: src/exec_prm.cpp:659
+#: src/exec_prm.cpp:660
msgid "Draw sphere"
msgstr "Graficar esfera"
msgid "Draw tension plot for 1D data"
msgstr "Gráfica de tensión para datos 1D"
-#: src/exec_prm.cpp:661
+#: src/exec_prm.cpp:662
msgid "Draw text at some position or along curve"
msgstr "Texto en posición especifica o curva"
-#: src/exec_prm.cpp:660
+#: src/exec_prm.cpp:661
msgid "Draw user-defined symbol at given position and direction"
msgstr "Símbolo personalizado en posición y dirección dadas"
msgid "Draw waterfalls"
msgstr "Gráfica de cascadas"
-#: udav/plot_pnl.cpp:111 udav/plot_pnl.cpp:130
+#: udav/plot_pnl.cpp:112 udav/plot_pnl.cpp:131
msgid "Drawing time %1 ms"
msgstr "Tiempo de graficación %1 ms"
msgid "Execute script after loading"
msgstr "Ejecutar script al cargarlo"
-#: widgets/qt.cpp:1149 udav/plot_pnl.cpp:333
+#: widgets/qt.cpp:1149 udav/plot_pnl.cpp:334
msgid "Execute script and redraw graphics (F5)."
msgstr "Ejecutar script y volver a graficar (F5)."
msgid "Export as ..."
msgstr "Exportar como ..."
-#: widgets/qt.cpp:1084 udav/plot_pnl.cpp:474
+#: widgets/qt.cpp:1084 udav/plot_pnl.cpp:475
msgid "Export as 2D ..."
msgstr "Exportar como 2D ..."
-#: widgets/qt.cpp:1093 udav/plot_pnl.cpp:484
+#: widgets/qt.cpp:1093 udav/plot_pnl.cpp:485
msgid "Export as 3D ..."
msgstr "Exportar como 3D ..."
msgid "Fill x-,k-samples for transforms"
msgstr "Llenar muestreo x o k para transformada"
-#: src/random.cpp:350
+#: src/random.cpp:345
msgid "Fills by fractional brownian motion"
msgstr ""
-#: src/random.cpp:356
+#: src/random.cpp:351
msgid "Fills by random integers uniformly chosen in [lo, hi)"
msgstr ""
-#: src/random.cpp:348
+#: src/random.cpp:343
msgid ""
"Fills by random numbers according to Bernoulli distribution with probability "
"p"
msgstr ""
-#: src/random.cpp:353
+#: src/random.cpp:348
msgid "Fills by random numbers according to Gaussian distribution"
msgstr ""
-#: src/random.cpp:349
+#: src/random.cpp:344
msgid ""
"Fills by random numbers according to binomial distribution in n coin flips "
"with probability p"
msgstr ""
-#: src/random.cpp:351
+#: src/random.cpp:346
msgid "Fills by random numbers according to discrete distribution"
msgstr ""
-#: src/random.cpp:352
+#: src/random.cpp:347
msgid ""
"Fills by random numbers according to exponential distribution with "
"probability p"
msgstr ""
-#: src/random.cpp:355
+#: src/random.cpp:350
msgid "Fills by random numbers uniformly chosen in [lo,hi)"
msgstr ""
msgid "Forward"
msgstr "Adelante"
-#: udav/plot_pnl.cpp:192
+#: udav/plot_pnl.cpp:193
msgid "Frame %1 of %2"
msgstr "Cuadro %1 de %2"
msgid "Go to the specified slice for 3D data."
msgstr "Ir a la sección especificada de datos 3D."
-#: widgets/qt.cpp:1112 widgets/qt.cpp:1114 udav/plot_pnl.cpp:66
+#: widgets/qt.cpp:1112 widgets/qt.cpp:1114 udav/plot_pnl.cpp:67
#: mgllab/mgllab.cpp:325
msgid "Graphics"
msgstr "Gráfica"
msgid "Graphics/Transform/Zoom out"
msgstr "Gráfica/Transformar/Alejar"
-#: udav/plot_pnl.cpp:304
+#: udav/plot_pnl.cpp:305
msgid "Grid"
msgstr "Grilla"
msgid "Hidden plots"
msgstr "Gráficos ocultos"
-#: udav/plot_pnl.cpp:431
+#: udav/plot_pnl.cpp:432
msgid "Hide selected"
msgstr "Ocultar seleccionados"
-#: udav/plot_pnl.cpp:433
+#: udav/plot_pnl.cpp:434
msgid "Hide selected plots."
msgstr "Ocultar gráficos seleccionados."
msgid "Incorrect type of base data"
msgstr "Tipo incorrecto de datos base"
-#: udav/plot_pnl.cpp:552
+#: udav/plot_pnl.cpp:553
msgid "Increase \\phi angle by 10 degrees."
msgstr "Incrementar ángulo \\phi en 10 grados."
-#: udav/plot_pnl.cpp:544
+#: udav/plot_pnl.cpp:545
msgid "Increase \\theta angle by 10 degrees."
msgstr "Incrementar ángulo \\theta en 10 grados."
msgid "Italic style"
msgstr "Estilo itálico"
-#: widgets/qt.cpp:1087 udav/plot_pnl.cpp:477
+#: widgets/qt.cpp:1087 udav/plot_pnl.cpp:478
msgid "JPEG"
msgstr "JPEG"
msgid "L - seagreen"
msgstr "L - verde marino"
-#: widgets/qt.cpp:1091 udav/plot_pnl.cpp:481
+#: widgets/qt.cpp:1091 udav/plot_pnl.cpp:482
msgid "LaTeX"
msgstr "LaTeX"
msgstr "Leyenda"
#: widgets/qt.cpp:1121 udav/opt_dlg.cpp:64 udav/setup_dlg.cpp:110
-#: udav/plot_pnl.cpp:297 mgllab/dialogs.cpp:115
+#: udav/plot_pnl.cpp:298 mgllab/dialogs.cpp:115
msgid "Light"
msgstr "Luz"
msgid "Load Data?"
msgstr "¿Cargar datos?"
-#: src/exec_set.cpp:829
+#: src/exec_set.cpp:838
msgid "Load commands from external DLL"
msgstr "Cargar comandos de librería externa"
"Cargar datos de archivo. Estos se borraran solo al\n"
"cerrar UDAV, sin advertencia explicita (Ctrl+Shift+O)."
-#: src/exec_set.cpp:830
+#: src/exec_set.cpp:839
msgid "Load fontfaces"
msgstr "Cargar fuentes"
msgid "Load from file"
msgstr "Cargar de archivo"
-#: src/exec_prm.cpp:630
+#: src/exec_prm.cpp:631
msgid "Load image for background"
msgstr "Cargar imagen como fondo"
"Archivos de datos (*.dat)\n"
"Todos los archivos (*.*)"
-#: widgets/qt.cpp:1094 udav/plot_pnl.cpp:485
+#: widgets/qt.cpp:1094 udav/plot_pnl.cpp:486
msgid "MGLD"
msgstr "MGLD"
msgid "Momentum along 'z' for function"
msgstr "Momento en dirección 'z' para función"
-#: widgets/qt.cpp:1250 udav/plot_pnl.cpp:527
+#: widgets/qt.cpp:1250 udav/plot_pnl.cpp:528
msgid "Move down"
msgstr "Mover abajo"
-#: widgets/qt.cpp:1252 udav/plot_pnl.cpp:530
+#: widgets/qt.cpp:1252 udav/plot_pnl.cpp:531
msgid "Move graphics down 1/3 of its height."
msgstr "Mover gráfico abajo 1/3 de su altura."
-#: widgets/qt.cpp:1236 udav/plot_pnl.cpp:506
+#: widgets/qt.cpp:1236 udav/plot_pnl.cpp:507
msgid "Move graphics left by 1/3 of its width."
msgstr "Mover gráfico a la izq. 1/3 de su ancho."
-#: widgets/qt.cpp:1256 udav/plot_pnl.cpp:536
+#: widgets/qt.cpp:1256 udav/plot_pnl.cpp:537
msgid "Move graphics right by 1/3 of its width."
msgstr "Mover gráfico a la der. 1/3 de su ancho."
-#: widgets/qt.cpp:1240 udav/plot_pnl.cpp:512
+#: widgets/qt.cpp:1240 udav/plot_pnl.cpp:513
msgid "Move graphics up by 1/3 of its height."
msgstr "Mover gráfico arriba 1/3 de su altura."
-#: widgets/qt.cpp:1234 udav/plot_pnl.cpp:503
+#: widgets/qt.cpp:1234 udav/plot_pnl.cpp:504
msgid "Move left"
msgstr "Mover a la izq."
msgid "Move mouse-handled primitives to script."
msgstr "Move mouse-handled primitives to script."
-#: udav/plot_pnl.cpp:454
+#: udav/plot_pnl.cpp:455
msgid "Move plot down"
msgstr "Mover gráfica abajo"
-#: udav/plot_pnl.cpp:449
+#: udav/plot_pnl.cpp:450
msgid "Move plot up"
msgstr "Mover gráfica arriba"
-#: widgets/qt.cpp:1254 udav/plot_pnl.cpp:533
+#: widgets/qt.cpp:1254 udav/plot_pnl.cpp:534
msgid "Move right"
msgstr "Mover a la der."
-#: udav/plot_pnl.cpp:456
+#: udav/plot_pnl.cpp:457
msgid "Move selected plot down to next subplot."
msgstr "Mover gráfica seleccionada al subgráfica abajo."
-#: udav/plot_pnl.cpp:451
+#: udav/plot_pnl.cpp:452
msgid "Move selected plot up to previous subplot."
msgstr "Mover gráfica seleccionada al subgráfica arriba."
-#: widgets/qt.cpp:1238 udav/plot_pnl.cpp:509
+#: widgets/qt.cpp:1238 udav/plot_pnl.cpp:510
msgid "Move up"
msgstr "Mover arriba"
#: udav/newcmd_dlg.cpp:101 udav/newcmd_dlg.cpp:308 udav/newcmd_dlg.cpp:336
#: udav/newcmd_dlg.cpp:340 udav/newcmd_dlg.cpp:354 udav/newcmd_dlg.cpp:367
#: udav/newcmd_dlg.cpp:375 udav/newcmd_dlg.cpp:379 udav/newcmd_dlg.cpp:383
-#: udav/text_pnl.cpp:558 udav/plot_pnl.cpp:439 mgllab/dialogs.cpp:702
+#: udav/text_pnl.cpp:558 udav/plot_pnl.cpp:440 mgllab/dialogs.cpp:702
msgid "New command"
msgstr "Nuevo comando"
"hacer una superficie con curvas de nivel usando los comandos 'surf' y 'cont' "
"uno luego del otro (en cualquier orden). "
-#: udav/text_pnl.cpp:562 udav/plot_pnl.cpp:444
+#: udav/text_pnl.cpp:562 udav/plot_pnl.cpp:445
msgid "New inplot"
msgstr "Nuevo gráfico interno"
msgid "Next slice"
msgstr "Siguiente sección"
-#: widgets/qt.cpp:1264 udav/plot_pnl.cpp:560
+#: widgets/qt.cpp:1264 udav/plot_pnl.cpp:561
msgid "Next slide"
msgstr "Siguiente cuadro"
msgid "Nz"
msgstr "Nz"
-#: widgets/qt.cpp:1096 udav/plot_pnl.cpp:487
+#: widgets/qt.cpp:1096 udav/plot_pnl.cpp:488
msgid "OBJ"
msgstr "OBJ"
msgid "PDF support was disabled. Please, enable it and rebuild MathGL."
msgstr "Formato PDF deshabilitado. Habilítelo y recompile MathGL."
-#: widgets/qt.cpp:1085 udav/plot_pnl.cpp:475
+#: widgets/qt.cpp:1085 udav/plot_pnl.cpp:476
msgid "PNG"
msgstr "PNG"
msgid "PNG Files \t*.png"
msgstr "Archivos PNG \t*.png"
-#: src/canvas_cf.cpp:546 src/canvas_cf.cpp:548 src/data_png.cpp:118
+#: src/canvas_cf.cpp:551 src/canvas_cf.cpp:553 src/data_png.cpp:118
#: src/export.cpp:75 src/export.cpp:109
msgid "PNG support was disabled. Please, enable it and rebuild MathGL."
msgstr "Formato PNG deshabilitado. Habilítelo y recompile MathGL."
-#: widgets/qt.cpp:1095 udav/plot_pnl.cpp:486
+#: widgets/qt.cpp:1095 udav/plot_pnl.cpp:487
msgid "PRC"
msgstr "PRC"
msgid "Plot ID"
msgstr "ID del gráfico"
-#: src/exec_prm.cpp:647
+#: src/exec_prm.cpp:648
msgid "Plot curve by formula"
msgstr "Gráficar curva por fórmula"
msgid "Plot style"
msgstr "Estilo de gráfica"
-#: src/exec_prm.cpp:648
+#: src/exec_prm.cpp:649
msgid "Plot surface by formula"
msgstr "Graficar superficie por fórmula"
msgid "Prev slice"
msgstr "Seccion prev."
-#: widgets/qt.cpp:1273 udav/plot_pnl.cpp:575
+#: widgets/qt.cpp:1273 udav/plot_pnl.cpp:576
msgid "Prev slide"
msgstr "Seccion prev."
msgid "Primitives"
msgstr "Primitivas"
-#: widgets/qt.cpp:1167 udav/plot_pnl.cpp:365
+#: widgets/qt.cpp:1167 udav/plot_pnl.cpp:366
msgid "Primitives ..."
msgstr "Primitivas ..."
-#: src/exec_set.cpp:863
+#: src/exec_set.cpp:872
msgid "Print MathGL version or check if it is valid"
msgstr "Imprimir version de MathGL o verificar su validez"
msgid "Print script"
msgstr "Imprimir script"
-#: src/exec_prm.cpp:645
+#: src/exec_prm.cpp:646
msgid "Print string from file"
msgstr "Imprimir texto de archivo"
msgid "R - maroon"
msgstr "R - carmesí"
-#: src/exec_set.cpp:843
+#: src/exec_set.cpp:852
msgid "Rasterize plot and save to background"
msgstr "Rasterizar gráfica y guardar de fondo"
msgid "Redo editor change (Ctrl+Shift+Z)."
msgstr "Rehacer cambios de editor (Ctrl+Shift+Z)."
-#: widgets/qt.cpp:1147 udav/plot_pnl.cpp:331
+#: widgets/qt.cpp:1147 udav/plot_pnl.cpp:332
msgid "Redraw"
msgstr "Volver a graficar"
msgid "Relative position of i-th color"
msgstr "Posición relativa al i-ésimo color"
-#: udav/plot_pnl.cpp:342
+#: udav/plot_pnl.cpp:343
msgid "Reload"
msgstr "Recargar"
msgid "Reserve space for labels at top side (style '^')"
msgstr "Reservar espacio para etiquetas arriba (estilo '^')"
-#: src/exec_set.cpp:844
+#: src/exec_set.cpp:853
msgid "Reset settings and clear picture"
msgstr "Reestablecer config. y limpiar imagen"
msgid "Resize data with smoothing"
msgstr "Reescalar datos con suavizado"
-#: widgets/qt.cpp:1140 udav/plot_pnl.cpp:325
+#: widgets/qt.cpp:1140 udav/plot_pnl.cpp:326
msgid "Restore"
msgstr "Reestablecer"
msgid "Restore default graphics rotation, zoom and perspective (Alt+Space)."
msgstr "Reestablecer rotacion, zoom y perspectiva por defecto (Alt+Space)."
-#: udav/plot_pnl.cpp:327
+#: udav/plot_pnl.cpp:328
msgid "Restore default graphics rotation, zoom and perspective (Ctrl+Space)."
msgstr "Reestablecer rotacion, zoom y perspectiva por defecto (Ctrl+Space)."
-#: udav/plot_pnl.cpp:344
+#: udav/plot_pnl.cpp:345
msgid "Restore status for 'once' command and reload data (F9)."
msgstr "Reestablecer estado para comando 'once' y recargar datos (F9)."
msgstr "Roll data along direction(s)"
#. rotate menu
-#: udav/plot_pnl.cpp:540
+#: udav/plot_pnl.cpp:541
msgid "Rotate"
msgstr "Rotar"
-#: widgets/qt.cpp:1127 udav/plot_pnl.cpp:310
+#: widgets/qt.cpp:1127 udav/plot_pnl.cpp:311
msgid "Rotate by mouse"
msgstr "Rotar con el mouse"
-#: udav/plot_pnl.cpp:545
+#: udav/plot_pnl.cpp:546
msgid "Rotate down"
msgstr "Rotar abajo"
-#: udav/plot_pnl.cpp:549
+#: udav/plot_pnl.cpp:550
msgid "Rotate left"
msgstr "Rotar a la izq."
msgid "Rotate picture by holding left mouse button"
msgstr "Rotar figura al presionando el botón izq. del mouse"
-#: src/exec_set.cpp:845
+#: src/exec_set.cpp:854
msgid "Rotate plot"
msgstr "Rotar gráfica"
-#: udav/plot_pnl.cpp:553
+#: udav/plot_pnl.cpp:554
msgid "Rotate right"
msgstr "Rotar a la der."
-#: udav/plot_pnl.cpp:541
+#: udav/plot_pnl.cpp:542
msgid "Rotate up"
msgstr "Rotar arriba"
msgid "Run slideshow (CTRl+F5)."
msgstr "Correr animación (CTRl+F5)."
-#: udav/plot_pnl.cpp:570
+#: udav/plot_pnl.cpp:571
msgid ""
"Run slideshow (Ctrl+F5). If no parameter specified\n"
"then the dialog with slideshow options will appear."
msgid "Russian"
msgstr "Ruso"
-#: widgets/qt.cpp:1097 udav/plot_pnl.cpp:488
+#: widgets/qt.cpp:1097 udav/plot_pnl.cpp:489
msgid "STL"
msgstr "STL"
-#: widgets/qt.cpp:1090 udav/plot_pnl.cpp:480
+#: widgets/qt.cpp:1090 udav/plot_pnl.cpp:481
msgid "SVG"
msgstr "SVG"
msgid "Select kind of plot"
msgstr "Seleccionar tipo de gráfica"
-#: src/exec_set.cpp:862
+#: src/exec_set.cpp:871
msgid "Select variant of plot style(s)"
msgstr "Seleccionar variante de estilo(s) de gráfica"
msgid "Set"
msgstr "Especificar"
-#: src/exec_set.cpp:858
+#: src/exec_set.cpp:867
msgid "Set additional tick and axis labels shift"
msgstr "Desplazamiento adicional para etiquetas y escala del eje"
-#: src/exec_set.cpp:805
+#: src/exec_set.cpp:813
msgid "Set ambient light brightness"
msgstr "Especificar brillo de luz ambiental"
-#: src/exec_set.cpp:826
+#: src/exec_set.cpp:835
msgid "Set arbitrary position of plot in picture"
msgstr "Especificar posición arbitraria de gráfica en imagen"
msgid "Set arguments"
msgstr "Argumentos"
-#: src/exec_set.cpp:807
+#: src/exec_set.cpp:815
msgid "Set aspect ration"
msgstr "Especificar proporcion de apariencia"
-#: src/exec_set.cpp:809
+#: src/exec_set.cpp:817
msgid "Set axis and tick style"
msgstr "Especificar estilos de eje y escala"
-#: src/exec_set.cpp:835
+#: src/exec_set.cpp:844
msgid "Set axis origin"
msgstr "Especificar origen de ejes"
-#: src/exec_set.cpp:842
+#: src/exec_set.cpp:851
msgid "Set axis ranges"
msgstr "Especificar rango de ejes"
-#: src/exec_set.cpp:850
+#: src/exec_set.cpp:859
msgid "Set bit-flags (for advanced users only)"
msgstr "Especificar bit-flags (para usuarios avanzados)"
-#: src/exec_set.cpp:811
+#: src/exec_set.cpp:819
msgid "Set bounding box for 2d export"
msgstr "Especificar \"bounding box\" para exportar 2D"
-#: src/exec_set.cpp:832
+#: src/exec_set.cpp:841
msgid "Set brush for given mask id"
msgstr "Especificar brocha para máscara id dada"
-#: src/exec_set.cpp:816
+#: src/exec_set.cpp:824
msgid "Set color range"
msgstr "Especificar rango de colores"
msgid "Set data sizes manually"
msgstr "Especificar tamaño de datos manualmente"
-#: src/exec_set.cpp:810
+#: src/exec_set.cpp:818
msgid "Set default bars width"
msgstr "Especificar ancho de barras"
-#: src/exec_set.cpp:840
+#: src/exec_set.cpp:849
msgid "Set default filename"
msgstr "Especificar nombre de archivo"
-#: src/exec_set.cpp:804
+#: src/exec_set.cpp:812
msgid "Set default transparency"
msgstr "Especificar transparencia"
-#: src/exec_set.cpp:819
+#: src/exec_set.cpp:827
msgid "Set diffusive light brightness"
msgstr "Especificar brillo de luz difusa"
-#: src/exec_set.cpp:820
+#: src/exec_set.cpp:828
msgid "Set draw region for quality&4"
msgstr "Especificar region de dibujo para calida&4"
msgid "Set lighting off/on for particular plot"
msgstr "Activar/desactivar luz para gráfica particular"
-#: src/exec_set.cpp:833
+#: src/exec_set.cpp:842
msgid "Set number of lines in mesh/fall/vect and so on"
msgstr "Especificar número de líneas en grilla/cascada/etc."
-#: src/exec_set.cpp:827
+#: src/exec_set.cpp:836
msgid "Set number of marks in the legend"
msgstr "Especificar número de marcas en leyenda"
-#: src/exec_set.cpp:821
+#: src/exec_set.cpp:829
msgid "Set number of visible faces"
msgstr "Especificar número de facetas visibles"
-#: src/exec_set.cpp:837
+#: src/exec_set.cpp:846
msgid "Set palette for 1D plots"
msgstr "Especificar paleta para gráficas 1D"
-#: src/exec_set.cpp:839
+#: src/exec_set.cpp:848
msgid "Set perspective"
msgstr "Especificar perspectiva"
-#: src/exec_set.cpp:848
+#: src/exec_set.cpp:857
msgid "Set picture size"
msgstr "Especificar tamaño de imagen"
-#: src/exec_set.cpp:841
+#: src/exec_set.cpp:850
msgid "Set plot quality"
msgstr "Especificar calidad de gráfica"
-#: src/exec_set.cpp:854
+#: src/exec_set.cpp:863
msgid "Set position of plot as cell of matrix"
msgstr "Especificar posición de gráfica como celda de matriz"
-#: src/exec_set.cpp:834
+#: src/exec_set.cpp:843
msgid "Set position of plot block in matrix"
msgstr "Especificar posición de gráfica en matriz"
-#: src/exec_set.cpp:815
+#: src/exec_set.cpp:823
msgid "Set position of plot inside cell of column"
msgstr "Especificar posición de gráfica en celda de columna"
-#: src/exec_set.cpp:825
+#: src/exec_set.cpp:834
msgid "Set position of plot inside cell of matrix"
msgstr "Especificar posición de gráfica en celda de matriz"
-#: src/exec_set.cpp:853
+#: src/exec_set.cpp:862
msgid "Set position of plot inside cell of rotated stick"
msgstr "Especificar posición de gráfica en celda de barra rotada"
-#: src/exec_set.cpp:852
+#: src/exec_set.cpp:861
msgid "Set position of plot inside cell of sheared stick"
msgstr "Especificar posición de gráfica en celda de barra recortada"
-#: src/exec_set.cpp:866
+#: src/exec_set.cpp:875
msgid "Set range for x-axis"
msgstr "Especificar rango de eje x"
-#: src/exec_set.cpp:868
+#: src/exec_set.cpp:877
msgid "Set range for y-axis"
msgstr "Especificar rango de eje y"
-#: src/exec_set.cpp:872
+#: src/exec_set.cpp:881
msgid "Set range for z-axis"
msgstr "Especificar rango de eje z"
-#: src/exec_set.cpp:847
+#: src/exec_set.cpp:856
msgid "Set scale text in relative subplots too"
msgstr "Set scale text in relative subplots too"
-#: src/exec_set.cpp:849
+#: src/exec_set.cpp:858
msgid "Set scaling factor for further setsize"
msgstr "Especificar factor de escala para \"setsize\""
msgid "Set size for text, marks and others"
msgstr "Especificar tamaño de texto, marcas y otros"
-#: src/exec_set.cpp:806
+#: src/exec_set.cpp:814
msgid "Set size of arrows"
msgstr "Especificar tamaño de flechas"
-#: src/exec_set.cpp:831
+#: src/exec_set.cpp:840
msgid "Set size of markers"
msgstr "Especificar tamaño de marcadores"
-#: src/exec_set.cpp:838
+#: src/exec_set.cpp:847
msgid "Set size of semi-transparent area around line"
msgstr "Especificar tamaño de area semitransparente alrededor de línea"
-#: src/exec_set.cpp:836
+#: src/exec_set.cpp:845
msgid "Set tick labels drawing at origin"
msgstr "Set tick labels drawing at origin"
-#: src/exec_set.cpp:857
+#: src/exec_set.cpp:866
msgid "Set tick length"
msgstr "Especificar longtud de marcas"
-#: src/exec_set.cpp:817
+#: src/exec_set.cpp:825
msgid "Set ticks for colorbar"
msgstr "Especificar escala para barra de colores"
-#: src/exec_set.cpp:867
+#: src/exec_set.cpp:876
msgid "Set ticks for x-axis"
msgstr "Especificar escala para el eje x"
-#: src/exec_set.cpp:869
+#: src/exec_set.cpp:878
msgid "Set ticks for y-axis"
msgstr "Especificar escala para el eje y"
-#: src/exec_set.cpp:873
+#: src/exec_set.cpp:882
msgid "Set ticks for z-axis"
msgstr "Especificar escala para el eje z"
-#: src/exec_set.cpp:859
+#: src/exec_set.cpp:868
msgid "Set ticks in time format"
msgstr "Especificar escala en formato de tiempo"
-#: src/exec_set.cpp:861
+#: src/exec_set.cpp:870
msgid "Set ticks tuning"
msgstr "Afinar escala"
-#: src/exec_set.cpp:846
+#: src/exec_set.cpp:855
msgid "Set to auto rotate text or not"
msgstr "Activar/desactivar rotacion de texto"
msgid "Set to use whole area (style '#')"
msgstr "Usar toda el area (estilo '#')"
-#: src/exec_set.cpp:860
+#: src/exec_set.cpp:869
msgid "Set type transparency"
msgstr "Especificar tipo de transparencia"
msgid "Set value of \\phi angle."
msgstr "Especificar valor de ángulo \\phi."
-#: udav/plot_pnl.cpp:472
+#: udav/plot_pnl.cpp:473
msgid ""
"Set value of \\phi angle.\n"
"You can use keys (Shift+Meta+Left or Shift+Meta+Right)."
msgid "Set value of \\theta angle."
msgstr "Especificar valor de ángulo \\theta."
-#: udav/plot_pnl.cpp:466
+#: udav/plot_pnl.cpp:467
msgid ""
"Set value of \\theta angle.\n"
"You can use keys (Shift+Meta+Up or Shift+Meta+Down)."
msgid "Setup colors for:"
msgstr "Config. colores para:"
-#: src/exec_set.cpp:823
+#: src/exec_set.cpp:832
msgid "Setup font"
msgstr "Config. fuente"
-#: src/exec_set.cpp:828
+#: src/exec_set.cpp:837
msgid "Setup light"
msgstr "Config. luz"
-#: src/exec_prm.cpp:629
+#: src/exec_prm.cpp:630
msgid "Setup or draw axis"
msgstr "Config. o graficar eje"
-#: src/exec_set.cpp:818
+#: src/exec_set.cpp:826
msgid "Setup plot points cutting"
msgstr "Config. cortado de gráfica"
msgid "Setup script"
msgstr "Config. script"
-#: udav/plot_pnl.cpp:573
+#: udav/plot_pnl.cpp:574
msgid "Setup show"
msgstr "Config. animación"
msgid "Sharp colors"
msgstr "Colores fuertes"
-#: src/exec_set.cpp:851
+#: src/exec_set.cpp:860
msgid "Shear plot"
msgstr "Recortar gráfica"
msgid "Show dialog for UDAV properties."
msgstr "Mostrar dialogo de propiedades de UDAV."
-#: udav/text_pnl.cpp:560 udav/plot_pnl.cpp:441
+#: udav/text_pnl.cpp:560 udav/plot_pnl.cpp:442
msgid "Show dialog for new command or edit arguments of existed one."
msgstr ""
"Mostrar dialogo de nuevo comando o editar argumentos de los existentes."
-#: udav/text_pnl.cpp:564 udav/plot_pnl.cpp:446
+#: udav/text_pnl.cpp:564 udav/plot_pnl.cpp:447
msgid "Show dialog for new inplot and put it into the script."
msgstr "Mostrar dialogo para nuevo gráfico interno y añadirlo al script."
msgid "Show next frame in slideshow"
msgstr "Mostrar sgte. cuadro de la animación"
-#: widgets/qt.cpp:1266 udav/plot_pnl.cpp:563
+#: widgets/qt.cpp:1266 udav/plot_pnl.cpp:564
msgid "Show next slide (Ctrl+.)."
msgstr "Mostrar sgte. cuadro (Ctrl+.)."
msgid "Show previous frame in slideshow"
msgstr "Mostrar cuadro previo de la animación"
-#: widgets/qt.cpp:1275 udav/plot_pnl.cpp:578
+#: widgets/qt.cpp:1275 udav/plot_pnl.cpp:579
msgid "Show previous slide (Ctrl+,)."
msgstr "Mostrar cuadro previo (Ctrl+,)."
msgid "Show window for primitives"
msgstr "Mostrar dialogo de propiedades de UDAV."
-#: src/random.cpp:354
+#: src/random.cpp:349
msgid "Shuffle data cells (for dir='a') or slices (for dir='xyz')"
msgstr ""
msgid "Skip commands and iterate for-loop again"
msgstr "Saltar comandos e iterar bucle \"for\" nuevamente"
-#: widgets/qt.cpp:1268 udav/plot_pnl.cpp:566
+#: widgets/qt.cpp:1268 udav/plot_pnl.cpp:567
msgid "Slideshow"
msgstr "Animación"
msgid "Step for pulse diffraction"
msgstr "Paso para pulso de difracción"
-#: widgets/qt.cpp:1152 udav/plot_pnl.cpp:347
+#: widgets/qt.cpp:1152 udav/plot_pnl.cpp:348
msgid "Stop"
msgstr "Deterner"
msgid "Stop execution"
msgstr "Detener ejecución"
-#: udav/plot_pnl.cpp:349
+#: udav/plot_pnl.cpp:350
msgid "Stop script execution (F7)."
msgstr "Detener ejecución de script (F7)."
msgid "Swap parts"
msgstr "Intercambiar partes"
-#: src/exec_set.cpp:856
+#: src/exec_set.cpp:865
#, fuzzy
msgid "Switch on/off TeX parsing at text output"
msgstr "Activar/desactivar transparencia en la imagen"
-#: src/exec_set.cpp:822
+#: src/exec_set.cpp:831
msgid "Switch on/off fog"
msgstr "Activar/desactivar niebla"
-#: src/exec_set.cpp:824
+#: src/exec_set.cpp:833
msgid "Switch on/off gray-scale mode"
msgstr "Activar/desactivar modo B/N"
msgstr "Activar/desactivar dibujado de grilla"
# Activar/desactivar=(Des)activar?
-#: udav/plot_pnl.cpp:307
+#: udav/plot_pnl.cpp:308
msgid "Switch on/off grid of absolute coordinates (Ctrl+G)."
msgstr "Activar/desactivar grilla de coordenadas absolutas (Ctrl+G)."
msgid "Switch on/off lightning for the graphics (Alt+L)."
msgstr "Activar/desactivar luz para las gráficas (Alt+L)."
-#: udav/plot_pnl.cpp:301
+#: udav/plot_pnl.cpp:302
msgid "Switch on/off lightning for the graphics (Ctrl+L)."
msgstr "Activar/desactivar luz para las gráficas (Alt+L)."
msgid "Switch on/off lightning in the picture"
msgstr "Activar/desactivar luz en la imagen"
-#: widgets/qt.cpp:1131 udav/plot_pnl.cpp:314
+#: widgets/qt.cpp:1131 udav/plot_pnl.cpp:315
msgid ""
"Switch on/off mouse handling of the graphics\n"
"(rotation, shifting, zooming and perspective)."
msgstr "Activar/desactivar zoom con el mouse de la región seleccionada."
# Ternario or triple?
-#: src/exec_set.cpp:855
+#: src/exec_set.cpp:864
msgid "Switch on/off to use ternary axis"
msgstr "Activar/desactivar uso de ejes ternarios"
-#: src/exec_set.cpp:803
+#: src/exec_set.cpp:811
msgid "Switch on/off transparency"
msgstr "Activar/desactivar transparencia"
msgid "Switch on/off transparency for the graphics (Alt+T)."
msgstr "Activar/desactivar transparencia para gráfica (Alt+T)."
-#: udav/plot_pnl.cpp:294
+#: udav/plot_pnl.cpp:295
msgid "Switch on/off transparency for the graphics (Ctrl+T)."
msgstr "Activar/desactivar transparencia para gráfica (Alt+T)."
msgid "Symmetrical?"
msgstr "¿Simétrico?"
-#: src/addon.cpp:121 src/base_cf.cpp:281
+#: src/addon.cpp:122 src/base_cf.cpp:283
#, c-format
msgid "TEST: %s\n"
msgstr "TEST: %s\n"
"Los diálogos especiales (Editar|Insertar|Nuevo comando) ayudan a seleccionar "
"un comando, llenar sus argumentos y añadirlo al script."
-#: src/crust.cpp:590
+#: src/crust.cpp:619
msgid ""
"There are duplicated or indistinguishably adjacent points for triangulation."
msgstr ""
msgid "Wire style"
msgstr "Estilo de alambre"
-#: src/exec_set.cpp:865
+#: src/exec_set.cpp:874
msgid "Write current image to graphical file"
msgstr "Guardar imagen actual a archivo gráfico"
msgid "X/Z"
msgstr "X/Z"
-#: widgets/qt.cpp:1098 udav/plot_pnl.cpp:489
+#: widgets/qt.cpp:1098 udav/plot_pnl.cpp:490
msgid "XYZ"
msgstr "XYZ"
msgid "Z-slice from"
msgstr "Sección z para"
-#: src/exec_set.cpp:871
+#: src/exec_set.cpp:880
msgid "Zoom axis range"
msgstr "Rango de zoom para eje"
msgstr "Escalar gráfica"
# Zoom in=acercar or ampliar?
-#: widgets/qt.cpp:1242 udav/plot_pnl.cpp:515
+#: widgets/qt.cpp:1242 udav/plot_pnl.cpp:516
msgid "Zoom in"
msgstr "Magnificar"
-#: widgets/qt.cpp:1244 udav/plot_pnl.cpp:518
+#: widgets/qt.cpp:1244 udav/plot_pnl.cpp:519
msgid "Zoom in graphics."
msgstr "Magnificar gráfica."
msgid "Zoom in the picture"
msgstr "Magnificar la imagen"
-#: widgets/qt.cpp:1246 udav/plot_pnl.cpp:521
+#: widgets/qt.cpp:1246 udav/plot_pnl.cpp:522
msgid "Zoom out"
msgstr "Reducir"
-#: widgets/qt.cpp:1248 udav/plot_pnl.cpp:524
+#: widgets/qt.cpp:1248 udav/plot_pnl.cpp:525
msgid "Zoom out graphics."
msgstr "Reducir gráfica."
msgid "Zoom out the picture"
msgstr "Reducir la imagen"
-#: src/exec_set.cpp:870
+#: src/exec_set.cpp:879
msgid "Zoom plot region"
msgstr "Escalar región de gráfica"
#. zooming menu
-#: widgets/qt.cpp:1231 udav/plot_pnl.cpp:502
+#: widgets/qt.cpp:1231 udav/plot_pnl.cpp:503
msgid "Zoom/move"
msgstr "Zoom/mover"
msgid "bars"
msgstr "barras"
-#: widgets/qt.cpp:1088 udav/plot_pnl.cpp:478
+#: widgets/qt.cpp:1088 udav/plot_pnl.cpp:479
msgid "bitmap EPS"
msgstr "mapa de bits EPS"
#, c-format
msgid ""
"mglconv convert mgl script to image file (default PNG).\n"
-"Current version is 2.%g\n"
+"Current version is %s\n"
msgstr ""
"mglconv convierte scripts MGL a archivos de imagen (PNG por defecto).\n"
-"La version actual es 2.%g\n"
+"La version actual es %s\n"
#: mgllab/mgllab.cpp:422
#, c-format
msgid ""
"mgllab draw mgl script interactively.\n"
-"Current version is 2.%g\n"
+"Current version is %s\n"
msgstr ""
"mgllab gráfica scripts MGL de manera interactiva.\n"
-"La version actual es 2.%g\n"
+"La version actual es %s\n"
#: mgllab/help.cpp:78
#, c-format
msgid ""
-"mgllab v. 2.%g\n"
+"mgllab v. %s\n"
"(c) Alexey Balakin, 2017\n"
"http://mathgl.sf.net/"
msgstr ""
-"mgllab v. 2.%g\n"
+"mgllab v. %s\n"
"(c) Alexey Balakin, 2017\n"
"http://mathgl.sf.net/"
#, c-format
msgid ""
"mglview show plot from MGL script or MGLD file.\n"
-"Current version is 2.%g\n"
+"Current version is %s\n"
msgstr ""
"mglview muestra la gráfica de un script MGL o de un archivo MGLD.\n"
-"La version actual es 2.%g\n"
+"La version actual es %s\n"
#: udav/data_dlg.cpp:68
msgid "min"
msgid "solid"
msgstr "sólido"
-#: widgets/qt.cpp:1086 udav/plot_pnl.cpp:476
+#: widgets/qt.cpp:1086 udav/plot_pnl.cpp:477
msgid "solid PNG"
msgstr "PNG sólido"
msgid "values"
msgstr "valores"
-#: widgets/qt.cpp:1089 udav/plot_pnl.cpp:479
+#: widgets/qt.cpp:1089 udav/plot_pnl.cpp:480
msgid "vector EPS"
msgstr "EPS vectorial"
msgstr ""
"Project-Id-Version: MathGL2 2.4.0\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-12-03 16:47+0300\n"
+"POT-Creation-Date: 2021-12-27 05:03+0300\n"
"PO-Revision-Date: 2017-04-19 01:17+0300\n"
"Last-Translator: Alexey Balakin <mathgl.abalakin@gmail.com>\n"
"Language-Team: Russian\n"
msgid " Yes "
msgstr "Да"
-#: udav/plot_pnl.cpp:191
+#: udav/plot_pnl.cpp:192
#, c-format
msgid "%d - %d of %d"
msgstr "%d - %d из %d"
msgid "About Qt"
msgstr "О версии Qt"
-#: widgets/qt.cpp:1173 udav/plot_pnl.cpp:372
+#: widgets/qt.cpp:1173 udav/plot_pnl.cpp:373
msgid "Add arc"
msgstr "Добавить дугу"
-#: widgets/qt.cpp:1176 udav/plot_pnl.cpp:375
+#: widgets/qt.cpp:1176 udav/plot_pnl.cpp:376
msgid "Add arc which properties can be changed later by mouse."
msgstr "Добавить дугу. Ее свойства можно изменить позже мышью."
msgid "Add command option(s)"
msgstr "Добавить опции команды"
-#: widgets/qt.cpp:1178 udav/plot_pnl.cpp:378
+#: widgets/qt.cpp:1178 udav/plot_pnl.cpp:379
msgid "Add curve"
msgstr "Добавить кривую"
-#: widgets/qt.cpp:1181 udav/plot_pnl.cpp:381
+#: widgets/qt.cpp:1181 udav/plot_pnl.cpp:382
msgid "Add curve which properties can be changed later by mouse."
msgstr "Добавить кривую. Ее свойства можно изменить позже мышью."
msgid "Add data or number"
msgstr "Прибавить массив или число"
-#: widgets/qt.cpp:1193 udav/plot_pnl.cpp:396
+#: widgets/qt.cpp:1193 udav/plot_pnl.cpp:397
msgid "Add ellipse"
msgstr "Добавить эллипс"
-#: widgets/qt.cpp:1196 udav/plot_pnl.cpp:399 udav/plot_pnl.cpp:405
+#: widgets/qt.cpp:1196 udav/plot_pnl.cpp:400 udav/plot_pnl.cpp:406
msgid "Add ellipse which properties can be changed later by mouse."
msgstr "Добавить эллипс. Его свойства можно изменить позже мышью."
msgid "Add inplot"
msgstr "Добавить под-график"
-#: src/exec_set.cpp:800
+#: src/exec_set.cpp:808
msgid "Add legend entry"
msgstr "Добавить запись легенды"
msgid "Add legend entry for the plot"
msgstr "Добавить запись легенды для графика"
-#: widgets/qt.cpp:1168 udav/plot_pnl.cpp:366
+#: widgets/qt.cpp:1168 udav/plot_pnl.cpp:367
msgid "Add line"
msgstr "Добавить линию"
-#: widgets/qt.cpp:1171 udav/plot_pnl.cpp:369
+#: widgets/qt.cpp:1171 udav/plot_pnl.cpp:370
msgid "Add line which properties can be changed later by mouse."
msgstr "Добавить линию. Ее свойства можно изменить позже мышью."
-#: widgets/qt.cpp:1203 udav/plot_pnl.cpp:408
+#: widgets/qt.cpp:1203 udav/plot_pnl.cpp:409
msgid "Add mark"
msgstr "Добавить маркер"
-#: widgets/qt.cpp:1206 udav/plot_pnl.cpp:411
+#: widgets/qt.cpp:1206 udav/plot_pnl.cpp:412
msgid "Add marker which properties can be changed later by mouse."
msgstr "Добавить маркер. Его свойства можно изменить позже мышью."
-#: widgets/qt.cpp:1198 udav/plot_pnl.cpp:402
+#: widgets/qt.cpp:1198 udav/plot_pnl.cpp:403
msgid "Add polygon"
msgstr "Добавить полигон"
msgid "Add primitive"
msgstr "Добавить примитивы"
-#: widgets/qt.cpp:1183 udav/plot_pnl.cpp:384
+#: widgets/qt.cpp:1183 udav/plot_pnl.cpp:385
msgid "Add rect"
msgstr "Добавить прямоугольник"
-#: widgets/qt.cpp:1186 udav/plot_pnl.cpp:387
+#: widgets/qt.cpp:1186 udav/plot_pnl.cpp:388
msgid "Add rectangle which properties can be changed later by mouse."
msgstr "Добавить прямоугольник. Его свойства можно изменить позже мышью."
-#: widgets/qt.cpp:1188 udav/plot_pnl.cpp:390
+#: widgets/qt.cpp:1188 udav/plot_pnl.cpp:391
msgid "Add rhombus"
msgstr "Добавить ромб"
-#: widgets/qt.cpp:1191 udav/plot_pnl.cpp:393
+#: widgets/qt.cpp:1191 udav/plot_pnl.cpp:394
msgid "Add rhombus which properties can be changed later by mouse."
msgstr "Добавить ромб. Его свойства можно изменить позже мышью."
-#: widgets/qt.cpp:1208 udav/plot_pnl.cpp:414
+#: widgets/qt.cpp:1208 udav/plot_pnl.cpp:415
msgid "Add text"
msgstr "Добавить текст"
-#: widgets/qt.cpp:1211 udav/plot_pnl.cpp:417
+#: widgets/qt.cpp:1211 udav/plot_pnl.cpp:418
msgid "Add text which properties can be changed later by mouse."
msgstr "Добавить текст. Его свойства можно изменить позже мышью."
-#: src/exec_prm.cpp:662
+#: src/exec_prm.cpp:663
msgid "Add title for current subplot/inplot"
msgstr "Добавить заголовок к текущему под-графику"
msgid "Add to"
msgstr "Добавить к"
-#: src/exec_set.cpp:801
+#: src/exec_set.cpp:809
msgid "Add user-defined symbol"
msgstr "Добавить пользовательский символ"
msgid "Adjust picture size to fill drawing area"
msgstr "Подогнать размер картинки под область окна"
-#: widgets/fltk.cpp:846 widgets/qt.cpp:1156 udav/plot_pnl.cpp:337
+#: widgets/fltk.cpp:846 widgets/qt.cpp:1156 udav/plot_pnl.cpp:338
msgid "Adjust size"
msgstr "Подогнать размер"
-#: src/exec_set.cpp:802
+#: src/exec_set.cpp:810
msgid "Adjust ticks for best view"
msgstr "Подобрать метки осей для лучшего вида"
#. graphics menu
#: widgets/qt.cpp:1115 udav/opt_dlg.cpp:51 udav/setup_dlg.cpp:109
-#: udav/plot_pnl.cpp:290 mgllab/dialogs.cpp:109
+#: udav/plot_pnl.cpp:291 mgllab/dialogs.cpp:109
msgid "Alpha"
msgstr ""
msgstr "Угол относительно оси z (в градусах)"
#. animation menu
-#: widgets/qt.cpp:1261 widgets/qt.cpp:1262 udav/plot_pnl.cpp:559
+#: widgets/qt.cpp:1261 widgets/qt.cpp:1262 udav/plot_pnl.cpp:560
#: mgllab/mathgl.cpp:185
msgid "Animation"
msgstr "Анимация"
msgid "Aspect x/z"
msgstr "Стороны x/z"
-#: src/exec_set.cpp:808
+#: src/exec_set.cpp:816
msgid "Attach light settings to inplot"
msgstr "Привязать настройки света к под-графику"
msgid "Cancel"
msgstr "Отмена"
-#: src/crust.cpp:588
+#: src/crust.cpp:617
msgid "Cannot triangulate this set!"
msgstr "Не могу построить триангуляцию!"
msgid "Change (resize) data"
msgstr "Изменить размер данных"
-#: widgets/qt.cpp:1158 udav/plot_pnl.cpp:339
+#: widgets/qt.cpp:1158 udav/plot_pnl.cpp:340
msgid "Change canvas size to fill whole region (F6)."
msgstr "Подогнать размер рисунка под размер окна (F6)."
-#: src/exec_set.cpp:812
+#: src/exec_set.cpp:820
msgid "Change current directory"
msgstr "Сменить директорию"
msgid "Change font"
msgstr "Изменить шрифт"
-#: src/exec_set.cpp:864
+#: src/exec_set.cpp:873
msgid "Change view angles - use 'rotate' for plot rotation"
msgstr "Изменяет углы обзора, а не поворот как 'rotate'"
msgid "Clear all"
msgstr "Удалить все"
-#: src/exec_set.cpp:813
+#: src/exec_set.cpp:821
msgid "Clear legend entries"
msgstr "Удалить записи легенды"
-#: src/exec_set.cpp:814
+#: src/exec_set.cpp:822
msgid "Clear picture"
msgstr "Очистить рисунок"
msgid "Comments"
msgstr "Комментарий"
-#: src/exec_prm.cpp:650
+#: src/exec_prm.cpp:651
msgid "Computes the attractor of an IFS"
msgstr "Вычисляет точки фрактала IFS"
-#: src/exec_prm.cpp:651
+#: src/exec_prm.cpp:652
msgid "Computes the attractor of an IFS for 3d case"
msgstr "Вычисляет точки фрактала IFS в 3d случае"
-#: src/exec_prm.cpp:652
+#: src/exec_prm.cpp:653
msgid "Computes the attractor of an IFS with parameters from *.ifs file"
msgstr "Вычисляет точки фрактала IFS с параметрами из файла"
-#: src/exec_prm.cpp:646
+#: src/exec_prm.cpp:647
msgid "Computes the flame fractal"
msgstr "Вычисляет точки фрактала flame"
msgid "Conditional operator"
msgstr "Условный оператор"
-#: udav/plot_pnl.cpp:358
+#: udav/plot_pnl.cpp:359
msgid "Copy click coor."
msgstr "Копировать коор. мыши"
-#: udav/plot_pnl.cpp:360
+#: udav/plot_pnl.cpp:361
msgid "Copy coordinates of last mouse click to clipboard."
msgstr "Копировать координаты последнего нажатия в буфер обмена"
msgid "Copy graphics"
msgstr "Копировать рисунок"
-#: widgets/qt.cpp:1162 udav/plot_pnl.cpp:354
+#: widgets/qt.cpp:1162 udav/plot_pnl.cpp:355
msgid "Copy graphics to clipboard (Ctrl+Shift+G)."
msgstr "Копировать рисунок в буфер обмена (Ctrl+Shift+G)."
msgid "Copy image to clipboard"
msgstr "Копировать рисунок в буфер обмена"
-#: widgets/qt.cpp:1160 udav/plot_pnl.cpp:352
+#: widgets/qt.cpp:1160 udav/plot_pnl.cpp:353
msgid "Copy plot"
msgstr "Копировать рисунок"
msgid "Data transform"
msgstr "Преобразование данных"
-#: udav/plot_pnl.cpp:556
+#: udav/plot_pnl.cpp:557
msgid "Decrease \\phi angle by 10 degrees."
msgstr "Уменьшить угол φ на 10 градусов."
-#: udav/plot_pnl.cpp:548
+#: udav/plot_pnl.cpp:549
msgid "Decrease \\theta angle by 10 degrees."
msgstr "Уменьшить угол θ на 10 градусов."
msgid "Delete data or slice of data"
msgstr "Удалить данные или их срез"
-#: udav/plot_pnl.cpp:426
+#: udav/plot_pnl.cpp:427
msgid "Delete selected"
msgstr "Удалить выбранное"
msgid "Delete selected data."
msgstr "Удалить выбранные данные."
-#: udav/plot_pnl.cpp:428
+#: udav/plot_pnl.cpp:429
msgid "Delete selected plot."
msgstr "Удалить выбранный график"
msgid "Direction along which data will be filled"
msgstr "Направление по которому данные будут заполняться"
+#: src/exec_set.cpp:830
+msgid "Disable accurate primitive cutting at axis borders"
+msgstr ""
+
#: udav/subplot_dlg.cpp:105 udav/subplot_dlg.cpp:122
msgid "Distance between cells"
msgstr "Расстояние между ячейками"
msgid "Draw TeX mark at point position"
msgstr "Нарисовать ТеХ символы в положении точек"
-#: src/exec_prm.cpp:628
+#: src/exec_prm.cpp:629
msgid "Draw angle arc"
msgstr "Нарисовать дугу"
msgid "Draw binormales for 1D data"
msgstr "Нарисовать нормаль и бинормаль для кривой"
-#: src/exec_prm.cpp:655
+#: src/exec_prm.cpp:656
msgid "Draw bitmap (logo) along axis range"
msgstr "Нарисовать растр (логотип) в области осей координат"
-#: src/exec_prm.cpp:632
+#: src/exec_prm.cpp:633
msgid "Draw bounding box"
msgstr "Нарисовать ограничивающий параллелепипед"
msgid "Draw chart"
msgstr "Нарисовать линейчатую (круговую) диаграмму"
-#: src/exec_prm.cpp:633
+#: src/exec_prm.cpp:634
msgid "Draw circle"
msgstr "Нарисовать окружность (круг)"
msgid "Draw cloud"
msgstr "Нарисовать облако для 3D данных"
-#: src/exec_prm.cpp:635
+#: src/exec_prm.cpp:636
msgid "Draw colorbar"
msgstr "Нарисовать цветовую шкалу"
-#: src/exec_prm.cpp:636
+#: src/exec_prm.cpp:637
msgid "Draw cone"
msgstr "Нарисовать конус"
msgid "Draw contour tubes for surface of triangles"
msgstr "Нарисовать цилиндры по линиям уровней для поверхности из треугольников"
-#: src/exec_prm.cpp:637
+#: src/exec_prm.cpp:638
msgid "Draw curve"
msgstr "Нарисовать кривую"
msgstr "Нарисовать трубу около кривой"
#: src/exec_gr.cpp:1234
-#, fuzzy
msgid "Draw curves of cross-section of isosurfaces a,b for 3D data"
-msgstr "Ð\9dаÑ\80иÑ\81оваÑ\82Ñ\8c повеÑ\80Ñ\85ноÑ\81Ñ\82Ñ\8c постоянного уровня"
+msgstr "Ð\9dаÑ\80иÑ\81оваÑ\82Ñ\8c линии пеÑ\80еÑ\81еÑ\87ениÑ\8f повеÑ\80Ñ\85ноÑ\81Ñ\82ей постоянного уровня"
#: src/exec_gr.cpp:1235
msgid "Draw density plot"
msgid "Draw dots for arbitrary data points"
msgstr "Нарисовать набор точек"
-#: src/exec_prm.cpp:638
+#: src/exec_prm.cpp:639
msgid "Draw drop"
msgstr "Нарисовать каплю"
-#: src/exec_prm.cpp:639
+#: src/exec_prm.cpp:640
msgid "Draw ellipse"
msgstr "Нарисовать эллипс"
-#: src/exec_prm.cpp:640
+#: src/exec_prm.cpp:641
msgid "Draw error box"
msgstr "Нарисовать размер ошибки"
msgid "Draw error boxes"
msgstr "Нарисовать размеры ошибок для 1D данных"
-#: src/exec_prm.cpp:641
+#: src/exec_prm.cpp:642
msgid "Draw face (quadrangle)"
msgstr "Нарисовать грань (четырехугольник)"
-#: src/exec_prm.cpp:642
+#: src/exec_prm.cpp:643
msgid "Draw face perpendicular to x-axis"
msgstr "Нарисовать грань поперек оси x"
-#: src/exec_prm.cpp:643
+#: src/exec_prm.cpp:644
msgid "Draw face perpendicular to y-axis"
msgstr "Нарисовать грань поперек оси y"
-#: src/exec_prm.cpp:644
+#: src/exec_prm.cpp:645
msgid "Draw face perpendicular to z-axis"
msgstr "Нарисовать грань поперек оси z"
msgid "Draw gradient lines for scalar field"
msgstr "Нарисовать линии градиента для скалярного поля"
-#: src/exec_prm.cpp:649
+#: src/exec_prm.cpp:650
msgid "Draw grid"
msgstr "Нарисовать сетку осей координат"
msgid "Draw label at arbitrary position"
msgstr "Вывести надписи для 1D данных"
-#: src/exec_prm.cpp:634
+#: src/exec_prm.cpp:635
msgid "Draw label for colorbar"
msgstr "Вывести подпись colorbar"
-#: src/exec_prm.cpp:663
+#: src/exec_prm.cpp:664
msgid "Draw label for t-axis"
msgstr "Вывести подпись оси t"
-#: src/exec_prm.cpp:664
+#: src/exec_prm.cpp:665
msgid "Draw label for x-axis"
msgstr "Вывести подпись оси x"
-#: src/exec_prm.cpp:665
+#: src/exec_prm.cpp:666
msgid "Draw label for y-axis"
msgstr "Вывести подпись оси y"
-#: src/exec_prm.cpp:666
+#: src/exec_prm.cpp:667
msgid "Draw label for z-axis"
msgstr "Вывести подпись оси z"
-#: src/exec_prm.cpp:653
+#: src/exec_prm.cpp:654
msgid "Draw legend"
msgstr "Нарисовать легенду графика"
-#: src/exec_prm.cpp:654
+#: src/exec_prm.cpp:655
msgid "Draw line"
msgstr "Нарисовать прямую линию"
#: src/exec_gr.cpp:1253
-#, fuzzy
msgid "Draw lines with arrows for 1D data"
-msgstr "Нарисовать график из вертикальных полос"
+msgstr "Нарисовать график из стрелок"
#: src/exec_gr.cpp:1254
msgid "Draw mapping plot"
msgid "Draw mesh surface"
msgstr "Нарисовать сетчатую поверхность"
-#: src/exec_prm.cpp:631
+#: src/exec_prm.cpp:632
msgid "Draw point (ball)"
msgstr "Нарисовать точку"
-#: src/exec_prm.cpp:656
+#: src/exec_prm.cpp:657
msgid "Draw polygon"
msgstr "Нарисовать полигон"
msgid "Draw reconstructed surface for arbitrary data points"
msgstr "Нарисовать поверхность по произвольным точкам"
-#: src/exec_prm.cpp:657
+#: src/exec_prm.cpp:658
msgid "Draw rectangle"
msgstr "Нарисовать прямоугольник"
-#: src/exec_prm.cpp:658
+#: src/exec_prm.cpp:659
msgid "Draw rhombus"
msgstr "Нарисовать ромб"
msgid "Draw solid surface transpared by other data"
msgstr "Нарисовать поверхность с заданной прозрачностью"
-#: src/exec_prm.cpp:659
+#: src/exec_prm.cpp:660
msgid "Draw sphere"
msgstr "Нарисовать сферу"
msgid "Draw tension plot for 1D data"
msgstr "Нарисовать кривую с заданным цветом"
-#: src/exec_prm.cpp:661
+#: src/exec_prm.cpp:662
msgid "Draw text at some position or along curve"
msgstr "Вывести текст в точке или вдоль кривой"
-#: src/exec_prm.cpp:660
+#: src/exec_prm.cpp:661
msgid "Draw user-defined symbol at given position and direction"
msgstr "Нарисовать символ в заданных точке и направлении"
msgid "Draw waterfalls"
msgstr "Нарисовать поверхность набором линий (водопад)"
-#: udav/plot_pnl.cpp:111 udav/plot_pnl.cpp:130
+#: udav/plot_pnl.cpp:112 udav/plot_pnl.cpp:131
msgid "Drawing time %1 ms"
msgstr "Время рисования %1 мс"
msgid "Execute script after loading"
msgstr "Выполнить скрипт после загрузки"
-#: widgets/qt.cpp:1149 udav/plot_pnl.cpp:333
+#: widgets/qt.cpp:1149 udav/plot_pnl.cpp:334
msgid "Execute script and redraw graphics (F5)."
msgstr "Выполнить скрипт и обновить рисунок (F5)."
msgid "Export as ..."
msgstr "Экспорт как ..."
-#: widgets/qt.cpp:1084 udav/plot_pnl.cpp:474
+#: widgets/qt.cpp:1084 udav/plot_pnl.cpp:475
msgid "Export as 2D ..."
msgstr "Экспорт как 2D ..."
-#: widgets/qt.cpp:1093 udav/plot_pnl.cpp:484
+#: widgets/qt.cpp:1093 udav/plot_pnl.cpp:485
msgid "Export as 3D ..."
msgstr "Экспорт как 3D ..."
msgid "Fill x-,k-samples for transforms"
msgstr "Заполнить как x-,k-координаты для трансформации"
-#: src/random.cpp:350
+#: src/random.cpp:345
msgid "Fills by fractional brownian motion"
msgstr "Заполнить броуновским движением"
-#: src/random.cpp:356
+#: src/random.cpp:351
msgid "Fills by random integers uniformly chosen in [lo, hi)"
msgstr "Заполнить случайными целыми числами в интервале [lo, hi)"
-#: src/random.cpp:348
+#: src/random.cpp:343
msgid ""
"Fills by random numbers according to Bernoulli distribution with probability "
"p"
msgstr "Заполнить случайными числами с распределением Бернулли"
-#: src/random.cpp:353
+#: src/random.cpp:348
msgid "Fills by random numbers according to Gaussian distribution"
msgstr "Заполнить случайными числами с гауссовым распределением"
-#: src/random.cpp:349
+#: src/random.cpp:344
msgid ""
"Fills by random numbers according to binomial distribution in n coin flips "
"with probability p"
msgstr "Заполнить случайными числами с биномиальным распределением"
-#: src/random.cpp:351
+#: src/random.cpp:346
msgid "Fills by random numbers according to discrete distribution"
msgstr "Заполнить случайными числами с дискретным распределением"
-#: src/random.cpp:352
+#: src/random.cpp:347
msgid ""
"Fills by random numbers according to exponential distribution with "
"probability p"
msgstr "Заполнить случайными числами с экспоненциальным распределением"
-#: src/random.cpp:355
+#: src/random.cpp:350
msgid "Fills by random numbers uniformly chosen in [lo,hi)"
msgstr "Заполнить случайными числами в интервале [lo, hi)"
msgstr "Найти огибающую в направлении"
#: src/exec_dat.cpp:1759
-#, fuzzy
msgid "Find first indexes of values larger val over direction"
-msgstr "Ð\9dайÑ\82и минимÑ\83м по направлению"
+msgstr "Ð\9dайÑ\82и пеÑ\80вÑ\8bй индекÑ\81 знаÑ\87ениÑ\8f болÑ\8cÑ\88его val по направлению"
#: udav/dat_pnl.cpp:804
msgid "Find histogram of data."
msgstr "Найти гистограмму данных"
#: src/exec_dat.cpp:1773
-#, fuzzy
msgid "Find last indexes of values larger val over direction"
-msgstr "Ð\9dайÑ\82и макÑ\81имÑ\83м по направлению"
+msgstr "Ð\9dайÑ\82и поÑ\81ледний индекÑ\81 знаÑ\87ениÑ\8f болÑ\8cÑ\88его val по направлению"
#: src/exec_dat.cpp:1776
msgid "Find maximal value over direction"
msgid "Forward"
msgstr "Вперед"
-#: udav/plot_pnl.cpp:192
+#: udav/plot_pnl.cpp:193
msgid "Frame %1 of %2"
msgstr "Кадр %1 из %2"
msgid "Go to the specified slice for 3D data."
msgstr "Перейти к указанному срезу 3D данных"
-#: widgets/qt.cpp:1112 widgets/qt.cpp:1114 udav/plot_pnl.cpp:66
+#: widgets/qt.cpp:1112 widgets/qt.cpp:1114 udav/plot_pnl.cpp:67
#: mgllab/mgllab.cpp:325
msgid "Graphics"
msgstr "Графика"
msgid "Graphics/Transform/Zoom out"
msgstr "Графика/Сдвиг/Отдалить"
-#: udav/plot_pnl.cpp:304
+#: udav/plot_pnl.cpp:305
msgid "Grid"
msgstr "Сетка"
msgid "Hidden plots"
msgstr "Скрытые графики"
-#: udav/plot_pnl.cpp:431
+#: udav/plot_pnl.cpp:432
msgid "Hide selected"
msgstr "Скрыть выделенное"
-#: udav/plot_pnl.cpp:433
+#: udav/plot_pnl.cpp:434
msgid "Hide selected plots."
msgstr "Скрыть выделенные графики"
msgid "Incorrect type of base data"
msgstr "Неверный тип данных"
-#: udav/plot_pnl.cpp:552
+#: udav/plot_pnl.cpp:553
msgid "Increase \\phi angle by 10 degrees."
msgstr "Увеличить угол φ на 10 градусов"
-#: udav/plot_pnl.cpp:544
+#: udav/plot_pnl.cpp:545
msgid "Increase \\theta angle by 10 degrees."
msgstr "Увеличить угол θ на 10 градусов"
msgid "Italic style"
msgstr "Курсив"
-#: widgets/qt.cpp:1087 udav/plot_pnl.cpp:477
+#: widgets/qt.cpp:1087 udav/plot_pnl.cpp:478
msgid "JPEG"
msgstr ""
msgid "L - seagreen"
msgstr "L - морской волны"
-#: widgets/qt.cpp:1091 udav/plot_pnl.cpp:481
+#: widgets/qt.cpp:1091 udav/plot_pnl.cpp:482
msgid "LaTeX"
msgstr "LaTeX"
msgstr "Легенда"
#: widgets/qt.cpp:1121 udav/opt_dlg.cpp:64 udav/setup_dlg.cpp:110
-#: udav/plot_pnl.cpp:297 mgllab/dialogs.cpp:115
+#: udav/plot_pnl.cpp:298 mgllab/dialogs.cpp:115
msgid "Light"
msgstr "Свет"
msgid "Load Data?"
msgstr "Загрузить данные?"
-#: src/exec_set.cpp:829
+#: src/exec_set.cpp:838
msgid "Load commands from external DLL"
msgstr "Загрузить команды из внешней DLL"
"Загрузить данные. Данные будут удалены только\n"
"при выходе из программы без запроса на сохранение (Ctrl+Shift+O)."
-#: src/exec_set.cpp:830
+#: src/exec_set.cpp:839
msgid "Load fontfaces"
msgstr "Загрузить шрифт"
msgid "Load from file"
msgstr "Загрузить из файла"
-#: src/exec_prm.cpp:630
+#: src/exec_prm.cpp:631
msgid "Load image for background"
msgstr "Загрузить фоновое изображение"
"Data файлы (*.dat)\n"
"Все файлы (*.*)"
-#: widgets/qt.cpp:1094 udav/plot_pnl.cpp:485
+#: widgets/qt.cpp:1094 udav/plot_pnl.cpp:486
msgid "MGLD"
msgstr ""
msgid "Momentum along 'z' for function"
msgstr "Момент вдоль 'z' для функции"
-#: widgets/qt.cpp:1250 udav/plot_pnl.cpp:527
+#: widgets/qt.cpp:1250 udav/plot_pnl.cpp:528
msgid "Move down"
msgstr "Сдвиг вниз"
-#: widgets/qt.cpp:1252 udav/plot_pnl.cpp:530
+#: widgets/qt.cpp:1252 udav/plot_pnl.cpp:531
msgid "Move graphics down 1/3 of its height."
msgstr "Сдвинуть графику вниз на 1/3 высоты"
-#: widgets/qt.cpp:1236 udav/plot_pnl.cpp:506
+#: widgets/qt.cpp:1236 udav/plot_pnl.cpp:507
msgid "Move graphics left by 1/3 of its width."
msgstr "Сдвинуть графику влево на 1/3 ширины"
-#: widgets/qt.cpp:1256 udav/plot_pnl.cpp:536
+#: widgets/qt.cpp:1256 udav/plot_pnl.cpp:537
msgid "Move graphics right by 1/3 of its width."
msgstr "Сдвинуть графику вправо на 1/3 ширины"
-#: widgets/qt.cpp:1240 udav/plot_pnl.cpp:512
+#: widgets/qt.cpp:1240 udav/plot_pnl.cpp:513
msgid "Move graphics up by 1/3 of its height."
msgstr "Сдвинуть графику вверх на 1/3 высоты"
-#: widgets/qt.cpp:1234 udav/plot_pnl.cpp:503
+#: widgets/qt.cpp:1234 udav/plot_pnl.cpp:504
msgid "Move left"
msgstr "Сдвиг влево"
msgid "Move mouse-handled primitives to script."
msgstr "Перенести заданные вручную примитивы в скрипт."
-#: udav/plot_pnl.cpp:454
+#: udav/plot_pnl.cpp:455
msgid "Move plot down"
msgstr "Сдвинуть график вниз"
-#: udav/plot_pnl.cpp:449
+#: udav/plot_pnl.cpp:450
msgid "Move plot up"
msgstr "Сдвинуть график вверх"
-#: widgets/qt.cpp:1254 udav/plot_pnl.cpp:533
+#: widgets/qt.cpp:1254 udav/plot_pnl.cpp:534
msgid "Move right"
msgstr "Сдвиг вправо"
-#: udav/plot_pnl.cpp:456
+#: udav/plot_pnl.cpp:457
msgid "Move selected plot down to next subplot."
msgstr "Переместить выбранное в следующий под-график."
-#: udav/plot_pnl.cpp:451
+#: udav/plot_pnl.cpp:452
msgid "Move selected plot up to previous subplot."
msgstr "Переместить выбранное в предыдущий под-график."
-#: widgets/qt.cpp:1238 udav/plot_pnl.cpp:509
+#: widgets/qt.cpp:1238 udav/plot_pnl.cpp:510
msgid "Move up"
msgstr "Сдвиг вверх"
#: udav/newcmd_dlg.cpp:101 udav/newcmd_dlg.cpp:308 udav/newcmd_dlg.cpp:336
#: udav/newcmd_dlg.cpp:340 udav/newcmd_dlg.cpp:354 udav/newcmd_dlg.cpp:367
#: udav/newcmd_dlg.cpp:375 udav/newcmd_dlg.cpp:379 udav/newcmd_dlg.cpp:383
-#: udav/text_pnl.cpp:558 udav/plot_pnl.cpp:439 mgllab/dialogs.cpp:702
+#: udav/text_pnl.cpp:558 udav/plot_pnl.cpp:440 mgllab/dialogs.cpp:702
msgid "New command"
msgstr "Новая команда"
"поверхность с линиями уровня вызывая последовательно 'surf' и 'cont' (в "
"любом порядке)."
-#: udav/text_pnl.cpp:562 udav/plot_pnl.cpp:444
+#: udav/text_pnl.cpp:562 udav/plot_pnl.cpp:445
msgid "New inplot"
msgstr "Новый под-график"
msgid "Next slice"
msgstr "Следующий срез"
-#: widgets/qt.cpp:1264 udav/plot_pnl.cpp:560
+#: widgets/qt.cpp:1264 udav/plot_pnl.cpp:561
msgid "Next slide"
msgstr "Следующий кадр"
msgid "Nz"
msgstr "Nz"
-#: widgets/qt.cpp:1096 udav/plot_pnl.cpp:487
+#: widgets/qt.cpp:1096 udav/plot_pnl.cpp:488
msgid "OBJ"
msgstr "OBJ"
msgid "PDF support was disabled. Please, enable it and rebuild MathGL."
msgstr "PDF поддержка отключена. Включите ее и пересоберите MathGL."
-#: widgets/qt.cpp:1085 udav/plot_pnl.cpp:475
+#: widgets/qt.cpp:1085 udav/plot_pnl.cpp:476
msgid "PNG"
msgstr ""
msgid "PNG Files \t*.png"
msgstr "PNG файлы \t*.png"
-#: src/canvas_cf.cpp:546 src/canvas_cf.cpp:548 src/data_png.cpp:118
+#: src/canvas_cf.cpp:551 src/canvas_cf.cpp:553 src/data_png.cpp:118
#: src/export.cpp:75 src/export.cpp:109
msgid "PNG support was disabled. Please, enable it and rebuild MathGL."
msgstr "PNG поддержка отключена. Включите ее и пересоберите MathGL."
-#: widgets/qt.cpp:1095 udav/plot_pnl.cpp:486
+#: widgets/qt.cpp:1095 udav/plot_pnl.cpp:487
msgid "PRC"
msgstr ""
msgid "Plot ID"
msgstr "ID графика"
-#: src/exec_prm.cpp:647
+#: src/exec_prm.cpp:648
msgid "Plot curve by formula"
msgstr "Построить кривую по формуле"
msgid "Plot style"
msgstr "Стиль графика"
-#: src/exec_prm.cpp:648
+#: src/exec_prm.cpp:649
msgid "Plot surface by formula"
msgstr "Построить поверхность по формуле"
msgid "Prev slice"
msgstr "Предыдущий срез"
-#: widgets/qt.cpp:1273 udav/plot_pnl.cpp:575
+#: widgets/qt.cpp:1273 udav/plot_pnl.cpp:576
msgid "Prev slide"
msgstr "Предыдущий кадр"
msgid "Primitives"
msgstr "Примитивы"
-#: widgets/qt.cpp:1167 udav/plot_pnl.cpp:365
+#: widgets/qt.cpp:1167 udav/plot_pnl.cpp:366
msgid "Primitives ..."
msgstr "Примитивы ..."
-#: src/exec_set.cpp:863
+#: src/exec_set.cpp:872
msgid "Print MathGL version or check if it is valid"
msgstr "Вывести версию MathGL или проверить, что она подходит"
msgid "Print script"
msgstr "Напечатать скрипт"
-#: src/exec_prm.cpp:645
+#: src/exec_prm.cpp:646
msgid "Print string from file"
msgstr "Вывести строку в файл"
msgid "R - maroon"
msgstr "R - темно-красный"
-#: src/exec_set.cpp:843
+#: src/exec_set.cpp:852
msgid "Rasterize plot and save to background"
msgstr "Растеризовать график и установить вместо фона"
msgstr "Загрузить и объединить данные из нескольких файлов"
#: src/exec_dat.cpp:1798
-#, fuzzy
msgid "Read data from binary file of specified type"
-msgstr "Загрузить данные из файла с размерами из первой строки"
+msgstr "Загрузить данные из бинарного файла заданного типа"
#: src/exec_dat.cpp:1796
msgid "Read data from file"
msgid "Redo editor change (Ctrl+Shift+Z)."
msgstr "Отменить правку в редакторе (Ctrl+Shift+Z)."
-#: widgets/qt.cpp:1147 udav/plot_pnl.cpp:331
+#: widgets/qt.cpp:1147 udav/plot_pnl.cpp:332
msgid "Redraw"
msgstr "Перерисовать"
msgid "Relative position of i-th color"
msgstr "Положение i-го цвета"
-#: udav/plot_pnl.cpp:342
+#: udav/plot_pnl.cpp:343
msgid "Reload"
msgstr "Перезагрузить"
msgid "Reserve space for labels at top side (style '^')"
msgstr "Оставить место для подписей сверху (стиль '^')"
-#: src/exec_set.cpp:844
+#: src/exec_set.cpp:853
msgid "Reset settings and clear picture"
msgstr "Сбросить настройки и обновить рисунок"
msgid "Resize data with smoothing"
msgstr "Изменить размер массива данных со сглаживанием"
-#: widgets/qt.cpp:1140 udav/plot_pnl.cpp:325
+#: widgets/qt.cpp:1140 udav/plot_pnl.cpp:326
msgid "Restore"
msgstr "Восстановить"
msgid "Restore default graphics rotation, zoom and perspective (Alt+Space)."
msgstr "Восстановить вращение, приближение и перспективу графика (Alt+Space)."
-#: udav/plot_pnl.cpp:327
+#: udav/plot_pnl.cpp:328
msgid "Restore default graphics rotation, zoom and perspective (Ctrl+Space)."
msgstr "Восстановить вращение, приближение и перспективу графика (Ctrl+Space)."
-#: udav/plot_pnl.cpp:344
+#: udav/plot_pnl.cpp:345
msgid "Restore status for 'once' command and reload data (F9)."
msgstr "Восстановить статус команды 'once' и перезагрузить данные (F9)"
msgstr "Сдвинуть данные по направлению"
#. rotate menu
-#: udav/plot_pnl.cpp:540
+#: udav/plot_pnl.cpp:541
msgid "Rotate"
msgstr "Вращать"
-#: widgets/qt.cpp:1127 udav/plot_pnl.cpp:310
+#: widgets/qt.cpp:1127 udav/plot_pnl.cpp:311
msgid "Rotate by mouse"
msgstr "Вращать мышкой"
-#: udav/plot_pnl.cpp:545
+#: udav/plot_pnl.cpp:546
msgid "Rotate down"
msgstr "Вращать вниз"
-#: udav/plot_pnl.cpp:549
+#: udav/plot_pnl.cpp:550
msgid "Rotate left"
msgstr "Вращать влево"
msgid "Rotate picture by holding left mouse button"
msgstr "Вращать рисунок при удержании кнопок мыши"
-#: src/exec_set.cpp:845
+#: src/exec_set.cpp:854
msgid "Rotate plot"
msgstr "Вращать график"
-#: udav/plot_pnl.cpp:553
+#: udav/plot_pnl.cpp:554
msgid "Rotate right"
msgstr "Вращать вправо"
-#: udav/plot_pnl.cpp:541
+#: udav/plot_pnl.cpp:542
msgid "Rotate up"
msgstr "Вращать вверх"
msgid "Run slideshow (CTRl+F5)."
msgstr "Запустить анимацию (CTRl+F5)."
-#: udav/plot_pnl.cpp:570
+#: udav/plot_pnl.cpp:571
msgid ""
"Run slideshow (Ctrl+F5). If no parameter specified\n"
"then the dialog with slideshow options will appear."
msgid "Russian"
msgstr "Русский"
-#: widgets/qt.cpp:1097 udav/plot_pnl.cpp:488
+#: widgets/qt.cpp:1097 udav/plot_pnl.cpp:489
msgid "STL"
msgstr ""
-#: widgets/qt.cpp:1090 udav/plot_pnl.cpp:480
+#: widgets/qt.cpp:1090 udav/plot_pnl.cpp:481
msgid "SVG"
msgstr ""
msgid "Select kind of plot"
msgstr "Выбрать тип графика"
-#: src/exec_set.cpp:862
+#: src/exec_set.cpp:871
msgid "Select variant of plot style(s)"
msgstr "Выбрать вариант стиля графика"
msgid "Set"
msgstr "Задать"
-#: src/exec_set.cpp:858
+#: src/exec_set.cpp:867
msgid "Set additional tick and axis labels shift"
msgstr "Задает дополнительный сдвиш меток осей"
-#: src/exec_set.cpp:805
+#: src/exec_set.cpp:813
msgid "Set ambient light brightness"
msgstr "Задает яркость фонового освещения"
-#: src/exec_set.cpp:826
+#: src/exec_set.cpp:835
msgid "Set arbitrary position of plot in picture"
msgstr "Задать произвольную область рисования внутри рисунка"
msgid "Set arguments"
msgstr "Задать аргументы"
-#: src/exec_set.cpp:807
+#: src/exec_set.cpp:815
msgid "Set aspect ration"
msgstr "Задать соотношение сторон"
-#: src/exec_set.cpp:809
+#: src/exec_set.cpp:817
msgid "Set axis and tick style"
msgstr "Задать стиль осей и меток"
-#: src/exec_set.cpp:835
+#: src/exec_set.cpp:844
msgid "Set axis origin"
msgstr "Задать начало координат"
-#: src/exec_set.cpp:842
+#: src/exec_set.cpp:851
msgid "Set axis ranges"
msgstr "Задать диапазон осей"
-#: src/exec_set.cpp:850
+#: src/exec_set.cpp:859
msgid "Set bit-flags (for advanced users only)"
msgstr "Задает битовый флаг (для опытных пользователей)"
-#: src/exec_set.cpp:811
+#: src/exec_set.cpp:819
msgid "Set bounding box for 2d export"
msgstr "Задать границы для 2d экспорта"
-#: src/exec_set.cpp:832
+#: src/exec_set.cpp:841
msgid "Set brush for given mask id"
msgstr "Задать кисть для маски с выбранным id"
-#: src/exec_set.cpp:816
+#: src/exec_set.cpp:824
msgid "Set color range"
msgstr "Задать диапазон цвета"
msgid "Set data sizes manually"
msgstr "Задать размеры данных вручную"
-#: src/exec_set.cpp:810
+#: src/exec_set.cpp:818
msgid "Set default bars width"
msgstr "Задать размер полос по умолчанию"
-#: src/exec_set.cpp:840
+#: src/exec_set.cpp:849
msgid "Set default filename"
msgstr "Задать имя файла по умолчанию"
-#: src/exec_set.cpp:804
+#: src/exec_set.cpp:812
msgid "Set default transparency"
msgstr "Задать прозрачность по умолчанию"
-#: src/exec_set.cpp:819
+#: src/exec_set.cpp:827
msgid "Set diffusive light brightness"
msgstr "Задать яркость рассеянного света"
-#: src/exec_set.cpp:820
+#: src/exec_set.cpp:828
msgid "Set draw region for quality&4"
msgstr "Задать область рисования при quality&4"
msgid "Set lighting off/on for particular plot"
msgstr "Вкл/выкл освещение отдельного графика"
-#: src/exec_set.cpp:833
+#: src/exec_set.cpp:842
msgid "Set number of lines in mesh/fall/vect and so on"
msgstr "Задать примерное число линий в mesh/fall/vect ..."
-#: src/exec_set.cpp:827
+#: src/exec_set.cpp:836
msgid "Set number of marks in the legend"
msgstr "Задать число маркеров в легенде"
-#: src/exec_set.cpp:821
+#: src/exec_set.cpp:829
msgid "Set number of visible faces"
msgstr "Задать число видимых граней"
-#: src/exec_set.cpp:837
+#: src/exec_set.cpp:846
msgid "Set palette for 1D plots"
msgstr "Задать палитру для 1D графиков"
-#: src/exec_set.cpp:839
+#: src/exec_set.cpp:848
msgid "Set perspective"
msgstr "Задать перспективу"
-#: src/exec_set.cpp:848
+#: src/exec_set.cpp:857
msgid "Set picture size"
msgstr "Задать размер рисунка"
-#: src/exec_set.cpp:841
+#: src/exec_set.cpp:850
msgid "Set plot quality"
msgstr "Задать качество рисования картинки"
-#: src/exec_set.cpp:854
+#: src/exec_set.cpp:863
msgid "Set position of plot as cell of matrix"
msgstr "Задать область рисования как ячейку матрицы"
-#: src/exec_set.cpp:834
+#: src/exec_set.cpp:843
msgid "Set position of plot block in matrix"
msgstr "Задать область рисования как блок в матрице"
-#: src/exec_set.cpp:815
+#: src/exec_set.cpp:823
msgid "Set position of plot inside cell of column"
msgstr "Задать область рисования как ячейку колонки"
-#: src/exec_set.cpp:825
+#: src/exec_set.cpp:834
msgid "Set position of plot inside cell of matrix"
msgstr "Задать область рисования внутри ячейки колонки"
-#: src/exec_set.cpp:853
+#: src/exec_set.cpp:862
msgid "Set position of plot inside cell of rotated stick"
msgstr "Задать область рисования как ячейку повернутого бруска"
-#: src/exec_set.cpp:852
+#: src/exec_set.cpp:861
msgid "Set position of plot inside cell of sheared stick"
msgstr "Задать область рисования как ячейку наклоненной колонки"
-#: src/exec_set.cpp:866
+#: src/exec_set.cpp:875
msgid "Set range for x-axis"
msgstr "Задать диапазон по x"
-#: src/exec_set.cpp:868
+#: src/exec_set.cpp:877
msgid "Set range for y-axis"
msgstr "Задать диапазон по y"
-#: src/exec_set.cpp:872
+#: src/exec_set.cpp:881
msgid "Set range for z-axis"
msgstr "Задать диапазон по z"
-#: src/exec_set.cpp:847
+#: src/exec_set.cpp:856
msgid "Set scale text in relative subplots too"
msgstr "Задает масштабирование текста в отн.подграфиках"
-#: src/exec_set.cpp:849
+#: src/exec_set.cpp:858
msgid "Set scaling factor for further setsize"
msgstr "Задать множитель для всех 'setsize'"
msgid "Set size for text, marks and others"
msgstr "Задать размер текста, маркеров и пр."
-#: src/exec_set.cpp:806
+#: src/exec_set.cpp:814
msgid "Set size of arrows"
msgstr "Задать размер стрелок"
-#: src/exec_set.cpp:831
+#: src/exec_set.cpp:840
msgid "Set size of markers"
msgstr "Задать размер маркеров"
-#: src/exec_set.cpp:838
+#: src/exec_set.cpp:847
msgid "Set size of semi-transparent area around line"
msgstr "Задать размер полупрозрачной области около линии"
-#: src/exec_set.cpp:836
+#: src/exec_set.cpp:845
msgid "Set tick labels drawing at origin"
msgstr "Разрешить вывод меток осей в начале координат"
-#: src/exec_set.cpp:857
+#: src/exec_set.cpp:866
msgid "Set tick length"
msgstr "Задать длину меток осей"
-#: src/exec_set.cpp:817
+#: src/exec_set.cpp:825
msgid "Set ticks for colorbar"
msgstr "Задать метки для цветовой шкалы"
-#: src/exec_set.cpp:867
+#: src/exec_set.cpp:876
msgid "Set ticks for x-axis"
msgstr "Задать метки для оси x"
-#: src/exec_set.cpp:869
+#: src/exec_set.cpp:878
msgid "Set ticks for y-axis"
msgstr "Задать метки для оси y"
-#: src/exec_set.cpp:873
+#: src/exec_set.cpp:882
msgid "Set ticks for z-axis"
msgstr "Задать метки для оси z"
-#: src/exec_set.cpp:859
+#: src/exec_set.cpp:868
msgid "Set ticks in time format"
msgstr "Задать метки в формате времени"
-#: src/exec_set.cpp:861
+#: src/exec_set.cpp:870
msgid "Set ticks tuning"
msgstr "Включить оптимизацию меток осей"
-#: src/exec_set.cpp:846
+#: src/exec_set.cpp:855
msgid "Set to auto rotate text or not"
msgstr "Разрешить поворот текста"
msgid "Set to use whole area (style '#')"
msgstr "Задать использование всей области (стиль '#')"
-#: src/exec_set.cpp:860
+#: src/exec_set.cpp:869
msgid "Set type transparency"
msgstr "Задать тип прозрачности"
msgid "Set value of \\phi angle."
msgstr "Задать значени угла φ"
-#: udav/plot_pnl.cpp:472
+#: udav/plot_pnl.cpp:473
msgid ""
"Set value of \\phi angle.\n"
"You can use keys (Shift+Meta+Left or Shift+Meta+Right)."
msgid "Set value of \\theta angle."
msgstr "Задать значени угла θ"
-#: udav/plot_pnl.cpp:466
+#: udav/plot_pnl.cpp:467
msgid ""
"Set value of \\theta angle.\n"
"You can use keys (Shift+Meta+Up or Shift+Meta+Down)."
msgid "Setup colors for:"
msgstr "Настроить цвета:"
-#: src/exec_set.cpp:823
+#: src/exec_set.cpp:832
msgid "Setup font"
msgstr "Настроить шрифт"
-#: src/exec_set.cpp:828
+#: src/exec_set.cpp:837
msgid "Setup light"
msgstr "Настроить освещение"
-#: src/exec_prm.cpp:629
+#: src/exec_prm.cpp:630
msgid "Setup or draw axis"
msgstr "Настроить или нарисовать оси"
-#: src/exec_set.cpp:818
+#: src/exec_set.cpp:826
msgid "Setup plot points cutting"
msgstr "Настроить обрезание точек графика"
msgid "Setup script"
msgstr "Настроить скрипт"
-#: udav/plot_pnl.cpp:573
+#: udav/plot_pnl.cpp:574
msgid "Setup show"
msgstr "Настроить анимацию"
msgid "Sharp colors"
msgstr "Контрастные"
-#: src/exec_set.cpp:851
+#: src/exec_set.cpp:860
msgid "Shear plot"
msgstr "Наклон графика"
msgid "Show dialog for UDAV properties."
msgstr "Показать диалог настроек UDAV"
-#: udav/text_pnl.cpp:560 udav/plot_pnl.cpp:441
+#: udav/text_pnl.cpp:560 udav/plot_pnl.cpp:442
msgid "Show dialog for new command or edit arguments of existed one."
msgstr "Показать диалог ввода новой команды или редактирования существующей"
-#: udav/text_pnl.cpp:564 udav/plot_pnl.cpp:446
+#: udav/text_pnl.cpp:564 udav/plot_pnl.cpp:447
msgid "Show dialog for new inplot and put it into the script."
msgstr "Показать диалог создания под-графика и вставки его в скрипт"
msgid "Show next frame in slideshow"
msgstr "Показать следующий кадр"
-#: widgets/qt.cpp:1266 udav/plot_pnl.cpp:563
+#: widgets/qt.cpp:1266 udav/plot_pnl.cpp:564
msgid "Show next slide (Ctrl+.)."
msgstr "Показать следующий кадр (Ctrl+.)."
msgid "Show previous frame in slideshow"
msgstr "Показать предыдущий кадр"
-#: widgets/qt.cpp:1275 udav/plot_pnl.cpp:578
+#: widgets/qt.cpp:1275 udav/plot_pnl.cpp:579
msgid "Show previous slide (Ctrl+,)."
msgstr "Показать предыдущий кадр (Ctrl+,)."
#: mgllab/editor.cpp:532
-#, fuzzy
msgid "Show window for primitives"
-msgstr "Ð\9fоказаÑ\82Ñ\8c диалог наÑ\81Ñ\82Ñ\80оек UDAV"
+msgstr "Ð\9fоказаÑ\82Ñ\8c окно длÑ\8f пÑ\80имиÑ\82ивов"
-#: src/random.cpp:354
+#: src/random.cpp:349
msgid "Shuffle data cells (for dir='a') or slices (for dir='xyz')"
msgstr "Перемешать ячейки (для dir='a') или срезы (для dir='xyz') данных"
msgid "Skip commands and iterate for-loop again"
msgstr "Пропустить команды до конца цикла for"
-#: widgets/qt.cpp:1268 udav/plot_pnl.cpp:566
+#: widgets/qt.cpp:1268 udav/plot_pnl.cpp:567
msgid "Slideshow"
msgstr "Анимация"
msgid "Step for pulse diffraction"
msgstr "Шаг для расчета дифракции импульса"
-#: widgets/qt.cpp:1152 udav/plot_pnl.cpp:347
+#: widgets/qt.cpp:1152 udav/plot_pnl.cpp:348
msgid "Stop"
msgstr "Стоп"
msgid "Stop execution"
msgstr "Остановить выполнение скрипта"
-#: udav/plot_pnl.cpp:349
+#: udav/plot_pnl.cpp:350
msgid "Stop script execution (F7)."
msgstr "Остановить выполнение скрипта (F7)"
msgid "Swap parts"
msgstr "Поменять местами"
-#: src/exec_set.cpp:856
-#, fuzzy
+#: src/exec_set.cpp:865
msgid "Switch on/off TeX parsing at text output"
-msgstr "Вкл/выкл прозрачность рисунка"
+msgstr "Вкл/выкл разбор TeX команд"
-#: src/exec_set.cpp:822
+#: src/exec_set.cpp:831
msgid "Switch on/off fog"
msgstr "Вкл/выкл туман"
-#: src/exec_set.cpp:824
+#: src/exec_set.cpp:833
msgid "Switch on/off gray-scale mode"
msgstr "Вкл/выкл режим оттенков серого"
msgid "Switch on/off grid drawing"
msgstr "Вкл/выкл рисование сетки"
-#: udav/plot_pnl.cpp:307
+#: udav/plot_pnl.cpp:308
msgid "Switch on/off grid of absolute coordinates (Ctrl+G)."
msgstr "Вкл/выкл сетку абсолютных координат (Ctrl+G)."
msgid "Switch on/off lightning for the graphics (Alt+L)."
msgstr "Вкл/выкл освещение графика (Alt+L)."
-#: udav/plot_pnl.cpp:301
+#: udav/plot_pnl.cpp:302
msgid "Switch on/off lightning for the graphics (Ctrl+L)."
msgstr "Вкл/выкл освещение графика (Ctrl+L)."
msgid "Switch on/off lightning in the picture"
msgstr "Вкл/выкл освещение графика"
-#: widgets/qt.cpp:1131 udav/plot_pnl.cpp:314
+#: widgets/qt.cpp:1131 udav/plot_pnl.cpp:315
msgid ""
"Switch on/off mouse handling of the graphics\n"
"(rotation, shifting, zooming and perspective)."
msgid "Switch on/off mouse zoom of selected region."
msgstr "Вкл/выкл приближение мышью выбранной области."
-#: src/exec_set.cpp:855
+#: src/exec_set.cpp:864
msgid "Switch on/off to use ternary axis"
msgstr "Указать тип тернарных координат или проекций"
-#: src/exec_set.cpp:803
+#: src/exec_set.cpp:811
msgid "Switch on/off transparency"
msgstr "Вкл/выкл прозрачность"
msgid "Switch on/off transparency for the graphics (Alt+T)."
msgstr "Вкл/выкл прозрачность рисунка (Alt+T)."
-#: udav/plot_pnl.cpp:294
+#: udav/plot_pnl.cpp:295
msgid "Switch on/off transparency for the graphics (Ctrl+T)."
msgstr "Вкл/выкл прозрачность рисунка (Ctrl+T)."
msgid "Symmetrical?"
msgstr "Симметрично?"
-#: src/addon.cpp:121 src/base_cf.cpp:281
+#: src/addon.cpp:122 src/base_cf.cpp:283
#, c-format
msgid "TEST: %s\n"
msgstr "ТЕСТ: %s\n"
"Специальный диалог (Правка|Вставить|Новая команда) поможет Вам выбрать "
"команду, заполнить ее аргументы и вставить в скрипт."
-#: src/crust.cpp:590
+#: src/crust.cpp:619
msgid ""
"There are duplicated or indistinguishably adjacent points for triangulation."
msgstr "Повторяющиеся или близкие точки при триангуляции"
msgstr "Использовать цветовую схему"
#: mgllab/mgllab.cpp:485
-#, fuzzy
msgid "Use dark color scheme"
-msgstr "Использовать цветовую схему"
+msgstr "Ð\98Ñ\81полÑ\8cзоваÑ\82Ñ\8c Ñ\82емнÑ\83Ñ\8e Ñ\86веÑ\82овÑ\83Ñ\8e Ñ\81Ñ\85емÑ\83"
#: udav/prop_dlg.cpp:175
msgid "Use dots plot for preview"
msgid "Wire style"
msgstr "Контур"
-#: src/exec_set.cpp:865
+#: src/exec_set.cpp:874
msgid "Write current image to graphical file"
msgstr "Сохранить текущий рисунок в файл"
msgid "X/Z"
msgstr ""
-#: widgets/qt.cpp:1098 udav/plot_pnl.cpp:489
+#: widgets/qt.cpp:1098 udav/plot_pnl.cpp:490
msgid "XYZ"
msgstr ""
msgid "Z-slice from"
msgstr "Z срез от"
-#: src/exec_set.cpp:871
+#: src/exec_set.cpp:880
msgid "Zoom axis range"
msgstr "Увеличить диапазон осей координат"
msgid "Zoom graphics"
msgstr "Приблизить рисунок"
-#: widgets/qt.cpp:1242 udav/plot_pnl.cpp:515
+#: widgets/qt.cpp:1242 udav/plot_pnl.cpp:516
msgid "Zoom in"
msgstr "Приблизить"
-#: widgets/qt.cpp:1244 udav/plot_pnl.cpp:518
+#: widgets/qt.cpp:1244 udav/plot_pnl.cpp:519
msgid "Zoom in graphics."
msgstr "Приблизить рисунок"
msgid "Zoom in the picture"
msgstr "Приблизить рисунок"
-#: widgets/qt.cpp:1246 udav/plot_pnl.cpp:521
+#: widgets/qt.cpp:1246 udav/plot_pnl.cpp:522
msgid "Zoom out"
msgstr "Отдалить"
-#: widgets/qt.cpp:1248 udav/plot_pnl.cpp:524
+#: widgets/qt.cpp:1248 udav/plot_pnl.cpp:525
msgid "Zoom out graphics."
msgstr "Отдалить рисунок"
msgid "Zoom out the picture"
msgstr "Отдалить рисунок"
-#: src/exec_set.cpp:870
+#: src/exec_set.cpp:879
msgid "Zoom plot region"
msgstr "Приблизить область рисунка"
#. zooming menu
-#: widgets/qt.cpp:1231 udav/plot_pnl.cpp:502
+#: widgets/qt.cpp:1231 udav/plot_pnl.cpp:503
msgid "Zoom/move"
msgstr "Приближение/сдвиг"
msgid "bars"
msgstr ""
-#: widgets/qt.cpp:1088 udav/plot_pnl.cpp:478
+#: widgets/qt.cpp:1088 udav/plot_pnl.cpp:479
msgid "bitmap EPS"
msgstr "растровый EPS"
#, c-format
msgid ""
"mglconv convert mgl script to image file (default PNG).\n"
-"Current version is 2.%g\n"
+"Current version is %s\n"
msgstr ""
"mglconv конвертирует mgl скрипт в рисунок (по умолчанию PNG).\n"
-"Текущая версия 2.%g\n"
+"Текущая версия %s\n"
#: mgllab/mgllab.cpp:422
#, c-format
msgid ""
"mgllab draw mgl script interactively.\n"
-"Current version is 2.%g\n"
+"Current version is %s\n"
msgstr ""
"mgllab рисует mgl скрипт интерактивно.\n"
-"Текущая версия 2.%g\n"
+"Текущая версия %s\n"
#: mgllab/help.cpp:78
#, c-format
msgid ""
-"mgllab v. 2.%g\n"
+"mgllab v. %s\n"
"(c) Alexey Balakin, 2017\n"
"http://mathgl.sf.net/"
msgstr ""
-"mgllab v. 2.%g\n"
+"mgllab v. %s\n"
"(c) Алексей Балакин, 2017\n"
"http://mathgl.sf.net/"
#, c-format
msgid ""
"mglview show plot from MGL script or MGLD file.\n"
-"Current version is 2.%g\n"
+"Current version is %s\n"
msgstr ""
"mglview показывает график MGL скрипта или MGLD файла.\n"
-"Текущая версия 2.%g\n"
+"Текущая версия %s\n"
#: udav/data_dlg.cpp:68
msgid "min"
msgid "solid"
msgstr "сплош."
-#: widgets/qt.cpp:1086 udav/plot_pnl.cpp:476
+#: widgets/qt.cpp:1086 udav/plot_pnl.cpp:477
msgid "solid PNG"
msgstr "PNG с заливкой"
msgid "values"
msgstr "значения"
-#: widgets/qt.cpp:1089 udav/plot_pnl.cpp:479
+#: widgets/qt.cpp:1089 udav/plot_pnl.cpp:480
msgid "vector EPS"
msgstr "векторный EPS"
void about_cb(Fl_Widget*, void*)\r
{\r
static char s[128];\r
- snprintf(s,128,_("mgllab v. 2.%g\n(c) Alexey Balakin, 2017\nhttp://mathgl.sf.net/"), MGL_VER2);\r
+ snprintf(s,128,_("mgllab v. %s\n(c) Alexey Balakin, 2017\nhttp://mathgl.sf.net/"), MGL_VER_STRING);\r
Fl_Double_Window* w = new Fl_Double_Window(355, 130, "About UDAV");\r
Fl_Box* o = new Fl_Box(10, 15, 65, 65);\r
o->box(FL_UP_BOX); o->color(55); o->image(new Fl_Pixmap(udav_xpm));\r
{ setlocale(LC_CTYPE, optarg); setlocale(LC_NUMERIC, "C"); }\r
else if(ch=='h')\r
{\r
- printf(_("mgllab draw mgl script interactively.\nCurrent version is 2.%g\n"),MGL_VER2);\r
+ printf(_("mgllab draw mgl script interactively.\nCurrent version is %s\n"),MGL_VER_STRING);\r
printf(_("Usage:\tmgllab [parameter(s)] scriptfile\n"));\r
printf(_("\t-1 str set str as argument $1 for script\n"\r
"\t... ...\n"\r
if(mgl_fgetstr_script && s[0]=='#' && s[1]=='M' && s[2]=='G' && s[3]=='L' && s[4]==' ')
{
std::string buf("mglconv -n "); buf+= s+5;
- system(buf.c_str());
+ if(system(buf.c_str())==-1)
+ mgl_info("Couldn't execute '%s'",buf.c_str());
}
// strlwr(s);
} while(!feof(fp) && (s[0]==0 || s[0]=='%' || s[0]=='#'));
pp[1].x=Max.x; pp[2].y=Max.y; pp[3].z=Max.z;
pp[4].x=Min.x; pp[5].y=Min.y; pp[6].z=Min.z;
mreal zm=INFINITY;
- memcpy(oo,pp,8*sizeof(mglPoint));
+ memcpy((void*)oo,pp,8*sizeof(mglPoint));
for(int i=0;i<8;i++) // find deepest point
{
ScalePoint(&B,pp[i],nan,false);
p[1].x=Max.x; p[2].y=Max.y; p[3].z=Max.z;
p[4].x=Min.x; p[5].y=Min.y; p[6].z=Min.z;
mreal zm=INFINITY; int im=0;
- memcpy(oo,p,8*sizeof(mglPoint));
+ memcpy((void*)oo,p,8*sizeof(mglPoint));
for(int i=0;i<8;i++) // find deepest point
{
ScalePoint(&B,p[i],nan,false);
clr(MGL_NOSUBTICKS); Org=o; TickLen=tl;
}
//-----------------------------------------------------------------------------
-void mglCanvas::Colorbar(const char *sch)
+void mglCanvas::Colorbar(const char *sch, const char *opt)
{
bool in = mglchr(sch,'I');
mreal sx = (fabs(B.b[0])+fabs(B.b[1])+fabs(B.b[2]))/B.pf/B1.b[0], x=1;
else if(mglchr(sch,'^')) { x=0; y=in?(1+sy)/2:0.95; }
else if(mglchr(sch,'_')) { x=0; y=in?(1-sy)/2:0.05; }
else { x=in?(1+sx)/2:0.95; y=0; }
- Colorbar(sch, x, y, 1, 1);
+ Colorbar(sch, x, y, 1, 1, opt);
}
//-----------------------------------------------------------------------------
-void mglCanvas::Colorbar(const char *sch, mreal x, mreal y, mreal w, mreal h)
+void mglCanvas::Colorbar(const char *sch, mreal x, mreal y, mreal w, mreal h, const char *opt)
{
bool in = mglchr(sch,'I');
bool text = !mglchr(sch,'~');
{ v.Fill(log(-Min.c), log(-Max.c)); v.Modify("-exp(u)"); }
mreal *c=new mreal[n];
for(long i=0;i<n;i++) c[i] = GetC(s,v.a[i]);
- colorbar(&v, c, where, x, y, w, h, text);
+ colorbar(&v, c, where, x, y, w, h, text, opt);
delete []c;
if(mglchr(sch,'A')) Pop();
}
//-----------------------------------------------------------------------------
-void mglCanvas::Colorbar(HCDT v, const char *sch)
+void mglCanvas::Colorbar(HCDT v, const char *sch, const char *opt)
{
bool in = mglchr(sch,'I');
mreal sx = (fabs(B.b[0])+fabs(B.b[1])+fabs(B.b[2]))/B.pf/B1.b[0], x=1;
if(mglchr(sch,'<')) { x=in?(1-sx)/2:0; y=0; }
if(mglchr(sch,'^')) { x=0; y=in?(1+sy)/2:1; }
if(mglchr(sch,'_')) { x=0; y=in?(1-sy)/2:0; }
- Colorbar(v, sch, x, y, 1, 1);
+ Colorbar(v, sch, x, y, 1, 1, opt);
}
//-----------------------------------------------------------------------------
-void mglCanvas::Colorbar(HCDT v, const char *sch, mreal x, mreal y, mreal w, mreal h)
+void mglCanvas::Colorbar(HCDT v, const char *sch, mreal x, mreal y, mreal w, mreal h, const char *opt)
{
bool in = mglchr(sch,'I');
bool text = !mglchr(sch,'~');
int nc = GetNumPal(s*256);
mreal dc = nc>1 ? 1/(MGL_EPSILON*(nc-1)):0;
for(long i=0;i<v->GetNx();i++) c[i] = s+i*dc;
- colorbar(v, c, where, x, y, w, h, text);
+ colorbar(v, c, where, x, y, w, h, text, opt);
delete []c;
if(mglchr(sch,'A')) Pop();
}
//-----------------------------------------------------------------------------
-void mglCanvas::colorbar(HCDT vv, const mreal *c, int where, mreal x, mreal y, mreal w, mreal h, bool text)
+void mglCanvas::colorbar(HCDT vv, const mreal *c, int where, mreal x, mreal y, mreal w, mreal h, bool text, const char *opt)
{
static int cgid=1; StartGroup("Colorbar",cgid++);
+ mreal angl = SaveState(opt);
long n=vv->GetNx();
mreal s3=B.pf,ss=1/s3; // NOTE: colorbar was wider ss=0.9;
}
SetPenPal(AxisStl);
bool inv = where!=3 && where!=0;
- ac.ns = where; ac.angl=NAN; // NOTE ns isn't used for colorbar
+ ac.ns = where; ac.angl=angl; //NAN; // NOTE ns isn't used for colorbar
if(text) DrawLabels(ac,inv,&M);
clr(MGL_DISABLE_SCALE); EndGroup();
}
nt = -id; // TODO optimize and copy points. Q: actual width? Q: cmp with known.\r
FT_BBox boundingBox;\r
FT_Outline_Get_BBox(&outline, &boundingBox);\r
- FT_Pos xMin = boundingBox.xMin;\r
+/* FT_Pos xMin = boundingBox.xMin;\r
FT_Pos yMin = boundingBox.yMin;\r
FT_Pos xMax = boundingBox.xMax;\r
FT_Pos yMax = boundingBox.yMax;\r
-/* m_xMin = xMin;\r
+ \r
+ m_xMin = xMin;\r
m_yMin = yMin;\r
m_width = xMax - xMin;\r
m_height = yMax - yMin;*/\r
// scl&4 -- disable NAN for normales if no light\r
// scl&8 -- bypass palette for enabling alpha\r
// scl&16 -- put points inside axis range\r
+ q.xx = NAN;\r
if(mgl_isnan(c) || mgl_isnan(a)) { q.x=NAN; return false; }\r
bool norefr = mgl_isnan(n.x) && mgl_isnan(n.y) && !mgl_isnan(n.z), res=true;\r
if(scl>0)\r
if(scl&16) mgl_coor_box(this, p);\r
res = ScalePoint(mat,p,n,!(scl&2));\r
}\r
- if(mgl_isnan(p.x)) { q.x=NAN; return false; }\r
+// if(mgl_isnan(p.x)) { q.x=NAN; return false; }\r
a = (a>=0 && a<=1) ? a : AlphaDef;\r
c = (c>=0) ? c:CDef;\r
\r
q.x=q.xx=p.x; q.y=q.yy=p.y; q.z=q.zz=p.z;\r
q.c=c; q.ta=a; q.u=n.x; q.v=n.y; q.w=n.z;\r
}\r
+ if(!(scl&2) && !res) q.x = NAN;\r
+\r
long ci=long(c);\r
if(ci<0 || ci>=(long)Txt.size()) ci=0; // NOTE never should be here!!!\r
const mglTexture &txt=Txt[ci];\r
}\r
if(fabs(x)>MGL_FEPSILON || fabs(y)>MGL_FEPSILON || fabs(z)>MGL_FEPSILON) res = false;\r
\r
- if(!res && use_nan) x = NAN; // extra sign that point shouldn't be plotted\r
- else if(limit_pm1)\r
+// if(!res && use_nan) x = NAN; // extra sign that point shouldn't be plotted\r
+// else if(limit_pm1)\r
+ if(limit_pm1 && (res || !use_nan))\r
{\r
x = x>1?1:(x<-1?-1:x);\r
y = y>1?1:(y<-1?-1:y);\r
void mglBase::curve_plot(size_t num, size_t k0, size_t step)\r
{\r
// exclude straight-line parts\r
- if(get(MGL_FULL_CURV)) for(size_t i=0;i+1<num;i++)\r
+ if(get(MGL_FULL_CURV) || num<3 || B.b[8]<2) for(size_t i=0;i+1<num;i++)\r
line_plot(k0+i*step,k0+(i+1)*step);\r
- else for(size_t i=0;i+1<num;i++)\r
+ else for(size_t i=0;i+1<num;i++) // NOTE: this work well for 2D output only!!!\r
{\r
- const mglPoint p1(GetPntP(k0+i*step)), ps(GetPntP(k0+(i+1)*step));\r
- if(mgl_isnan(p1.x) || mgl_isnan(ps.x)) continue;\r
+ const mglPoint p1(GetPntP(k0+i*step)); //, ps(GetPntP(k0+(i+1)*step));\r
+// if(mgl_isnan(p1.x) || mgl_isnan(ps.x)) continue;\r
const mglColor c1(GetPntC(k0+i*step));\r
// remove duplicates\r
- for(;i+1<num;i++)\r
- {\r
- size_t ii = k0+(i+1)*step;\r
- const mglPoint pp(GetPntP(ii));\r
- if(p1!=pp || mgl_isnan(pp.x)) break;\r
- }\r
+ while(p1.same(GetPntP(k0+(i+1)*step))) i++;\r
if(i+1>=num) break;\r
\r
float t1=-100, t2=100; // XY angle boundary\r
for(k=i+1;k<num;k++)\r
{\r
const mglPoint p2(GetPntP(k0+k*step)-p1);\r
- if(mgl_isnan(p2.x)) break;\r
- float dd=p2.x*p2.x+p2.y*p2.y+p2.z*p2.z;\r
- if(dd<=0) continue; // the same point (micro-loop? :) )\r
- float t = atan2(p2.y,p2.x), d = atan(0.03/dd);\r
- if(t1 > t+d || t2 < t-d) break; // too curved\r
- const mglColor c2(GetPntC(k0+(k-1)*step)-c1); dd = c2.NormS();\r
- if(dd>0) // color are different\r
+ float dd=1/sqrt(p2.x*p2.x+p2.y*p2.y), t = atan2(p2.y,p2.x);\r
+ if(t>t1 && t<t2)\r
+ { t1 = t1<t-dd?t-dd:t1; t2 = t2>t+dd?t+dd:t2; } // new range\r
+ else break;\r
+ const mglColor c2(GetPntC(k0+(k-1)*step)-c1); dd = sqrt(c2.NormS());\r
+ if(dd>0) // colors are different\r
{\r
- float rg = atan2(c2.r,c2.g), gb = atan2(c2.g,c2.b); d = atan(1e-4/dd);\r
- if(rg1 > rg+d || rg2 < rg-d || gb1 > gb+d || gb2 < gb-d) break; // too curved\r
+ float rg = atan2(c2.r,c2.g), gb = atan2(c2.g,c2.b), d = 1e-2/dd;\r
+ if(rg1 > rg || rg2 < rg || gb1 > gb || gb2 < gb) break; // too curved\r
rg1 = rg1<rg-d?rg-d:rg1; rg2 = rg2>rg+d?rg+d:rg2; // new RG range\r
gb1 = gb1<gb-d?gb-d:gb1; gb2 = gb2>gb+d?gb+d:gb2; // new GB range\r
}\r
- t1 = t1<t-d?t-d:t1; t2 = t2>t+d?t+d:t2; // new range\r
}\r
- k--; line_plot(k0+i*step,k0+k*step); i = k-1;\r
+ if(k>i+1) k--;\r
+ line_plot(k0+i*step,k0+k*step); i = k-1;\r
}\r
}\r
//-----------------------------------------------------------------------------\r
mglDefFont->Load(name,path); delete []s; delete []d; }\r
//-----------------------------------------------------------------------------\r
int MGL_EXPORT mgl_check_version(const char *ver)\r
-{ double v=0; int r = sscanf(ver,"2.%lg",&v);\r
- return r<1 || v>MGL_VER2; }\r
+{ int m1,m2,res=1, r = sscanf(ver,"%d.%d",&m1,&m2);\r
+ if(r==1 && m1<=MGL_VER_MAJOR && m1>1) res=0;\r
+ if(r==2 && m1<=MGL_VER_MAJOR && m1>1 && (m1<MGL_VER_MAJOR || m2<=MGL_VER_MINOR)) res=0;\r
+ return res; }\r
int MGL_EXPORT mgl_check_version_(const char *ver, int l)\r
{ char *s=new char[l+1]; memcpy(s,ver,l); s[l]=0;\r
int r=mgl_check_version(s); delete []s; return r; }\r
SetPlotFactor(0); Sub.clear();\r
InPlot(0,1,0,1,false); clr(MGL_FULL_CURV);\r
SetTickLen(0); SetCut(true);\r
- AdjustTicks("xyzc",true); Clf('w');\r
+ AdjustTicks("xyzc",true); Clf(mglColor(1,1,1,0));\r
\r
for(int i=0;i<10;i++) { AddLight(i, mglPoint(0,0,1)); Light(i,false); }\r
Light(0,true); Light(false); SetDifLight(true);\r
static mglMatrix bb;\r
mglPoint nn[8]={mglPoint(0,0,0), mglPoint(0,0,1), mglPoint(0,1,0,0), mglPoint(0,1,1),\r
mglPoint(1,0,0), mglPoint(1,0,1), mglPoint(1,1,0), mglPoint(1,1,1)}, pp[8];\r
- memcpy(pp, nn, 8*sizeof(mglPoint));\r
+ memcpy((void*)pp, nn, 8*sizeof(mglPoint));\r
// do nothing if transformation matrix is the same\r
if(B!=bb)\r
{\r
return res;\r
}\r
//-----------------------------------------------------------------------------\r
+long mglCanvas::AddPairBnd(const mglPnt &q1, const mglPnt &q2)\r
+{\r
+ mglPnt q;\r
+ mreal p1[3],p2[3], x,y,z;\r
+ const float *b = B.ib, f = 1/(2*B.pf);\r
+ x = (q1.xx-B.x)/f; y = (q1.yy-B.y)/f; z = (q1.zz-B.z)/f;\r
+ p1[0] = x*b[0] + y*b[1] + z*b[2];\r
+ p1[1] = x*b[3] + y*b[4] + z*b[5];\r
+ p1[2] = x*b[6] + y*b[7] + z*b[8];\r
+ x = (q2.xx-B.x)/f; y = (q2.yy-B.y)/f; z = (q2.zz-B.z)/f;\r
+ p2[0] = x*b[0] + y*b[1] + z*b[2] - p1[0];\r
+ p2[1] = x*b[3] + y*b[4] + z*b[5] - p1[1];\r
+ p2[2] = x*b[6] + y*b[7] + z*b[8] - p1[2];\r
+ const mreal eps = 1e-5;\r
+ mreal s=1,ss;\r
+ if(fabs(p2[0])>eps)\r
+ {\r
+ ss = -(1+p1[0])/p2[0]; if(ss>eps && ss<s) s=ss;\r
+ ss = (1-p1[0])/p2[0]; if(ss>eps && ss<s) s=ss;\r
+ }\r
+ if(fabs(p2[1])>eps)\r
+ {\r
+ ss = -(1+p1[1])/p2[1]; if(ss>eps && ss<s) s=ss;\r
+ ss = (1-p1[1])/p2[1]; if(ss>eps && ss<s) s=ss;\r
+ }\r
+ if(fabs(p2[2])>eps)\r
+ {\r
+ ss = -(1+p1[2])/p2[2]; if(ss>eps && ss<s) s=ss;\r
+ ss = (1-p1[2])/p2[2]; if(ss>eps && ss<s) s=ss;\r
+ }\r
+ if(s>1-eps) return -1;\r
+ q.x = q.xx = q1.xx + s*(q2.xx-q1.xx);\r
+ q.y = q.yy = q1.yy + s*(q2.yy-q1.yy);\r
+ q.z = q.zz = q1.zz + s*(q2.zz-q1.zz);\r
+ q.u = q1.u + s*(q2.u-q1.u);\r
+ q.v = q1.v + s*(q2.v-q1.v);\r
+ q.w = q1.w + s*(q2.w-q1.w);\r
+ q.r = q1.r + s*(q2.r-q1.r);\r
+ q.g = q1.g + s*(q2.g-q1.g);\r
+ q.b = q1.b + s*(q2.b-q1.b);\r
+ q.a = q1.a + s*(q2.a-q1.a);\r
+ q.c = q1.c + s*(q2.c-q1.c);\r
+ q.ta = q1.ta + s*(q2.ta-q1.ta);\r
+ long k;\r
+#pragma omp critical(pnt)\r
+ {k=Pnt.size(); MGL_PUSH(Pnt,q,mutexPnt);}\r
+ return k;\r
+}\r
+//-----------------------------------------------------------------------------\r
// Put primitives\r
//-----------------------------------------------------------------------------\r
#define MGL_MARK_PLOT if(Quality&MGL_DRAW_LMEM) \\r
a.n1 = p1; a.n2 = p2; a.w = pw; a.angl=0; add_prim(a); }\r
void mglCanvas::line_plot(long p1, long p2)\r
{\r
- if(PDef==0) return;\r
- if(SamePnt(p1,p2)) return;\r
- if(p1>p2) { long kk=p1; p1=p2; p2=kk; } // rearrange start/end for proper dashing\r
+ if(PDef==0 || p1<0 || p2<0) return; // nothing to do\r
+ if(!(Flag&MGL_FAST_PRIM) && !(TernAxis&3))\r
+ {\r
+ if(p1>p2) { long kk=p1; p1=p2; p2=kk; } // rearrange start/end for proper dashing\r
+ const mglPnt &q1=Pnt[p1], &q2=Pnt[p2];\r
+ if(q1.x==q2.x && q1.y==q2.y) return; // the same points\r
+ if(mgl_isnan(q1.x) && mgl_isnum(q2.x))\r
+ p1 = AddPairBnd(q2,q1);\r
+ if(mgl_isnum(q1.x) && mgl_isnan(q2.x))\r
+ p2 = AddPairBnd(q1,q2);\r
+ }\r
+ if(p1<0 || p2<0 || mgl_isnan(Pnt[p1].x) || mgl_isnan(Pnt[p2].x)) return;\r
+\r
long pp1=p1,pp2=p2;\r
mreal pw = fabs(PenWidth)*sqrt(font_factor/400), d=0;\r
if(TernAxis&12) for(int i=0;i<4;i++)\r
trig_draw(Pnt[p1],Pnt[p2],Pnt[p3],true,&d); }\\r
else{ mglPrim a(2); a.n1 = p1; a.n2 = p2; a.n3 = p3; \\r
a.m=mask; a.angl=MaskAn; a.w = pw; add_prim(a);}\r
-void mglCanvas::trig_plot(long p1, long p2, long p3)\r
-{\r
- if(SamePnt(p1,p2) || SamePnt(p1,p3)) return;\r
- long pp1=p1,pp2=p2,pp3=p3;\r
- mreal pw = fabs(PenWidth)*sqrt(font_factor/400);\r
- if(TernAxis&12) for(int i=0;i<4;i++)\r
- { p1 = ProjScale(i, pp1); p2 = ProjScale(i, pp2);\r
- p3 = ProjScale(i, pp3); if(p1>=0&&p2>=0&&p3>=0) {MGL_TRIG_PLOT} }\r
- else { MGL_TRIG_PLOT }\r
-}\r
-//-----------------------------------------------------------------------------\r
#define MGL_QUAD_PLOT if(Quality&MGL_DRAW_LMEM) \\r
{ mglDrawReg d; d.set(this,dr_x,dr_y,dr_p); d.PenWidth=pw; \\r
quad_draw(Pnt[p1],Pnt[p2],Pnt[p3],Pnt[p4],&d); }\\r
else{ mglPrim a(3); a.n1 = p1; a.n2 = p2; a.n3 = p3; a.n4 = p4; \\r
a.m=mask; a.angl=MaskAn; a.w = pw; add_prim(a); }\r
+#define MGL_ADD_TRIG { long pp1=p1,pp2=p2,pp3=p3; \\r
+ mreal pw = fabs(PenWidth)*sqrt(font_factor/400); \\r
+ if(TernAxis&12) for(int i=0;i<4;i++) \\r
+ { p1 = ProjScale(i, pp1); p2 = ProjScale(i, pp2); \\r
+ p3 = ProjScale(i, pp3); if(p1>=0&&p2>=0&&p3>=0) {MGL_TRIG_PLOT} } \\r
+ else { MGL_TRIG_PLOT } }\r
+#define MGL_ADD_QUAD { long pp1=p1,pp2=p2,pp3=p3,pp4=p4; \\r
+ mreal pw = fabs(PenWidth)*sqrt(font_factor/400); \\r
+ if(TernAxis&12) for(int i=0;i<4;i++) \\r
+ { p1 = ProjScale(i, pp1); p2 = ProjScale(i, pp2); \\r
+ p3 = ProjScale(i, pp3); p4 = ProjScale(i, pp4); \\r
+ if(p1>=0&&p2>=0&&p3>=0&&p4>=0) {MGL_QUAD_PLOT} } \\r
+ else { MGL_QUAD_PLOT } }\r
+\r
+\r
+void mglCanvas::trig_plot(long p1, long p2, long p3)\r
+{\r
+ if(p1<0 || p2<0 || p3<0) return; // nothing to do\r
+ const mglPnt &q1=Pnt[p1], &q2=Pnt[p2], &q3=Pnt[p3];\r
+ long state = (mgl_isnan(q1.x)?1:0)+(mgl_isnan(q2.x)?2:0)+(mgl_isnan(q3.x)?4:0), st, p4;\r
+ if((Flag&MGL_FAST_PRIM) || (TernAxis&3))\r
+ {\r
+ if(!state) MGL_ADD_TRIG\r
+ }\r
+ else switch(state)\r
+ {\r
+ case 0: MGL_ADD_TRIG break;\r
+ case 1:\r
+ p1 = AddPairBnd(q2,q1);\r
+ p4 = p3;\r
+ p3 = AddPairBnd(q3,q1);\r
+ st = ((p1>=0 && mgl_isnum(Pnt[p1].x))?0:1)+((p3>=0 && mgl_isnum(Pnt[p3].x))?0:2);\r
+ switch(st)\r
+ {\r
+ case 0: MGL_ADD_QUAD break;\r
+ case 1: p1 = p4; MGL_ADD_TRIG break;\r
+ case 2: p3 = p4; MGL_ADD_TRIG break;\r
+ }\r
+ break;\r
+ case 2:\r
+ p2 = AddPairBnd(q1,q2);\r
+ p4 = AddPairBnd(q3,q2);\r
+ st = ((p2>=0 && mgl_isnum(Pnt[p2].x))?0:1)+((p4>=0 && mgl_isnum(Pnt[p4].x))?0:2);\r
+ switch(st)\r
+ {\r
+ case 0: MGL_ADD_QUAD break;\r
+ case 1: p2 = p4; MGL_ADD_TRIG break;\r
+ case 2: MGL_ADD_TRIG break;\r
+ }\r
+ break;\r
+ case 3:\r
+ p1 = AddPairBnd(q3,q1);\r
+ p2 = AddPairBnd(q3,q2);\r
+ if(p2>=0 && p1>=0 && mgl_isnum(Pnt[p2].x) && mgl_isnum(Pnt[p1].x)) // valid trig\r
+ MGL_ADD_TRIG\r
+ break;\r
+ case 4:\r
+ p3 = AddPairBnd(q1,q3);\r
+ p4 = AddPairBnd(q2,q3);\r
+ st = ((p3>=0 && mgl_isnum(Pnt[p3].x))?0:1)+((p4>=0 && mgl_isnum(Pnt[p4].x))?0:2);\r
+ switch(st)\r
+ {\r
+ case 0: MGL_ADD_QUAD break;\r
+ case 1: p3 = p4; MGL_ADD_TRIG break;\r
+ case 2: MGL_ADD_TRIG break;\r
+ }\r
+ break;\r
+ case 5:\r
+ p1 = AddPairBnd(q2,q1);\r
+ p3 = AddPairBnd(q2,q3);\r
+ if(p1>=0 && p3>=0 && mgl_isnum(Pnt[p1].x) && mgl_isnum(Pnt[p3].x)) // valid trig\r
+ MGL_ADD_TRIG\r
+ break;\r
+ case 6:\r
+ p2 = AddPairBnd(q1,q2);\r
+ p3 = AddPairBnd(q1,q3);\r
+ if(p2>=0 && p3>=0 && mgl_isnum(Pnt[p2].x) && mgl_isnum(Pnt[p3].x)) // valid trig\r
+ MGL_ADD_TRIG\r
+ break;\r
+ }\r
+}\r
+//-----------------------------------------------------------------------------\r
void mglCanvas::quad_plot(long p1, long p2, long p3, long p4)\r
{\r
- if(SamePnt(p1,p2)) { trig_plot(p4,p2,p3); return; }\r
- if(SamePnt(p2,p4)) { trig_plot(p1,p4,p3); return; }\r
- if(SamePnt(p1,p3)) { trig_plot(p1,p2,p4); return; }\r
- if(SamePnt(p3,p4)) { trig_plot(p1,p2,p3); return; }\r
- long pp1=p1,pp2=p2,pp3=p3,pp4=p4;\r
- mreal pw = fabs(PenWidth)*sqrt(font_factor/400);\r
- if(TernAxis&12) for(int i=0;i<4;i++)\r
- { p1 = ProjScale(i, pp1); p2 = ProjScale(i, pp2);\r
- p3 = ProjScale(i, pp3); p4 = ProjScale(i, pp4);\r
- if(p1>=0&&p2>=0&&p3>=0&&p4>=0) {MGL_QUAD_PLOT} }\r
- else { MGL_QUAD_PLOT }\r
+ if(p1<0) { trig_plot(p4,p2,p3); return; }\r
+ if(p2<0) { trig_plot(p1,p4,p3); return; }\r
+ if(p3<0) { trig_plot(p1,p2,p4); return; }\r
+ if(p4<0) { trig_plot(p1,p2,p3); return; }\r
+ const mglPnt &q1=Pnt[p1], &q2=Pnt[p2], &q3=Pnt[p3], &q4=Pnt[p4];\r
+ int state = (mgl_isnan(q1.x)?1:0)+(mgl_isnan(q2.x)?2:0)+(mgl_isnan(q3.x)?4:0)+(mgl_isnan(q4.x)?8:0), st;\r
+ if((Flag&MGL_FAST_PRIM) || (TernAxis&3))\r
+ {\r
+ switch(state)\r
+ {\r
+ case 0: MGL_ADD_QUAD break;\r
+ case 1: p1 = p4; MGL_ADD_TRIG break;\r
+ case 2: p2 = p4; MGL_ADD_TRIG break;\r
+ case 4: p3 = p4; MGL_ADD_TRIG break;\r
+ case 8: MGL_ADD_TRIG break;\r
+ }\r
+ }\r
+ else switch(state)\r
+ {\r
+ case 0: MGL_ADD_QUAD break;\r
+ case 1:\r
+ p1 = p4; MGL_ADD_TRIG // valid trig\r
+ p1 = AddPairBnd(q2,q1); p4=p3; p3=p2;\r
+ p2 = AddPairBnd(q3,q1);\r
+ st = ((p1>=0 && mgl_isnum(Pnt[p1].x))?0:1)+((p2>=0 && mgl_isnum(Pnt[p2].x))?0:2);\r
+ switch(st)\r
+ {\r
+ case 0: MGL_ADD_QUAD break;\r
+ case 1: p1 = p4; MGL_ADD_TRIG break;\r
+ case 2: p2 = p4; MGL_ADD_TRIG break;\r
+ }\r
+ break;\r
+ case 2:\r
+ p2 = p4; MGL_ADD_TRIG // valid trig\r
+ p3 = AddPairBnd(q1,q2);\r
+ p4 = AddPairBnd(q4,q2);\r
+ st = ((p3>=0 && mgl_isnum(Pnt[p3].x))?0:1)+((p4>=0 && mgl_isnum(Pnt[p4].x))?0:2);\r
+ switch(st)\r
+ {\r
+ case 0: MGL_ADD_QUAD break;\r
+ case 1: p3 = p4; MGL_ADD_TRIG break;\r
+ case 2: MGL_ADD_TRIG break;\r
+ }\r
+ break;\r
+ case 3:\r
+ p1 = AddPairBnd(q3,q1);\r
+ p2 = AddPairBnd(q4,q2);\r
+ st = ((p1>=0 && mgl_isnum(Pnt[p1].x))?0:1)+((p2>=0 && mgl_isnum(Pnt[p2].x))?0:2);\r
+ switch(st)\r
+ {\r
+ case 0: MGL_ADD_QUAD break;\r
+ case 1: p1 = p4; MGL_ADD_TRIG break;\r
+ case 2: p2 = p4; MGL_ADD_TRIG break;\r
+ }\r
+ break;\r
+ case 4:\r
+ p3 = p4; MGL_ADD_TRIG // valid trig\r
+ p2 = AddPairBnd(q1,q3);\r
+ p4 = AddPairBnd(q4,q3);\r
+ st = ((p2>=0 && mgl_isnum(Pnt[p2].x))?0:1)+((p4>=0 && mgl_isnum(Pnt[p4].x))?0:2);\r
+ switch(st)\r
+ {\r
+ case 0: MGL_ADD_QUAD break;\r
+ case 1: p2 = p4; MGL_ADD_TRIG break;\r
+ case 2: MGL_ADD_TRIG break;\r
+ }\r
+ break;\r
+ case 5:\r
+ p1 = AddPairBnd(q2,q1);\r
+ p3 = AddPairBnd(q4,q3);\r
+ st = ((p1>=0 && mgl_isnum(Pnt[p1].x))?0:1)+((p3>=0 && mgl_isnum(Pnt[p3].x))?0:2);\r
+ switch(st)\r
+ {\r
+ case 0: MGL_ADD_QUAD break;\r
+ case 1: p1 = p4; MGL_ADD_TRIG break;\r
+ case 2: p3 = p4; MGL_ADD_TRIG break;\r
+ }\r
+ break;\r
+ case 6:\r
+ p2 = AddPairBnd(q1,q2); p3=p4;\r
+ p4 = AddPairBnd(q4,q2);\r
+ st = ((p4>=0 && mgl_isnum(Pnt[p4].x))?0:1)+((p2>=0 && mgl_isnum(Pnt[p2].x))?0:2);\r
+ switch(st)\r
+ {\r
+ case 0: MGL_ADD_QUAD break;\r
+ case 1: MGL_ADD_TRIG break;\r
+ case 2: p2 = p4; MGL_ADD_TRIG break;\r
+ }\r
+ p2 = AddPairBnd(q1,q3);\r
+ p4 = AddPairBnd(q4,q3);\r
+ st = ((p4>=0 && mgl_isnum(Pnt[p4].x))?0:1)+((p2>=0 && mgl_isnum(Pnt[p2].x))?0:2);\r
+ switch(st)\r
+ {\r
+ case 0: MGL_ADD_QUAD break;\r
+ case 1: MGL_ADD_TRIG break;\r
+ case 2: p2 = p4; MGL_ADD_TRIG break;\r
+ }\r
+ break;\r
+ case 7:\r
+ p1 = p4;\r
+ p2 = AddPairBnd(q4,q2);\r
+ p3 = AddPairBnd(q4,q3);\r
+ if(p3>=0 && p2>=0 && mgl_isnum(Pnt[p3].x) && mgl_isnum(Pnt[p2].x)) // valid trig\r
+ MGL_ADD_TRIG\r
+ break;\r
+ case 8:\r
+ MGL_ADD_TRIG\r
+ p1 = AddPairBnd(q2,q4); p4=p3; p3=p2;\r
+ p2 = AddPairBnd(q3,q4);\r
+ st = ((p1>=0 && mgl_isnum(Pnt[p1].x))?0:1)+((p2>=0 && mgl_isnum(Pnt[p2].x))?0:2);\r
+ switch(st)\r
+ {\r
+ case 0: MGL_ADD_QUAD break;\r
+ case 1: p1 = p4; MGL_ADD_TRIG break;\r
+ case 2: p2 = p4; MGL_ADD_TRIG break;\r
+ }\r
+ break;\r
+ case 9:\r
+ p1 = AddPairBnd(q3,q1); p4=p2;\r
+ p2 = AddPairBnd(q2,q1);\r
+ st = ((p1>=0 && mgl_isnum(Pnt[p1].x))?0:1)+((p2>=0 && mgl_isnum(Pnt[p2].x))?0:2);\r
+ switch(st)\r
+ {\r
+ case 0: MGL_ADD_QUAD break;\r
+ case 1: p1 = p4; MGL_ADD_TRIG break;\r
+ case 2: p2 = p4; MGL_ADD_TRIG break;\r
+ }\r
+ p1 = AddPairBnd(q3,q4);\r
+ p2 = AddPairBnd(q2,q4);\r
+ st = ((p1>=0 && mgl_isnum(Pnt[p1].x))?0:1)+((p2>=0 && mgl_isnum(Pnt[p2].x))?0:2);\r
+ switch(st)\r
+ {\r
+ case 0: MGL_ADD_QUAD break;\r
+ case 1: p1 = p4; MGL_ADD_TRIG break;\r
+ case 2: p2 = p4; MGL_ADD_TRIG break;\r
+ }\r
+ break;\r
+ case 10:\r
+ p2 = AddPairBnd(q1,q2);\r
+ p4 = AddPairBnd(q3,q4);\r
+ st = ((p2>=0 && mgl_isnum(Pnt[p2].x))?0:1)+((p4>=0 && mgl_isnum(Pnt[p4].x))?0:2);\r
+ switch(st)\r
+ {\r
+ case 0: MGL_ADD_QUAD break;\r
+ case 1: p2 = p4; MGL_ADD_TRIG break;\r
+ case 2: MGL_ADD_TRIG break;\r
+ }\r
+ break;\r
+ case 11:\r
+ p1 = AddPairBnd(q3,q1);\r
+ p2 = AddPairBnd(q3,q4);\r
+ if(p1>=0 && p2>=0 && mgl_isnum(Pnt[p1].x) && mgl_isnum(Pnt[p2].x)) // valid trig\r
+ MGL_ADD_TRIG\r
+ break;\r
+ case 12:\r
+ p3 = AddPairBnd(q1,q3);\r
+ p4 = AddPairBnd(q2,q4);\r
+ st = ((p3>=0 && mgl_isnum(Pnt[p3].x))?0:1)+((p4>=0 && mgl_isnum(Pnt[p4].x))?0:2);\r
+ switch(st)\r
+ {\r
+ case 0: MGL_ADD_QUAD break;\r
+ case 1: p3 = p4; MGL_ADD_TRIG break;\r
+ case 2: MGL_ADD_TRIG break;\r
+ }\r
+ break;\r
+ case 13:\r
+ p1 = AddPairBnd(q2,q1);\r
+ p3 = AddPairBnd(q2,q4);\r
+ if(p3>=0 && p1>=0 && mgl_isnum(Pnt[p3].x) && mgl_isnum(Pnt[p1].x)) // valid trig\r
+ MGL_ADD_TRIG\r
+ break;\r
+ case 14:\r
+ p2 = AddPairBnd(q1,q2);\r
+ p3 = AddPairBnd(q1,q3);\r
+ st = ((p2>=0 && mgl_isnum(Pnt[p2].x))?0:1)+((p3>=0 && mgl_isnum(Pnt[p3].x))?0:2);\r
+ switch(st)\r
+ {\r
+ case 0: MGL_ADD_QUAD break;\r
+ case 1: p2 = p4; MGL_ADD_TRIG break;\r
+ case 2: p3 = p4; MGL_ADD_TRIG break;\r
+ }\r
+ break;\r
+ }\r
}\r
//-----------------------------------------------------------------------------\r
mreal mglCanvas::text_plot(long p,const wchar_t *text,const char *font,mreal size,mreal sh,mreal col,bool rot)\r
q.u = q.v = NAN; q.a=q.ta=1;\r
memset(Bt.b,0,9*sizeof(float));\r
Bt.b[0] = Bt.b[4] = Bt.b[8] = fscl;\r
+ Bt.ib[0] = Bt.ib[4] = Bt.ib[8] = 1./fscl;\r
float opf = Bt.pf;\r
Bt.RotateN(ftet,0,0,1); Bt.pf = Bt.norot?1.55:opf;\r
if(strchr(font,'@')) // draw box around text\r
B.b[0] = Width*(x2-x1); B.b[4] = Height*(y2-y1);\r
B.b[8] = sqrt(B.b[0]*B.b[4]);\r
B.z = (1.f-B.b[8]/(2*Depth))*Depth;\r
+ B.invert();\r
B1=B; font_factor = B.b[0] < B.b[4] ? B.b[0] : B.b[4];\r
\r
mglBlock p; p.AmbBr = AmbBr; p.DifBr = DifBr; p.B = B;\r
M.b[0] = B1.b[0]*(x2-x1); M.b[4] = B1.b[4]*(y2-y1);\r
M.b[8] = sqrt(M.b[0]*M.b[4]);\r
M.z = B1.z + (1.f-M.b[8]/(2*Depth))*B1.b[8];\r
+ M.invert();\r
}\r
else\r
{\r
M.b[0] = Width*(x2-x1); M.b[4] = Height*(y2-y1);\r
M.b[8] = sqrt(M.b[0]*M.b[4]);\r
M.z = (1.f-M.b[8]/(2*Depth))*Depth;\r
- B1=M;\r
+ M.invert(); B1=M;\r
}\r
inW=M.b[0]; inH=M.b[4]; ZMin=1;\r
inX=Width*x1; inY=Height*y1;\r
b[6] = R[0]*O[6] + R[3]*O[7] + R[6]*O[8];\r
b[7] = R[1]*O[6] + R[4]*O[7] + R[7]*O[8];\r
b[8] = R[2]*O[6] + R[5]*O[7] + R[8]*O[8];\r
+ invert();\r
}\r
//-----------------------------------------------------------------------------\r
void mglCanvas::RotateN(mreal Tet,mreal x,mreal y,mreal z)\r
b[6] = T[0]*R[6] + T[3]*R[7] + T[6]*R[8];\r
b[7] = T[1]*R[6] + T[4]*R[7] + T[7]*R[8];\r
b[8] = T[2]*R[6] + T[5]*R[7] + T[8]*R[8];\r
+ invert();\r
}\r
//-----------------------------------------------------------------------------\r
void mglCanvas::View(mreal tetx,mreal tetz,mreal tety)\r
x1=2*x1-1; x2=2*x2-1; y1=2*y1-1; y2=2*y2-1;\r
Bp.b[0]=2/fabs(x2-x1); Bp.b[4]=2/fabs(y2-y1);\r
Bp.x=(x1+x2)/fabs(x2-x1);Bp.y=(y1+y2)/fabs(y2-y1);\r
+ Bp.invert();\r
}\r
//-----------------------------------------------------------------------------\r
int mglCanvas::GetSplId(long x,long y) const\r
B.b[0] *= Ax; B.b[3] *= Ax; B.b[6] *= Ax;\r
B.b[1] *= Ay; B.b[4] *= Ay; B.b[7] *= Ay;\r
B.b[2] *= Az; B.b[5] *= Az; B.b[8] *= Az;\r
+ B.invert();\r
size_t n = Sub.size(); if(n>0) Sub[n-1].B = B;\r
}\r
//-----------------------------------------------------------------------------\r
const float R[6]={B.b[0],B.b[1],B.b[2],B.b[3],B.b[4],B.b[5]};\r
B.b[0] = (R[0]+Sx*R[3])/Fx; B.b[1] = (R[1]+Sx*R[4])/Fx; B.b[2] = (R[2]+Sx*R[5])/Fx;\r
B.b[3] = (R[3]+Sy*R[0])/Fy; B.b[4] = (R[4]+Sy*R[1])/Fy; B.b[5] = (R[5]+Sy*R[2])/Fy;\r
+ B.invert();\r
size_t n = Sub.size(); if(n>0) Sub[n-1].B = B;\r
}\r
//-----------------------------------------------------------------------------\r
#endif\r
for(long i=0;i<360;i++) mgl_cos[i] = cos(i*M_PI/180.);\r
if(!mglDefFont) mglDefFont = new mglFont(MGL_DEF_FONT_NAME);\r
- if(!mglDefaultGr) mglDefaultGr = new mglCanvas(600,400);\r
+// if(!mglDefaultGr) mglDefaultGr = new mglCanvas(600,400);\r
}\r
}\r
void MGL_EXPORT MGL_FUNC_FINI mgl_fini() // TODO try to add ld option: "-fini mgl_fini"\r
{ mglCanvas *g = dynamic_cast<mglCanvas *>(gr); if(g) g->Clf(mglColor(ch)); }\r
void MGL_EXPORT mgl_clf_rgb(HMGL gr, double r, double g, double b)\r
{ mglCanvas *gg = dynamic_cast<mglCanvas *>(gr); if(gg) gg->Clf(mglColor(r,g,b)); }\r
+void MGL_EXPORT mgl_clf_rgba(HMGL gr, double r, double g, double b, double a)\r
+{ mglCanvas *gg = dynamic_cast<mglCanvas *>(gr); if(gg) gg->Clf(mglColor(r,g,b,a)); }\r
void MGL_EXPORT mgl_clf_str(HMGL gr, const char *col)\r
{ mglCanvas *g = dynamic_cast<mglCanvas *>(gr); if(g) g->Clf(col); }\r
void MGL_EXPORT mgl_load_background(HMGL gr, const char *fn, double alpha)\r
{ mglCanvas *g = dynamic_cast<mglCanvas *>(gr); if(g) g->LoadBackground(fn,alpha); }\r
void MGL_EXPORT mgl_load_background_ext(HMGL gr, const char *fn, const char *how, double alpha)\r
{ mglCanvas *g = dynamic_cast<mglCanvas *>(gr); if(g) g->LoadBackground(fn,how,alpha); }\r
-void MGL_EXPORT mgl_fill_background(HMGL gr, double r, double g, double b)\r
-{ mglCanvas *gg = dynamic_cast<mglCanvas *>(gr); if(gg) gg->FillBackground(mglColor(r,g,b)); }\r
+void MGL_EXPORT mgl_fill_background(HMGL gr, double r, double g, double b, double a)\r
+{ mglCanvas *gg = dynamic_cast<mglCanvas *>(gr); if(gg) gg->FillBackground(mglColor(r,g,b,a)); }\r
//-----------------------------------------------------------------------------\r
void MGL_EXPORT mgl_subplot_d(HMGL gr, int nx,int ny,int m,const char *style,double dx,double dy)\r
{\r
{ char *s=new char[l+1]; memcpy(s,fn,l); s[l]=0;\r
char *h=new char[m+1]; memcpy(h,how,l); h[m]=0;\r
mgl_load_background_ext(_GR_,s,h,*a); delete []s; delete []h; }\r
-void MGL_EXPORT mgl_fill_background_(uintptr_t *gr, double *r, double *g, double *b)\r
-{ mgl_fill_background(_GR_,*r,*g,*b); }\r
+void MGL_EXPORT mgl_fill_background_(uintptr_t *gr, double *r, double *g, double *b, double *a)\r
+{ mgl_fill_background(_GR_,*r,*g,*b,*a); }\r
//-----------------------------------------------------------------------------\r
void MGL_EXPORT mgl_subplot_d_(uintptr_t *gr, int *nx,int *ny,int *m,const char *st, mreal *dx, mreal *dy,int l)\r
{ char *s=new char[l+1]; memcpy(s,st,l); s[l]=0;\r
void MGL_EXPORT mgl_delete_graph(HMGL gr) { if(gr) delete gr; }\r
HMGL MGL_EXPORT mgl_default_graph()\r
{\r
- if(!mglDefaultGr)\r
- mglDefaultGr = new mglCanvas(600,400);\r
+ if(!mglDefaultGr) mglDefaultGr = new mglCanvas(600,400);\r
return mglDefaultGr;\r
}\r
void MGL_EXPORT mgl_set_size_scl(double scl){ if(scl>0) mgl_size_scl = scl; }\r
void MGL_EXPORT mgl_labelw(HMGL gr, char dir, const wchar_t *text, double pos, const char *opt)\r
{ mglCanvas *g = dynamic_cast<mglCanvas *>(gr); if(g) g->Labelw(dir,text,pos,opt); }\r
//-----------------------------------------------------------------------------\r
-void MGL_EXPORT mgl_colorbar(HMGL gr, const char *sch)\r
-{ mglCanvas *g = dynamic_cast<mglCanvas *>(gr); if(g) g->Colorbar(sch); }\r
-void MGL_EXPORT mgl_colorbar_ext(HMGL gr, const char *sch, double x, double y, double w, double h)\r
-{ mglCanvas *g = dynamic_cast<mglCanvas *>(gr); if(g) g->Colorbar(sch,x,y,w,h); }\r
-void MGL_EXPORT mgl_colorbar_val(HMGL gr, HCDT dat, const char *sch)\r
-{ mglCanvas *g = dynamic_cast<mglCanvas *>(gr); if(g) g->Colorbar(dat,sch); }\r
-void MGL_EXPORT mgl_colorbar_val_ext(HMGL gr, HCDT dat, const char *sch,double x, double y, double w, double h)\r
-{ mglCanvas *g = dynamic_cast<mglCanvas *>(gr); if(g) g->Colorbar(dat,sch,x,y,w,h); }\r
+void MGL_EXPORT mgl_colorbar(HMGL gr, const char *sch, const char *opt)\r
+{ mglCanvas *g = dynamic_cast<mglCanvas *>(gr); if(g) g->Colorbar(sch,opt); }\r
+void MGL_EXPORT mgl_colorbar_ext(HMGL gr, const char *sch, double x, double y, double w, double h, const char *opt)\r
+{ mglCanvas *g = dynamic_cast<mglCanvas *>(gr); if(g) g->Colorbar(sch,x,y,w,h,opt); }\r
+void MGL_EXPORT mgl_colorbar_val(HMGL gr, HCDT dat, const char *sch, const char *opt)\r
+{ mglCanvas *g = dynamic_cast<mglCanvas *>(gr); if(g) g->Colorbar(dat,sch,opt); }\r
+void MGL_EXPORT mgl_colorbar_val_ext(HMGL gr, HCDT dat, const char *sch,double x, double y, double w, double h, const char *opt)\r
+{ mglCanvas *g = dynamic_cast<mglCanvas *>(gr); if(g) g->Colorbar(dat,sch,x,y,w,h,opt); }\r
//-----------------------------------------------------------------------------\r
void MGL_EXPORT mgl_add_legend(HMGL gr, const char *text,const char *style)\r
{ mglCanvas *g = dynamic_cast<mglCanvas *>(gr); if(g) g->AddLegend(text,style); }\r
uintptr_t MGL_EXPORT mgl_create_graph_(int *width, int *height)\r
{ return uintptr_t(new mglCanvas(*width,*height)); }\r
void MGL_EXPORT mgl_delete_graph_(uintptr_t *gr) { delete _GR_; }\r
-uintptr_t MGL_EXPORT mgl_default_graph_() { return uintptr_t(&mglDefaultGr); }\r
+uintptr_t MGL_EXPORT mgl_default_graph_() { return uintptr_t(mgl_default_graph()); }\r
void MGL_EXPORT mgl_set_size_scl_(double *scl) { mgl_set_size_scl(*scl); }\r
void MGL_EXPORT mgl_set_size_(uintptr_t *gr, int *width, int *height)\r
{ mgl_set_size(_GR_,*width,*height); }\r
char *o=new char[m+1]; memcpy(o,opt,m); o[m]=0;\r
_GR_->Label(*dir, s, *pos, o); delete []s; delete []o; }\r
//-----------------------------------------------------------------------------\r
-void MGL_EXPORT mgl_colorbar_(uintptr_t *gr, const char *sch, int l)\r
+void MGL_EXPORT mgl_colorbar_(uintptr_t *gr, const char *sch, const char *opt,int l,int m)\r
{ char *s=new char[l+1]; memcpy(s,sch,l); s[l]=0;\r
- _GR_->Colorbar(s); delete []s; }\r
-void MGL_EXPORT mgl_colorbar_ext_(uintptr_t *gr, const char *sch, mreal *x, mreal *y, mreal *w, mreal *h, int l)\r
+ char *o=new char[m+1]; memcpy(o,opt,m); o[m]=0;\r
+ _GR_->Colorbar(s,o); delete []s; delete []o; }\r
+void MGL_EXPORT mgl_colorbar_ext_(uintptr_t *gr, const char *sch, mreal *x, mreal *y, mreal *w, mreal *h, const char *opt, int l,int m)\r
{ char *s=new char[l+1]; memcpy(s,sch,l); s[l]=0;\r
- _GR_->Colorbar(s,*x,*y,*w,*h); delete []s; }\r
-void MGL_EXPORT mgl_colorbar_val_(uintptr_t *gr, uintptr_t *dat, const char *sch, int l)\r
+ char *o=new char[m+1]; memcpy(o,opt,m); o[m]=0;\r
+ _GR_->Colorbar(s,*x,*y,*w,*h,o); delete []s; delete []o; }\r
+void MGL_EXPORT mgl_colorbar_val_(uintptr_t *gr, uintptr_t *dat, const char *sch, const char *opt,int l,int m)\r
{ char *s=new char[l+1]; memcpy(s,sch,l); s[l]=0;\r
- _GR_->Colorbar(_DA_(dat), s); delete []s; }\r
-void MGL_EXPORT mgl_colorbar_val_ext_(uintptr_t *gr, uintptr_t *dat, const char *sch, mreal *x, mreal *y, mreal *w, mreal *h, int l)\r
+ char *o=new char[m+1]; memcpy(o,opt,m); o[m]=0;\r
+ _GR_->Colorbar(_DA_(dat), s,o); delete []s; delete []o; }\r
+void MGL_EXPORT mgl_colorbar_val_ext_(uintptr_t *gr, uintptr_t *dat, const char *sch, mreal *x, mreal *y, mreal *w, mreal *h, const char *opt, int l,int m)\r
{ char *s=new char[l+1]; memcpy(s,sch,l); s[l]=0;\r
- _GR_->Colorbar(_DA_(dat),s,*x,*y,*w,*h); delete []s; }\r
+ char *o=new char[m+1]; memcpy(o,opt,m); o[m]=0;\r
+ _GR_->Colorbar(_DA_(dat),s,*x,*y,*w,*h,o); delete []s; delete []o; }\r
//-----------------------------------------------------------------------------\r
void MGL_EXPORT mgl_add_legend_(uintptr_t *gr, const char *text,const char *style,int l,int n)\r
{ char *s=new char[l+1]; memcpy(s,text,l); s[l]=0;\r
// if(Type == SMOOTH_NONE) return;\r
long p[3]={nx,ny,Type};\r
dual *b = new dual[nx*ny*nz];\r
- memset(b,0,nx*ny*nz*sizeof(dual));\r
+ memset((void*)b,0,nx*ny*nz*sizeof(dual));\r
if(nx>4 && xdir)\r
{\r
mglStartThreadC(mgl_csmth_x,0,nx*ny*nz,b,d->a,0,p);\r
memcpy(d->a,b,nx*ny*nz*sizeof(dual));\r
- memset(b,0,nx*ny*nz*sizeof(dual));\r
+ memset((void*)b,0,nx*ny*nz*sizeof(dual));\r
}\r
if(ny>4 && ydir)\r
{\r
mglStartThreadC(mgl_csmth_y,0,nx*ny*nz,b,d->a,0,p);\r
memcpy(d->a,b,nx*ny*nz*sizeof(dual));\r
- memset(b,0,nx*ny*nz*sizeof(dual));\r
+ memset((void*)b,0,nx*ny*nz*sizeof(dual));\r
}\r
if(nz>4 && zdir)\r
{\r
{\r
long nx=d->GetNx(),ny=d->GetNy(),nz=d->GetNz(), nn=nx*ny*nz;\r
if(nx<2 || ny<2) return;\r
- dual *b = new dual[nn]; memset(b,0,nn*sizeof(dual));\r
+ dual *b = new dual[nn]; memset((void*)b,0,nn*sizeof(dual));\r
long p[3]={nx,ny,nz};\r
\r
if(x&&y&&z && x->GetNN()==nn && y->GetNN()==nn && z->GetNN()==nn)\r
#include "mgl2/thread.h"\r
\r
#if MGL_HAVE_HDF5\r
-#define H5_USE_16_API\r
+// #define H5_USE_16_API\r
#include <hdf5.h>\r
#endif\r
\r
if(d->a && !d->link) delete [](d->a);\r
d->a = new dual[d->nx*d->ny*d->nz];\r
d->NewId(); d->link=false;\r
- memset(d->a,0,d->nx*d->ny*d->nz*sizeof(dual));\r
+ memset((void*)(d->a),0,d->nx*d->ny*d->nz*sizeof(dual));\r
}\r
void MGL_EXPORT mgl_datac_create_(uintptr_t *d, int *nx,int *ny,int *nz)\r
{ mgl_datac_create(_DC_,*nx,*ny,*nz); }\r
hid_t hf,hd,hs;\r
hsize_t dims[4];\r
long rank = 3, res;\r
- H5Eset_auto(0,0);\r
+ H5Eset_auto(0,0,0);\r
res=H5Fis_hdf5(fname);\r
if(res>0 && !rewrite) hf = H5Fopen(fname, H5F_ACC_RDWR, H5P_DEFAULT);\r
else hf = H5Fcreate(fname, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);\r
#else\r
hid_t mem_type_id = H5T_NATIVE_FLOAT;\r
#endif\r
- hd = H5Dcreate(hf, data, mem_type_id, hs, H5P_DEFAULT);\r
+ hd = H5Dcreate(hf, data, mem_type_id, hs, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);\r
H5Dwrite(hd, mem_type_id, hs, hs, H5P_DEFAULT, d->a);\r
H5Dclose(hd); H5Sclose(hs); H5Fclose(hf);\r
}\r
if(res<=0) return 0;\r
hf = H5Fopen(fname, H5F_ACC_RDONLY, H5P_DEFAULT);\r
if(hf<0) return 0;\r
- hd = H5Dopen(hf,data);\r
+ hd = H5Dopen(hf,data, H5P_DEFAULT);\r
if(hd<0) { H5Fclose(hf); return 0; }\r
hs = H5Dget_space(hd);\r
if(hs<0) { H5Dclose(hd); H5Fclose(hf); return 0; }\r
{\r
long n = x->GetNN(), m = nums->GetNy();\r
std::vector<mglSegment> lines;\r
+ const mreal l0 = 1e-5, l1=1-l0;\r
for(long i=0;i<m;i++)\r
{\r
long k1 = long(nums->v(0,i)+0.5), k2 = long(nums->v(1,i)+0.5), k3 = long(nums->v(2,i)+0.5);\r
if(k1<0 || k1>=n || k2<0 || k2>=n || k3<0 || k3>=n) continue;\r
mreal v1 = a->v(k1), v2 = a->v(k2), v3 = a->v(k3);\r
mreal d1 = mgl_d(val,v1,v2), d2 = mgl_d(val,v1,v3), d3 = mgl_d(val,v2,v3);\r
+ bool ok1=d1>l0 && d1<l1, ok2=d2>l0 && d2<l1, ok3=d3>l0 && d3<l1; \r
mglSegment line;\r
- if(d1>=0 && d1<=1 && d2>=0 && d2<=1)\r
+ if(ok1)\r
{\r
line.p1.Set(x->v(k1)*(1-d1)+x->v(k2)*d1, y->v(k1)*(1-d1)+y->v(k2)*d1, z->v(k1)*(1-d1)+z->v(k2)*d1);\r
- line.p2.Set(x->v(k1)*(1-d2)+x->v(k3)*d2, y->v(k1)*(1-d2)+y->v(k3)*d2, z->v(k1)*(1-d2)+z->v(k3)*d2);\r
+ if(ok2)\r
+ line.p2.Set(x->v(k1)*(1-d2)+x->v(k3)*d2, y->v(k1)*(1-d2)+y->v(k3)*d2, z->v(k1)*(1-d2)+z->v(k3)*d2);\r
+ else if(ok3)\r
+ line.p2.Set(x->v(k2)*(1-d3)+x->v(k3)*d3, y->v(k2)*(1-d3)+y->v(k3)*d3, z->v(k2)*(1-d3)+z->v(k3)*d3);\r
+ else\r
+ line.p2.Set(x->v(k3), y->v(k3), z->v(k3));\r
+ \r
}\r
- else if(d1>=0 && d1<=1 && d3>=0 && d3<=1)\r
+ else if(ok3)\r
{\r
- line.p1.Set(x->v(k1)*(1-d1)+x->v(k2)*d1, y->v(k1)*(1-d1)+y->v(k2)*d1, z->v(k1)*(1-d1)+z->v(k2)*d1);\r
line.p2.Set(x->v(k2)*(1-d3)+x->v(k3)*d3, y->v(k2)*(1-d3)+y->v(k3)*d3, z->v(k2)*(1-d3)+z->v(k3)*d3);\r
+ if(ok2)\r
+ line.p1.Set(x->v(k1)*(1-d2)+x->v(k3)*d2, y->v(k1)*(1-d2)+y->v(k3)*d2, z->v(k1)*(1-d2)+z->v(k3)*d2);\r
+ else\r
+ line.p1.Set(x->v(k1), y->v(k1), z->v(k1));\r
}\r
- else if(d3>=0 && d3<=1 && d2>=0 && d2<=1)\r
+ else if(ok2)\r
{\r
line.p1.Set(x->v(k1)*(1-d2)+x->v(k3)*d2, y->v(k1)*(1-d2)+y->v(k3)*d2, z->v(k1)*(1-d2)+z->v(k3)*d2);\r
- line.p2.Set(x->v(k2)*(1-d3)+x->v(k3)*d3, y->v(k2)*(1-d3)+y->v(k3)*d3, z->v(k2)*(1-d3)+z->v(k3)*d3);\r
+ if(ok3)\r
+ line.p2.Set(x->v(k2)*(1-d3)+x->v(k3)*d3, y->v(k2)*(1-d3)+y->v(k3)*d3, z->v(k2)*(1-d3)+z->v(k3)*d3);\r
+ else\r
+ line.p2.Set(x->v(k2), y->v(k2), z->v(k2));\r
+ }\r
+ else if(fabs(val-v1)<l0 && fabs(val-v2)<l0)\r
+ {\r
+ line.p1.Set(x->v(k1), y->v(k1), z->v(k1));\r
+ line.p2.Set(x->v(k2), y->v(k2), z->v(k2));\r
+ }\r
+ else if(fabs(val-v1)<l0 && fabs(val-v3)<l0)\r
+ {\r
+ line.p1.Set(x->v(k1), y->v(k1), z->v(k1));\r
+ line.p2.Set(x->v(k3), y->v(k3), z->v(k3));\r
+ }\r
+ else if(fabs(val-v2)<l0 && fabs(val-v3)<l0)\r
+ {\r
+ line.p1.Set(x->v(k2), y->v(k2), z->v(k2));\r
+ line.p2.Set(x->v(k3), y->v(k3), z->v(k3));\r
}\r
if(line.p1!=line.p2) lines.push_back(line);\r
}\r
\r
#if MGL_HAVE_HDF5\r
//#define H5_NO_DEPRECATED_SYMBOLS\r
-#define H5_USE_16_API\r
+// #define H5_USE_16_API\r
#include <hdf5.h>\r
#endif\r
#if MGL_HAVE_HDF4\r
hid_t hf,hd,hs;\r
hsize_t dims[4]={1,2};\r
long rank = 2, res;\r
- H5Eset_auto(0,0);\r
+ H5Eset_auto(0,0,0);\r
res=H5Fis_hdf5(fname);\r
if(res>0 && !rewrite) hf = H5Fopen(fname, H5F_ACC_RDWR, H5P_DEFAULT);\r
else hf = H5Fcreate(fname, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);\r
#else\r
hid_t mem_type_id = H5T_NATIVE_FLOAT;\r
#endif\r
- hd = H5Dcreate(hf, data, mem_type_id, hs, H5P_DEFAULT);\r
+ hd = H5Dcreate(hf, data, mem_type_id, hs, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);\r
H5Dwrite(hd, mem_type_id, hs, hs, H5P_DEFAULT, &val);\r
H5Dclose(hd); H5Sclose(hs); H5Fclose(hf);\r
}\r
hid_t hf,hd,hs;\r
hsize_t dims[3]={1,1,1};\r
long rank = 1, res;\r
- H5Eset_auto(0,0);\r
+ H5Eset_auto(0,0,0);\r
res=H5Fis_hdf5(fname);\r
if(res>0 && !rewrite) hf = H5Fopen(fname, H5F_ACC_RDWR, H5P_DEFAULT);\r
else hf = H5Fcreate(fname, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);\r
if(hf<0) return;\r
hs = H5Screate_simple(rank, dims, 0);\r
hid_t mem_type_id = H5T_NATIVE_DOUBLE;\r
- hd = H5Dcreate(hf, data, mem_type_id, hs, H5P_DEFAULT);\r
+ hd = H5Dcreate(hf, data, mem_type_id, hs, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);\r
H5Dwrite(hd, mem_type_id, hs, hs, H5P_DEFAULT, &val);\r
H5Dclose(hd); H5Sclose(hs); H5Fclose(hf);\r
}\r
hid_t hf,hd,hs;\r
hsize_t dims[3]={1,1,1};\r
long rank = 1, res;\r
- H5Eset_auto(0,0);\r
+ H5Eset_auto(0,0,0);\r
res=H5Fis_hdf5(fname);\r
if(res>0 && !rewrite) hf = H5Fopen(fname, H5F_ACC_RDWR, H5P_DEFAULT);\r
else hf = H5Fcreate(fname, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);\r
if(hf<0) return;\r
hs = H5Screate_simple(rank, dims, 0);\r
hid_t mem_type_id = H5T_NATIVE_LONG;\r
- hd = H5Dcreate(hf, data, mem_type_id, hs, H5P_DEFAULT);\r
+ hd = H5Dcreate(hf, data, mem_type_id, hs, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);\r
H5Dwrite(hd, mem_type_id, hs, hs, H5P_DEFAULT, &val);\r
H5Dclose(hd); H5Sclose(hs); H5Fclose(hf);\r
}\r
hid_t hf,hd,hs;\r
hsize_t dims[3];\r
long rank = 3, res;\r
- H5Eset_auto(0,0);\r
+ H5Eset_auto(0,0,0);\r
res=H5Fis_hdf5(fname);\r
if(res>0 && !rewrite) hf = H5Fopen(fname, H5F_ACC_RDWR, H5P_DEFAULT);\r
else hf = H5Fcreate(fname, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);\r
#else\r
hid_t mem_type_id = H5T_NATIVE_FLOAT;\r
#endif\r
- hd = H5Dcreate(hf, data, mem_type_id, hs, H5P_DEFAULT);\r
+ hd = H5Dcreate(hf, data, mem_type_id, hs, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);\r
H5Dwrite(hd, mem_type_id, hs, hs, H5P_DEFAULT, d->a);\r
H5Dclose(hd); H5Sclose(hs); H5Fclose(hf);\r
}\r
if(res<=0) return mgl_data_read_hdf4(d,fname,data);\r
hf = H5Fopen(fname, H5F_ACC_RDONLY, H5P_DEFAULT);\r
if(hf<0) return 0;\r
- hd = H5Dopen(hf,data);\r
+ hd = H5Dopen(hf,data, H5P_DEFAULT);\r
if(hd<0) { H5Fclose(hf); return 0; }\r
hs = H5Dget_space(hd);\r
if(hs<0) { H5Dclose(hd); H5Fclose(hf); return 0; }\r
hid_t hf,hg,hd,ht;\r
hf = H5Fopen(fname, H5F_ACC_RDONLY, H5P_DEFAULT); names.clear();\r
if(!hf) return 0;\r
- hg = H5Gopen(hf,"/");\r
+ hg = H5Gopen(hf,"/", H5P_DEFAULT);\r
hsize_t num;\r
char name[256];\r
H5Gget_num_objs(hg, &num); // replace by H5G_info_t t; H5Gget_info(hg,&t); num=t.nlinks;\r
{\r
if(H5Gget_objtype_by_idx(hg, i)!=H5G_DATASET) continue;\r
H5Gget_objname_by_idx(hg, i, name, 256); // replace by H5Lget_name_by_idx(hg,".",i,0,0,name,256,0) ?!\r
- hd = H5Dopen(hf,name);\r
+ hd = H5Dopen(hf,name, H5P_DEFAULT);\r
ht = H5Dget_type(hd);\r
if(H5Tget_class(ht)==H5T_FLOAT || H5Tget_class(ht)==H5T_INTEGER) names.push_back(name);\r
H5Dclose(hd); H5Tclose(ht);\r
dual mglFormulaC::Calc(dual x,dual y,dual t,dual u) const\r
{\r
Error=0;\r
- dual a1[MGL_VS]; memset(a1,0,MGL_VS*sizeof(dual));\r
+ dual a1[MGL_VS]; memset((void*)a1,0,MGL_VS*sizeof(dual));\r
a1['a'-'a'] = a1['u'-'a'] = u;\r
a1['x'-'a'] = a1['r'-'a'] = x;\r
a1['y'-'a'] = a1['n'-'a'] = a1['v'-'a'] = y;\r
dual mglFormulaC::Calc(dual x,dual y,dual t,dual u,dual v,dual w) const\r
{\r
Error=0;\r
- dual a1[MGL_VS]; memset(a1,0,MGL_VS*sizeof(dual));\r
+ dual a1[MGL_VS]; memset((void*)a1,0,MGL_VS*sizeof(dual));\r
a1['c'-'a'] = a1['w'-'a'] = w;\r
a1['b'-'a'] = a1['v'-'a'] = v;\r
a1['a'-'a'] = a1['u'-'a'] = u;\r
else if(!strcmp(k,"ss")) gr->LoadBackground(a[0].s.s,a[1].s.s);
else if(!strcmp(k,"ssn")) gr->LoadBackground(a[0].s.s,a[1].s.s,a[2].v);
else if(!strcmp(k,"nnn")) gr->FillBackground(mglColor(a[0].v,a[1].v,a[2].v));
+ else if(!strcmp(k,"nnnn")) gr->FillBackground(mglColor(a[0].v,a[1].v,a[2].v,a[3].v));
else res = 1;
return res;
}
//-----------------------------------------------------------------------------
int static mgls_colorbar(mglGraph *gr, long , mglArg *a, const char *k, const char *opt)
{
- int res=0; gr->Self()->SaveState(opt);
- if(k[0]==0) gr->Colorbar("");
- else if(!strcmp(k,"s")) gr->Colorbar(a[0].s.s);
- else if(!strcmp(k,"d")) gr->Colorbar(*(a[0].d));
- else if(!strcmp(k,"ds")) gr->Colorbar(*(a[0].d), a[1].s.s);
- else if(!strcmp(k,"snn")) gr->Colorbar(a[0].s.s, a[1].v, a[2].v,1,1);
- else if(!strcmp(k,"snnn")) gr->Colorbar(a[0].s.s, a[1].v, a[2].v, a[3].v,1);
- else if(!strcmp(k,"snnnn")) gr->Colorbar(a[0].s.s, a[1].v, a[2].v, a[3].v,a[4].v);
- else if(!strcmp(k,"dsnn")) gr->Colorbar(*(a[0].d), a[1].s.s, a[2].v, a[3].v,1,1);
- else if(!strcmp(k,"dsnnn")) gr->Colorbar(*(a[0].d), a[1].s.s, a[2].v, a[3].v, a[4].v,1);
+ int res=0; //gr->Self()->SaveState(opt);
+ if(k[0]==0) gr->Colorbar("",opt);
+ else if(!strcmp(k,"s")) gr->Colorbar(a[0].s.s,opt);
+ else if(!strcmp(k,"d")) gr->Colorbar(*(a[0].d),opt);
+ else if(!strcmp(k,"ds")) gr->Colorbar(*(a[0].d), a[1].s.s,opt);
+ else if(!strcmp(k,"snn")) gr->Colorbar(a[0].s.s, a[1].v, a[2].v,1,1,opt);
+ else if(!strcmp(k,"snnn")) gr->Colorbar(a[0].s.s, a[1].v, a[2].v, a[3].v,1,opt);
+ else if(!strcmp(k,"snnnn")) gr->Colorbar(a[0].s.s, a[1].v, a[2].v, a[3].v,a[4].v,opt);
+ else if(!strcmp(k,"dsnn")) gr->Colorbar(*(a[0].d), a[1].s.s, a[2].v, a[3].v,1,1,opt);
+ else if(!strcmp(k,"dsnnn")) gr->Colorbar(*(a[0].d), a[1].s.s, a[2].v, a[3].v, a[4].v,1,opt);
else if(!strcmp(k,"dsnnnn"))
- gr->Colorbar(*(a[0].d), a[1].s.s, a[2].v, a[3].v, a[4].v,a[5].v);
+ gr->Colorbar(*(a[0].d), a[1].s.s, a[2].v, a[3].v, a[4].v,a[5].v,opt);
else res = 1;
- gr->Self()->LoadState();
+// gr->Self()->LoadState();
return res;
}
//-----------------------------------------------------------------------------
mglCommand mgls_prm_cmd[] = {
{"arc",_("Draw angle arc"),"arc x0 y0 x1 y1 a ['fmt']|x0 y0 z0 x1 y1 a ['fmt']|x0 y0 z0 xr yr zr x1 y1 z1 a ['fmt']", mgls_arc ,13},
{"axis",_("Setup or draw axis"),"axis ['dir' 'fmt']|'fx' 'fy' 'fz' ['fc']|how", mgls_axis ,12},
- {"background",_("Load image for background"),"background 'fname' [alpha]| 'fname' 'how' [alpha]", mgls_background ,12},
+ {"background",_("Load image for background"),"background 'fname' [alpha]| 'fname' 'how' [alpha]| r g b [a]", mgls_background ,12},
{"ball",_("Draw point (ball)"),"ball posx posy ['fmt']|posx posy posz ['fmt']", mgls_ball ,13},
{"box",_("Draw bounding box"),"box ['fmt' ticks]", mgls_box ,12},
{"circle",_("Draw circle"),"circle x y r ['fmt']|x y z r ['fmt']", mgls_circle ,13},
return res;
}
//-----------------------------------------------------------------------------
+int static mgls_fastcut(mglGraph *gr, long , mglArg *a, const char *k, const char *)
+{
+ int res=0;
+ if(!strcmp(k,"n")) gr->SetFastCut(a[0].v);
+ else res = 1;
+ return res;
+}
+//-----------------------------------------------------------------------------
int static mgls_palette(mglGraph *gr, long , mglArg *a, const char *k, const char *)
{
int res=0;
int static mgls_version(mglGraph *gr, long , mglArg *a, const char *k, const char *)
{
int res=0;
- char buf[32]; sprintf(buf,"MathGL version is 2.%g",MGL_VER2);
+ char buf[32]; sprintf(buf,"MathGL version is %s",MGL_VER_STRING);
if(k[0]==0) gr->SetWarn(-1,buf);
else if(!strcmp(k,"s")) res = mgl_check_version(a[0].s.s)?1:0;
else res = 1;
{"diffuse",_("Set diffusive light brightness"),"diffuse val", mgls_diffuse ,2},
{"drawreg",_("Set draw region for quality&4"),"drawreg|nx ny m", mgls_drawreg ,2},
{"facenum",_("Set number of visible faces"),"facenum val", mgls_facenum ,2},
+ {"fastcut",_("Disable accurate primitive cutting at axis borders"),"fastcut val", mgls_fastcut ,2},
{"fog",_("Switch on/off fog"),"fog val [dz]", mgls_fog ,2},
{"font",_("Setup font"),"font 'fmt' [size]", mgls_font ,15},
{"gray",_("Switch on/off gray-scale mode"),"gray [val]", mgls_gray ,2},
//-----------------------------------------------------------------------------\r
void static mgl_operator_exp(long n, const dual *h, dual *a, dual *f)\r
{\r
- memset(f,0,2*n*sizeof(dual));\r
+ memset((void*)f,0,2*n*sizeof(dual));\r
const long i1=n/2, i2=3*n/2-1;\r
#pragma omp parallel for\r
for(long j=0;j<n;j++)\r
f[2*j+1] += a[i]*exp(g2+dual(0,i*k2));\r
}\r
}\r
- memset(a,0,2*n*sizeof(dual));\r
+ memset((void*)a,0,2*n*sizeof(dual));\r
#pragma omp parallel for\r
for(long i=0;i<2*n;i++)\r
{\r
//-----------------------------------------------------------------------------\r
void static mgl_operator_lin(long n, mreal *h, dual *a, dual *f, dual *g, dual *o, const dual *iexp)\r
{\r
- memset(f,0,2*n*sizeof(dual));\r
- memset(g,0,2*n*sizeof(dual));\r
+ memset((void*)f,0,2*n*sizeof(dual));\r
+ memset((void*)g,0,2*n*sizeof(dual));\r
const long i1=n/2, i2=3*n/2-1;\r
#pragma omp parallel for\r
for(long j=0;j<n;j++)\r
g[2*j] += a[i]*e1; g[2*j+1] += a[i]*e2;\r
}\r
}\r
- memset(o,0,2*n*sizeof(dual));\r
+ memset((void*)o,0,2*n*sizeof(dual));\r
#pragma omp parallel for\r
for(long i=0;i<2*n;i++)\r
{\r
std::vector<mglDataA*> list;\r
list.push_back(&x); list.push_back(&y); list.push_back(&p); list.push_back(&r); list.push_back(&u);\r
\r
- dual *a = new dual[2*nx]; memset(a,0,2*nx*sizeof(dual)); // Add "damping" area\r
+ dual *a = new dual[2*nx]; memset((void*)a,0,2*nx*sizeof(dual)); // Add "damping" area\r
dual *f = new dual[6*nx], *g=f+2*nx, *s=f+4*nx;\r
#pragma omp parallel for\r
for(long i=0;i<nx;i++) // Initial conditions\r
if(i>3*nx/2) dmp[i] += gamma*mgl_ipow((i-3*nx/2-1)/mreal(nx/2),2);\r
}\r
bool have_y = mglchr(func,'y');\r
- HADT ham;\r
+ HADT ham=0;\r
if(!have_y) ham = mgl_apde_calc_ham(&hIm, old, func, list, dd);\r
dual *iexp = new dual[4*nx*nx];\r
#pragma omp parallel for collapse(2)\r
ddual *hx = new ddual[2*nx], *hv = new ddual[2*ny];\r
ddual *hy = new ddual[2*ny], *hu = new ddual[2*nx];\r
double *dmp = new double[4*nx*ny];\r
- memset(a,0,4*nx*ny*sizeof(ddual));\r
+ memset((void*)a,0,4*nx*ny*sizeof(ddual));\r
memset(dmp,0,4*nx*ny*sizeof(double));\r
#pragma omp parallel for collapse(2)\r
for(long j=0;j<ny;j++) for(long i=0;i<nx;i++) // Initial conditions\r
{\r
if(gr->NeedStop()) break;\r
tmp.zz = Min.z+dz*k;\r
- memset(hxy,0,4*nx*ny*sizeof(ddual)); memset(hxv,0,4*nx*ny*sizeof(ddual));\r
- memset(huv,0,4*nx*ny*sizeof(ddual)); memset(huy,0,4*nx*ny*sizeof(ddual));\r
+ memset((void*)hxy,0,4*nx*ny*sizeof(ddual)); memset((void*)hxv,0,4*nx*ny*sizeof(ddual));\r
+ memset((void*)huv,0,4*nx*ny*sizeof(ddual)); memset((void*)huy,0,4*nx*ny*sizeof(ddual));\r
mgl_pde_hprep(&tmp);\r
for(long i=0;i<2*nx;i++) { hx[i] = hxv[i]; hu[i] = huv[i]; }\r
for(long j=0;j<2*ny;j++) { hy[j] = huy[2*nx*j]; hv[j] = huv[2*nx*j];}\r
for(long i=0;i<p->m;i++)\r
{\r
HADT d = static_cast<HADT>(p->head[i]);\r
- memcpy(d->a, x+2*i*n, 2*n*sizeof(mreal));\r
+ memcpy((void*)d->a, x+2*i*n, 2*n*sizeof(mreal));\r
}\r
p->t->a[0] = x[2*p->n];\r
//#pragma omp parallel for collapse(2)\r
#pragma omp parallel for\r
#endif\r
for(long i=id;i<n;i+=mglNumThr)\r
- { unsigned char *b=GB+4*i, c[4]={BDef[0],BDef[1],BDef[2],BDef[3]}, *g=G+3*i;\r
+// { unsigned char /* *b=GB+4*i,*/ c[4]={BDef[0],BDef[1],BDef[2],BDef[3]}, *g=G+3*i; // NOTE GB is not used here ?! TODO Check this!\r
+ { unsigned char *b=GB+4*i, c[4]={b[0],b[1],b[2],b[3]}, *g=G+3*i;\r
combine(c,G4+4*i); g[0]=c[0]; g[1]=c[1]; g[2]=c[2]; }\r
}\r
//-----------------------------------------------------------------------------\r
ClearFrame();\r
if((Flag&3)==2) Back.Set(0,0,0,0);\r
if(Back!=NC) FillBackground(Back);\r
+// else FillBackground(mglColor(1,1,1,0));\r
}\r
//-----------------------------------------------------------------------------\r
void mglCanvas::Clf(const char *col)\r
void mglCanvas::LoadBackground(const char *fname, double alpha)\r
{\r
mgl_read_image(&GB,Width,Height,fname);\r
- if(alpha<1 && alpha>0)\r
-#pragma omp parallel for\r
+ if(alpha<=1 && alpha>=0)\r
+#pragma omp parallel for //simd\r
for(long i=0;i<Width*Height;i++) GB[4*i+3] = (unsigned char)(GB[4*i+3]*alpha);\r
}\r
//-----------------------------------------------------------------------------\r
unsigned char *g=NULL;\r
mgl_read_image(&g,w,h,fname);\r
if(!g) return;\r
- if(alpha<1 && alpha>0)\r
-#pragma omp parallel for\r
+ if(alpha<=1 && alpha>=0)\r
+#pragma omp parallel for //simd\r
for(long i=0;i<w*h;i++) g[4*i+3] = (unsigned char)(g[4*i+3]*alpha);\r
int ww=Width, hh=Height, ii=0, jj=0; // canvas range\r
if(mglchr(how,'a')) { ww=inW; hh=inH; ii=inX; jj=Height-inY-inH; }\r
{\r
BDef[0] = (unsigned char)(255*cc.r); BDef[1] = (unsigned char)(255*cc.g);\r
BDef[2] = (unsigned char)(255*cc.b); BDef[3] = (unsigned char)(255*cc.a);\r
-#pragma omp parallel for\r
+#pragma omp parallel for //simd\r
for(long i=0;i<Width*Height;i++)\r
{ unsigned char *b=GB+4*i;\r
b[0]=BDef[0]; b[1]=BDef[1]; b[2]=BDef[2]; b[3]=BDef[3]; }\r
for(size_t i=1;i<np;i++)\r
{\r
long iq = kq+2*i;\r
- if(gr->SamePnt(iq,iq-2) || gr->SamePnt(iq+1,iq-1)) continue;\r
+// if(gr->SamePnt(iq,iq-2) || gr->SamePnt(iq+1,iq-1)) continue;\r
if(wire)\r
{\r
gr->line_plot(iq,iq+1); gr->line_plot(iq-1,iq+1);\r
for(size_t i=1;i<np;i++)\r
{\r
long iq = kq+2*i;\r
- if(gr->SamePnt(iq,iq-2) || gr->SamePnt(iq+1,iq-1)) continue;\r
+// if(gr->SamePnt(iq,iq-2) || gr->SamePnt(iq+1,iq-1)) continue;\r
if(wire)\r
{\r
gr->line_plot(iq,iq+1); gr->line_plot(iq-1,iq+1);\r
for(size_t i=1;i<np;i++)\r
{\r
long iq = kq+2*i;\r
- if(gr->SamePnt(iq,iq-2) || gr->SamePnt(iq+1,iq-1)) continue;\r
+// if(gr->SamePnt(iq,iq-2) || gr->SamePnt(iq+1,iq-1)) continue;\r
if(wire)\r
{\r
gr->line_plot(iq,iq+1); gr->line_plot(iq-1,iq+1);\r
for(size_t i=1;i<np;i++)\r
{\r
long iq = kq+2*i;\r
- if(gr->SamePnt(iq,iq-2) || gr->SamePnt(iq+1,iq-1)) continue;\r
+// if(gr->SamePnt(iq,iq-2) || gr->SamePnt(iq+1,iq-1)) continue;\r
if(wire)\r
{\r
gr->line_plot(iq,iq+1);\r
//-----------------------------------------------------------------------------
mreal MGL_EXPORT mgl_rnd_gaussian(mreal mu, mreal sigma)
{
- mreal x, y, r=0.0;
+ mreal x=0, y=0, r=0.0;
while (r >= 1 || r == 0)
{
x = 2.0 * mgl_rnd() - 1.0;
long MGL_EXPORT mgl_rnd_discrete(HCDT A) // this assumes A to be 1d
{
long n=A->GetNx();
- mreal amax=0.0, sum_prob=0.0;
+ mreal amax=0.0;
mreal *sum = new mreal[n];
for(long i=0; i<n; i++)
{ sum[i] = amax; amax += A->v(i); }
mreal r=amax*mgl_rnd();
-// for(i=0; i<n; i++)
-// {
-// sum_prob += A->v(i);
-// if(sum_prob > r) break;
-// }
long i1=0,i2=n-1,i=0;
while(i2>i1+1)
{
@end deftypefn
+@anchor{fastcut}
+@deftypefn {MGL command} {} fastcut @code{val}
+@ifclear UDAV
+@deftypefnx {Method on @code{mglGraph}} @code{void} SetFastCut (@code{bool} val=@code{true})
+@end ifclear
+Enable/disable accurate but slower primitive cutting at axis borders. In C/Fortran you can use @code{mgl_set_flag(gr,val, MGL_FAST_PRIM);}. It automatically set on for @ref{ternary} axis now.
+@end deftypefn
+
@c ------------------------------------------------------------------
@external{}
@node Curved coordinates, Ticks, Ranges (bounding box), Axis settings
@deftypefnx {C function} @code{void} mgl_clf_str (@code{HMGL} gr, @code{const char *} col)
@deftypefnx {C function} @code{void} mgl_clf_chr (@code{HMGL} gr, @code{char} col)
@deftypefnx {C function} @code{void} mgl_clf_rgb (@code{HMGL} gr, @code{mreal} r, @code{mreal} g, @code{mreal} b)
+@deftypefnx {C function} @code{void} mgl_clf_rgba (@code{HMGL} gr, @code{mreal} r, @code{mreal} g, @code{mreal} b, @code{mreal} a)
@end ifclear
Clear the picture and fill background by specified color.
@end deftypefn
@deftypefn {MGL command} {} background @code{r g b}
@ifclear UDAV
@deftypefnx {Method on @code{mglGraph}} @code{void} FillBackground (@code{const mglColor &}rgb)
-@deftypefnx {C function} @code{void} mgl_fill_background (@code{HMGL} gr, @code{double} r, @code{double} g, @code{double} b)
+@deftypefnx {C function} @code{void} mgl_fill_background (@code{HMGL} gr, @code{double} r, @code{double} g, @code{double} b, @code{double} a)
@end ifclear
Fill background by the specified color. Values should be in range [0,1].
@end deftypefn
@anchor{colorbar}
@deftypefn {MGL command} {} colorbar ['sch'='']
@ifclear UDAV
-@deftypefnx {Method on @code{mglGraph}} @code{void} Colorbar (@code{const char *}sch=@code{""})
-@deftypefnx {C function} @code{void} mgl_colorbar (@code{HMGL} gr, @code{const char *}sch)
+@deftypefnx {Method on @code{mglGraph}} @code{void} Colorbar (@code{const char *}sch=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {C function} @code{void} mgl_colorbar (@code{HMGL} gr, @code{const char *}sch, @code{const char *}opt)
@end ifclear
Draws colorbar. Parameter @var{sch} may contain:
@itemize @bullet
@deftypefn {MGL command} {} colorbar vdat ['sch'='']
@ifclear UDAV
-@deftypefnx {Method on @code{mglGraph}} @code{void} Colorbar (@code{const mglDataA &}v, @code{const char *}sch=@code{""})
-@deftypefnx {C function} @code{void} mgl_colorbar_val (@code{HMGL} gr, @code{HCDT} v, @code{const char *}sch)
+@deftypefnx {Method on @code{mglGraph}} @code{void} Colorbar (@code{const mglDataA &}v, @code{const char *}sch=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {C function} @code{void} mgl_colorbar_val (@code{HMGL} gr, @code{HCDT} v, @code{const char *}sch, @code{const char *}opt)
@end ifclear
The same as previous but with sharp colors @var{sch} (current palette if @code{sch=""}) for values @var{v}. @sref{contd sample}
@end deftypefn
@deftypefn {MGL command} {} colorbar 'sch' @code{x y [w=1 h=1]}
@ifclear UDAV
-@deftypefnx {Method on @code{mglGraph}} @code{void} Colorbar (@code{const char *}sch, @code{mreal} x, @code{mreal} y, @code{mreal} w=@code{1}, @code{mreal} h=@code{1})
-@deftypefnx {C function} @code{void} mgl_colorbar_ext (@code{HMGL} gr, @code{const char *}sch, @code{mreal} x, @code{mreal} y, @code{mreal} w, @code{mreal} h)
+@deftypefnx {Method on @code{mglGraph}} @code{void} Colorbar (@code{const char *}sch, @code{mreal} x, @code{mreal} y, @code{mreal} w=@code{1}, @code{mreal} h=@code{1}, @code{const char *}opt=@code{""})
+@deftypefnx {C function} @code{void} mgl_colorbar_ext (@code{HMGL} gr, @code{const char *}sch, @code{mreal} x, @code{mreal} y, @code{mreal} w, @code{mreal} h, @code{const char *}opt)
@end ifclear
The same as first one but at arbitrary position of subplot @{@var{x}, @var{y}@} (supposed to be in range [0,1]). Parameters @var{w}, @var{h} set the relative width and height of the colorbar.
@end deftypefn
@deftypefn {MGL command} {} colorbar vdat 'sch' @code{x y [w=1 h=1]}
@ifclear UDAV
-@deftypefnx {Method on @code{mglGraph}} @code{void} Colorbar (@code{const mglDataA &}v, @code{const char *}sch, @code{mreal} x, @code{mreal} y, @code{mreal} w=@code{1}, @code{mreal} h=@code{1})
-@deftypefnx {C function} @code{void} mgl_colorbar_val_ext (@code{HMGL} gr, @code{HCDT} v, @code{const char *}sch, @code{mreal} x, @code{mreal} y, @code{mreal} w, @code{mreal} h)
+@deftypefnx {Method on @code{mglGraph}} @code{void} Colorbar (@code{const mglDataA &}v, @code{const char *}sch, @code{mreal} x, @code{mreal} y, @code{mreal} w=@code{1}, @code{mreal} h=@code{1}, @code{const char *}opt=@code{""})
+@deftypefnx {C function} @code{void} mgl_colorbar_val_ext (@code{HMGL} gr, @code{HCDT} v, @code{const char *}sch, @code{mreal} x, @code{mreal} y, @code{mreal} w, @code{mreal} h, @code{const char *}opt)
@end ifclear
The same as previous but with sharp colors @var{sch} (current palette if @code{sch=""}) for values @var{v}. @sref{contd sample}
@end deftypefn
Дополнительно расширяет диапазон осей координат, задаваемый функциями @code{SetRange} или @code{SetRanges}, в соответствии с формулами @math{min += (max-min)*p1} и @math{max += (max-min)*p1} (или @math{min *= (max/min)^p1} и @math{max *= (max/min)^p1} для "логарифмических" диапазонов, когда @math{inf>max/min>100} или @math{0<max/min<0.01}). Начальные значения [0, 1]. Внимание! эти настройки не могут быть переписаны никакими другими функциями, включая @code{DefaultPlotParam()}.
@end deftypefn
+@anchor{fastcut}
+@deftypefn {Команда MGL} {} fastcut @code{val}
+@ifclear UDAV
+@deftypefnx {Метод класса @code{mglGraph}} @code{void} SetFastCut (@code{bool} val=@code{true})
+@end ifclear
+Разрешает/запрещает аккуратное и более медленное обрезание примитивов на границах осей координат. В C/Fortran следует использовать @code{mgl_set_flag(gr,val, MGL_FAST_PRIM);}. Включено автоматически для @ref{ternary} системы координат.
+@end deftypefn
+
@c ------------------------------------------------------------------
@external{}
@deftypefnx {Функция С} @code{void} mgl_clf_str (@code{HMGL} gr, @code{const char *} col)
@deftypefnx {Функция С} @code{void} mgl_clf_chr (@code{HMGL} gr, @code{char} col)
@deftypefnx {Функция С} @code{void} mgl_clf_rgb (@code{HMGL} gr, @code{mreal} r, @code{mreal} g, @code{mreal} b)
+@deftypefnx {Функция С} @code{void} mgl_clf_rgba (@code{HMGL} gr, @code{mreal} r, @code{mreal} g, @code{mreal} b, @code{mreal} a)
@end ifclear
Очищает рисунок и заполняет фон заданным цветом.
@end deftypefn
@deftypefn {Команда MGL} {} background [@code{r g b}]
@ifclear UDAV
@deftypefnx {Метод класса @code{mglGraph}} @code{void} FillBackground (@code{const mglColor &}rgb)
-@deftypefnx {Функция С} @code{void} mgl_fill_background (@code{HMGL} gr, @code{double} r, @code{double} g, @code{double} b)
+@deftypefnx {Функция С} @code{void} mgl_fill_background (@code{HMGL} gr, @code{double} r, @code{double} g, @code{double} b, @code{double} a)
@end ifclear
Заполняет фон указанным цветом. Значения должны быть в диапазоне от 0 до 1.
@end deftypefn
@anchor{colorbar}
@deftypefn {Команда MGL} {} colorbar ['sch'='']
@ifclear UDAV
-@deftypefnx {Метод класса @code{mglGraph}} @code{void} Colorbar (@code{const char *}sch=@code{""})
-@deftypefnx {Функция С} @code{void} mgl_colorbar (@code{HMGL} gr, @code{const char *}sch)
+@deftypefnx {Метод класса @code{mglGraph}} @code{void} Colorbar (@code{const char *}sch=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {Функция С} @code{void} mgl_colorbar (@code{HMGL} gr, @code{const char *}sch, @code{const char *}opt)
@end ifclear
Рисует полосу соответствия цвета и числовых значений (colorbar) для цветовой схемы @var{sch} (используется текущая для @code{sch=""}) с краю от графика. Строка @var{sch} также может содержать:
@itemize
@deftypefn {Команда MGL} {} colorbar vdat ['sch'='']
@ifclear UDAV
-@deftypefnx {Метод класса @code{mglGraph}} @code{void} Colorbar (@code{const mglDataA &}v, @code{const char *}sch=@code{""})
-@deftypefnx {Функция С} @code{void} mgl_colorbar_val (@code{HMGL} gr, @code{HCDT} v, @code{const char *}sch)
+@deftypefnx {Метод класса @code{mglGraph}} @code{void} Colorbar (@code{const mglDataA &}v, @code{const char *}sch=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {Функция С} @code{void} mgl_colorbar_val (@code{HMGL} gr, @code{HCDT} v, @code{const char *}sch, @code{const char *}opt)
@end ifclear
Аналогично предыдущему, но для цветовой схемы без сглаживания с заданными значениями @var{v}. @sref{contd sample}
@end deftypefn
@deftypefn {Команда MGL} {} colorbar 'sch' @code{x y [w=1 h=1]}
@ifclear UDAV
-@deftypefnx {Метод класса @code{mglGraph}} @code{void} Colorbar (@code{const char *}sch, @code{mreal} x, @code{mreal} y, @code{mreal} w=@code{1}, @code{mreal} h=@code{1})
-@deftypefnx {Функция С} @code{void} mgl_colorbar_ext (@code{HMGL} gr, @code{const char *}sch, @code{mreal} x, @code{mreal} y, @code{mreal} w, @code{mreal} h)
+@deftypefnx {Метод класса @code{mglGraph}} @code{void} Colorbar (@code{const char *}sch, @code{mreal} x, @code{mreal} y, @code{mreal} w=@code{1}, @code{mreal} h=@code{1}, @code{const char *}opt=@code{""})
+@deftypefnx {Функция С} @code{void} mgl_colorbar_ext (@code{HMGL} gr, @code{const char *}sch, @code{mreal} x, @code{mreal} y, @code{mreal} w, @code{mreal} h, @code{const char *}opt)
@end ifclear
Аналогично первому, но в произвольном месте графика @{@var{x}, @var{y}@} (полагаются в диапазоне [0,1]). Параметры @var{w}, @var{h} задают относительную ширину и высоту colorbar.
@end deftypefn
@deftypefn {Команда MGL} {} colorbar vdat 'sch' @code{x y [w=1 h=1]}
@ifclear UDAV
-@deftypefnx {Метод класса @code{mglGraph}} @code{void} Colorbar (@code{const mglDataA &}v, @code{const char *}sch, @code{mreal} x, @code{mreal} y, @code{mreal} w=@code{1}, @code{mreal} h=@code{1})
-@deftypefnx {Функция С} @code{void} mgl_colorbar_val_ext (@code{HMGL} gr, @code{HCDT} v, @code{const char *}sch, @code{mreal} x, @code{mreal} y, @code{mreal} w, @code{mreal} h)
+@deftypefnx {Метод класса @code{mglGraph}} @code{void} Colorbar (@code{const mglDataA &}v, @code{const char *}sch, @code{mreal} x, @code{mreal} y, @code{mreal} w=@code{1}, @code{mreal} h=@code{1}, @code{const char *}opt=@code{""})
+@deftypefnx {Функция С} @code{void} mgl_colorbar_val_ext (@code{HMGL} gr, @code{HCDT} v, @code{const char *}sch, @code{mreal} x, @code{mreal} y, @code{mreal} w, @code{mreal} h, @code{const char *}opt)
@end ifclear
Аналогично предыдущему, но для цветовой схемы @var{sch} без сглаживания с заданными значениями @var{v}. @sref{contd sample}
@end deftypefn
@strong{Latest news}
@itemize
+@item @strong{1 January 2022.}
+New version (v.8.0) of @uref{http://sourceforge.net/projects/mathgl, MathGL} is released. There are change version numbering according Debian rules, and add accurate line segment and quadrangle/triangle face cutting at axis border crossing.
+
@item @strong{8 December 2021.}
New version (v.2.5) of @uref{http://sourceforge.net/projects/mathgl, MathGL} is released. There are big improve in formula evaluation (user-defined function, summation and product, new functions for data interpolation), new plot kind @ref{dcont} and @ref{lines}, set of functions for random distributions, new data handling functions (like, @ref{keep}), extend @ref{ode} to solve PDE/cascade/etc, add mask for most of plotting functions and bugfixes, which denoted @ref{News, here}.
@itemize
+@item @strong{1 January 2022}
+New version (v.8.0) of @uref{http://sourceforge.net/projects/mathgl, MathGL} is released.
+@itemize @bullet
+
+@item Change version numbering according Debian rules.
+@item Add accurate line segment and quadrangle/triangle face cutting at axis border crossing.
+@item Add @ref{fastcut} for disable accurate but slow line/trig/quad primitives cutting at axis borders.
+@item Restore back transparent background by default. You can set non-transparent background by using @ref{clf} or @ref{background} functions.
+@item Compatibility changes for Qt5.15 and MSVC.
+
+@strong{INCOMPATIBLE:}
+@item Change @ref{colorbar} C-functions by adding last argument for options.
+@item Add alpha-value in @ref{background}.
+@item Disable Qt4 interface by default.
+
+@end itemize
+
+
@item @strong{8 December 2021}
New version (v.2.5) of @uref{http://sourceforge.net/projects/mathgl, MathGL} is released.
@itemize @bullet
@strong{Latest news}
@itemize
+@item @strong{1 January 2022.}
+New version (v.8.0) of @uref{http://sourceforge.net/projects/mathgl, MathGL} is released. There are change version numbering according Debian rules, and add accurate line segment and quadrangle/triangle face cutting at axis border crossing.
+
@item @strong{8 December 2021.}
New version (v.2.5) of @uref{http://sourceforge.net/projects/mathgl, MathGL} is released. There are big improve in formula evaluation (user-defined function, summation and product, new functions for data interpolation), new plot kind @ref{dcont} and @ref{lines}, set of functions for random distributions, new data handling functions (like, @ref{keep}), extend @ref{ode} to solve PDE/cascade/etc, add mask for most of plotting functions and bugfixes, which denoted @ref{News, here}.
@itemize
+@item @strong{1 January 2022}
+New version (v.8.0) of @uref{http://sourceforge.net/projects/mathgl, MathGL} is released.
+@itemize @bullet
+
+@item Change version numbering according Debian rules.
+@item Add accurate line segment and quadrangle/triangle face cutting at axis border crossing.
+@item Add @ref{fastcut} for disable accurate but slow line/trig/quad primitives cutting at axis borders.
+@item Restore back transparent background by default. You can set non-transparent background by using @ref{clf} or @ref{background} functions.
+@item Compatibility changes for Qt5.15 and MSVC.
+
+@strong{INCOMPATIBLE:}
+@item Change @ref{colorbar} C-functions by adding last argument for options.
+@item Add alpha-value in @ref{background}.
+@item Disable Qt4 interface by default.
+
+@end itemize
+
@item @strong{8 December 2021}
New version (v.2.5) of @uref{http://sourceforge.net/projects/mathgl, MathGL} is released.
@itemize @bullet
6. Recurrence plot u_{ij} = |a_i-a_j|<epsilon && Cross-reccurence plot u_{ij} = |a_i-b_j|<epsilon. See http://www.recurrence-plot.tk/crps.php
7. Calendar diagram -- 1D data as dens for 7-row (day) or 12-row (months) + divisions at month or year
+10. Add simd instructions for openmp
11. Use FreeType for getting font/glyph information. This need quick drawing of quadratic and cubic Bezier curves (see example5.cpp). https://www.freetype.org/freetype2/docs/tutorial/step3.html -- add optimization of bezier curves by number of points. Use it as glyph definition or as default source for all/unknown glyphs!?
12. Triangulation in 3d + rewrite crust (test 2d version too). See https://en.wikipedia.org/wiki/Bowyer%E2%80%93Watson_algorithm
13. Algorithm of combining primitives with the same color to the larger one.
-14. Add interpolated point(s) at boundary of invisible/cutted region at drawing of lines and triangles
-
-15. Use new interface for HDF5 (assume v.1.8 was too many years ago :( )
16. Add mgl_set_font_hscale() to MGL
-17. Add Rotate() around a point (not {0,0,0} by default).
22. Add "map res 'eqs' 'vars' ini ['how' A B C [D E]]" -- like "ode" but just simple mapping + progonka.
-28. Try to add ld options: "-init mgl_init -fini mgl_fini" for MSVC ???
-
ZZ. Update *.i for new functions {before release!!!}
HelpPanel(QWidget *parent = 0);
public slots:
// void showExamples();
- void showHelp(const QString &cmd=QString::null);
+ void showHelp(const QString &cmd=QString());
void zoomIn();
void zoomOut();
private:
#include <QMenu>
#include <QPrinter>
#include <QTimer>
+#include <QElapsedTimer>
#include <QScrollArea>
#include <QPainter>
#include <QPrintDialog>
raisePanel(this);
objId = subId = -1;
emit clearWarn();
- QTime t; t.start();
+ QElapsedTimer t; t.start();
mgl_set_facenum(mgl->getGraph(),0);
draw->text=textMGL->toPlainText();
draw->line=curPos;
parser.AddParam(0,str);
delete []str;
- QTime t; t.start();
+ QElapsedTimer t; t.start();
parser.RestoreOnce();
draw->text=textMGL->toPlainText();
draw->line=curPos; mgl->update();
edit->setLineWrapMode(QTextEdit::NoWrap);
setCompleter(mglCompleter);
QFontMetrics metrics(edit->currentFont());
- edit->setTabStopWidth(4 * metrics.width(' '));
+ edit->setTabStopDistance(4 * metrics.horizontalAdvance(' '));
menu = new QMenu(_("Edit"),this);
QBoxLayout *v = new QVBoxLayout(this);
QFont d(defFontFamily, defFontSize);
edit->setFont(f ? *f : d);
QFontMetrics metrics(f ? *f : d);
- edit->setTabStopWidth(4 * metrics.width(' '));
+ edit->setTabStopDistance(4*metrics.horizontalAdvance(' '));
}
//-----------------------------------------------------------------------------
QString TextPanel::selection()
}
//-----------------------------------------------------------------------------
#if MGL_HAVE_HDF5
-#define H5_USE_16_API
+// #define H5_USE_16_API
#include <hdf5.h>
void TextPanel::loadHDF5(const QString &fileName)
{
long rank;
hf = H5Fopen(fileName.toLocal8Bit().constData(), H5F_ACC_RDONLY, H5P_DEFAULT);
if(!hf) return;
- hg = H5Gopen(hf, "/");
+ hg = H5Gopen(hf, "/", H5P_DEFAULT);
hsize_t num, nx, ny, nz, i;
char name[256];
H5Gget_num_objs(hg, &num);
{
if(H5Gget_objtype_by_idx(hg, i)!=H5G_DATASET) continue;
H5Gget_objname_by_idx(hg, i, name, 256);
- hd = H5Dopen(hg,name); hs = H5Dget_space(hd);
+ hd = H5Dopen(hg,name, H5P_DEFAULT); hs = H5Dget_space(hd);
ht = H5Dget_type(hd);
rank = H5Sget_simple_extent_ndims(hs);
if(H5Tget_class(ht)==H5T_STRING) // load script
hsize_t dims[3];
long rank = 3;
- H5Eset_auto(0,0);
+ H5Eset_auto(0,0,0);
hf = H5Fcreate(fileName.toLocal8Bit().constData(), H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
if(hf<0)
{
memcpy(buf, txt.toLocal8Bit().constData(), dims[0]);
buf[dims[0]]=0;
hs = H5Screate_simple(1, dims, 0);
- hd = H5Dcreate(hf, "mgl_script", H5T_C_S1, hs, H5P_DEFAULT);
+ hd = H5Dcreate(hf, "mgl_script", H5T_C_S1, hs, H5P_DEFAULT,H5P_DEFAULT,H5P_DEFAULT);
H5Dwrite(hd, H5T_C_S1, hs, hs, H5P_DEFAULT, buf);
H5Dclose(hd); H5Sclose(hs);
delete []buf;
else
{ rank = 3; dims[0] = v->nz; dims[1] = v->ny; dims[2] = v->nx; }
hs = H5Screate_simple(rank, dims, 0);
- hd = H5Dcreate(hf, name, H5T_IEEE_F32LE, hs, H5P_DEFAULT);
+ hd = H5Dcreate(hf, name, H5T_IEEE_F32LE, hs, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
H5Dwrite(hd, H5T_NATIVE_FLOAT, hs, hs, H5P_DEFAULT, v->a);
H5Dclose(hd); H5Sclose(hs);
int digits = 1;
int max = qMax(1, document()->blockCount());
while (max >= 10) { max /= 10; ++digits; }
- int space = 13 + fontMetrics().width(QLatin1Char('9')) * (digits);
+ int space = 13 + fontMetrics().horizontalAdvance(QLatin1Char('9'))*digits;
return space;
}
//-----------------------------------------------------------------------------
settings.endGroup();
mgl_suppress_warn(true);
- QCoreApplication::setAttribute(Qt::AA_X11InitThreads);
+// QCoreApplication::setAttribute(Qt::AA_X11InitThreads);
#ifdef WIN32
QCoreApplication::addLibraryPath("c:/plugins/");
QCoreApplication::addLibraryPath(QFileInfo(QString::fromLocal8Bit(argv[0])).absolutePath().append("/plugins/"));
//-----------------------------------------------------------------------------
void MainWindow::about()
{
- QString s = "<a href='http://mathgl.sourceforge.net/doc_en/UDAV-overview.html'>UDAV</a> v. 2."+QString::number(MGL_VER2)+
+ QString s = "<a href='http://mathgl.sourceforge.net/doc_en/UDAV-overview.html'>UDAV</a> v. "+QString(MGL_VER_STRING)+
_("<br>(c) Alexey Balakin, 2007-present<br><br><a href='http://www.gnu.org/copyleft/gpl.html'>License is GPL v.2 or later.</a>");
QMessageBox::about(this, _("UDAV - about"), s);
}
Windows, Graphics,\n\
{$ENDIF}\n\
Math;\n\n\
-const MGL_VER2 = 2.2;\n\
//* This define enables double precision in MathGL */\n\
MGL_USE_DOUBLE = 1;\n\n\
const\n\
{
do
{
- fgets(buf, 1024, fp);
+ if(!fgets(buf, 1024, fp)) break;
}
while ( !strstr(buf, "*/") );
continue;
}\r
else if(ch=='h' || (ch==-1 && optind>=argc))\r
{\r
- printf(_("mglconv convert mgl script to image file (default PNG).\nCurrent version is 2.%g\n"),MGL_VER2);\r
+ printf(_("mglconv convert mgl script to image file (default PNG).\nCurrent version is %s\n"),MGL_VER_STRING);\r
printf(_("Usage:\tmglconv [parameter(s)] scriptfile\n"));\r
printf(\r
_("\t-1 str set str as argument $1 for script\n"\r
{ setlocale(LC_ALL, optarg); setlocale(LC_NUMERIC, "C"); }
else if(ch=='h' || (ch==-1 && optind>=argc))
{
- printf(_("mglview show plot from MGL script or MGLD file.\nCurrent version is 2.%g\n"),MGL_VER2);
+ printf(_("mglview show plot from MGL script or MGLD file.\nCurrent version is %s\n"),MGL_VER_STRING);
printf(_("Usage:\tmglview [parameter(s)] scriptfile\n"));
printf(
_("\t-1 str set str as argument $1 for script\n"
<div class="boxa"><a href="json/json.html"><img src="udav_new.png" width="100" alt="JavaScript for displaing MathGL plots" style="border: 0" /><br>MathGL + JavaScript</a></div>
<div class="boxa"><a href="games/mk61.html"><img src="mk61.png" width="100" alt="MK-61 emulator" style="border: 0" /><br>MK-61 emulator</a></div>
</p>
-<p><strong>14 March 2018.</strong>
-New version (v.2.4.3) of <a href="http://sourceforge.net/projects/mathgl">MathGL</a> is released. There are new <a href="Axis-and-Colorbar.html#clabel">clabel</a> command for drawing colorbar labels, EPS output now may have <a href="Masks.html#mask">mask</a>, compatibility changes for complex numbers, and many other improvements.</p>
+<p><strong>8 December 2021.</strong>
+New version (v.2.5) of <a href="http://sourceforge.net/projects/mathgl">MathGL</a> is released. There are big improve in formula evaluation (user-defined function, summation and product, new functions for data interpolation), new plot kind <a href="doc_en/3D-plotting.html#dcont">dcont</a> and <a href="doc_en/Vector-fields.html#lines">lines</a>, set of functions for random distributions, new data handling functions (like, <a href="doc_en/Data-changing.html#keep">keep</a>), extend <a href="doc_en/Global-functions.html#ode">ode</a> to solve PDE/cascade/etc, add mask for most of plotting functions and bugfixes, which denoted <a href="doc_en/News.html">here</a>.</p>
<h2>Games</h2>
<p>
include(GenerateExportHeader)
if(MSVC)
- add_definitions(-DMGL_LIB_MSVC)
+ add_definitions(-DMGL_LIB_MSVC -DMGL_WIDGETS_DLL)
endif(MSVC)
if(MGL_HAVE_FLTK)
target_link_libraries(mgl-wx-static mgl-static ${wxWidgets_LIBRARIES})
endif(MGL_HAVE_WX)
-add_subdirectory( qt4 )
+#add_subdirectory( qt4 )
add_subdirectory( qt5 )
mgl_po_src(fltk.cpp ../include/mgl2/fltk.h ../include/mgl2/Fl_MathGL.h glut.cpp ../include/mgl2/glut.h wx.cpp ../include/mgl2/wx.h qt.cpp ../include/mgl2/qt.h ../include/mgl2/qmathgl.h)
if(gg) emit perChanged(int(per));
refresh();
}
- if(ev->buttons()&Qt::MidButton) // shift
+ if(ev->buttons()&Qt::MiddleButton) // shift
{
mreal ff = 1./sqrt(mreal(width()*height()));
mreal dx = (x0-xe)*ff*(x2-x1), dy = (y0-ye)*ff*(y2-y1);
refresh();
}
else if(zoom) refresh();
- else if(ev->buttons()&Qt::MidButton) // shift axis
+ else if(ev->buttons()&Qt::MiddleButton) // shift axis
{
mreal ff = 1./sqrt(mreal(width()*height()));
mreal dx = (x0-xe)*ff*(ax2-ax1), dy = (y0-ye)*ff*(ay2-ay1);
if(!enableWheel) { ev->ignore(); return; }
if(rotate) // zoom
{
- mreal d,c,f=exp(0.001*ev->delta())/2;
+ mreal d,c,f=exp(0.001*ev->angleDelta().y())/2;
d = (y2-y1)*f; c = (y2+y1)/2; y1 = c-d; y2 = c+d;
d = (x2-x1)*f; c = (x2+x1)/2; x1 = c-d; x2 = c+d;
refresh(); ev->accept();
}
else // zoom axis
{
- mreal d,c,f=exp(0.001*ev->delta())/2;
+ mreal d,c,f=exp(0.001*ev->angleDelta().y())/2;
d = (ay2-ay1)*f; c = (ay2+ay1)/2; ay1 = c-d; ay2 = c+d;
d = (ax2-ax1)*f; c = (ax2+ax1)/2; ax1 = c-d; ax2 = c+d;
mgl_zoom_axis(gr,ax1,ay1,0,0,ax2,ay2,0,0);
//-----------------------------------------------------------------------------
void QMathGL::about()
{
- QString s = _("MathGL v. 2.") + QString::number(MGL_VER2) + _("\n(c) Alexey Balakin, 2007\nhttp://mathgl.sourceforge.net/");
+ QString s = _("MathGL v. 2.") + QString(MGL_VER_STRING) + _("\n(c) Alexey Balakin, 2007\nhttp://mathgl.sourceforge.net/");
QMessageBox::about(this, _("MathGL - about"), s);
}
//-----------------------------------------------------------------------------
void QMathGL::print()
{
QPrinter *printer = new QPrinter;
- printer->setOrientation(getRatio()>1 ? QPrinter::Landscape : QPrinter::Portrait);
+ printer->setPageOrientation(getRatio()>1 ? QPageLayout::Landscape : QPageLayout::Portrait);
QPrintDialog printDlg(printer, this);
if (printDlg.exec() == QDialog::Accepted)
{
if(!qApp)
{
- QCoreApplication::setAttribute(Qt::AA_X11InitThreads);
+// QCoreApplication::setAttribute(Qt::AA_X11InitThreads);
if(!argv) { argc_ = 0; argv_=&parg; }
else { argc_ = argc; argv_=argv; }
QApplication *a = new QApplication(argc_, argv_);
//-----------------------------------------------------------------------------\r
void wxMathGL::About()\r
{\r
- wxString s = wxT("MathGL v. 2.") + wxString::Format(wxT("%g"),MGL_VER2) +\r
+ wxString s = wxT("MathGL v. ") + wxString::Format(wxT("%s"),MGL_VER_STRING) +\r
wxT("\n(c) Alexey Balakin, 2007\nhttp://mathgl.sourceforge.net/");\r
wxMessageBox(s, wxT("MathGL - about"), wxOK|wxICON_INFORMATION, this);\r
}\r