bug 8163 fix datatipToggle cannot be called without argument+ error message fixed 37/2537/7
Serge Steer [Fri, 19 Nov 2010 15:11:33 +0000 (16:11 +0100)]
Conflicts:

scilab/CHANGES_5.3.X
scilab/modules/graphics/macros/datatips/datatipEventhandler.sci
scilab/modules/graphics/macros/datatips/orthProj.sci

Change-Id: If177c6e7e031ca97c459f999a9d88da2d53d5da6

17 files changed:
scilab/CHANGES_5.3.X
scilab/modules/graphics/macros/datatips/datatipCreate.sci
scilab/modules/graphics/macros/datatips/datatipGetStruct.sci
scilab/modules/graphics/macros/datatips/datatipInitStruct.sci
scilab/modules/graphics/macros/datatips/datatipLookfor.sci [deleted file]
scilab/modules/graphics/macros/datatips/datatipManagerMode.sci
scilab/modules/graphics/macros/datatips/datatipMove.sci
scilab/modules/graphics/macros/datatips/datatipRemove.sci
scilab/modules/graphics/macros/datatips/datatipRemoveAll.sci
scilab/modules/graphics/macros/datatips/datatipSetDisplay.sci
scilab/modules/graphics/macros/datatips/datatipSetInterp.sci
scilab/modules/graphics/macros/datatips/datatipSetOrientation.sci
scilab/modules/graphics/macros/datatips/datatipSetStruct.sci
scilab/modules/graphics/macros/datatips/datatipToggle.sci
scilab/modules/graphics/macros/datatips/orthProj.sci
scilab/modules/graphics/tests/nonreg_tests/bug_8163.dia.ref [new file with mode: 0644]
scilab/modules/graphics/tests/nonreg_tests/bug_8163.tst [new file with mode: 0644]

index 2fff699..168ed1a 100644 (file)
@@ -222,6 +222,9 @@ Graphics:
 * bug 7990 fixed - Box thickness was badly exported in vectorial formats (svg/pdf/...)
                    Thanks to Paul Griffiths for the patch.
 
+* bug 8163 fixed - datatipToggle could not be called without argument as 
+                   stated in the help page.
+
 * bug 8518 fixed - When graphic export failed, some error messages were not
                    clear.
 
@@ -856,7 +859,6 @@ Bug Fixes:
 * bug 8413 fixed - fscanfMat crashed when file included text lines at the
                    beginning.
 
-
          Changes between version 5.3.0-beta-3 and 5.3.0-beta-4 of Scilab
          ===============================================================
 
index 7489fb4..9d483cf 100644 (file)
@@ -13,9 +13,13 @@ function datatip_handle=datatipCreate(curve,index,ax)
 //curve : handle on the curve
 //index : index of the mesh point of the curve
 //ax    : optional (the axes which contains the curve;
+  if argn(2)<2 then
+    error(msprintf(_("%s: Wrong number of input argument(s): At least %d expected.\n"),"datatipCreate",2))
+  end
+  
   bg=addcolor([255 255 238]/255);
-  if type(curve)<>9|and(curve.type<>["Polyline" "Plot3d"]) then
-    error(msprintf(_("%s: Wrong size for input argument #%d: A ''%s'' handle expected.\n"),"datatipCreate",1,"Polyline"))
+  if type(curve)<>9|and(curve.type<>["Polyline"]) then
+    error(msprintf(_("%s: Wrong type for input argument #%d: A ''%s'' handle expected.\n"),"datatipCreate",1,"Polyline"))
   end
 
   ud=datatipGetStruct(curve);
@@ -34,7 +38,7 @@ function datatip_handle=datatipCreate(curve,index,ax)
     while ax.type<>"Axes" then ax=ax.parent,end
   else
     if type(ax)<>9|or(ax.type<>"Axes") then
-      error(msprintf(_( "%s: Wrong size for input argument #%d: A ''%s'' handle expected.\n"),"datatipCreate",3,"Axes"))
+      error(msprintf(_( "%s: Wrong type for input argument #%d: A ''%s'' handle expected.\n"),"datatipCreate",3,"Axes"))
     end
   end
   if curve.type=="Polyline" then
index 77c4391..970215f 100644 (file)
@@ -9,5 +9,8 @@
 
 function t=datatipGetStruct(curve)
 //to be customized when a specific field will be dedicated to datatips
+  if argn(2)<>1 then
+    error(msprintf(_("%s: Wrong number of input argument(s): %d expected.\n"),"datatipGetStruct",1))
+  end
   t=curve.user_data
 endfunction
index 4dbfe39..ea026b7 100644 (file)
@@ -15,7 +15,10 @@ function ok=datatipInitStruct(curve_handle,varargin)
 // curve_handle : a handle on a polyline, the parent of the datatips data structure
 // varargin     : a list containing a sequence of pairs;
 //               (<property name), <property value>);
-;
+  if argn(2)<1 then
+    error(msprintf(_("%s: Wrong number of input argument(s): At least %d expected.\n"),"datatipInitStruct",1))
+  end
+
   ok=%t
   ud=datatipGetStruct(curve_handle)
   if typeof(ud)<>'datatips' then;
diff --git a/scilab/modules/graphics/macros/datatips/datatipLookfor.sci b/scilab/modules/graphics/macros/datatips/datatipLookfor.sci
deleted file mode 100644 (file)
index ef9ec9e..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
-// Copyright (C) 2010 - INRIA - Serge Steer <serge.steer@inria.fr>
-//
-// This file must be used under the terms of the CeCILL.
-// This source file is licensed as described in the file COPYING, which
-// you should have received as part of this distribution.  The terms
-// are also available at;
-// http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
-
-
-function [curve_index,tip_index]=datatipLookfor(curve_handles,pt)
-//curve_handles:  a vector of curves which are supposed to have datatips
-//pt           :  a 2D point in pixels
-//curve_index  :  the index of corresponding curve in curve_handles
-//tip_index    :  the datatip index for the curve;
-  for curve_index=1:size(curve_handles,'*')
-    ud=datatipGetStruct(curve_handles(curve_index))
-    if typeof(ud)=='datatips' then
-      tips=ud.tips
-      for tip_index=1:size(tips,'*')
-        d=pixDist(tips(tip_index).children(1).data,pt)
-        if d<10 then return, end
-      end
-    end
-  end
-  curve_index=[];tip_index=[];
-endfunction
index 7686d0a..b03556e 100644 (file)
@@ -67,7 +67,7 @@ function datatipManagerMode(varargin)
         clearglobal datatipAngles
         xinfo("")
       end
-    
+      
     else
       fig.event_handler_enable = "off" //to prevent against bug 7855
       fig.event_handler = "datatipEventhandler"
@@ -77,311 +77,3 @@ function datatipManagerMode(varargin)
     end
   end
 endfunction
-
-function datatipEventhandler(win,x,y,ibut)
-//The event handler which rules the datatips interactive edition;
-  fig=get_figure_handle(win);
-  global datatipAngles zoom_box;
-  if ibut<0 then 
-//     ax=getAxes([x,y],fig);
-//     if or(datatipAngles<>ax.rotation_angles)|or(zoom_box<>ax.zoom_box) then
-//       datatipRedraw();
-//       datatipAngles=ax.rotation_angles;
-//       zoom_box=ax.zoom_box;
-//     end
-    return,
-  end
-
-  fig.event_handler_enable = "off";
-  ax=getAxes([x,y],fig);
-  sca(ax);
-  //change the pixel coordinates to user coordinates
-  [x,y]=xchange(x,y,'i2f');pt=[x,y]
-
-  if or(ibut==[0 3]) then //select a point on a curve
-    //find  curves in the current axes
-    curve_handles=datatipGetEntities(ax);
-    if curve_handles==[] then;
-      return,
-    end
-    //The datatip text box origins are given in user coordinates but their
-    //computation takes into account the pixel dimensions of the text
-    //boxes, so rotations and zoom requires a recomputation of the
-    //origins. There is currently 
-    if datatipAngles==[] then
-      datatipAngles=ax.rotation_angles;
-      zoom_box=ax.zoom_box;
-    else
-      if or(datatipAngles<>ax.rotation_angles)|or(zoom_box<>ax.zoom_box) then
-        datatipRedraw(curve_handles);
-        datatipAngles=ax.rotation_angles;
-        zoom_box=ax.zoom_box;
-      end
-    end
-    //check for a text box present near the selected point
-    [k,l]=datatipLookfor(curve_handles,pt);
-    if k<>[] then;
-      ud=datatipGetStruct(curve_handles(k));
-      tip_handle=ud.tips(l);
-      datatipMove(tip_handle);
-      fig.event_handler_enable = "on";
-      return,
-    end
-    [curve,dmin,ptmin,l]=datatipGetNearestEntity(pt,curve_handles);
-    if dmin<10 then;
-      //small minimal distance, create a text box at this point (or move
-      //an existing tip at this point
-      ud=datatipGetStruct(curve);// the curve datatips data structure
-      if typeof(ud)<>'datatips' then;
-        datatipInitStruct(curve);
-        ud=datatipGetStruct(curve);
-      end
-      if ud.replace then
-        datatipRemoveAll(curve);
-      end
-      if ud.interpolate then
-        datatipCreate(curve,ptmin);
-      else
-        datatipCreate(curve,l); //
-      end
-    else
-//      datatipRemoveAll(curve_handles)
-    end
-  elseif or(ibut==5) then
-    curve_handles=datatipGetEntities(ax);
-    [curve,dmin,ptmin,l]=datatipGetNearestEntity(pt,curve_handles)
-    if curve<>[] then
-      ud=datatipGetStruct(curve);
-      items=[_("Delete all datatips")
-             _("Delete all datatips for the selected curve")
-             _("Delete nearest datatip")
-             _("Delete last datatip")
-             _("Edit the curve tip display function")
-             _("select the curve tip display function")];
-      if ax.view=='3d' then
-        items=[items; _("Redraw all datatips")];
-      end
-      if ud.interpolate then
-        items=[items; _("Disable interpolation")];
-      else
-        items=[items;_("Enable interpolation")];
-      end
-      if ud.replace then
-        items=[items;_("Multiple datatips mode")];
-      else
-        items=[items; _("Unique datatip mode")];
-      end
-      sel=x_choose(items,'');
-      if sel>0 then
-        select items(sel)
-        case _("Delete all datatips") then
-          datatipRemoveAll(curve_handles);
-        case _("Delete all datatips for the selected curve") then;
-          datatipRemoveAll(curve);
-        case _("Delete nearest datatip") then
-          ud=datatipGetStruct(curve)
-          if typeof(ud)=='datatips' then
-            tips=ud.tips
-            dmin=%inf;l=[];
-            for tip_index=1:size(tips,'*')
-              d=norm(tips(tip_index).children(1).data(1:2)-pt(1:2))
-              if d<dmin then
-                l=tip_index;dmin=d;
-              end
-            end
-            if l<>[] then 
-              datatipRemove(curve,l);
-            end
-          end
-        case _("Delete last datatip") then
-          l=size(ud.tips,'*');
-          if l<>0 then
-            datatipRemove(curve,l)
-          end
-        case _("Edit the curve tip display function") then
-          datatipSetDisplay(curve);
-        case _("select the curve tip display function")  then
-          datatipSelectFunction(curve);
-        case _("Enable interpolation") then
-          datatipSetInterp(curve,%T);
-        case _("Disable interpolation") then
-          datatipSetInterp(curve,%F);
-        case _("Multiple datatips mode") then
-          datatipSetReplaceMode(curve,%F);
-        case _("Unique datatip mode") then
-          datatipSetReplaceMode(curve,%t);
-        case _("Redraw all datatips") then
-          datatipRedraw(curve_handles);
-        end
-      end
-    end
-  elseif or(ibut==[1 4]) then //middle button
-    curve_handles=datatipGetEntities(ax);
-    [k,l]=datatipLookfor(curve_handles,pt);
-    if k<>[] then;
-      ud=datatipGetStruct(curve_handles(k))// the curve datatips data structure
-      tip_handle=ud.tips(l);
-      orient=["automatic" "upper left" "upper right", "lower left", "lower right"];
-      orientations=[_("automatic") _("upper left") _("upper right"), _("lower left"), _("lower right")];
-      r=x_choose(orientations,_("Select tip orientation"));
-      if r<>0 then
-        datatipSetOrientation(tip_handle,orient(r));
-      end
-    end
-  end
-  fig.event_handler_enable = "on";
-endfunction
-
-function [curve_index,tip_index]=datatipLookfor(curve_handles,pt)
-//looks for a datatip in the neighborhood of a given point
-//curve_handles:  a vector of curves which are supposed to have datatips
-//pt           :  a 2D point in pixels
-//curve_index  :  the index of corresponding curve in curve_handles
-//tip_index    :  the datatip index for the curve;
-  for curve_index=1:size(curve_handles,'*')
-    ud=datatipGetStruct(curve_handles(curve_index));
-    if typeof(ud)=='datatips' then
-      tips=ud.tips;
-      for tip_index=1:size(tips,'*')
-        data=tips(tip_index).children(1).data;
-        if size(data,'*')==3 then
-          [xx,yy]=geom3d(data(1),data(2),data(3));
-          d=pixDist([xx,yy],pt)/2;
-        else
-          d=pixDist(data,pt);
-        end
-        if d<10 then return, end
-      end
-    end
-  end
-  curve_index=[];
-  tip_index=[];
-endfunction
-
-
-function ax_handle=getAxes(pt,fig)
-//Returns the axes handle where a point given in pixel lies in the
-//current (or given) figure
-// pt        : the vector or coordinates in pixel in the figure
-// fig       : optionnal handle on the figure
-// ax_handle : selected axes handle
-  if argn(2)==1 then fig=gcf(),end
-  axes=get(fig,'children');
-  axes(axes.type=='uimenu')=[];
-  if size(axes,'*')==1 then ax_handle=axes;return,end
-  sz=fig.axes_size;
-  for k=1:size(axes,'*')
-    ax_handle=axes(k);
-    xbounds=ax_handle.axes_bounds(:,1)*sz(1);
-    ybounds=ax_handle.axes_bounds(:,2)*sz(2);
-    if prod(xbounds-pt(1))<0&prod(ybounds-pt(2))<0 then break,end
-  end
-endfunction
-
-
-function datatipSetReplaceMode(curve_handle,m)
-//changes the tips creation modes for a given curve
-// curve_handle : a handle on a polyline
-// m            : %t (interpolation active) or %f
-  if argn(2)==1 then m=%f,end
-  if type(curve_handle)<>9|or(curve_handle.type<>"Polyline") then
-    error(msprintf(_("%s: Wrong size for input argument #%d: A ''%s'' handle expected.\n"),"datatipCreate",1,"Polyline"))
-  end
-
-  ud=datatipGetStruct(curve_handle);
-  if typeof(ud)<>'datatips' then;
-    datatipInitStruct(curve_handle);
-    ud=datatipGetStruct(curve_handle);
-  end
-  ud.replace=m;
-  datatipSetStruct(curve_handle,ud);
-endfunction
-      
-function datatipSelectFunction(curve)
-  p=uigetfile('*.sci');
-  if p=='' then return,end
-  nold=size(who("get"),'*');
-  if execstr('exec(p,-1);','errcatch')<>0 then
-    messagebox([_("The selected file cannot be executed");lasterror()],"modal")
-    return
-  end
-  new=who("get");
-  new=new(1:$-nold-1);
-  if size(new,'*')<>1 then 
-     messagebox(_("The selected file defines more than one function"))
-    return
-  end
-  datatipSetDisplay(curve,evstr(new));
-endfunction
-
-
-function [curve,dmin,ptmin,l]=datatipGetNearestEntity(pt,ax)
-//looks for the nearest entity from a given point
-//ax     : either a handle on a xes or a vector of handles on curves
-//curve  : the handle on the nearest entity
-//dmin   : euclidean distance in pixel from the given point to the
-//         nearest curve  
-//ptmin  : the orthogonal projection of the point on the curve
-//l      : index of the segment containing the projection  
-  
-  dmin=%inf;
-  l=0;
-  curve=[];
-  ptmin=[];
-  if argn(2)==1 then
-    //only a point given look into the axes where the point lies
-    ax=getAxes(pt);
-  end
-  if size(ax,'*')==0 then return,end
-  if size(ax,'*')==1&ax.type=="Axes" then
-    curves=datatipGetEntities(ax);
-  else
-    curves=ax;
-    if or(curves.type<>"Polyline") then 
-      error(msprintf(_("%s: Wrong size for input argument #%d: A ''%s'' handle expected.\n"),"datatipGetNearestEntity","Polyline"))
-    end 
-  end
-  for k=1:size(curves,'*')
-    ck=curves(k)
-    ax=ck.parent;
-    
-    while ax.type<>'Axes' then ax=ax.parent,end
-    if ck.type=="Polyline" then
-      //find the polylines point with realizes the minimal euclidean
-      //distance with pt
-      if ax.view=='3d' then
-        [xx,yy]=geom3d(ck.data(:,1),ck.data(:,2),ck.data(:,3))
-        [d,ptp,ind,c]=orthProj([xx,yy],pt)
-
-      else
-        [d,ptp,ind]=orthProj(ck.data,pt)
-      end
-      if ind<>[] then
-        d= pixDist(ptp,pt);
-        if d<dmin then
-          dmin=d
-          l=ind
-          kmin=k,
-          if ax.view=='3d' then
-            ptmin=ck.data(l,:)+c*(ck.data(l+1,:)-ck.data(l,:))
-          else
-            ptmin=ptp
-          end
-        end
-      end
-    elseif ck.type=="Plot3d" then
-      [m,n]=size(ck.data.z);
-      [xx,yy]=geom3d(ck.data.x*ones(1,n),ones(m,1)*ck.data.y',ck.data.z);
-      [xx,yy]=xchange(xx,yy,'f2i');
-      [xp,yp]=xchange(pt(1),pt(2),'f2i');
-      [d,ind]=min(abs(xx-xp)+abs(yy-yp));
-      if d<dmin then
-        dmin=d
-        l=ind
-        kmin=k,
-        ptmin=[ck.data.x(l(1)) ck.data.y(l(2))  ck.data.z(l(1),l(2))]
-      end
-    end
-  end
-  curve=curves(kmin)
-endfunction
index 8bbc569..af05ccd 100644 (file)
@@ -7,13 +7,15 @@
 // are also available at;
 // http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
 
-
-
 function datatipMove(tip_handle,ax)
 //moves a datatip along the associated curve
 // tip_handle : handle on the given datatip compound;
+  if argn(2)<1 then
+    error(msprintf(_("%s: Wrong number of input argument(s): At least %d expected.\n"),"datatipMove",1))
+  end
+
   if type(tip_handle)<>9|or(tip_handle.type<>"Compound") then
-    error(msprintf(_("%s: Wrong size for input argument #%d: A ''%s'' handle expected.\n"),"datatipMove",1,"datatip"))
+    error(msprintf(_("%s: Wrong type for input argument #%d: A ''%s'' handle expected.\n"),"datatipMove",1,"datatip"))
   end
 
   if argn(2)==1 then
@@ -21,7 +23,7 @@ function datatipMove(tip_handle,ax)
     while ax.type<>"Axes" then ax=ax.parent,end
   else
     if type(ax)<>9|or(ax.type<>"Axes") then
-      error(msprintf(_( "%s: Wrong size for input argument #%d: A ''%s'' handle expected.\n"),"datatipMove",2,"Axes"))
+      error(msprintf(_( "%s: Wrong type for input argument #%d: A ''%s'' handle expected.\n"),"datatipMove",2,"Axes"))
     end
   end
   point_handle=tip_handle.children(1)
index 25a4df5..0d1c8f3 100644 (file)
@@ -8,11 +8,14 @@
 // http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
 
 function datatipRemove(handle,ind)
-;
+  if argn(2)<1 then
+    error(msprintf(_("%s: Wrong number of input argument(s): At least %d expected.\n"),"datatipRemove",1))
+  end
+
   drawlater()
   if argn(2)==1 then //handle on a tip
     if type(handle)<>9|or(handle.type<>"Compound") then
-      error(msprintf(_("%s: Wrong size for input argument #%d: A ''%s'' handle expected.\n"),"datatipRemove",1,"datatip"))
+      error(msprintf(_("%s: Wrong type for input argument #%d: A ''%s'' handle expected.\n"),"datatipRemove",1,"datatip"))
     end
     ind=[]
     curve_handles=datatipGetEntities(handle.parent)
@@ -31,7 +34,7 @@ function datatipRemove(handle,ind)
   else
     curve_handle=handle;
     if type(curve_handle)<>9|or(curve_handle.type<>"Polyline") then
-      error(msprintf(_("%s: Wrong size for input argument #%d: A ''%s'' handle expected.\n"),"datatipRemove",1,"Polyline"))
+      error(msprintf(_("%s: Wrong type for input argument #%d: A ''%s'' handle expected.\n"),"datatipRemove",1,"Polyline"))
     end
   end
 
index 260c887..f52bd98 100644 (file)
@@ -7,9 +7,12 @@
 // are also available at;
 // http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
 
-
 function datatipRemoveAll(curve_handles)
 //remove all the datatips for the given curves
+  if argn(2)<1 then
+    error(msprintf(_("%s: Wrong number of input argument(s): %d expected.\n"),"datatipRemoveAll",1))
+  end
+
   drawlater()
 
   for k=1:size(curve_handles,'*')
index 469ad79..cc548a2 100644 (file)
 
 function datatipSetDisplay(curve_handle,fun)
 //Changes the datatips visualisation function for a given curve
+  if argn(2)<1 then
+    error(msprintf(_("%s: Wrong number of input argument(s): At least %d expected.\n"),"datatipSetDisplay",1))
+  end
+
   ud=datatipGetStruct(curve_handle)
   if typeof(ud)<>'datatips' then;
     if ~datatipInitStruct(curve_handle) then return,end
index 5e731af..23c7539 100644 (file)
@@ -11,9 +11,13 @@ function datatipSetInterp(curve_handle,m)
 //changes the tips interpolation modes for a given curve
 // curve_handle : a handle on a polyline
 // m            : %t (interpolation active) or %f
+  if argn(2)<1 then
+    error(msprintf(_("%s: Wrong number of input argument(s): At least %d expected.\n"),"datatipSetInterp",1))
+  end
+
   if argn(2)==1 then m=%f,end
   if type(curve_handle)<>9|or(curve_handle.type<>"Polyline") then
-    error(msprintf(_("%s: Wrong size for input argument #%d: A ''%s'' handle expected.\n"),"datatipSetInterp",1,"Polyline"))
+    error(msprintf(_("%s: Wrong type for input argument #%d: A ''%s'' handle expected.\n"),"datatipSetInterp",1,"Polyline"))
   end
 
   ud=datatipGetStruct(curve_handle)
index 5fe7b58..5664cbb 100644 (file)
@@ -9,9 +9,12 @@
 
 
 function datatipSetOrientation(tip_handle,o)
+  if argn(2)<>2 then
+    error(msprintf(_("%s: Wrong number of input argument(s): %d expected.\n"),"datatipSetOrientation",2))
+  end
   orientations=["automatic" "upper left" "upper right", "lower left","lower right"]
   if type(tip_handle)<>9|or(tip_handle.type<>"Compound") then
-    error(msprintf(_("%s: Wrong size for input argument #%d: A ''%s'' handle expected.\n"),"datatipSetOrientation",1,"datatip"))
+    error(msprintf(_("%s: Wrong type for input argument #%d: A ''%s'' handle expected.\n"),"datatipSetOrientation",1,"datatip"))
   end
 
   k=find(orientations==convstr(o))
index f2e9204..64ca919 100644 (file)
@@ -8,5 +8,8 @@
 // http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
 
 function datatipSetStruct(curve,t)
+  if argn(2)<>2 then
+    error(msprintf(_("%s: Wrong number of input argument(s): %d expected.\n"),"datatipSetStruct",2))
+  end
   set(curve,'user_data',t)
 endfunction
index d3e1630..5191da4 100644 (file)
 function datatipToggle(fig)
 //Toggles activation of the datatip edition mode for the given or current
 //figure
-  if type(fig)<>9|or(fig.type<>"Figure") then
-    error(msprintf(_("%s: Wrong size for input argument #%d: A ''%s'' handle expected.\n"),"datatipCreate",1,"Figure"))
+  if argn(2)<1 then
+    fig=gcf();
+  else
+    if type(fig)<>9|or(fig.type<>"Figure") then
+      error(msprintf(_("%s: Wrong type for input argument #%d: A ''%s'' handle expected.\n"),"datatipCreate",1,"Figure"))
+    end
   end
   datatipManagerMode(fig)
 endfunction
index 5086264..3a53c64 100644 (file)
@@ -13,8 +13,11 @@ function [d,ptp,ind,c]=orthProj(data,pt)
 //ptp  projected point coordiantes
 //ind  projection lies on segment [ind ind+1]
 //c    orthogonal projection coefficient
+  if argn(2)<>2 then
+    error(msprintf(_("%s: Wrong number of input argument(s): %d expected.\n"),"orthProj",2))
+  end
+
 
-// Copyright INRIA
   d = [];ptp = [];ind = [],c = []
   [n,m] = size(data)
   pt = matrix(pt,1,-1) //make pt a row vector
@@ -30,10 +33,11 @@ function [d,ptp,ind,c]=orthProj(data,pt)
   L = sum(X.*X,2); //segment lengths
   nz = find(L>0)
   X = X(nz,:); Y = Y(nz,:);
-  P = sum(X.*Y,2)./L(nz)
-;
+
+  P = sum(X.*Y,2)./L(nz);
   //the projected point lies in the segment nz(i) if 0 <= P(i)<1
   i_in = find(P >= 0 & P<1); //find segments the projected point falls in
+
   if i_in<>[] then
     //find the segment that realizes the min distance
     [d,k] = min(sum((X(i_in,:).*(P(i_in)*ones(1,m))-Y(i_in,:)).^2,2))
diff --git a/scilab/modules/graphics/tests/nonreg_tests/bug_8163.dia.ref b/scilab/modules/graphics/tests/nonreg_tests/bug_8163.dia.ref
new file mode 100644 (file)
index 0000000..3ea3eec
--- /dev/null
@@ -0,0 +1,16 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010 - INRIA - Serge Steer
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- TEST WITH GRAPHIC -->
+// <-- Non-regression test for bug 8163 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=8163
+//
+// <-- Short Description -->
+// datatipToggle cannot be called without agrument as stated in the help page
+plot(1:10)
+if execstr('datatipToggle()','errcatch')<>0 then bugmes();quit;end
diff --git a/scilab/modules/graphics/tests/nonreg_tests/bug_8163.tst b/scilab/modules/graphics/tests/nonreg_tests/bug_8163.tst
new file mode 100644 (file)
index 0000000..5a6d7df
--- /dev/null
@@ -0,0 +1,20 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010 - INRIA - Serge Steer
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- TEST WITH GRAPHIC -->
+
+// <-- Non-regression test for bug 8163 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=8163
+//
+// <-- Short Description -->
+// datatipToggle cannot be called without argument as stated in the help page
+
+plot(1:10)
+if execstr('datatipToggle()','errcatch')<>0 then pause,end
+