Dmitrij S. Kryzhevich 0463772
Index: src/pixel.cpp
Dmitrij S. Kryzhevich 0463772
===================================================================
Dmitrij S. Kryzhevich 0463772
--- src/pixel.cpp	(revision 908)
Dmitrij S. Kryzhevich 0463772
+++ src/pixel.cpp	(revision 910)
Dmitrij S. Kryzhevich 0463772
@@ -171,6 +171,7 @@
Dmitrij S. Kryzhevich 0463772
 //-----------------------------------------------------------------------------
Dmitrij S. Kryzhevich 0463772
 mglPoint mglCanvas::CalcXYZ(int xs, int ys, bool real) const
Dmitrij S. Kryzhevich 0463772
 {
Dmitrij S. Kryzhevich 0463772
+	if(xs<0 || ys<0 || xs>=Width || ys>=Height)	return mglPoint(NAN,NAN,NAN);
Dmitrij S. Kryzhevich 0463772
 	mglPoint p, ps(xs,Height-ys,NAN);
Dmitrij S. Kryzhevich 0463772
 	float zz = Z[3*(xs+Width*(Height-1-ys))];
Dmitrij S. Kryzhevich 0463772
 	if(zz>-1e20f)	{	ps.z = zz;	real=false;	}
Dmitrij S. Kryzhevich 0463772
Index: src/base.cpp
Dmitrij S. Kryzhevich 0463772
===================================================================
Dmitrij S. Kryzhevich 0463772
--- src/base.cpp	(revision 908)
Dmitrij S. Kryzhevich 0463772
+++ src/base.cpp	(revision 910)
Dmitrij S. Kryzhevich 0463772
@@ -236,7 +236,7 @@
Dmitrij S. Kryzhevich 0463772
 	// scl&4 -- ???
Dmitrij S. Kryzhevich 0463772
 	// scl&8 -- bypass palette for enabling alpha
Dmitrij S. Kryzhevich 0463772
 	if(mgl_isnan(c) || mgl_isnan(a))	return -1;
Dmitrij S. Kryzhevich 0463772
-	bool norefr = mgl_isnan(n.x) && mgl_isnan(n.y);
Dmitrij S. Kryzhevich 0463772
+	bool norefr = mgl_isnan(n.x) && mgl_isnan(n.y) && !mgl_isnan(n.z);
Dmitrij S. Kryzhevich 0463772
 	if(scl>0)	ScalePoint(mat,p,n,!(scl&2));
Dmitrij S. Kryzhevich 0463772
 	if(mgl_isnan(p.x))	return -1;
Dmitrij S. Kryzhevich 0463772
 	a = (a>=0 && a<=1) ? a : AlphaDef;
Dmitrij S. Kryzhevich 0463772
Index: src/canvas.cpp
Dmitrij S. Kryzhevich 0463772
===================================================================
Dmitrij S. Kryzhevich 0463772
--- src/canvas.cpp	(revision 908)
Dmitrij S. Kryzhevich 0463772
+++ src/canvas.cpp	(revision 910)
Dmitrij S. Kryzhevich 0463772
@@ -786,7 +786,7 @@
Dmitrij S. Kryzhevich 0463772
 	x += B.x-iw/2+dx;	y += B.y-ih/2+dy;
Dmitrij S. Kryzhevich 0463772
 	// draw it
Dmitrij S. Kryzhevich 0463772
 	long k1=0,k2=0,k3=0,k4=0;
Dmitrij S. Kryzhevich 0463772
-	mglPoint p,q=mglPoint(NAN);
Dmitrij S. Kryzhevich 0463772
+	mglPoint p,q=mglPoint(NAN,NAN,NAN);
Dmitrij S. Kryzhevich 0463772
 
Dmitrij S. Kryzhevich 0463772
 	for(i=0;ff[i] && ff[i]!=':';i++)	if(strchr(MGL_COLORS,ff[i]))
Dmitrij S. Kryzhevich 0463772
 	{
Dmitrij S. Kryzhevich 0463772
@@ -937,7 +937,7 @@
Dmitrij S. Kryzhevich 0463772
 	char col = mglGetStyle(stl,0,&align);	align = align&3;
Dmitrij S. Kryzhevich 0463772
 	if(col==0)	col = 'k';
Dmitrij S. Kryzhevich 0463772
 	mreal y=inY+inH-h;
Dmitrij S. Kryzhevich 0463772
-	mglPoint p(inX + inW*align/2.,y,3*Depth),q(NAN);
Dmitrij S. Kryzhevich 0463772
+	mglPoint p(inX + inW*align/2.,y,3*Depth),q(NAN,NAN,NAN);
Dmitrij S. Kryzhevich 0463772
 	mglMatrix M=B;	M.norot=true;
Dmitrij S. Kryzhevich 0463772
 	if(title)	text_plot(AddPnt(&M,p,-1,q,-1,0),title,stl,size);
Dmitrij S. Kryzhevich 0463772
 	if(box)	//	draw boungind box
Dmitrij S. Kryzhevich 0463772
Index: examples/full_test.cpp
Dmitrij S. Kryzhevich 0463772
===================================================================
Dmitrij S. Kryzhevich 0463772
--- examples/full_test.cpp	(revision 908)
Dmitrij S. Kryzhevich 0463772
+++ examples/full_test.cpp	(revision 910)
Dmitrij S. Kryzhevich 0463772
@@ -71,7 +71,7 @@
Dmitrij S. Kryzhevich 0463772
 {
Dmitrij S. Kryzhevich 0463772
 	mglParse par;
Dmitrij S. Kryzhevich 0463772
 	setlocale(LC_CTYPE, "");
Dmitrij S. Kryzhevich 0463772
-	par.Execute(gr,"box\r\n\r\naxis");
Dmitrij S. Kryzhevich 0463772
+	par.Execute(gr,"light on:addlegend 'r' 'r':legend");
Dmitrij S. Kryzhevich 0463772
 }
Dmitrij S. Kryzhevich 0463772
 //-----------------------------------------------------------------------------
Dmitrij S. Kryzhevich 0463772
 #if !defined(_MSC_VER) && !defined(__BORLANDC__)