Allow to use rotate axes without any arguments.
Jean-baptiste Silvy [Wed, 16 Apr 2008 16:05:19 +0000 (16:05 +0000)]
scilab/modules/graphics/sci_gateway/c/sci_rotate_axes.c
scilab/modules/graphics/src/c/Interaction.c

index 8a4928a..10e5c9e 100644 (file)
@@ -40,41 +40,49 @@ int sci_rotate_axes(char *fname,unsigned long fname_len)
   int stackPointer;
 
   /* check size of input and output */
-  CheckRhs(1,1);
+  CheckRhs(0,1);
   CheckLhs(0,1);
 
-  /* Get figure or subwin handle */
-  if (GetType(1) != sci_handles)
+  if (Rhs == 0)
   {
-    sciprint(_("%s: Wrong type for first input argument: Single Figure or Axes handle expected.\n"), fname);
-    LhsVar(1) = 0;
-    return 0;
+    /* rotate current figure */
+    interactiveRotation(sciGetCurrentFigure());
   }
+  else
+  {
+    /* Get figure or subwin handle */
+    if (GetType(1) != sci_handles)
+    {
+      sciprint(_("%s: Wrong type for first input argument: Single Figure or Axes handle expected.\n"), fname);
+      LhsVar(1) = 0;
+      return 0;
+    }
 
-  GetRhsVar(1, GRAPHICAL_HANDLE_DATATYPE, &nbRow, &nbCol, &stackPointer);
+    GetRhsVar(1, GRAPHICAL_HANDLE_DATATYPE, &nbRow, &nbCol, &stackPointer);
 
-  if (nbRow * nbCol != 1)
-  {
-    sciprint(_("%s: Wrong type for first input argument: Single Figure or Axes handle expected.\n"), fname);
-    LhsVar(1) = 0;
-    return 0;
-  }
+    if (nbRow * nbCol != 1)
+    {
+      sciprint(_("%s: Wrong type for first input argument: Single Figure or Axes handle expected.\n"), fname);
+      LhsVar(1) = 0;
+      return 0;
+    }
 
-  rotatedObject = sciGetPointerFromHandle(getHandleFromStack(stackPointer));
-  
-  if (sciGetEntityType(rotatedObject) == SCI_FIGURE)
-  {
-    interactiveRotation(rotatedObject);
-  }
-  else if (sciGetEntityType(rotatedObject) == SCI_SUBWIN)
-  {
-    interactiveSubwinRotation(rotatedObject);
-  }
-  else
-  {
-    sciprint(_("%s: Wrong type for first input argument: Single Figure or Axes handle expected.\n"), fname);
-    LhsVar(1) = 0;
-    return 0;
+    rotatedObject = sciGetPointerFromHandle(getHandleFromStack(stackPointer));
+
+    if (sciGetEntityType(rotatedObject) == SCI_FIGURE)
+    {
+      interactiveRotation(rotatedObject);
+    }
+    else if (sciGetEntityType(rotatedObject) == SCI_SUBWIN)
+    {
+      interactiveSubwinRotation(rotatedObject);
+    }
+    else
+    {
+      sciprint(_("%s: Wrong type for first input argument: Single Figure or Axes handle expected.\n"), fname);
+      LhsVar(1) = 0;
+      return 0;
+    }
   }
 
   LhsVar(1) = 0;
index 3be7d5c..4c58fa8 100644 (file)
@@ -39,6 +39,7 @@
 #include "JavaInteraction.h"
 #include "Axes.h"
 #include "GetJavaProperty.h"
+#include "GraphicSynchronizerInterface.h"
 
 /*-------------------------------------------------------------------------------------*/
 static int moveObj(sciPointObj * pobj, double displacement[], int displacementSize);
@@ -887,8 +888,10 @@ void trackSubwinRotation(sciPointObj * pSubwin)
     theta -= mouseDisplacement[0] / 4.0;
 
     /* redraw */
+    startFigureDataWriting(parentFigure);
     Obj_RedrawNewAngle(pSubwin, theta, alpha);
     setInfoMessageWithRotationAngles(parentFigure, alpha, theta);
+    endFigureDataWriting(parentFigure);
 
     /* several subwins may have been rotated */
     sciDrawObj(parentFigure);