convert figure macro to gateway 78/13478/6
Antoine ELIAS [Mon, 20 Jan 2014 17:08:06 +0000 (18:08 +0100)]
Change-Id: I6c1e3a7b4c80547fbc749f6542576dc28e519a26

scilab/modules/gui/Makefile.am
scilab/modules/gui/Makefile.in
scilab/modules/gui/includes/gw_gui.h
scilab/modules/gui/macros/oldfigure.sci [moved from scilab/modules/gui/macros/figure.sci with 99% similarity]
scilab/modules/gui/sci_gateway/c/gw_gui.c
scilab/modules/gui/sci_gateway/c/sci_figure.c [new file with mode: 0644]
scilab/modules/gui/sci_gateway/gui_gateway.xml
scilab/modules/gui/src/c/gui.vcxproj
scilab/modules/gui/src/c/gui.vcxproj.filters

index a14db92..8f046e0 100755 (executable)
@@ -187,7 +187,8 @@ sci_gateway/c/sci_helpbrowser.c \
 sci_gateway/c/sci_uigetfont.c \
 sci_gateway/c/sci_uigetcolor.c \
 sci_gateway/c/sci_getcallbackobject.c \
-sci_gateway/c/sci_exportUI.c
+sci_gateway/c/sci_exportUI.c \
+sci_gateway/c/sci_figure.c
 
 GATEWAY_CXX_SOURCES = \
 sci_gateway/cpp/sci_printsetupbox.cpp \
index a34fe52..2f8eef6 100644 (file)
@@ -302,7 +302,8 @@ am__objects_4 = sci_gateway/c/libscigui_la-sci_x_choice.lo \
        sci_gateway/c/libscigui_la-sci_uigetfont.lo \
        sci_gateway/c/libscigui_la-sci_uigetcolor.lo \
        sci_gateway/c/libscigui_la-sci_getcallbackobject.lo \
-       sci_gateway/c/libscigui_la-sci_exportUI.lo
+       sci_gateway/c/libscigui_la-sci_exportUI.lo \
+       sci_gateway/c/libscigui_la-sci_figure.lo
 am__objects_5 = sci_gateway/cpp/libscigui_la-sci_printsetupbox.lo \
        sci_gateway/cpp/libscigui_la-sci_toprint.lo \
        sci_gateway/cpp/libscigui_la-sci_printfigure.lo \
@@ -850,7 +851,8 @@ sci_gateway/c/sci_helpbrowser.c \
 sci_gateway/c/sci_uigetfont.c \
 sci_gateway/c/sci_uigetcolor.c \
 sci_gateway/c/sci_getcallbackobject.c \
-sci_gateway/c/sci_exportUI.c
+sci_gateway/c/sci_exportUI.c \
+sci_gateway/c/sci_figure.c
 
 GATEWAY_CXX_SOURCES = \
 sci_gateway/cpp/sci_printsetupbox.cpp \
@@ -1512,6 +1514,9 @@ sci_gateway/c/libscigui_la-sci_getcallbackobject.lo:  \
 sci_gateway/c/libscigui_la-sci_exportUI.lo:  \
        sci_gateway/c/$(am__dirstamp) \
        sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+sci_gateway/c/libscigui_la-sci_figure.lo:  \
+       sci_gateway/c/$(am__dirstamp) \
+       sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
 sci_gateway/cpp/$(am__dirstamp):
        @$(MKDIR_P) sci_gateway/cpp
        @: > sci_gateway/cpp/$(am__dirstamp)
@@ -1622,6 +1627,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@sci_gateway/c/$(DEPDIR)/libscigui_la-sci_ClipBoard.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@sci_gateway/c/$(DEPDIR)/libscigui_la-sci_delmenu.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@sci_gateway/c/$(DEPDIR)/libscigui_la-sci_exportUI.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@sci_gateway/c/$(DEPDIR)/libscigui_la-sci_figure.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@sci_gateway/c/$(DEPDIR)/libscigui_la-sci_getcallbackobject.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@sci_gateway/c/$(DEPDIR)/libscigui_la-sci_helpbrowser.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@sci_gateway/c/$(DEPDIR)/libscigui_la-sci_messagebox.Plo@am__quote@
@@ -2036,6 +2042,13 @@ sci_gateway/c/libscigui_la-sci_exportUI.lo: sci_gateway/c/sci_exportUI.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigui_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sci_gateway/c/libscigui_la-sci_exportUI.lo `test -f 'sci_gateway/c/sci_exportUI.c' || echo '$(srcdir)/'`sci_gateway/c/sci_exportUI.c
 
+sci_gateway/c/libscigui_la-sci_figure.lo: sci_gateway/c/sci_figure.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigui_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sci_gateway/c/libscigui_la-sci_figure.lo -MD -MP -MF sci_gateway/c/$(DEPDIR)/libscigui_la-sci_figure.Tpo -c -o sci_gateway/c/libscigui_la-sci_figure.lo `test -f 'sci_gateway/c/sci_figure.c' || echo '$(srcdir)/'`sci_gateway/c/sci_figure.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) sci_gateway/c/$(DEPDIR)/libscigui_la-sci_figure.Tpo sci_gateway/c/$(DEPDIR)/libscigui_la-sci_figure.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='sci_gateway/c/sci_figure.c' object='sci_gateway/c/libscigui_la-sci_figure.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigui_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sci_gateway/c/libscigui_la-sci_figure.lo `test -f 'sci_gateway/c/sci_figure.c' || echo '$(srcdir)/'`sci_gateway/c/sci_figure.c
+
 .cpp.o:
 @am__fastdepCXX_TRUE@  $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
 @am__fastdepCXX_TRUE@  $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
index 42c8834..004669f 100755 (executable)
@@ -66,6 +66,7 @@ GUI_IMPEXP int sci_datatip_set_style(char *fname, unsigned long fname_len);
 GUI_IMPEXP int sci_datatip_set_display(char *fname, unsigned long fname_len);
 GUI_IMPEXP int sci_datatip_set_interp(char *fname, unsigned long fname_len);
 GUI_IMPEXP int sci_datatip_set_orient(char *fname, unsigned long fname_len);
+GUI_IMPEXP int sci_figure(char *fname, unsigned long fname_len);
 /*--------------------------------------------------------------------------*/
 #endif /*  __GW_GUI__ */
 /*--------------------------------------------------------------------------*/
similarity index 99%
rename from scilab/modules/gui/macros/figure.sci
rename to scilab/modules/gui/macros/oldfigure.sci
index 8c63299..f771bff 100644 (file)
@@ -8,7 +8,7 @@
 // are also available at
 // http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
 
-function h=figure(varargin)
+function h=oldfigure(varargin)
     // -----------------------------------------------------------
     function h = createOrSetFigure(numOrHandle)
         // Vincent COUVERT - INRIA 2008
index 3c1167b..01ba4df 100755 (executable)
@@ -73,7 +73,8 @@ static gw_generic_table Tab[] =
     {sci_datatip_set_style, "datatipSetStyle"},
     {sci_datatip_set_display, "datatipSetDisplay"},
     {sci_datatip_set_interp, "datatipSetInterp"},
-    {sci_datatip_set_orient, "datatipSetOrientation"}
+    {sci_datatip_set_orient, "datatipSetOrientation"},
+    {sci_figure, "figure"}
 };
 /*--------------------------------------------------------------------------*/
 int gw_gui(void)
@@ -97,7 +98,8 @@ int gw_gui(void)
      */
     if (!loadedDep && (strcmp(Tab[Fin - 1].name, "uicontrol") == 0
                        || strcmp(Tab[Fin - 1].name, "uimenu") == 0
-                       || strcmp(Tab[Fin - 1].name, "usecanvas") == 0))
+                       || strcmp(Tab[Fin - 1].name, "usecanvas") == 0
+                       || strcmp(Tab[Fin - 1].name, "figure") == 0))
     {
         loadOnUseClassPath("graphics");
         loadedDep = TRUE;
diff --git a/scilab/modules/gui/sci_gateway/c/sci_figure.c b/scilab/modules/gui/sci_gateway/c/sci_figure.c
new file mode 100644 (file)
index 0000000..8e0070c
--- /dev/null
@@ -0,0 +1,371 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2014 - Scilab Enterprises - Antoine ELIAS
+ *
+ * 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.1-en.txt
+ *
+ */
+
+#include "gw_gui.h"
+#include "MALLOC.h"
+#include "api_scilab.h"
+#include "localization.h"
+#include "Scierror.h"
+#include "createGraphicObject.h"
+#include "BuildObjects.h"
+#include "setGraphicObjectProperty.h"
+#include "getGraphicObjectProperty.h"
+#include "graphicObjectProperties.h"
+#include "CurrentFigure.h"
+#include "CurrentSubwin.h"
+#include "FigureList.h"
+#include "HandleManagement.h"
+#include "SetHashTable.h"
+#include "stricmp.h"
+#ifdef _MSC_VER
+#include "strdup_windows.h"
+#endif
+
+#include "sciprint.h"
+
+#define COLOR_COMPONENT 3
+/*--------------------------------------------------------------------------*/
+void setDefaultProperties(int _iFig, BOOL _bAlreadyExist);
+int addColor(int _iFig, double* _pdblColor);
+/*--------------------------------------------------------------------------*/
+int sci_figure(char * fname, unsigned long fname_len)
+{
+    SciErr sciErr;
+    int* piAddr = NULL;
+    int iFig = 0;
+    int iRhs = nbInputArgument(pvApiCtx);
+    int iId = 0;
+    int iPos = 0;
+    int i = 0;
+
+
+    //figure(num) -> scf(num)
+    //figure() -> scf()
+
+    //figure(x, "...", ...)
+    // -> f = scf(x);
+    //      set(f, "...", ...);
+
+    if (iRhs % 2 == 0)
+    {
+        int i = 0;
+        int iNewId = -1;
+        int iAxes = 0;
+        int* piAxes = &iAxes;
+
+        //get higher value of winsid to create the new windows @ + 1
+        int nbFigure = sciGetNbFigure();
+
+        if (nbFigure)
+        {
+            int * ids = (int*)MALLOC(nbFigure * sizeof(int));
+
+            if (ids == NULL)
+            {
+                Scierror(999, _("%s: No more memory.\n"), fname);
+                return 0;
+            }
+            sciGetFiguresId(ids);
+
+            //find higher value
+            for (i = 0 ; i < nbFigure ; i++)
+            {
+                if (ids[i] > iNewId)
+                {
+                    iNewId = ids[i];
+                }
+            }
+        }
+
+        //use next value
+        iNewId = iNewId + 1;
+
+        //create a new window with id = iNewId
+        iFig = createNewFigureWithAxes();
+        setGraphicObjectProperty(iFig, __GO_ID__, &iNewId, jni_int, 1);
+        setCurrentFigure(iFig);
+
+        getGraphicObjectProperty(iFig, __GO_SELECTED_CHILD__, jni_int,  (void**)&piAxes);
+        setCurrentSubWin(iAxes);
+
+        //setting up new figure
+        setDefaultProperties(iFig, FALSE);
+    }
+    else
+    {
+        //create or set current figure to x
+
+        int iAxes = 0;
+        int* piAxes = &iAxes;
+        double dblId = 0;
+        //figure(x);
+        sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddr);
+        if (sciErr.iErr)
+        {
+            printError(&sciErr, 0);
+            Scierror(999, _("%s: Can not read input argument #%d.\n"), fname, 1);
+            return 0;
+        }
+
+        if (isVarMatrixType(pvApiCtx, piAddr) == 0)
+        {
+            Scierror(999, _("%s: Wrong type for input argument #%d: An integer value expected.\n"), fname, 1);
+            return 0;
+        }
+
+        if (getScalarDouble(pvApiCtx, piAddr, &dblId))
+        {
+            Scierror(999, _("%s: No more memory.\n"), fname);
+            return 0;
+        }
+
+        iId = (int)(dblId + 0.5); //avoid 1.999 -> 1
+
+        //get current fig from id
+        iFig = getFigureFromIndex(iId);
+        if (iFig == 0)
+        {
+            // No Figure available with this index, should create it  !!
+            iFig = createNewFigureWithAxes();
+            setGraphicObjectProperty(iFig, __GO_ID__, &iId, jni_int, 1);
+        }
+
+        setCurrentFigure(iFig);
+        getGraphicObjectProperty(iFig, __GO_SELECTED_CHILD__, jni_int,  (void**)&piAxes);
+        setCurrentSubWin(iAxes);
+
+        //setting up new figure
+        setDefaultProperties(iFig, FALSE);
+
+        iPos = 1;
+    }
+
+    if (iRhs > 1)
+    {
+        //set(iFig, iPos, iPos + 1)
+        for (i = iPos + 1 ; i <= iRhs ; i += 2)
+        {
+            int isMatrixOfString = 0;
+            int* piAddrProp = NULL;
+            char* pstProName = NULL;
+            int* piAddrData = NULL;
+            int iRows = 0;
+            int iCols = 0;
+            void* _pvData = NULL;
+            int iType = 0;
+
+            //get property name
+            sciErr = getVarAddressFromPosition(pvApiCtx, i, &piAddrProp);
+            if (sciErr.iErr)
+            {
+                Scierror(999, _("%s: Can not read input argument #%d.\n"), fname, i);
+                return 1;
+            }
+
+            if (getAllocatedSingleString(pvApiCtx, piAddrProp, &pstProName))
+            {
+                Scierror(999, _("%s: Wrong size for input argument #%d: A single string expected.\n"), fname, i);
+                return 1;
+            }
+
+            //check property value to compatibility
+            if (stricmp(pstProName, "backgroundcolor") == 0)
+            {
+                freeAllocatedSingleString(pstProName);
+                pstProName = strdup("background");
+            }
+            else if (stricmp(pstProName, "foregroundcolor") == 0)
+            {
+                freeAllocatedSingleString(pstProName);
+                pstProName = strdup("foreground");
+            }
+
+            //get address of value on stack
+            sciErr = getVarAddressFromPosition(pvApiCtx, i + 1, &piAddrData);
+            if (sciErr.iErr)
+            {
+                Scierror(999, _("%s: Can not read input argument #%d.\n"), fname, i + 1);
+                return 1;
+            }
+
+            getVarType(pvApiCtx, piAddrData, &iType);
+
+            if ((strcmp(pstProName, "user_data") == 0) || (stricmp(pstProName, "userdata") == 0))
+            {
+                /* in this case set_user_data_property
+                * directly uses the  third position in the stack
+                * to get the variable which is to be set in
+                * the user_data property (any data type is allowed) S. Steer */
+                _pvData = (void*)piAddrData;         /*position in the stack */
+                iRows = -1;   /*unused */
+                iCols = -1;   /*unused */
+                iType = -1;
+            }
+            else
+            {
+                switch (iType)
+                {
+                    case sci_matrix :
+                        getMatrixOfDouble(pvApiCtx, piAddrData, &iRows, &iCols, (double**)&_pvData);
+                        break;
+                    case sci_boolean :
+                        getMatrixOfBoolean(pvApiCtx, piAddrData, &iRows, &iCols, (int**)&_pvData);
+                        break;
+                    case sci_handles :
+                        getMatrixOfHandle(pvApiCtx, piAddrData, &iRows, &iCols, (long long**)&_pvData);
+                        break;
+                    case sci_strings :
+                        if (   strcmp(pstProName, "tics_labels") != 0 && strcmp(pstProName, "auto_ticks") != 0 &&
+                                strcmp(pstProName, "axes_visible") != 0 && strcmp(pstProName, "axes_reverse") != 0 &&
+                                strcmp(pstProName, "text") != 0 && stricmp(pstProName, "string") != 0 &&
+                                stricmp(pstProName, "tooltipstring") != 0) /* Added for uicontrols */
+                        {
+                            if (getAllocatedSingleString(pvApiCtx, piAddrData, (char**)&_pvData))
+                            {
+                                Scierror(999, _("%s: Wrong size for input argument #%d: A single string expected.\n"), fname, 3);
+                                return 1;
+                            }
+                            iRows = (int)strlen((char*)_pvData);
+                            iCols = 1;
+                        }
+                        else
+                        {
+                            isMatrixOfString = 1;
+                            getAllocatedMatrixOfString(pvApiCtx, piAddrData, &iRows, &iCols, (char***)&_pvData);
+                        }
+                        break;
+                    case sci_list :
+                        iCols = 1;
+                        getListItemNumber(pvApiCtx, piAddrData, &iRows);
+                        _pvData = (void*)piAddrData;         /* In this case l3 is the list position in stack */
+                        break;
+                    default :
+                        _pvData = (void*)piAddrData;         /* In this case l3 is the list position in stack */
+                        break;
+                }
+
+                callSetProperty(pvApiCtx, iFig, _pvData, iType, iRows, iCols, pstProName);
+                if (iType == sci_strings)
+                {
+                    //free allacted data
+                    if (isMatrixOfString == 1)
+                    {
+                        freeAllocatedMatrixOfString(iRows, iCols, (char**)_pvData);
+                    }
+                    else
+                    {
+                        freeAllocatedSingleString((char*)_pvData);
+                    }
+                }
+            }
+        }
+    }
+
+    //return new created fig
+    createScalarHandle(pvApiCtx, iRhs + 1, getHandle(iFig));
+    AssignOutputVariable(pvApiCtx, 1) = iRhs + 1;
+    ReturnArguments(pvApiCtx);
+    return 0;
+}
+/*--------------------------------------------------------------------------*/
+void setDefaultProperties(int _iFig, BOOL _bAlreadyExist)
+{
+    //get figure axes
+    int iAxes = getOrCreateDefaultSubwin();
+    int iDrawing = 0;
+    int iColorIndex = 0;
+    int iFilled = 0;
+    int iAxesVisible = 0;
+
+    setGraphicObjectProperty(_iFig, __GO_IMMEDIATE_DRAWING__, &iDrawing, jni_bool, 1);
+
+    if (_bAlreadyExist == FALSE)
+    {
+        double pdblNewColor[COLOR_COMPONENT] = {0.8, 0.8, 0.8};
+        iColorIndex = addColor(_iFig, pdblNewColor);
+
+        //set background in figure and axes to new ( or existting ) color
+        setGraphicObjectProperty(_iFig, __GO_BACKGROUND__, &iColorIndex, jni_int, 1);
+        setGraphicObjectProperty(iAxes, __GO_BACKGROUND__, &iColorIndex, jni_int, 1);
+    }
+
+    //a.filled = "off"
+    setGraphicObjectProperty(iAxes, __GO_FILLED__, &iFilled, jni_bool, 1);
+
+    //a.axes_visible = "off"
+    setGraphicObjectProperty(iAxes, __GO_X_AXIS_VISIBLE__, &iAxesVisible, jni_bool, 1);
+    setGraphicObjectProperty(iAxes, __GO_Y_AXIS_VISIBLE__, &iAxesVisible, jni_bool, 1);
+    setGraphicObjectProperty(iAxes, __GO_Z_AXIS_VISIBLE__, &iAxesVisible, jni_bool, 1);
+
+    //f.immediate_drawing = "on"
+    iDrawing = 1;
+    setGraphicObjectProperty(_iFig, __GO_IMMEDIATE_DRAWING__, &iDrawing, jni_bool, 1);
+}
+/*--------------------------------------------------------------------------*/
+int addColor(int _iFig, double* _pdblNewColor)
+{
+    int iColorIndex = 0;
+    int i = 0, j = 0;
+    int iColorMapSize = 0;
+    int* piColorMapSize = &iColorMapSize;
+    double* pdblColorMap = NULL;
+    //for new figure, we have to set figure and axes background to [0.8 0.8 0.8]
+    //to do that, we have to update figure.colormap to add new color if not exist.
+    //or get index of color in current color_map
+
+    //first get figure.color_map
+    getGraphicObjectProperty(_iFig, __GO_COLORMAP_SIZE__, jni_int, (void**)&piColorMapSize);
+    getGraphicObjectProperty(_iFig, __GO_COLORMAP__, jni_double_vector, (void **)&pdblColorMap);
+
+    //check if newColor already in coloMap
+    for (i = 0 ; i < iColorMapSize ; i++)
+    {
+        BOOL bFound = TRUE;
+        double* pdblCurrentColor = pdblColorMap + i;
+        for (j = 0 ; j < COLOR_COMPONENT ; j++)
+        {
+            if (*(pdblCurrentColor + j * iColorMapSize) != _pdblNewColor[j])
+            {
+                bFound = FALSE;
+                break;
+            }
+        }
+
+        if (bFound)
+        {
+            iColorIndex = i + 1;
+            break;
+        }
+    }
+
+    //not found in current color map
+    if (iColorIndex == 0)
+    {
+        int iNewColorMapSize = (iColorMapSize + 1) * COLOR_COMPONENT;
+        double* pdblNewColorMap = (double*)MALLOC(sizeof(double) * iNewColorMapSize);
+        //we have to add the new color at the end of the current color map
+        for (i = 0 ; i < COLOR_COMPONENT ; i++)
+        {
+            memcpy(pdblNewColorMap + i * (iColorMapSize + 1),
+                   pdblColorMap + (i * iColorMapSize),
+                   iColorMapSize * sizeof(double));
+
+            pdblNewColorMap[i * (iColorMapSize + 1) + iColorMapSize] = _pdblNewColor[i];
+        }
+
+        setGraphicObjectProperty(_iFig, __GO_COLORMAP__, pdblNewColorMap, jni_double_vector, iNewColorMapSize);
+
+        iColorIndex = iColorMapSize + 1;
+    }
+    return iColorIndex;
+}
+/*--------------------------------------------------------------------------*/
index 027f560..d8dd2df 100644 (file)
@@ -80,4 +80,5 @@
     <PRIMITIVE gatewayId="25" primitiveId="47" primitiveName="datatipSetDisplay" />
     <PRIMITIVE gatewayId="25" primitiveId="48" primitiveName="datatipSetInterp" />
     <PRIMITIVE gatewayId="25" primitiveId="49" primitiveName="datatipSetOrientation" />
+    <PRIMITIVE gatewayId="25" primitiveId="50" primitiveName="figure"/>
 </GATEWAY>
index 5daf8ec..6d92dfa 100755 (executable)
     <ClCompile Include="..\..\sci_gateway\c\sci_x_mdialog.c" />
     <ClCompile Include="..\jni\ScilabDisplayTree.cpp" />
     <ClCompile Include="ScilabTermination.c" />
+    <ClCompile Include="..\..\sci_gateway\c\sci_figure.c" />
     <ClCompile Include="setMainWindowTitle.c" />
     <ClCompile Include="..\cpp\SetUicontrolBackgroundColor.cpp" />
     <ClCompile Include="..\cpp\SetUicontrolFontAngle.cpp" />
index ebbf8ce..f1a1f50 100755 (executable)
     <ClCompile Include="..\jni\DatatipOrientation.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
+    <ClCompile Include="..\..\sci_gateway\c\sci_figure.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
   </ItemGroup>
   <ItemGroup>
     <None Include="core_import.def">