Graphics: extends fec to be able to manage polygons with three or more vertices 33/16133/5
Calixte DENIZET [Tue, 10 Mar 2015 15:14:38 +0000 (16:14 +0100)]
Change-Id: I64838a7666926c8188c9c37160f698d78cd442f3

44 files changed:
scilab/CHANGES_5.5.X
scilab/modules/graphic_objects/Makefile.am
scilab/modules/graphic_objects/Makefile.in
scilab/modules/graphic_objects/includes/DataModel.hxx
scilab/modules/graphic_objects/includes/DataProperties.hxx
scilab/modules/graphic_objects/includes/DecompositionUtils.hxx
scilab/modules/graphic_objects/includes/MeshData.hxx [moved from scilab/modules/graphic_objects/includes/TriangleMeshData.hxx with 85% similarity]
scilab/modules/graphic_objects/includes/MeshFecData.hxx [moved from scilab/modules/graphic_objects/includes/TriangleMeshFecData.hxx with 82% similarity]
scilab/modules/graphic_objects/includes/MeshFecDataDecomposer.hxx [moved from scilab/modules/graphic_objects/includes/TriangleMeshFecDataDecomposer.hxx with 82% similarity]
scilab/modules/graphic_objects/includes/graphicObjectProperties.h
scilab/modules/graphic_objects/src/c/graphic_objects.vcxproj
scilab/modules/graphic_objects/src/c/graphic_objects.vcxproj.filters
scilab/modules/graphic_objects/src/cpp/DataLoader.cpp
scilab/modules/graphic_objects/src/cpp/DecompositionUtils.cpp
scilab/modules/graphic_objects/src/cpp/MeshData.cpp [moved from scilab/modules/graphic_objects/src/cpp/TriangleMeshData.cpp with 72% similarity]
scilab/modules/graphic_objects/src/cpp/MeshFecData.cpp [new file with mode: 0644]
scilab/modules/graphic_objects/src/cpp/MeshFecDataDecomposer.cpp [moved from scilab/modules/graphic_objects/src/cpp/TriangleMeshFecDataDecomposer.cpp with 77% similarity]
scilab/modules/graphic_objects/src/cpp/TriangleMeshFecData.cpp [deleted file]
scilab/modules/graphic_objects/src/cpp/dataModel.cpp
scilab/modules/graphic_objects/src/cpp/getGraphicObjectProperty.cpp
scilab/modules/graphic_objects/src/cpp/setGraphicObjectProperty.cpp
scilab/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/ObjectData.java
scilab/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/ObjectDataJNI.java
scilab/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/graphicObject/GraphicObjectProperties.java
scilab/modules/graphic_objects/src/jni/ObjectData.i
scilab/modules/graphic_objects/src/jni/ObjectData_wrap.c
scilab/modules/graphic_objects/src/scripts/propertiesMap.properties
scilab/modules/graphics/help/en_US/2d_plot/fec.xml
scilab/modules/graphics/help/en_US/2d_plot/fec_properties.xml
scilab/modules/graphics/help/fr_FR/2d_plot/fec.xml
scilab/modules/graphics/includes/BuildObjects.h
scilab/modules/graphics/includes/sciCall.h
scilab/modules/graphics/sci_gateway/c/sci_fec.c
scilab/modules/graphics/src/c/BuildObjects.c
scilab/modules/graphics/src/c/FeC.c
scilab/modules/graphics/src/c/Fec.h
scilab/modules/graphics/src/c/getHandleProperty/get_triangles_property.c
scilab/modules/graphics/src/c/getHandleProperty/set_triangles_property.c
scilab/modules/graphics/src/c/sciCall.c
scilab/modules/graphics/tests/unit_tests/fec.dia.ref [new file with mode: 0644]
scilab/modules/graphics/tests/unit_tests/fec.tst [new file with mode: 0644]
scilab/modules/gui/src/java/org/scilab/modules/gui/editor/GEDPicker.java
scilab/modules/helptools/etc/images_md5.txt
scilab/modules/helptools/images/fec_5.png [new file with mode: 0644]

index 4906162..401233a 100644 (file)
@@ -31,6 +31,12 @@ Compilation
 * Required version of JOGL updated to 2.2.4 (See bugs #12788 & #13586).
 
 
+Graphics Evolutions
+===================
+
+* fec function can now plot meshes based on any convex polygon type (not only triangles).
+
+
 Scilab Bug Fixes
 ================
 
index 1676bd4..26010b1 100644 (file)
@@ -52,8 +52,8 @@ GRAPHIC_OBJECTS_CXX_SOURCES =         src/cpp/createGraphicObject.cpp \
                                                                src/cpp/NgonGridData.cpp \
                                                                src/cpp/NgonGridMatplotData.cpp \
                                                                src/cpp/NgonPolylineData.cpp \
-                                                               src/cpp/TriangleMeshData.cpp \
-                                                               src/cpp/TriangleMeshFecData.cpp \
+                                                               src/cpp/MeshData.cpp \
+                                                               src/cpp/MeshFecData.cpp \
                                                                src/cpp/ColorComputer.cpp \
                                                                src/cpp/DecompositionUtils.cpp \
                                                                src/cpp/Fac3DColorComputer.cpp \
@@ -64,7 +64,7 @@ GRAPHIC_OBJECTS_CXX_SOURCES =         src/cpp/createGraphicObject.cpp \
                                                                src/cpp/NgonGridMatplotDataDecomposer.cpp \
                                                                src/cpp/Plot3DDecomposer.cpp \
                                                                src/cpp/PolylineDecomposer.cpp \
-                                                               src/cpp/TriangleMeshFecDataDecomposer.cpp \
+                                                               src/cpp/MeshFecDataDecomposer.cpp \
                                                                src/cpp/Triangulator.cpp \
                                                                src/cpp/ScilabView.cpp \
                                                                src/cpp/FigureList.cpp \
index 7ef4656..e43838e 100644 (file)
@@ -207,8 +207,8 @@ am__objects_4 =  \
        src/cpp/libscigraphic_objects_la-NgonGridData.lo \
        src/cpp/libscigraphic_objects_la-NgonGridMatplotData.lo \
        src/cpp/libscigraphic_objects_la-NgonPolylineData.lo \
-       src/cpp/libscigraphic_objects_la-TriangleMeshData.lo \
-       src/cpp/libscigraphic_objects_la-TriangleMeshFecData.lo \
+       src/cpp/libscigraphic_objects_la-MeshData.lo \
+       src/cpp/libscigraphic_objects_la-MeshFecData.lo \
        src/cpp/libscigraphic_objects_la-ColorComputer.lo \
        src/cpp/libscigraphic_objects_la-DecompositionUtils.lo \
        src/cpp/libscigraphic_objects_la-Fac3DColorComputer.lo \
@@ -219,7 +219,7 @@ am__objects_4 =  \
        src/cpp/libscigraphic_objects_la-NgonGridMatplotDataDecomposer.lo \
        src/cpp/libscigraphic_objects_la-Plot3DDecomposer.lo \
        src/cpp/libscigraphic_objects_la-PolylineDecomposer.lo \
-       src/cpp/libscigraphic_objects_la-TriangleMeshFecDataDecomposer.lo \
+       src/cpp/libscigraphic_objects_la-MeshFecDataDecomposer.lo \
        src/cpp/libscigraphic_objects_la-Triangulator.lo \
        src/cpp/libscigraphic_objects_la-ScilabView.lo \
        src/cpp/libscigraphic_objects_la-FigureList.lo \
@@ -715,8 +715,8 @@ GRAPHIC_OBJECTS_CXX_SOURCES = src/cpp/createGraphicObject.cpp \
                                                                src/cpp/NgonGridData.cpp \
                                                                src/cpp/NgonGridMatplotData.cpp \
                                                                src/cpp/NgonPolylineData.cpp \
-                                                               src/cpp/TriangleMeshData.cpp \
-                                                               src/cpp/TriangleMeshFecData.cpp \
+                                                               src/cpp/MeshData.cpp \
+                                                               src/cpp/MeshFecData.cpp \
                                                                src/cpp/ColorComputer.cpp \
                                                                src/cpp/DecompositionUtils.cpp \
                                                                src/cpp/Fac3DColorComputer.cpp \
@@ -727,7 +727,7 @@ GRAPHIC_OBJECTS_CXX_SOURCES = src/cpp/createGraphicObject.cpp \
                                                                src/cpp/NgonGridMatplotDataDecomposer.cpp \
                                                                src/cpp/Plot3DDecomposer.cpp \
                                                                src/cpp/PolylineDecomposer.cpp \
-                                                               src/cpp/TriangleMeshFecDataDecomposer.cpp \
+                                                               src/cpp/MeshFecDataDecomposer.cpp \
                                                                src/cpp/Triangulator.cpp \
                                                                src/cpp/ScilabView.cpp \
                                                                src/cpp/FigureList.cpp \
@@ -924,9 +924,9 @@ src/cpp/libscigraphic_objects_la-NgonGridMatplotData.lo:  \
        src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
 src/cpp/libscigraphic_objects_la-NgonPolylineData.lo:  \
        src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
-src/cpp/libscigraphic_objects_la-TriangleMeshData.lo:  \
-       src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
-src/cpp/libscigraphic_objects_la-TriangleMeshFecData.lo:  \
+src/cpp/libscigraphic_objects_la-MeshData.lo: src/cpp/$(am__dirstamp) \
+       src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscigraphic_objects_la-MeshFecData.lo:  \
        src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
 src/cpp/libscigraphic_objects_la-ColorComputer.lo:  \
        src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
@@ -948,7 +948,7 @@ src/cpp/libscigraphic_objects_la-Plot3DDecomposer.lo:  \
        src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
 src/cpp/libscigraphic_objects_la-PolylineDecomposer.lo:  \
        src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
-src/cpp/libscigraphic_objects_la-TriangleMeshFecDataDecomposer.lo:  \
+src/cpp/libscigraphic_objects_la-MeshFecDataDecomposer.lo:  \
        src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
 src/cpp/libscigraphic_objects_la-Triangulator.lo:  \
        src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
@@ -1006,6 +1006,9 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscigraphic_objects_la-FigureModel.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscigraphic_objects_la-HandleManagement.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscigraphic_objects_la-MatPlotDecomposer.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscigraphic_objects_la-MeshData.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscigraphic_objects_la-MeshFecData.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscigraphic_objects_la-MeshFecDataDecomposer.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscigraphic_objects_la-NgonData.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscigraphic_objects_la-NgonGeneralData.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscigraphic_objects_la-NgonGridData.Plo@am__quote@
@@ -1019,9 +1022,6 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscigraphic_objects_la-PolylineDecomposer.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscigraphic_objects_la-ScilabView.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscigraphic_objects_la-Texture.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscigraphic_objects_la-TriangleMeshData.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscigraphic_objects_la-TriangleMeshFecData.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscigraphic_objects_la-TriangleMeshFecDataDecomposer.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscigraphic_objects_la-Triangulator.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscigraphic_objects_la-createGraphicObject.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscigraphic_objects_la-createObjectData.Plo@am__quote@
@@ -1243,19 +1243,19 @@ src/cpp/libscigraphic_objects_la-NgonPolylineData.lo: src/cpp/NgonPolylineData.c
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscigraphic_objects_la-NgonPolylineData.lo `test -f 'src/cpp/NgonPolylineData.cpp' || echo '$(srcdir)/'`src/cpp/NgonPolylineData.cpp
 
-src/cpp/libscigraphic_objects_la-TriangleMeshData.lo: src/cpp/TriangleMeshData.cpp
-@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscigraphic_objects_la-TriangleMeshData.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscigraphic_objects_la-TriangleMeshData.Tpo -c -o src/cpp/libscigraphic_objects_la-TriangleMeshData.lo `test -f 'src/cpp/TriangleMeshData.cpp' || echo '$(srcdir)/'`src/cpp/TriangleMeshData.cpp
-@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscigraphic_objects_la-TriangleMeshData.Tpo src/cpp/$(DEPDIR)/libscigraphic_objects_la-TriangleMeshData.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/cpp/TriangleMeshData.cpp' object='src/cpp/libscigraphic_objects_la-TriangleMeshData.lo' libtool=yes @AMDEPBACKSLASH@
+src/cpp/libscigraphic_objects_la-MeshData.lo: src/cpp/MeshData.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscigraphic_objects_la-MeshData.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscigraphic_objects_la-MeshData.Tpo -c -o src/cpp/libscigraphic_objects_la-MeshData.lo `test -f 'src/cpp/MeshData.cpp' || echo '$(srcdir)/'`src/cpp/MeshData.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscigraphic_objects_la-MeshData.Tpo src/cpp/$(DEPDIR)/libscigraphic_objects_la-MeshData.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/cpp/MeshData.cpp' object='src/cpp/libscigraphic_objects_la-MeshData.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscigraphic_objects_la-TriangleMeshData.lo `test -f 'src/cpp/TriangleMeshData.cpp' || echo '$(srcdir)/'`src/cpp/TriangleMeshData.cpp
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscigraphic_objects_la-MeshData.lo `test -f 'src/cpp/MeshData.cpp' || echo '$(srcdir)/'`src/cpp/MeshData.cpp
 
-src/cpp/libscigraphic_objects_la-TriangleMeshFecData.lo: src/cpp/TriangleMeshFecData.cpp
-@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscigraphic_objects_la-TriangleMeshFecData.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscigraphic_objects_la-TriangleMeshFecData.Tpo -c -o src/cpp/libscigraphic_objects_la-TriangleMeshFecData.lo `test -f 'src/cpp/TriangleMeshFecData.cpp' || echo '$(srcdir)/'`src/cpp/TriangleMeshFecData.cpp
-@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscigraphic_objects_la-TriangleMeshFecData.Tpo src/cpp/$(DEPDIR)/libscigraphic_objects_la-TriangleMeshFecData.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/cpp/TriangleMeshFecData.cpp' object='src/cpp/libscigraphic_objects_la-TriangleMeshFecData.lo' libtool=yes @AMDEPBACKSLASH@
+src/cpp/libscigraphic_objects_la-MeshFecData.lo: src/cpp/MeshFecData.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscigraphic_objects_la-MeshFecData.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscigraphic_objects_la-MeshFecData.Tpo -c -o src/cpp/libscigraphic_objects_la-MeshFecData.lo `test -f 'src/cpp/MeshFecData.cpp' || echo '$(srcdir)/'`src/cpp/MeshFecData.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscigraphic_objects_la-MeshFecData.Tpo src/cpp/$(DEPDIR)/libscigraphic_objects_la-MeshFecData.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/cpp/MeshFecData.cpp' object='src/cpp/libscigraphic_objects_la-MeshFecData.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscigraphic_objects_la-TriangleMeshFecData.lo `test -f 'src/cpp/TriangleMeshFecData.cpp' || echo '$(srcdir)/'`src/cpp/TriangleMeshFecData.cpp
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscigraphic_objects_la-MeshFecData.lo `test -f 'src/cpp/MeshFecData.cpp' || echo '$(srcdir)/'`src/cpp/MeshFecData.cpp
 
 src/cpp/libscigraphic_objects_la-ColorComputer.lo: src/cpp/ColorComputer.cpp
 @am__fastdepCXX_TRUE@  $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscigraphic_objects_la-ColorComputer.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscigraphic_objects_la-ColorComputer.Tpo -c -o src/cpp/libscigraphic_objects_la-ColorComputer.lo `test -f 'src/cpp/ColorComputer.cpp' || echo '$(srcdir)/'`src/cpp/ColorComputer.cpp
@@ -1327,12 +1327,12 @@ src/cpp/libscigraphic_objects_la-PolylineDecomposer.lo: src/cpp/PolylineDecompos
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscigraphic_objects_la-PolylineDecomposer.lo `test -f 'src/cpp/PolylineDecomposer.cpp' || echo '$(srcdir)/'`src/cpp/PolylineDecomposer.cpp
 
-src/cpp/libscigraphic_objects_la-TriangleMeshFecDataDecomposer.lo: src/cpp/TriangleMeshFecDataDecomposer.cpp
-@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscigraphic_objects_la-TriangleMeshFecDataDecomposer.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscigraphic_objects_la-TriangleMeshFecDataDecomposer.Tpo -c -o src/cpp/libscigraphic_objects_la-TriangleMeshFecDataDecomposer.lo `test -f 'src/cpp/TriangleMeshFecDataDecomposer.cpp' || echo '$(srcdir)/'`src/cpp/TriangleMeshFecDataDecomposer.cpp
-@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscigraphic_objects_la-TriangleMeshFecDataDecomposer.Tpo src/cpp/$(DEPDIR)/libscigraphic_objects_la-TriangleMeshFecDataDecomposer.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/cpp/TriangleMeshFecDataDecomposer.cpp' object='src/cpp/libscigraphic_objects_la-TriangleMeshFecDataDecomposer.lo' libtool=yes @AMDEPBACKSLASH@
+src/cpp/libscigraphic_objects_la-MeshFecDataDecomposer.lo: src/cpp/MeshFecDataDecomposer.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscigraphic_objects_la-MeshFecDataDecomposer.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscigraphic_objects_la-MeshFecDataDecomposer.Tpo -c -o src/cpp/libscigraphic_objects_la-MeshFecDataDecomposer.lo `test -f 'src/cpp/MeshFecDataDecomposer.cpp' || echo '$(srcdir)/'`src/cpp/MeshFecDataDecomposer.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscigraphic_objects_la-MeshFecDataDecomposer.Tpo src/cpp/$(DEPDIR)/libscigraphic_objects_la-MeshFecDataDecomposer.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/cpp/MeshFecDataDecomposer.cpp' object='src/cpp/libscigraphic_objects_la-MeshFecDataDecomposer.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscigraphic_objects_la-TriangleMeshFecDataDecomposer.lo `test -f 'src/cpp/TriangleMeshFecDataDecomposer.cpp' || echo '$(srcdir)/'`src/cpp/TriangleMeshFecDataDecomposer.cpp
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscigraphic_objects_la-MeshFecDataDecomposer.lo `test -f 'src/cpp/MeshFecDataDecomposer.cpp' || echo '$(srcdir)/'`src/cpp/MeshFecDataDecomposer.cpp
 
 src/cpp/libscigraphic_objects_la-Triangulator.lo: src/cpp/Triangulator.cpp
 @am__fastdepCXX_TRUE@  $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscigraphic_objects_la-Triangulator.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscigraphic_objects_la-Triangulator.Tpo -c -o src/cpp/libscigraphic_objects_la-Triangulator.lo `test -f 'src/cpp/Triangulator.cpp' || echo '$(srcdir)/'`src/cpp/Triangulator.cpp
index aab17a5..a5f9b13 100644 (file)
@@ -22,8 +22,8 @@
 #include "NgonGridData.hxx"
 #include "NgonGridMatplotData.hxx"
 #include "NgonPolylineData.hxx"
-#include "TriangleMeshData.hxx"
-#include "TriangleMeshFecData.hxx"
+#include "MeshData.hxx"
+#include "MeshFecData.hxx"
 
 #include "graphicObjectProperties.h"
 
index 6fccfad..a037232 100644 (file)
 #define INDICES                     18
 #define VALUES                      19
 
-#define FEC_TRIANGLES               20
+#define FEC_ELEMENTS                20
+#define NUM_VERTICES_BY_ELEM        21
 
-#define NUM_X                       21
-#define NUM_Y                       22
-#define NUM_Z                       23
-#define GRID_SIZE                   24
-#define X_DIMENSIONS                25
-#define Y_DIMENSIONS                26
+#define NUM_X                       22
+#define NUM_Y                       23
+#define NUM_Z                       24
+#define GRID_SIZE                   25
+#define X_DIMENSIONS                26
+#define Y_DIMENSIONS                27
 
-#define COLORS                      27
-#define NUM_COLORS                  28
+#define COLORS                      28
+#define NUM_COLORS                  29
 
 #define MATPLOT_BOUNDS              30
 #define MATPLOT_TYPE                31
index f96a48f..387428a 100644 (file)
@@ -87,6 +87,15 @@ public :
     static int isValid(double x, double y, double z);
 
     /**
+     * Tests whether a point is valid.
+     * The point is valid if none of its coordinates is infinite or a NaN.
+     * @param[in] the point's x-coordinate.
+     * @param[in] the point's y-coordinate.
+     * @return 1 if the point is valid, 0 if it is not.
+     */
+    static int isValid(double x, double y);
+
+    /**
      * Returns the base-10 logarithm of the input value.
      * @param[in] the input value.
      * @return the base-10 logarithm of the input value.
@@ -107,6 +116,18 @@ public :
      * determined as not valid.
      * @param[in] the point's x-coordinate.
      * @param[in] the point's y-coordinate.
+     * @param[in] the bit mask specifying for which coordinates the logarithmic scale is used.
+     * @return 1 if the point is valid, 0 if it is not.
+     */
+    static int isLogValid(double x, double y, int logMask);
+
+    /**
+     * Determines if a point is valid in logarithmic scale.
+     * It checks whether any of its coordinates is strictly less than 0 (if the
+     * logarithmic scale applies). In the event of the former, the point is
+     * determined as not valid.
+     * @param[in] the point's x-coordinate.
+     * @param[in] the point's y-coordinate.
      * @param[in] the point's z-coordinate.
      * @param[in] the bit mask specifying for which coordinates the logarithmic scale is used.
      * @return 1 if the point is valid, 0 if it is not.
@@ -10,8 +10,8 @@
  *
  */
 
-#ifndef TRIANGLE_MESH_DATA_HXX
-#define TRIANGLE_MESH_DATA_HXX
+#ifndef MESH_DATA_HXX
+#define MESH_DATA_HXX
 
 #include "Data3D.hxx"
 
@@ -20,10 +20,10 @@ extern "C" {
 }
 
 /**
- * Triangle mesh data class
+ * Mesh data class
  */
 
-class TriangleMeshData: public Data3D
+class MeshData: public Data3D
 {
 
 protected:
@@ -34,8 +34,8 @@ protected:
      */
     double* vertices;
 
-    /** Triangle indices array
-     * Contiguous (v0, v1, v2) triplets
+    /** Element indices array
+     * Contiguous (v0, v1, v2, ...) triplets
      */
     unsigned int* indices;
 
@@ -49,25 +49,27 @@ protected:
     /** Number of vertices */
     unsigned int numberVertices;
 
-    /** Number of triangles */
-    unsigned int numberTriangles;
+    /** Number of elements */
+    unsigned int numberElements;
+
+    unsigned int numberVerticesByElem;
 
 public:
     /**
      * Constructor
      */
-    TriangleMeshData(void);
+    MeshData(void);
 
     /**
      * Constructor
      * To be implemented
      */
-    TriangleMeshData(unsigned int numberVertices, unsigned int numberTriangles);
+    MeshData(unsigned int numberVertices, unsigned int numberElements, unsigned int numberVerticesByElem = 3);
 
     /**
      * Destructor
      */
-    virtual ~TriangleMeshData();
+    virtual ~MeshData();
 
     /**
      * Returns the identifier associated to a property name
@@ -107,7 +109,7 @@ public:
     int setNumVertices(unsigned int numVertices);
 
     /**
-     * Returns the number of index triplets (number of triangles)
+     * Returns the number of index triplets (number of elements)
      * @return the number of index triplets
      */
     unsigned int getNumIndices();
@@ -126,13 +128,13 @@ public:
     void setVertices(double const* vertices, unsigned int numElements);
 
     /**
-     * Returns the array of triangle indices
-     * @return a pointer to the array of triangle indices
+     * Returns the array of indices
+     * @return a pointer to the array indices
      */
     unsigned int* getIndices(void);
 
     /**
-     * Sets the number of index triplets (number of triangles)
+     * Sets the number of index triplets
      * Resizes the array of indices if required
      * @param[in] numIndices the number of index triplets to set
      * @return 1 if the number of index triplets has been successfully set, 0 otherwise (failed allocation)
@@ -186,9 +188,9 @@ public:
     void resetCoordinates(void);
 
     /**
-     * Converts a triangle vertex index as seen by Scilab to an internal format triangle vertex index
+     * Converts a vertex index as seen by Scilab to an internal format vertex index
      * @param[in] scilabIndex the Scilab index to convert
-     * @return the internal format triangle vertex index
+     * @return the internal format vertex index
      */
     static unsigned int scilabIndexToIndex(unsigned int scilabIndex);
 };
  *
  */
 
-#ifndef TRIANGLE_MESH_FEC_DATA_HXX
-#define TRIANGLE_MESH_FEC_DATA_HXX
+#ifndef MESH_FEC_DATA_HXX
+#define MESH_FEC_DATA_HXX
 
 #include "Data3D.hxx"
-#include "TriangleMeshData.hxx"
+#include "MeshData.hxx"
 
 extern "C" {
 #include "BOOL.h"
@@ -24,7 +24,7 @@ extern "C" {
  * Fec triangle mesh data class
  */
 
-class TriangleMeshFecData: public TriangleMeshData
+class MeshFecData: public MeshData
 {
 
 private:
@@ -42,18 +42,18 @@ public:
     /**
      * Constructor
      */
-    TriangleMeshFecData(void);
+    MeshFecData(void);
 
     /**
      * Constructor
      * To be implemented
      */
-    TriangleMeshFecData(unsigned int numberVertices, unsigned int numberTriangles);
+    MeshFecData(unsigned int numberVertices, unsigned int numberTriangles, unsigned int numberVerticesByElem = 3);
 
     /**
      * Destructor
      */
-    virtual ~TriangleMeshFecData();
+    virtual ~MeshFecData();
 
     /**
      * Returns the identifier associated to a property name
@@ -79,13 +79,13 @@ public:
     void getDataProperty(int property, void **_pvData);
 
     /**
-     * Returns the number of index triplets (number of triangles)
+     * Returns the number of index triplets
      * @return the number of index triplets
      */
     unsigned int getNumIndices();
 
     /**
-     * Sets the number of number of index triplets (number of triangles)
+     * Sets the number of number of index triplets
      * Resizes the arrays of indices and fec triangle values if required
      * @param[in] numIndices the number of index triplets to set
      * @return 1 if the number of index triplets has been successfully set, 0 otherwise (failed allocation)
@@ -97,13 +97,13 @@ public:
      * @param[in] a pointer to the array of fec triangles values
      * @param[in] numElements the number of triangles to set
      */
-    void setFecTriangles(double const* data, int numElements);
+    void setFecElements(double const* data, int numElements);
 
     /**
      * Returns the array of fec triangle values
      * @return a pointer to the array of fec triangle values
      */
-    double* getFecTriangles(void);
+    double* getFecElements(void);
 };
 
 #endif
@@ -10,8 +10,8 @@
  *
  */
 
-#ifndef TRIANGLEMESHFECDATA_DECOMPOSER_HXX
-#define TRIANGLEMESHFECDATA_DECOMPOSER_HXX
+#ifndef MESHFECDATA_DECOMPOSER_HXX
+#define MESHFECDATA_DECOMPOSER_HXX
 
 /**
  * TriangleMeshFecData decomposer class
@@ -20,7 +20,7 @@
  * It only has static member functions since it stores no actual state.
  */
 
-class TriangleMeshFecDataDecomposer
+class MeshFecDataDecomposer
 {
 
 private :
@@ -46,6 +46,16 @@ private :
     static int areFaceVerticesValid(double* coordinates, int v0, int v1, int v2, int logMask);
 
     /**
+     * Determines whether a face's vertices are valid or not.
+     * @param[in] the coordinates array.
+     * @param[in] the first vertex index.
+     * @param[in] the second vertex index.
+     * @param[in] a flag specifying whether logarithmic coordinates are used.
+     * @return 1 if the face is valid, 0 if it is not.
+     */
+    static int areSegmentVerticesValid(double* coordinates, int v0, int v1, int logMask);
+
+    /**
      * Determines whether a face's vertex values are valid or not.
      * @param[in] the values array.
      * @param[in] the first vertex index.
@@ -56,6 +66,15 @@ private :
     static int areFaceValuesValid(double* values, int v0, int v1, int v2);
 
     /**
+     * Determines whether a face's vertex values are valid or not.
+     * @param[in] the values array.
+     * @param[in] the first vertex index.
+     * @param[in] the second vertex index.
+     * @return 1 if all face values are valid, 0 if not.
+     */
+    static int areSegmentValuesValid(double* values, int v0, int v1);
+
+    /**
      * Determines whether all the vertex indices making up a face are valid.
      * To be valid, an index must belong to the interval [0, numVertices-1]
      * @param[in] the number of vertices giving the largest valid vertex index.
@@ -67,6 +86,16 @@ private :
     static int areFaceIndicesValid(int numVertices, int v0, int v1, int v2);
 
     /**
+     * Determines whether all the vertex indices making up a face are valid.
+     * To be valid, an index must belong to the interval [0, numVertices-1]
+     * @param[in] the number of vertices giving the largest valid vertex index.
+     * @param[in] the first vertex index.
+     * @param[in] the second vertex index.
+     * @return 1 if all indices are valid, 0 if not.
+     */
+    static int areSegmentIndicesValid(int numVertices, int v0, int v1);
+
+    /**
      * Returns the coordinates of a single vertex.
      * @param[in] the coordinates array.
      * @param[in] the vertex index.
index d04a7e2..63f71de 100755 (executable)
 #define __GO_DATA_MODEL_NUM_INDICES__ 56
 #define __GO_DATA_MODEL_INDICES__ 57
 #define __GO_DATA_MODEL_VALUES__ 58
-#define __GO_DATA_MODEL_FEC_TRIANGLES__ 59
-#define __GO_DATA_MODEL_NUM_X__ 60
-#define __GO_DATA_MODEL_NUM_Y__ 61
-#define __GO_DATA_MODEL_NUM_Z__ 62
-#define __GO_DATA_MODEL_GRID_SIZE__ 63
-#define __GO_DATA_MODEL_X_DIMENSIONS__ 64
-#define __GO_DATA_MODEL_Y_DIMENSIONS__ 65
-#define __GO_MATPLOT_TRANSLATE__ 66
-#define __GO_MATPLOT_SCALE__ 67
-#define __GO_DATA_MODEL_MATPLOT_BOUNDS__ 68
-#define __GO_DATA_MODEL_MATPLOT_TYPE__ 69
-#define __GO_DATA_MODEL_MATPLOT_GL_TYPE__ 70
-#define __GO_DATA_MODEL_MATPLOT_DATA_INFOS__ 71
-#define __GO_DATA_MODEL_MATPLOT_DATA_TYPE__ 72
-#define __GO_DATA_MODEL_MATPLOT_DATA_ORDER__ 73
-#define __GO_DATA_MODEL_MATPLOT_IMAGE_TYPE__ 74
-#define __GO_DATA_MODEL_MATPLOT_IMAGE_DATA__ 75
-#define __GO_DATA_MODEL_MATPLOT_IMAGE_DATASIZE__ 76
-#define __GO_REFERENCED__ 77
-#define __GO_VALID__ 78
-#define __GO_POSITION__ 79
-#define __GO_SIZE__ 80
-#define __GO_CANVAS__ 81
-#define __GO_AUTORESIZE__ 82
-#define __GO_VIEWPORT__ 83
-#define __GO_AXES_SIZE__ 84
-#define __GO_FIGURE_NAME__ 85
-#define __GO_NAME__ 86
-#define __GO_ID__ 87
-#define __GO_INFO_MESSAGE__ 88
-#define __GO_COLORMAP__ 89
-#define __GO_COLORMAP_SIZE__ 90
-#define __GO_RENDERING_MODE__ 91
-#define __GO_PIXEL_DRAWING_MODE__ 92
-#define __GO_ANTIALIASING__ 93
-#define __GO_IMMEDIATE_DRAWING__ 94
-#define __GO_BACKGROUND__ 95
-#define __GO_EVENTHANDLER__ 96
-#define __GO_EVENTHANDLER_NAME__ 97
-#define __GO_EVENTHANDLER_ENABLE__ 98
-#define __GO_TAG__ 99
-#define __GO_ROTATION_TYPE__ 100
-#define __GO_RESIZEFCN__ 101
-#define __GO_CLOSEREQUESTFCN__ 102
-#define __GO_DEFAULT_AXES__ 103
-#define __GO_UPPER_LEFT_POINT__ 104
-#define __GO_WIDTH__ 105
-#define __GO_HEIGHT__ 106
-#define __GO_START_ANGLE__ 107
-#define __GO_END_ANGLE__ 108
-#define __GO_ARC_DRAWING_METHOD__ 109
-#define __GO_X_AXIS_VISIBLE__ 110
-#define __GO_X_AXIS_REVERSE__ 111
-#define __GO_X_AXIS_GRID_COLOR__ 112
-#define __GO_X_AXIS_GRID_THICKNESS__ 113
-#define __GO_X_AXIS_GRID_STYLE__ 114
-#define __GO_X_AXIS_LABEL__ 115
-#define __GO_X_AXIS_LOCATION__ 116
-#define __GO_X_AXIS_LOG_FLAG__ 117
-#define __GO_X_AXIS_TICKS__ 118
-#define __GO_X_AXIS_FORMAT__ 119
-#define __GO_X_AXIS_ST_FACTORS__ 120
-#define __GO_X_AXIS_AUTO_TICKS__ 121
-#define __GO_X_AXIS_NUMBER_TICKS__ 122
-#define __GO_X_AXIS_TICKS_LOCATIONS__ 123
-#define __GO_X_AXIS_TICKS_LABELS__ 124
-#define __GO_X_AXIS_SUBTICKS__ 125
-#define __GO_Y_AXIS_VISIBLE__ 126
-#define __GO_Y_AXIS_REVERSE__ 127
-#define __GO_Y_AXIS_GRID_COLOR__ 128
-#define __GO_Y_AXIS_GRID_THICKNESS__ 129
-#define __GO_Y_AXIS_GRID_STYLE__ 130
-#define __GO_Y_AXIS_LABEL__ 131
-#define __GO_Y_AXIS_LOCATION__ 132
-#define __GO_Y_AXIS_LOG_FLAG__ 133
-#define __GO_Y_AXIS_TICKS__ 134
-#define __GO_Y_AXIS_FORMAT__ 135
-#define __GO_Y_AXIS_ST_FACTORS__ 136
-#define __GO_Y_AXIS_AUTO_TICKS__ 137
-#define __GO_Y_AXIS_NUMBER_TICKS__ 138
-#define __GO_Y_AXIS_TICKS_LOCATIONS__ 139
-#define __GO_Y_AXIS_TICKS_LABELS__ 140
-#define __GO_Y_AXIS_SUBTICKS__ 141
-#define __GO_Z_AXIS_VISIBLE__ 142
-#define __GO_Z_AXIS_REVERSE__ 143
-#define __GO_Z_AXIS_GRID_COLOR__ 144
-#define __GO_Z_AXIS_GRID_THICKNESS__ 145
-#define __GO_Z_AXIS_GRID_STYLE__ 146
-#define __GO_Z_AXIS_LABEL__ 147
-#define __GO_Z_AXIS_LOCATION__ 148
-#define __GO_Z_AXIS_LOG_FLAG__ 149
-#define __GO_Z_AXIS_TICKS__ 150
-#define __GO_Z_AXIS_FORMAT__ 151
-#define __GO_Z_AXIS_ST_FACTORS__ 152
-#define __GO_Z_AXIS_AUTO_TICKS__ 153
-#define __GO_Z_AXIS_NUMBER_TICKS__ 154
-#define __GO_Z_AXIS_TICKS_LOCATIONS__ 155
-#define __GO_Z_AXIS_TICKS_LABELS__ 156
-#define __GO_Z_AXIS_SUBTICKS__ 157
-#define __GO_AUTO_SUBTICKS__ 158
-#define __GO_GRID_POSITION__ 159
-#define __GO_TITLE__ 160
-#define __GO_AUTO_CLEAR__ 161
-#define __GO_FILLED__ 162
-#define __GO_CAMERA__ 163
-#define __GO_VIEW__ 164
-#define __GO_ISOVIEW__ 165
-#define __GO_CUBE_SCALING__ 166
-#define __GO_ROTATION_ANGLES__ 167
-#define __GO_ROTATION_ANGLES_3D__ 168
-#define __GO_BOX_TYPE__ 169
-#define __GO_HIDDEN_AXIS_COLOR__ 170
-#define __GO_X_TIGHT_LIMITS__ 171
-#define __GO_Y_TIGHT_LIMITS__ 172
-#define __GO_Z_TIGHT_LIMITS__ 173
-#define __GO_DATA_BOUNDS__ 174
-#define __GO_REAL_DATA_BOUNDS__ 175
-#define __GO_ZOOM_ENABLED__ 176
-#define __GO_ZOOM_BOX__ 177
-#define __GO_AUTO_SCALE__ 178
-#define __GO_FIRST_PLOT__ 179
-#define __GO_MARGINS__ 180
-#define __GO_AUTO_MARGINS__ 181
-#define __GO_AXES_BOUNDS__ 182
-#define __GO_CLIP_PROPERTY__ 183
-#define __GO_CLIP_STATE__ 184
-#define __GO_CLIP_BOX__ 185
-#define __GO_CLIP_BOX_SET__ 186
-#define __GO_LINE__ 187
-#define __GO_LINE_MODE__ 188
-#define __GO_LINE_STYLE__ 189
-#define __GO_LINE_THICKNESS__ 190
-#define __GO_LINE_COLOR__ 191
-#define __GO_FILL_MODE__ 192
-#define __GO_MARK__ 193
-#define __GO_MARK_MODE__ 194
-#define __GO_MARK_STYLE__ 195
-#define __GO_MARK_SIZE_UNIT__ 196
-#define __GO_MARK_SIZE__ 197
-#define __GO_MARK_FOREGROUND__ 198
-#define __GO_MARK_BACKGROUND__ 199
-#define __GO_MARK_OFFSET__ 200
-#define __GO_MARK_STRIDE__ 201
-#define __GO_SELECTED__ 202
-#define __GO_TICKS_DIRECTION__ 203
-#define __GO_X_NUMBER_TICKS__ 204
-#define __GO_Y_NUMBER_TICKS__ 205
-#define __GO_X_TICKS_COORDS__ 206
-#define __GO_Y_TICKS_COORDS__ 207
-#define __GO_TICKS_COLOR__ 208
-#define __GO_TICKS_SEGMENT__ 209
-#define __GO_TICKS_STYLE__ 210
-#define __GO_SUBTICKS__ 211
-#define __GO_NUMBER_TICKS_LABELS__ 212
-#define __GO_TICKS_LABELS__ 213
-#define __GO_FORMATN__ 214
-#define __GO_FONT__ 215
-#define __GO_FONT_STYLE__ 216
-#define __GO_FONT_SIZE__ 217
-#define __GO_FONT_COLOR__ 218
-#define __GO_FONT_FRACTIONAL__ 219
-#define __GO_Z_BOUNDS__ 220
-#define __GO_OUTSIDE_COLOR__ 221
-#define __GO_COLOR_RANGE__ 222
-#define __GO_DATA_MAPPING__ 223
-#define __GO_FONT_ANGLE__ 224
-#define __GO_AUTO_POSITION__ 225
-#define __GO_CORNERS__ 226
-#define __GO_AUTO_ROTATION__ 227
-#define __GO_LINKS__ 228
-#define __GO_LINKS_COUNT__ 229
-#define __GO_LEGEND_LOCATION__ 230
-#define __GO_MARKS_COUNT__ 231
-#define __GO_LINE_WIDTH__ 232
-#define __GO_CLOSED__ 233
-#define __GO_ARROW_SIZE_FACTOR__ 234
-#define __GO_POLYLINE_STYLE__ 235
-#define __GO_INTERP_COLOR_VECTOR__ 236
-#define __GO_INTERP_COLOR_VECTOR_SET__ 237
-#define __GO_INTERP_COLOR_MODE__ 238
-#define __GO_X_SHIFT__ 239
-#define __GO_Y_SHIFT__ 240
-#define __GO_Z_SHIFT__ 241
-#define __GO_BAR_WIDTH__ 242
-#define __GO_SURFACE_MODE__ 243
-#define __GO_COLOR_MODE__ 244
-#define __GO_COLOR_FLAG__ 245
-#define __GO_ALIGNMENT__ 246
-#define __GO_BOX__ 247
-#define __GO_TEXT_BOX__ 248
-#define __GO_TEXT_BOX_MODE__ 249
-#define __GO_AUTO_DIMENSIONING__ 250
-#define __GO_FORMATTED_TEXT__ 251
-#define __GO_TEXT_ARRAY_DIMENSIONS__ 252
-#define __GO_TEXT_STRINGS__ 253
-#define __GO_BASE__ 254
-#define __GO_BASE_X__ 255
-#define __GO_BASE_Y__ 256
-#define __GO_BASE_Z__ 257
-#define __GO_DIRECTION__ 258
-#define __GO_DIRECTION_X__ 259
-#define __GO_DIRECTION_Y__ 260
-#define __GO_DIRECTION_Z__ 261
-#define __GO_ARROW_SIZE__ 262
-#define __GO_SEGS_COLORS__ 263
-#define __GO_COLORED__ 264
-#define __GO_ARROWS__ 265
-#define __GO_NUMBER_ARROWS__ 266
-#define __GO_CHAMP_DIMENSIONS__ 267
-#define __GO_BOUNDING_BOX__ 268
-#define __GO_MAX_LENGTH__ 269
-#define __GO_MAX_USABLE_LENGTH__ 270
-#define __GO_HIDDEN_COLOR__ 271
-#define __GO_STYLE__ 272
-#define __GO_UI_CHECKBOX__ 273
-#define __GO_UI_EDIT__ 274
-#define __GO_UI_SPINNER__ 275
-#define __GO_UI_FRAME__ 276
-#define __GO_UI_FRAME_SCROLLABLE__ 277
-#define __GO_UI_IMAGE__ 278
-#define __GO_UI_LISTBOX__ 279
-#define __GO_UI_POPUPMENU__ 280
-#define __GO_UI_PUSHBUTTON__ 281
-#define __GO_UI_RADIOBUTTON__ 282
-#define __GO_UI_SLIDER__ 283
-#define __GO_UI_TABLE__ 284
-#define __GO_UI_TEXT__ 285
-#define __GO_UI_LAYER__ 286
-#define __GO_UI_BACKGROUNDCOLOR__ 287
-#define __GO_UI_ENABLE__ 288
-#define __GO_UI_FONTANGLE__ 289
-#define __GO_UI_FONTNAME__ 290
-#define __GO_UI_FONTSIZE__ 291
-#define __GO_UI_FONTUNITS__ 292
-#define __GO_UI_FONTWEIGHT__ 293
-#define __GO_UI_FOREGROUNDCOLOR__ 294
-#define __GO_UI_HORIZONTALALIGNMENT__ 295
-#define __GO_UI_LISTBOXTOP__ 296
-#define __GO_UI_LISTBOXTOP_SIZE__ 297
-#define __GO_UI_MAX__ 298
-#define __GO_UI_MIN__ 299
-#define __GO_UI_RELIEF__ 300
-#define __GO_UI_STRING__ 301
-#define __GO_UI_TAB_STRING__ 302
-#define __GO_UI_STRING_SIZE__ 303
-#define __GO_UI_STRING_COLNB__ 304
-#define __GO_UI_TOOLTIPSTRING__ 305
-#define __GO_UI_TOOLTIPSTRING_SIZE__ 306
-#define __GO_UI_SLIDERSTEP__ 307
-#define __GO_UI_UNITS__ 308
-#define __GO_UI_VALUE__ 309
-#define __GO_UI_TAB_VALUE__ 310
-#define __GO_UI_VALUE_SIZE__ 311
-#define __GO_UI_VERTICALALIGNMENT__ 312
-#define __GO_UIPARENTMENU__ 313
-#define __GO_UICHILDMENU__ 314
-#define __GO_UICHECKEDMENU__ 315
-#define __GO_UI_CHECKED__ 316
-#define __GO_UI_LABEL__ 317
-#define __GO_UI_MNEMONIC__ 318
-#define __GO_UI_ACCELERATOR__ 319
-#define __GO_UI_SEPARATOR__ 320
-#define __GO_UI_ICON__ 321
-#define __GO_CONSOLE__ 322
-#define __GO_SHOWHIDDENHANDLES__ 323
-#define __GO_SHOWHIDDENPROPERTIES__ 324
-#define __GO_USEDEPRECATEDLF__ 325
-#define __GO_WAITBAR__ 326
-#define __GO_PROGRESSIONBAR__ 327
-#define __GO_UI_MESSAGE__ 328
-#define __GO_UI_MESSAGE_SIZE__ 329
-#define __GO_DATATIP__ 330
-#define __GO_DATATIP_DATA__ 331
-#define __GO_DATATIP_ORIENTATION__ 332
-#define __GO_DATATIP_3COMPONENT__ 333
-#define __GO_DATATIP_AUTOORIENTATION__ 334
-#define __GO_DATATIP_INTERP_MODE__ 335
-#define __GO_DATATIP_DISPLAY_FNC__ 336
-#define __GO_DATATIP_BOX_MODE__ 337
-#define __GO_DATATIP_LABEL_MODE__ 338
-#define __GO_DATATIP_MARK__ 339
-#define __GO_AMBIENTCOLOR__ 340
-#define __GO_DIFFUSECOLOR__ 341
-#define __GO_SPECULARCOLOR__ 342
-#define __GO_COLOR_MATERIAL__ 343
-#define __GO_MATERIAL_SHININESS__ 344
-#define __GO_LIGHT__ 345
-#define __GO_LIGHT_TYPE__ 346
-#define __GO_DATATIPS__ 347
-#define __GO_DATATIPS_COUNT__ 348
-#define __GO_DATATIP_INDEXES__ 349
-#define __GO_DATA_MODEL_DISPLAY_FUNCTION__ 350
-#define __GO_DATA_MODEL_DISPLAY_FUNCTION_SIZE__ 351
-#define __GO_RESIZE__ 352
-#define __GO_TOOLBAR__ 353
-#define __GO_TOOLBAR_VISIBLE__ 354
-#define __GO_MENUBAR__ 355
-#define __GO_MENUBAR_VISIBLE__ 356
-#define __GO_INFOBAR_VISIBLE__ 357
-#define __GO_DOCKABLE__ 358
-#define __GO_LAYOUT__ 359
-#define __GO_LAYOUT_SET__ 360
-#define __GO_UI_TAB__ 361
-#define __GO_UI_GRIDBAG_GRID__ 362
-#define __GO_UI_GRIDBAG_WEIGHT__ 363
-#define __GO_UI_GRIDBAG_FILL__ 364
-#define __GO_UI_GRIDBAG_ANCHOR__ 365
-#define __GO_UI_GRIDBAG_PADDING__ 366
-#define __GO_UI_GRIDBAG_PREFERREDSIZE__ 367
-#define __GO_UI_GRID_GRID__ 368
-#define __GO_UI_GRID_PADDING__ 369
-#define __GO_UI_BORDER_POSITION__ 370
-#define __GO_UI_BORDER_PREFERREDSIZE__ 371
-#define __GO_GRID_OPT_GRID__ 372
-#define __GO_GRID_OPT_PADDING__ 373
-#define __GO_BORDER_OPT_PADDING__ 374
-#define __GO_UI_FRAME_BORDER__ 375
-#define __GO_UI_FRAME_BORDER_COLOR__ 376
-#define __GO_UI_FRAME_BORDER_HIGHLIGHT_IN__ 377
-#define __GO_UI_FRAME_BORDER_HIGHLIGHT_OUT__ 378
-#define __GO_UI_FRAME_BORDER_IN_BORDER__ 379
-#define __GO_UI_FRAME_BORDER_JUSTIFICATION__ 380
-#define __GO_UI_FRAME_BORDER_OUT_BORDER__ 381
-#define __GO_UI_FRAME_BORDER_ROUNDED__ 382
-#define __GO_UI_FRAME_BORDER_SHADOW_IN__ 383
-#define __GO_UI_FRAME_BORDER_SHADOW_OUT__ 384
-#define __GO_UI_FRAME_BORDER_TITLE__ 385
-#define __GO_UI_FRAME_BORDER_POSITION__ 386
-#define __GO_UI_FRAME_BORDER_STYLE__ 387
-#define __GO_UI_GROUP_NAME__ 388
-#define __GO_UI_TITLE_POSITION__ 389
-#define __GO_UI_TITLE_SCROLL__ 390
-#define __GO_UI_FRAME_BORDER_TYPE__ 391
-#define __GO_UI_SCROLLABLE__ 392
+#define __GO_DATA_MODEL_NUM_VERTICES_BY_ELEM__ 59
+#define __GO_DATA_MODEL_FEC_ELEMENTS__ 60
+#define __GO_DATA_MODEL_NUM_X__ 61
+#define __GO_DATA_MODEL_NUM_Y__ 62
+#define __GO_DATA_MODEL_NUM_Z__ 63
+#define __GO_DATA_MODEL_GRID_SIZE__ 64
+#define __GO_DATA_MODEL_X_DIMENSIONS__ 65
+#define __GO_DATA_MODEL_Y_DIMENSIONS__ 66
+#define __GO_MATPLOT_TRANSLATE__ 67
+#define __GO_MATPLOT_SCALE__ 68
+#define __GO_DATA_MODEL_MATPLOT_BOUNDS__ 69
+#define __GO_DATA_MODEL_MATPLOT_TYPE__ 70
+#define __GO_DATA_MODEL_MATPLOT_GL_TYPE__ 71
+#define __GO_DATA_MODEL_MATPLOT_DATA_INFOS__ 72
+#define __GO_DATA_MODEL_MATPLOT_DATA_TYPE__ 73
+#define __GO_DATA_MODEL_MATPLOT_DATA_ORDER__ 74
+#define __GO_DATA_MODEL_MATPLOT_IMAGE_TYPE__ 75
+#define __GO_DATA_MODEL_MATPLOT_IMAGE_DATA__ 76
+#define __GO_DATA_MODEL_MATPLOT_IMAGE_DATASIZE__ 77
+#define __GO_REFERENCED__ 78
+#define __GO_VALID__ 79
+#define __GO_POSITION__ 80
+#define __GO_SIZE__ 81
+#define __GO_CANVAS__ 82
+#define __GO_AUTORESIZE__ 83
+#define __GO_VIEWPORT__ 84
+#define __GO_AXES_SIZE__ 85
+#define __GO_FIGURE_NAME__ 86
+#define __GO_NAME__ 87
+#define __GO_ID__ 88
+#define __GO_INFO_MESSAGE__ 89
+#define __GO_COLORMAP__ 90
+#define __GO_COLORMAP_SIZE__ 91
+#define __GO_RENDERING_MODE__ 92
+#define __GO_PIXEL_DRAWING_MODE__ 93
+#define __GO_ANTIALIASING__ 94
+#define __GO_IMMEDIATE_DRAWING__ 95
+#define __GO_BACKGROUND__ 96
+#define __GO_EVENTHANDLER__ 97
+#define __GO_EVENTHANDLER_NAME__ 98
+#define __GO_EVENTHANDLER_ENABLE__ 99
+#define __GO_TAG__ 100
+#define __GO_ROTATION_TYPE__ 101
+#define __GO_RESIZEFCN__ 102
+#define __GO_CLOSEREQUESTFCN__ 103
+#define __GO_DEFAULT_AXES__ 104
+#define __GO_UPPER_LEFT_POINT__ 105
+#define __GO_WIDTH__ 106
+#define __GO_HEIGHT__ 107
+#define __GO_START_ANGLE__ 108
+#define __GO_END_ANGLE__ 109
+#define __GO_ARC_DRAWING_METHOD__ 110
+#define __GO_X_AXIS_VISIBLE__ 111
+#define __GO_X_AXIS_REVERSE__ 112
+#define __GO_X_AXIS_GRID_COLOR__ 113
+#define __GO_X_AXIS_GRID_THICKNESS__ 114
+#define __GO_X_AXIS_GRID_STYLE__ 115
+#define __GO_X_AXIS_LABEL__ 116
+#define __GO_X_AXIS_LOCATION__ 117
+#define __GO_X_AXIS_LOG_FLAG__ 118
+#define __GO_X_AXIS_TICKS__ 119
+#define __GO_X_AXIS_FORMAT__ 120
+#define __GO_X_AXIS_ST_FACTORS__ 121
+#define __GO_X_AXIS_AUTO_TICKS__ 122
+#define __GO_X_AXIS_NUMBER_TICKS__ 123
+#define __GO_X_AXIS_TICKS_LOCATIONS__ 124
+#define __GO_X_AXIS_TICKS_LABELS__ 125
+#define __GO_X_AXIS_SUBTICKS__ 126
+#define __GO_Y_AXIS_VISIBLE__ 127
+#define __GO_Y_AXIS_REVERSE__ 128
+#define __GO_Y_AXIS_GRID_COLOR__ 129
+#define __GO_Y_AXIS_GRID_THICKNESS__ 130
+#define __GO_Y_AXIS_GRID_STYLE__ 131
+#define __GO_Y_AXIS_LABEL__ 132
+#define __GO_Y_AXIS_LOCATION__ 133
+#define __GO_Y_AXIS_LOG_FLAG__ 134
+#define __GO_Y_AXIS_TICKS__ 135
+#define __GO_Y_AXIS_FORMAT__ 136
+#define __GO_Y_AXIS_ST_FACTORS__ 137
+#define __GO_Y_AXIS_AUTO_TICKS__ 138
+#define __GO_Y_AXIS_NUMBER_TICKS__ 139
+#define __GO_Y_AXIS_TICKS_LOCATIONS__ 140
+#define __GO_Y_AXIS_TICKS_LABELS__ 141
+#define __GO_Y_AXIS_SUBTICKS__ 142
+#define __GO_Z_AXIS_VISIBLE__ 143
+#define __GO_Z_AXIS_REVERSE__ 144
+#define __GO_Z_AXIS_GRID_COLOR__ 145
+#define __GO_Z_AXIS_GRID_THICKNESS__ 146
+#define __GO_Z_AXIS_GRID_STYLE__ 147
+#define __GO_Z_AXIS_LABEL__ 148
+#define __GO_Z_AXIS_LOCATION__ 149
+#define __GO_Z_AXIS_LOG_FLAG__ 150
+#define __GO_Z_AXIS_TICKS__ 151
+#define __GO_Z_AXIS_FORMAT__ 152
+#define __GO_Z_AXIS_ST_FACTORS__ 153
+#define __GO_Z_AXIS_AUTO_TICKS__ 154
+#define __GO_Z_AXIS_NUMBER_TICKS__ 155
+#define __GO_Z_AXIS_TICKS_LOCATIONS__ 156
+#define __GO_Z_AXIS_TICKS_LABELS__ 157
+#define __GO_Z_AXIS_SUBTICKS__ 158
+#define __GO_AUTO_SUBTICKS__ 159
+#define __GO_GRID_POSITION__ 160
+#define __GO_TITLE__ 161
+#define __GO_AUTO_CLEAR__ 162
+#define __GO_FILLED__ 163
+#define __GO_CAMERA__ 164
+#define __GO_VIEW__ 165
+#define __GO_ISOVIEW__ 166
+#define __GO_CUBE_SCALING__ 167
+#define __GO_ROTATION_ANGLES__ 168
+#define __GO_ROTATION_ANGLES_3D__ 169
+#define __GO_BOX_TYPE__ 170
+#define __GO_HIDDEN_AXIS_COLOR__ 171
+#define __GO_X_TIGHT_LIMITS__ 172
+#define __GO_Y_TIGHT_LIMITS__ 173
+#define __GO_Z_TIGHT_LIMITS__ 174
+#define __GO_DATA_BOUNDS__ 175
+#define __GO_REAL_DATA_BOUNDS__ 176
+#define __GO_ZOOM_ENABLED__ 177
+#define __GO_ZOOM_BOX__ 178
+#define __GO_AUTO_SCALE__ 179
+#define __GO_FIRST_PLOT__ 180
+#define __GO_MARGINS__ 181
+#define __GO_AUTO_MARGINS__ 182
+#define __GO_AXES_BOUNDS__ 183
+#define __GO_CLIP_PROPERTY__ 184
+#define __GO_CLIP_STATE__ 185
+#define __GO_CLIP_BOX__ 186
+#define __GO_CLIP_BOX_SET__ 187
+#define __GO_LINE__ 188
+#define __GO_LINE_MODE__ 189
+#define __GO_LINE_STYLE__ 190
+#define __GO_LINE_THICKNESS__ 191
+#define __GO_LINE_COLOR__ 192
+#define __GO_FILL_MODE__ 193
+#define __GO_MARK__ 194
+#define __GO_MARK_MODE__ 195
+#define __GO_MARK_STYLE__ 196
+#define __GO_MARK_SIZE_UNIT__ 197
+#define __GO_MARK_SIZE__ 198
+#define __GO_MARK_FOREGROUND__ 199
+#define __GO_MARK_BACKGROUND__ 200
+#define __GO_MARK_OFFSET__ 201
+#define __GO_MARK_STRIDE__ 202
+#define __GO_SELECTED__ 203
+#define __GO_TICKS_DIRECTION__ 204
+#define __GO_X_NUMBER_TICKS__ 205
+#define __GO_Y_NUMBER_TICKS__ 206
+#define __GO_X_TICKS_COORDS__ 207
+#define __GO_Y_TICKS_COORDS__ 208
+#define __GO_TICKS_COLOR__ 209
+#define __GO_TICKS_SEGMENT__ 210
+#define __GO_TICKS_STYLE__ 211
+#define __GO_SUBTICKS__ 212
+#define __GO_NUMBER_TICKS_LABELS__ 213
+#define __GO_TICKS_LABELS__ 214
+#define __GO_FORMATN__ 215
+#define __GO_FONT__ 216
+#define __GO_FONT_STYLE__ 217
+#define __GO_FONT_SIZE__ 218
+#define __GO_FONT_COLOR__ 219
+#define __GO_FONT_FRACTIONAL__ 220
+#define __GO_Z_BOUNDS__ 221
+#define __GO_OUTSIDE_COLOR__ 222
+#define __GO_COLOR_RANGE__ 223
+#define __GO_DATA_MAPPING__ 224
+#define __GO_FONT_ANGLE__ 225
+#define __GO_AUTO_POSITION__ 226
+#define __GO_CORNERS__ 227
+#define __GO_AUTO_ROTATION__ 228
+#define __GO_LINKS__ 229
+#define __GO_LINKS_COUNT__ 230
+#define __GO_LEGEND_LOCATION__ 231
+#define __GO_MARKS_COUNT__ 232
+#define __GO_LINE_WIDTH__ 233
+#define __GO_CLOSED__ 234
+#define __GO_ARROW_SIZE_FACTOR__ 235
+#define __GO_POLYLINE_STYLE__ 236
+#define __GO_INTERP_COLOR_VECTOR__ 237
+#define __GO_INTERP_COLOR_VECTOR_SET__ 238
+#define __GO_INTERP_COLOR_MODE__ 239
+#define __GO_X_SHIFT__ 240
+#define __GO_Y_SHIFT__ 241
+#define __GO_Z_SHIFT__ 242
+#define __GO_BAR_WIDTH__ 243
+#define __GO_SURFACE_MODE__ 244
+#define __GO_COLOR_MODE__ 245
+#define __GO_COLOR_FLAG__ 246
+#define __GO_ALIGNMENT__ 247
+#define __GO_BOX__ 248
+#define __GO_TEXT_BOX__ 249
+#define __GO_TEXT_BOX_MODE__ 250
+#define __GO_AUTO_DIMENSIONING__ 251
+#define __GO_FORMATTED_TEXT__ 252
+#define __GO_TEXT_ARRAY_DIMENSIONS__ 253
+#define __GO_TEXT_STRINGS__ 254
+#define __GO_BASE__ 255
+#define __GO_BASE_X__ 256
+#define __GO_BASE_Y__ 257
+#define __GO_BASE_Z__ 258
+#define __GO_DIRECTION__ 259
+#define __GO_DIRECTION_X__ 260
+#define __GO_DIRECTION_Y__ 261
+#define __GO_DIRECTION_Z__ 262
+#define __GO_ARROW_SIZE__ 263
+#define __GO_SEGS_COLORS__ 264
+#define __GO_COLORED__ 265
+#define __GO_ARROWS__ 266
+#define __GO_NUMBER_ARROWS__ 267
+#define __GO_CHAMP_DIMENSIONS__ 268
+#define __GO_BOUNDING_BOX__ 269
+#define __GO_MAX_LENGTH__ 270
+#define __GO_MAX_USABLE_LENGTH__ 271
+#define __GO_HIDDEN_COLOR__ 272
+#define __GO_STYLE__ 273
+#define __GO_UI_CHECKBOX__ 274
+#define __GO_UI_EDIT__ 275
+#define __GO_UI_SPINNER__ 276
+#define __GO_UI_FRAME__ 277
+#define __GO_UI_FRAME_SCROLLABLE__ 278
+#define __GO_UI_IMAGE__ 279
+#define __GO_UI_LISTBOX__ 280
+#define __GO_UI_POPUPMENU__ 281
+#define __GO_UI_PUSHBUTTON__ 282
+#define __GO_UI_RADIOBUTTON__ 283
+#define __GO_UI_SLIDER__ 284
+#define __GO_UI_TABLE__ 285
+#define __GO_UI_TEXT__ 286
+#define __GO_UI_LAYER__ 287
+#define __GO_UI_BACKGROUNDCOLOR__ 288
+#define __GO_UI_ENABLE__ 289
+#define __GO_UI_FONTANGLE__ 290
+#define __GO_UI_FONTNAME__ 291
+#define __GO_UI_FONTSIZE__ 292
+#define __GO_UI_FONTUNITS__ 293
+#define __GO_UI_FONTWEIGHT__ 294
+#define __GO_UI_FOREGROUNDCOLOR__ 295
+#define __GO_UI_HORIZONTALALIGNMENT__ 296
+#define __GO_UI_LISTBOXTOP__ 297
+#define __GO_UI_LISTBOXTOP_SIZE__ 298
+#define __GO_UI_MAX__ 299
+#define __GO_UI_MIN__ 300
+#define __GO_UI_RELIEF__ 301
+#define __GO_UI_STRING__ 302
+#define __GO_UI_TAB_STRING__ 303
+#define __GO_UI_STRING_SIZE__ 304
+#define __GO_UI_STRING_COLNB__ 305
+#define __GO_UI_TOOLTIPSTRING__ 306
+#define __GO_UI_TOOLTIPSTRING_SIZE__ 307
+#define __GO_UI_SLIDERSTEP__ 308
+#define __GO_UI_UNITS__ 309
+#define __GO_UI_VALUE__ 310
+#define __GO_UI_TAB_VALUE__ 311
+#define __GO_UI_VALUE_SIZE__ 312
+#define __GO_UI_VERTICALALIGNMENT__ 313
+#define __GO_UIPARENTMENU__ 314
+#define __GO_UICHILDMENU__ 315
+#define __GO_UICHECKEDMENU__ 316
+#define __GO_UI_CHECKED__ 317
+#define __GO_UI_LABEL__ 318
+#define __GO_UI_MNEMONIC__ 319
+#define __GO_UI_ACCELERATOR__ 320
+#define __GO_UI_SEPARATOR__ 321
+#define __GO_UI_ICON__ 322
+#define __GO_CONSOLE__ 323
+#define __GO_SHOWHIDDENHANDLES__ 324
+#define __GO_SHOWHIDDENPROPERTIES__ 325
+#define __GO_USEDEPRECATEDLF__ 326
+#define __GO_WAITBAR__ 327
+#define __GO_PROGRESSIONBAR__ 328
+#define __GO_UI_MESSAGE__ 329
+#define __GO_UI_MESSAGE_SIZE__ 330
+#define __GO_DATATIP__ 331
+#define __GO_DATATIP_DATA__ 332
+#define __GO_DATATIP_ORIENTATION__ 333
+#define __GO_DATATIP_3COMPONENT__ 334
+#define __GO_DATATIP_AUTOORIENTATION__ 335
+#define __GO_DATATIP_INTERP_MODE__ 336
+#define __GO_DATATIP_DISPLAY_FNC__ 337
+#define __GO_DATATIP_BOX_MODE__ 338
+#define __GO_DATATIP_LABEL_MODE__ 339
+#define __GO_DATATIP_MARK__ 340
+#define __GO_AMBIENTCOLOR__ 341
+#define __GO_DIFFUSECOLOR__ 342
+#define __GO_SPECULARCOLOR__ 343
+#define __GO_COLOR_MATERIAL__ 344
+#define __GO_MATERIAL_SHININESS__ 345
+#define __GO_LIGHT__ 346
+#define __GO_LIGHT_TYPE__ 347
+#define __GO_DATATIPS__ 348
+#define __GO_DATATIPS_COUNT__ 349
+#define __GO_DATATIP_INDEXES__ 350
+#define __GO_DATA_MODEL_DISPLAY_FUNCTION__ 351
+#define __GO_DATA_MODEL_DISPLAY_FUNCTION_SIZE__ 352
+#define __GO_RESIZE__ 353
+#define __GO_TOOLBAR__ 354
+#define __GO_TOOLBAR_VISIBLE__ 355
+#define __GO_MENUBAR__ 356
+#define __GO_MENUBAR_VISIBLE__ 357
+#define __GO_INFOBAR_VISIBLE__ 358
+#define __GO_DOCKABLE__ 359
+#define __GO_LAYOUT__ 360
+#define __GO_LAYOUT_SET__ 361
+#define __GO_UI_TAB__ 362
+#define __GO_UI_GRIDBAG_GRID__ 363
+#define __GO_UI_GRIDBAG_WEIGHT__ 364
+#define __GO_UI_GRIDBAG_FILL__ 365
+#define __GO_UI_GRIDBAG_ANCHOR__ 366
+#define __GO_UI_GRIDBAG_PADDING__ 367
+#define __GO_UI_GRIDBAG_PREFERREDSIZE__ 368
+#define __GO_UI_GRID_GRID__ 369
+#define __GO_UI_GRID_PADDING__ 370
+#define __GO_UI_BORDER_POSITION__ 371
+#define __GO_UI_BORDER_PREFERREDSIZE__ 372
+#define __GO_GRID_OPT_GRID__ 373
+#define __GO_GRID_OPT_PADDING__ 374
+#define __GO_BORDER_OPT_PADDING__ 375
+#define __GO_UI_FRAME_BORDER__ 376
+#define __GO_UI_FRAME_BORDER_COLOR__ 377
+#define __GO_UI_FRAME_BORDER_HIGHLIGHT_IN__ 378
+#define __GO_UI_FRAME_BORDER_HIGHLIGHT_OUT__ 379
+#define __GO_UI_FRAME_BORDER_IN_BORDER__ 380
+#define __GO_UI_FRAME_BORDER_JUSTIFICATION__ 381
+#define __GO_UI_FRAME_BORDER_OUT_BORDER__ 382
+#define __GO_UI_FRAME_BORDER_ROUNDED__ 383
+#define __GO_UI_FRAME_BORDER_SHADOW_IN__ 384
+#define __GO_UI_FRAME_BORDER_SHADOW_OUT__ 385
+#define __GO_UI_FRAME_BORDER_TITLE__ 386
+#define __GO_UI_FRAME_BORDER_POSITION__ 387
+#define __GO_UI_FRAME_BORDER_STYLE__ 388
+#define __GO_UI_GROUP_NAME__ 389
+#define __GO_UI_TITLE_POSITION__ 390
+#define __GO_UI_TITLE_SCROLL__ 391
+#define __GO_UI_FRAME_BORDER_TYPE__ 392
+#define __GO_UI_SCROLLABLE__ 393
 
 #endif /* !__GRAPHIC_OBJECT_PROPERTIES_H__ */
index eb71069..2e5c852 100644 (file)
     <ClCompile Include="..\cpp\getConsoleIdentifier.cpp" />
     <ClCompile Include="..\cpp\HandleManagement.cpp" />
     <ClCompile Include="..\cpp\MatPlotDecomposer.cpp" />
+    <ClCompile Include="..\cpp\MeshData.cpp" />
+    <ClCompile Include="..\cpp\MeshFecData.cpp" />
+    <ClCompile Include="..\cpp\MeshFecDataDecomposer.cpp" />
     <ClCompile Include="..\cpp\NgonGridMatplotDataDecomposer.cpp" />
     <ClCompile Include="..\cpp\NormalGenerator.cpp" />
     <ClCompile Include="..\cpp\ScilabView.cpp" />
     <ClCompile Include="..\cpp\Plot3DDecomposer.cpp" />
     <ClCompile Include="..\cpp\PolylineDecomposer.cpp" />
     <ClCompile Include="..\cpp\setGraphicObjectProperty.cpp" />
-    <ClCompile Include="..\cpp\TriangleMeshData.cpp" />
-    <ClCompile Include="..\cpp\TriangleMeshFecData.cpp" />
-    <ClCompile Include="..\cpp\TriangleMeshFecDataDecomposer.cpp" />
     <ClCompile Include="..\jni\SurfaceData_wrap.c" />
     <ClCompile Include="..\cpp\createObjectData.cpp" />
     <ClCompile Include="..\cpp\pickSurface.cpp" />
index ae53de2..b61c492 100644 (file)
     <ClCompile Include="..\cpp\setGraphicObjectProperty.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
-    <ClCompile Include="..\cpp\TriangleMeshData.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\cpp\TriangleMeshFecData.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\cpp\TriangleMeshFecDataDecomposer.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
     <ClCompile Include="..\cpp\NgonGridMatplotDataDecomposer.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
     <ClCompile Include="..\jni\CallXmlLoader.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
+    <ClCompile Include="..\cpp\MeshData.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\cpp\MeshFecData.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\cpp\MeshFecDataDecomposer.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
   </ItemGroup>
   <ItemGroup>
     <ClInclude Include="..\jni\CallGraphicController.hxx">
index f9071aa..0debb60 100644 (file)
@@ -22,7 +22,7 @@
 #include "NgonGridMatplotDataDecomposer.hxx"
 #include "Plot3DDecomposer.hxx"
 #include "PolylineDecomposer.hxx"
-#include "TriangleMeshFecDataDecomposer.hxx"
+#include "MeshFecDataDecomposer.hxx"
 #include "NormalGenerator.hxx"
 
 extern "C"
@@ -103,7 +103,7 @@ int getDataSize(int id)
         case __GO_FAC3D__ :
             return Fac3DDecomposer::getDataSize(id);
         case __GO_FEC__ :
-            return TriangleMeshFecDataDecomposer::getDataSize(id);
+            return MeshFecDataDecomposer::getDataSize(id);
         case __GO_GRAYPLOT__ :
             return NgonGridGrayplotDataDecomposer::getDataSize(id);
         case __GO_MATPLOT__ :
@@ -131,7 +131,7 @@ void fillVertices(int id, float* buffer, int bufferLength, int elementsSize, int
             Fac3DDecomposer::fillVertices(id, buffer, bufferLength, elementsSize, coordinateMask, scale, translation, logMask);
             break;
         case __GO_FEC__ :
-            TriangleMeshFecDataDecomposer::fillVertices(id, buffer, bufferLength, elementsSize, coordinateMask, scale, translation, logMask);
+            MeshFecDataDecomposer::fillVertices(id, buffer, bufferLength, elementsSize, coordinateMask, scale, translation, logMask);
             break;
         case __GO_GRAYPLOT__ :
             NgonGridGrayplotDataDecomposer::fillVertices(id, buffer, bufferLength, elementsSize, coordinateMask, scale, translation, logMask);
@@ -204,7 +204,7 @@ void fillTextureCoordinates(int id, float* BUFF, int bufferLength)
             Fac3DDecomposer::fillTextureCoordinates(id, BUFF, bufferLength);
             break;
         case __GO_FEC__ :
-            TriangleMeshFecDataDecomposer::fillTextureCoordinates(id, BUFF, bufferLength);
+            MeshFecDataDecomposer::fillTextureCoordinates(id, BUFF, bufferLength);
             break;
         case __GO_POLYLINE__ :
             PolylineDecomposer::fillTextureCoordinates(id, BUFF, bufferLength);
@@ -222,7 +222,7 @@ void fillColors(int id, float* BUFF, int bufferLength, int elementsSize)
     switch (iType)
     {
         case __GO_FEC__ :
-            TriangleMeshFecDataDecomposer::fillColors(id, BUFF, bufferLength, elementsSize);
+            MeshFecDataDecomposer::fillColors(id, BUFF, bufferLength, elementsSize);
             break;
         case __GO_GRAYPLOT__ :
             NgonGridGrayplotDataDecomposer::fillColors(id, BUFF, bufferLength, elementsSize);
@@ -252,7 +252,7 @@ int getIndicesSize(int id)
         case __GO_FAC3D__ :
             return Fac3DDecomposer::getIndicesSize(id);
         case __GO_FEC__ :
-            return TriangleMeshFecDataDecomposer::getIndicesSize(id);
+            return MeshFecDataDecomposer::getIndicesSize(id);
         case __GO_GRAYPLOT__ :
             return NgonGridGrayplotDataDecomposer::getIndicesSize(id);
         case __GO_MATPLOT__ :
@@ -279,7 +279,7 @@ int fillIndices(int id, int* buffer, int bufferLength, int logMask)
         case __GO_FAC3D__ :
             return Fac3DDecomposer::fillIndices(id, buffer, bufferLength, logMask);
         case __GO_FEC__ :
-            return TriangleMeshFecDataDecomposer::fillIndices(id, buffer, bufferLength, logMask);
+            return MeshFecDataDecomposer::fillIndices(id, buffer, bufferLength, logMask);
         case __GO_GRAYPLOT__ :
             return NgonGridGrayplotDataDecomposer::fillIndices(id, buffer, bufferLength, logMask);
         case __GO_MATPLOT__ :
@@ -305,7 +305,7 @@ int getWireIndicesSize(int id)
         case __GO_FAC3D__ :
             return Fac3DDecomposer::getWireIndicesSize(id);
         case __GO_FEC__ :
-            return TriangleMeshFecDataDecomposer::getWireIndicesSize(id);
+            return MeshFecDataDecomposer::getWireIndicesSize(id);
         case __GO_PLOT3D__ :
             return Plot3DDecomposer::getWireIndicesSize(id);
         case __GO_POLYLINE__ :
@@ -327,7 +327,7 @@ int fillWireIndices(int id, int* buffer, int bufferLength, int logMask)
         case __GO_FAC3D__ :
             return Fac3DDecomposer::fillWireIndices(id, buffer, bufferLength, logMask);
         case __GO_FEC__ :
-            return TriangleMeshFecDataDecomposer::fillWireIndices(id, buffer, bufferLength, logMask);
+            return MeshFecDataDecomposer::fillWireIndices(id, buffer, bufferLength, logMask);
         case __GO_PLOT3D__ :
             return Plot3DDecomposer::fillWireIndices(id, buffer, bufferLength, logMask);
         case __GO_POLYLINE__ :
index ca041c6..5c0e3c0 100644 (file)
@@ -74,6 +74,18 @@ int DecompositionUtils::isValid(double x, double y, double z)
     }
 }
 
+int DecompositionUtils::isValid(double x, double y)
+{
+    if (isnan(x) || isnan(y) || isinf(x) || isinf(y))
+    {
+        return 0;
+    }
+    else
+    {
+        return 1;
+    }
+}
+
 double DecompositionUtils::getLog10Value(double value)
 {
     return log10(value);
@@ -113,6 +125,23 @@ int DecompositionUtils::isLogValid(double x, double y, double z, int logMask)
     return valid;
 }
 
+int DecompositionUtils::isLogValid(double x, double y, int logMask)
+{
+    int valid = 1;
+
+    if (logMask & 0x1)
+    {
+        valid &= (x > 0.0);
+    }
+
+    if (logMask & 0x2)
+    {
+        valid &= (y > 0.0);
+    }
+
+    return valid;
+}
+
 double DecompositionUtils::getMaxDoubleValue(void)
 {
     return DBL_MAX;
@@ -10,7 +10,7 @@
  *
  */
 
-#include "TriangleMeshData.hxx"
+#include "MeshData.hxx"
 #include "DataProperties.hxx"
 
 extern "C" {
@@ -20,29 +20,30 @@ extern "C" {
 #include "graphicObjectProperties.h"
 }
 
-TriangleMeshData::TriangleMeshData(void)
+MeshData::MeshData(void)
 {
     vertices = NULL;
     indices = NULL;
     values = NULL;
 
     numberVertices = 0;
-    numberTriangles = 0;
+    numberElements = 0;
+    numberVerticesByElem = 3;
 }
 
 /* To be correctly implemented */
-TriangleMeshData::TriangleMeshData(unsigned int numberVertices, unsigned int numberTriangles)
+MeshData::MeshData(unsigned int numberVertices, unsigned int numberElements, unsigned int numberVerticesByElem)
 {
-    vertices = new double[3 * numberVertices];
-
-    indices = new unsigned int[3 * numberTriangles];
+    vertices = new double[numberVerticesByElem * numberVertices];
+    indices = new unsigned int[numberVerticesByElem * numberElements];
 
     this->numberVertices = numberVertices;
-    this->numberTriangles = numberTriangles;
+    this->numberElements = numberElements;
+    this->numberVerticesByElem = numberVerticesByElem;
 }
 
 /* To be correctly implemented */
-TriangleMeshData::~TriangleMeshData(void)
+MeshData::~MeshData(void)
 {
     if (numberVertices > 0)
     {
@@ -50,14 +51,14 @@ TriangleMeshData::~TriangleMeshData(void)
         delete [] values;
     }
 
-    if (numberTriangles > 0)
+    if (numberElements > 0)
     {
         delete [] indices;
     }
 
 }
 
-int TriangleMeshData::getPropertyFromName(int propertyName)
+int MeshData::getPropertyFromName(int propertyName)
 {
     switch (propertyName)
     {
@@ -77,6 +78,8 @@ int TriangleMeshData::getPropertyFromName(int propertyName)
             return INDICES;
         case __GO_DATA_MODEL_VALUES__ :
             return VALUES;
+        case __GO_DATA_MODEL_NUM_VERTICES_BY_ELEM__ :
+            return NUM_VERTICES_BY_ELEM;
         default :
             return Data3D::getPropertyFromName(propertyName);
     }
@@ -84,7 +87,7 @@ int TriangleMeshData::getPropertyFromName(int propertyName)
 }
 
 
-int TriangleMeshData::setDataProperty(int property, void const* value, int numElements)
+int MeshData::setDataProperty(int property, void const* value, int numElements)
 {
     switch (property)
     {
@@ -110,6 +113,9 @@ int TriangleMeshData::setDataProperty(int property, void const* value, int numEl
         case VALUES :
             setValues((double const*) value, numElements);
             break;
+        case NUM_VERTICES_BY_ELEM :
+           numberVerticesByElem = *((unsigned int const*) value);
+           break;
         default :
             return Data3D::setDataProperty(property, value, numElements);
     }
@@ -117,7 +123,7 @@ int TriangleMeshData::setDataProperty(int property, void const* value, int numEl
     return 1;
 }
 
-void TriangleMeshData::getDataProperty(int property, void **_pvData)
+void MeshData::getDataProperty(int property, void **_pvData)
 {
     switch (property)
     {
@@ -136,12 +142,15 @@ void TriangleMeshData::getDataProperty(int property, void **_pvData)
         case VALUES :
             *_pvData = getValues();
             break;
+        case NUM_VERTICES_BY_ELEM :
+           ((int *) *_pvData)[0] = numberVerticesByElem;
+           break;
         default :
             Data3D::getDataProperty(property, _pvData);
     }
 }
 
-unsigned int TriangleMeshData::getNumVertices(void)
+unsigned int MeshData::getNumVertices(void)
 {
     return numberVertices;
 }
@@ -150,7 +159,7 @@ unsigned int TriangleMeshData::getNumVertices(void)
  * Values are considered as being specified per-vertex for now
  * To be corrected
  */
-int TriangleMeshData::setNumVertices(unsigned int numVertices)
+int MeshData::setNumVertices(unsigned int numVertices)
 {
     int result = 1;
 
@@ -223,22 +232,22 @@ int TriangleMeshData::setNumVertices(unsigned int numVertices)
     return result;
 }
 
-unsigned int TriangleMeshData::getNumIndices(void)
+unsigned int MeshData::getNumIndices(void)
 {
-    return numberTriangles;
+    return numberElements;
 }
 
-int TriangleMeshData::setNumIndices(unsigned int numIndices)
+int MeshData::setNumIndices(unsigned int numIndices)
 {
     int result = 1;
 
-    if (numIndices != this->numberTriangles)
+    if (numIndices != this->numberElements)
     {
         unsigned int* newIndices = NULL;
 
         try
         {
-            newIndices = new unsigned int[3 * numIndices];
+            newIndices = new unsigned int[numberVerticesByElem * numIndices];
         }
         catch (const std::exception& e)
         {
@@ -248,14 +257,14 @@ int TriangleMeshData::setNumIndices(unsigned int numIndices)
 
         if (result)
         {
-            if (this->numberTriangles > 0)
+            if (this->numberElements > 0)
             {
                 delete [] indices;
             }
 
             indices = newIndices;
 
-            this->numberTriangles =  numIndices;
+            this->numberElements = numIndices;
         }
         else
         {
@@ -271,12 +280,12 @@ int TriangleMeshData::setNumIndices(unsigned int numIndices)
     return result;
 }
 
-double* TriangleMeshData::getVertices(void)
+double* MeshData::getVertices(void)
 {
     return vertices;
 }
 
-void TriangleMeshData::setVertices(double const* vertices, unsigned int numElements)
+void MeshData::setVertices(double const* vertices, unsigned int numElements)
 {
     if (numElements <= numberVertices)
     {
@@ -284,20 +293,20 @@ void TriangleMeshData::setVertices(double const* vertices, unsigned int numEleme
     }
 }
 
-unsigned int* TriangleMeshData::getIndices(void)
+unsigned int* MeshData::getIndices(void)
 {
     return indices;
 }
 
-void TriangleMeshData::setIndices(unsigned int const* indices, unsigned int numElements)
+void MeshData::setIndices(unsigned int const* indices, unsigned int numElements)
 {
-    if (numElements <= numberTriangles)
+    if (numElements <= numberElements)
     {
-        memcpy(this->indices, indices, numElements * 3 * sizeof(unsigned int));
+        memcpy(this->indices, indices, numElements * numberVerticesByElem * sizeof(unsigned int));
     }
 }
 
-void TriangleMeshData::setDataX(double const* data, unsigned int numElements)
+void MeshData::setDataX(double const* data, unsigned int numElements)
 {
     if (numElements <= numberVertices)
     {
@@ -308,7 +317,7 @@ void TriangleMeshData::setDataX(double const* data, unsigned int numElements)
     }
 }
 
-void TriangleMeshData::setDataY(double const* data, unsigned int numElements)
+void MeshData::setDataY(double const* data, unsigned int numElements)
 {
     if (numElements <= numberVertices)
     {
@@ -319,7 +328,7 @@ void TriangleMeshData::setDataY(double const* data, unsigned int numElements)
     }
 }
 
-void TriangleMeshData::setDataZ(double const* data, unsigned int numElements)
+void MeshData::setDataZ(double const* data, unsigned int numElements)
 {
     if (numElements <= numberVertices)
     {
@@ -330,7 +339,7 @@ void TriangleMeshData::setDataZ(double const* data, unsigned int numElements)
     }
 }
 
-void TriangleMeshData::setValues(double const* data, unsigned int numElements)
+void MeshData::setValues(double const* data, unsigned int numElements)
 {
     if (numElements <= numberVertices)
     {
@@ -338,23 +347,18 @@ void TriangleMeshData::setValues(double const* data, unsigned int numElements)
     }
 }
 
-double* TriangleMeshData::getValues(void)
+double* MeshData::getValues(void)
 {
     return values;
 }
 
-unsigned int TriangleMeshData::scilabIndexToIndex(unsigned int scilabIndex)
+unsigned int MeshData::scilabIndexToIndex(unsigned int scilabIndex)
 {
     return (scilabIndex - 1);
 }
 
-void TriangleMeshData::resetCoordinates(void)
+void MeshData::resetCoordinates(void)
 {
-    for (unsigned int i = 0; i < numberVertices; i++)
-    {
-        vertices[3 * i] = 0.0;
-        vertices[3 * i + 1] = 0.0;
-        vertices[3 * i + 2] = 0.0;
-    }
+    memset(vertices, 0, numberVertices * 3 * sizeof(double));
 }
 
diff --git a/scilab/modules/graphic_objects/src/cpp/MeshFecData.cpp b/scilab/modules/graphic_objects/src/cpp/MeshFecData.cpp
new file mode 100644 (file)
index 0000000..7a98ade
--- /dev/null
@@ -0,0 +1,212 @@
+/*
+ *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ *  Copyright (C) 2010 - DIGITEO - Manuel Juliachs
+ *
+ *  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 "MeshFecData.hxx"
+#include "MeshData.hxx"
+#include "DataProperties.hxx"
+
+extern "C" {
+#include <string.h>
+#include "BOOL.h"
+
+#include "graphicObjectProperties.h"
+}
+
+MeshFecData::MeshFecData(void)
+{
+    vertices = NULL;
+    indices = NULL;
+    values = NULL;
+    fecValues = NULL;
+
+    numberVertices = 0;
+    numberElements = 0;
+    numberVerticesByElem = 3;
+}
+
+MeshFecData::MeshFecData(unsigned int numberVertices, unsigned int numberElements, unsigned int numberVerticesByElem)
+{
+    vertices = new double[numberVerticesByElem * numberVertices];
+    indices = new unsigned int[numberVerticesByElem * numberElements];
+    fecValues = new double[(numberVerticesByElem + 2) * numberElements];
+
+    this->numberVerticesByElem = numberVerticesByElem;
+    this->numberVertices = numberVertices;
+    this->numberElements = numberElements;
+}
+
+MeshFecData::~MeshFecData(void)
+{
+    if (numberVertices > 0)
+    {
+        delete [] vertices;
+        delete [] values;
+    }
+
+    if (numberElements > 0)
+    {
+        delete [] indices;
+        delete [] fecValues;
+    }
+
+    numberVertices = 0;
+    numberElements = 0;
+}
+
+int MeshFecData::getPropertyFromName(int propertyName)
+{
+    switch (propertyName)
+    {
+        case __GO_DATA_MODEL_NUM_INDICES__ :
+            return NUM_INDICES;
+        case __GO_DATA_MODEL_FEC_ELEMENTS__ :
+            return FEC_ELEMENTS;
+        default :
+            return MeshData::getPropertyFromName(propertyName);
+    }
+}
+
+
+int MeshFecData::setDataProperty(int property, void const* value, int numElements)
+{
+    if (property == NUM_INDICES)
+    {
+        return setNumIndices(*((unsigned int const*) value));
+    }
+    else if (property == FEC_ELEMENTS)
+    {
+        setFecElements((double const*) value, numElements);
+    }
+    else
+    {
+        return MeshData::setDataProperty(property, value, numElements);
+    }
+
+    return 1;
+}
+
+void MeshFecData::getDataProperty(int property, void **_pvData)
+{
+    if (property == NUM_INDICES)
+    {
+        ((int *) *_pvData)[0] = getNumIndices();
+    }
+    else if (property == FEC_ELEMENTS)
+    {
+        *_pvData = getFecElements();
+    }
+    else
+    {
+        MeshData::getDataProperty(property, _pvData);
+    }
+
+}
+
+unsigned int MeshFecData::getNumIndices(void)
+{
+    return numberElements;
+}
+
+int MeshFecData::setNumIndices(unsigned int numIndices)
+{
+    int result = 1;
+    if (numIndices != this->numberElements)
+    {
+        unsigned int* newIndices = NULL;
+        double* newFecValues = NULL;
+
+        try
+        {
+            newIndices = new unsigned int[numberVerticesByElem * numIndices];
+        }
+        catch (const std::exception& e)
+        {
+            e.what();
+            result = 0;
+        }
+
+        try
+        {
+            newFecValues = new double[(numberVerticesByElem + 2) * numIndices];
+        }
+        catch (const std::exception& e)
+        {
+            e.what();
+            result = 0;
+        }
+
+
+        if (result)
+        {
+            if (this->numberElements > 0)
+            {
+                delete [] indices;
+                delete [] fecValues;
+            }
+
+            indices = newIndices;
+            fecValues = newFecValues;
+
+            this->numberElements =  numIndices;
+        }
+        else
+        {
+            /* Failed allocation, nothing is set */
+            if (newIndices != NULL)
+            {
+                delete [] newIndices;
+            }
+
+            if (newFecValues != NULL)
+            {
+                delete [] newFecValues;
+            }
+        }
+
+    }
+
+    return result;
+}
+
+void MeshFecData::setFecElements(double const* data, int numElements)
+{
+    if ((unsigned int)numElements > numberElements)
+    {
+        return;
+    }
+
+    for (int i = 0; i < numElements; i++)
+    {
+       for (unsigned j = 0; j < numberVerticesByElem; ++j)
+       {
+           indices[numberVerticesByElem * i + j] =  scilabIndexToIndex((unsigned int) data[(j + 1) * numElements + i]);
+       }
+
+        /* Element number */
+        fecValues[i] = data[i];
+
+        /* Element vertices */
+       for (unsigned int j = 1; j <= numberVerticesByElem; ++j)
+       {
+           fecValues[j * numElements + i] = data[j * numElements + i];
+       }
+
+        /* Flag */
+       fecValues[(numberVerticesByElem + 1) * numElements + i] = data[(numberVerticesByElem + 1) * numElements + i];
+    }
+}
+
+double* MeshFecData::getFecElements(void)
+{
+    return fecValues;
+}
+
@@ -12,7 +12,9 @@
 
 #include "ColorComputer.hxx"
 #include "DecompositionUtils.hxx"
-#include "TriangleMeshFecDataDecomposer.hxx"
+#include "MeshFecDataDecomposer.hxx"
+
+#include <iostream>
 
 extern "C"
 {
@@ -23,7 +25,7 @@ extern "C"
 #include "graphicObjectProperties.h"
 }
 
-int TriangleMeshFecDataDecomposer::getDataSize(int id)
+int MeshFecDataDecomposer::getDataSize(int id)
 {
     int numVertices = 0;
     int* piNumVertices = &numVertices;
@@ -33,7 +35,7 @@ int TriangleMeshFecDataDecomposer::getDataSize(int id)
     return numVertices;
 }
 
-void TriangleMeshFecDataDecomposer::fillVertices(int id, float* buffer, int bufferLength, int elementsSize, int coordinateMask, double* scale, double* translation, int logMask)
+void MeshFecDataDecomposer::fillVertices(int id, float* buffer, int bufferLength, int elementsSize, int coordinateMask, double* scale, double* translation, int logMask)
 {
     double* coordinates = NULL;
 
@@ -83,7 +85,7 @@ void TriangleMeshFecDataDecomposer::fillVertices(int id, float* buffer, int buff
 
 }
 
-void TriangleMeshFecDataDecomposer::fillTextureCoordinates(int id, float* buffer, int bufferLength)
+void MeshFecDataDecomposer::fillTextureCoordinates(int id, float* buffer, int bufferLength)
 {
     int parentFigure = 0;
     int * piParentFigure = &parentFigure;
@@ -173,7 +175,7 @@ void TriangleMeshFecDataDecomposer::fillTextureCoordinates(int id, float* buffer
     }
 }
 
-void TriangleMeshFecDataDecomposer::fillColors(int id, float* buffer, int bufferLength, int elementsSize)
+void MeshFecDataDecomposer::fillColors(int id, float* buffer, int bufferLength, int elementsSize)
 {
     int parent = 0;
     int parentFigure = 0;
@@ -328,7 +330,7 @@ void TriangleMeshFecDataDecomposer::fillColors(int id, float* buffer, int buffer
     releaseGraphicObjectProperty(__GO_COLORMAP__, colormap, jni_double_vector, colormapSize);
 }
 
-void TriangleMeshFecDataDecomposer::computeMinMaxValues(double* values, int numValues, double* valueMin, double* valueMax)
+void MeshFecDataDecomposer::computeMinMaxValues(double* values, int numValues, double* valueMin, double* valueMax)
 {
     double maxDouble = DecompositionUtils::getMaxDoubleValue();
     double tmpValueMin = maxDouble;
@@ -354,17 +356,20 @@ void TriangleMeshFecDataDecomposer::computeMinMaxValues(double* values, int numV
     *valueMax = tmpValueMax;
 }
 
-int TriangleMeshFecDataDecomposer::getIndicesSize(int id)
+int MeshFecDataDecomposer::getIndicesSize(int id)
 {
     int numIndices = 0;
     int* piNumIndices = &numIndices;
+    int nVertex = 0;
+    int* piNVertex = &nVertex;
 
     getGraphicObjectProperty(id, __GO_DATA_MODEL_NUM_INDICES__, jni_int, (void**) &piNumIndices);
+    getGraphicObjectProperty(id, __GO_DATA_MODEL_NUM_VERTICES_BY_ELEM__, jni_int, (void**) &piNVertex);
 
-    return 3 * numIndices;
+    return 3 * (nVertex - 2) * numIndices;
 }
 
-int TriangleMeshFecDataDecomposer::fillIndices(int id, int* buffer, int bufferLength, int logMask)
+int MeshFecDataDecomposer::fillIndices(int id, int* buffer, int bufferLength, int logMask)
 {
     double* coordinates = NULL;
     double* values = NULL;
@@ -373,6 +378,8 @@ int TriangleMeshFecDataDecomposer::fillIndices(int id, int* buffer, int bufferLe
     int* piNumIndices = &numIndices;
     int numVertices = 0;
     int* piNumVertices = &numVertices;
+    int nVertex = 0;
+    int* piNVertex = &nVertex;
 
     int* triangleIndices = NULL;
 
@@ -383,6 +390,7 @@ int TriangleMeshFecDataDecomposer::fillIndices(int id, int* buffer, int bufferLe
 
     getGraphicObjectProperty(id, __GO_DATA_MODEL_NUM_INDICES__, jni_int, (void**) &piNumIndices);
     getGraphicObjectProperty(id, __GO_DATA_MODEL_NUM_VERTICES__, jni_int, (void**) &piNumVertices);
+    getGraphicObjectProperty(id, __GO_DATA_MODEL_NUM_VERTICES_BY_ELEM__, jni_int, (void**) &piNVertex);
 
     getGraphicObjectProperty(id, __GO_DATA_MODEL_COORDINATES__, jni_double_vector, (void**) &coordinates);
     getGraphicObjectProperty(id, __GO_DATA_MODEL_VALUES__, jni_double_vector, (void**) &values);
@@ -397,27 +405,28 @@ int TriangleMeshFecDataDecomposer::fillIndices(int id, int* buffer, int bufferLe
 
     for (int i = 0; i < numIndices; i++)
     {
-        v0 = triangleIndices[3 * i];
-        v1 = triangleIndices[3 * i + 1];
-        v2 = triangleIndices[3 * i + 2];
-
-        if (areFaceIndicesValid(numVertices, v0, v1, v2) &&
+       v0 = triangleIndices[nVertex * i];
+       for (unsigned int j = 1; j < nVertex - 1; ++j)
+       {
+           v1 = triangleIndices[nVertex * i + j];
+           v2 = triangleIndices[nVertex * i + j + 1];
+           
+           if (areFaceIndicesValid(numVertices, v0, v1, v2) &&
                 areFaceVerticesValid(coordinates, v0, v1, v2, logMask) &&
                 areFaceValuesValid(values, v0, v1, v2))
-        {
-            buffer[bufferOffset] = v0;
-            buffer[bufferOffset + 1] = v1;
-            buffer[bufferOffset + 2] = v2;
-
-            bufferOffset += 3;
-        }
-
+           {
+               buffer[bufferOffset] = v0;
+               buffer[bufferOffset + 1] = v1;
+               buffer[bufferOffset + 2] = v2;
+               bufferOffset += 3;
+           }
+       }
     }
 
     return bufferOffset;
 }
 
-int TriangleMeshFecDataDecomposer::areFaceVerticesValid(double* coordinates, int v0, int v1, int v2, int logMask)
+int MeshFecDataDecomposer::areFaceVerticesValid(double* coordinates, int v0, int v1, int v2, int logMask)
 {
     double vertex0[3];
     double vertex1[3];
@@ -440,7 +449,26 @@ int TriangleMeshFecDataDecomposer::areFaceVerticesValid(double* coordinates, int
     return 0;
 }
 
-int TriangleMeshFecDataDecomposer::areFaceValuesValid(double* values, int v0, int v1, int v2)
+int MeshFecDataDecomposer::areSegmentVerticesValid(double* coordinates, int v0, int v1, int logMask)
+{
+    double vertex0[3];
+    double vertex1[3];
+
+    getVertexCoordinates(coordinates, v0, vertex0);
+    getVertexCoordinates(coordinates, v1, vertex1);
+    
+    if (DecompositionUtils::isValid(vertex0[0], vertex0[1], vertex0[2]) &&
+       DecompositionUtils::isLogValid(vertex0[0], vertex0[1], vertex0[2], logMask) &&
+       DecompositionUtils::isValid(vertex1[0], vertex1[1], vertex1[2]) &&
+       DecompositionUtils::isLogValid(vertex1[0], vertex1[1], vertex1[2], logMask))
+    {
+        return 1;
+    }
+
+    return 0;
+}
+
+int MeshFecDataDecomposer::areFaceValuesValid(double* values, int v0, int v1, int v2)
 {
     if (DecompositionUtils::isValid(values[v0], values[v1], values[v2]))
     {
@@ -450,7 +478,17 @@ int TriangleMeshFecDataDecomposer::areFaceValuesValid(double* values, int v0, in
     return 0;
 }
 
-int TriangleMeshFecDataDecomposer::areFaceIndicesValid(int numVertices, int v0, int v1, int v2)
+int MeshFecDataDecomposer::areSegmentValuesValid(double* values, int v0, int v1)
+{
+    if (DecompositionUtils::isValid(values[v0], values[v1]))
+    {
+        return 1;
+    }
+
+    return 0;
+}
+
+int MeshFecDataDecomposer::areFaceIndicesValid(int numVertices, int v0, int v1, int v2)
 {
     if (v0 < 0 || v0 >= numVertices || v1 < 0 || v1 >= numVertices || v2 < 0 || v2 >= numVertices)
     {
@@ -460,27 +498,41 @@ int TriangleMeshFecDataDecomposer::areFaceIndicesValid(int numVertices, int v0,
     return 1;
 }
 
-void TriangleMeshFecDataDecomposer::getVertexCoordinates(double* coordinates, int index, double* vertexCoordinates)
+int MeshFecDataDecomposer::areSegmentIndicesValid(int numVertices, int v0, int v1)
+{
+    if (v0 < 0 || v0 >= numVertices || v1 < 0 || v1 >= numVertices)
+    {
+        return 0;
+    }
+
+    return 1;
+}
+
+
+void MeshFecDataDecomposer::getVertexCoordinates(double* coordinates, int index, double* vertexCoordinates)
 {
     vertexCoordinates[0] = coordinates[3 * index];
     vertexCoordinates[1] = coordinates[3 * index + 1];
     vertexCoordinates[2] = coordinates[3 * index + 2];
 }
 
-int TriangleMeshFecDataDecomposer::getWireIndicesSize(int id)
+int MeshFecDataDecomposer::getWireIndicesSize(int id)
 {
     int numTriangles = 0;
     int* piNumTriangles = &numTriangles;
+    int nVertex = 0;
+    int* piNVertex = &nVertex;
 
     getGraphicObjectProperty(id, __GO_DATA_MODEL_NUM_INDICES__, jni_int, (void**) &piNumTriangles);
+    getGraphicObjectProperty(id, __GO_DATA_MODEL_NUM_VERTICES_BY_ELEM__, jni_int, (void**) &piNVertex);
 
-    return 6 * numTriangles;
+    return 2 * nVertex * numTriangles;
 }
 
 /*
  * To do: output shared edges once instead of twice (once per adjacent face).
  */
-int TriangleMeshFecDataDecomposer::fillWireIndices(int id, int* buffer, int bufferLength, int logMask)
+int MeshFecDataDecomposer::fillWireIndices(int id, int* buffer, int bufferLength, int logMask)
 {
     double* coordinates = NULL;
     double* values = NULL;
@@ -490,6 +542,8 @@ int TriangleMeshFecDataDecomposer::fillWireIndices(int id, int* buffer, int buff
     int numIndices = 0;
     int* piNumIndices = &numIndices;
     int* triangleIndices = NULL;
+    int nVertex = 0;
+    int* piNVertex = &nVertex;
 
     int v0 = 0;
     int v1 = 0;
@@ -501,6 +555,7 @@ int TriangleMeshFecDataDecomposer::fillWireIndices(int id, int* buffer, int buff
     getGraphicObjectProperty(id, __GO_DATA_MODEL_NUM_VERTICES__, jni_int, (void**) &piNumVertices);
     getGraphicObjectProperty(id, __GO_DATA_MODEL_COORDINATES__, jni_double_vector, (void**) &coordinates);
     getGraphicObjectProperty(id, __GO_DATA_MODEL_VALUES__, jni_double_vector, (void**) &values);
+    getGraphicObjectProperty(id, __GO_DATA_MODEL_NUM_VERTICES_BY_ELEM__, jni_int, (void**) &piNVertex);
 
     /* 0 segments */
     if (numIndices == 0 || numVertices < 3)
@@ -512,24 +567,30 @@ int TriangleMeshFecDataDecomposer::fillWireIndices(int id, int* buffer, int buff
 
     for (int i = 0; i < numIndices; i++)
     {
-        v0 = triangleIndices[3 * i];
-        v1 = triangleIndices[3 * i + 1];
-        v2 = triangleIndices[3 * i + 2];
-
-        if (areFaceIndicesValid(numVertices, v0, v1, v2) &&
-                areFaceVerticesValid(coordinates, v0, v1, v2, logMask) &&
-                areFaceValuesValid(values, v0, v1, v2))
-        {
-            buffer[bufferOffset] = v0;
-            buffer[bufferOffset + 1] = v1;
-            buffer[bufferOffset + 2] = v1;
-            buffer[bufferOffset + 3] = v2;
-            buffer[bufferOffset + 4] = v2;
-            buffer[bufferOffset + 5] = v0;
-
-            bufferOffset += 6;
-        }
-
+       for (unsigned int j = 0; j < nVertex - 1; ++j)
+       {
+           v0 = triangleIndices[nVertex * i + j];
+           v1 = triangleIndices[nVertex * i + j + 1];
+           if (areSegmentIndicesValid(numVertices, v0, v1) &&
+                areSegmentVerticesValid(coordinates, v0, v1, logMask) &&
+                areSegmentValuesValid(values, v0, v1))
+           {
+               buffer[bufferOffset] = v0;
+               buffer[bufferOffset + 1] = v1;
+               bufferOffset += 2;
+           }
+       }
+
+       v0 = triangleIndices[nVertex * i + nVertex - 1];
+       v1 = triangleIndices[nVertex * i];
+       if (areSegmentIndicesValid(numVertices, v0, v1) &&
+           areSegmentVerticesValid(coordinates, v0, v1, logMask) &&
+           areSegmentValuesValid(values, v0, v1))
+       {
+           buffer[bufferOffset] = v0;
+           buffer[bufferOffset + 1] = v1;
+           bufferOffset += 2;
+       }
     }
 
     return bufferOffset;
diff --git a/scilab/modules/graphic_objects/src/cpp/TriangleMeshFecData.cpp b/scilab/modules/graphic_objects/src/cpp/TriangleMeshFecData.cpp
deleted file mode 100644 (file)
index 55b8ca5..0000000
+++ /dev/null
@@ -1,213 +0,0 @@
-/*
- *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
- *  Copyright (C) 2010 - DIGITEO - Manuel Juliachs
- *
- *  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 "TriangleMeshFecData.hxx"
-#include "TriangleMeshData.hxx"
-#include "DataProperties.hxx"
-
-extern "C" {
-#include <string.h>
-#include "BOOL.h"
-
-#include "graphicObjectProperties.h"
-}
-
-TriangleMeshFecData::TriangleMeshFecData(void)
-{
-    vertices = NULL;
-    indices = NULL;
-    values = NULL;
-    fecValues = NULL;
-
-    numberVertices = 0;
-    numberTriangles = 0;
-}
-
-/* To be correctly implemented */
-TriangleMeshFecData::TriangleMeshFecData(unsigned int numberVertices, unsigned int numberTriangles)
-{
-    vertices = new double[3 * numberVertices];
-
-    indices = new unsigned int[3 * numberTriangles];
-
-    fecValues = new double[5 * numberTriangles];
-
-    this->numberVertices = numberVertices;
-    this->numberTriangles = numberTriangles;
-}
-
-/* To be correctly implemented */
-TriangleMeshFecData::~TriangleMeshFecData(void)
-{
-    if (numberVertices > 0)
-    {
-        delete [] vertices;
-        delete [] values;
-    }
-
-    if (numberTriangles > 0)
-    {
-        delete [] indices;
-        delete [] fecValues;
-    }
-
-    numberVertices = 0;
-    numberTriangles = 0;
-}
-
-int TriangleMeshFecData::getPropertyFromName(int propertyName)
-{
-    switch (propertyName)
-    {
-        case __GO_DATA_MODEL_NUM_INDICES__ :
-            return NUM_INDICES;
-        case __GO_DATA_MODEL_FEC_TRIANGLES__ :
-            return FEC_TRIANGLES;
-        default :
-            return TriangleMeshData::getPropertyFromName(propertyName);
-    }
-}
-
-
-int TriangleMeshFecData::setDataProperty(int property, void const* value, int numElements)
-{
-    if (property == NUM_INDICES)
-    {
-        return setNumIndices(*((unsigned int const*) value));
-    }
-    else if (property == FEC_TRIANGLES)
-    {
-        setFecTriangles((double const*) value, numElements);
-    }
-    else
-    {
-        return TriangleMeshData::setDataProperty(property, value, numElements);
-    }
-
-    return 1;
-}
-
-void TriangleMeshFecData::getDataProperty(int property, void **_pvData)
-{
-    if (property == NUM_INDICES)
-    {
-        ((int *) *_pvData)[0] = getNumIndices();
-    }
-    else if (property == FEC_TRIANGLES)
-    {
-        *_pvData = getFecTriangles();
-    }
-    else
-    {
-        TriangleMeshData::getDataProperty(property, _pvData);
-    }
-
-}
-
-unsigned int TriangleMeshFecData::getNumIndices(void)
-{
-    return numberTriangles;
-}
-
-int TriangleMeshFecData::setNumIndices(unsigned int numIndices)
-{
-    int result = 1;
-
-    if (numIndices != this->numberTriangles)
-    {
-        unsigned int* newIndices = NULL;
-        double* newFecValues = NULL;
-
-        try
-        {
-            newIndices = new unsigned int[3 * numIndices];
-        }
-        catch (const std::exception& e)
-        {
-            e.what();
-            result = 0;
-        }
-
-        try
-        {
-            newFecValues = new double[5 * numIndices];
-        }
-        catch (const std::exception& e)
-        {
-            e.what();
-            result = 0;
-        }
-
-
-        if (result)
-        {
-            if (this->numberTriangles > 0)
-            {
-                delete [] indices;
-                delete [] fecValues;
-            }
-
-            indices = newIndices;
-            fecValues = newFecValues;
-
-            this->numberTriangles =  numIndices;
-        }
-        else
-        {
-            /* Failed allocation, nothing is set */
-            if (newIndices != NULL)
-            {
-                delete [] newIndices;
-            }
-
-            if (newFecValues != NULL)
-            {
-                delete [] newFecValues;
-            }
-        }
-
-    }
-
-    return result;
-}
-
-void TriangleMeshFecData::setFecTriangles(double const* data, int numElements)
-{
-    if ((unsigned int)numElements > numberTriangles)
-    {
-        return;
-    }
-
-    for (int i = 0; i < numElements; i++)
-    {
-        indices[3 * i] =  scilabIndexToIndex((unsigned int) data[numElements + i]);
-        indices[3 * i + 1] = scilabIndexToIndex((unsigned int) data[2 * numElements + i]);
-        indices[3 * i + 2] = scilabIndexToIndex((unsigned int) data[3 * numElements + i]);
-
-        /* Triangle number */
-        fecValues[i] = data[i];
-
-        /* Triangle vertices */
-        fecValues[numElements + i] = data[numElements + i];
-        fecValues[2 * numElements + i] = data[2 * numElements + i];
-        fecValues[3 * numElements + i] = data[3 * numElements + i];
-
-        /* Flag */
-        fecValues[4 * numElements + i] = data[4 * numElements + i];
-    }
-}
-
-double* TriangleMeshFecData::getFecTriangles(void)
-{
-    return fecValues;
-}
-
index bde5493..55317ad 100644 (file)
@@ -94,7 +94,7 @@ int DataModel::createDataObject(int iUID, int _iType)
             newObject = new NgonPolylineData();
             break;
         case __GO_FEC__ :
-            newObject = new TriangleMeshFecData();
+            newObject = new MeshFecData();
             break;
         default :
             return 0;
index 30d1fe5..da730e6 100644 (file)
@@ -70,7 +70,8 @@ void getGraphicObjectProperty(int iUID, int _iName, _ReturnType_ _returnType, vo
         case __GO_DATA_MODEL_NUM_INDICES__ :
         case __GO_DATA_MODEL_INDICES__ :
         case __GO_DATA_MODEL_VALUES__ :
-        case __GO_DATA_MODEL_FEC_TRIANGLES__ :
+        case __GO_DATA_MODEL_FEC_ELEMENTS__ :
+        case __GO_DATA_MODEL_NUM_VERTICES_BY_ELEM__ :
         case __GO_DATA_MODEL_NUM_X__ :
         case __GO_DATA_MODEL_NUM_Y__ :
         case __GO_DATA_MODEL_NUM_Z__ :
@@ -213,7 +214,8 @@ void releaseGraphicObjectProperty(int _iName, void * _pvData, enum _ReturnType_
             || _iName == __GO_DATA_MODEL_NUM_INDICES__
             || _iName == __GO_DATA_MODEL_INDICES__
             || _iName == __GO_DATA_MODEL_VALUES__
-            || _iName == __GO_DATA_MODEL_FEC_TRIANGLES__
+            || _iName == __GO_DATA_MODEL_FEC_ELEMENTS__
+           || _iName == __GO_DATA_MODEL_NUM_VERTICES_BY_ELEM__
             || _iName == __GO_DATA_MODEL_NUM_X__
             || _iName == __GO_DATA_MODEL_NUM_Y__
             || _iName == __GO_DATA_MODEL_NUM_Z__
index c3965a3..ea6fdbd 100644 (file)
@@ -90,7 +90,8 @@ BOOL setGraphicObjectPropertyAndWarn(int _iID, int _iName, void const* _pvValue,
         case __GO_DATA_MODEL_NUM_INDICES__ :
         case __GO_DATA_MODEL_INDICES__ :
         case __GO_DATA_MODEL_VALUES__ :
-        case __GO_DATA_MODEL_FEC_TRIANGLES__ :
+        case __GO_DATA_MODEL_FEC_ELEMENTS__ :
+        case __GO_DATA_MODEL_NUM_VERTICES_BY_ELEM__ :
         case __GO_DATA_MODEL_NUM_X__ :
         case __GO_DATA_MODEL_NUM_Y__ :
         case __GO_DATA_MODEL_NUM_Z__ :
index deae68c..fa03ad5 100644 (file)
@@ -25,8 +25,8 @@ public class ObjectData {
         return ObjectDataJNI.getSegsData(uid);
     }
 
-    public static Object getFecTriangles(int uid) {
-        return ObjectDataJNI.getFecTriangles(uid);
+    public static Object getFecElements(int uid) {
+        return ObjectDataJNI.getFecElements(uid);
     }
 
     public static Object getFecData(int uid) {
@@ -41,4 +41,8 @@ public class ObjectData {
         return ObjectDataJNI.getArcData(uid);
     }
 
+    public static int getFecNumVerticesByElement(int uid) {
+        return ObjectDataJNI.getFecNumVerticesByElement(uid);
+    }
+
 }
index 740f7ba..e4c7e51 100644 (file)
@@ -23,8 +23,9 @@ public class ObjectDataJNI {
     public final static native Object getChampY(int jarg1);
     public final static native Object getArrows(int jarg1);
     public final static native Object getSegsData(int jarg1);
-    public final static native Object getFecTriangles(int jarg1);
+    public final static native Object getFecElements(int jarg1);
     public final static native Object getFecData(int jarg1);
     public final static native Object getArcUpperLeftPoint(int jarg1);
     public final static native Object getArcData(int jarg1);
+    public final static native int getFecNumVerticesByElement(int jarg1);
 }
index 8882668..f5b4305 100755 (executable)
@@ -80,339 +80,340 @@ public class GraphicObjectProperties {
     public static final int __GO_DATA_MODEL_NUM_INDICES__ = 56;
     public static final int __GO_DATA_MODEL_INDICES__ = 57;
     public static final int __GO_DATA_MODEL_VALUES__ = 58;
-    public static final int __GO_DATA_MODEL_FEC_TRIANGLES__ = 59;
-    public static final int __GO_DATA_MODEL_NUM_X__ = 60;
-    public static final int __GO_DATA_MODEL_NUM_Y__ = 61;
-    public static final int __GO_DATA_MODEL_NUM_Z__ = 62;
-    public static final int __GO_DATA_MODEL_GRID_SIZE__ = 63;
-    public static final int __GO_DATA_MODEL_X_DIMENSIONS__ = 64;
-    public static final int __GO_DATA_MODEL_Y_DIMENSIONS__ = 65;
-    public static final int __GO_MATPLOT_TRANSLATE__ = 66;
-    public static final int __GO_MATPLOT_SCALE__ = 67;
-    public static final int __GO_DATA_MODEL_MATPLOT_BOUNDS__ = 68;
-    public static final int __GO_DATA_MODEL_MATPLOT_TYPE__ = 69;
-    public static final int __GO_DATA_MODEL_MATPLOT_GL_TYPE__ = 70;
-    public static final int __GO_DATA_MODEL_MATPLOT_DATA_INFOS__ = 71;
-    public static final int __GO_DATA_MODEL_MATPLOT_DATA_TYPE__ = 72;
-    public static final int __GO_DATA_MODEL_MATPLOT_DATA_ORDER__ = 73;
-    public static final int __GO_DATA_MODEL_MATPLOT_IMAGE_TYPE__ = 74;
-    public static final int __GO_DATA_MODEL_MATPLOT_IMAGE_DATA__ = 75;
-    public static final int __GO_DATA_MODEL_MATPLOT_IMAGE_DATASIZE__ = 76;
-    public static final int __GO_REFERENCED__ = 77;
-    public static final int __GO_VALID__ = 78;
-    public static final int __GO_POSITION__ = 79;
-    public static final int __GO_SIZE__ = 80;
-    public static final int __GO_CANVAS__ = 81;
-    public static final int __GO_AUTORESIZE__ = 82;
-    public static final int __GO_VIEWPORT__ = 83;
-    public static final int __GO_AXES_SIZE__ = 84;
-    public static final int __GO_FIGURE_NAME__ = 85;
-    public static final int __GO_NAME__ = 86;
-    public static final int __GO_ID__ = 87;
-    public static final int __GO_INFO_MESSAGE__ = 88;
-    public static final int __GO_COLORMAP__ = 89;
-    public static final int __GO_COLORMAP_SIZE__ = 90;
-    public static final int __GO_RENDERING_MODE__ = 91;
-    public static final int __GO_PIXEL_DRAWING_MODE__ = 92;
-    public static final int __GO_ANTIALIASING__ = 93;
-    public static final int __GO_IMMEDIATE_DRAWING__ = 94;
-    public static final int __GO_BACKGROUND__ = 95;
-    public static final int __GO_EVENTHANDLER__ = 96;
-    public static final int __GO_EVENTHANDLER_NAME__ = 97;
-    public static final int __GO_EVENTHANDLER_ENABLE__ = 98;
-    public static final int __GO_TAG__ = 99;
-    public static final int __GO_ROTATION_TYPE__ = 100;
-    public static final int __GO_RESIZEFCN__ = 101;
-    public static final int __GO_CLOSEREQUESTFCN__ = 102;
-    public static final int __GO_DEFAULT_AXES__ = 103;
-    public static final int __GO_UPPER_LEFT_POINT__ = 104;
-    public static final int __GO_WIDTH__ = 105;
-    public static final int __GO_HEIGHT__ = 106;
-    public static final int __GO_START_ANGLE__ = 107;
-    public static final int __GO_END_ANGLE__ = 108;
-    public static final int __GO_ARC_DRAWING_METHOD__ = 109;
-    public static final int __GO_X_AXIS_VISIBLE__ = 110;
-    public static final int __GO_X_AXIS_REVERSE__ = 111;
-    public static final int __GO_X_AXIS_GRID_COLOR__ = 112;
-    public static final int __GO_X_AXIS_GRID_THICKNESS__ = 113;
-    public static final int __GO_X_AXIS_GRID_STYLE__ = 114;
-    public static final int __GO_X_AXIS_LABEL__ = 115;
-    public static final int __GO_X_AXIS_LOCATION__ = 116;
-    public static final int __GO_X_AXIS_LOG_FLAG__ = 117;
-    public static final int __GO_X_AXIS_TICKS__ = 118;
-    public static final int __GO_X_AXIS_FORMAT__ = 119;
-    public static final int __GO_X_AXIS_ST_FACTORS__ = 120;
-    public static final int __GO_X_AXIS_AUTO_TICKS__ = 121;
-    public static final int __GO_X_AXIS_NUMBER_TICKS__ = 122;
-    public static final int __GO_X_AXIS_TICKS_LOCATIONS__ = 123;
-    public static final int __GO_X_AXIS_TICKS_LABELS__ = 124;
-    public static final int __GO_X_AXIS_SUBTICKS__ = 125;
-    public static final int __GO_Y_AXIS_VISIBLE__ = 126;
-    public static final int __GO_Y_AXIS_REVERSE__ = 127;
-    public static final int __GO_Y_AXIS_GRID_COLOR__ = 128;
-    public static final int __GO_Y_AXIS_GRID_THICKNESS__ = 129;
-    public static final int __GO_Y_AXIS_GRID_STYLE__ = 130;
-    public static final int __GO_Y_AXIS_LABEL__ = 131;
-    public static final int __GO_Y_AXIS_LOCATION__ = 132;
-    public static final int __GO_Y_AXIS_LOG_FLAG__ = 133;
-    public static final int __GO_Y_AXIS_TICKS__ = 134;
-    public static final int __GO_Y_AXIS_FORMAT__ = 135;
-    public static final int __GO_Y_AXIS_ST_FACTORS__ = 136;
-    public static final int __GO_Y_AXIS_AUTO_TICKS__ = 137;
-    public static final int __GO_Y_AXIS_NUMBER_TICKS__ = 138;
-    public static final int __GO_Y_AXIS_TICKS_LOCATIONS__ = 139;
-    public static final int __GO_Y_AXIS_TICKS_LABELS__ = 140;
-    public static final int __GO_Y_AXIS_SUBTICKS__ = 141;
-    public static final int __GO_Z_AXIS_VISIBLE__ = 142;
-    public static final int __GO_Z_AXIS_REVERSE__ = 143;
-    public static final int __GO_Z_AXIS_GRID_COLOR__ = 144;
-    public static final int __GO_Z_AXIS_GRID_THICKNESS__ = 145;
-    public static final int __GO_Z_AXIS_GRID_STYLE__ = 146;
-    public static final int __GO_Z_AXIS_LABEL__ = 147;
-    public static final int __GO_Z_AXIS_LOCATION__ = 148;
-    public static final int __GO_Z_AXIS_LOG_FLAG__ = 149;
-    public static final int __GO_Z_AXIS_TICKS__ = 150;
-    public static final int __GO_Z_AXIS_FORMAT__ = 151;
-    public static final int __GO_Z_AXIS_ST_FACTORS__ = 152;
-    public static final int __GO_Z_AXIS_AUTO_TICKS__ = 153;
-    public static final int __GO_Z_AXIS_NUMBER_TICKS__ = 154;
-    public static final int __GO_Z_AXIS_TICKS_LOCATIONS__ = 155;
-    public static final int __GO_Z_AXIS_TICKS_LABELS__ = 156;
-    public static final int __GO_Z_AXIS_SUBTICKS__ = 157;
-    public static final int __GO_AUTO_SUBTICKS__ = 158;
-    public static final int __GO_GRID_POSITION__ = 159;
-    public static final int __GO_TITLE__ = 160;
-    public static final int __GO_AUTO_CLEAR__ = 161;
-    public static final int __GO_FILLED__ = 162;
-    public static final int __GO_CAMERA__ = 163;
-    public static final int __GO_VIEW__ = 164;
-    public static final int __GO_ISOVIEW__ = 165;
-    public static final int __GO_CUBE_SCALING__ = 166;
-    public static final int __GO_ROTATION_ANGLES__ = 167;
-    public static final int __GO_ROTATION_ANGLES_3D__ = 168;
-    public static final int __GO_BOX_TYPE__ = 169;
-    public static final int __GO_HIDDEN_AXIS_COLOR__ = 170;
-    public static final int __GO_X_TIGHT_LIMITS__ = 171;
-    public static final int __GO_Y_TIGHT_LIMITS__ = 172;
-    public static final int __GO_Z_TIGHT_LIMITS__ = 173;
-    public static final int __GO_DATA_BOUNDS__ = 174;
-    public static final int __GO_REAL_DATA_BOUNDS__ = 175;
-    public static final int __GO_ZOOM_ENABLED__ = 176;
-    public static final int __GO_ZOOM_BOX__ = 177;
-    public static final int __GO_AUTO_SCALE__ = 178;
-    public static final int __GO_FIRST_PLOT__ = 179;
-    public static final int __GO_MARGINS__ = 180;
-    public static final int __GO_AUTO_MARGINS__ = 181;
-    public static final int __GO_AXES_BOUNDS__ = 182;
-    public static final int __GO_CLIP_PROPERTY__ = 183;
-    public static final int __GO_CLIP_STATE__ = 184;
-    public static final int __GO_CLIP_BOX__ = 185;
-    public static final int __GO_CLIP_BOX_SET__ = 186;
-    public static final int __GO_LINE__ = 187;
-    public static final int __GO_LINE_MODE__ = 188;
-    public static final int __GO_LINE_STYLE__ = 189;
-    public static final int __GO_LINE_THICKNESS__ = 190;
-    public static final int __GO_LINE_COLOR__ = 191;
-    public static final int __GO_FILL_MODE__ = 192;
-    public static final int __GO_MARK__ = 193;
-    public static final int __GO_MARK_MODE__ = 194;
-    public static final int __GO_MARK_STYLE__ = 195;
-    public static final int __GO_MARK_SIZE_UNIT__ = 196;
-    public static final int __GO_MARK_SIZE__ = 197;
-    public static final int __GO_MARK_FOREGROUND__ = 198;
-    public static final int __GO_MARK_BACKGROUND__ = 199;
-    public static final int __GO_MARK_OFFSET__ = 200;
-    public static final int __GO_MARK_STRIDE__ = 201;
-    public static final int __GO_SELECTED__ = 202;
-    public static final int __GO_TICKS_DIRECTION__ = 203;
-    public static final int __GO_X_NUMBER_TICKS__ = 204;
-    public static final int __GO_Y_NUMBER_TICKS__ = 205;
-    public static final int __GO_X_TICKS_COORDS__ = 206;
-    public static final int __GO_Y_TICKS_COORDS__ = 207;
-    public static final int __GO_TICKS_COLOR__ = 208;
-    public static final int __GO_TICKS_SEGMENT__ = 209;
-    public static final int __GO_TICKS_STYLE__ = 210;
-    public static final int __GO_SUBTICKS__ = 211;
-    public static final int __GO_NUMBER_TICKS_LABELS__ = 212;
-    public static final int __GO_TICKS_LABELS__ = 213;
-    public static final int __GO_FORMATN__ = 214;
-    public static final int __GO_FONT__ = 215;
-    public static final int __GO_FONT_STYLE__ = 216;
-    public static final int __GO_FONT_SIZE__ = 217;
-    public static final int __GO_FONT_COLOR__ = 218;
-    public static final int __GO_FONT_FRACTIONAL__ = 219;
-    public static final int __GO_Z_BOUNDS__ = 220;
-    public static final int __GO_OUTSIDE_COLOR__ = 221;
-    public static final int __GO_COLOR_RANGE__ = 222;
-    public static final int __GO_DATA_MAPPING__ = 223;
-    public static final int __GO_FONT_ANGLE__ = 224;
-    public static final int __GO_AUTO_POSITION__ = 225;
-    public static final int __GO_CORNERS__ = 226;
-    public static final int __GO_AUTO_ROTATION__ = 227;
-    public static final int __GO_LINKS__ = 228;
-    public static final int __GO_LINKS_COUNT__ = 229;
-    public static final int __GO_LEGEND_LOCATION__ = 230;
-    public static final int __GO_MARKS_COUNT__ = 231;
-    public static final int __GO_LINE_WIDTH__ = 232;
-    public static final int __GO_CLOSED__ = 233;
-    public static final int __GO_ARROW_SIZE_FACTOR__ = 234;
-    public static final int __GO_POLYLINE_STYLE__ = 235;
-    public static final int __GO_INTERP_COLOR_VECTOR__ = 236;
-    public static final int __GO_INTERP_COLOR_VECTOR_SET__ = 237;
-    public static final int __GO_INTERP_COLOR_MODE__ = 238;
-    public static final int __GO_X_SHIFT__ = 239;
-    public static final int __GO_Y_SHIFT__ = 240;
-    public static final int __GO_Z_SHIFT__ = 241;
-    public static final int __GO_BAR_WIDTH__ = 242;
-    public static final int __GO_SURFACE_MODE__ = 243;
-    public static final int __GO_COLOR_MODE__ = 244;
-    public static final int __GO_COLOR_FLAG__ = 245;
-    public static final int __GO_ALIGNMENT__ = 246;
-    public static final int __GO_BOX__ = 247;
-    public static final int __GO_TEXT_BOX__ = 248;
-    public static final int __GO_TEXT_BOX_MODE__ = 249;
-    public static final int __GO_AUTO_DIMENSIONING__ = 250;
-    public static final int __GO_FORMATTED_TEXT__ = 251;
-    public static final int __GO_TEXT_ARRAY_DIMENSIONS__ = 252;
-    public static final int __GO_TEXT_STRINGS__ = 253;
-    public static final int __GO_BASE__ = 254;
-    public static final int __GO_BASE_X__ = 255;
-    public static final int __GO_BASE_Y__ = 256;
-    public static final int __GO_BASE_Z__ = 257;
-    public static final int __GO_DIRECTION__ = 258;
-    public static final int __GO_DIRECTION_X__ = 259;
-    public static final int __GO_DIRECTION_Y__ = 260;
-    public static final int __GO_DIRECTION_Z__ = 261;
-    public static final int __GO_ARROW_SIZE__ = 262;
-    public static final int __GO_SEGS_COLORS__ = 263;
-    public static final int __GO_COLORED__ = 264;
-    public static final int __GO_ARROWS__ = 265;
-    public static final int __GO_NUMBER_ARROWS__ = 266;
-    public static final int __GO_CHAMP_DIMENSIONS__ = 267;
-    public static final int __GO_BOUNDING_BOX__ = 268;
-    public static final int __GO_MAX_LENGTH__ = 269;
-    public static final int __GO_MAX_USABLE_LENGTH__ = 270;
-    public static final int __GO_HIDDEN_COLOR__ = 271;
-    public static final int __GO_STYLE__ = 272;
-    public static final int __GO_UI_CHECKBOX__ = 273;
-    public static final int __GO_UI_EDIT__ = 274;
-    public static final int __GO_UI_SPINNER__ = 275;
-    public static final int __GO_UI_FRAME__ = 276;
-    public static final int __GO_UI_FRAME_SCROLLABLE__ = 277;
-    public static final int __GO_UI_IMAGE__ = 278;
-    public static final int __GO_UI_LISTBOX__ = 279;
-    public static final int __GO_UI_POPUPMENU__ = 280;
-    public static final int __GO_UI_PUSHBUTTON__ = 281;
-    public static final int __GO_UI_RADIOBUTTON__ = 282;
-    public static final int __GO_UI_SLIDER__ = 283;
-    public static final int __GO_UI_TABLE__ = 284;
-    public static final int __GO_UI_TEXT__ = 285;
-    public static final int __GO_UI_LAYER__ = 286;
-    public static final int __GO_UI_BACKGROUNDCOLOR__ = 287;
-    public static final int __GO_UI_ENABLE__ = 288;
-    public static final int __GO_UI_FONTANGLE__ = 289;
-    public static final int __GO_UI_FONTNAME__ = 290;
-    public static final int __GO_UI_FONTSIZE__ = 291;
-    public static final int __GO_UI_FONTUNITS__ = 292;
-    public static final int __GO_UI_FONTWEIGHT__ = 293;
-    public static final int __GO_UI_FOREGROUNDCOLOR__ = 294;
-    public static final int __GO_UI_HORIZONTALALIGNMENT__ = 295;
-    public static final int __GO_UI_LISTBOXTOP__ = 296;
-    public static final int __GO_UI_LISTBOXTOP_SIZE__ = 297;
-    public static final int __GO_UI_MAX__ = 298;
-    public static final int __GO_UI_MIN__ = 299;
-    public static final int __GO_UI_RELIEF__ = 300;
-    public static final int __GO_UI_STRING__ = 301;
-    public static final int __GO_UI_TAB_STRING__ = 302;
-    public static final int __GO_UI_STRING_SIZE__ = 303;
-    public static final int __GO_UI_STRING_COLNB__ = 304;
-    public static final int __GO_UI_TOOLTIPSTRING__ = 305;
-    public static final int __GO_UI_TOOLTIPSTRING_SIZE__ = 306;
-    public static final int __GO_UI_SLIDERSTEP__ = 307;
-    public static final int __GO_UI_UNITS__ = 308;
-    public static final int __GO_UI_VALUE__ = 309;
-    public static final int __GO_UI_TAB_VALUE__ = 310;
-    public static final int __GO_UI_VALUE_SIZE__ = 311;
-    public static final int __GO_UI_VERTICALALIGNMENT__ = 312;
-    public static final int __GO_UIPARENTMENU__ = 313;
-    public static final int __GO_UICHILDMENU__ = 314;
-    public static final int __GO_UICHECKEDMENU__ = 315;
-    public static final int __GO_UI_CHECKED__ = 316;
-    public static final int __GO_UI_LABEL__ = 317;
-    public static final int __GO_UI_MNEMONIC__ = 318;
-    public static final int __GO_UI_ACCELERATOR__ = 319;
-    public static final int __GO_UI_SEPARATOR__ = 320;
-    public static final int __GO_UI_ICON__ = 321;
-    public static final int __GO_CONSOLE__ = 322;
-    public static final int __GO_SHOWHIDDENHANDLES__ = 323;
-    public static final int __GO_SHOWHIDDENPROPERTIES__ = 324;
-    public static final int __GO_USEDEPRECATEDLF__ = 325;
-    public static final int __GO_WAITBAR__ = 326;
-    public static final int __GO_PROGRESSIONBAR__ = 327;
-    public static final int __GO_UI_MESSAGE__ = 328;
-    public static final int __GO_UI_MESSAGE_SIZE__ = 329;
-    public static final int __GO_DATATIP__ = 330;
-    public static final int __GO_DATATIP_DATA__ = 331;
-    public static final int __GO_DATATIP_ORIENTATION__ = 332;
-    public static final int __GO_DATATIP_3COMPONENT__ = 333;
-    public static final int __GO_DATATIP_AUTOORIENTATION__ = 334;
-    public static final int __GO_DATATIP_INTERP_MODE__ = 335;
-    public static final int __GO_DATATIP_DISPLAY_FNC__ = 336;
-    public static final int __GO_DATATIP_BOX_MODE__ = 337;
-    public static final int __GO_DATATIP_LABEL_MODE__ = 338;
-    public static final int __GO_DATATIP_MARK__ = 339;
-    public static final int __GO_AMBIENTCOLOR__ = 340;
-    public static final int __GO_DIFFUSECOLOR__ = 341;
-    public static final int __GO_SPECULARCOLOR__ = 342;
-    public static final int __GO_COLOR_MATERIAL__ = 343;
-    public static final int __GO_MATERIAL_SHININESS__ = 344;
-    public static final int __GO_LIGHT__ = 345;
-    public static final int __GO_LIGHT_TYPE__ = 346;
-    public static final int __GO_DATATIPS__ = 347;
-    public static final int __GO_DATATIPS_COUNT__ = 348;
-    public static final int __GO_DATATIP_INDEXES__ = 349;
-    public static final int __GO_DATA_MODEL_DISPLAY_FUNCTION__ = 350;
-    public static final int __GO_DATA_MODEL_DISPLAY_FUNCTION_SIZE__ = 351;
-    public static final int __GO_RESIZE__ = 352;
-    public static final int __GO_TOOLBAR__ = 353;
-    public static final int __GO_TOOLBAR_VISIBLE__ = 354;
-    public static final int __GO_MENUBAR__ = 355;
-    public static final int __GO_MENUBAR_VISIBLE__ = 356;
-    public static final int __GO_INFOBAR_VISIBLE__ = 357;
-    public static final int __GO_DOCKABLE__ = 358;
-    public static final int __GO_LAYOUT__ = 359;
-    public static final int __GO_LAYOUT_SET__ = 360;
-    public static final int __GO_UI_TAB__ = 361;
-    public static final int __GO_UI_GRIDBAG_GRID__ = 362;
-    public static final int __GO_UI_GRIDBAG_WEIGHT__ = 363;
-    public static final int __GO_UI_GRIDBAG_FILL__ = 364;
-    public static final int __GO_UI_GRIDBAG_ANCHOR__ = 365;
-    public static final int __GO_UI_GRIDBAG_PADDING__ = 366;
-    public static final int __GO_UI_GRIDBAG_PREFERREDSIZE__ = 367;
-    public static final int __GO_UI_GRID_GRID__ = 368;
-    public static final int __GO_UI_GRID_PADDING__ = 369;
-    public static final int __GO_UI_BORDER_POSITION__ = 370;
-    public static final int __GO_UI_BORDER_PREFERREDSIZE__ = 371;
-    public static final int __GO_GRID_OPT_GRID__ = 372;
-    public static final int __GO_GRID_OPT_PADDING__ = 373;
-    public static final int __GO_BORDER_OPT_PADDING__ = 374;
-    public static final int __GO_UI_FRAME_BORDER__ = 375;
-    public static final int __GO_UI_FRAME_BORDER_COLOR__ = 376;
-    public static final int __GO_UI_FRAME_BORDER_HIGHLIGHT_IN__ = 377;
-    public static final int __GO_UI_FRAME_BORDER_HIGHLIGHT_OUT__ = 378;
-    public static final int __GO_UI_FRAME_BORDER_IN_BORDER__ = 379;
-    public static final int __GO_UI_FRAME_BORDER_JUSTIFICATION__ = 380;
-    public static final int __GO_UI_FRAME_BORDER_OUT_BORDER__ = 381;
-    public static final int __GO_UI_FRAME_BORDER_ROUNDED__ = 382;
-    public static final int __GO_UI_FRAME_BORDER_SHADOW_IN__ = 383;
-    public static final int __GO_UI_FRAME_BORDER_SHADOW_OUT__ = 384;
-    public static final int __GO_UI_FRAME_BORDER_TITLE__ = 385;
-    public static final int __GO_UI_FRAME_BORDER_POSITION__ = 386;
-    public static final int __GO_UI_FRAME_BORDER_STYLE__ = 387;
-    public static final int __GO_UI_GROUP_NAME__ = 388;
-    public static final int __GO_UI_TITLE_POSITION__ = 389;
-    public static final int __GO_UI_TITLE_SCROLL__ = 390;
-    public static final int __GO_UI_FRAME_BORDER_TYPE__ = 391;
-    public static final int __GO_UI_SCROLLABLE__ = 392;
+    public static final int __GO_DATA_MODEL_NUM_VERTICES_BY_ELEM__ = 59;
+    public static final int __GO_DATA_MODEL_FEC_ELEMENTS__ = 60;
+    public static final int __GO_DATA_MODEL_NUM_X__ = 61;
+    public static final int __GO_DATA_MODEL_NUM_Y__ = 62;
+    public static final int __GO_DATA_MODEL_NUM_Z__ = 63;
+    public static final int __GO_DATA_MODEL_GRID_SIZE__ = 64;
+    public static final int __GO_DATA_MODEL_X_DIMENSIONS__ = 65;
+    public static final int __GO_DATA_MODEL_Y_DIMENSIONS__ = 66;
+    public static final int __GO_MATPLOT_TRANSLATE__ = 67;
+    public static final int __GO_MATPLOT_SCALE__ = 68;
+    public static final int __GO_DATA_MODEL_MATPLOT_BOUNDS__ = 69;
+    public static final int __GO_DATA_MODEL_MATPLOT_TYPE__ = 70;
+    public static final int __GO_DATA_MODEL_MATPLOT_GL_TYPE__ = 71;
+    public static final int __GO_DATA_MODEL_MATPLOT_DATA_INFOS__ = 72;
+    public static final int __GO_DATA_MODEL_MATPLOT_DATA_TYPE__ = 73;
+    public static final int __GO_DATA_MODEL_MATPLOT_DATA_ORDER__ = 74;
+    public static final int __GO_DATA_MODEL_MATPLOT_IMAGE_TYPE__ = 75;
+    public static final int __GO_DATA_MODEL_MATPLOT_IMAGE_DATA__ = 76;
+    public static final int __GO_DATA_MODEL_MATPLOT_IMAGE_DATASIZE__ = 77;
+    public static final int __GO_REFERENCED__ = 78;
+    public static final int __GO_VALID__ = 79;
+    public static final int __GO_POSITION__ = 80;
+    public static final int __GO_SIZE__ = 81;
+    public static final int __GO_CANVAS__ = 82;
+    public static final int __GO_AUTORESIZE__ = 83;
+    public static final int __GO_VIEWPORT__ = 84;
+    public static final int __GO_AXES_SIZE__ = 85;
+    public static final int __GO_FIGURE_NAME__ = 86;
+    public static final int __GO_NAME__ = 87;
+    public static final int __GO_ID__ = 88;
+    public static final int __GO_INFO_MESSAGE__ = 89;
+    public static final int __GO_COLORMAP__ = 90;
+    public static final int __GO_COLORMAP_SIZE__ = 91;
+    public static final int __GO_RENDERING_MODE__ = 92;
+    public static final int __GO_PIXEL_DRAWING_MODE__ = 93;
+    public static final int __GO_ANTIALIASING__ = 94;
+    public static final int __GO_IMMEDIATE_DRAWING__ = 95;
+    public static final int __GO_BACKGROUND__ = 96;
+    public static final int __GO_EVENTHANDLER__ = 97;
+    public static final int __GO_EVENTHANDLER_NAME__ = 98;
+    public static final int __GO_EVENTHANDLER_ENABLE__ = 99;
+    public static final int __GO_TAG__ = 100;
+    public static final int __GO_ROTATION_TYPE__ = 101;
+    public static final int __GO_RESIZEFCN__ = 102;
+    public static final int __GO_CLOSEREQUESTFCN__ = 103;
+    public static final int __GO_DEFAULT_AXES__ = 104;
+    public static final int __GO_UPPER_LEFT_POINT__ = 105;
+    public static final int __GO_WIDTH__ = 106;
+    public static final int __GO_HEIGHT__ = 107;
+    public static final int __GO_START_ANGLE__ = 108;
+    public static final int __GO_END_ANGLE__ = 109;
+    public static final int __GO_ARC_DRAWING_METHOD__ = 110;
+    public static final int __GO_X_AXIS_VISIBLE__ = 111;
+    public static final int __GO_X_AXIS_REVERSE__ = 112;
+    public static final int __GO_X_AXIS_GRID_COLOR__ = 113;
+    public static final int __GO_X_AXIS_GRID_THICKNESS__ = 114;
+    public static final int __GO_X_AXIS_GRID_STYLE__ = 115;
+    public static final int __GO_X_AXIS_LABEL__ = 116;
+    public static final int __GO_X_AXIS_LOCATION__ = 117;
+    public static final int __GO_X_AXIS_LOG_FLAG__ = 118;
+    public static final int __GO_X_AXIS_TICKS__ = 119;
+    public static final int __GO_X_AXIS_FORMAT__ = 120;
+    public static final int __GO_X_AXIS_ST_FACTORS__ = 121;
+    public static final int __GO_X_AXIS_AUTO_TICKS__ = 122;
+    public static final int __GO_X_AXIS_NUMBER_TICKS__ = 123;
+    public static final int __GO_X_AXIS_TICKS_LOCATIONS__ = 124;
+    public static final int __GO_X_AXIS_TICKS_LABELS__ = 125;
+    public static final int __GO_X_AXIS_SUBTICKS__ = 126;
+    public static final int __GO_Y_AXIS_VISIBLE__ = 127;
+    public static final int __GO_Y_AXIS_REVERSE__ = 128;
+    public static final int __GO_Y_AXIS_GRID_COLOR__ = 129;
+    public static final int __GO_Y_AXIS_GRID_THICKNESS__ = 130;
+    public static final int __GO_Y_AXIS_GRID_STYLE__ = 131;
+    public static final int __GO_Y_AXIS_LABEL__ = 132;
+    public static final int __GO_Y_AXIS_LOCATION__ = 133;
+    public static final int __GO_Y_AXIS_LOG_FLAG__ = 134;
+    public static final int __GO_Y_AXIS_TICKS__ = 135;
+    public static final int __GO_Y_AXIS_FORMAT__ = 136;
+    public static final int __GO_Y_AXIS_ST_FACTORS__ = 137;
+    public static final int __GO_Y_AXIS_AUTO_TICKS__ = 138;
+    public static final int __GO_Y_AXIS_NUMBER_TICKS__ = 139;
+    public static final int __GO_Y_AXIS_TICKS_LOCATIONS__ = 140;
+    public static final int __GO_Y_AXIS_TICKS_LABELS__ = 141;
+    public static final int __GO_Y_AXIS_SUBTICKS__ = 142;
+    public static final int __GO_Z_AXIS_VISIBLE__ = 143;
+    public static final int __GO_Z_AXIS_REVERSE__ = 144;
+    public static final int __GO_Z_AXIS_GRID_COLOR__ = 145;
+    public static final int __GO_Z_AXIS_GRID_THICKNESS__ = 146;
+    public static final int __GO_Z_AXIS_GRID_STYLE__ = 147;
+    public static final int __GO_Z_AXIS_LABEL__ = 148;
+    public static final int __GO_Z_AXIS_LOCATION__ = 149;
+    public static final int __GO_Z_AXIS_LOG_FLAG__ = 150;
+    public static final int __GO_Z_AXIS_TICKS__ = 151;
+    public static final int __GO_Z_AXIS_FORMAT__ = 152;
+    public static final int __GO_Z_AXIS_ST_FACTORS__ = 153;
+    public static final int __GO_Z_AXIS_AUTO_TICKS__ = 154;
+    public static final int __GO_Z_AXIS_NUMBER_TICKS__ = 155;
+    public static final int __GO_Z_AXIS_TICKS_LOCATIONS__ = 156;
+    public static final int __GO_Z_AXIS_TICKS_LABELS__ = 157;
+    public static final int __GO_Z_AXIS_SUBTICKS__ = 158;
+    public static final int __GO_AUTO_SUBTICKS__ = 159;
+    public static final int __GO_GRID_POSITION__ = 160;
+    public static final int __GO_TITLE__ = 161;
+    public static final int __GO_AUTO_CLEAR__ = 162;
+    public static final int __GO_FILLED__ = 163;
+    public static final int __GO_CAMERA__ = 164;
+    public static final int __GO_VIEW__ = 165;
+    public static final int __GO_ISOVIEW__ = 166;
+    public static final int __GO_CUBE_SCALING__ = 167;
+    public static final int __GO_ROTATION_ANGLES__ = 168;
+    public static final int __GO_ROTATION_ANGLES_3D__ = 169;
+    public static final int __GO_BOX_TYPE__ = 170;
+    public static final int __GO_HIDDEN_AXIS_COLOR__ = 171;
+    public static final int __GO_X_TIGHT_LIMITS__ = 172;
+    public static final int __GO_Y_TIGHT_LIMITS__ = 173;
+    public static final int __GO_Z_TIGHT_LIMITS__ = 174;
+    public static final int __GO_DATA_BOUNDS__ = 175;
+    public static final int __GO_REAL_DATA_BOUNDS__ = 176;
+    public static final int __GO_ZOOM_ENABLED__ = 177;
+    public static final int __GO_ZOOM_BOX__ = 178;
+    public static final int __GO_AUTO_SCALE__ = 179;
+    public static final int __GO_FIRST_PLOT__ = 180;
+    public static final int __GO_MARGINS__ = 181;
+    public static final int __GO_AUTO_MARGINS__ = 182;
+    public static final int __GO_AXES_BOUNDS__ = 183;
+    public static final int __GO_CLIP_PROPERTY__ = 184;
+    public static final int __GO_CLIP_STATE__ = 185;
+    public static final int __GO_CLIP_BOX__ = 186;
+    public static final int __GO_CLIP_BOX_SET__ = 187;
+    public static final int __GO_LINE__ = 188;
+    public static final int __GO_LINE_MODE__ = 189;
+    public static final int __GO_LINE_STYLE__ = 190;
+    public static final int __GO_LINE_THICKNESS__ = 191;
+    public static final int __GO_LINE_COLOR__ = 192;
+    public static final int __GO_FILL_MODE__ = 193;
+    public static final int __GO_MARK__ = 194;
+    public static final int __GO_MARK_MODE__ = 195;
+    public static final int __GO_MARK_STYLE__ = 196;
+    public static final int __GO_MARK_SIZE_UNIT__ = 197;
+    public static final int __GO_MARK_SIZE__ = 198;
+    public static final int __GO_MARK_FOREGROUND__ = 199;
+    public static final int __GO_MARK_BACKGROUND__ = 200;
+    public static final int __GO_MARK_OFFSET__ = 201;
+    public static final int __GO_MARK_STRIDE__ = 202;
+    public static final int __GO_SELECTED__ = 203;
+    public static final int __GO_TICKS_DIRECTION__ = 204;
+    public static final int __GO_X_NUMBER_TICKS__ = 205;
+    public static final int __GO_Y_NUMBER_TICKS__ = 206;
+    public static final int __GO_X_TICKS_COORDS__ = 207;
+    public static final int __GO_Y_TICKS_COORDS__ = 208;
+    public static final int __GO_TICKS_COLOR__ = 209;
+    public static final int __GO_TICKS_SEGMENT__ = 210;
+    public static final int __GO_TICKS_STYLE__ = 211;
+    public static final int __GO_SUBTICKS__ = 212;
+    public static final int __GO_NUMBER_TICKS_LABELS__ = 213;
+    public static final int __GO_TICKS_LABELS__ = 214;
+    public static final int __GO_FORMATN__ = 215;
+    public static final int __GO_FONT__ = 216;
+    public static final int __GO_FONT_STYLE__ = 217;
+    public static final int __GO_FONT_SIZE__ = 218;
+    public static final int __GO_FONT_COLOR__ = 219;
+    public static final int __GO_FONT_FRACTIONAL__ = 220;
+    public static final int __GO_Z_BOUNDS__ = 221;
+    public static final int __GO_OUTSIDE_COLOR__ = 222;
+    public static final int __GO_COLOR_RANGE__ = 223;
+    public static final int __GO_DATA_MAPPING__ = 224;
+    public static final int __GO_FONT_ANGLE__ = 225;
+    public static final int __GO_AUTO_POSITION__ = 226;
+    public static final int __GO_CORNERS__ = 227;
+    public static final int __GO_AUTO_ROTATION__ = 228;
+    public static final int __GO_LINKS__ = 229;
+    public static final int __GO_LINKS_COUNT__ = 230;
+    public static final int __GO_LEGEND_LOCATION__ = 231;
+    public static final int __GO_MARKS_COUNT__ = 232;
+    public static final int __GO_LINE_WIDTH__ = 233;
+    public static final int __GO_CLOSED__ = 234;
+    public static final int __GO_ARROW_SIZE_FACTOR__ = 235;
+    public static final int __GO_POLYLINE_STYLE__ = 236;
+    public static final int __GO_INTERP_COLOR_VECTOR__ = 237;
+    public static final int __GO_INTERP_COLOR_VECTOR_SET__ = 238;
+    public static final int __GO_INTERP_COLOR_MODE__ = 239;
+    public static final int __GO_X_SHIFT__ = 240;
+    public static final int __GO_Y_SHIFT__ = 241;
+    public static final int __GO_Z_SHIFT__ = 242;
+    public static final int __GO_BAR_WIDTH__ = 243;
+    public static final int __GO_SURFACE_MODE__ = 244;
+    public static final int __GO_COLOR_MODE__ = 245;
+    public static final int __GO_COLOR_FLAG__ = 246;
+    public static final int __GO_ALIGNMENT__ = 247;
+    public static final int __GO_BOX__ = 248;
+    public static final int __GO_TEXT_BOX__ = 249;
+    public static final int __GO_TEXT_BOX_MODE__ = 250;
+    public static final int __GO_AUTO_DIMENSIONING__ = 251;
+    public static final int __GO_FORMATTED_TEXT__ = 252;
+    public static final int __GO_TEXT_ARRAY_DIMENSIONS__ = 253;
+    public static final int __GO_TEXT_STRINGS__ = 254;
+    public static final int __GO_BASE__ = 255;
+    public static final int __GO_BASE_X__ = 256;
+    public static final int __GO_BASE_Y__ = 257;
+    public static final int __GO_BASE_Z__ = 258;
+    public static final int __GO_DIRECTION__ = 259;
+    public static final int __GO_DIRECTION_X__ = 260;
+    public static final int __GO_DIRECTION_Y__ = 261;
+    public static final int __GO_DIRECTION_Z__ = 262;
+    public static final int __GO_ARROW_SIZE__ = 263;
+    public static final int __GO_SEGS_COLORS__ = 264;
+    public static final int __GO_COLORED__ = 265;
+    public static final int __GO_ARROWS__ = 266;
+    public static final int __GO_NUMBER_ARROWS__ = 267;
+    public static final int __GO_CHAMP_DIMENSIONS__ = 268;
+    public static final int __GO_BOUNDING_BOX__ = 269;
+    public static final int __GO_MAX_LENGTH__ = 270;
+    public static final int __GO_MAX_USABLE_LENGTH__ = 271;
+    public static final int __GO_HIDDEN_COLOR__ = 272;
+    public static final int __GO_STYLE__ = 273;
+    public static final int __GO_UI_CHECKBOX__ = 274;
+    public static final int __GO_UI_EDIT__ = 275;
+    public static final int __GO_UI_SPINNER__ = 276;
+    public static final int __GO_UI_FRAME__ = 277;
+    public static final int __GO_UI_FRAME_SCROLLABLE__ = 278;
+    public static final int __GO_UI_IMAGE__ = 279;
+    public static final int __GO_UI_LISTBOX__ = 280;
+    public static final int __GO_UI_POPUPMENU__ = 281;
+    public static final int __GO_UI_PUSHBUTTON__ = 282;
+    public static final int __GO_UI_RADIOBUTTON__ = 283;
+    public static final int __GO_UI_SLIDER__ = 284;
+    public static final int __GO_UI_TABLE__ = 285;
+    public static final int __GO_UI_TEXT__ = 286;
+    public static final int __GO_UI_LAYER__ = 287;
+    public static final int __GO_UI_BACKGROUNDCOLOR__ = 288;
+    public static final int __GO_UI_ENABLE__ = 289;
+    public static final int __GO_UI_FONTANGLE__ = 290;
+    public static final int __GO_UI_FONTNAME__ = 291;
+    public static final int __GO_UI_FONTSIZE__ = 292;
+    public static final int __GO_UI_FONTUNITS__ = 293;
+    public static final int __GO_UI_FONTWEIGHT__ = 294;
+    public static final int __GO_UI_FOREGROUNDCOLOR__ = 295;
+    public static final int __GO_UI_HORIZONTALALIGNMENT__ = 296;
+    public static final int __GO_UI_LISTBOXTOP__ = 297;
+    public static final int __GO_UI_LISTBOXTOP_SIZE__ = 298;
+    public static final int __GO_UI_MAX__ = 299;
+    public static final int __GO_UI_MIN__ = 300;
+    public static final int __GO_UI_RELIEF__ = 301;
+    public static final int __GO_UI_STRING__ = 302;
+    public static final int __GO_UI_TAB_STRING__ = 303;
+    public static final int __GO_UI_STRING_SIZE__ = 304;
+    public static final int __GO_UI_STRING_COLNB__ = 305;
+    public static final int __GO_UI_TOOLTIPSTRING__ = 306;
+    public static final int __GO_UI_TOOLTIPSTRING_SIZE__ = 307;
+    public static final int __GO_UI_SLIDERSTEP__ = 308;
+    public static final int __GO_UI_UNITS__ = 309;
+    public static final int __GO_UI_VALUE__ = 310;
+    public static final int __GO_UI_TAB_VALUE__ = 311;
+    public static final int __GO_UI_VALUE_SIZE__ = 312;
+    public static final int __GO_UI_VERTICALALIGNMENT__ = 313;
+    public static final int __GO_UIPARENTMENU__ = 314;
+    public static final int __GO_UICHILDMENU__ = 315;
+    public static final int __GO_UICHECKEDMENU__ = 316;
+    public static final int __GO_UI_CHECKED__ = 317;
+    public static final int __GO_UI_LABEL__ = 318;
+    public static final int __GO_UI_MNEMONIC__ = 319;
+    public static final int __GO_UI_ACCELERATOR__ = 320;
+    public static final int __GO_UI_SEPARATOR__ = 321;
+    public static final int __GO_UI_ICON__ = 322;
+    public static final int __GO_CONSOLE__ = 323;
+    public static final int __GO_SHOWHIDDENHANDLES__ = 324;
+    public static final int __GO_SHOWHIDDENPROPERTIES__ = 325;
+    public static final int __GO_USEDEPRECATEDLF__ = 326;
+    public static final int __GO_WAITBAR__ = 327;
+    public static final int __GO_PROGRESSIONBAR__ = 328;
+    public static final int __GO_UI_MESSAGE__ = 329;
+    public static final int __GO_UI_MESSAGE_SIZE__ = 330;
+    public static final int __GO_DATATIP__ = 331;
+    public static final int __GO_DATATIP_DATA__ = 332;
+    public static final int __GO_DATATIP_ORIENTATION__ = 333;
+    public static final int __GO_DATATIP_3COMPONENT__ = 334;
+    public static final int __GO_DATATIP_AUTOORIENTATION__ = 335;
+    public static final int __GO_DATATIP_INTERP_MODE__ = 336;
+    public static final int __GO_DATATIP_DISPLAY_FNC__ = 337;
+    public static final int __GO_DATATIP_BOX_MODE__ = 338;
+    public static final int __GO_DATATIP_LABEL_MODE__ = 339;
+    public static final int __GO_DATATIP_MARK__ = 340;
+    public static final int __GO_AMBIENTCOLOR__ = 341;
+    public static final int __GO_DIFFUSECOLOR__ = 342;
+    public static final int __GO_SPECULARCOLOR__ = 343;
+    public static final int __GO_COLOR_MATERIAL__ = 344;
+    public static final int __GO_MATERIAL_SHININESS__ = 345;
+    public static final int __GO_LIGHT__ = 346;
+    public static final int __GO_LIGHT_TYPE__ = 347;
+    public static final int __GO_DATATIPS__ = 348;
+    public static final int __GO_DATATIPS_COUNT__ = 349;
+    public static final int __GO_DATATIP_INDEXES__ = 350;
+    public static final int __GO_DATA_MODEL_DISPLAY_FUNCTION__ = 351;
+    public static final int __GO_DATA_MODEL_DISPLAY_FUNCTION_SIZE__ = 352;
+    public static final int __GO_RESIZE__ = 353;
+    public static final int __GO_TOOLBAR__ = 354;
+    public static final int __GO_TOOLBAR_VISIBLE__ = 355;
+    public static final int __GO_MENUBAR__ = 356;
+    public static final int __GO_MENUBAR_VISIBLE__ = 357;
+    public static final int __GO_INFOBAR_VISIBLE__ = 358;
+    public static final int __GO_DOCKABLE__ = 359;
+    public static final int __GO_LAYOUT__ = 360;
+    public static final int __GO_LAYOUT_SET__ = 361;
+    public static final int __GO_UI_TAB__ = 362;
+    public static final int __GO_UI_GRIDBAG_GRID__ = 363;
+    public static final int __GO_UI_GRIDBAG_WEIGHT__ = 364;
+    public static final int __GO_UI_GRIDBAG_FILL__ = 365;
+    public static final int __GO_UI_GRIDBAG_ANCHOR__ = 366;
+    public static final int __GO_UI_GRIDBAG_PADDING__ = 367;
+    public static final int __GO_UI_GRIDBAG_PREFERREDSIZE__ = 368;
+    public static final int __GO_UI_GRID_GRID__ = 369;
+    public static final int __GO_UI_GRID_PADDING__ = 370;
+    public static final int __GO_UI_BORDER_POSITION__ = 371;
+    public static final int __GO_UI_BORDER_PREFERREDSIZE__ = 372;
+    public static final int __GO_GRID_OPT_GRID__ = 373;
+    public static final int __GO_GRID_OPT_PADDING__ = 374;
+    public static final int __GO_BORDER_OPT_PADDING__ = 375;
+    public static final int __GO_UI_FRAME_BORDER__ = 376;
+    public static final int __GO_UI_FRAME_BORDER_COLOR__ = 377;
+    public static final int __GO_UI_FRAME_BORDER_HIGHLIGHT_IN__ = 378;
+    public static final int __GO_UI_FRAME_BORDER_HIGHLIGHT_OUT__ = 379;
+    public static final int __GO_UI_FRAME_BORDER_IN_BORDER__ = 380;
+    public static final int __GO_UI_FRAME_BORDER_JUSTIFICATION__ = 381;
+    public static final int __GO_UI_FRAME_BORDER_OUT_BORDER__ = 382;
+    public static final int __GO_UI_FRAME_BORDER_ROUNDED__ = 383;
+    public static final int __GO_UI_FRAME_BORDER_SHADOW_IN__ = 384;
+    public static final int __GO_UI_FRAME_BORDER_SHADOW_OUT__ = 385;
+    public static final int __GO_UI_FRAME_BORDER_TITLE__ = 386;
+    public static final int __GO_UI_FRAME_BORDER_POSITION__ = 387;
+    public static final int __GO_UI_FRAME_BORDER_STYLE__ = 388;
+    public static final int __GO_UI_GROUP_NAME__ = 389;
+    public static final int __GO_UI_TITLE_POSITION__ = 390;
+    public static final int __GO_UI_TITLE_SCROLL__ = 391;
+    public static final int __GO_UI_FRAME_BORDER_TYPE__ = 392;
+    public static final int __GO_UI_SCROLLABLE__ = 393;
 
 }
index cdaa87e..878eb00 100644 (file)
@@ -11,6 +11,8 @@
  *
  */
 
+// swig -java -package org.scilab.modules.graphic_objects -outdir ../java/org/scilab/modules/graphic_objects/ ObjectData.i
+
 %module ObjectData
  
 
@@ -164,26 +166,41 @@ int _getSegsSize(int uid) {
 %}
 
 %typemap(out) double * FEC {
-       $result = (*jenv)->NewDoubleArray(jenv, _getFecTrianglesSize(arg1));
-       (*jenv)->SetDoubleArrayRegion(jenv, $result, 0, _getFecTrianglesSize(arg1), $1);
+       $result = (*jenv)->NewDoubleArray(jenv, _getFecElementsSize(arg1));
+       (*jenv)->SetDoubleArrayRegion(jenv, $result, 0, _getFecElementsSize(arg1), $1);
 }
 
-%apply double * FEC { double * getFecTriangles(int uid) }
+%apply double * FEC { double * getFecElements(int uid) }
 %{
 
-double * getFecTriangles(int uid) {
+double * getFecElements(int uid) {
 
-    double * triangles;
-    getGraphicObjectProperty(uid, __GO_DATA_MODEL_FEC_TRIANGLES__, jni_double_vector, (void**)&triangles);
-    return triangles;
+    double * elements;
+    getGraphicObjectProperty(uid, __GO_DATA_MODEL_FEC_ELEMENTS__, jni_double_vector, (void**)&elements);
+    return elements;
 }
 
-int _getFecTrianglesSize(int uid) {
+int _getFecElementsSize(int uid) {
     
     int indices;
     int * pIndices = &indices;
+    int nVertex = 0;
+    int* piNVertex = &nVertex;
+
     getGraphicObjectProperty(uid, __GO_DATA_MODEL_NUM_INDICES__, jni_int, (void**)&pIndices);
-    return indices * 5;
+    getGraphicObjectProperty(uid, __GO_DATA_MODEL_NUM_VERTICES_BY_ELEM__, jni_int, (void**) &piNVertex);
+    
+    return indices * (nVertex + 2);
+}
+
+int getFecNumVerticesByElement(int uid) {
+    
+    int nVertex = 0;
+    int* piNVertex = &nVertex;
+
+    getGraphicObjectProperty(uid, __GO_DATA_MODEL_NUM_VERTICES_BY_ELEM__, jni_int, (void**) &piNVertex);
+    
+    return nVertex;
 }
 
 %}
@@ -262,7 +279,8 @@ double * getChampX(int uid);
 double * getChampY(int uid);
 double * getArrows(int uid);
 double * getSegsData(int uid);
-double * getFecTriangles(int uid);
+double * getFecElements(int uid);
 double * getFecData(int uid);
 double * getArcUpperLeftPoint(int uid);
-double * getArcData(int uid);
\ No newline at end of file
+double * getArcData(int uid);
+int getFecNumVerticesByElement(int uid);
index 32f4635..f466291 100644 (file)
@@ -261,19 +261,34 @@ int _getSegsSize(int uid) {
 
 
 
-double * getFecTriangles(int uid) {
+double * getFecElements(int uid) {
 
-    double * triangles;
-    getGraphicObjectProperty(uid, __GO_DATA_MODEL_FEC_TRIANGLES__, jni_double_vector, (void**)&triangles);
-    return triangles;
+    double * elements;
+    getGraphicObjectProperty(uid, __GO_DATA_MODEL_FEC_ELEMENTS__, jni_double_vector, (void**)&elements);
+    return elements;
 }
 
-int _getFecTrianglesSize(int uid) {
+int _getFecElementsSize(int uid) {
     
     int indices;
     int * pIndices = &indices;
+    int nVertex = 0;
+    int* piNVertex = &nVertex;
+
     getGraphicObjectProperty(uid, __GO_DATA_MODEL_NUM_INDICES__, jni_int, (void**)&pIndices);
-    return indices * 5;
+    getGraphicObjectProperty(uid, __GO_DATA_MODEL_NUM_VERTICES_BY_ELEM__, jni_int, (void**) &piNVertex);
+    
+    return indices * (nVertex + 2);
+}
+
+int getFecNumVerticesByElement(int uid) {
+    
+    int nVertex = 0;
+    int* piNVertex = &nVertex;
+
+    getGraphicObjectProperty(uid, __GO_DATA_MODEL_NUM_VERTICES_BY_ELEM__, jni_int, (void**) &piNVertex);
+    
+    return nVertex;
 }
 
 
@@ -397,7 +412,7 @@ SWIGEXPORT jobject JNICALL Java_org_scilab_modules_graphic_1objects_ObjectDataJN
 }
 
 
-SWIGEXPORT jobject JNICALL Java_org_scilab_modules_graphic_1objects_ObjectDataJNI_getFecTriangles(JNIEnv *jenv, jclass jcls, jint jarg1) {
+SWIGEXPORT jobject JNICALL Java_org_scilab_modules_graphic_1objects_ObjectDataJNI_getFecElements(JNIEnv *jenv, jclass jcls, jint jarg1) {
   jobject jresult = 0 ;
   int arg1 ;
   double *result = 0 ;
@@ -405,10 +420,10 @@ SWIGEXPORT jobject JNICALL Java_org_scilab_modules_graphic_1objects_ObjectDataJN
   (void)jenv;
   (void)jcls;
   arg1 = (int)jarg1; 
-  result = (double *)getFecTriangles(arg1);
+  result = (double *)getFecElements(arg1);
   {
-    jresult = (*jenv)->NewDoubleArray(jenv, _getFecTrianglesSize(arg1));
-    (*jenv)->SetDoubleArrayRegion(jenv, jresult, 0, _getFecTrianglesSize(arg1), result);
+    jresult = (*jenv)->NewDoubleArray(jenv, _getFecElementsSize(arg1));
+    (*jenv)->SetDoubleArrayRegion(jenv, jresult, 0, _getFecElementsSize(arg1), result);
   }
   return jresult;
 }
@@ -465,6 +480,20 @@ SWIGEXPORT jobject JNICALL Java_org_scilab_modules_graphic_1objects_ObjectDataJN
 }
 
 
+SWIGEXPORT jint JNICALL Java_org_scilab_modules_graphic_1objects_ObjectDataJNI_getFecNumVerticesByElement(JNIEnv *jenv, jclass jcls, jint jarg1) {
+  jint jresult = 0 ;
+  int arg1 ;
+  int result;
+  
+  (void)jenv;
+  (void)jcls;
+  arg1 = (int)jarg1; 
+  result = (int)getFecNumVerticesByElement(arg1);
+  jresult = (jint)result; 
+  return jresult;
+}
+
+
 #ifdef __cplusplus
 }
 #endif
index 8713e12..fe4eb7b 100755 (executable)
@@ -65,8 +65,9 @@ __GO_DATA_MODEL_NUM_VERTICES__
 __GO_DATA_MODEL_NUM_INDICES__
 __GO_DATA_MODEL_INDICES__
 __GO_DATA_MODEL_VALUES__
+__GO_DATA_MODEL_NUM_VERTICES_BY_ELEM__
 
-__GO_DATA_MODEL_FEC_TRIANGLES__
+__GO_DATA_MODEL_FEC_ELEMENTS__
 
 __GO_DATA_MODEL_NUM_X__
 __GO_DATA_MODEL_NUM_Y__
index 00a72fa..4cf6558 100644 (file)
@@ -13,7 +13,7 @@
 <refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org"  xml:lang="en" xml:id="fec">
     <refnamediv>
         <refname>fec</refname>
-        <refpurpose>pseudo-color plot of a function defined on a triangular mesh</refpurpose>
+        <refpurpose>pseudo-color plot of a function defined on a mesh</refpurpose>
     </refnamediv>
     <refsynopsisdiv>
         <title>Calling Sequence</title>
                 <term>triangles</term>
                 <listitem>
                     <para>
-                        is a <literal>[Ntr,5]</literal> matrix. Each line of <literal>triangles</literal> specifies a triangle 
-                        of the  mesh <literal>triangle(j) = [number,node1,node2,node3,flag]</literal>. 
-                        <literal>node1,node2,node3</literal> are the number of the nodes which constitutes 
-                        the triangle. number is the number of the triangle and flag is an integer 
-                        not used in the fec function
+                        is a <literal>[Ntr,N+2]</literal> matrix. Each line of <varname>triangles</varname> specifies a convex polygon 
+                        of the  mesh <literal>triangles(j) = [number,node1,node2,node3, ..., nodeN, flag]</literal>. 
+                        <literal>node1,node2,node3, ..., nodeN</literal> are the number of the nodes which constitutes 
+                        the polygon. number is the number of the polygons and flag is an integer 
+                        not used in the fec function.
                     </para>
                 </listitem>
             </varlistentry>
@@ -98,8 +98,8 @@
     </refsection>
     <refsection>
         <title>Description</title>
-        <para>This function is the good one to draw linear triangular finite element solutions 
-            or simply to display a function defined on a triangulation. The color interpolation
+        <para>This function is the good one to draw linear finite element solutions, based on polygons
+            or simply to display a function defined on a polygon mapping. The color interpolation
             is done through software computation and so it is not too fast.
         </para>
         <para>
             section).
         </para>
         <para>    
-            The <literal>zminmax</literal> argument gives the z values associated with the first and the last 
+            The <varname>zminmax</varname> argument gives the z values associated with the first and the last 
             color (of the current colormap). More exactly if the colormap have nc colors and if we note 
-            <emphasis>dz = (zmax-zmin)/nc</emphasis>, then the part of the triangulation where  
+            <emphasis>dz = (zmax-zmin)/nc</emphasis>, then the part of the polygon mapping where  
             <emphasis>zmin + (i-1)dz &lt;= z &lt; zmin + i dz</emphasis> is filled with the color <emphasis>i</emphasis>). 
             By default <emphasis>zmin = min(func)</emphasis> and <emphasis>zmax = max(func)</emphasis>. If you want to do 
             an animation with func values that varie in time, take for zmin and zmax the global 
             minimum and maximum or something close.
         </para>
         <para>
-            The <literal>colout</literal> argument lets the user choosing the colors for the 2 extremes
+            The <varname>colout</varname> argument lets the user choosing the colors for the 2 extremes
             regions <emphasis>{func &lt; zmin}</emphasis> and <emphasis>{func &gt; zmax}</emphasis>, <literal>under_min_col</literal> and 
             <literal>upper_max_col</literal> may be equal (independantly) to:
         </para>
             </varlistentry>
         </variablelist>
         <para>
-            If you do not want to use the complete colormap you may use the <literal>colminmax</literal>
+            If you do not want to use the complete colormap you may use the <varname>colminmax</varname>
             argument with <emphasis>1 &lt;= colmin &lt; colmax &lt;= nc</emphasis> (nc being the number of colors 
             of the current colormap) so as to use only the [colmin,colmax]  sub-part of the colormap.
             (by default all the colors of the colormap are used).
         </para>
         <para>
+            Note that for historical reasons, the third input argument is called <varname>triangles</varname>, but <function>fec</function> accepts all types of convex polygons.
+        </para>
+        <para>
             See the demo files <literal>demos/fec</literal>:
         </para>
         <para>
@@ -339,6 +342,34 @@ show_window()
             xtitle("fec using the jet colormap")
             show_window()
         </scilab:image>
+        <programlisting role="example"><![CDATA[ 
+// define a mapping with one quadrangle (4 vertices, 1 quadrangle)
+x = [1 2 2 1];
+y = [1 1 2 2];
+T = [1 1 2 3 4 0];
+z = [-1; -1; 1; 1];  // values of the func at each vertices
+
+clf()
+f = gcf();
+f.color_map = jetcolormap(12);
+colorbar(-1,1);
+fec(x,y,T,z,mesh=%t)
+xtitle("fec using the hot colormap, composed by one quadrangle")
+ ]]></programlisting>
+        <scilab:image>
+            // define a mapping with one quadrangle (4 vertices, 1 quadrangle)
+            x = [1 2 2 1];
+            y = [1 1 2 2];
+            T = [1 1 2 3 4 0];
+            z = [-1 -1 1 1];  // values of the func at each vertices
+            
+            clf()
+            f = gcf();
+            f.color_map = jetcolormap(12);
+            colorbar(-1,1);
+            fec(x,y,T,z,mesh=%t)
+            xtitle("fec using the hot colormap, composed by one quadrangle")
+        </scilab:image>
     </refsection>
     <refsection role="see also">
         <title>See Also</title>
@@ -354,4 +385,17 @@ show_window()
             </member>
         </simplelist>
     </refsection>
+    <refsection>
+        <title>History</title>
+        <revhistory>
+            <revision>
+                <revnumber>5.5.2</revnumber>
+                <revremark>
+                    <para>
+                        Mapping is not limited on triangles anymore. All types of convex polygons are acceptable.
+                    </para>
+                </revremark>
+            </revision>
+        </revhistory>
+    </refsection>
 </refentry>
index 61a52c3..d71a6f6 100644 (file)
                 <term>triangles: </term>
                 <listitem>
                     <para>
-                        This is a five column matrix <literal>[tn,n1,n2,n3,flag]</literal>.
-                        <literal>tn(j)</literal> is the triangle number. <literal>n1(j)</literal>,
-                        <literal>n2(j)</literal> and <literal>n3(j)</literal> are the index of the nodes
-                        which constitute the triangle. (<literal>flag(j)</literal> is not
-                        used).
+                        This is a  <literal>[Ntr,N+2]</literal> matrix. Each line of <varname>triangles</varname> specifies a convex polygon 
+                        of the  mesh <literal>triangles(j) = [number,node1,node2,node3, ..., nodeN, flag]</literal>. 
+                        <literal>node1,node2,node3, ..., nodeN</literal> are the number of the nodes which constitutes 
+                        the polygon. number is the number of the polygons and flag is an integer 
+                        not used.
                     </para>
                 </listitem>
             </varlistentry>
index 0b541de..26aa054 100644 (file)
@@ -3,7 +3,7 @@
     <refnamediv>
         <refname>fec</refname>
         <refpurpose>dessin en pseudo-couleurs d'une surface
-            définie sur une triangulation
+            définie sur un maillage constitué de polygones convexes
         </refpurpose>
     </refnamediv>
     <refsynopsisdiv>
                 <term>triangles</term>
                 <listitem>
                     <para>
-                        une matrice <literal>[Ntr,5]</literal>. Chaque ligne de
-                        <literal>triangles</literal> représente un triangle du maillage
-                        <literal>triangle(j) = [number,node1,node2,node3,flag]</literal>.
-                        <literal>node1,node2,node3</literal> sont les numéros des sommets qui
-                        constituent le triangle j. number est le numéro du triangle et flag
+                        une matrice <literal>[Ntr, N+2]</literal>. Chaque ligne de
+                        <varname>triangles</varname> représente un polygone du maillage
+                        <literal>triangles(j) = [number,node1,node2,node3, ..., nodeN, flag]</literal>.
+                        <literal>node1,node2,node3, ..., nodeN</literal> sont les numéros des sommets qui
+                        constituent le polygone j. number est le numéro du polygone et flag
                         est un entier qui n'est pas utilisé par fec.
                     </para>
                 </listitem>
             <varlistentry>
                 <term>zminmax</term>
                 <listitem>
-                    <para>parfait pour faire des animations avec fec. zminmax est un
+                    <para>
+                        parfait pour faire des animations avec fec. <varname>zminmax</varname> est un
                         vecteur de taille 2 [zmin zmax] qui donne les z associés à  la
                         première et la dernière couleur (de la table des couleurs courante).
                         Plus exactement si la table des couleurs a nc couleurs et si on note
-                        dz = (zmax-zmin)/nc, alors la partie de la triangulation où zmin +
-                        (i-1)dz &lt;= z &lt; zmin + i dz est remplie avec la couleur i). Par
-                        défaut zmin = min(func) et zmax = max(func). Si vous voulez faire
+                        <emphasis>dz = (zmax-zmin)/nc</emphasis>, alors la partie du maillage où <emphasis>zmin +
+                            (i-1)dz &lt;= z &lt; zmin + i dz
+                        </emphasis>
+                        est remplie avec la couleur <emphasis>i</emphasis>). Par
+                        défaut <emphasis>zmin = min(func)</emphasis> et <emphasis>zmax = max(func)</emphasis>. Si vous voulez faire
                         une animation avec des valeurs de func changeant en fonction du
                         temps, prenez zmin et zmax égaux au minimum et maximum globaux.
                         ATTENTION : pour les valeurs de func plus grandes que zmax la
                     </para>
                 </listitem>
             </varlistentry>
+            <varlistentry>
+                <term>colout</term>
+                <listitem>
+                    <para>un vecteur de 2 entiers [under_min_col upper_max_col]</para>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term>mesh</term>
+                <listitem>
+                    <para>un booléen, valeur par défaut %f (doit être %t pour afficher le maillage)</para>
+                </listitem>
+            </varlistentry>
         </variablelist>
     </refsection>
     <refsection>
         <title>Description</title>
-        <para>Voir les fonctions de démonstration dans le répertoire
-            <literal>demos/fec</literal>.
+        <para>Cette fonction est utile pour afficher les solutions des équations obtenues par la méthode des éléments finis, ou
+            simplement pour afficher une fonction basée sur un maillage constitué de polygones.
         </para>
         <para>
-            <literal>fec.ex1</literal> est une simple démo dans laquelle le maillage et
-            la fonction sont construits en langage Scilab.
+            Pour des raisons historiques, le troisième argument d'entrée est nommé <varname>triangles</varname>, mais <function>fec</function> accepte tous les types de polygones convexes.
         </para>
         <para>
-            <literal>fec.ex2</literal> est un exemple où le maillage est construit avec
-            un mailleur externe (type amdba). Un ensemble de macros
-            (<literal>macros.sci</literal>) peut être utilisé pour lire les fichiers de
-            données correspondants.
-        </para>
-    </refsection>
-    <refsection>
-        <title>Exemples</title>
-        <programlisting role="example"><![CDATA[ 
+            <para>Voir les fonctions de démonstration dans le répertoire
+                <literal>demos/fec</literal>.
+            </para>
+            <para>
+                <literal>fec.ex1</literal> est une simple démo dans laquelle le maillage et
+                la fonction sont construits en langage Scilab.
+            </para>
+            <para>
+                <literal>fec.ex2</literal> est un exemple où le maillage est construit avec
+                un mailleur externe (type amdba). Un ensemble de macros
+                (<literal>macros.sci</literal>) peut être utilisé pour lire les fichiers de
+                données correspondants.
+            </para>
+        </refsection>
+        <refsection>
+            <title>Exemples</title>
+            <programlisting role="example"><![CDATA[ 
 // define a mini triangulation (4 vertices, 2 triangles)
 x = [0 1 0 -1];
 y = [0 0 1  1];
@@ -120,25 +142,25 @@ subplot(1,2,2)
   xtitle("fec example (without the mesh)")
 show_window()
  ]]></programlisting>
-        <scilab:image>
-            x = [0 1 0 -1];
-            y = [0 0 1  1];
-            T = [1 1 2 3 1;
-            2 3 4 1 1];
-            z = [0 1 0 -1];  // values of the func at each vertices
-            clf()
-            xset("colormap",jetcolormap(64))
-            subplot(1,2,1)
-            colorbar(-1,1)
-            fec(x,y,T,z,strf="040",mesh=%t)
-            xtitle("fec example (with the mesh)")
-            subplot(1,2,2)
-            colorbar(-1,1)
-            fec(x,y,T,z,strf="040")  // rmq: mesh=%f by default
-            xtitle("fec example (without the mesh)")
-            show_window()
-        </scilab:image>
-        <programlisting role="example"><![CDATA[ 
+            <scilab:image>
+                x = [0 1 0 -1];
+                y = [0 0 1  1];
+                T = [1 1 2 3 1;
+                2 3 4 1 1];
+                z = [0 1 0 -1];  // values of the func at each vertices
+                clf()
+                xset("colormap",jetcolormap(64))
+                subplot(1,2,1)
+                colorbar(-1,1)
+                fec(x,y,T,z,strf="040",mesh=%t)
+                xtitle("fec example (with the mesh)")
+                subplot(1,2,2)
+                colorbar(-1,1)
+                fec(x,y,T,z,strf="040")  // rmq: mesh=%f by default
+                xtitle("fec example (without the mesh)")
+                show_window()
+            </scilab:image>
+            <programlisting role="example"><![CDATA[ 
 // define a mini triangulation (4 vertices, 2 triangles)
 x = [0 1 0 -1];
 y = [0 0 1  1];
@@ -154,22 +176,22 @@ fec(x,y,T,z,strf="040", zminmax=[-0.5 0.5], mesh=%t)
 xtitle("fec example : using zminmax argument")
 show_window()
  ]]></programlisting>
-        <scilab:image>
-            x = [0 1 0 -1];
-            y = [0 0 1  1];
-            T = [1 1 2 3 1;
-            2 3 4 1 1];
-            z = [0 1 0 -1];  // values of the func at each vertices
-            // this example shows the effect of zminmax and uses the
-            // previous example data (you have to execute the it before)
-            clf()
-            xset("colormap",jetcolormap(64))
-            colorbar(-0.5,0.5)  // be careful colorbar must be set by hands !
-            fec(x,y,T,z,strf="040", zminmax=[-0.5 0.5], mesh=%t)
-            xtitle("fec example : using zminmax argument")
-            show_window()
-        </scilab:image>
-        <programlisting role="example"><![CDATA[ 
+            <scilab:image>
+                x = [0 1 0 -1];
+                y = [0 0 1  1];
+                T = [1 1 2 3 1;
+                2 3 4 1 1];
+                z = [0 1 0 -1];  // values of the func at each vertices
+                // this example shows the effect of zminmax and uses the
+                // previous example data (you have to execute the it before)
+                clf()
+                xset("colormap",jetcolormap(64))
+                colorbar(-0.5,0.5)  // be careful colorbar must be set by hands !
+                fec(x,y,T,z,strf="040", zminmax=[-0.5 0.5], mesh=%t)
+                xtitle("fec example : using zminmax argument")
+                show_window()
+            </scilab:image>
+            <programlisting role="example"><![CDATA[ 
 // define a mini triangulation (4 vertices, 2 triangles)
 x = [0 1 0 -1];
 y = [0 0 1  1];
@@ -198,36 +220,36 @@ subplot(2,2,4)
   xtitle("fec example : using zminmax and colout =[0 -1]")
 show_window()
  ]]></programlisting>
-        <scilab:image>
-            // define a mini triangulation (4 vertices, 2 triangles)
-            x = [0 1 0 -1];
-            y = [0 0 1  1];
-            T = [1 1 2 3 1;
-            2 3 4 1 1];
-            z = [0 1 0 -1];  // values of the func at each vertices
-            // this example shows the effect of zminmax and colout. It uses
-            // also the data of the first example (you have to execute the it before)
-            clf()
-            xset("colormap",jetcolormap(64))
-            subplot(2,2,1)
-            colorbar(-0.5,0.5)
-            fec(x,y,T,z,strf="040", zminmax=[-0.5 0.5], colout=[0 0], mesh=%t)
-            xtitle("fec example : using zminmax and colout =[0 0]")
-            subplot(2,2,2)
-            colorbar(-0.5,0.5)
-            fec(x,y,T,z,strf="040", zminmax=[-0.5 0.5], colout=[32 32], mesh=%t)
-            xtitle("fec example : using zminmax and colout =[32 32]")
-            subplot(2,2,3)
-            colorbar(-0.5,0.5)
-            fec(x,y,T,z,strf="040", zminmax=[-0.5 0.5], colout=[-1 0], mesh=%t)
-            xtitle("fec example : using zminmax and colout =[-1 0]")
-            subplot(2,2,4)
-            colorbar(-0.5,0.5)
-            fec(x,y,T,z,strf="040", zminmax=[-0.5 0.5], colout=[0 -1], mesh=%t)
-            xtitle("fec example : using zminmax and colout =[0 -1]")
-            show_window()
-        </scilab:image>
-        <programlisting role="example"><![CDATA[ 
+            <scilab:image>
+                // define a mini triangulation (4 vertices, 2 triangles)
+                x = [0 1 0 -1];
+                y = [0 0 1  1];
+                T = [1 1 2 3 1;
+                2 3 4 1 1];
+                z = [0 1 0 -1];  // values of the func at each vertices
+                // this example shows the effect of zminmax and colout. It uses
+                // also the data of the first example (you have to execute the it before)
+                clf()
+                xset("colormap",jetcolormap(64))
+                subplot(2,2,1)
+                colorbar(-0.5,0.5)
+                fec(x,y,T,z,strf="040", zminmax=[-0.5 0.5], colout=[0 0], mesh=%t)
+                xtitle("fec example : using zminmax and colout =[0 0]")
+                subplot(2,2,2)
+                colorbar(-0.5,0.5)
+                fec(x,y,T,z,strf="040", zminmax=[-0.5 0.5], colout=[32 32], mesh=%t)
+                xtitle("fec example : using zminmax and colout =[32 32]")
+                subplot(2,2,3)
+                colorbar(-0.5,0.5)
+                fec(x,y,T,z,strf="040", zminmax=[-0.5 0.5], colout=[-1 0], mesh=%t)
+                xtitle("fec example : using zminmax and colout =[-1 0]")
+                subplot(2,2,4)
+                colorbar(-0.5,0.5)
+                fec(x,y,T,z,strf="040", zminmax=[-0.5 0.5], colout=[0 -1], mesh=%t)
+                xtitle("fec example : using zminmax and colout =[0 -1]")
+                show_window()
+            </scilab:image>
+            <programlisting role="example"><![CDATA[ 
 // define a mini triangulation (4 vertices, 2 triangles)
 x = [0 1 0 -1];
 y = [0 0 1  1];
@@ -250,39 +272,80 @@ subplot(1,2,2)
   xtitle("fec using the jet colormap")
 show_window()
  ]]></programlisting>
-        <scilab:image>
-            // define a mini triangulation (4 vertices, 2 triangles)
-            x = [0 1 0 -1];
-            y = [0 0 1  1];
-            T = [1 1 2 3 1;
-            2 3 4 1 1];
-            z = [0 1 0 -1];  // values of the func at each vertices
-            
-            // this example shows a feature from colminmax:
-            // playing with 2 colormaps for 2 subplots. It
-            // uses also the data of the first example.
-            clf()
-            xset("colormap",[hotcolormap(64);jetcolormap(64)])
-            subplot(1,2,1)
-            colorbar(-1,1,[1 64])
-            fec(x,y,T,z,strf="040", colminmax=[1 64], mesh=%t)
-            xtitle("fec using the hot colormap")
-            subplot(1,2,2)
-            colorbar(-1,1,[65 128])
-            fec(x,y,T,z,strf="040", colminmax=[65 128], mesh=%t)
-            xtitle("fec using the jet colormap")
-            show_window()
-        </scilab:image>
-    </refsection>
-    <refsection role="see also">
-        <title>Voir aussi</title>
-        <simplelist type="inline">
-            <member>
-                <link linkend="Sfgrayplot">Sfgrayplot</link>
-            </member>
-            <member>
-                <link linkend="Sgrayplot">Sgrayplot</link>
-            </member>
-        </simplelist>
-    </refsection>
-</refentry>
+            <scilab:image>
+                // define a mini triangulation (4 vertices, 2 triangles)
+                x = [0 1 0 -1];
+                y = [0 0 1  1];
+                T = [1 1 2 3 1;
+                2 3 4 1 1];
+                z = [0 1 0 -1];  // values of the func at each vertices
+                
+                // this example shows a feature from colminmax:
+                // playing with 2 colormaps for 2 subplots. It
+                // uses also the data of the first example.
+                clf()
+                xset("colormap",[hotcolormap(64);jetcolormap(64)])
+                subplot(1,2,1)
+                colorbar(-1,1,[1 64])
+                fec(x,y,T,z,strf="040", colminmax=[1 64], mesh=%t)
+                xtitle("fec using the hot colormap")
+                subplot(1,2,2)
+                colorbar(-1,1,[65 128])
+                fec(x,y,T,z,strf="040", colminmax=[65 128], mesh=%t)
+                xtitle("fec using the jet colormap")
+                show_window()
+            </scilab:image>
+            <programlisting role="example"><![CDATA[ 
+// define a mapping with one quadrangle (4 vertices, 1 quadrangle)
+x = [1 2 2 1];
+y = [1 1 2 2];
+T = [1 1 2 3 4 0];
+z = [-1; -1; 1; 1];  // values of the func at each vertices
+
+clf()
+f = gcf();
+f.color_map = jetcolormap(12);
+colorbar(-1,1);
+fec(x,y,T,z,mesh=%t)
+xtitle("fec using the hot colormap, composed by one quadrangle")
+ ]]></programlisting>
+            <scilab:image>
+                // define a mapping with one quadrangle (4 vertices, 1 quadrangle)
+                x = [1 2 2 1];
+                y = [1 1 2 2];
+                T = [1 1 2 3 4 0];
+                z = [-1 -1 1 1];  // values of the func at each vertices
+                
+                clf()
+                f = gcf();
+                f.color_map = jetcolormap(12);
+                colorbar(-1,1);
+                fec(x,y,T,z,mesh=%t)
+                xtitle("fec using the hot colormap, composed by one quadrangle")
+            </scilab:image>
+        </refsection>
+        <refsection role="see also">
+            <title>Voir aussi</title>
+            <simplelist type="inline">
+                <member>
+                    <link linkend="Sfgrayplot">Sfgrayplot</link>
+                </member>
+                <member>
+                    <link linkend="Sgrayplot">Sgrayplot</link>
+                </member>
+            </simplelist>
+        </refsection>
+        <refsection>
+            <title>History</title>
+            <revhistory>
+                <revision>
+                    <revnumber>5.5.2</revnumber>
+                    <revremark>
+                        <para>
+                            Le maillage peut désormais être consitué de polygones convexes.
+                        </para>
+                    </revremark>
+                </revision>
+            </revhistory>
+        </refsection>
+    </refentry>
index 5b4ce39..c264e79 100644 (file)
@@ -68,7 +68,7 @@ GRAPHICS_IMPEXP int ConstructPolyline(int iParentsubwinUID, double *pvecx, doubl
 GRAPHICS_IMPEXP int ConstructSurface(int iParentsubwinUID, sciTypeOf3D typeof3d, double *pvecx, double *pvecy, double *pvecz, double *zcol, int izcol, int dimzx, int dimzy, int *flag, double *ebox, int flagcolor, int *isfac, int *m1, int *n1, int *m2, int *n2, int *m3, int *n3, int *m3n, int *n3n); /* BUILD */
 GRAPHICS_IMPEXP int ConstructGrayplot(int iParentsubwinUID, double *vx, double *vy, double *vz, int nx, int ny, int type);  /* BUILD */
 GRAPHICS_IMPEXP int ConstructImplot(int iParentsubwinUID, double * rect, unsigned char *vz, int nx, int ny, int plottype);  /* BUILD */
-GRAPHICS_IMPEXP int ConstructFec(int iParentsubwinUID, double *pvecx, double *pvecy, double *pnoeud, double *pfun, int Nnode, int Ntr, double *zminmax, int *colminmax, int *colout, BOOL with_mesh);   /* BUILD */
+GRAPHICS_IMPEXP int ConstructFec(int iParentsubwinUID, double *pvecx, double *pvecy, double *pnoeud, double *pfun, int Nnode, int Ntr, int Nvertex, double *zminmax, int *colminmax, int *colout, BOOL with_mesh);   /* BUILD */
 GRAPHICS_IMPEXP int ConstructLight(char* fname, int iSubwin, int type, BOOL visible, double * position, double * direction, double * ambient_color, double * diffuse_color, double * specular_color);
 
 #endif /* __SCI_BUILD__ */
index f93237a..6225fe3 100644 (file)
@@ -51,6 +51,6 @@ GRAPHICS_IMPEXP void Objdrawaxis(char dir, char tics, double* x, int* nx, double
 
 GRAPHICS_IMPEXP void Objnumb(char* fname, unsigned long fname_len, int n, int flag, double x, double y, double* angle, double* box);
 
-GRAPHICS_IMPEXP void Objfec(double x[], double y[], double noeud[], double* fun, int* n, int* m, char strflag[], char legend[], double brect[], int aaint[], double Zminmax[], int Colminmax[], int ColOut[], BOOL WithMesh, BOOL flagNax);
+GRAPHICS_IMPEXP void Objfec(double x[], double y[], double noeud[], double* fun, int* n, int* m, int* p, char strflag[], char legend[], double brect[], int aaint[], double Zminmax[], int Colminmax[], int ColOut[], BOOL WithMesh, BOOL flagNax);
 
 #endif /* _SCI_CALL_H_ */
index 0d49a0c..d44601e 100644 (file)
@@ -145,11 +145,13 @@ int sci_fec(char *fname, unsigned long fname_len)
         return 1;
     }
 
-    if (n3 != 5)
+    if (n3 < 5)
     {
-        Scierror(999, _("%s: Wrong number of columns for input argument #%d: %d expected.\n"), fname, 3, 5);
+        Scierror(999, _("%s: Wrong number of columns for input argument #%d: at least %d expected.\n"), fname, 3, 5);
         return 0;
     }
+    // remove number and flag
+    n3 -= 2;
 
     //get variable address
     sciErr = getVarAddressFromPosition(pvApiCtx, 4, &piAddr4);
@@ -203,7 +205,7 @@ int sci_fec(char *fname, unsigned long fname_len)
     }
     mn1 = m1 * n1;
 
-    Objfec ((l1), (l2), (l3), (l4), &mn1, &m3, strf, legend, rect, nax, zminmax, colminmax, colOut, withMesh, flagNax);
+    Objfec ((l1), (l2), (l3), (l4), &mn1, &m3, &n3, strf, legend, rect, nax, zminmax, colminmax, colOut, withMesh, flagNax);
 
     AssignOutputVariable(pvApiCtx, 1) = 0;
     ReturnArguments(pvApiCtx);
index 8f806bc..05fda9f 100644 (file)
@@ -625,7 +625,7 @@ int ConstructImplot(int iParentsubwinUID, double *pvecx, unsigned char *pvecz, i
  * @see sciSetCurrentObj
  */
 int ConstructFec(int iParentsubwinUID, double *pvecx, double *pvecy, double *pnoeud,
-                 double *pfun, int Nnode, int Ntr, double *zminmax, int *colminmax, int *colout, BOOL with_mesh)
+                 double *pfun, int Nnode, int Ntr, int Nvertex, double *zminmax, int *colminmax, int *colout, BOOL with_mesh)
 {
     int iObj = 0;
     int iFecId = 0;
@@ -671,6 +671,14 @@ int ConstructFec(int iParentsubwinUID, double *pvecx, double *pvecy, double *pno
         return 0;
     }
 
+    result = setGraphicObjectPropertyAndNoWarn(iObj, __GO_DATA_MODEL_NUM_VERTICES_BY_ELEM__, &Nvertex, jni_int, 1);
+    if (result == 0)
+    {
+        deleteGraphicObject(iObj);
+        deleteDataObject(iObj);
+        return 0;
+    }
+
     /* Allocates the triangle indices and values array */
     result = setGraphicObjectPropertyAndNoWarn(iObj, __GO_DATA_MODEL_NUM_INDICES__, &Ntr, jni_int, 1);
 
@@ -683,9 +691,9 @@ int ConstructFec(int iParentsubwinUID, double *pvecx, double *pvecy, double *pno
 
     setGraphicObjectPropertyAndNoWarn(iObj, __GO_DATA_MODEL_X__, pvecx, jni_double_vector, Nnode);
     setGraphicObjectPropertyAndNoWarn(iObj, __GO_DATA_MODEL_Y__, pvecy, jni_double_vector, Nnode);
-
+    
     /* Fec-specific property: triangle indices plus special values (triangle number and flag) */
-    setGraphicObjectPropertyAndNoWarn(iObj, __GO_DATA_MODEL_FEC_TRIANGLES__, pnoeud, jni_double_vector, Ntr);
+    setGraphicObjectPropertyAndNoWarn(iObj, __GO_DATA_MODEL_FEC_ELEMENTS__, pnoeud, jni_double_vector, Ntr);
 
     /* Function values */
     setGraphicObjectProperty(iObj, __GO_DATA_MODEL_VALUES__, pfun, jni_double_vector, Nnode);
index f2f027d..8ae4d5e 100644 (file)
@@ -75,7 +75,7 @@ static void coloutPatch(int colout[2]);
  *  first and last color of the colormap (Bruno.Pincon@iecn.u-nancy.fr)
 ---------------------------------------------------------------*/
 
-int C2F(fec)(double *x, double *y, double *triangles, double *func, int *Nnode, int *Ntr,
+int C2F(fec)(double *x, double *y, double *triangles, double *func, int *Nnode, int *Ntr, int *Nvertex, 
              char *strflag, char *legend, double *brect, int *aaint, double *zminmax,
              int *colminmax, int *colout, BOOL with_mesh, BOOL flagNax, int lstr1, int lstr2)
 {
@@ -223,7 +223,7 @@ int C2F(fec)(double *x, double *y, double *triangles, double *func, int *Nnode,
     /* [-1,-1] */
     coloutPatch(colout);
     iFecUID = ConstructFec(iSubwinUID, x, y, triangles, func,
-                           *Nnode, *Ntr, zminmax, colminmax, colout, with_mesh);
+                           *Nnode, *Ntr, *Nvertex, zminmax, colminmax, colout, with_mesh);
 
     if (iFecUID == 0)
     {
index 712d07d..8379dff 100644 (file)
@@ -42,7 +42,7 @@
  *  possibilities to set zmin, zmax by the user and also to set the
  *  first and last color of the colormap (Bruno.Pincon@iecn.u-nancy.fr)
  */
-int C2F(fec)(double *x, double *y, double *triangles, double *func, int *Nnode, int *Ntr,
+int C2F(fec)(double *x, double *y, double *triangles, double *func, int *Nnode, int *Ntr, int *Nvertex,
              char *strflag, char *legend, double *brect, int *aaint, double *zminmax,
              int *colminmax, int *colout, BOOL with_mesh, BOOL flagNax, int lstr1, int lstr2);
 
index 3b3496f..7e3d86b 100644 (file)
 /*------------------------------------------------------------------------*/
 int get_triangles_property(void* _pvCtx, int iObjUID)
 {
-    double* triangles = NULL;
-    int numTriangles = 0;
-    int *piNumTriangles = &numTriangles;
+    double* elements = NULL;
+    int numElements = 0;
+    int *piNumElements = &numElements;
+    int nVertex = 0;
+    int* piNVertex = &nVertex;
 
-    getGraphicObjectProperty(iObjUID, __GO_DATA_MODEL_FEC_TRIANGLES__, jni_double_vector, (void **)&triangles);
+    getGraphicObjectProperty(iObjUID, __GO_DATA_MODEL_FEC_ELEMENTS__, jni_double_vector, (void **)&elements);
 
-    if (triangles == NULL)
+    if (elements == NULL)
     {
-        Scierror(999, _("'%s' property does not exist for this handle.\n"), "triangles");
+        Scierror(999, _("'%s' property does not exist for this handle.\n"), "elements");
         return -1;
     }
 
-    getGraphicObjectProperty(iObjUID, __GO_DATA_MODEL_NUM_INDICES__, jni_int, (void**)&piNumTriangles);
-    if (piNumTriangles == NULL)
+    getGraphicObjectProperty(iObjUID, __GO_DATA_MODEL_NUM_INDICES__, jni_int, (void**)&piNumElements);
+    if (piNumElements == NULL)
     {
-        Scierror(999, _("Wrong value for '%s' property.\n"), "triangles");
+        Scierror(999, _("Wrong value for '%s' property.\n"), "elements");
         return -1;
     }
 
-    return sciReturnMatrix(_pvCtx, triangles, numTriangles , 5);
+    getGraphicObjectProperty(iObjUID, __GO_DATA_MODEL_NUM_VERTICES_BY_ELEM__, jni_int, (void**) &piNVertex);
+
+    return sciReturnMatrix(_pvCtx, elements, numElements , nVertex + 2);
 }
 /*------------------------------------------------------------------------*/
index f8f8e35..3a35efc 100644 (file)
@@ -60,12 +60,19 @@ int set_triangles_property(void* _pvCtx, int iObjUID, void* _pvData, int valueTy
         return SET_PROPERTY_ERROR;
     }
 
-    if (nbCol != 5)
+    if (nbCol < 5)
     {
-        Scierror(999, _("Wrong size for '%s' property: Must have %d columns.\n"), "triangles", 5);
+        Scierror(999, _("Wrong size for '%s' property: Must have at least %d columns.\n"), "triangles", 5);
         return SET_PROPERTY_ERROR;
     }
 
+    result = setGraphicObjectPropertyAndNoWarn(iObjUID, __GO_DATA_MODEL_NUM_VERTICES_BY_ELEM__, &nbCol, jni_int, 1);
+    if (result == FALSE)
+    {
+        Scierror(999, _("%s: No more memory.\n"), "set_triangles_property");
+        return 0;
+    }
+
     /* Resizes the triangle array if required */
     result  = setGraphicObjectPropertyAndNoWarn(iObjUID, __GO_DATA_MODEL_NUM_INDICES__, &nbRow, jni_int, 1);
 
@@ -77,7 +84,7 @@ int set_triangles_property(void* _pvCtx, int iObjUID, void* _pvData, int valueTy
 
     pnoeud = (double*)_pvData;
 
-    setGraphicObjectProperty(iObjUID, __GO_DATA_MODEL_FEC_TRIANGLES__, pnoeud, jni_double_vector, nbRow);
+    setGraphicObjectProperty(iObjUID, __GO_DATA_MODEL_FEC_ELEMENTS__, pnoeud, jni_double_vector, nbRow);
 
     return SET_PROPERTY_SUCCEED;
 }
index fc54e11..e4dcabb 100644 (file)
@@ -943,6 +943,7 @@ void Objfec (double    x[]        ,
              double  * fun        ,
              int * n          ,
              int * m          ,
+             int * p          ,
              char      strflag[]  ,
              char      legend[]   ,
              double    brect[]    ,
@@ -953,7 +954,7 @@ void Objfec (double    x[]        ,
              BOOL      WithMesh   ,
              BOOL      flagNax)
 {
-    C2F(fec)(x, y, noeud, fun, n, m, strflag, legend, brect, aaint,
+    C2F(fec)(x, y, noeud, fun, n, m, p, strflag, legend, brect, aaint,
              Zminmax, Colminmax, ColOut, WithMesh, flagNax, 4L, bsiz);
 }
 /*------------------------------------------------------------------------*/
diff --git a/scilab/modules/graphics/tests/unit_tests/fec.dia.ref b/scilab/modules/graphics/tests/unit_tests/fec.dia.ref
new file mode 100644 (file)
index 0000000..ba592bf
--- /dev/null
@@ -0,0 +1,86 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2015 - Scilab Enterprises - Charlotte HECQUET - Calixte DENIZET
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- TEST WITH GRAPHIC -->
+//
+// <-- Short Description -->
+// Unit test for fec function
+//
+// First test: quadrangles+mesh
+a = [1 1;
+     2 1;
+     2 2;
+     1 2]
+ a  =
+    1.    1.  
+    2.    1.  
+    2.    2.  
+    1.    2.  
+x = a(:,1);
+y = a(:,2);
+triangle = [1 1 2 3 4 0];
+clf();
+f=gcf();
+f.color_map=jetcolormap(12);
+func = rand(4,1);
+fec(x,y,triangle,func,mesh=%t);
+assert_checkequal(f.children(1).children(1).children.data, [a func]);
+assert_checkequal(f.children(1).children(1).children.triangles, triangle);
+assert_checkequal(f.children(1).children(1).children.line_mode , "on");
+assert_checkequal(f.children(1).children(1).children.z_bounds, [0 0]);
+assert_checkequal(f.children(1).children(1).children.color_range, [0 0]);
+assert_checkequal(f.children(1).children(1).children.outside_colors, [0 0]);
+// Second test: quadrangles without mesh
+clf();
+f=gcf();
+func = rand(4,1);
+f.color_map=jetcolormap(12);
+fec(x,y,triangle,func,mesh=%f);
+assert_checkequal(f.children(1).children(1).children.data, [a func]);
+assert_checkequal(f.children(1).children(1).children.triangles, triangle);
+assert_checkequal(f.children(1).children(1).children.line_mode , "off");
+assert_checkequal(f.children(1).children(1).children.z_bounds, [0 0]);
+assert_checkequal(f.children(1).children(1).children.color_range, [0 0]);
+assert_checkequal(f.children(1).children(1).children.outside_colors, [0 0]);
+// Third test: quadrangles+[zmin zmax]
+clf();
+f=gcf();
+func = rand(4,1);
+f.color_map=jetcolormap(12);
+fec(x,y,triangle,func,zminmax=[0.25 0.5]);
+assert_checkequal(f.children(1).children(1).children.data, [a func]);
+assert_checkequal(f.children(1).children(1).children.triangles, triangle);
+assert_checkequal(f.children(1).children(1).children.line_mode , "off");
+assert_checkequal(f.children(1).children(1).children.z_bounds, [0.25 0.5]);
+assert_checkequal(f.children(1).children(1).children.color_range, [0 0]);
+assert_checkequal(f.children(1).children(1).children.outside_colors, [0 0]);
+// Forth test: quadrangles+colminmax
+clf();
+f=gcf();
+func = rand(4,1);
+f.color_map=jetcolormap(12);
+fec(x,y,triangle,func,colminmax=[1 6]);
+assert_checkequal(f.children(1).children(1).children.data, [a func]);
+assert_checkequal(f.children(1).children(1).children.triangles, triangle);
+assert_checkequal(f.children(1).children(1).children.line_mode , "off");
+assert_checkequal(f.children(1).children(1).children.z_bounds, [0 0]);
+assert_checkequal(f.children(1).children(1).children.color_range, [1 6]);
+assert_checkequal(f.children(1).children(1).children.outside_colors, [0 0]);
+// Fifth test: quadrangles+zminmax+colout
+clf();
+f=gcf();
+func = rand(4,1);
+f.color_map=jetcolormap(12);
+fec(x,y,triangle,func,zminmax=[0.25 0.75], colout=[0 0]);
+assert_checkequal(f.children(1).children(1).children.data, [a func]);
+assert_checkequal(f.children(1).children(1).children.triangles, triangle);
+assert_checkequal(f.children(1).children(1).children.line_mode , "off");
+assert_checkequal(f.children(1).children(1).children.z_bounds, [0.25 0.75]);
+assert_checkequal(f.children(1).children(1).children.color_range, [0 0]);
+assert_checkequal(f.children(1).children(1).children.outside_colors, [-1 -1]);
+close();
diff --git a/scilab/modules/graphics/tests/unit_tests/fec.tst b/scilab/modules/graphics/tests/unit_tests/fec.tst
new file mode 100644 (file)
index 0000000..77f743a
--- /dev/null
@@ -0,0 +1,85 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2015 - Scilab Enterprises - Charlotte HECQUET - Calixte DENIZET
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- TEST WITH GRAPHIC -->
+//
+// <-- Short Description -->
+// Unit test for fec function
+//
+
+// First test: quadrangles+mesh
+a = [1 1;
+     2 1;
+     2 2;
+     1 2]
+x = a(:,1);
+y = a(:,2);
+triangle = [1 1 2 3 4 0];
+clf();
+f=gcf();
+f.color_map=jetcolormap(12);
+func = rand(4,1);
+fec(x,y,triangle,func,mesh=%t);
+assert_checkequal(f.children(1).children(1).children.data, [a func]);
+assert_checkequal(f.children(1).children(1).children.triangles, triangle);
+assert_checkequal(f.children(1).children(1).children.line_mode , "on");
+assert_checkequal(f.children(1).children(1).children.z_bounds, [0 0]);
+assert_checkequal(f.children(1).children(1).children.color_range, [0 0]);
+assert_checkequal(f.children(1).children(1).children.outside_colors, [0 0]);
+
+// Second test: quadrangles without mesh
+clf();
+f=gcf();
+func = rand(4,1);
+f.color_map=jetcolormap(12);
+fec(x,y,triangle,func,mesh=%f);
+assert_checkequal(f.children(1).children(1).children.data, [a func]);
+assert_checkequal(f.children(1).children(1).children.triangles, triangle);
+assert_checkequal(f.children(1).children(1).children.line_mode , "off");
+assert_checkequal(f.children(1).children(1).children.z_bounds, [0 0]);
+assert_checkequal(f.children(1).children(1).children.color_range, [0 0]);
+assert_checkequal(f.children(1).children(1).children.outside_colors, [0 0]);
+
+// Third test: quadrangles+[zmin zmax]
+clf();
+f=gcf();
+func = rand(4,1);
+f.color_map=jetcolormap(12);
+fec(x,y,triangle,func,zminmax=[0.25 0.5]);
+assert_checkequal(f.children(1).children(1).children.data, [a func]);
+assert_checkequal(f.children(1).children(1).children.triangles, triangle);
+assert_checkequal(f.children(1).children(1).children.line_mode , "off");
+assert_checkequal(f.children(1).children(1).children.z_bounds, [0.25 0.5]);
+assert_checkequal(f.children(1).children(1).children.color_range, [0 0]);
+assert_checkequal(f.children(1).children(1).children.outside_colors, [0 0]);
+
+// Forth test: quadrangles+colminmax
+clf();
+f=gcf();
+func = rand(4,1);
+f.color_map=jetcolormap(12);
+fec(x,y,triangle,func,colminmax=[1 6]);
+assert_checkequal(f.children(1).children(1).children.data, [a func]);
+assert_checkequal(f.children(1).children(1).children.triangles, triangle);
+assert_checkequal(f.children(1).children(1).children.line_mode , "off");
+assert_checkequal(f.children(1).children(1).children.z_bounds, [0 0]);
+assert_checkequal(f.children(1).children(1).children.color_range, [1 6]);
+assert_checkequal(f.children(1).children(1).children.outside_colors, [0 0]);
+
+// Fifth test: quadrangles+zminmax+colout
+clf();
+f=gcf();
+func = rand(4,1);
+f.color_map=jetcolormap(12);
+fec(x,y,triangle,func,zminmax=[0.25 0.75], colout=[0 0]);
+assert_checkequal(f.children(1).children(1).children.data, [a func]);
+assert_checkequal(f.children(1).children(1).children.triangles, triangle);
+assert_checkequal(f.children(1).children(1).children.line_mode , "off");
+assert_checkequal(f.children(1).children(1).children.z_bounds, [0.25 0.75]);
+assert_checkequal(f.children(1).children(1).children.color_range, [0 0]);
+assert_checkequal(f.children(1).children(1).children.outside_colors, [-1 -1]);
+close();
index e5b40b1..1678352 100644 (file)
@@ -491,8 +491,8 @@ public class GEDPicker {
      * @return true if picked the fec otherwise returns false
      */
     boolean getFec(Integer obj, Integer[] position) {
-
-        double[] triangles = (double[])ObjectData.getFecTriangles(obj);
+        int numVerticesByElem = ObjectData.getFecNumVerticesByElement(obj);
+        double[] elements = (double[])ObjectData.getFecElements(obj);
         double[] data = (double[])ObjectData.getFecData(obj);
 
         double[] pos = { position[0] * 1.0, position[1] * 1.0, 0.0 };
@@ -507,18 +507,20 @@ public class GEDPicker {
         int idx1, idx2, idx3;
         Vector3d p1, p2, p3;
 
-        int tSize = triangles.length / 5;
+        int tSize = elements.length / (numVerticesByElem + 2);
         for (int i = 0; i < tSize; i++) {
-            idx1 = (int)triangles[tSize + i];
-            idx2 = (int)triangles[2 * tSize + i];
-            idx3 = (int)triangles[3 * tSize + i];
+            idx1 = (int)elements[tSize + i];
+            for (int j = 2; j < numVerticesByElem; ++j) {
+                idx2 = (int)elements[j * tSize + i];
+                idx3 = (int)elements[(j + 1) * tSize + i];
 
-            p1 = new Vector3d(data[(idx1 - 1) * 3], data[(idx1 - 1) * 3 + 1], data[(idx1 - 1) * 3 + 2]);
-            p2 = new Vector3d(data[(idx2 - 1) * 3], data[(idx2 - 1) * 3 + 1], data[(idx2 - 1) * 3 + 2]);
-            p3 = new Vector3d(data[(idx3 - 1) * 3], data[(idx3 - 1) * 3 + 1], data[(idx3 - 1) * 3 + 2]);
+                p1 = new Vector3d(data[(idx1 - 1) * 3], data[(idx1 - 1) * 3 + 1], data[(idx1 - 1) * 3 + 2]);
+                p2 = new Vector3d(data[(idx2 - 1) * 3], data[(idx2 - 1) * 3 + 1], data[(idx2 - 1) * 3 + 2]);
+                p3 = new Vector3d(data[(idx3 - 1) * 3], data[(idx3 - 1) * 3 + 1], data[(idx3 - 1) * 3 + 2]);
 
-            if (testTri(p1, p2, p3, l0, dir)) {
-                return true;
+                if (testTri(p1, p2, p3, l0, dir)) {
+                    return true;
+                }
             }
         }
         return false;
index 2c31fcd..9e5db0e 100644 (file)
@@ -823,6 +823,7 @@ fec_1.png=a11d00923296006631c0f5e50d616f0f
 fec_2.png=fdadfcbaf0919df91b9d88d8f097fb3f
 fec_3.png=a661499ffa9830b6ffc021bb6234d304
 fec_4.png=d4feec7ccb49037df8b057bcd5780935
+fec_5.png=e9ad6f76388b0537f20eadae52d98b3c
 fftshift_1.png=6ac2e2db1929ffc261e51b373f204556
 fftshift_2.png=2c9968c3eb3b50c360a2067b30f2a843
 fgrayplot_1.png=37a25f51cb82aa32bde44a32973fe92a
diff --git a/scilab/modules/helptools/images/fec_5.png b/scilab/modules/helptools/images/fec_5.png
new file mode 100644 (file)
index 0000000..f7aad8d
Binary files /dev/null and b/scilab/modules/helptools/images/fec_5.png differ