Bug #13438 fixed - drawaxis() did not return the handle of the current entity. 74/14574/3
Vladislav TRUBKIN [Tue, 27 May 2014 14:39:59 +0000 (16:39 +0200)]
Change-Id: I9a2a56e2cda5fa67965171cd49e0005ebdb5b33d

scilab/CHANGES_5.5.X
scilab/modules/graphics/help/en_US/axis/drawaxis.xml
scilab/modules/graphics/help/fr_FR/axis/drawaxis.xml
scilab/modules/graphics/sci_gateway/c/sci_drawaxis.c
scilab/modules/graphics/tests/nonreg_tests/bug_13438.dia.ref [new file with mode: 0644]
scilab/modules/graphics/tests/nonreg_tests/bug_13438.tst [new file with mode: 0644]

index 969e8a6..f07b957 100644 (file)
@@ -95,10 +95,12 @@ Scilab Bug Fixes
 * Bug #13404 fixed - rect property was not taken into account in polarplot.
 
 * Bug #13409 fixed - permute(x, dims) failed when dims was greater than the dimensions of size(x)
-                     now permute treats extra dimensions as 1
+                     now permute treats extra dimensions as 1.
 
 * Bug #13435 fixed - Windows version crashes when calling xmlRemove on the first child.
 
+* Bug #13438 fixed - drawaxis did not return the handle of the created axis.
+
 
 Xcos Bug Fixes
 ==============
index d4e4dd4..aea2ffe 100644 (file)
@@ -17,8 +17,9 @@
     </refnamediv>
     <refsynopsisdiv>
         <title>Calling Sequence</title>
-        <synopsis>drawaxis([options])
-            // options: x,y,dir,sub_int,fontsize,format_n,seg,textcolor,ticscolor,tics
+        <synopsis>
+            drawaxis([options]); // options: x,y,dir,sub_int,fontsize,format_n,seg,textcolor,ticscolor,tics
+            e = drawaxis([options]);
         </synopsis>
     </refsynopsisdiv>
     <refsection>
                     </para>
                 </listitem>
             </varlistentry>
+            <varlistentry>
+                <term>e</term>
+                <listitem>
+                    <para>
+                        handle, the handle of the created axis.
+                    </para>
+                </listitem>
+            </varlistentry>
         </variablelist>
     </refsection>
     <refsection>
         <title>Description</title>
         <para>
             <literal>drawaxis</literal> is used to draw an axis in vertical or horizontal 
-            direction. the direction of the axis is given by dir 
+            direction. This function returns the handle of the created axis. 
+            The direction of the axis is given by dir 
             <literal>dir = 'u'</literal> or <literal>'d'</literal> gives a horizontal axis 
             with tics going up (<literal>'u'</literal>) or down (<literal>'d'</literal>). 
             <literal>dir = 'r'</literal> or <literal>'l'</literal> give a vertical axis 
         <programlisting role="example"><![CDATA[ 
 plot2d(1:10,1:10,1,"020")
 // horizontal axis 
-drawaxis(x=2:7,y=4,dir='u',tics='v')
+e = drawaxis(x=2:7,y=4,dir='u',tics='v')
 // horizontal axis on top of the frame
 drawaxis(x=2:7,dir='u',tics='v') 
 // horizontal axis at the bottom of the frame
-drawaxis(x=2:7,dir='d',tics='v') 
+e = drawaxis(x=2:7,dir='d',tics='v') 
 
 // horizontal axis given by a range 
 drawaxis(x=[2,7,3],y=4,dir='d',tics='r') 
 
 // vertical axis 
-drawaxis(x=4,y=2:7,dir='r',tics='v')
-drawaxis(x=2,y=[2,7,3],dir='l',tics='r')
-drawaxis(y=2:7,dir='r',tics='v')
-drawaxis(y=2:7,dir='l',tics='v')
+e = drawaxis(x=4,y=2:7,dir='r',tics='v')
+e = drawaxis(x=2,y=[2,7,3],dir='l',tics='r')
+e = drawaxis(y=2:7,dir='r',tics='v')
+e = drawaxis(y=2:7,dir='l',tics='v')
 
 // horizontal axis with strings displayed at tics positions
 drawaxis(x=2:7,y=8,dir='u',tics='v',val='A'+string(1:6));
@@ -165,8 +175,8 @@ drawaxis(x=2:7,y=8,dir='u',tics='v',val='A'+string(1:6));
 drawaxis(x=8,y=2:7,dir='r',tics='v',val='B'+string(1:6));
 
 // horizontal axis given with a 'i' range. 
-drawaxis(x=[2,5,0,3],y=9,dir='u',tics='i');
-drawaxis(x=9,y=[2,5,0,3],dir='r',tics='i',sub_int=5);
+e = drawaxis(x=[2,5,0,3],y=9,dir='u',tics='i');
+e = drawaxis(x=9,y=[2,5,0,3],dir='r',tics='i',sub_int=5);
 
 // horizontal axis again 
 drawaxis(x=2:7,y=4,dir='u',tics='v',fontsize=10,textcolor=9,ticscolor=7,seg=0,sub_int=20) 
index 067b9c6..f333944 100644 (file)
@@ -6,8 +6,9 @@
     </refnamediv>
     <refsynopsisdiv>
         <title>Séquence d'appel</title>
-        <synopsis>drawaxis([options])
-            // options: x,y,dir,sub_int,fontsize,format_n,seg,textcolor,ticscolor,tics
+        <synopsis>
+            drawaxis([options]) // options : x,y,dir,sub_int,fontsize,format_n,seg,textcolor,ticscolor,tics
+            e = drawaxis([options])
         </synopsis>
     </refsynopsisdiv>
     <refsection>
                     </para>
                 </listitem>
             </varlistentry>
+            <varlistentry>
+                <term>e</term>
+                <listitem>
+                    <para>
+                        handle, le handle de l'axe créé.
+                    </para>
+                </listitem>
+            </varlistentry>
         </variablelist>
     </refsection>
     <refsection>
         <title>Description</title>
         <para>
-            <literal>drawaxis</literal> est utilisée pour dessiner un axe vertical ou horizontal. La direction de l'axe est donnée par dir <literal>dir = 'u'</literal> ou <literal>'d'</literal> donne un axe horizontal avec des graduations 
+            <literal>drawaxis</literal> est utilisée pour dessiner un axe vertical ou horizontal. Cette fonction renvoie le handle de l'axe créé. 
+            La direction de l'axe est donnée par dir <literal>dir = 'u'</literal> ou <literal>'d'</literal> donne un axe horizontal avec des graduations 
             dirigées vers le haut (<literal>'u'</literal>) ou le bas (<literal>'d'</literal>). 
             <literal>dir = 'r'</literal> ou <literal>'l'</literal> donne un axe vertical avec des graduations allant vers la droite (<literal>'r'</literal>) ou vers la gauche (<literal>'l'</literal>). 
         </para>
         <programlisting role="example"><![CDATA[ 
 plot2d(1:10,1:10,1,"020")
 // axe horizontal
-drawaxis(x=2:7,y=4,dir='u',tics='v')
+e = drawaxis(x=2:7,y=4,dir='u',tics='v')
 // axe horizontal en haut du cadre
 drawaxis(x=2:7,dir='u',tics='v') 
 // axe horizontal en bas du cadre
-drawaxis(x=2:7,dir='d',tics='v') 
+e = drawaxis(x=2:7,dir='d',tics='v') 
 
 // axe horizontal donné par une plage de variation 
 drawaxis(x=[2,7,3],y=4,dir='d',tics='r') 
 
 // axe vertical
-drawaxis(x=4,y=2:7,dir='r',tics='v')
-drawaxis(x=2,y=[2,7,3],dir='l',tics='r')
-drawaxis(y=2:7,dir='r',tics='v')
-drawaxis(y=2:7,dir='l',tics='v')
+e = drawaxis(x=4,y=2:7,dir='r',tics='v')
+e = drawaxis(x=2,y=[2,7,3],dir='l',tics='r')
+e = drawaxis(y=2:7,dir='r',tics='v')
+e = drawaxis(y=2:7,dir='l',tics='v')
 
 // axe horizontal avec chaînes de caractères au dessus des graduations
 drawaxis(x=2:7,y=8,dir='u',tics='v',val='A'+string(1:6));
@@ -153,8 +163,8 @@ drawaxis(x=2:7,y=8,dir='u',tics='v',val='A'+string(1:6));
 drawaxis(x=8,y=2:7,dir='r',tics='v',val='B'+string(1:6));
 
 // axe horizontal avec 'i' 
-drawaxis(x=[2,5,0,3],y=9,dir='u',tics='i');
-drawaxis(x=9,y=[2,5,0,3],dir='r',tics='i',sub_int=5);
+e = drawaxis(x=[2,5,0,3],y=9,dir='u',tics='i');
+e = drawaxis(x=9,y=[2,5,0,3],dir='r',tics='i',sub_int=5);
 
 // encore un axe horizontal
 drawaxis(x=2:7,y=4,dir='u',tics='v',fontsize=10,textcolor=9,ticscolor=7,seg=0,sub_int=20) 
index f16a619..65bea94 100644 (file)
@@ -29,6 +29,7 @@
 #include "getGraphicObjectProperty.h"
 #include "graphicObjectProperties.h"
 #include "CurrentSubwin.h"
+#include "HandleManagement.h"
 
 /*--------------------------------------------------------------------------*/
 // get_optionals not yet managed
@@ -65,6 +66,7 @@ int sci_drawaxis(char *fname, unsigned long fname_len)
     double *x = NULL, *y = NULL;
     int nx = 0, ny = 0, ntics;
     int nb_tics_labels = -1;
+    int iRhs = nbInputArgument(pvApiCtx);
 
     nopt = NumOpt();
 
@@ -283,7 +285,8 @@ int sci_drawaxis(char *fname, unsigned long fname_len)
 
     Objdrawaxis(dir, tics, x, &nx, y, &ny, val, sub_int, format, fontsize, textcolor, ticscolor, 'n', seg_flag, nb_tics_labels);
 
-    AssignOutputVariable(pvApiCtx, 1) = 0;
+    createScalarHandle(pvApiCtx, iRhs + 1, getHandle(getCurrentObject()));
+    AssignOutputVariable(pvApiCtx, 1) = iRhs + 1;
     ReturnArguments(pvApiCtx);
     return 0;
 }
diff --git a/scilab/modules/graphics/tests/nonreg_tests/bug_13438.dia.ref b/scilab/modules/graphics/tests/nonreg_tests/bug_13438.dia.ref
new file mode 100644 (file)
index 0000000..8a8f66f
--- /dev/null
@@ -0,0 +1,29 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2014 - Scilab Enterprises - Vladislav TRUBKIN
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- TEST WITH GRAPHIC -->
+//
+// <-- Non-regression test for bug 13438 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=13438
+//
+// <-- Short Description -->
+// drawaxis() did not return the handle of the current entity.
+plot2d(1:10, 1:10);
+eRef = drawaxis(x = 2:7, y = 4, dir = "u", tics = "v");
+eNew = gce();
+assert_checktrue(eRef == eNew);
+eRef = drawaxis(x = 4, y = 2:7, dir = "r", tics = "v");
+eNew = gce();
+assert_checktrue(eRef == eNew);
+eRef = drawaxis(x = 8, y = 2:9, dir = "r", tics = "v", val = "value: "+string(1:8));
+eNew = gce();
+assert_checktrue(eRef == eNew);
+eRef = drawaxis(x = 3, y = 2:9, dir = "l", tics = "v", val = "value: "+string(1:8));
+eNew = gce();
+assert_checktrue(eRef == eNew);
diff --git a/scilab/modules/graphics/tests/nonreg_tests/bug_13438.tst b/scilab/modules/graphics/tests/nonreg_tests/bug_13438.tst
new file mode 100644 (file)
index 0000000..2dab6de
--- /dev/null
@@ -0,0 +1,30 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2014 - Scilab Enterprises - Vladislav TRUBKIN
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- TEST WITH GRAPHIC -->
+//
+// <-- Non-regression test for bug 13438 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=13438
+//
+// <-- Short Description -->
+// drawaxis() did not return the handle of the current entity.
+
+plot2d(1:10, 1:10);
+eRef = drawaxis(x = 2:7, y = 4, dir = "u", tics = "v");
+eNew = gce();
+assert_checktrue(eRef == eNew);
+eRef = drawaxis(x = 4, y = 2:7, dir = "r", tics = "v");
+eNew = gce();
+assert_checktrue(eRef == eNew);
+eRef = drawaxis(x = 8, y = 2:9, dir = "r", tics = "v", val = "value: "+string(1:8));
+eNew = gce();
+assert_checktrue(eRef == eNew);
+eRef = drawaxis(x = 3, y = 2:9, dir = "l", tics = "v", val = "value: "+string(1:8));
+eNew = gce();
+assert_checktrue(eRef == eNew);