include new surface properties from light in save function 64/12664/2
Antoine ELIAS [Wed, 25 Sep 2013 15:00:43 +0000 (17:00 +0200)]
Change-Id: I2fb59f8ec53ce381a7c071728b29e66fed1ad6dc

scilab/modules/io/macros/%_save.sci
scilab/modules/io/macros/%_sodload.sci
scilab/modules/io/tests/unit_tests/saveload.dia.ref
scilab/modules/io/tests/unit_tests/saveload.tst

index b40704d..ad209de 100644 (file)
@@ -400,7 +400,11 @@ function [] = %_save(%__filename__, varargin)
         "color_flag", ...
         "data", ...
         "color_flag", ...
+        "ambient_color", ...
+        "diffuse_color", ...
+        "specular_color", ...
         "use_color_material", ...
+        "material_shininess", ...
         "hiddencolor", ...
         "clip_state", ...
         "clip_box", ...
index 25ee5e1..2e5db4f 100644 (file)
 
 function %_sodload(%__filename__, varargin)
 
+    function v = getScilabFileVersion(%__filename__)
+        verStr = h5readattr(%__filename__, "/", "SCILAB_scilab_version")
+        [a,b,c,d] = regexp(verStr, "/scilab-.*(\d)\.(\d)\.(\d)/");
+        if size(d, "*") == 3 then
+            v = evstr(d(1)) * 100 + evstr(d(2)) * 10 + evstr(d(3));
+        else
+            error("unable to find file version: %s", __filename__);
+        end
+    endfunction
+
     function [varValues] = %__convertVariable__(varValues, varNames)
         for i = 1:size(varValues)
             if typeof(varValues(i)) == "ScilabMatrixHandle" then
@@ -602,7 +612,7 @@ function %_sodload(%__filename__, varargin)
         fields(fields=="data") = [];
 
         h = gce();
-
+        
         if matplotProperties.clip_state=="on" then
             set(h, "clip_box", matplotProperties.clip_box)
         end
@@ -877,6 +887,7 @@ function %_sodload(%__filename__, varargin)
 
     if isfile(%__filename__) & is_hdf5_file(%__filename__) then
         %__loadFunction__ = import_from_hdf5;
+        fileVersion = getScilabFileVersion(%__filename__);
     else
         %__loadFunction__ = %_load;
     end
index 2145a80..42a28c3 100644 (file)
@@ -5,6 +5,9 @@
 //
 //  This file is distributed under the same license as the Scilab package.
 // =============================================================================
+//
+// <-- TEST WITH GRAPHIC -->
+//
 funcprot(0);
 function r = Check(a,b,c,d)
     [lhs,rhs] = argn();
@@ -163,3 +166,23 @@ clear toto;
 load(TMPDIR + "/savemacro.sod");
 assert_checkequal(toto(3*5, 9*3), ref);
 assert_checkequal(type(toto), 11);
+//create plot3d with light
+plot3d();
+l = light();
+f = gcf();
+l.position = [-1, -2, 1];
+//save image in a file
+xs2png(f, TMPDIR + "/saveplot.png");
+//compute md5 of saved image
+md5_1 = getmd5(TMPDIR + "/saveplot.png");
+//save figure handle in sod format
+save(TMPDIR + "/saveplot.sod", "f");
+//clear env
+close();
+clear f l;
+load(TMPDIR + "/saveplot.sod");
+l = f.children(1).children(1);
+assert_checkequal(l.position, [-1, -2, 1]);
+xs2png(f, TMPDIR + "/saveplot2.png");
+md5_2 = getmd5(TMPDIR + "/saveplot2.png");
+assert_checkequal(md5_1, md5_2);
index fdb113a..015da8b 100644 (file)
@@ -5,6 +5,9 @@
 //
 //  This file is distributed under the same license as the Scilab package.
 // =============================================================================
+//
+// <-- TEST WITH GRAPHIC -->
+//
 
 funcprot(0);
 
@@ -192,3 +195,30 @@ load(TMPDIR + "/savemacro.sod");
 assert_checkequal(toto(3*5, 9*3), ref);
 assert_checkequal(type(toto), 11);
 
+
+//create plot3d with light
+plot3d();
+l = light();
+f = gcf();
+l.position = [-1, -2, 1];
+
+//save image in a file
+xs2png(f, TMPDIR + "/saveplot.png");
+//compute md5 of saved image
+md5_1 = getmd5(TMPDIR + "/saveplot.png");
+//save figure handle in sod format
+save(TMPDIR + "/saveplot.sod", "f");
+
+//clear env
+close();
+clear f l;
+
+load(TMPDIR + "/saveplot.sod");
+l = f.children(1).children(1);
+assert_checkequal(l.position, [-1, -2, 1]);
+xs2png(f, TMPDIR + "/saveplot2.png");
+md5_2 = getmd5(TMPDIR + "/saveplot2.png");
+assert_checkequal(md5_1, md5_2);
+
+
+