Fix xget function : all properties (except auto clear mapped) 11/5811/1
Bruno JOFRET [Wed, 4 Jan 2012 12:33:52 +0000 (13:33 +0100)]
- returning string on/off instead of 0/1
- static allocation int p[x] cannot go through MVC
- background and foreground mapped to real values.

Change-Id: I6ce624b6708b309c695c73569faafd371af7be1e

scilab/modules/graphics/sci_gateway/c/sci_xget.c
scilab/modules/graphics/tests/unit_tests/xset_xget.tst

index 8478653..61f6988 100644 (file)
@@ -17,6 +17,8 @@
 /* desc : interface for xset routine                                      */
 /*------------------------------------------------------------------------*/
 
+#include <stdio.h>
+
 #include "api_common.h"
 #include "api_double.h"
 
@@ -121,7 +123,7 @@ int sci_xget(char *fname,unsigned long fname_len)
         pdblResult[0] = iMarkStyle;
         pdblResult[1] = iMarkSize;
 
-        createMatrixOfDouble(pvApiCtx, Lhs + 1, 1, 2, pdblResult);
+        createMatrixOfDouble(pvApiCtx, Rhs + 1, 1, 2, pdblResult);
         LhsVar(1) = Rhs + 1;
         PutLhsVar();
 
@@ -152,7 +154,7 @@ int sci_xget(char *fname,unsigned long fname_len)
 
         getGraphicObjectProperty(pobjUID, __GO_CLIP_BOX__, jni_double_vector, &clipBox);
 
-        createMatrixOfDouble(pvApiCtx, Lhs + 1, 1, 4, clipBox);
+        createMatrixOfDouble(pvApiCtx, Rhs + 1, 1, 4, clipBox);
         LhsVar(1) = Rhs + 1;
         PutLhsVar();
         return 0;
@@ -173,7 +175,7 @@ int sci_xget(char *fname,unsigned long fname_len)
         pdblResult[1] = dblFontSize;
 
 
-        createMatrixOfDouble(pvApiCtx, Lhs + 1, 1, 2, pdblResult);
+        createMatrixOfDouble(pvApiCtx, Rhs + 1, 1, 2, pdblResult);
         LhsVar(1) = Rhs + 1;
         PutLhsVar();
         return 0;
@@ -235,15 +237,15 @@ int sci_xget(char *fname,unsigned long fname_len)
     }
     else if(strcmp(cstk(l1),"wdim") == 0 || strcmp(cstk(l1),"wpdim") == 0)
     {
-        int piFigureSize[2];
+        int *piFigureSize;
         double pdblFigureSize[2];
 
         getOrCreateDefaultSubwin();
         getGraphicObjectProperty(getCurrentFigure(), __GO_SIZE__, jni_int_vector, (void **) &piFigureSize);
-        pdblFigureSize[0] = piFigureSize[0];
-        pdblFigureSize[1] = piFigureSize[1];
+        pdblFigureSize[0] = (double) piFigureSize[0];
+        pdblFigureSize[1] = (double) piFigureSize[1];
 
-        createMatrixOfDouble(pvApiCtx, Lhs + 1, 1, 2, pdblFigureSize);
+        createMatrixOfDouble(pvApiCtx, Rhs + 1, 1, 2, pdblFigureSize);
         LhsVar(1) = Rhs + 1;
         PutLhsVar();
 
@@ -251,7 +253,7 @@ int sci_xget(char *fname,unsigned long fname_len)
     }
     else if(strcmp(cstk(l1),"wpos") == 0)
     {
-        int piFigurePosition[2];
+        int *piFigurePosition;
         double pdblFigurePosition[2];
 
         getOrCreateDefaultSubwin();
@@ -259,7 +261,7 @@ int sci_xget(char *fname,unsigned long fname_len)
         pdblFigurePosition[0] = piFigurePosition[0];
         pdblFigurePosition[1] = piFigurePosition[1];
 
-        createMatrixOfDouble(pvApiCtx, Lhs + 1, 1, 2, pdblFigurePosition);
+        createMatrixOfDouble(pvApiCtx, Rhs + 1, 1, 2, pdblFigurePosition);
         LhsVar(1) = Rhs + 1;
         PutLhsVar();
 
@@ -275,7 +277,7 @@ int sci_xget(char *fname,unsigned long fname_len)
         pdblViewport[0] = viewport[0];
         pdblViewport[1] = viewport[1];
 
-        createMatrixOfDouble(pvApiCtx, Lhs + 1, 1, 2, pdblViewport);
+        createMatrixOfDouble(pvApiCtx, Rhs + 1, 1, 2, pdblViewport);
         LhsVar(1) = Rhs + 1;
         PutLhsVar();
 
@@ -332,9 +334,13 @@ int sci_xget(char *fname,unsigned long fname_len)
     }
     else if(strcmp(cstk(l1),"pixmap") == 0)
     {
+        int iPixmap = 0;
+        int *piPixmap = &iPixmap;
+
         getOrCreateDefaultSubwin();
-        get_pixmap_property(getCurrentFigure());
+        getGraphicObjectProperty(getCurrentFigure(), __GO_PIXMAP__, jni_bool, &piPixmap);
 
+        createScalarDouble(pvApiCtx, Rhs + 1, iPixmap);
         LhsVar(1) = Rhs + 1;
         PutLhsVar();
 
@@ -359,8 +365,13 @@ int sci_xget(char *fname,unsigned long fname_len)
     else if(strcmp(cstk(l1),"wresize") == 0)
     {
         // autoresize property
+        int iAutoResize = 0;
+        int* piAutoResize =  &iAutoResize;
+
         getOrCreateDefaultSubwin();
-        get_auto_resize_property(getCurrentFigure());
+        getGraphicObjectProperty(getCurrentFigure(), __GO_AUTORESIZE__, jni_bool, &piAutoResize);
+
+        createScalarDouble(pvApiCtx, Rhs + 1, iAutoResize);
 
         LhsVar(1) = Rhs + 1;
         PutLhsVar();
index 41dd1d0..41dbdc5 100644 (file)
@@ -16,11 +16,6 @@ xset("colormap", c_map);
 out = xget("colormap");
 assert_checkequal(out, c_map);
 
-// clipping => clip_box + clip_state
-xset("clipping", 1,2,3,4);
-out = xget("clipping");
-assert_checkequal(out, [1,2,3,4]);
-
 // mark size
 xset("mark size", 456);
 out = xget("mark size");
@@ -46,3 +41,92 @@ assert_checkequal(out, [8 2]);
 // font size
 out = xget("font size");
 assert_checkequal(out, 2);
+
+// fpf
+out = xget("fpf");
+assert_checkequal(out, "");
+
+// auto clear
+//out = xget("auto clear");
+//assert_checkequal(out, "off");
+
+// dashes
+out = xget("dashes");
+assert_checkequal(out, 8);
+
+// hidden3d
+out = xget("hidden3d");
+assert_checkequal(out, 4);
+
+
+
+// window figure
+f = gcf();
+
+out = xget("window");
+assert_checkequal(out, f.figure_id);
+out = xget("figure");
+assert_checkequal(out, f.figure_id);
+
+// thickness
+out = xget("thickness");
+assert_checkequal(out, 1);
+
+// wdim wpdim
+out = xget("wdim");
+assert_checkequal(out, f.position([3, 4]));
+out = xget("wpdim");
+assert_checkequal(out, f.position([3, 4]));
+
+// wpos
+out = xget("wpos");
+assert_checkequal(out, f.position([1, 2]));
+
+// viewport
+out = xget("viewport");
+assert_checkequal(out, f.viewport);
+
+// background
+out = xget("background");
+assert_checkequal(out, -2);
+
+// color foreground pattern
+out = xget("color");
+assert_checkequal(out, -1);
+out = xget("foreground");
+assert_checkequal(out, -1);
+out = xget("pattern");
+assert_checkequal(out, -1);
+
+// lastpattern
+out = xget("lastpattern");
+assert_checkequal(out, 512);
+
+// line mode
+out = xget("line mode");
+assert_checkequal(out, 1);
+
+// pixmap
+out = xget("pixmap");
+assert_checkequal(out, 0);
+
+// white
+out = xget("white");
+assert_checkequal(out, 514);
+
+// wresize
+out = xget("wresize");
+assert_checkequal(out, 1);
+
+// clipgrf
+out = xget("clipgrf");
+assert_checkequal(out, 0);
+
+// clipoff
+out = xget("clipoff");
+assert_checkequal(out, 1);
+
+// clipping => clip_box + clip_state
+xset("clipping", 1,2,3,4);
+out = xget("clipping");
+assert_checkequal(out, [1,2,3,4]);
\ No newline at end of file