Because rotation is the default mode,
[scilab.git] / scilab / modules / graphics / sci_gateway / c / sci_unzoom.c
1 /*
2  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  * Copyright (C) 2006 - ENPC - Jean-Philipe Chancelier
4  * Copyright (C) 2006 - INRIA - Fabrice Leray
5  * Copyright (C) 2006 - INRIA - Jean-Baptiste Silvy
6  * 
7  * This file must be used under the terms of the CeCILL.
8  * This source file is licensed as described in the file COPYING, which
9  * you should have received as part of this distribution.  The terms
10  * are also available at    
11  * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
12  *
13  */
14
15 /*------------------------------------------------------------------------*/
16 /* file: sci_unzoom.h                                                     */
17 /* desc : interface for unzoom routine                                    */
18 /*------------------------------------------------------------------------*/
19
20 #include "gw_graphics.h"
21 #include "stack-c.h"
22 #include "GetProperty.h"
23 #include "MALLOC.h"
24 #include "axesScale.h"
25 #include "localization.h"
26 #include "Scierror.h"
27 #include "getPropertyAssignedValue.h"
28 #include "HandleManagement.h"
29
30 /*--------------------------------------------------------------------------*/
31 int sci_unzoom(char *fname,unsigned long fname_len)
32 {
33   CheckRhs(0,1) ;
34   CheckLhs(0,1) ;
35   if ( Rhs == 0 )
36   {
37     sciUnzoomAll();
38   }
39   else
40   {
41     int nbUnzoomedObjects = 0;
42     int m,n,i;
43     size_t stackPointer = 0;
44     sciPointObj ** zoomedObjects = NULL; /* array of object to unzoom */
45     GetRhsVar(1,GRAPHICAL_HANDLE_DATATYPE,&m,&n,&stackPointer);
46     
47     nbUnzoomedObjects = m * n;
48     zoomedObjects = MALLOC(nbUnzoomedObjects * sizeof(sciPointObj *));
49     if (zoomedObjects == NULL)
50     {
51       Scierror(999, _("%s: No more memory.\n"),fname);
52       return -1;
53     }
54
55     /* first pass, check that all the handles are subwindows or figures */
56     /* and copy them into an array of objects */
57     for ( i = 0 ; i < nbUnzoomedObjects ; i++ )
58     {
59       zoomedObjects[i] = sciGetPointerFromHandle(getHandleFromStack(stackPointer + i));
60       if (sciGetEntityType(zoomedObjects[i]) != SCI_SUBWIN && sciGetEntityType(zoomedObjects[i]) != SCI_FIGURE)
61       {
62         FREE(zoomedObjects);
63         Scierror(999, _("%s: Wrong type for input argument: Vector of Axes and Figure handles expected.\n"),fname);
64         return -1;
65       }
66     }
67
68     /* second pass draw the objects */
69     sciUnzoomArray(zoomedObjects, nbUnzoomedObjects);
70
71     FREE(zoomedObjects);
72
73   }
74   
75
76   LhsVar(1)=0; 
77   PutLhsVar();
78   return 0;
79 }
80 /*--------------------------------------------------------------------------*/