]> SALOME platform Git repositories - modules/visu.git/commitdiff
Salome HOME
Merge with BR_Dev_For_4_0 (initial version)
authorapo <apo@opencascade.com>
Wed, 25 Apr 2007 10:43:43 +0000 (10:43 +0000)
committerapo <apo@opencascade.com>
Wed, 25 Apr 2007 10:43:43 +0000 (10:43 +0000)
46 files changed:
src/VISU_I/Makefile.am [new file with mode: 0644]
src/VISU_I/Makefile.in
src/VISU_I/VISUConfig.cc
src/VISU_I/VISUConfig.hh
src/VISU_I/VISU_ColoredPrs3d_i.cc
src/VISU_I/VISU_ColoredPrs3d_i.hh
src/VISU_I/VISU_CorbaMedConvertor.cxx
src/VISU_I/VISU_CorbaMedConvertor.hxx
src/VISU_I/VISU_CutLines_i.cc
src/VISU_I/VISU_CutLines_i.hh
src/VISU_I/VISU_CutPlanes_i.cc
src/VISU_I/VISU_CutPlanes_i.hh
src/VISU_I/VISU_DeformedShape_i.cc
src/VISU_I/VISU_DeformedShape_i.hh
src/VISU_I/VISU_DumpPython.cc
src/VISU_I/VISU_GaussPoints_i.hh
src/VISU_I/VISU_Gen_i.cc
src/VISU_I/VISU_Gen_i.hh
src/VISU_I/VISU_I.hxx [new file with mode: 0755]
src/VISU_I/VISU_IsoSurfaces_i.cc
src/VISU_I/VISU_IsoSurfaces_i.hh
src/VISU_I/VISU_Mesh_i.cc
src/VISU_I/VISU_Mesh_i.hh
src/VISU_I/VISU_Plot3D_i.cc
src/VISU_I/VISU_Plot3D_i.hh
src/VISU_I/VISU_Prs3d_i.cc
src/VISU_I/VISU_Prs3d_i.hh
src/VISU_I/VISU_PrsMerger_i.cc [new file with mode: 0644]
src/VISU_I/VISU_PrsMerger_i.hh [new file with mode: 0644]
src/VISU_I/VISU_Result_i.cc
src/VISU_I/VISU_Result_i.hh
src/VISU_I/VISU_ScalarMapOnDeformedShape_i.cc
src/VISU_I/VISU_ScalarMapOnDeformedShape_i.hh
src/VISU_I/VISU_ScalarMap_i.cc
src/VISU_I/VISU_ScalarMap_i.hh
src/VISU_I/VISU_StreamLines_i.cc
src/VISU_I/VISU_StreamLines_i.hh
src/VISU_I/VISU_Table_i.cc
src/VISU_I/VISU_Table_i.hh
src/VISU_I/VISU_TimeAnimation.cxx
src/VISU_I/VISU_TimeAnimation.h
src/VISU_I/VISU_Vectors_i.cc
src/VISU_I/VISU_Vectors_i.hh
src/VISU_I/VISU_ViewManager_i.hh
src/VISU_I/VISU_View_i.cc
src/VISU_I/VISU_View_i.hh

diff --git a/src/VISU_I/Makefile.am b/src/VISU_I/Makefile.am
new file mode 100644 (file)
index 0000000..2425131
--- /dev/null
@@ -0,0 +1,171 @@
+#  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+#  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+# 
+#  This library is free software; you can redistribute it and/or 
+#  modify it under the terms of the GNU Lesser General Public 
+#  License as published by the Free Software Foundation; either 
+#  version 2.1 of the License. 
+# 
+#  This library is distributed in the hope that it will be useful, 
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of 
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+#  Lesser General Public License for more details. 
+# 
+#  You should have received a copy of the GNU Lesser General Public 
+#  License along with this library; if not, write to the Free Software 
+#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
+# 
+#  See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+#  File   : Makefile.am
+#  Author : Alexey Petrov
+#  Module : VISU
+
+include $(top_srcdir)/adm_local/unix/make_common_starter.am
+
+# Libraries targets
+lib_LTLIBRARIES= libVISUEngineImpl.la
+
+salomeinclude_HEADERS = \
+       VISU_I.hxx \
+       VISUConfig.hh \
+       VISU_Gen_i.hh \
+       VISU_Result_i.hh \
+       VISU_PrsObject_i.hh \
+       VISU_Table_i.hh \
+       VISU_Prs3d_i.hh \
+       VISU_Mesh_i.hh \
+       VISU_ColoredPrs3d_i.hh \
+       VISU_ScalarMap_i.hh \
+       VISU_IsoSurfaces_i.hh \
+       VISU_DeformedShape_i.hh \
+       VISU_Plot3D_i.hh \
+       VISU_CutPlanes_i.hh \
+       VISU_CutLines_i.hh \
+       VISU_Vectors_i.hh \
+       VISU_StreamLines_i.hh \
+       VISU_GaussPoints_i.hh \
+       VISU_ViewManager_i.hh \
+       VISU_View_i.hh \
+       VISU_TimeAnimation.h \
+       VISU_ScalarMapOnDeformedShape_i.hh \
+       VISU_ColoredPrs3dFactory.hh \
+       SALOME_GenericObjPointer.hh
+
+libVISUEngineImpl_la_SOURCES = \
+       VISU_Result_i.cc \
+       VISUConfig.cc \
+       VISU_PrsObject_i.cc \
+       VISU_Prs3d_i.cc \
+       VISU_ColoredPrs3d_i.cc \
+       VISU_ScalarMap_i.cc \
+       VISU_GaussPoints_i.cc \
+       VISU_IsoSurfaces_i.cc \
+       VISU_DeformedShape_i.cc \
+       VISU_Plot3D_i.cc \
+       VISU_CutPlanes_i.cc \
+       VISU_CutLines_i.cc \
+       VISU_Vectors_i.cc \
+       VISU_StreamLines_i.cc \
+       VISU_ScalarMapOnDeformedShape_i.cc \
+       VISU_ColoredPrs3dCache_i.cc \
+       VISU_ColoredPrs3dHolder_i.cc \
+       VISU_ColoredPrs3dFactory.cc \
+       VISU_Mesh_i.cc \
+       VISU_ViewManager_i.cc \
+       VISU_TimeAnimation.cxx \
+       VISU_View_i.cc \
+       VISU_Table_i.cc \
+       VISU_Gen_i.cc \
+       VISU_CorbaMedConvertor.cxx \
+       VISU_DumpPython.cc \
+       SALOME_GenericObjPointer.cc
+
+MOC_FILES = VISU_TimeAnimation_moc.cxx
+nodist_libVISUEngineImpl_la_SOURCES= $(MOC_FILES)
+
+# additionnal information to compil and link file
+libVISUEngineImpl_la_CPPFLAGS= \
+       -ftemplate-depth-32 \
+       $(QT_INCLUDES) \
+       $(PYTHON_INCLUDES) \
+       @CAS_CPPFLAGS@ @CAS_CXXFLAGS@ \
+       $(VTK_INCLUDES) \
+       $(HDF5_INCLUDES) \
+       $(QWT_INCLUDES) \
+       $(BOOST_CPPFLAGS)\
+       $(KERNEL_CXXFLAGS) \
+       $(MED_CXXFLAGS) \
+       $(GUI_CXXFLAGS) \
+       $(CORBA_CXXFLAGS) $(CORBA_INCLUDES) \
+       -I$(srcdir)/../CONVERTOR -I$(srcdir)/../PIPELINE -I$(srcdir)/../OBJECT -I$(srcdir)/../VVTK -I$(srcdir)/../GUITOOLS \
+       -I$(top_builddir)/idl \
+       -I$(top_builddir)/salome_adm/unix
+
+libVISUEngineImpl_la_LDFLAGS= \
+       $(PYTHON_LIBS) \
+       $(QT_MT_LIBS) \
+       $(VTK_LIBS) \
+       $(QWT_LIBS) \
+       @BOOST_LIBS@  \
+       $(KERNEL_LDFLAGS) \
+       $(GUI_LDFLAGS) \
+       $(MED_LDFLAGS) \
+       ../../idl/libSalomeIDLVISU.la
+
+libVISUEngineImpl_la_LIBADD= -lboost_signals@BOOST_LIBSUFFIX@ -lboost_thread@BOOST_LIBSUFFIX@ \
+       -lSalomeHDFPersist \
+       -lSalomeGenericObj \
+       -lSalomeContainer \
+       -lSalomeNS \
+       -lTOOLSDS \
+       -lOpUtil \
+       -lEvent \
+       -lSalomeApp \
+       -lSalomeSession \
+       -lVTKViewer \
+       -lSVTK \
+       -lSPlot2d \
+       ../CONVERTOR/libVisuConvertor.la \
+       ../PIPELINE/libVisuPipeLine.la \
+       ../OBJECT/libVisuObject.la \
+       ../VVTK/libVVTK.la \
+       ../GUITOOLS/libVISUGUITOOLS.la
+
+# Executables targets
+bin_PROGRAMS = VISU_I
+dist_VISU_I_SOURCES=VISU_I.cxx
+VISU_I_CPPFLAGS=$(libVISUEngineImpl_la_CPPFLAGS)
+VISU_I_LDADD=$(libVISUEngineImpl_la_LIBADD) $(libVISUEngineImpl_la_LDFLAGS) \
+       $(KERNEL_LDFLAGS) \
+       -lSALOMEBasics \
+       -lSalomeCatalog \
+       -lwith_loggerTraceCollector \
+       -lSalomeLifeCycleCORBA \
+       -lRegistry \
+       -lSalomeNotification \
+       -lSALOMELocalTrace \
+       -lSalomeResourcesManager \
+       -lSalomeDSClient \
+       -lSalomeObject \
+       -lqtx \
+       -lsuit \
+       -lstd \
+       -lCAM \
+       -lLightApp \
+       -lObjBrowser \
+       -lSalomePrs \
+       -lPyInterp \
+       -lPythonConsole \
+       -lLogWindow \
+       -lToolsGUI  \
+       -lGLViewer \
+       -lOCCViewer \
+       -lSUPERVGraph \
+       -lSOCC \
+       -lPlot2d \
+       -lMEDWrapper \
+       -lMEDWrapperBase \
+       -lMEDWrapper_V2_2 \
+       -lMEDWrapper_V2_1 \
+       -lmed_V2_1
index f05f455fcf0c44b22f5b94090070d646bfc4a296..f8521922d9f0abb461f0835168a3a0ffe8dc60c2 100644 (file)
@@ -1,3 +1,19 @@
+# Makefile.in generated by automake 1.9.5 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005  Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
 #  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 #  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
 # 
 # 
 #  See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
-#  File   : Makefile.in
+#  File   : Makefile.am
 #  Author : Alexey Petrov
 #  Module : VISU
 
-top_srcdir=@top_srcdir@
-top_builddir=../..
-srcdir=@srcdir@
-VPATH=.:@srcdir@:@top_srcdir@/idl
-BOOST_LIBSUFFIX=@BOOST_LIBSUFFIX@
+#
+# ============================================================
+# This file defines the common definitions used in several
+# Makefile. This file must be included, if needed, by the file
+# Makefile.am.
+# ============================================================
+#
 
-@COMMENCE@
 
-# Libraries targets
-LIB = libVISUEngineImpl.la
 
-LIB_SRC = \
-       VISU_Result_i.cc \
-       VISUConfig.cc \
-       VISU_PrsObject_i.cc \
-       VISU_Prs3d_i.cc \
-       VISU_ColoredPrs3d_i.cc \
-       VISU_ScalarMap_i.cc \
-       VISU_GaussPoints_i.cc \
-       VISU_IsoSurfaces_i.cc \
-       VISU_DeformedShape_i.cc \
-       VISU_Plot3D_i.cc \
-       VISU_CutPlanes_i.cc \
-       VISU_CutLines_i.cc \
-       VISU_Vectors_i.cc \
-       VISU_StreamLines_i.cc \
-       VISU_ScalarMapOnDeformedShape_i.cc \
-       VISU_ColoredPrs3dCache_i.cc \
-       VISU_ColoredPrs3dHolder_i.cc \
-       VISU_ColoredPrs3dFactory.cc \
-       VISU_Mesh_i.cc \
-       VISU_ViewManager_i.cc \
-       VISU_TimeAnimation.cxx \
-       VISU_View_i.cc \
-       VISU_Table_i.cc \
-       VISU_Gen_i.cc \
-       VISU_CorbaMedConvertor.cxx \
-       VISU_DumpPython.cc \
-       SALOME_GenericObjPointer.cc
+SOURCES = $(libVISUEngineImpl_la_SOURCES) $(nodist_libVISUEngineImpl_la_SOURCES) $(dist_VISU_I_SOURCES)
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ../..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+DIST_COMMON = $(salomeinclude_HEADERS) $(srcdir)/Makefile.am \
+       $(srcdir)/Makefile.in \
+       $(top_srcdir)/adm_local/unix/make_common_starter.am
+bin_PROGRAMS = VISU_I$(EXEEXT)
+subdir = ./src/VISU_I
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/salome_adm/unix/config_files/ac_cxx_depend_flag.m4 \
+       $(top_srcdir)/salome_adm/unix/config_files/ac_cxx_have_sstream.m4 \
+       $(top_srcdir)/salome_adm/unix/config_files/ac_cxx_namespaces.m4 \
+       $(top_srcdir)/salome_adm/unix/config_files/ac_cxx_option.m4 \
+       $(top_srcdir)/salome_adm/unix/config_files/ac_cxx_use_std_iostream.m4 \
+       $(top_srcdir)/salome_adm/unix/config_files/ac_linker_options.m4 \
+       $(top_srcdir)/salome_adm/unix/config_files/acx_pthread.m4 \
+       $(top_srcdir)/salome_adm/unix/config_files/check_Kernel.m4 \
+       $(top_srcdir)/salome_adm/unix/config_files/check_boost.m4 \
+       $(top_srcdir)/salome_adm/unix/config_files/check_cas.m4 \
+       $(top_srcdir)/salome_adm/unix/config_files/check_corba.m4 \
+       $(top_srcdir)/salome_adm/unix/config_files/check_hdf5.m4 \
+       $(top_srcdir)/salome_adm/unix/config_files/check_htmlgen.m4 \
+       $(top_srcdir)/salome_adm/unix/config_files/check_mpich.m4 \
+       $(top_srcdir)/salome_adm/unix/config_files/check_omniorb.m4 \
+       $(top_srcdir)/salome_adm/unix/config_files/check_opengl.m4 \
+       $(top_srcdir)/salome_adm/unix/config_files/check_qt.m4 \
+       $(top_srcdir)/salome_adm/unix/config_files/check_swig.m4 \
+       $(top_srcdir)/salome_adm/unix/config_files/enable_pthreads.m4 \
+       $(top_srcdir)/salome_adm/unix/config_files/production.m4 \
+       $(top_srcdir)/salome_adm/unix/config_files/python.m4 \
+       $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+       $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_CLEAN_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
+am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" \
+       "$(DESTDIR)$(salomeincludedir)"
+libLTLIBRARIES_INSTALL = $(INSTALL)
+LTLIBRARIES = $(lib_LTLIBRARIES)
+libVISUEngineImpl_la_DEPENDENCIES = ../CONVERTOR/libVisuConvertor.la \
+       ../PIPELINE/libVisuPipeLine.la ../OBJECT/libVisuObject.la \
+       ../VVTK/libVVTK.la ../GUITOOLS/libVISUGUITOOLS.la
+am_libVISUEngineImpl_la_OBJECTS =  \
+       libVISUEngineImpl_la-VISU_Result_i.lo \
+       libVISUEngineImpl_la-VISUConfig.lo \
+       libVISUEngineImpl_la-VISU_PrsObject_i.lo \
+       libVISUEngineImpl_la-VISU_Prs3d_i.lo \
+       libVISUEngineImpl_la-VISU_ColoredPrs3d_i.lo \
+       libVISUEngineImpl_la-VISU_ScalarMap_i.lo \
+       libVISUEngineImpl_la-VISU_GaussPoints_i.lo \
+       libVISUEngineImpl_la-VISU_IsoSurfaces_i.lo \
+       libVISUEngineImpl_la-VISU_DeformedShape_i.lo \
+       libVISUEngineImpl_la-VISU_Plot3D_i.lo \
+       libVISUEngineImpl_la-VISU_CutPlanes_i.lo \
+       libVISUEngineImpl_la-VISU_CutLines_i.lo \
+       libVISUEngineImpl_la-VISU_Vectors_i.lo \
+       libVISUEngineImpl_la-VISU_StreamLines_i.lo \
+       libVISUEngineImpl_la-VISU_ScalarMapOnDeformedShape_i.lo \
+       libVISUEngineImpl_la-VISU_ColoredPrs3dCache_i.lo \
+       libVISUEngineImpl_la-VISU_ColoredPrs3dHolder_i.lo \
+       libVISUEngineImpl_la-VISU_ColoredPrs3dFactory.lo \
+       libVISUEngineImpl_la-VISU_Mesh_i.lo \
+       libVISUEngineImpl_la-VISU_ViewManager_i.lo \
+       libVISUEngineImpl_la-VISU_TimeAnimation.lo \
+       libVISUEngineImpl_la-VISU_View_i.lo \
+       libVISUEngineImpl_la-VISU_Table_i.lo \
+       libVISUEngineImpl_la-VISU_Gen_i.lo \
+       libVISUEngineImpl_la-VISU_CorbaMedConvertor.lo \
+       libVISUEngineImpl_la-VISU_DumpPython.lo \
+       libVISUEngineImpl_la-SALOME_GenericObjPointer.lo
+am__objects_1 = libVISUEngineImpl_la-VISU_TimeAnimation_moc.lo
+nodist_libVISUEngineImpl_la_OBJECTS = $(am__objects_1)
+libVISUEngineImpl_la_OBJECTS = $(am_libVISUEngineImpl_la_OBJECTS) \
+       $(nodist_libVISUEngineImpl_la_OBJECTS)
+binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
+PROGRAMS = $(bin_PROGRAMS)
+dist_VISU_I_OBJECTS = VISU_I-VISU_I.$(OBJEXT)
+VISU_I_OBJECTS = $(dist_VISU_I_OBJECTS)
+am__DEPENDENCIES_1 = ../CONVERTOR/libVisuConvertor.la \
+       ../PIPELINE/libVisuPipeLine.la ../OBJECT/libVisuObject.la \
+       ../VVTK/libVVTK.la ../GUITOOLS/libVISUGUITOOLS.la
+am__DEPENDENCIES_2 =
+am__DEPENDENCIES_3 = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_2) \
+       $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_2) \
+       $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_2) \
+       $(am__DEPENDENCIES_2) ../../idl/libSalomeIDLVISU.la
+VISU_I_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_3) \
+       $(am__DEPENDENCIES_2)
+DEFAULT_INCLUDES = -I. -I$(srcdir)
+depcomp = $(SHELL) $(top_srcdir)/salome_adm/unix/config_files/depcomp
+am__depfiles_maybe = depfiles
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+       $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+LTCXXCOMPILE = $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) \
+       $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+       $(AM_CXXFLAGS) $(CXXFLAGS)
+CXXLD = $(CXX)
+CXXLINK = $(LIBTOOL) --tag=CXX --mode=link $(CXXLD) $(AM_CXXFLAGS) \
+       $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+SOURCES = $(libVISUEngineImpl_la_SOURCES) \
+       $(nodist_libVISUEngineImpl_la_SOURCES) $(dist_VISU_I_SOURCES)
+DIST_SOURCES = $(libVISUEngineImpl_la_SOURCES) $(dist_VISU_I_SOURCES)
+salomeincludeHEADERS_INSTALL = $(INSTALL_HEADER)
+HEADERS = $(salomeinclude_HEADERS)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
+BOOST_LIBS = @BOOST_LIBS@
+BOOST_LIBSUFFIX = @BOOST_LIBSUFFIX@
+BOOST_PROGRAM_OPTIONS_LIB = @BOOST_PROGRAM_OPTIONS_LIB@
+CAS_CPPFLAGS = @CAS_CPPFLAGS@
+CAS_CXXFLAGS = @CAS_CXXFLAGS@
+CAS_DATAEXCHANGE = @CAS_DATAEXCHANGE@
+CAS_KERNEL = @CAS_KERNEL@
+CAS_LDFLAGS = @CAS_LDFLAGS@
+CAS_LDPATH = @CAS_LDPATH@
+CAS_MATH = @CAS_MATH@
+CAS_MODELER = @CAS_MODELER@
+CAS_OCAF = @CAS_OCAF@
+CAS_OCAFVIS = @CAS_OCAFVIS@
+CAS_STDPLUGIN = @CAS_STDPLUGIN@
+CAS_TKTopAlgo = @CAS_TKTopAlgo@
+CAS_VIEWER = @CAS_VIEWER@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CORBA_CXXFLAGS = @CORBA_CXXFLAGS@
+CORBA_INCLUDES = @CORBA_INCLUDES@
+CORBA_IN_GUI = @CORBA_IN_GUI@
+CORBA_LIBS = @CORBA_LIBS@
+CORBA_ROOT = @CORBA_ROOT@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CXX_DEPEND_FLAG = @CXX_DEPEND_FLAG@
+CYGPATH_W = @CYGPATH_W@
+C_DEPEND_FLAG = @C_DEPEND_FLAG@
+DEFS = @DEFS@
+DEPCC = @DEPCC@
+DEPCXX = @DEPCXX@
+DEPCXXFLAGS = @DEPCXXFLAGS@
+DEPDIR = @DEPDIR@
+DOT = @DOT@
+DOXYGEN = @DOXYGEN@
+DOXYGEN_WITH_PYTHON = @DOXYGEN_WITH_PYTHON@
+DOXYGEN_WITH_STL = @DOXYGEN_WITH_STL@
+DVIPS = @DVIPS@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GUI_CXXFLAGS = @GUI_CXXFLAGS@
+GUI_LDFLAGS = @GUI_LDFLAGS@
+GUI_ROOT_DIR = @GUI_ROOT_DIR@
+HAVE_SSTREAM = @HAVE_SSTREAM@
+HDF5_INCLUDES = @HDF5_INCLUDES@
+HDF5_LIBS = @HDF5_LIBS@
+HDF5_MT_LIBS = @HDF5_MT_LIBS@
+IDL = @IDL@
+IDLCXXFLAGS = @IDLCXXFLAGS@
+IDLPYFLAGS = @IDLPYFLAGS@
+IDL_CLN_CXX = @IDL_CLN_CXX@
+IDL_CLN_H = @IDL_CLN_H@
+IDL_CLN_OBJ = @IDL_CLN_OBJ@
+IDL_SRV_CXX = @IDL_SRV_CXX@
+IDL_SRV_H = @IDL_SRV_H@
+IDL_SRV_OBJ = @IDL_SRV_OBJ@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+KERNEL_CXXFLAGS = @KERNEL_CXXFLAGS@
+KERNEL_LDFLAGS = @KERNEL_LDFLAGS@
+KERNEL_ROOT_DIR = @KERNEL_ROOT_DIR@
+KERNEL_SITE_DIR = @KERNEL_SITE_DIR@
+LATEX = @LATEX@
+LDEXPDYNFLAGS = @LDEXPDYNFLAGS@
+LDFLAGS = @LDFLAGS@
+LEX = @LEX@
+LEXLIB = @LEXLIB@
+LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIB_LOCATION_SUFFIX = @LIB_LOCATION_SUFFIX@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MACHINE = @MACHINE@
+MAKEINFO = @MAKEINFO@
+MED_CXXFLAGS = @MED_CXXFLAGS@
+MED_LDFLAGS = @MED_LDFLAGS@
+MED_ROOT_DIR = @MED_ROOT_DIR@
+MOC = @MOC@
+MODULE_NAME = @MODULE_NAME@
+MSG2QM = @MSG2QM@
+OBJEXT = @OBJEXT@
+OGL_INCLUDES = @OGL_INCLUDES@
+OGL_LIBS = @OGL_LIBS@
+OMNIORB_CXXFLAGS = @OMNIORB_CXXFLAGS@
+OMNIORB_IDL = @OMNIORB_IDL@
+OMNIORB_IDLCXXFLAGS = @OMNIORB_IDLCXXFLAGS@
+OMNIORB_IDLPYFLAGS = @OMNIORB_IDLPYFLAGS@
+OMNIORB_IDL_CLN_CXX = @OMNIORB_IDL_CLN_CXX@
+OMNIORB_IDL_CLN_H = @OMNIORB_IDL_CLN_H@
+OMNIORB_IDL_CLN_OBJ = @OMNIORB_IDL_CLN_OBJ@
+OMNIORB_IDL_SRV_CXX = @OMNIORB_IDL_SRV_CXX@
+OMNIORB_IDL_SRV_H = @OMNIORB_IDL_SRV_H@
+OMNIORB_IDL_SRV_OBJ = @OMNIORB_IDL_SRV_OBJ@
+OMNIORB_IDL_TIE_CXX = @OMNIORB_IDL_TIE_CXX@
+OMNIORB_IDL_TIE_H = @OMNIORB_IDL_TIE_H@
+OMNIORB_INCLUDES = @OMNIORB_INCLUDES@
+OMNIORB_LIBS = @OMNIORB_LIBS@
+OMNIORB_ROOT = @OMNIORB_ROOT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PDFLATEX = @PDFLATEX@
+PTHREAD_CC = @PTHREAD_CC@
+PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
+PTHREAD_LIBS = @PTHREAD_LIBS@
+PYTHON = @PYTHON@
+PYTHONHOME = @PYTHONHOME@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_INCLUDES = @PYTHON_INCLUDES@
+PYTHON_LIBS = @PYTHON_LIBS@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_SITE = @PYTHON_SITE@
+PYTHON_SITE_EXEC = @PYTHON_SITE_EXEC@
+PYTHON_SITE_INSTALL = @PYTHON_SITE_INSTALL@
+PYTHON_SITE_PACKAGE = @PYTHON_SITE_PACKAGE@
+PYTHON_VERSION = @PYTHON_VERSION@
+QTDIR = @QTDIR@
+QT_INCLUDES = @QT_INCLUDES@
+QT_LIBS = @QT_LIBS@
+QT_MT_INCLUDES = @QT_MT_INCLUDES@
+QT_MT_LIBS = @QT_MT_LIBS@
+QT_ROOT = @QT_ROOT@
+QT_VERS = @QT_VERS@
+QWT_INCLUDES = @QWT_INCLUDES@
+QWT_LIBS = @QWT_LIBS@
+RANLIB = @RANLIB@
+ROOT_BUILDDIR = @ROOT_BUILDDIR@
+ROOT_SRCDIR = @ROOT_SRCDIR@
+RST2HTML = @RST2HTML@
+RST2HTML_IS_OK_FALSE = @RST2HTML_IS_OK_FALSE@
+RST2HTML_IS_OK_TRUE = @RST2HTML_IS_OK_TRUE@
+SETX = @SETX@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STDLIB = @STDLIB@
+STRIP = @STRIP@
+SWIG = @SWIG@
+SWIG_FLAGS = @SWIG_FLAGS@
+TEMP = @TEMP@
+UIC = @UIC@
+VERSION = @VERSION@
+VTKPY_MODULES = @VTKPY_MODULES@
+VTK_INCLUDES = @VTK_INCLUDES@
+VTK_LIBS = @VTK_LIBS@
+XVERSION = @XVERSION@
+YACC = @YACC@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+acx_pthread_config = @acx_pthread_config@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = $(prefix)/bin/@PACKAGE@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = $(prefix)/lib@LIB_LOCATION_SUFFIX@/@PACKAGE@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
 
-LIB_MOC = \
-       VISU_TimeAnimation.h
+# Standard directory for installation
+salomeincludedir = $(includedir)/@PACKAGE@
+purebindir = $(prefix)/bin
+salomescriptdir = $(bindir)
 
-LIB_SERVER_IDL = \
-       MED.idl \
-       VISU_Gen.idl \
-       SALOME_Component.idl \
-       SALOME_Exception.idl \
-       SALOME_GenericObj.idl 
+# Tests environment folders
+testsenvirondir = $(prefix)/Tests/environ
+testsenvironcshdir = $(prefix)/Tests/environ/csh
 
-LIB_CLIENT_IDL = \
-       SALOMEDS.idl \
-       SALOMEDS_Attributes.idl \
-       SALOME_Comm.idl
+# Directory for installing idl files
+salomeidldir = $(prefix)/idl/@PACKAGE@
 
-# Executables targets
-BIN = VISU_I
-BIN_SRC =
+# Directory for installing resource files
+salomeresdir = $(prefix)/share/@PACKAGE@/resources/@MODULE_NAME@
 
-BIN_CLIENT_IDL =
-BIN_SERVER_IDL =
+# Directories for installing admin files
+admlocaldir = $(prefix)/adm_local
+admlocalunixdir = $(admlocaldir)/unix
+admlocalm4dir = $(admlocaldir)/unix/config_files
 
-EXPORT_HEADERS = \
+# Shared modules installation directory
+sharedpkgpythondir = $(pkgpythondir)/shared_modules
+
+# Documentation directory
+docdir = $(datadir)/doc/@PACKAGE@
+EXTRA_DIST = $(MOC_FILES:%_moc.cxx=%.h) $(nodist_salomeres_DATA:%.qm=%.po)
+
+# Libraries targets
+lib_LTLIBRARIES = libVISUEngineImpl.la
+salomeinclude_HEADERS = \
+       VISU_I.hxx \
        VISUConfig.hh \
        VISU_Gen_i.hh \
        VISU_Result_i.hh \
@@ -108,31 +466,68 @@ EXPORT_HEADERS = \
        VISU_ColoredPrs3dFactory.hh \
        SALOME_GenericObjPointer.hh
 
+libVISUEngineImpl_la_SOURCES = \
+       VISU_Result_i.cc \
+       VISUConfig.cc \
+       VISU_PrsObject_i.cc \
+       VISU_Prs3d_i.cc \
+       VISU_ColoredPrs3d_i.cc \
+       VISU_ScalarMap_i.cc \
+       VISU_GaussPoints_i.cc \
+       VISU_IsoSurfaces_i.cc \
+       VISU_DeformedShape_i.cc \
+       VISU_Plot3D_i.cc \
+       VISU_CutPlanes_i.cc \
+       VISU_CutLines_i.cc \
+       VISU_Vectors_i.cc \
+       VISU_StreamLines_i.cc \
+       VISU_ScalarMapOnDeformedShape_i.cc \
+       VISU_ColoredPrs3dCache_i.cc \
+       VISU_ColoredPrs3dHolder_i.cc \
+       VISU_ColoredPrs3dFactory.cc \
+       VISU_Mesh_i.cc \
+       VISU_ViewManager_i.cc \
+       VISU_TimeAnimation.cxx \
+       VISU_View_i.cc \
+       VISU_Table_i.cc \
+       VISU_Gen_i.cc \
+       VISU_CorbaMedConvertor.cxx \
+       VISU_DumpPython.cc \
+       SALOME_GenericObjPointer.cc
+
+MOC_FILES = VISU_TimeAnimation_moc.cxx
+nodist_libVISUEngineImpl_la_SOURCES = $(MOC_FILES)
+
 # additionnal information to compil and link file
-CPPFLAGS += \
+libVISUEngineImpl_la_CPPFLAGS = \
        -ftemplate-depth-32 \
        $(QT_INCLUDES) \
        $(PYTHON_INCLUDES) \
-       $(OCC_INCLUDES) \
+       @CAS_CPPFLAGS@ @CAS_CXXFLAGS@ \
        $(VTK_INCLUDES) \
        $(HDF5_INCLUDES) \
        $(QWT_INCLUDES) \
        $(BOOST_CPPFLAGS)\
        $(KERNEL_CXXFLAGS) \
        $(MED_CXXFLAGS) \
-       $(GUI_CXXFLAGS)
+       $(GUI_CXXFLAGS) \
+       $(CORBA_CXXFLAGS) $(CORBA_INCLUDES) \
+       -I$(srcdir)/../CONVERTOR -I$(srcdir)/../PIPELINE -I$(srcdir)/../OBJECT -I$(srcdir)/../VVTK -I$(srcdir)/../GUITOOLS \
+       -I$(top_builddir)/idl \
+       -I$(top_builddir)/salome_adm/unix
 
-LDFLAGS  += \
+libVISUEngineImpl_la_LDFLAGS = \
        $(PYTHON_LIBS) \
        $(QT_MT_LIBS) \
        $(VTK_LIBS) \
        $(QWT_LIBS) \
-       $(BOOST_LIBS) \
+       @BOOST_LIBS@  \
        $(KERNEL_LDFLAGS) \
        $(GUI_LDFLAGS) \
-       $(MED_LDFLAGS) 
+       $(MED_LDFLAGS) \
+       ../../idl/libSalomeIDLVISU.la
 
-LIBS+=  -lboost_signals${BOOST_LIBSUFFIX} \
+libVISUEngineImpl_la_LIBADD = -lboost_signals@BOOST_LIBSUFFIX@ -lboost_thread@BOOST_LIBSUFFIX@ \
        -lSalomeHDFPersist \
        -lSalomeGenericObj \
        -lSalomeContainer \
@@ -145,13 +540,15 @@ LIBS+=  -lboost_signals${BOOST_LIBSUFFIX} \
        -lVTKViewer \
        -lSVTK \
        -lSPlot2d \
-       -lVisuConvertor \
-       -lVisuPipeLine \
-       -lVisuObject \
-       -lVVTK \
-       -lVISUGUITOOLS
+       ../CONVERTOR/libVisuConvertor.la \
+       ../PIPELINE/libVisuPipeLine.la \
+       ../OBJECT/libVisuObject.la \
+       ../VVTK/libVVTK.la \
+       ../GUITOOLS/libVISUGUITOOLS.la
 
-LDFLAGSFORBIN=$(LDFLAGS) $(LIBS) \
+dist_VISU_I_SOURCES = VISU_I.cxx
+VISU_I_CPPFLAGS = $(libVISUEngineImpl_la_CPPFLAGS)
+VISU_I_LDADD = $(libVISUEngineImpl_la_LIBADD) $(libVISUEngineImpl_la_LDFLAGS) \
        $(KERNEL_LDFLAGS) \
        -lSALOMEBasics \
        -lSalomeCatalog \
@@ -178,7 +575,6 @@ LDFLAGSFORBIN=$(LDFLAGS) $(LIBS) \
        -lOCCViewer \
        -lSUPERVGraph \
        -lSOCC \
-       -lVVTK \
        -lPlot2d \
        -lMEDWrapper \
        -lMEDWrapperBase \
@@ -186,9 +582,613 @@ LDFLAGSFORBIN=$(LDFLAGS) $(LIBS) \
        -lMEDWrapper_V2_1 \
        -lmed_V2_1
 
-# additional file to be cleaned
-MOSTLYCLEAN =
-CLEAN =
-DISTCLEAN =
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .cc .cxx .lo .o .obj
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am $(top_srcdir)/adm_local/unix/make_common_starter.am $(am__configure_deps)
+       @for dep in $?; do \
+         case '$(am__configure_deps)' in \
+           *$$dep*) \
+             cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+               && exit 0; \
+             exit 1;; \
+         esac; \
+       done; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  ./src/VISU_I/Makefile'; \
+       cd $(top_srcdir) && \
+         $(AUTOMAKE) --gnu  ./src/VISU_I/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+       @case '$?' in \
+         *config.status*) \
+           cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+         *) \
+           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+       esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+install-libLTLIBRARIES: $(lib_LTLIBRARIES)
+       @$(NORMAL_INSTALL)
+       test -z "$(libdir)" || $(mkdir_p) "$(DESTDIR)$(libdir)"
+       @list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+         if test -f $$p; then \
+           f=$(am__strip_dir) \
+           echo " $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \
+           $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(libdir)/$$f"; \
+         else :; fi; \
+       done
+
+uninstall-libLTLIBRARIES:
+       @$(NORMAL_UNINSTALL)
+       @set -x; list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+         p=$(am__strip_dir) \
+         echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$p'"; \
+         $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$p"; \
+       done
+
+clean-libLTLIBRARIES:
+       -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
+       @list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+         dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+         test "$$dir" != "$$p" || dir=.; \
+         echo "rm -f \"$${dir}/so_locations\""; \
+         rm -f "$${dir}/so_locations"; \
+       done
+libVISUEngineImpl.la: $(libVISUEngineImpl_la_OBJECTS) $(libVISUEngineImpl_la_DEPENDENCIES) 
+       $(CXXLINK) -rpath $(libdir) $(libVISUEngineImpl_la_LDFLAGS) $(libVISUEngineImpl_la_OBJECTS) $(libVISUEngineImpl_la_LIBADD) $(LIBS)
+install-binPROGRAMS: $(bin_PROGRAMS)
+       @$(NORMAL_INSTALL)
+       test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)"
+       @list='$(bin_PROGRAMS)'; for p in $$list; do \
+         p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+         if test -f $$p \
+            || test -f $$p1 \
+         ; then \
+           f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
+          echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \
+          $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \
+         else :; fi; \
+       done
+
+uninstall-binPROGRAMS:
+       @$(NORMAL_UNINSTALL)
+       @list='$(bin_PROGRAMS)'; for p in $$list; do \
+         f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
+         echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
+         rm -f "$(DESTDIR)$(bindir)/$$f"; \
+       done
+
+clean-binPROGRAMS:
+       @list='$(bin_PROGRAMS)'; for p in $$list; do \
+         f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+         echo " rm -f $$p $$f"; \
+         rm -f $$p $$f ; \
+       done
+VISU_I$(EXEEXT): $(VISU_I_OBJECTS) $(VISU_I_DEPENDENCIES) 
+       @rm -f VISU_I$(EXEEXT)
+       $(CXXLINK) $(VISU_I_LDFLAGS) $(VISU_I_OBJECTS) $(VISU_I_LDADD) $(LIBS)
+
+mostlyclean-compile:
+       -rm -f *.$(OBJEXT)
+
+distclean-compile:
+       -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/VISU_I-VISU_I.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libVISUEngineImpl_la-SALOME_GenericObjPointer.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libVISUEngineImpl_la-VISUConfig.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libVISUEngineImpl_la-VISU_ColoredPrs3dCache_i.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libVISUEngineImpl_la-VISU_ColoredPrs3dFactory.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libVISUEngineImpl_la-VISU_ColoredPrs3dHolder_i.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libVISUEngineImpl_la-VISU_ColoredPrs3d_i.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libVISUEngineImpl_la-VISU_CorbaMedConvertor.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libVISUEngineImpl_la-VISU_CutLines_i.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libVISUEngineImpl_la-VISU_CutPlanes_i.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libVISUEngineImpl_la-VISU_DeformedShape_i.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libVISUEngineImpl_la-VISU_DumpPython.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libVISUEngineImpl_la-VISU_GaussPoints_i.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libVISUEngineImpl_la-VISU_Gen_i.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libVISUEngineImpl_la-VISU_IsoSurfaces_i.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libVISUEngineImpl_la-VISU_Mesh_i.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libVISUEngineImpl_la-VISU_Plot3D_i.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libVISUEngineImpl_la-VISU_Prs3d_i.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libVISUEngineImpl_la-VISU_PrsObject_i.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libVISUEngineImpl_la-VISU_Result_i.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libVISUEngineImpl_la-VISU_ScalarMapOnDeformedShape_i.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libVISUEngineImpl_la-VISU_ScalarMap_i.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libVISUEngineImpl_la-VISU_StreamLines_i.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libVISUEngineImpl_la-VISU_Table_i.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libVISUEngineImpl_la-VISU_TimeAnimation.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libVISUEngineImpl_la-VISU_TimeAnimation_moc.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libVISUEngineImpl_la-VISU_Vectors_i.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libVISUEngineImpl_la-VISU_ViewManager_i.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libVISUEngineImpl_la-VISU_View_i.Plo@am__quote@
+
+.cc.o:
+@am__fastdepCXX_TRUE@  if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+@am__fastdepCXX_TRUE@  then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $<
+
+.cc.obj:
+@am__fastdepCXX_TRUE@  if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
+@am__fastdepCXX_TRUE@  then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.cc.lo:
+@am__fastdepCXX_TRUE@  if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+@am__fastdepCXX_TRUE@  then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $<
+
+libVISUEngineImpl_la-VISU_Result_i.lo: VISU_Result_i.cc
+@am__fastdepCXX_TRUE@  if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libVISUEngineImpl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libVISUEngineImpl_la-VISU_Result_i.lo -MD -MP -MF "$(DEPDIR)/libVISUEngineImpl_la-VISU_Result_i.Tpo" -c -o libVISUEngineImpl_la-VISU_Result_i.lo `test -f 'VISU_Result_i.cc' || echo '$(srcdir)/'`VISU_Result_i.cc; \
+@am__fastdepCXX_TRUE@  then mv -f "$(DEPDIR)/libVISUEngineImpl_la-VISU_Result_i.Tpo" "$(DEPDIR)/libVISUEngineImpl_la-VISU_Result_i.Plo"; else rm -f "$(DEPDIR)/libVISUEngineImpl_la-VISU_Result_i.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='VISU_Result_i.cc' object='libVISUEngineImpl_la-VISU_Result_i.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libVISUEngineImpl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libVISUEngineImpl_la-VISU_Result_i.lo `test -f 'VISU_Result_i.cc' || echo '$(srcdir)/'`VISU_Result_i.cc
+
+libVISUEngineImpl_la-VISUConfig.lo: VISUConfig.cc
+@am__fastdepCXX_TRUE@  if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libVISUEngineImpl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libVISUEngineImpl_la-VISUConfig.lo -MD -MP -MF "$(DEPDIR)/libVISUEngineImpl_la-VISUConfig.Tpo" -c -o libVISUEngineImpl_la-VISUConfig.lo `test -f 'VISUConfig.cc' || echo '$(srcdir)/'`VISUConfig.cc; \
+@am__fastdepCXX_TRUE@  then mv -f "$(DEPDIR)/libVISUEngineImpl_la-VISUConfig.Tpo" "$(DEPDIR)/libVISUEngineImpl_la-VISUConfig.Plo"; else rm -f "$(DEPDIR)/libVISUEngineImpl_la-VISUConfig.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='VISUConfig.cc' object='libVISUEngineImpl_la-VISUConfig.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libVISUEngineImpl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libVISUEngineImpl_la-VISUConfig.lo `test -f 'VISUConfig.cc' || echo '$(srcdir)/'`VISUConfig.cc
+
+libVISUEngineImpl_la-VISU_PrsObject_i.lo: VISU_PrsObject_i.cc
+@am__fastdepCXX_TRUE@  if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libVISUEngineImpl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libVISUEngineImpl_la-VISU_PrsObject_i.lo -MD -MP -MF "$(DEPDIR)/libVISUEngineImpl_la-VISU_PrsObject_i.Tpo" -c -o libVISUEngineImpl_la-VISU_PrsObject_i.lo `test -f 'VISU_PrsObject_i.cc' || echo '$(srcdir)/'`VISU_PrsObject_i.cc; \
+@am__fastdepCXX_TRUE@  then mv -f "$(DEPDIR)/libVISUEngineImpl_la-VISU_PrsObject_i.Tpo" "$(DEPDIR)/libVISUEngineImpl_la-VISU_PrsObject_i.Plo"; else rm -f "$(DEPDIR)/libVISUEngineImpl_la-VISU_PrsObject_i.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='VISU_PrsObject_i.cc' object='libVISUEngineImpl_la-VISU_PrsObject_i.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libVISUEngineImpl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libVISUEngineImpl_la-VISU_PrsObject_i.lo `test -f 'VISU_PrsObject_i.cc' || echo '$(srcdir)/'`VISU_PrsObject_i.cc
+
+libVISUEngineImpl_la-VISU_Prs3d_i.lo: VISU_Prs3d_i.cc
+@am__fastdepCXX_TRUE@  if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libVISUEngineImpl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libVISUEngineImpl_la-VISU_Prs3d_i.lo -MD -MP -MF "$(DEPDIR)/libVISUEngineImpl_la-VISU_Prs3d_i.Tpo" -c -o libVISUEngineImpl_la-VISU_Prs3d_i.lo `test -f 'VISU_Prs3d_i.cc' || echo '$(srcdir)/'`VISU_Prs3d_i.cc; \
+@am__fastdepCXX_TRUE@  then mv -f "$(DEPDIR)/libVISUEngineImpl_la-VISU_Prs3d_i.Tpo" "$(DEPDIR)/libVISUEngineImpl_la-VISU_Prs3d_i.Plo"; else rm -f "$(DEPDIR)/libVISUEngineImpl_la-VISU_Prs3d_i.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='VISU_Prs3d_i.cc' object='libVISUEngineImpl_la-VISU_Prs3d_i.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libVISUEngineImpl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libVISUEngineImpl_la-VISU_Prs3d_i.lo `test -f 'VISU_Prs3d_i.cc' || echo '$(srcdir)/'`VISU_Prs3d_i.cc
+
+libVISUEngineImpl_la-VISU_ColoredPrs3d_i.lo: VISU_ColoredPrs3d_i.cc
+@am__fastdepCXX_TRUE@  if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libVISUEngineImpl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libVISUEngineImpl_la-VISU_ColoredPrs3d_i.lo -MD -MP -MF "$(DEPDIR)/libVISUEngineImpl_la-VISU_ColoredPrs3d_i.Tpo" -c -o libVISUEngineImpl_la-VISU_ColoredPrs3d_i.lo `test -f 'VISU_ColoredPrs3d_i.cc' || echo '$(srcdir)/'`VISU_ColoredPrs3d_i.cc; \
+@am__fastdepCXX_TRUE@  then mv -f "$(DEPDIR)/libVISUEngineImpl_la-VISU_ColoredPrs3d_i.Tpo" "$(DEPDIR)/libVISUEngineImpl_la-VISU_ColoredPrs3d_i.Plo"; else rm -f "$(DEPDIR)/libVISUEngineImpl_la-VISU_ColoredPrs3d_i.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='VISU_ColoredPrs3d_i.cc' object='libVISUEngineImpl_la-VISU_ColoredPrs3d_i.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libVISUEngineImpl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libVISUEngineImpl_la-VISU_ColoredPrs3d_i.lo `test -f 'VISU_ColoredPrs3d_i.cc' || echo '$(srcdir)/'`VISU_ColoredPrs3d_i.cc
+
+libVISUEngineImpl_la-VISU_ScalarMap_i.lo: VISU_ScalarMap_i.cc
+@am__fastdepCXX_TRUE@  if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libVISUEngineImpl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libVISUEngineImpl_la-VISU_ScalarMap_i.lo -MD -MP -MF "$(DEPDIR)/libVISUEngineImpl_la-VISU_ScalarMap_i.Tpo" -c -o libVISUEngineImpl_la-VISU_ScalarMap_i.lo `test -f 'VISU_ScalarMap_i.cc' || echo '$(srcdir)/'`VISU_ScalarMap_i.cc; \
+@am__fastdepCXX_TRUE@  then mv -f "$(DEPDIR)/libVISUEngineImpl_la-VISU_ScalarMap_i.Tpo" "$(DEPDIR)/libVISUEngineImpl_la-VISU_ScalarMap_i.Plo"; else rm -f "$(DEPDIR)/libVISUEngineImpl_la-VISU_ScalarMap_i.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='VISU_ScalarMap_i.cc' object='libVISUEngineImpl_la-VISU_ScalarMap_i.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libVISUEngineImpl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libVISUEngineImpl_la-VISU_ScalarMap_i.lo `test -f 'VISU_ScalarMap_i.cc' || echo '$(srcdir)/'`VISU_ScalarMap_i.cc
+
+libVISUEngineImpl_la-VISU_GaussPoints_i.lo: VISU_GaussPoints_i.cc
+@am__fastdepCXX_TRUE@  if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libVISUEngineImpl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libVISUEngineImpl_la-VISU_GaussPoints_i.lo -MD -MP -MF "$(DEPDIR)/libVISUEngineImpl_la-VISU_GaussPoints_i.Tpo" -c -o libVISUEngineImpl_la-VISU_GaussPoints_i.lo `test -f 'VISU_GaussPoints_i.cc' || echo '$(srcdir)/'`VISU_GaussPoints_i.cc; \
+@am__fastdepCXX_TRUE@  then mv -f "$(DEPDIR)/libVISUEngineImpl_la-VISU_GaussPoints_i.Tpo" "$(DEPDIR)/libVISUEngineImpl_la-VISU_GaussPoints_i.Plo"; else rm -f "$(DEPDIR)/libVISUEngineImpl_la-VISU_GaussPoints_i.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='VISU_GaussPoints_i.cc' object='libVISUEngineImpl_la-VISU_GaussPoints_i.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libVISUEngineImpl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libVISUEngineImpl_la-VISU_GaussPoints_i.lo `test -f 'VISU_GaussPoints_i.cc' || echo '$(srcdir)/'`VISU_GaussPoints_i.cc
+
+libVISUEngineImpl_la-VISU_IsoSurfaces_i.lo: VISU_IsoSurfaces_i.cc
+@am__fastdepCXX_TRUE@  if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libVISUEngineImpl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libVISUEngineImpl_la-VISU_IsoSurfaces_i.lo -MD -MP -MF "$(DEPDIR)/libVISUEngineImpl_la-VISU_IsoSurfaces_i.Tpo" -c -o libVISUEngineImpl_la-VISU_IsoSurfaces_i.lo `test -f 'VISU_IsoSurfaces_i.cc' || echo '$(srcdir)/'`VISU_IsoSurfaces_i.cc; \
+@am__fastdepCXX_TRUE@  then mv -f "$(DEPDIR)/libVISUEngineImpl_la-VISU_IsoSurfaces_i.Tpo" "$(DEPDIR)/libVISUEngineImpl_la-VISU_IsoSurfaces_i.Plo"; else rm -f "$(DEPDIR)/libVISUEngineImpl_la-VISU_IsoSurfaces_i.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='VISU_IsoSurfaces_i.cc' object='libVISUEngineImpl_la-VISU_IsoSurfaces_i.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libVISUEngineImpl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libVISUEngineImpl_la-VISU_IsoSurfaces_i.lo `test -f 'VISU_IsoSurfaces_i.cc' || echo '$(srcdir)/'`VISU_IsoSurfaces_i.cc
+
+libVISUEngineImpl_la-VISU_DeformedShape_i.lo: VISU_DeformedShape_i.cc
+@am__fastdepCXX_TRUE@  if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libVISUEngineImpl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libVISUEngineImpl_la-VISU_DeformedShape_i.lo -MD -MP -MF "$(DEPDIR)/libVISUEngineImpl_la-VISU_DeformedShape_i.Tpo" -c -o libVISUEngineImpl_la-VISU_DeformedShape_i.lo `test -f 'VISU_DeformedShape_i.cc' || echo '$(srcdir)/'`VISU_DeformedShape_i.cc; \
+@am__fastdepCXX_TRUE@  then mv -f "$(DEPDIR)/libVISUEngineImpl_la-VISU_DeformedShape_i.Tpo" "$(DEPDIR)/libVISUEngineImpl_la-VISU_DeformedShape_i.Plo"; else rm -f "$(DEPDIR)/libVISUEngineImpl_la-VISU_DeformedShape_i.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='VISU_DeformedShape_i.cc' object='libVISUEngineImpl_la-VISU_DeformedShape_i.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libVISUEngineImpl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libVISUEngineImpl_la-VISU_DeformedShape_i.lo `test -f 'VISU_DeformedShape_i.cc' || echo '$(srcdir)/'`VISU_DeformedShape_i.cc
+
+libVISUEngineImpl_la-VISU_Plot3D_i.lo: VISU_Plot3D_i.cc
+@am__fastdepCXX_TRUE@  if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libVISUEngineImpl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libVISUEngineImpl_la-VISU_Plot3D_i.lo -MD -MP -MF "$(DEPDIR)/libVISUEngineImpl_la-VISU_Plot3D_i.Tpo" -c -o libVISUEngineImpl_la-VISU_Plot3D_i.lo `test -f 'VISU_Plot3D_i.cc' || echo '$(srcdir)/'`VISU_Plot3D_i.cc; \
+@am__fastdepCXX_TRUE@  then mv -f "$(DEPDIR)/libVISUEngineImpl_la-VISU_Plot3D_i.Tpo" "$(DEPDIR)/libVISUEngineImpl_la-VISU_Plot3D_i.Plo"; else rm -f "$(DEPDIR)/libVISUEngineImpl_la-VISU_Plot3D_i.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='VISU_Plot3D_i.cc' object='libVISUEngineImpl_la-VISU_Plot3D_i.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libVISUEngineImpl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libVISUEngineImpl_la-VISU_Plot3D_i.lo `test -f 'VISU_Plot3D_i.cc' || echo '$(srcdir)/'`VISU_Plot3D_i.cc
+
+libVISUEngineImpl_la-VISU_CutPlanes_i.lo: VISU_CutPlanes_i.cc
+@am__fastdepCXX_TRUE@  if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libVISUEngineImpl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libVISUEngineImpl_la-VISU_CutPlanes_i.lo -MD -MP -MF "$(DEPDIR)/libVISUEngineImpl_la-VISU_CutPlanes_i.Tpo" -c -o libVISUEngineImpl_la-VISU_CutPlanes_i.lo `test -f 'VISU_CutPlanes_i.cc' || echo '$(srcdir)/'`VISU_CutPlanes_i.cc; \
+@am__fastdepCXX_TRUE@  then mv -f "$(DEPDIR)/libVISUEngineImpl_la-VISU_CutPlanes_i.Tpo" "$(DEPDIR)/libVISUEngineImpl_la-VISU_CutPlanes_i.Plo"; else rm -f "$(DEPDIR)/libVISUEngineImpl_la-VISU_CutPlanes_i.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='VISU_CutPlanes_i.cc' object='libVISUEngineImpl_la-VISU_CutPlanes_i.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libVISUEngineImpl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libVISUEngineImpl_la-VISU_CutPlanes_i.lo `test -f 'VISU_CutPlanes_i.cc' || echo '$(srcdir)/'`VISU_CutPlanes_i.cc
+
+libVISUEngineImpl_la-VISU_CutLines_i.lo: VISU_CutLines_i.cc
+@am__fastdepCXX_TRUE@  if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libVISUEngineImpl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libVISUEngineImpl_la-VISU_CutLines_i.lo -MD -MP -MF "$(DEPDIR)/libVISUEngineImpl_la-VISU_CutLines_i.Tpo" -c -o libVISUEngineImpl_la-VISU_CutLines_i.lo `test -f 'VISU_CutLines_i.cc' || echo '$(srcdir)/'`VISU_CutLines_i.cc; \
+@am__fastdepCXX_TRUE@  then mv -f "$(DEPDIR)/libVISUEngineImpl_la-VISU_CutLines_i.Tpo" "$(DEPDIR)/libVISUEngineImpl_la-VISU_CutLines_i.Plo"; else rm -f "$(DEPDIR)/libVISUEngineImpl_la-VISU_CutLines_i.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='VISU_CutLines_i.cc' object='libVISUEngineImpl_la-VISU_CutLines_i.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libVISUEngineImpl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libVISUEngineImpl_la-VISU_CutLines_i.lo `test -f 'VISU_CutLines_i.cc' || echo '$(srcdir)/'`VISU_CutLines_i.cc
+
+libVISUEngineImpl_la-VISU_Vectors_i.lo: VISU_Vectors_i.cc
+@am__fastdepCXX_TRUE@  if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libVISUEngineImpl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libVISUEngineImpl_la-VISU_Vectors_i.lo -MD -MP -MF "$(DEPDIR)/libVISUEngineImpl_la-VISU_Vectors_i.Tpo" -c -o libVISUEngineImpl_la-VISU_Vectors_i.lo `test -f 'VISU_Vectors_i.cc' || echo '$(srcdir)/'`VISU_Vectors_i.cc; \
+@am__fastdepCXX_TRUE@  then mv -f "$(DEPDIR)/libVISUEngineImpl_la-VISU_Vectors_i.Tpo" "$(DEPDIR)/libVISUEngineImpl_la-VISU_Vectors_i.Plo"; else rm -f "$(DEPDIR)/libVISUEngineImpl_la-VISU_Vectors_i.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='VISU_Vectors_i.cc' object='libVISUEngineImpl_la-VISU_Vectors_i.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libVISUEngineImpl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libVISUEngineImpl_la-VISU_Vectors_i.lo `test -f 'VISU_Vectors_i.cc' || echo '$(srcdir)/'`VISU_Vectors_i.cc
+
+libVISUEngineImpl_la-VISU_StreamLines_i.lo: VISU_StreamLines_i.cc
+@am__fastdepCXX_TRUE@  if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libVISUEngineImpl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libVISUEngineImpl_la-VISU_StreamLines_i.lo -MD -MP -MF "$(DEPDIR)/libVISUEngineImpl_la-VISU_StreamLines_i.Tpo" -c -o libVISUEngineImpl_la-VISU_StreamLines_i.lo `test -f 'VISU_StreamLines_i.cc' || echo '$(srcdir)/'`VISU_StreamLines_i.cc; \
+@am__fastdepCXX_TRUE@  then mv -f "$(DEPDIR)/libVISUEngineImpl_la-VISU_StreamLines_i.Tpo" "$(DEPDIR)/libVISUEngineImpl_la-VISU_StreamLines_i.Plo"; else rm -f "$(DEPDIR)/libVISUEngineImpl_la-VISU_StreamLines_i.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='VISU_StreamLines_i.cc' object='libVISUEngineImpl_la-VISU_StreamLines_i.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libVISUEngineImpl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libVISUEngineImpl_la-VISU_StreamLines_i.lo `test -f 'VISU_StreamLines_i.cc' || echo '$(srcdir)/'`VISU_StreamLines_i.cc
+
+libVISUEngineImpl_la-VISU_ScalarMapOnDeformedShape_i.lo: VISU_ScalarMapOnDeformedShape_i.cc
+@am__fastdepCXX_TRUE@  if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libVISUEngineImpl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libVISUEngineImpl_la-VISU_ScalarMapOnDeformedShape_i.lo -MD -MP -MF "$(DEPDIR)/libVISUEngineImpl_la-VISU_ScalarMapOnDeformedShape_i.Tpo" -c -o libVISUEngineImpl_la-VISU_ScalarMapOnDeformedShape_i.lo `test -f 'VISU_ScalarMapOnDeformedShape_i.cc' || echo '$(srcdir)/'`VISU_ScalarMapOnDeformedShape_i.cc; \
+@am__fastdepCXX_TRUE@  then mv -f "$(DEPDIR)/libVISUEngineImpl_la-VISU_ScalarMapOnDeformedShape_i.Tpo" "$(DEPDIR)/libVISUEngineImpl_la-VISU_ScalarMapOnDeformedShape_i.Plo"; else rm -f "$(DEPDIR)/libVISUEngineImpl_la-VISU_ScalarMapOnDeformedShape_i.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='VISU_ScalarMapOnDeformedShape_i.cc' object='libVISUEngineImpl_la-VISU_ScalarMapOnDeformedShape_i.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libVISUEngineImpl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libVISUEngineImpl_la-VISU_ScalarMapOnDeformedShape_i.lo `test -f 'VISU_ScalarMapOnDeformedShape_i.cc' || echo '$(srcdir)/'`VISU_ScalarMapOnDeformedShape_i.cc
+
+libVISUEngineImpl_la-VISU_ColoredPrs3dCache_i.lo: VISU_ColoredPrs3dCache_i.cc
+@am__fastdepCXX_TRUE@  if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libVISUEngineImpl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libVISUEngineImpl_la-VISU_ColoredPrs3dCache_i.lo -MD -MP -MF "$(DEPDIR)/libVISUEngineImpl_la-VISU_ColoredPrs3dCache_i.Tpo" -c -o libVISUEngineImpl_la-VISU_ColoredPrs3dCache_i.lo `test -f 'VISU_ColoredPrs3dCache_i.cc' || echo '$(srcdir)/'`VISU_ColoredPrs3dCache_i.cc; \
+@am__fastdepCXX_TRUE@  then mv -f "$(DEPDIR)/libVISUEngineImpl_la-VISU_ColoredPrs3dCache_i.Tpo" "$(DEPDIR)/libVISUEngineImpl_la-VISU_ColoredPrs3dCache_i.Plo"; else rm -f "$(DEPDIR)/libVISUEngineImpl_la-VISU_ColoredPrs3dCache_i.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='VISU_ColoredPrs3dCache_i.cc' object='libVISUEngineImpl_la-VISU_ColoredPrs3dCache_i.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libVISUEngineImpl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libVISUEngineImpl_la-VISU_ColoredPrs3dCache_i.lo `test -f 'VISU_ColoredPrs3dCache_i.cc' || echo '$(srcdir)/'`VISU_ColoredPrs3dCache_i.cc
+
+libVISUEngineImpl_la-VISU_ColoredPrs3dHolder_i.lo: VISU_ColoredPrs3dHolder_i.cc
+@am__fastdepCXX_TRUE@  if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libVISUEngineImpl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libVISUEngineImpl_la-VISU_ColoredPrs3dHolder_i.lo -MD -MP -MF "$(DEPDIR)/libVISUEngineImpl_la-VISU_ColoredPrs3dHolder_i.Tpo" -c -o libVISUEngineImpl_la-VISU_ColoredPrs3dHolder_i.lo `test -f 'VISU_ColoredPrs3dHolder_i.cc' || echo '$(srcdir)/'`VISU_ColoredPrs3dHolder_i.cc; \
+@am__fastdepCXX_TRUE@  then mv -f "$(DEPDIR)/libVISUEngineImpl_la-VISU_ColoredPrs3dHolder_i.Tpo" "$(DEPDIR)/libVISUEngineImpl_la-VISU_ColoredPrs3dHolder_i.Plo"; else rm -f "$(DEPDIR)/libVISUEngineImpl_la-VISU_ColoredPrs3dHolder_i.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='VISU_ColoredPrs3dHolder_i.cc' object='libVISUEngineImpl_la-VISU_ColoredPrs3dHolder_i.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libVISUEngineImpl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libVISUEngineImpl_la-VISU_ColoredPrs3dHolder_i.lo `test -f 'VISU_ColoredPrs3dHolder_i.cc' || echo '$(srcdir)/'`VISU_ColoredPrs3dHolder_i.cc
+
+libVISUEngineImpl_la-VISU_ColoredPrs3dFactory.lo: VISU_ColoredPrs3dFactory.cc
+@am__fastdepCXX_TRUE@  if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libVISUEngineImpl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libVISUEngineImpl_la-VISU_ColoredPrs3dFactory.lo -MD -MP -MF "$(DEPDIR)/libVISUEngineImpl_la-VISU_ColoredPrs3dFactory.Tpo" -c -o libVISUEngineImpl_la-VISU_ColoredPrs3dFactory.lo `test -f 'VISU_ColoredPrs3dFactory.cc' || echo '$(srcdir)/'`VISU_ColoredPrs3dFactory.cc; \
+@am__fastdepCXX_TRUE@  then mv -f "$(DEPDIR)/libVISUEngineImpl_la-VISU_ColoredPrs3dFactory.Tpo" "$(DEPDIR)/libVISUEngineImpl_la-VISU_ColoredPrs3dFactory.Plo"; else rm -f "$(DEPDIR)/libVISUEngineImpl_la-VISU_ColoredPrs3dFactory.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='VISU_ColoredPrs3dFactory.cc' object='libVISUEngineImpl_la-VISU_ColoredPrs3dFactory.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libVISUEngineImpl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libVISUEngineImpl_la-VISU_ColoredPrs3dFactory.lo `test -f 'VISU_ColoredPrs3dFactory.cc' || echo '$(srcdir)/'`VISU_ColoredPrs3dFactory.cc
+
+libVISUEngineImpl_la-VISU_Mesh_i.lo: VISU_Mesh_i.cc
+@am__fastdepCXX_TRUE@  if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libVISUEngineImpl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libVISUEngineImpl_la-VISU_Mesh_i.lo -MD -MP -MF "$(DEPDIR)/libVISUEngineImpl_la-VISU_Mesh_i.Tpo" -c -o libVISUEngineImpl_la-VISU_Mesh_i.lo `test -f 'VISU_Mesh_i.cc' || echo '$(srcdir)/'`VISU_Mesh_i.cc; \
+@am__fastdepCXX_TRUE@  then mv -f "$(DEPDIR)/libVISUEngineImpl_la-VISU_Mesh_i.Tpo" "$(DEPDIR)/libVISUEngineImpl_la-VISU_Mesh_i.Plo"; else rm -f "$(DEPDIR)/libVISUEngineImpl_la-VISU_Mesh_i.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='VISU_Mesh_i.cc' object='libVISUEngineImpl_la-VISU_Mesh_i.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libVISUEngineImpl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libVISUEngineImpl_la-VISU_Mesh_i.lo `test -f 'VISU_Mesh_i.cc' || echo '$(srcdir)/'`VISU_Mesh_i.cc
+
+libVISUEngineImpl_la-VISU_ViewManager_i.lo: VISU_ViewManager_i.cc
+@am__fastdepCXX_TRUE@  if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libVISUEngineImpl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libVISUEngineImpl_la-VISU_ViewManager_i.lo -MD -MP -MF "$(DEPDIR)/libVISUEngineImpl_la-VISU_ViewManager_i.Tpo" -c -o libVISUEngineImpl_la-VISU_ViewManager_i.lo `test -f 'VISU_ViewManager_i.cc' || echo '$(srcdir)/'`VISU_ViewManager_i.cc; \
+@am__fastdepCXX_TRUE@  then mv -f "$(DEPDIR)/libVISUEngineImpl_la-VISU_ViewManager_i.Tpo" "$(DEPDIR)/libVISUEngineImpl_la-VISU_ViewManager_i.Plo"; else rm -f "$(DEPDIR)/libVISUEngineImpl_la-VISU_ViewManager_i.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='VISU_ViewManager_i.cc' object='libVISUEngineImpl_la-VISU_ViewManager_i.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libVISUEngineImpl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libVISUEngineImpl_la-VISU_ViewManager_i.lo `test -f 'VISU_ViewManager_i.cc' || echo '$(srcdir)/'`VISU_ViewManager_i.cc
+
+libVISUEngineImpl_la-VISU_TimeAnimation.lo: VISU_TimeAnimation.cxx
+@am__fastdepCXX_TRUE@  if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libVISUEngineImpl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libVISUEngineImpl_la-VISU_TimeAnimation.lo -MD -MP -MF "$(DEPDIR)/libVISUEngineImpl_la-VISU_TimeAnimation.Tpo" -c -o libVISUEngineImpl_la-VISU_TimeAnimation.lo `test -f 'VISU_TimeAnimation.cxx' || echo '$(srcdir)/'`VISU_TimeAnimation.cxx; \
+@am__fastdepCXX_TRUE@  then mv -f "$(DEPDIR)/libVISUEngineImpl_la-VISU_TimeAnimation.Tpo" "$(DEPDIR)/libVISUEngineImpl_la-VISU_TimeAnimation.Plo"; else rm -f "$(DEPDIR)/libVISUEngineImpl_la-VISU_TimeAnimation.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='VISU_TimeAnimation.cxx' object='libVISUEngineImpl_la-VISU_TimeAnimation.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libVISUEngineImpl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libVISUEngineImpl_la-VISU_TimeAnimation.lo `test -f 'VISU_TimeAnimation.cxx' || echo '$(srcdir)/'`VISU_TimeAnimation.cxx
+
+libVISUEngineImpl_la-VISU_View_i.lo: VISU_View_i.cc
+@am__fastdepCXX_TRUE@  if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libVISUEngineImpl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libVISUEngineImpl_la-VISU_View_i.lo -MD -MP -MF "$(DEPDIR)/libVISUEngineImpl_la-VISU_View_i.Tpo" -c -o libVISUEngineImpl_la-VISU_View_i.lo `test -f 'VISU_View_i.cc' || echo '$(srcdir)/'`VISU_View_i.cc; \
+@am__fastdepCXX_TRUE@  then mv -f "$(DEPDIR)/libVISUEngineImpl_la-VISU_View_i.Tpo" "$(DEPDIR)/libVISUEngineImpl_la-VISU_View_i.Plo"; else rm -f "$(DEPDIR)/libVISUEngineImpl_la-VISU_View_i.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='VISU_View_i.cc' object='libVISUEngineImpl_la-VISU_View_i.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libVISUEngineImpl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libVISUEngineImpl_la-VISU_View_i.lo `test -f 'VISU_View_i.cc' || echo '$(srcdir)/'`VISU_View_i.cc
+
+libVISUEngineImpl_la-VISU_Table_i.lo: VISU_Table_i.cc
+@am__fastdepCXX_TRUE@  if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libVISUEngineImpl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libVISUEngineImpl_la-VISU_Table_i.lo -MD -MP -MF "$(DEPDIR)/libVISUEngineImpl_la-VISU_Table_i.Tpo" -c -o libVISUEngineImpl_la-VISU_Table_i.lo `test -f 'VISU_Table_i.cc' || echo '$(srcdir)/'`VISU_Table_i.cc; \
+@am__fastdepCXX_TRUE@  then mv -f "$(DEPDIR)/libVISUEngineImpl_la-VISU_Table_i.Tpo" "$(DEPDIR)/libVISUEngineImpl_la-VISU_Table_i.Plo"; else rm -f "$(DEPDIR)/libVISUEngineImpl_la-VISU_Table_i.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='VISU_Table_i.cc' object='libVISUEngineImpl_la-VISU_Table_i.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libVISUEngineImpl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libVISUEngineImpl_la-VISU_Table_i.lo `test -f 'VISU_Table_i.cc' || echo '$(srcdir)/'`VISU_Table_i.cc
+
+libVISUEngineImpl_la-VISU_Gen_i.lo: VISU_Gen_i.cc
+@am__fastdepCXX_TRUE@  if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libVISUEngineImpl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libVISUEngineImpl_la-VISU_Gen_i.lo -MD -MP -MF "$(DEPDIR)/libVISUEngineImpl_la-VISU_Gen_i.Tpo" -c -o libVISUEngineImpl_la-VISU_Gen_i.lo `test -f 'VISU_Gen_i.cc' || echo '$(srcdir)/'`VISU_Gen_i.cc; \
+@am__fastdepCXX_TRUE@  then mv -f "$(DEPDIR)/libVISUEngineImpl_la-VISU_Gen_i.Tpo" "$(DEPDIR)/libVISUEngineImpl_la-VISU_Gen_i.Plo"; else rm -f "$(DEPDIR)/libVISUEngineImpl_la-VISU_Gen_i.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='VISU_Gen_i.cc' object='libVISUEngineImpl_la-VISU_Gen_i.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libVISUEngineImpl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libVISUEngineImpl_la-VISU_Gen_i.lo `test -f 'VISU_Gen_i.cc' || echo '$(srcdir)/'`VISU_Gen_i.cc
+
+libVISUEngineImpl_la-VISU_CorbaMedConvertor.lo: VISU_CorbaMedConvertor.cxx
+@am__fastdepCXX_TRUE@  if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libVISUEngineImpl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libVISUEngineImpl_la-VISU_CorbaMedConvertor.lo -MD -MP -MF "$(DEPDIR)/libVISUEngineImpl_la-VISU_CorbaMedConvertor.Tpo" -c -o libVISUEngineImpl_la-VISU_CorbaMedConvertor.lo `test -f 'VISU_CorbaMedConvertor.cxx' || echo '$(srcdir)/'`VISU_CorbaMedConvertor.cxx; \
+@am__fastdepCXX_TRUE@  then mv -f "$(DEPDIR)/libVISUEngineImpl_la-VISU_CorbaMedConvertor.Tpo" "$(DEPDIR)/libVISUEngineImpl_la-VISU_CorbaMedConvertor.Plo"; else rm -f "$(DEPDIR)/libVISUEngineImpl_la-VISU_CorbaMedConvertor.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='VISU_CorbaMedConvertor.cxx' object='libVISUEngineImpl_la-VISU_CorbaMedConvertor.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libVISUEngineImpl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libVISUEngineImpl_la-VISU_CorbaMedConvertor.lo `test -f 'VISU_CorbaMedConvertor.cxx' || echo '$(srcdir)/'`VISU_CorbaMedConvertor.cxx
+
+libVISUEngineImpl_la-VISU_DumpPython.lo: VISU_DumpPython.cc
+@am__fastdepCXX_TRUE@  if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libVISUEngineImpl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libVISUEngineImpl_la-VISU_DumpPython.lo -MD -MP -MF "$(DEPDIR)/libVISUEngineImpl_la-VISU_DumpPython.Tpo" -c -o libVISUEngineImpl_la-VISU_DumpPython.lo `test -f 'VISU_DumpPython.cc' || echo '$(srcdir)/'`VISU_DumpPython.cc; \
+@am__fastdepCXX_TRUE@  then mv -f "$(DEPDIR)/libVISUEngineImpl_la-VISU_DumpPython.Tpo" "$(DEPDIR)/libVISUEngineImpl_la-VISU_DumpPython.Plo"; else rm -f "$(DEPDIR)/libVISUEngineImpl_la-VISU_DumpPython.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='VISU_DumpPython.cc' object='libVISUEngineImpl_la-VISU_DumpPython.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libVISUEngineImpl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libVISUEngineImpl_la-VISU_DumpPython.lo `test -f 'VISU_DumpPython.cc' || echo '$(srcdir)/'`VISU_DumpPython.cc
+
+libVISUEngineImpl_la-SALOME_GenericObjPointer.lo: SALOME_GenericObjPointer.cc
+@am__fastdepCXX_TRUE@  if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libVISUEngineImpl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libVISUEngineImpl_la-SALOME_GenericObjPointer.lo -MD -MP -MF "$(DEPDIR)/libVISUEngineImpl_la-SALOME_GenericObjPointer.Tpo" -c -o libVISUEngineImpl_la-SALOME_GenericObjPointer.lo `test -f 'SALOME_GenericObjPointer.cc' || echo '$(srcdir)/'`SALOME_GenericObjPointer.cc; \
+@am__fastdepCXX_TRUE@  then mv -f "$(DEPDIR)/libVISUEngineImpl_la-SALOME_GenericObjPointer.Tpo" "$(DEPDIR)/libVISUEngineImpl_la-SALOME_GenericObjPointer.Plo"; else rm -f "$(DEPDIR)/libVISUEngineImpl_la-SALOME_GenericObjPointer.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='SALOME_GenericObjPointer.cc' object='libVISUEngineImpl_la-SALOME_GenericObjPointer.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libVISUEngineImpl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libVISUEngineImpl_la-SALOME_GenericObjPointer.lo `test -f 'SALOME_GenericObjPointer.cc' || echo '$(srcdir)/'`SALOME_GenericObjPointer.cc
+
+libVISUEngineImpl_la-VISU_TimeAnimation_moc.lo: VISU_TimeAnimation_moc.cxx
+@am__fastdepCXX_TRUE@  if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libVISUEngineImpl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libVISUEngineImpl_la-VISU_TimeAnimation_moc.lo -MD -MP -MF "$(DEPDIR)/libVISUEngineImpl_la-VISU_TimeAnimation_moc.Tpo" -c -o libVISUEngineImpl_la-VISU_TimeAnimation_moc.lo `test -f 'VISU_TimeAnimation_moc.cxx' || echo '$(srcdir)/'`VISU_TimeAnimation_moc.cxx; \
+@am__fastdepCXX_TRUE@  then mv -f "$(DEPDIR)/libVISUEngineImpl_la-VISU_TimeAnimation_moc.Tpo" "$(DEPDIR)/libVISUEngineImpl_la-VISU_TimeAnimation_moc.Plo"; else rm -f "$(DEPDIR)/libVISUEngineImpl_la-VISU_TimeAnimation_moc.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='VISU_TimeAnimation_moc.cxx' object='libVISUEngineImpl_la-VISU_TimeAnimation_moc.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libVISUEngineImpl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libVISUEngineImpl_la-VISU_TimeAnimation_moc.lo `test -f 'VISU_TimeAnimation_moc.cxx' || echo '$(srcdir)/'`VISU_TimeAnimation_moc.cxx
+
+VISU_I-VISU_I.o: VISU_I.cxx
+@am__fastdepCXX_TRUE@  if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(VISU_I_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT VISU_I-VISU_I.o -MD -MP -MF "$(DEPDIR)/VISU_I-VISU_I.Tpo" -c -o VISU_I-VISU_I.o `test -f 'VISU_I.cxx' || echo '$(srcdir)/'`VISU_I.cxx; \
+@am__fastdepCXX_TRUE@  then mv -f "$(DEPDIR)/VISU_I-VISU_I.Tpo" "$(DEPDIR)/VISU_I-VISU_I.Po"; else rm -f "$(DEPDIR)/VISU_I-VISU_I.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='VISU_I.cxx' object='VISU_I-VISU_I.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(VISU_I_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o VISU_I-VISU_I.o `test -f 'VISU_I.cxx' || echo '$(srcdir)/'`VISU_I.cxx
+
+VISU_I-VISU_I.obj: VISU_I.cxx
+@am__fastdepCXX_TRUE@  if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(VISU_I_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT VISU_I-VISU_I.obj -MD -MP -MF "$(DEPDIR)/VISU_I-VISU_I.Tpo" -c -o VISU_I-VISU_I.obj `if test -f 'VISU_I.cxx'; then $(CYGPATH_W) 'VISU_I.cxx'; else $(CYGPATH_W) '$(srcdir)/VISU_I.cxx'; fi`; \
+@am__fastdepCXX_TRUE@  then mv -f "$(DEPDIR)/VISU_I-VISU_I.Tpo" "$(DEPDIR)/VISU_I-VISU_I.Po"; else rm -f "$(DEPDIR)/VISU_I-VISU_I.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='VISU_I.cxx' object='VISU_I-VISU_I.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(VISU_I_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o VISU_I-VISU_I.obj `if test -f 'VISU_I.cxx'; then $(CYGPATH_W) 'VISU_I.cxx'; else $(CYGPATH_W) '$(srcdir)/VISU_I.cxx'; fi`
+
+.cxx.o:
+@am__fastdepCXX_TRUE@  if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+@am__fastdepCXX_TRUE@  then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $<
+
+.cxx.obj:
+@am__fastdepCXX_TRUE@  if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
+@am__fastdepCXX_TRUE@  then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.cxx.lo:
+@am__fastdepCXX_TRUE@  if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+@am__fastdepCXX_TRUE@  then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+
+distclean-libtool:
+       -rm -f libtool
+uninstall-info-am:
+install-salomeincludeHEADERS: $(salomeinclude_HEADERS)
+       @$(NORMAL_INSTALL)
+       test -z "$(salomeincludedir)" || $(mkdir_p) "$(DESTDIR)$(salomeincludedir)"
+       @list='$(salomeinclude_HEADERS)'; for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         f=$(am__strip_dir) \
+         echo " $(salomeincludeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(salomeincludedir)/$$f'"; \
+         $(salomeincludeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(salomeincludedir)/$$f"; \
+       done
+
+uninstall-salomeincludeHEADERS:
+       @$(NORMAL_UNINSTALL)
+       @list='$(salomeinclude_HEADERS)'; for p in $$list; do \
+         f=$(am__strip_dir) \
+         echo " rm -f '$(DESTDIR)$(salomeincludedir)/$$f'"; \
+         rm -f "$(DESTDIR)$(salomeincludedir)/$$f"; \
+       done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+       list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '    { files[$$0] = 1; } \
+              END { for (i in files) print i; }'`; \
+       mkid -fID $$unique
+tags: TAGS
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       tags=; \
+       here=`pwd`; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '    { files[$$0] = 1; } \
+              END { for (i in files) print i; }'`; \
+       if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+         test -n "$$unique" || unique=$$empty_fix; \
+         $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+           $$tags $$unique; \
+       fi
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       tags=; \
+       here=`pwd`; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '    { files[$$0] = 1; } \
+              END { for (i in files) print i; }'`; \
+       test -z "$(CTAGS_ARGS)$$tags$$unique" \
+         || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+            $$tags $$unique
+
+GTAGS:
+       here=`$(am__cd) $(top_builddir) && pwd` \
+         && cd $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+       $(mkdir_p) $(distdir)/../../adm_local/unix
+       @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+       list='$(DISTFILES)'; for file in $$list; do \
+         case $$file in \
+           $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+           $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+         esac; \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+         if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+           dir="/$$dir"; \
+           $(mkdir_p) "$(distdir)$$dir"; \
+         else \
+           dir=''; \
+         fi; \
+         if test -d $$d/$$file; then \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+           fi; \
+           cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+         else \
+           test -f $(distdir)/$$file \
+           || cp -p $$d/$$file $(distdir)/$$file \
+           || exit 1; \
+         fi; \
+       done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(HEADERS)
+install-binPROGRAMS: install-libLTLIBRARIES
+
+installdirs:
+       for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(salomeincludedir)"; do \
+         test -z "$$dir" || $(mkdir_p) "$$dir"; \
+       done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+         install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+         `test -z '$(STRIP)' || \
+           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-binPROGRAMS clean-generic clean-libLTLIBRARIES \
+       clean-libtool mostlyclean-am
+
+distclean: distclean-am
+       -rm -rf ./$(DEPDIR)
+       -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+       distclean-libtool distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am: install-salomeincludeHEADERS
+
+install-exec-am: install-binPROGRAMS install-libLTLIBRARIES
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+       -rm -rf ./$(DEPDIR)
+       -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+       mostlyclean-libtool mostlyclean-local
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-binPROGRAMS uninstall-info-am \
+       uninstall-libLTLIBRARIES uninstall-salomeincludeHEADERS
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
+       clean-generic clean-libLTLIBRARIES clean-libtool ctags \
+       distclean distclean-compile distclean-generic \
+       distclean-libtool distclean-tags distdir dvi dvi-am html \
+       html-am info info-am install install-am install-binPROGRAMS \
+       install-data install-data-am install-exec install-exec-am \
+       install-info install-info-am install-libLTLIBRARIES \
+       install-man install-salomeincludeHEADERS install-strip \
+       installcheck installcheck-am installdirs maintainer-clean \
+       maintainer-clean-generic mostlyclean mostlyclean-compile \
+       mostlyclean-generic mostlyclean-libtool mostlyclean-local pdf \
+       pdf-am ps ps-am tags uninstall uninstall-am \
+       uninstall-binPROGRAMS uninstall-info-am \
+       uninstall-libLTLIBRARIES uninstall-salomeincludeHEADERS
+
+
+# common rules
+
+# moc-files generation
+%_moc.cxx: %.h
+       $(MOC) $< -o $@
+
+# qm-files generation
+%.qm: %.po
+       $(MSG2QM) $< $@
+
+mostlyclean-local:
+       rm -f @builddir@/*_moc.cxx
+       rm -f @builddir@/*.qm
+
+# tests
+tests: unittest
 
-@CONCLUDE@
+unittest: $(UNIT_TEST_PROG)
+       @if test "x$(UNIT_TEST_PROG)" != "x"; then \
+           $(UNIT_TEST_PROG);                     \
+       fi;
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
index 81e7492d22f49042a3f2a84d141e7c6daae5158a..fc30bb218db9af1b1f06a0d5118964d00669ec24 100644 (file)
@@ -315,8 +315,8 @@ namespace VISU{
     SALOMEDS::SObject_var aFieldSO;
     for(;anIter->More();anIter->Next()) {
       SALOMEDS::GenericAttribute_var anAttr;
-      if (anIter->Value()->FindAttribute(anAttr,"AttributeComment")) {
-       SALOMEDS::AttributeComment_var aCmnt = SALOMEDS::AttributeComment::_narrow(anAttr);
+      if (anIter->Value()->FindAttribute(anAttr,"AttributeString")) {
+       SALOMEDS::AttributeString_var aCmnt = SALOMEDS::AttributeString::_narrow(anAttr);
        CORBA::String_var aString = aCmnt->Value();
        string aValue(aString);
        if (aValue == theComment) {
@@ -362,8 +362,8 @@ namespace VISU{
       aPRef->SetValue(thePersistentRef.c_str());
     }
     if(theComment != ""){
-      anAttr = aStudyBuilder->FindOrCreateAttribute(newObj, "AttributeComment");
-      SALOMEDS::AttributeComment_var aCmnt = SALOMEDS::AttributeComment::_narrow(anAttr);
+      anAttr = aStudyBuilder->FindOrCreateAttribute(newObj, "AttributeString");
+      SALOMEDS::AttributeString_var aCmnt = SALOMEDS::AttributeString::_narrow(anAttr);
       aCmnt->SetValue(theComment.c_str());
       if(MYDEBUG) INFOS("CreateAttributes - Comment = "<<theComment);
     }
@@ -414,8 +414,8 @@ namespace VISU{
       aPRef->SetValue(thePersistentRef);
     }
     if (theComment != "") {
-      anAttr = aStudyBuilder->FindOrCreateAttribute(newObj, "AttributeComment");
-      _PTR(AttributeComment) aCmnt (anAttr);
+      anAttr = aStudyBuilder->FindOrCreateAttribute(newObj, "AttributeString");
+      _PTR(AttributeString) aCmnt (anAttr);
       aCmnt->SetValue(theComment);
       if (MYDEBUG) INFOS("CreateAttributes - Comment = " << theComment);
     }
index 5464c505d3066c65328a7718273fa91fa26a22f9..48aeae5f5920ebe2067c14c40b79a3508468a55a 100644 (file)
@@ -27,6 +27,8 @@
 #ifndef __VISU_CONFIG_H__
 #define __VISU_CONFIG_H__
 
+#include "VISU_I.hxx"
+
 // IDL headers
 #include "SALOMEconfig.h"
 #include CORBA_SERVER_HEADER(VISU_Gen)
@@ -65,14 +67,14 @@ class SUIT_ResourceMgr;
 namespace VISU
 {
 
-  SUIT_Session *GetSession();
-  SUIT_ResourceMgr *GetResourceMgr();
+  VISU_I_EXPORT SUIT_Session *GetSession();
+  VISU_I_EXPORT SUIT_ResourceMgr *GetResourceMgr();
 
   //===========================================================================
 
   class VISU_Gen_i;
 
-  class Base_i : public virtual POA_VISU::Base,
+  class VISU_I_EXPORT Base_i : public virtual POA_VISU::Base,
                  public virtual PortableServer::RefCountServantBase
   {
   public:
@@ -104,7 +106,7 @@ namespace VISU
 
 
   //===========================================================================
-  class Mutex{
+  class VISU_I_EXPORT Mutex{
     QMutex* myMutex;
     int isQAppLocked;
   public:
@@ -114,7 +116,7 @@ namespace VISU
 
 
   //===========================================================================
-  class Storable : public virtual Base_i {
+  class VISU_I_EXPORT Storable : public virtual Base_i {
   protected:
     virtual void ToStream(std::ostringstream& theStr) = 0;
   public:
@@ -184,16 +186,35 @@ namespace VISU
   };
 
   //===========================================================================
-  const CORBA::Boolean IsMultifile();
-  QString GenerateName(const std::string& theFmt, int theId);
+  VISU_I_EXPORT 
+  const CORBA::Boolean 
+  IsMultifile();
+
+  VISU_I_EXPORT
+  QString
+  GenerateName(const std::string& theFmt, int theId);
+
+  VISU_I_EXPORT 
+  PortableServer::ServantBase_var 
+  GetServant(CORBA::Object_ptr theObject);
+
+  VISU_I_EXPORT
+  CORBA::Object_var
+  ClientSObjectToObject(_PTR(SObject) theSObject);
+
+  VISU_I_EXPORT
+  CORBA::Object_var
+  SObjectToObject(SALOMEDS::SObject_ptr);
 
-  PortableServer::ServantBase_var GetServant(CORBA::Object_ptr theObject);
-  CORBA::Object_var ClientSObjectToObject(_PTR(SObject) theSObject);
-  CORBA::Object_var SObjectToObject(SALOMEDS::SObject_ptr);
+  VISU_I_EXPORT
+  _PTR(SComponent) 
+  ClientFindOrCreateVisuComponent(_PTR(Study) theStudyDocument);
 
-  _PTR(SComponent) ClientFindOrCreateVisuComponent(_PTR(Study) theStudyDocument);
-  SALOMEDS::SComponent_var FindOrCreateVisuComponent(SALOMEDS::Study_ptr theStudyDocument);
+  VISU_I_EXPORT 
+  SALOMEDS::SComponent_var 
+  FindOrCreateVisuComponent(SALOMEDS::Study_ptr theStudyDocument);
 
+  VISU_I_EXPORT
   std::string 
   CreateAttributes(SALOMEDS::Study_ptr theStudyDocument,
                   const std::string& theFatherEntry, 
@@ -204,6 +225,7 @@ namespace VISU
                   const std::string& theComment,
                   CORBA::Boolean theCreateNew = true);
 
+  VISU_I_EXPORT
   std::string 
   CreateAttributes(_PTR(Study) theStudyDocument,
                   const std::string& theFatherEntry, 
@@ -214,25 +236,31 @@ namespace VISU
                   const std::string& theComment,
                   CORBA::Boolean theCreateNew = true);
 
+  VISU_I_EXPORT
   std::string 
   FindEntryWithComment(SALOMEDS::Study_ptr theStudyDocument, 
                       const std::string& theStartEntry,
                       const std::string& theComment, 
                       int IsAllLevels = true);
   
+  VISU_I_EXPORT
   SALOMEDS::SObject_var
   GetSObject(_PTR(SObject));
 
+  VISU_I_EXPORT
   _PTR(SObject) 
     GetClientSObject(SALOMEDS::SObject_var, _PTR(Study));
 
+  VISU_I_EXPORT
   SALOMEDS::Study_var 
   GetDSStudy(_PTR(Study));
 
+  VISU_I_EXPORT
   void
   RemoveFromStudy(SALOMEDS::SObject_ptr theSObject,
                  bool theIsAttrOnly = true,
                  bool theDestroySubObjects = false);
+  VISU_I_EXPORT
   void 
   RemoveFromStudy(_PTR(SObject) theSObject,
                  bool theIsAttrOnly = true,
index 02a20b454526ea864cc9ccb740231aa638860fad..fa9ef3525260262d797c9c4756657da2bec0231c 100644 (file)
@@ -45,7 +45,34 @@ static int MYDEBUG = 0;
 #endif
 
 
-//============================================================================
+//---------------------------------------------------------------
+namespace
+{
+  std::string
+  FindOrCreate3DPresentationsFolder(SALOMEDS::Study_ptr theStudy)
+  {
+    static char aFolderName[] = "3D Presentations";
+    CORBA::String_var anEntry;
+    SALOMEDS::SObject_var aSObject = theStudy->FindObject(aFolderName);
+    if(!CORBA::is_nil(aSObject) && aSObject->Depth() == 3){
+      anEntry = aSObject->GetID();
+      return anEntry.in();
+    }
+    SALOMEDS::SComponent_var aSComponent = VISU::FindOrCreateVisuComponent(theStudy);
+    CORBA::String_var aFatherEntry = aSComponent->GetID();
+    anEntry = VISU::CreateAttributes(theStudy,
+                                    aFatherEntry.in(),
+                                    "",
+                                    "",
+                                    aFolderName,
+                                    "",
+                                    "",
+                                    true).c_str();
+    return anEntry.in();
+  }
+}
+
+//---------------------------------------------------------------
 VISU::ColoredPrs3d_i::
 ColoredPrs3d_i(EPublishInStudyMode thePublishInStudyMode) :
   myPublishInStudyMode(thePublishInStudyMode),
@@ -1152,30 +1179,8 @@ VISU::ColoredPrs3d_i
 }
 
 //----------------------------------------------------------------------------
-std::string
-VISU::FindOrCreate3DPresentationsFolder(SALOMEDS::Study_ptr theStudy)
-{
-  static char aFolderName[] = "3D Presentations";
-  CORBA::String_var anEntry;
-  SALOMEDS::SObject_var aSObject = theStudy->FindObject(aFolderName);
-  if(!CORBA::is_nil(aSObject) && aSObject->Depth() == 3){
-    anEntry = aSObject->GetID();
-    return anEntry.in();
-  }
-  SALOMEDS::SComponent_var aSComponent = VISU::FindOrCreateVisuComponent(theStudy);
-  CORBA::String_var aFatherEntry = aSComponent->GetID();
-  anEntry = VISU::CreateAttributes(theStudy,
-                                  aFatherEntry.in(),
-                                  "",
-                                  "",
-                                  aFolderName,
-                                  "",
-                                  "",
-                                  true).c_str();
-  return anEntry.in();
-}
 
-//----------------------------------------------------------------------------
+
 VISU::Storable* 
 VISU::ColoredPrs3d_i
 ::Build(EBuildMode theBuildMode)
@@ -1230,7 +1235,7 @@ VISU::ColoredPrs3d_i
     }else if(myPublishInStudyMode == EPublishIndependently){
       SetName(GenerateName().latin1(), false);
       CORBA::String_var anIOR = GetID();
-      std::string aFatherEntry = VISU::FindOrCreate3DPresentationsFolder(GetStudyDocument());
+      std::string aFatherEntry = ::FindOrCreate3DPresentationsFolder(GetStudyDocument());
       aComment.sprintf("myComment=%s",
                       GetComment());
       CreateAttributes(GetStudyDocument(),
index 1115bbef967b18058fa25230c179e4abc77e68aa..5426ac7fc34a513e2cba86a6599ff88220067252 100644 (file)
@@ -20,7 +20,7 @@
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
-//  File   : VISU_PrsObject_i.hxx
+//  File   : VISU_ColoredPrs3d_i.hh
 //  Author : Alexey PETROV
 //  Module : VISU
 
@@ -33,15 +33,12 @@ class VISU_ColoredPL;
 
 namespace VISU
 {
-  std::string
-  FindOrCreate3DPresentationsFolder(SALOMEDS::Study_ptr theStudy);
-
-  //============================================================================
-  class ColoredPrs3d_i : public virtual POA_VISU::ColoredPrs3d,
-                        public virtual Prs3d_i
+  //----------------------------------------------------------------------------
+  class VISU_I_EXPORT ColoredPrs3d_i : public virtual POA_VISU::ColoredPrs3d,
+                                      public virtual Prs3d_i
   {
-    ColoredPrs3d_i();
     ColoredPrs3d_i(const ColoredPrs3d_i&);
+
   public:
     //----------------------------------------------------------------------------
     typedef Prs3d_i TSuperClass;
@@ -387,6 +384,10 @@ namespace VISU
     bool 
     CheckIsPossible() = 0;
 
+    virtual 
+    const char* 
+    GetIconName() = 0;
+
     /*!
       Creates proper instance of VTK pipeline.
     */
index dd78ea91ada673c003429e4d3265948e4e153df5..77f45e2ecfe4ac7e8c5d9fe8b78915a170dba061 100644 (file)
@@ -34,8 +34,8 @@
 
 #include <boost/tuple/tuple.hpp>
 
-using namespace std;
-using namespace VISU;
+#include "ReceiverFactory.hxx"
+#include "MED_SliceArray.hxx"
 
 #define USER_INTERLACE MED_FULL_INTERLACE
 
@@ -61,64 +61,74 @@ extern "C" {
 
 namespace
 {
-  using namespace SALOME_MED;
+  const int MED_NBR_GEOMETRIE_MAILLE = 17;
   
-  const int MED_NBR_GEOMETRIE_MAILLE = 15;
-  
-  medGeometryElement 
+  SALOME_MED::medGeometryElement 
   CELLGEOM[MED_NBR_GEOMETRIE_MAILLE] = {
-    MED_POINT1,
-    MED_SEG2,
-    MED_SEG3,
-    MED_TRIA3,
-    MED_QUAD4,
-    MED_TRIA6,
-    MED_QUAD8,
-    MED_TETRA4,
-    MED_PYRA5,
-    MED_PENTA6,
-    MED_HEXA8,
-    MED_TETRA10,
-    MED_PYRA13,
-    MED_PENTA15,
-    MED_HEXA20
+    SALOME_MED::MED_POINT1,
+    SALOME_MED::MED_SEG2,
+    SALOME_MED::MED_SEG3,
+    SALOME_MED::MED_TRIA3,
+    SALOME_MED::MED_QUAD4,
+    SALOME_MED::MED_TRIA6,
+    SALOME_MED::MED_QUAD8,
+    SALOME_MED::MED_TETRA4,
+    SALOME_MED::MED_PYRA5,
+    SALOME_MED::MED_PENTA6,
+    SALOME_MED::MED_HEXA8,
+    SALOME_MED::MED_TETRA10,
+    SALOME_MED::MED_PYRA13,
+    SALOME_MED::MED_PENTA15,
+    SALOME_MED::MED_HEXA20,
+    SALOME_MED::MED_POLYGON,
+    SALOME_MED::MED_POLYHEDRA
   };
   
-  const int MED_NBR_GEOMETRIE_FACE = 4;
+  const int MED_NBR_GEOMETRIE_FACE = 5;
   
-  medGeometryElement
+  SALOME_MED::medGeometryElement
   FACEGEOM[MED_NBR_GEOMETRIE_FACE] = {
-    MED_TRIA3,
-    MED_QUAD4,
-    MED_TRIA6,
-    MED_QUAD8
+    SALOME_MED::MED_TRIA3,
+    SALOME_MED::MED_QUAD4,
+    SALOME_MED::MED_TRIA6,
+    SALOME_MED::MED_QUAD8,
+    SALOME_MED::MED_POLYGON
   };
   
   const int MED_NBR_GEOMETRIE_ARETE = 2;
   
-  medGeometryElement
+  SALOME_MED::medGeometryElement
   EDGEGEOM[MED_NBR_GEOMETRIE_ARETE] = {
-    MED_SEG2,
-    MED_SEG3
+    SALOME_MED::MED_SEG2,
+    SALOME_MED::MED_SEG3
   };
   
   const int MED_NBR_GEOMETRIE_NODE = 1;
   
-  medGeometryElement
+  SALOME_MED::medGeometryElement
   NODEGEOM[MED_NBR_GEOMETRIE_NODE] = {
-    MED_POINT1,
+    SALOME_MED::MED_POINT1,
   };
   
 
   //---------------------------------------------------------------
   int
-  GetEntity2Geom(const VISU::TEntity& theEntity, medGeometryElement*& theVector)
+  GetEntity2Geom(const VISU::TEntity& theEntity, 
+                SALOME_MED::medGeometryElement*& theVector)
   {
     switch(theEntity){
-    case CELL_ENTITY: theVector = CELLGEOM; return MED_NBR_GEOMETRIE_MAILLE; break;
-    case FACE_ENTITY: theVector = FACEGEOM; return MED_NBR_GEOMETRIE_FACE; break;
-    case EDGE_ENTITY: theVector = EDGEGEOM; return MED_NBR_GEOMETRIE_ARETE; break;
-    case NODE_ENTITY: theVector = NODEGEOM; return MED_NBR_GEOMETRIE_NODE; break;
+    case VISU::CELL_ENTITY: 
+      theVector = CELLGEOM; 
+      return MED_NBR_GEOMETRIE_MAILLE; 
+    case VISU::FACE_ENTITY: 
+      theVector = FACEGEOM; 
+      return MED_NBR_GEOMETRIE_FACE; 
+    case VISU::EDGE_ENTITY: 
+      theVector = EDGEGEOM; 
+      return MED_NBR_GEOMETRIE_ARETE; 
+    case VISU::NODE_ENTITY: 
+      theVector = NODEGEOM; 
+      return MED_NBR_GEOMETRIE_NODE; 
     }
     return -1;
   }
@@ -129,22 +139,38 @@ namespace
   MEDGeom2NbNodes(int theMEDGeomType)
   { 
     switch(theMEDGeomType){
-    case MED_NONE: return 0;
-    case MED_POINT1: return 1;
-    case MED_SEG2: return 2;
-    case MED_SEG3: return 3;
-    case MED_TRIA3: return 3;
-    case MED_TRIA6: return 6;
-    case MED_QUAD4: return 4;
-    case MED_QUAD8: return 8;
-    case MED_TETRA4: return 4;
-    case MED_TETRA10: return 10;
-    case MED_HEXA8: return 8;
-    case MED_HEXA20: return 20;
-    case MED_PENTA6: return 6;
-    case MED_PENTA15: return 15;
-    case MED_PYRA5: return 5;
-    case MED_PYRA13: return 13;
+    case SALOME_MED::MED_NONE: 
+      return 0;
+    case SALOME_MED::MED_POINT1: 
+      return 1;
+    case SALOME_MED::MED_SEG2: 
+      return 2;
+    case SALOME_MED::MED_SEG3: 
+      return 3;
+    case SALOME_MED::MED_TRIA3: 
+      return 3;
+    case SALOME_MED::MED_TRIA6: 
+      return 6;
+    case SALOME_MED::MED_QUAD4: 
+      return 4;
+    case SALOME_MED::MED_QUAD8: 
+      return 8;
+    case SALOME_MED::MED_TETRA4: 
+      return 4;
+    case SALOME_MED::MED_TETRA10: 
+      return 10;
+    case SALOME_MED::MED_HEXA8: 
+      return 8;
+    case SALOME_MED::MED_HEXA20: 
+      return 20;
+    case SALOME_MED::MED_PENTA6: 
+      return 6;
+    case SALOME_MED::MED_PENTA15: 
+      return 15;
+    case SALOME_MED::MED_PYRA5: 
+      return 5;
+    case SALOME_MED::MED_PYRA13: 
+      return 13;
     }
     return -1;
   }
@@ -152,70 +178,150 @@ namespace
 
   //---------------------------------------------------------------
   VISU::EGeometry
-  MEDGeom2VISU(medGeometryElement theGeom)
+  MEDGeom2VISU(SALOME_MED::medGeometryElement theGeom)
   { 
     switch(theGeom){
-    case MED_POINT1: return VISU::ePOINT1;
-    case MED_SEG2: return VISU::eSEG2;
-    case MED_SEG3: return VISU::eSEG3;
-    case MED_TRIA3: return VISU::eTRIA3;
-    case MED_TRIA6: return VISU::eTRIA6;
-    case MED_QUAD4: return VISU::eQUAD4;
-    case MED_QUAD8: return VISU::eQUAD8;
-    case MED_TETRA4: return VISU::eTETRA4;
-    case MED_TETRA10: return VISU::eTETRA10;
-    case MED_HEXA8: return VISU::eHEXA8;
-    case MED_HEXA20: return VISU::eHEXA20;
-    case MED_PENTA6: return VISU::ePENTA6;
-    case MED_PENTA15: return VISU::ePENTA15;
-    case MED_PYRA5: return VISU::ePYRA5;
-    case MED_PYRA13: return VISU::ePYRA13;
+    case SALOME_MED::MED_POINT1:
+      return VISU::ePOINT1;
+    case SALOME_MED::MED_SEG2: 
+      return VISU::eSEG2;
+    case SALOME_MED::MED_SEG3: 
+      return VISU::eSEG3;
+    case SALOME_MED::MED_TRIA3: 
+      return VISU::eTRIA3;
+    case SALOME_MED::MED_TRIA6: 
+      return VISU::eTRIA6;
+    case SALOME_MED::MED_QUAD4: 
+      return VISU::eQUAD4;
+    case SALOME_MED::MED_QUAD8: 
+      return VISU::eQUAD8;
+    case SALOME_MED::MED_TETRA4: 
+      return VISU::eTETRA4;
+    case SALOME_MED::MED_TETRA10: 
+      return VISU::eTETRA10;
+    case SALOME_MED::MED_HEXA8: 
+      return VISU::eHEXA8;
+    case SALOME_MED::MED_HEXA20: 
+      return VISU::eHEXA20;
+    case SALOME_MED::MED_PENTA6: 
+      return VISU::ePENTA6;
+    case SALOME_MED::MED_PENTA15: 
+      return VISU::ePENTA15;
+    case SALOME_MED::MED_PYRA5: 
+      return VISU::ePYRA5;
+    case SALOME_MED::MED_PYRA13: 
+      return VISU::ePYRA13;
+    case SALOME_MED::MED_POLYGON: 
+      return VISU::ePOLYGONE;
+    case SALOME_MED::MED_POLYHEDRA: 
+      return VISU::ePOLYEDRE;
     }
     return VISU::eNONE;
   }
   
+  //---------------------------------------------------------------
+  SALOME_MED::medGeometryElement 
+  VISUGeomToMED(int theGeom)
+  { 
+    switch(theGeom){
+    case VISU::ePOINT1: 
+      return SALOME_MED::MED_POINT1;
+    case VISU::eSEG2: 
+      return SALOME_MED::MED_SEG2;
+    case VISU::eTRIA3: 
+      return SALOME_MED::MED_TRIA3;
+    case VISU::eQUAD4: 
+      return SALOME_MED::MED_QUAD4;
+    case VISU::eTETRA4: 
+      return SALOME_MED::MED_TETRA4;
+    case VISU::eHEXA8: 
+      return SALOME_MED::MED_HEXA8;
+    case VISU::ePENTA6: 
+      return SALOME_MED::MED_PENTA6;
+    case VISU::ePYRA5: 
+      return SALOME_MED::MED_PYRA5;
+
+    case VISU::eSEG3: 
+      return SALOME_MED::MED_SEG3;
+    case VISU::eTRIA6: 
+      return SALOME_MED::MED_TRIA6;
+    case VISU::eQUAD8: 
+      return SALOME_MED::MED_QUAD8;
+    case VISU::eTETRA10: 
+      return SALOME_MED::MED_TETRA10;
+    case VISU::eHEXA20: 
+      return SALOME_MED::MED_HEXA20;
+    case VISU::ePENTA15: 
+      return SALOME_MED::MED_PENTA15;
+    case VISU::ePYRA13: 
+      return SALOME_MED::MED_PYRA13;
+    case VISU::ePOLYGONE: 
+      return SALOME_MED::MED_POLYGON;
+    case VISU::ePOLYEDRE: 
+      return  SALOME_MED::MED_POLYHEDRA;
+    }
+    return SALOME_MED::medGeometryElement(-1);
+  }
 
   //---------------------------------------------------------------
-  medGeometryElement 
+  SALOME_MED::medGeometryElement 
   VTKGeomToMED(int theVTKGeomType)
   { 
     switch(theVTKGeomType){
-    case VTK_VERTEX: return MED_POINT1;
-    case VTK_LINE: return MED_SEG2;
-    case VTK_TRIANGLE: return MED_TRIA3;
-    case VTK_QUAD: return MED_QUAD4;
-    case VTK_TETRA: return MED_TETRA4;
-    case VTK_HEXAHEDRON: return MED_HEXA8;
-    case VTK_WEDGE: return MED_PENTA6;
-    case VTK_PYRAMID: return MED_PYRA5;
+    case VTK_VERTEX: 
+      return SALOME_MED::MED_POINT1;
+    case VTK_LINE: 
+      return SALOME_MED::MED_SEG2;
+    case VTK_TRIANGLE:
+      return SALOME_MED::MED_TRIA3;
+    case VTK_QUAD: 
+      return SALOME_MED::MED_QUAD4;
+    case VTK_TETRA: 
+      return SALOME_MED::MED_TETRA4;
+    case VTK_HEXAHEDRON: 
+      return SALOME_MED::MED_HEXA8;
+    case VTK_WEDGE:
+      return SALOME_MED::MED_PENTA6;
+    case VTK_PYRAMID: 
+      return SALOME_MED::MED_PYRA5;
+    case VTK_POLYGON: 
+      return SALOME_MED::MED_POLYGON;
     }
-    return medGeometryElement(-1);
+    return SALOME_MED::medGeometryElement(-1);
   }
   
   //---------------------------------------------------------------
   VISU::TEntity
-  MEDEntityToVTK(medEntityMesh theMEDEntity)
+  MEDEntityToVTK(SALOME_MED::medEntityMesh theMEDEntity)
   {
     switch(theMEDEntity){
-    case MED_NODE: return NODE_ENTITY;
-    case MED_EDGE: return EDGE_ENTITY;
-    case MED_FACE: return FACE_ENTITY;
-    case MED_CELL: return CELL_ENTITY;
+    case SALOME_MED::MED_NODE: 
+      return VISU::NODE_ENTITY;
+    case SALOME_MED::MED_EDGE: 
+      return VISU::EDGE_ENTITY;
+    case SALOME_MED::MED_FACE: 
+      return VISU::FACE_ENTITY;
+    case SALOME_MED::MED_CELL: 
+      return VISU::CELL_ENTITY;
     }
     return VISU::TEntity(-1);
   }
   
   //---------------------------------------------------------------
-  medEntityMesh 
+  SALOME_MED::medEntityMesh 
   VTKEntityToMED(VISU::TEntity theVTKEntity)
   {
     switch(theVTKEntity){
-    case NODE_ENTITY: return MED_NODE;
-    case EDGE_ENTITY: return MED_EDGE;
-    case FACE_ENTITY: return MED_FACE;
-    case CELL_ENTITY: return MED_CELL;
+    case VISU::NODE_ENTITY: 
+      return SALOME_MED::MED_NODE;
+    case VISU::EDGE_ENTITY: 
+      return SALOME_MED::MED_EDGE;
+    case VISU::FACE_ENTITY: 
+      return SALOME_MED::MED_FACE;
+    case VISU::CELL_ENTITY: 
+      return SALOME_MED::MED_CELL;
     }
-    return medEntityMesh(-1);
+    return SALOME_MED::medEntityMesh(-1);
   }
 
   
@@ -240,17 +346,16 @@ namespace
               SALOME_MED::MESH_ptr theMEDMesh,
               const VISU::TEntity& theVEntity)
   {
-    medGeometryElement* aGeomElems;
     theNbCells = theCellsSize = 0;
-    int iGeomEnd = GetEntity2Geom(theVEntity,aGeomElems);
-    const medEntityMesh& aMEntity = VTKEntityToMED(theVEntity);
     if(MYDEBUG) MESSAGE("GetCellsSize - theVEntity = "<<theVEntity);
+    const SALOME_MED::medEntityMesh& aMEntity = VTKEntityToMED(theVEntity);
+    SALOME_MED::MESH::connectivityInfos_var connInfo=theMEDMesh->getConnectGlobal(aMEntity);
+    int iGeomEnd = connInfo->meshTypes.length();
     for(int iGeom = 0; iGeom < iGeomEnd; iGeom++){
-      medGeometryElement aMEDGeom = aGeomElems[iGeom];
-      int iNumElemEnd = theMEDMesh->getNumberOfElements(aMEntity,aMEDGeom);
+      int iNumElemEnd = connInfo->numberOfElements[iGeom];
       if(iNumElemEnd > 0){
        if(MYDEBUG) MESSAGE("GetCellsSize - iNumElemEnd = "<<iNumElemEnd);
-       theCellsSize += iNumElemEnd*(MEDGeom2NbNodes(aMEDGeom) + 1);
+       theCellsSize += iNumElemEnd + connInfo->nodalConnectivityLength[iGeom];
        theNbCells += iNumElemEnd;
       }
     }
@@ -263,18 +368,16 @@ namespace
               vtkIdType& theCellsSize,
               SALOME_MED::FAMILY_ptr theMEDFamily)
   {
-    medGeometryElement_array_var aGeom = theMEDFamily->getTypes();
-    int iGeomEnd = aGeom->length();
     theNbCells = theCellsSize = 0;
+    SALOME_MED::SUPPORT::supportInfos_var suppInfo=theMEDFamily->getSupportGlobal();
+    int iGeomEnd = suppInfo->types.length();
     if(MYDEBUG) MESSAGE("GetCellsSize - iGeomEnd = "<<iGeomEnd);
     for(int iGeom = 0; iGeom < iGeomEnd; iGeom++) {
-      medGeometryElement aMEDGeom = aGeom[iGeom];
-      long_array_var aCellNumForType = theMEDFamily->getNumber(aMEDGeom);
-      int iNumElemEnd = aCellNumForType->length();
+      int iNumElemEnd = suppInfo->nbEltTypes[iGeom];
       if(iNumElemEnd > 0){
        if(MYDEBUG) MESSAGE("GetCellsSize - iNumElemEnd = "<<iNumElemEnd);
        theNbCells += iNumElemEnd;
-       theCellsSize += iNumElemEnd*(MEDGeom2NbNodes(aMEDGeom) + 1);
+       theCellsSize += iNumElemEnd + suppInfo->nodalConnectivityLength[iGeom];
       }
     }
   }
@@ -286,9 +389,9 @@ namespace
               SALOME_MED::MESH_ptr theMEDMesh, 
               const VISU::TEntity& theEntity)
   {
-    TMeshOnEntityMap& aMeshOnEntityMap = theMesh->myMeshOnEntityMap;
+    VISU::TMeshOnEntityMap& aMeshOnEntityMap = theMesh->myMeshOnEntityMap;
     VISU::PCMeshOnEntity aMeshOnEntity = aMeshOnEntityMap[theEntity];
-    if(theEntity == NODE_ENTITY){
+    if(theEntity == VISU::NODE_ENTITY){
       aMeshOnEntity->myNbCells = theMesh->myNbPoints;
       aMeshOnEntity->myCellsSize = 2*theMesh->myNbPoints;
     }else{
@@ -298,16 +401,16 @@ namespace
  
 
   //---------------------------------------------------------------
-  PCMeshOnEntity 
+  VISU::PCMeshOnEntity 
   InitMeshOnEntity(const VISU::PCMesh& theMesh,
                   const VISU::TEntity& theEntity,
                   const VISU::PCMeshOnEntity& theMeshOnEntity)
   {
-    PCMeshOnEntity aMeshOnEntity;
-    TMeshOnEntityMap& aMeshOnEntityMap = theMesh->myMeshOnEntityMap;
-    TMeshOnEntityMap::const_iterator anIter = aMeshOnEntityMap.find(theEntity);
+    VISU::PCMeshOnEntity aMeshOnEntity;
+    VISU::TMeshOnEntityMap& aMeshOnEntityMap = theMesh->myMeshOnEntityMap;
+    VISU::TMeshOnEntityMap::const_iterator anIter = aMeshOnEntityMap.find(theEntity);
     if(anIter == aMeshOnEntityMap.end()){
-      aMeshOnEntity.reset(new TCMeshOnEntity());
+      aMeshOnEntity.reset(new VISU::TCMeshOnEntity());
       *aMeshOnEntity = *theMeshOnEntity;
       aMeshOnEntity->myEntity = theEntity;
       aMeshOnEntityMap[theEntity] = aMeshOnEntity;
@@ -318,13 +421,209 @@ namespace
 
     return aMeshOnEntity;
   }
+
+  
+  VISU::PCSubProfile
+  CrSubProfile(const VISU::PCMesh theMesh,
+              const VISU::PCField theField,
+              const VISU::TCMeshOnEntity& theMeshOnEntity,
+              SALOME_MED::medGeometryElement theMGeom,
+              int theNbElems)
+  {
+    if (MYDEBUG) MESSAGE("CrSubProfile");
+    VISU::EGeometry aEGeom = MEDGeom2VISU(theMGeom);
+    vtkIdType aVNbNodes = VISUGeom2NbNodes(aEGeom);
+
+    VISU::PCSubProfile aSubProfile(new VISU::TCSubProfile());
+    aSubProfile->myGeom = aEGeom;
+    aSubProfile->myMGeom = theMGeom;
+    aSubProfile->myStatus = VISU::eAddAll;
+    if(MYDEBUG) MESSAGE("theMGeom = "<<theMGeom);
+    const VISU::TCellsFirstIndex& aCellsFirstIndex = theMeshOnEntity.myCellsFirstIndex;
+    VISU::TCellsFirstIndex::const_iterator aTimeStampIter = aCellsFirstIndex.find(theMGeom);
+    if(aTimeStampIter == (theMeshOnEntity.myCellsFirstIndex).end() && 
+       theMGeom != SALOME_MED::MED_POINT1)
+      aSubProfile->myStatus = VISU::eRemoveAll;
+    else if(aTimeStampIter == aCellsFirstIndex.end() && theMGeom == SALOME_MED::MED_POINT1){
+      if(theNbElems > 0){
+       aSubProfile->myName = "";
+       aSubProfile->myStatus = VISU::eAddPart;
+       
+       aSubProfile->myNbCells = theNbElems;
+       aSubProfile->myCellsSize = aSubProfile->myNbCells;
+      }
+    }else{
+       if(theNbElems > 0){
+         aSubProfile->myName = "";
+         aSubProfile->myStatus = VISU::eAddPart;
+         
+         aSubProfile->myNbCells = theNbElems;
+         aSubProfile->myCellsSize = aSubProfile->myNbCells*aVNbNodes;
+       }
+      }
+    
+    if (MYDEBUG) MESSAGE("CrSubProfile done");
+    return aSubProfile;
+  }
+
+  VISU::TProfileKey
+  GetProfileKey(const VISU::PCMesh theMesh,
+               const VISU::PCField theField,
+               const VISU::PCValForTime theValForTime,
+               const VISU::TCMeshOnEntity& theMeshOnEntity)
+  {
+    if (MYDEBUG) MESSAGE("GetProfileKey");
+
+    VISU::TProfileKey aProfileKey;
+
+    const VISU::TCellsFirstIndex& aFirstIndex = theMeshOnEntity.myCellsFirstIndex;
+    VISU::TCellsFirstIndex::const_iterator anIter = aFirstIndex.begin();
+    SALOME_MED::SUPPORT_var aSupport = theValForTime->myField->getSupport();
+    int aNbElems = 0;
+    if(anIter == aFirstIndex.end() && aSupport->getEntity() == SALOME_MED::MED_NODE){
+      SALOME_MED::medGeometryElement aMGeom = SALOME_MED::MED_POINT1;
+      try{
+       aNbElems = aSupport->getNumberOfElements(SALOME_MED::MED_NONE);
+       if(MYDEBUG)MESSAGE("aMGeom="<<aMGeom<<"   aNbElems="<<aNbElems);
+      }catch(...){
+       MESSAGE("Error in theValForTime->myField->getSupport()->getNumberOfElements(aMGeom);");
+      }
+       
+      VISU::PCSubProfile aSubProfile = CrSubProfile(theMesh,
+                                                   theField,
+                                                   theMeshOnEntity,
+                                                   aMGeom,
+                                                   aNbElems);
+      aProfileKey.insert(aSubProfile);
+    }
+    
+    for(; anIter != aFirstIndex.end(); anIter++){
+      SALOME_MED::medGeometryElement aMGeom = anIter->first;
+      try{
+       aNbElems = aSupport->getNumberOfElements(aMGeom);
+       if(MYDEBUG)MESSAGE("aMGeom="<<aMGeom<<"   aNbElems="<<aNbElems);
+      }        catch(...){
+       MESSAGE("Error in theValForTime->myField->getSupport()->getNumberOfElements(aMGeom);");
+       continue;
+      }
+      VISU::PCSubProfile aSubProfile = CrSubProfile(theMesh,
+                                                   theField,
+                                                   theMeshOnEntity,
+                                                   aMGeom,
+                                                   aNbElems);
+      aProfileKey.insert(aSubProfile);
+    }
+
+    if (MYDEBUG) MESSAGE("GetProfileKey done");
+    return aProfileKey;
+  }
+  
+  void
+  InitProfile(VISU::PCMesh theMesh,
+             VISU::PCField theField,
+             VISU::PCValForTime theValForTime,
+             VISU::TCMeshOnEntity& theMeshOnEntity)
+  {
+    if (MYDEBUG) MESSAGE("InitProfile");
+    
+    VISU::TProfileMap& aProfileMap = theMeshOnEntity.myProfileMap;
+
+    VISU::TProfileKey aProfileKey = GetProfileKey(theMesh,
+                                                 theField,
+                                                 theValForTime,
+                                                 theMeshOnEntity);
+    
+    VISU::TProfileMap::const_iterator anIter = aProfileMap.find(aProfileKey);
+    if(anIter != aProfileMap.end()){
+      theValForTime->myProfile = anIter->second;
+      if(MYDEBUG) MESSAGE("aProfileMap.find(aProfileKey) aProfile->myGeom=");
+    }else{
+      VISU::PCProfile aProfile(new VISU::TCProfile());
+      VISU::TGeom2SubProfile& aGeom2SubProfile = aProfile->myGeom2SubProfile;
+      
+      VISU::TProfileKey::const_iterator anIter = aProfileKey.begin();
+      for(; anIter != aProfileKey.end(); anIter++){
+       VISU::PCSubProfile aSubProfile(*anIter);
+       
+       if(aProfile->myIsAll && aSubProfile->myStatus != VISU::eAddAll)
+         aProfile->myIsAll = false;
+       
+       VISU::EGeometry aEGeom = aSubProfile->myGeom;
+       aGeom2SubProfile[aEGeom] = aSubProfile;
+      }
+      
+      aProfileMap[aProfileKey] = aProfile;
+      theValForTime->myProfile = aProfile;
+    }
+    if (MYDEBUG) MESSAGE("InitProfile done");
+  }
+
+  void
+  LoadProfile(VISU::PCMesh theMesh,
+             VISU::PCField theField,
+             VISU::PCValForTime theValForTime,
+             VISU::PCMeshOnEntity theMeshOnEntity)
+  {
+    VISU::PCProfile aProfile = theValForTime->myProfile;
+    if (MYDEBUG) MESSAGE("LoadProfile aProfile->myIsDone="<<aProfile->myIsDone);
+    if(aProfile->myIsDone)
+      return;
+    
+    const VISU::TGeom2SubProfile& aGeom2SubProfile = aProfile->myGeom2SubProfile;
+    VISU::TGeom2SubProfile::const_iterator aGeom2SubProfileIter = aGeom2SubProfile.begin();
+    if(aGeom2SubProfileIter == aGeom2SubProfile.end()){
+      MESSAGE("Warning! No geom 2 sub profile");
+    }
+    SALOME_MED::SUPPORT_var aSupport = theValForTime->myField->getSupport();
+    for(; aGeom2SubProfileIter != aGeom2SubProfile.end(); aGeom2SubProfileIter++){
+      VISU::EGeometry aEGeom = aGeom2SubProfileIter->first;
+      SALOME_MED::medGeometryElement aMGeom = VISUGeomToMED(aEGeom);
+      VISU::PCSubProfile aSubProfile = aGeom2SubProfileIter->second;
+      SALOME_MED::long_array_var aGeom2ProfileIds;
+      std::vector<int> aGeom2Profile;
+      if(!aSupport->isOnAllElements()){
+       try{
+         if(aMGeom == SALOME_MED::MED_POINT1)
+           aGeom2ProfileIds = aSupport->getNumberFromFile(SALOME_MED::MED_NONE);
+         else
+           aGeom2ProfileIds = aSupport->getNumberFromFile(aMGeom);
+         int aLen = aGeom2ProfileIds->length();
+         if(MYDEBUG) MESSAGE(" - aMGeom="<<aMGeom<<"; aNbCells="<<aLen);
+         for(int i = 0; i < aLen; i++){
+           int anId = aGeom2ProfileIds[i];
+           aGeom2Profile.push_back(anId);
+           if(MYDEBUG) cout << "------------------------------->" << anId << endl;
+         }
+         if(MYDEBUG) cout << endl;
+       } catch(...) {
+         continue;
+       }
+      } else {
+       SALOME_MED::medEntityMesh aMEntity = aSupport->getEntity();
+       int aNbElems = theMesh->myMesh->getNumberOfElements(aMEntity,aMGeom);
+       for(int i = 0; i < aNbElems; i++) 
+         aGeom2Profile.push_back(i+1);
+      }
+      if(aGeom2Profile.size()>0){
+       VISU::TSubMeshID& aSubMeshID = aSubProfile->mySubMeshID;
+       int aSize = aGeom2Profile.size();
+       aSubMeshID.resize(aSize);
+       for(int anId = 0; anId < aSize; anId++){
+         aSubMeshID[anId] = aGeom2Profile[anId] - 1;
+       }
+      }
+    }
+    
+    aProfile->myIsDone = true;
+    if (MYDEBUG) MESSAGE("LoadProfile done");
+  }
 }
 
 
 //---------------------------------------------------------------
 VISU_Convertor* 
-VISU_MEDFieldConvertor::Build()
+VISU_MEDFieldConvertor
+::Build()
 {
   if(myField->_is_nil()) 
     throw std::runtime_error("VISU_MEDFieldConvertor::Build >> myField->_is_nil() !!!");
@@ -334,7 +633,7 @@ VISU_MEDFieldConvertor::Build()
     throw std::runtime_error("VISU_MEDFieldConvertor::Build >> aMEDSupport->_is_nil() !!!");
 
   SALOME_MED::medEntityMesh aMEntity = aMEDSupport->getEntity();
-  TEntity aVEntity = MEDEntityToVTK(aMEntity);
+  VISU::TEntity aVEntity = MEDEntityToVTK(aMEntity);
   SALOME_MED::MESH_var aMEDMesh = aMEDSupport->getMesh();
   if(aMEDMesh->_is_nil()) 
     throw std::runtime_error("VISU_MEDFieldConvertor::Build >> aMEDMesh->_is_nil() !!!");
@@ -342,8 +641,8 @@ VISU_MEDFieldConvertor::Build()
   CORBA::String_var aMeshName = aMEDMesh->getName();
   CORBA::String_var aFieldName = myField->getName();
 
-  PCMesh aMesh = myMeshMap[aMeshName.in()](new TCMesh());
-  aMesh->myNamedPointCoords(new TNamedPointCoords());
+  VISU::PCMesh aMesh = myMeshMap[aMeshName.in()](new VISU::TCMesh());
+  aMesh->myNamedPointCoords(new VISU::TNamedPointCoords());
   aMesh->myNbPoints = aMEDMesh->getNumberOfNodes();
   aMesh->myDim = aMEDMesh->getSpaceDimension();
   aMesh->myName = aMeshName.in();
@@ -351,21 +650,21 @@ VISU_MEDFieldConvertor::Build()
 
   if(MYDEBUG) MESSAGE("VISU_MEDFieldConvertor::Build - aMeshName = "<<aMeshName<<"; myDim = "<<aMesh->myDim);
 
-  TMeshOnEntityMap& aMeshOnEntityMap = aMesh->myMeshOnEntityMap;
-  PCMeshOnEntity aMeshOnEntity = aMeshOnEntityMap[aVEntity](new TCMeshOnEntity());
+  VISU::TMeshOnEntityMap& aMeshOnEntityMap = aMesh->myMeshOnEntityMap;
+  VISU::PCMeshOnEntity aMeshOnEntity = aMeshOnEntityMap[aVEntity](new VISU::TCMeshOnEntity());
   aMeshOnEntity->myEntity = aVEntity;
   aMeshOnEntity->myMeshName = aMeshName.in();
   aMeshOnEntity->mySupport = aMEDSupport;
 
-  if(aVEntity == NODE_ENTITY)
-    ::InitMeshOnEntity(aMesh, CELL_ENTITY, aMeshOnEntity);
+  if(aVEntity == VISU::NODE_ENTITY)
+    ::InitMeshOnEntity(aMesh, VISU::CELL_ENTITY, aMeshOnEntity);
   else
-    ::InitMeshOnEntity(aMesh, NODE_ENTITY, aMeshOnEntity);
+    ::InitMeshOnEntity(aMesh, VISU::NODE_ENTITY, aMeshOnEntity);
 
   ::GetCellsSize(aMesh, aMEDMesh, aVEntity);
 
-  TFieldMap& aFieldMap = aMeshOnEntity->myFieldMap;
-  PCField aField = aFieldMap[aFieldName.in()](new TCField());
+  VISU::TFieldMap& aFieldMap = aMeshOnEntity->myFieldMap;
+  VISU::PCField aField = aFieldMap[aFieldName.in()](new VISU::TCField());
   aField->myId = myField->getOrderNumber();
   aField->myName = aFieldName.in();
   aField->myEntity = aVEntity;
@@ -380,12 +679,12 @@ VISU_MEDFieldConvertor::Build()
 
   if(MYDEBUG) MESSAGE("VISU_MEDFieldConvertor::Build - aMeshName = "<<aMeshName<<"; myDim = "<<aMesh->myDim);
 
-  TValField& aValField = aField->myValField;
+  VISU::TValField& aValField = aField->myValField;
   int anId = myField->getIterationNumber();
-  PCValForTime aValForTime = aValField[anId](new TCValForTime());
+  VISU::PCValForTime aValForTime = aValField[anId](new VISU::TCValForTime());
   aValForTime->myId = anId;
   CORBA::Double aDT = myField->getTime();
-  aValForTime->myTime = TTime(aDT,"");
+  aValForTime->myTime = VISU::TTime(aDT,"");
   aValForTime->myField = myField;
 
   if(MYDEBUG) 
@@ -398,7 +697,8 @@ VISU_MEDFieldConvertor::Build()
 
 //---------------------------------------------------------------
 VISU_Convertor* 
-VISU_MEDConvertor::Build() 
+VISU_MEDConvertor
+::Build() 
 {
   if(mySObject->_is_nil()) 
     throw std::runtime_error("VISU_MEDConvertor::Build >> mySObject->_is_nil() !!!");
@@ -415,8 +715,8 @@ VISU_MEDConvertor::Build()
 }
 
 
-namespace{
-
+namespace
+{
   using namespace boost;
 
   //---------------------------------------------------------------
@@ -497,7 +797,8 @@ namespace{
 
 //---------------------------------------------------------------
 VISU_Convertor* 
-VISU_MEDConvertor::Build(SALOME_MED::MED_ptr theMED)
+VISU_MEDConvertor
+::Build(SALOME_MED::MED_ptr theMED)
 {
   if(CORBA::is_nil(theMED)) 
     return NULL;
@@ -526,9 +827,9 @@ VISU_MEDConvertor::Build(SALOME_MED::MED_ptr theMED)
       if(!anIsSuccess)
        continue;
 
-      PCMesh aMesh = myMeshMap[aMeshName.in()](new TCMesh());
+      VISU::PCMesh aMesh = myMeshMap[aMeshName.in()](new VISU::TCMesh());
       SALOME_MED::MESH_var aMEDMesh = boost::get<0>(aMeshByNameRet);
-      aMesh->myNamedPointCoords(new TNamedPointCoords());
+      aMesh->myNamedPointCoords(new VISU::TNamedPointCoords());
       aMesh->myNbPoints = aMEDMesh->getNumberOfNodes();
       aMesh->myDim = aMEDMesh->getSpaceDimension();
       aMesh->myName = aMeshName.in();
@@ -551,7 +852,7 @@ VISU_MEDConvertor::Build(SALOME_MED::MED_ptr theMED)
       if(!anIsSuccess)
        continue;
 
-      TMeshOnEntityMap& aMeshOnEntityMap = aMesh->myMeshOnEntityMap;
+      VISU::TMeshOnEntityMap& aMeshOnEntityMap = aMesh->myMeshOnEntityMap;
       SALOMEDS::SObject_var aSupportsSObj = boost::get<0>(aSObjectByNameRet);
       SALOMEDS::ChildIterator_var aSupportIterator = aStudy->NewChildIterator(aSupportsSObj);
 
@@ -579,7 +880,7 @@ VISU_MEDConvertor::Build(SALOME_MED::MED_ptr theMED)
                    "' aVEntity = "<<aVEntity);
          int aNbCells, aCellsSize;
          //Check, if there is any data on the support?
-         if(aVEntity == NODE_ENTITY){
+         if(aVEntity == VISU::NODE_ENTITY){
            aMesh->myNbPoints = aMeshOnSupport->getNumberOfNodes();
            aNbCells = aMesh->myNbPoints;
            aCellsSize = 2*aMesh->myNbPoints;
@@ -587,9 +888,8 @@ VISU_MEDConvertor::Build(SALOME_MED::MED_ptr theMED)
            ::GetCellsSize(aNbCells,aCellsSize,aMeshOnSupport,aVEntity);
          
          if(aNbCells > 0){
-           TMeshOnEntityMap::const_iterator aMeshOnEntityMapIter = aMeshOnEntityMap.find(aVEntity);
-           if(aMeshOnEntityMapIter == aMeshOnEntityMap.end()){
-             PCMeshOnEntity aMeshOnEntity(new TCMeshOnEntity());
+           if(aMeshOnEntityMap.find(aVEntity) == aMeshOnEntityMap.end()){
+             VISU::PCMeshOnEntity aMeshOnEntity(new VISU::TCMeshOnEntity());
              aMeshOnEntity->myMeshName = aMeshName.in();
              aMeshOnEntity->myEntity = aVEntity;
              aMeshOnEntity->myNbCells = aNbCells;
@@ -621,10 +921,10 @@ VISU_MEDConvertor::Build(SALOME_MED::MED_ptr theMED)
        
        SALOME_MED::FAMILY_var aMEDFamily = SALOME_MED::FAMILY::_narrow(aMedSupport);
        if(!aMEDFamily->_is_nil()) {
-         TMeshOnEntityMap::iterator aMeshOnEntityMapIter = aMeshOnEntityMap.find(aVEntity);
+         VISU::TMeshOnEntityMap::iterator aMeshOnEntityMapIter = aMeshOnEntityMap.find(aVEntity);
          if(aMeshOnEntityMapIter == aMeshOnEntityMap.end())
            continue;
-         PCMeshOnEntity aMeshOnEntity = aMeshOnEntityMapIter->second;
+         VISU::PCMeshOnEntity aMeshOnEntity = aMeshOnEntityMapIter->second;
 
          int aNbCells = aMeshOnEntity->myNbCells, aCellsSize = aMeshOnEntity->myCellsSize;
          CORBA::Boolean anIsOnAllElements = aMEDSupport->isOnAllElements();
@@ -639,10 +939,10 @@ VISU_MEDConvertor::Build(SALOME_MED::MED_ptr theMED)
                    "; aNbCells = "<<aNbCells);
 
          if(aNbCells > 0){
-           TFamilyMap& aFamilyMap = aMeshOnEntity->myFamilyMap;
-           TFamilyMap::const_iterator aFamilyMapIter = aFamilyMap.find(aSupportName.in());
+           VISU::TFamilyMap& aFamilyMap = aMeshOnEntity->myFamilyMap;
+           VISU::TFamilyMap::const_iterator aFamilyMapIter = aFamilyMap.find(aSupportName.in());
            if(aFamilyMapIter == aFamilyMap.end()){
-             PCFamily aFamily(new TCFamily());
+             VISU::PCFamily aFamily(new VISU::TCFamily());
              aFamily->myEntity = aVEntity;
              aFamily->myNbCells = aNbCells;
              aFamily->myCellsSize = aCellsSize;
@@ -683,7 +983,7 @@ VISU_MEDConvertor::Build(SALOME_MED::MED_ptr theMED)
                    "; anIsOnAllElements = "<<anIsOnAllElements<<
                    "; aVEntity = "<<aVEntity);
 
-         PCGroup aGroup(new TCGroup());
+         VISU::PCGroup aGroup(new VISU::TCGroup());
          aGroup->myGroup = aMEDGroup;
          VISU::TFamilySet& aFamilySet = aGroup->myFamilySet;
          
@@ -693,8 +993,8 @@ VISU_MEDConvertor::Build(SALOME_MED::MED_ptr theMED)
            SALOME_MED::FAMILY_var aMEDFamily = aFamilies[iFamaily];
            CORBA::String_var aFamilyName = aMEDFamily->getName();
            TFindFamilyOnEntity aFindFamilyOnEntity = 
-             FindFamilyOnEntity(aMeshName.in(),aVEntity,aFamilyName.in());
-           PCFamily aFamily = boost::get<2>(aFindFamilyOnEntity);
+             FindFamilyOnEntity(aMeshName.in(), aVEntity, aFamilyName.in());
+           VISU::PCFamily aFamily = boost::get<2>(aFindFamilyOnEntity);
            if(MYDEBUG) MESSAGE("VISU_MEDConvertor::Build - aGroup - aFamilyName = '"<<aFamilyName.in()<<"' = "<<bool(aFamily));
            if(aFamily){
              aFamilySet.insert(aFamily);
@@ -702,7 +1002,7 @@ VISU_MEDConvertor::Build(SALOME_MED::MED_ptr theMED)
          }
          
          if(!aFamilySet.empty()){
-           TGroupMap& aGroupMap = aMesh->myGroupMap;
+           VISU::TGroupMap& aGroupMap = aMesh->myGroupMap;
            aGroupMap[aSupportName.in()] = aGroup;
          }
 
@@ -745,22 +1045,22 @@ VISU_MEDConvertor::Build(SALOME_MED::MED_ptr theMED)
        CORBA::String_var aMeshName = aMEDMesh->getName();
        CORBA::String_var aFieldName = aMEDField->getName();
        
-       TMeshMap::iterator aMeshMapIter = myMeshMap.find(aMeshName.in());
+       VISU::TMeshMap::iterator aMeshMapIter = myMeshMap.find(aMeshName.in());
        if(aMeshMapIter == myMeshMap.end())
          continue;
 
-       PCMesh aMesh = aMeshMapIter->second;
-       TMeshOnEntityMap& aMeshOnEntityMap = aMesh->myMeshOnEntityMap;
-       TMeshOnEntityMap::iterator aMeshOnEntityMapIter = aMeshOnEntityMap.find(anEntity);
+       VISU::PCMesh aMesh = aMeshMapIter->second;
+       VISU::TMeshOnEntityMap& aMeshOnEntityMap = aMesh->myMeshOnEntityMap;
+       VISU::TMeshOnEntityMap::iterator aMeshOnEntityMapIter = aMeshOnEntityMap.find(anEntity);
        if(aMeshOnEntityMapIter == aMeshOnEntityMap.end())
          continue;
 
-       PCMeshOnEntity aMeshOnEntity = aMeshOnEntityMapIter->second;
-       TFieldMap& aFieldMap = aMeshOnEntity->myFieldMap;
-       TFieldMap::iterator aFieldMapIter = aFieldMap.find(aFieldName.in());
-       PCField aField;
+       VISU::PCMeshOnEntity aMeshOnEntity = aMeshOnEntityMapIter->second;
+       VISU::TFieldMap& aFieldMap = aMeshOnEntity->myFieldMap;
+       VISU::TFieldMap::iterator aFieldMapIter = aFieldMap.find(aFieldName.in());
+       VISU::PCField aField;
        if(aFieldMapIter == aFieldMap.end()){
-         aField = aFieldMap[aFieldName.in()](new TCField());
+         aField = aFieldMap[aFieldName.in()](new VISU::TCField());
          aField->myId = iField;
          aField->myName = aFieldName.in();
          aField->myEntity = anEntity;
@@ -778,12 +1078,12 @@ VISU_MEDConvertor::Build(SALOME_MED::MED_ptr theMED)
        }else
          aField = aFieldMapIter->second;
 
-       TValField& aValField = aField->myValField;
+       VISU::TValField& aValField = aField->myValField;
        int anId = aMEDField->getIterationNumber();
-       PCValForTime aValForTime = aValField[anId](new TCValForTime());
+       VISU::PCValForTime aValForTime = aValField[anId](new VISU::TCValForTime());
        aValForTime->myId = anId;
        CORBA::Double aDT = aMEDField->getTime();
-       aValForTime->myTime = TTime(aDT,"");
+       aValForTime->myTime = VISU::TTime(aDT,"");
        aValForTime->myField = aMEDField;
        if(MYDEBUG) 
          MESSAGE("VISU_MEDConvertor::Build - aMeshName = '"<<aMeshName<<
@@ -797,7 +1097,8 @@ VISU_MEDConvertor::Build(SALOME_MED::MED_ptr theMED)
 
 //---------------------------------------------------------------
 VISU_Convertor* 
-VISU_MEDConvertor::Build(SALOMEDS::ChildIterator_ptr theTimeStampIterator)
+VISU_MEDConvertor
+::Build(SALOMEDS::ChildIterator_ptr theTimeStampIterator)
 {
   if(theTimeStampIterator->_is_nil()) return NULL;
   for(; theTimeStampIterator->More(); theTimeStampIterator->Next()){
@@ -817,17 +1118,17 @@ VISU_MEDConvertor::Build(SALOMEDS::ChildIterator_ptr theTimeStampIterator)
       continue;
 
     SALOME_MED::medEntityMesh aMEntity = aMEDSupport->getEntity();
-    TEntity aVEntity = MEDEntityToVTK(aMEntity);
+    VISU::TEntity aVEntity = MEDEntityToVTK(aMEntity);
     SALOME_MED::MESH_var aMEDMesh = aMEDSupport->getMesh();
     if(aMEDMesh->_is_nil()) continue;
     CORBA::String_var aMeshName = aMEDMesh->getName();
     CORBA::String_var aFieldName = aMEDField->getName();
 
-    PCMesh aMesh;
-    TMeshMap::const_iterator aMeshMapIter = myMeshMap.find(aMeshName.in());
+    VISU::PCMesh aMesh;
+    VISU::TMeshMap::const_iterator aMeshMapIter = myMeshMap.find(aMeshName.in());
     if(aMeshMapIter == myMeshMap.end()){
-      aMesh.reset(new TCMesh());
-      aMesh->myNamedPointCoords(new TNamedPointCoords());
+      aMesh.reset(new VISU::TCMesh());
+      aMesh->myNamedPointCoords(new VISU::TNamedPointCoords());
       aMesh->myNbPoints = aMEDMesh->getNumberOfNodes();
       aMesh->myDim = aMEDMesh->getSpaceDimension();
       aMesh->myName = aMeshName.in();
@@ -842,11 +1143,11 @@ VISU_MEDConvertor::Build(SALOMEDS::ChildIterator_ptr theTimeStampIterator)
     }else
       aMesh = aMeshMapIter->second;
 
-    PCMeshOnEntity aMeshOnEntity;
-    TMeshOnEntityMap& aMeshOnEntityMap = aMesh->myMeshOnEntityMap;
-    TMeshOnEntityMap::const_iterator aMeshOnEntityMapIter = aMeshOnEntityMap.find(aVEntity);
+    VISU::PCMeshOnEntity aMeshOnEntity;
+    VISU::TMeshOnEntityMap& aMeshOnEntityMap = aMesh->myMeshOnEntityMap;
+    VISU::TMeshOnEntityMap::const_iterator aMeshOnEntityMapIter = aMeshOnEntityMap.find(aVEntity);
     if(aMeshOnEntityMapIter == aMeshOnEntityMap.end()){
-      aMeshOnEntity.reset(new TCMeshOnEntity());
+      aMeshOnEntity.reset(new VISU::TCMeshOnEntity());
       aMeshOnEntity->myEntity = aVEntity;
       aMeshOnEntity->myMeshName = aMeshName.in();
       aMeshOnEntity->mySupport = aMEDSupport;
@@ -854,18 +1155,18 @@ VISU_MEDConvertor::Build(SALOMEDS::ChildIterator_ptr theTimeStampIterator)
     }else
       aMeshOnEntity = aMeshOnEntityMapIter->second;
 
-    if(aVEntity == NODE_ENTITY)
-      ::InitMeshOnEntity(aMesh,CELL_ENTITY,aMeshOnEntity);
+    if(aVEntity == VISU::NODE_ENTITY)
+      ::InitMeshOnEntity(aMesh,VISU::CELL_ENTITY,aMeshOnEntity);
     else
-      ::InitMeshOnEntity(aMesh,NODE_ENTITY,aMeshOnEntity);
+      ::InitMeshOnEntity(aMesh,VISU::NODE_ENTITY,aMeshOnEntity);
 
     ::GetCellsSize(aMesh,aMEDMesh,aVEntity);
 
-    PCField aField;
-    TFieldMap& aFieldMap = aMeshOnEntity->myFieldMap;
-    TFieldMap::const_iterator aFieldMapIter = aFieldMap.find(aFieldName.in());
+    VISU::PCField aField;
+    VISU::TFieldMap& aFieldMap = aMeshOnEntity->myFieldMap;
+    VISU::TFieldMap::const_iterator aFieldMapIter = aFieldMap.find(aFieldName.in());
     if(aFieldMapIter == aFieldMap.end()){
-      aField.reset(new TCField());
+      aField.reset(new VISU::TCField());
       aField->myId = mySObject->Tag();
       aField->myName = aFieldName.in();
       aField->myEntity = aVEntity;
@@ -885,12 +1186,12 @@ VISU_MEDConvertor::Build(SALOMEDS::ChildIterator_ptr theTimeStampIterator)
     }else
       aField = aFieldMapIter->second;
 
-    TValField& aValField = aField->myValField;
+    VISU::TValField& aValField = aField->myValField;
     int anId = aMEDField->getIterationNumber();
-    PCValForTime aValForTime = aValField[anId](new TCValForTime());
+    VISU::PCValForTime aValForTime = aValField[anId](new VISU::TCValForTime());
     aValForTime->myId = anId;
     CORBA::Double aDT = aMEDField->getTime();
-    aValForTime->myTime = TTime(aDT,"");
+    aValForTime->myTime = VISU::TTime(aDT,"");
     aValForTime->myField = aMEDField;
     if(MYDEBUG) 
       MESSAGE("VISU_MEDConvertor::Build "<<
@@ -910,8 +1211,8 @@ VISU_MEDConvertor
                   VISU::PMeshOnEntityImpl theMeshOnEntity)
 {
   int anIsUpdated = LoadPoints(theMesh);
-  const TEntity& aVEntity = theMeshOnEntity->myEntity;
-  if(aVEntity != NODE_ENTITY)
+  const VISU::TEntity& aVEntity = theMeshOnEntity->myEntity;
+  if(aVEntity != VISU::NODE_ENTITY)
     anIsUpdated |= LoadCellsOnEntity(theMesh,theMeshOnEntity);
 
   return anIsUpdated;
@@ -926,8 +1227,8 @@ VISU_MEDConvertor
                     VISU::PFamilyImpl theFamily)
 {
   int anIsUpdated = LoadPoints(theMesh);
-  const TEntity& anEntity = theMeshOnEntity->myEntity;
-  if(anEntity == NODE_ENTITY){
+  const VISU::TEntity& anEntity = theMeshOnEntity->myEntity;
+  if(anEntity == VISU::NODE_ENTITY){
     anIsUpdated |= LoadPointsOnFamily(theMesh,theFamily);
   }else{
     anIsUpdated |= LoadCellsOnEntity(theMesh,theMeshOnEntity);
@@ -946,11 +1247,11 @@ VISU_MEDConvertor
 {
   //Main part of code
   int anIsUpdated = LoadPoints(theMesh);
-  TFamilySet::const_iterator aFamilyIter = theFamilySet.begin();
+  VISU::TFamilySet::const_iterator aFamilyIter = theFamilySet.begin();
   for(; aFamilyIter != theFamilySet.end(); aFamilyIter++){
-    PCFamily aFamily = *aFamilyIter;
+    VISU::PCFamily aFamily = *aFamilyIter;
     const VISU::TEntity& aVEntity = aFamily->myEntity;
-    PCMeshOnEntity aMeshOnEntity = theMesh->myMeshOnEntityMap[aVEntity];
+    VISU::PCMeshOnEntity aMeshOnEntity = theMesh->myMeshOnEntityMap[aVEntity];
     if(aVEntity == VISU::NODE_ENTITY){
       anIsUpdated |= LoadPointsOnFamily(theMesh,aFamily);
     }else{
@@ -973,8 +1274,8 @@ VISU_MEDConvertor
 {
   //Main part of code
   int anIsUpdated = LoadPoints(theMesh);
-  const TEntity& aVEntity = theMeshOnEntity->myEntity;
-  if(aVEntity != NODE_ENTITY)
+  const VISU::TEntity& aVEntity = theMeshOnEntity->myEntity;
+  if(aVEntity != VISU::NODE_ENTITY)
     anIsUpdated |= LoadCellsOnEntity(theMesh,theMeshOnEntity);
 
   anIsUpdated |= LoadField(theMesh,theMeshOnEntity,theField,theValForTime);
@@ -989,7 +1290,7 @@ VISU_MEDConvertor
 ::LoadPoints(VISU::PCMesh theMesh)
 {
   //Check on existing family
-  PCMeshOnEntity aMeshOnEntity = theMesh->myMeshOnEntityMap[VISU::NODE_ENTITY];
+  VISU::PCMeshOnEntity aMeshOnEntity = theMesh->myMeshOnEntityMap[VISU::NODE_ENTITY];
   
   //Check on loading already done
   if(theMesh->myIsDone) 
@@ -1005,24 +1306,25 @@ VISU_MEDConvertor
     throw std::runtime_error("LoadPoints >> There is no points in the mesh !!!");
 
   SALOME_MED::double_array_var aCCoord = aMedMesh->getCoordinates(SALOME_MED::MED_FULL_INTERLACE);
-  TCMEDCoordHolder* aCoordHolder = new TCMEDCoordHolder();
+  VISU::TCMEDCoordHolder* aCoordHolder = new VISU::TCMEDCoordHolder();
   aCoordHolder->Init(aNbElem, aDim, aCCoord);
 
-  TNamedPointCoords& aCoords = theMesh->myNamedPointCoords;
-  aCoords.Init(PCoordHolder(aCoordHolder));
+  VISU::TNamedPointCoords& aCoords = theMesh->myNamedPointCoords;
+  aCoords.Init(VISU::PCoordHolder(aCoordHolder));
   
   if(MYDEBUG) MESSAGE("LoadPoints - Filling aMeshOnEntity with type NODE_ENTITY");
   
-  TGeom2SubMesh& aGeom2SubMesh = aMeshOnEntity->myGeom2SubMesh;
-  PSubMeshImpl aSubMesh = aGeom2SubMesh[VISU::ePOINT1](new TCSubMesh());
+  VISU::TGeom2SubMesh& aGeom2SubMesh = aMeshOnEntity->myGeom2SubMesh;
+  VISU::PSubMeshImpl aSubMesh = aGeom2SubMesh[VISU::ePOINT1](new VISU::TCSubMesh());
 
   aSubMesh->myNbCells = theMesh->myNbPoints;
   aSubMesh->myCellsSize = 2*theMesh->myNbPoints;
 
-  TCell2Connect& aCell2Connect = aSubMesh->myCell2Connect;
+  VISU::TCell2Connect& aCell2Connect = aSubMesh->myCell2Connect;
   aCell2Connect.resize(aNbElem);
+  if(MYDEBUG) MESSAGE("LoadPoints - aNbElem="<<aNbElem);
   for(int iElem = 0; iElem < aNbElem; iElem++)
-    aCell2Connect[iElem] = TConnect(1,iElem);
+    aCell2Connect[iElem] = VISU::TConnect(1,iElem);
   
   theMesh->myIsDone = true;
 
@@ -1036,7 +1338,7 @@ VISU_MEDConvertor
 ::LoadPointsOnFamily(VISU::PCMesh theMesh, 
                     VISU::PCFamily theFamily)
 {
-  PCMeshOnEntity aMeshOnEntity = theMesh->myMeshOnEntityMap[VISU::NODE_ENTITY];
+  VISU::PCMeshOnEntity aMeshOnEntity = theMesh->myMeshOnEntityMap[VISU::NODE_ENTITY];
 
   if(theFamily->myIsDone) 
     return 0;
@@ -1044,7 +1346,7 @@ VISU_MEDConvertor
   vtkIdType aNbElem = theMesh->GetNbPoints();
   SALOME_MED::FAMILY_var aMedFamily = theFamily->myFamily;
   CORBA::Boolean anIsOnAllElements = aMedFamily->isOnAllElements();
-  TSubMeshID& aSubMeshID = theFamily->myGeom2SubMeshID[VISU::ePOINT1];
+  VISU::TSubMeshID& aSubMeshID = theFamily->myGeom2SubMeshID[VISU::ePOINT1];
   
   if(!anIsOnAllElements){
     SALOME_MED::medGeometryElement_array_var aGeom = aMedFamily->getTypes();
@@ -1067,10 +1369,131 @@ VISU_MEDConvertor
   }
   
   theFamily->myIsDone = true;
-
+  
   return 1;
 }
 
+//---------------------------------------------------------------
+namespace 
+{
+  typedef MED::TCSlice<int> TA;
+  //---------------------------------------------------------------
+  typedef std::set<int> TConnSet;
+  typedef std::vector<int> TIntArray;
+  typedef MED::TCSlice<int> TConnSlice;
+
+  //---------------------------------------------------------------
+  class MEDPolygonConnectivity //! retriver of polygon connectivity
+  {
+    TIntArray myConn;
+    TIntArray myConnIndex;
+  public:
+
+    MEDPolygonConnectivity(SALOME_MED::MESH_var theMesh,
+                           SALOME_MED::medEntityMesh theEntity) 
+    {
+      {
+       SALOME::SenderInt_var aSender = 
+         theMesh->getSenderForPolygonsConnectivity(SALOME_MED::MED_NODAL, theEntity);
+       long int aSize;
+       int* aValuePtr = ReceiverFactory::getValue(aSender.in(), aSize);
+       myConn.assign(aValuePtr, aValuePtr + aSize);
+      }
+      {
+       SALOME::SenderInt_var aSender = 
+         theMesh->getSenderForPolygonsConnectivityIndex(SALOME_MED::MED_NODAL, theEntity);
+       long int aSize;
+       int* aValuePtr = ReceiverFactory::getValue(aSender, aSize);
+       myConnIndex.assign(aValuePtr, aValuePtr + aSize);
+      }
+    }
+
+    TConnSlice 
+    GetConn(int theId) const 
+    {
+      int anOffSet = myConnIndex[theId] - 1;
+      int aSize = myConnIndex[theId + 1] - myConnIndex[ theId ];
+      return TConnSlice(&myConn[0], myConn.size(), std::slice(anOffSet, aSize, 1));
+    }
+
+    int 
+    GetNbElem() const 
+    {
+      return myConnIndex.size() - 1;
+    }
+
+    int
+    GetCellSize() const
+    {
+      return myConn.size() + GetNbElem();
+    }
+  };
+
+
+  //---------------------------------------------------------------
+  class MEDPolyhedraConnectivity //! retriver of polyhedron connectivity
+  {
+    TIntArray myConn;
+    TIntArray myConnIndex;
+    TIntArray myFaceIndex;
+  public:
+
+    MEDPolyhedraConnectivity(SALOME_MED::MESH_var theMesh)
+    {
+      {
+       SALOME::SenderInt_var aSender = 
+         theMesh->getSenderForPolyhedronConnectivity(SALOME_MED::MED_NODAL);
+       long int aSize;
+       int* aValuePtr = ReceiverFactory::getValue(aSender, aSize);
+       myConn.assign(aValuePtr, aValuePtr + aSize);
+      }
+      {
+       SALOME::SenderInt_var aSender = 
+         theMesh->getSenderForPolyhedronIndex(SALOME_MED::MED_NODAL);
+       long int aSize;
+       int* aValuePtr = ReceiverFactory::getValue(aSender, aSize);
+       myConnIndex.assign(aValuePtr, aValuePtr + aSize);
+      }
+      {
+       SALOME::SenderInt_var aSender = 
+         theMesh->getSenderForPolyhedronFacesIndex();
+       long int aSize;
+       int* aValuePtr = ReceiverFactory::getValue(aSender, aSize);
+       myFaceIndex.assign(aValuePtr, aValuePtr + aSize);
+      }
+    }
+
+    int
+    GetUniqueConn(int theId, 
+                 TConnSet& theConnSet) const 
+    {
+      theConnSet.clear();
+      int aStartFaceId = myConnIndex[theId] - 1;
+      int anEndFaceId = myConnIndex[theId + 1] - 2;
+      int aStartConnId = myFaceIndex[aStartFaceId] - 1;
+      int anEndConnId = myFaceIndex[anEndFaceId + 1] - 1;
+      for(int aConnId = aStartConnId; aConnId < anEndConnId; aConnId++)
+        theConnSet.insert(myConn[aConnId]);
+      return theConnSet.size();
+    }
+
+    int
+    GetNbElem() const
+    {
+      return myConnIndex.size() - 1;
+    }
+
+    int
+    GetCellSize() const
+    {
+      TConnSet aConnSet;
+      int aCellSize = 0;
+      for(int anElemId = 0; anElemId < GetNbElem(); anElemId++)
+       aCellSize += GetUniqueConn(anElemId, aConnSet);
+      return aCellSize;
+    }
+  };
+}
 
 //---------------------------------------------------------------
 int 
@@ -1085,114 +1508,194 @@ VISU_MEDConvertor
   SALOME_MED::MESH_var aMedMesh = aMedSupport->getMesh();
 
   //Main part of code
-  SALOME_MED::medGeometryElement* aGeomElems;
-  const TEntity& aVEntity = theMeshOnEntity->myEntity;
-  int iGeomEnd = GetEntity2Geom(aVEntity,aGeomElems);
+  const VISU::TEntity& aVEntity = theMeshOnEntity->myEntity;
   const SALOME_MED::medEntityMesh& aMEntity = VTKEntityToMED(aVEntity);
-  TGeom2SubMesh& aGeom2SubMesh = theMeshOnEntity->myGeom2SubMesh;
-  vtkIdType aNbPoints = theMesh->GetNbPoints();
+  VISU::TCellsFirstIndex& aFirstIndex = theMeshOnEntity->myCellsFirstIndex;
 
-  for(int iGeom = 0, aCounter = 0; iGeom < iGeomEnd; iGeom++){
-    SALOME_MED::medGeometryElement aMGeom = aGeomElems[iGeom];
-    int aMNbNodes = MEDGeom2NbNodes(aMGeom);
-    VISU::EGeometry aEGeom = MEDGeom2VISU(aMGeom);
-    int aVNbNodes = VISUGeom2NbNodes(aEGeom);
-    int aNbElem = aMedMesh->getNumberOfElements(aMEntity,aMGeom);
-    if (aNbElem > 0) {
-      using namespace SALOME_MED;
-      SALOME_MED::long_array_var conn = 
-       aMedMesh->getConnectivity(MED_FULL_INTERLACE,MED_NODAL,aMEntity,aMGeom);
-      PSubMeshImpl aSubMesh = aGeom2SubMesh[aEGeom](new TCSubMesh());
-
-      aSubMesh->myNbCells = aNbElem;      
-      aSubMesh->myCellsSize = aNbElem*(aVNbNodes+1);
-
-      TCell2Connect& aCell2Connect = aSubMesh->myCell2Connect;
-      std::vector<int> aConnect(aMNbNodes);
-      int aNbConnForElem = conn->length()/aNbElem;
-
-      if(MYDEBUG) MESSAGE("LoadCellsOnEntity - aMGeom = "<<aMGeom<<
-                         "; aNbElem = "<<aNbElem<<
-                         "; aMNbNodes = "<<aMNbNodes<<
-                         "; aVNbNodes = "<<aVNbNodes<<
-                         "; aNbConnForElem = "<<aNbConnForElem);
+  SALOME_MED::MESH::connectivityInfos_var anInfo = aMedMesh->getConnectGlobal(aMEntity);
+  int iGeomEnd = anInfo->meshTypes.length();
 
-      for(int iElem = 0; iElem < aNbElem; iElem++){
-       VISU::TConnect anArray(aVNbNodes);
-       for(int k = 0, kj = iElem*aNbConnForElem; k < aMNbNodes; k++)
-         aConnect[k] = conn[kj+k] - 1;
+  VISU::TGeom2SubMesh& aGeom2SubMesh = theMeshOnEntity->myGeom2SubMesh;
+  vtkIdType aNbPoints = theMesh->GetNbPoints();
 
-       switch(aMGeom){
+  for(int iGeom = 0, aCounter = 0; iGeom < iGeomEnd; iGeom++) {
+    SALOME_MED::medGeometryElement aMGeom = anInfo->meshTypes[iGeom];
+    VISU::EGeometry aEGeom = MEDGeom2VISU(aMGeom);
+    switch (aMGeom) {
+    case SALOME_MED::MED_POLYGON:
+    {
+      MEDPolygonConnectivity aConn(aMedMesh, aMEntity);
+      int aNbElem = aConn.GetNbElem();
+      if (aNbElem > 0) {
+        VISU::PSubMeshImpl aSubMesh = aGeom2SubMesh[aEGeom](new VISU::TCSubMesh());
+        aSubMesh->myNbCells   = aNbElem;
+        aSubMesh->myCellsSize = aConn.GetCellSize();
+
+        VISU::TCell2Connect& aCell2Connect = aSubMesh->myCell2Connect;
+        aCell2Connect.resize(aNbElem);
+
+        for(int iElem = 0; iElem < aNbElem; iElem++) {
+          TConnSlice aConnSlice = aConn.GetConn(iElem);
+          VISU::TConnect& anArray = aCell2Connect[iElem];
+          anArray.resize(aConnSlice.size());
+          for(int iConn = 0; iConn < aConnSlice.size(); iConn++)
+            anArray[iConn] = aConnSlice[iConn] - 1;
+        }
+      }
+    }
+    break;
+    case SALOME_MED::MED_POLYHEDRA:
+    {
+      MEDPolyhedraConnectivity aConn( aMedMesh );
+      int aNbElem = aConn.GetNbElem();
+      if (aNbElem > 0) {
+        VISU::PSubMeshImpl aSubMesh = aGeom2SubMesh[aEGeom](new VISU::TCSubMesh());
+        aSubMesh->myNbCells = aNbElem;
+        aSubMesh->myCellsSize = aConn.GetCellSize();
+
+        VISU::TCell2Connect& aCell2Connect = aSubMesh->myCell2Connect;
+        aCell2Connect.resize(aNbElem);
+
+        TConnSet aConnectSet;
+        for(int iElem = 0; iElem < aNbElem; iElem++){
+          if(aConn.GetUniqueConn(iElem, aConnectSet)){
+            int aNbConn = aConnectSet.size();
+            VISU::TConnect& anArray = aCell2Connect[iElem];
+            anArray.resize(aNbConn);
+            std::set<int>::iterator anIter = aConnectSet.begin();
+            for(int i = 0; anIter != aConnectSet.end(); anIter++, i++)
+              anArray[i] = *anIter - 1;
+          }
+        }
+      }
+    }
+    break;
+    default:
+    {        
+      int aMNbNodes = MEDGeom2NbNodes(aMGeom);
+      int aVNbNodes = VISUGeom2NbNodes(aEGeom);
+      int aNbElem = anInfo->numberOfElements[iGeom];
+      if (aNbElem > 0) {
+        SALOME_MED::long_array_var aConn = 
+          aMedMesh->getConnectivity(SALOME_MED::MED_FULL_INTERLACE,
+                                   SALOME_MED::MED_NODAL,
+                                   aMEntity,
+                                   aMGeom);
+        VISU::PSubMeshImpl aSubMesh = aGeom2SubMesh[aEGeom](new VISU::TCSubMesh());
+
+        aSubMesh->myNbCells = aNbElem;
+        aSubMesh->myCellsSize = aNbElem*(aVNbNodes+1);
+
+        VISU::TCell2Connect& aCell2Connect = aSubMesh->myCell2Connect;
+        std::vector<int> aConnect(aMNbNodes);
+        int aNbConnForElem = aConn->length() / aNbElem;
+
+        if(MYDEBUG) MESSAGE("LoadCellsOnEntity - aMGeom = "<<aMGeom<<
+                            "; aNbElem = "<<aNbElem<<
+                            "; aMNbNodes = "<<aMNbNodes<<
+                            "; aVNbNodes = "<<aVNbNodes<<
+                            "; aNbConnForElem = "<<aNbConnForElem);
+
+        for(int iElem = 0; iElem < aNbElem; iElem++) {
+          VISU::TConnect anArray(aVNbNodes);
+          for(int k = 0, kj = iElem*aNbConnForElem; k < aMNbNodes; k++)
+            aConnect[k] = aConn[kj+k] - 1;
+
+          switch(aMGeom){
 #if !(defined(VTK_QUADRATIC_EDGE) && defined(VISU_USE_VTK_QUADRATIC)) && defined(VISU_ENABLE_QUADRATIC)
-       case SALOME_MED::MED_SEG3:
-         anArray[0] = aConnect[0];
-         anArray[2] = aConnect[1];  
-         
-         anArray[1] = aConnect[2];
-         break;
+          case SALOME_MED::MED_SEG3:
+            anArray[0] = aConnect[0];
+            anArray[2] = aConnect[1];  
+
+            anArray[1] = aConnect[2];
+            break;
 #endif
 #if !(defined(VTK_QUADRATIC_TRIANGLE) && defined(VISU_USE_VTK_QUADRATIC)) && defined(VISU_ENABLE_QUADRATIC)
-       case SALOME_MED::MED_TRIA6:
-         anArray[0] = aConnect[0];
-         anArray[2] = aConnect[1];  
-         anArray[4] = aConnect[2];  
-         
-         anArray[1] = aConnect[3];
-         anArray[3] = aConnect[4];  
-         anArray[5] = aConnect[5];  
-         break;
+          case SALOME_MED::MED_TRIA6:
+            anArray[0] = aConnect[0];
+            anArray[2] = aConnect[1];  
+            anArray[4] = aConnect[2];  
+
+            anArray[1] = aConnect[3];
+            anArray[3] = aConnect[4];  
+            anArray[5] = aConnect[5];  
+            break;
 #endif
 #if !(defined(VTK_QUADRATIC_QUAD) && defined(VISU_USE_VTK_QUADRATIC)) && defined(VISU_ENABLE_QUADRATIC)
-       case SALOME_MED::MED_QUAD8:
-         anArray[0] = aConnect[0];
-         anArray[2] = aConnect[1];  
-         anArray[4] = aConnect[2];  
-         anArray[6] = aConnect[3];  
-         
-         anArray[1] = aConnect[4];
-         anArray[3] = aConnect[5];  
-         anArray[5] = aConnect[6];  
-         anArray[7] = aConnect[7];  
-         break;
+          case SALOME_MED::MED_QUAD8:
+            anArray[0] = aConnect[0];
+            anArray[2] = aConnect[1];  
+            anArray[4] = aConnect[2];  
+            anArray[6] = aConnect[3];  
+
+            anArray[1] = aConnect[4];
+            anArray[3] = aConnect[5];  
+            anArray[5] = aConnect[6];  
+            anArray[7] = aConnect[7];  
+            break;
 #endif
 #if (defined(VTK_QUADRATIC_TETRA) && defined(VISU_USE_VTK_QUADRATIC)) && defined(VISU_ENABLE_QUADRATIC)
-       case SALOME_MED::MED_TETRA10 :
+          case SALOME_MED::MED_TETRA10 :
 #endif
-       case SALOME_MED::MED_TETRA4 :
-         anArray[0] = aConnect[0];
-         anArray[1] = aConnect[1];
-         anArray[2] = aConnect[3];  
-         anArray[3] = aConnect[2];  
-         break;
+          case SALOME_MED::MED_TETRA4 :
+            anArray[0] = aConnect[0];
+            anArray[1] = aConnect[1];
+            anArray[2] = aConnect[3];  
+            anArray[3] = aConnect[2];  
+            break;
 #if (defined(VTK_QUADRATIC_PYRAMID) && defined(VISU_USE_VTK_QUADRATIC)) && defined(VISU_ENABLE_QUADRATIC)
-       case SALOME_MED::MED_PYRA13:
+          case SALOME_MED::MED_PYRA13:
 #endif
-       case SALOME_MED::MED_PYRA5 :
-         anArray[0] = aConnect[0];
-         anArray[1] = aConnect[3];  
-         anArray[2] = aConnect[2];
-         anArray[3] = aConnect[1];  
-         anArray[4] = aConnect[4];
-         break;
-       default:
-         for (int k = 0; k < aVNbNodes; k++) 
-           anArray[k] = aConnect[k];
-       }
-       for (int k = 0; k < aVNbNodes; k++) 
-         if(anArray[k] < 0 || aNbPoints <= anArray[k]){
-           static QString aString;
-           aString.sprintf("LoadCellsOnEntity >> aNbPoints(%d) <= anArray[%d][%d]=%d < 0 !!!",aNbPoints,iElem,k,anArray[k]);
-           throw std::runtime_error(aString.latin1());
-         }
-       aCell2Connect.push_back(anArray);
+          case SALOME_MED::MED_PYRA5 :
+            anArray[0] = aConnect[0];
+            anArray[1] = aConnect[3];  
+            anArray[2] = aConnect[2];
+            anArray[3] = aConnect[1];  
+            anArray[4] = aConnect[4];
+            break;
+          default:
+            for (int k = 0; k < aVNbNodes; k++) 
+              anArray[k] = aConnect[k];
+          }
+          for (int k = 0; k < aVNbNodes; k++) 
+            if(anArray[k] < 0 || aNbPoints <= anArray[k]){
+              static QString aString;
+              aString.sprintf("LoadCellsOnEntity >> aNbPoints(%d) <= anArray[%d][%d]=%d < 0 !!!",aNbPoints,iElem,k,anArray[k]);
+              throw std::runtime_error(aString.latin1());
+            }
+          aCell2Connect.push_back(anArray);
+        } // loop on elements
       }
-      //Workaround for MED Component data structure
+    }} // switch( aMGeom )
+    VISU::TGeom2SubMesh::iterator anIter = aGeom2SubMesh.find(aEGeom);
+    if(anIter != aGeom2SubMesh.end()){
+      const VISU::PSubMeshImpl& aSubMesh = anIter->second;
+      const VISU::TCell2Connect& aCell2Connect = aSubMesh->myCell2Connect;
       int aSize = aCell2Connect.size();
-      if(MYDEBUG) MESSAGE("LoadCellsOnEntity - aCounter = "<<aCounter<<"; aSize = "<<aSize);
-      theMeshOnEntity->myCellsFirstIndex[aMGeom] = TCMeshOnEntity::TIndexAndSize(aCounter,aSize);
+      if(MYDEBUG) MESSAGE("LoadCellsOnEntity - aCounter = "<<aCounter<<"; aSize = "<<aSize<<"; aMGeom = "<<aMGeom);
+      aFirstIndex[aMGeom] = VISU::TIndexAndSize(aCounter, aSize);
       aCounter += aSize;
     }
-  }
+  } //loop on types
+
+  // Dump result connectivity
+// #ifdef _DEBUG_
+//   TGeom2SubMesh::iterator geom_sm = aGeom2SubMesh.begin();
+//   for ( ; geom_sm!=aGeom2SubMesh.end(); ++geom_sm ) {
+//     cout << "TYPE: " << geom_sm->first << endl;
+//     PSubMeshImpl aSubMesh = geom_sm->second;
+//     TCell2Connect& aCell2Connect = aSubMesh->myCell2Connect;
+//     TCell2Connect::iterator id_conn = aCell2Connect.begin();
+//     for ( int i = 0; id_conn !=aCell2Connect.end(); ++id_conn ) {
+//       cout << "\t" << i++ << ": [";
+//       TConnect& anArray = *id_conn;
+//       TConnect::iterator n = anArray.begin();
+//       for ( ; n != anArray.end(); ++n )
+//         cout << " " << *n + 1;
+//       cout << " ]"<< endl;
+//     }
+//   }
+// #endif
 
   theMeshOnEntity->myIsDone = true;
 
@@ -1224,7 +1727,7 @@ VISU_MEDConvertor
       int aNbElem = aCellNumForType->length();
       int aCounter = theMeshOnEntity->myCellsFirstIndex[aMGeom].first;
       int aSize = theMeshOnEntity->myCellsFirstIndex[aMGeom].second;
-      TSubMeshID& aSubMeshID = theFamily->myGeom2SubMeshID[aEGeom]; 
+      VISU::TSubMeshID& aSubMeshID = theFamily->myGeom2SubMeshID[aEGeom]; 
       
       if(MYDEBUG) 
        MESSAGE("LoadCellsOnFamily "<<
@@ -1250,7 +1753,7 @@ VISU_MEDConvertor
       VISU::EGeometry aEGeom = anIter->first;
       const VISU::TSubMeshImpl& aSubMesh = anIter->second;
       const VISU::TCell2Connect& aCell2Connect = aSubMesh.myCell2Connect;
-      TSubMeshID& aSubMeshID = theFamily->myGeom2SubMeshID[aEGeom];
+      VISU::TSubMeshID& aSubMeshID = theFamily->myGeom2SubMeshID[aEGeom];
       int iNumElemEnd = aCell2Connect.size();
       for(int iNumElem = 0; iNumElem < iNumElemEnd; iNumElem++)
        aSubMeshID.push_back(iNumElem);
@@ -1272,31 +1775,31 @@ ImportField(TContainerType& theContainer,
            VISU::PCValForTime theValForTime,
            VISU::PCMeshOnEntity theMeshOnEntity)
 {
-  typedef TTCMEDMeshValue<TValueType, TContainerType> TVMeshValue;
+  typedef VISU::TTCMEDMeshValue<TValueType, TContainerType> TVMeshValue;
   vtkIdType aNbComp = theField->myNbComp;
-  if(theField->myEntity == NODE_ENTITY){
+  if(theField->myEntity == VISU::NODE_ENTITY){
     VISU::EGeometry aEGeom = VISU::ePOINT1;
     vtkIdType aNbGauss = theValForTime->GetNbGauss(aEGeom);
     vtkIdType aNbElem = theMesh->GetNbPoints();
 
     if(MYDEBUG) MESSAGE("ImportField - aNbElem = "<<aNbElem);
 
-    PMeshValue& aVMeshValue = theValForTime->GetMeshValue(VISU::ePOINT1);
+    VISU::PMeshValue& aVMeshValue = theValForTime->GetMeshValue(VISU::ePOINT1);
     TVMeshValue* aMeshValue = new TVMeshValue();
     aMeshValue->Init(aNbElem, aNbGauss, aNbComp, theContainer, 0);
     aVMeshValue.reset(aMeshValue);
   }else{
     SALOME_MED::medGeometryElement* aGeomElems;
-    const TEntity& aVEntity = theField->myEntity;
+    const VISU::TEntity& aVEntity = theField->myEntity;
     int iGeomEnd = GetEntity2Geom(aVEntity,aGeomElems);
     for(int iGeom = 0; iGeom < iGeomEnd; iGeom++){
       SALOME_MED::medGeometryElement aMGeom = aGeomElems[iGeom];
       VISU::EGeometry aEGeom = MEDGeom2VISU(aMGeom);
       vtkIdType aNbGauss = theValForTime->GetNbGauss(aEGeom);
-      const TCMeshOnEntity::TCellsFirstIndex& aCellsFirstIndex = theMeshOnEntity->myCellsFirstIndex;
-      TCMeshOnEntity::TCellsFirstIndex::const_iterator aCellsFirstIndexIter = aCellsFirstIndex.find(aMGeom);
+      const VISU::TCellsFirstIndex& aCellsFirstIndex = theMeshOnEntity->myCellsFirstIndex;
+      VISU::TCellsFirstIndex::const_iterator aCellsFirstIndexIter = aCellsFirstIndex.find(aMGeom);
       if(aCellsFirstIndexIter != aCellsFirstIndex.end()){
-       const TCMeshOnEntity::TIndexAndSize& aIndexAndSize = aCellsFirstIndexIter->second;
+       const VISU::TIndexAndSize& aIndexAndSize = aCellsFirstIndexIter->second;
        if(MYDEBUG) 
          MESSAGE("ImportField - aMGeom = "<<aMGeom<<
                  "; aIndexAndSize = {"<<aIndexAndSize.first<<
@@ -1304,7 +1807,7 @@ ImportField(TContainerType& theContainer,
 
        vtkIdType aNbElem = aIndexAndSize.second;
        vtkIdType aStart = aIndexAndSize.first * aNbComp;
-       PMeshValue& aVMeshValue = theValForTime->GetMeshValue(aEGeom);
+       VISU::PMeshValue& aVMeshValue = theValForTime->GetMeshValue(aEGeom);
        TVMeshValue* aMeshValue = new TVMeshValue();
        aMeshValue->Init(aNbElem, aNbGauss, aNbComp, theContainer, aStart);
        aVMeshValue.reset(aMeshValue);
@@ -1320,16 +1823,22 @@ VISU_MEDConvertor
            VISU::PField theField, 
            VISU::PCValForTime theValForTime)
 {
+  MESSAGE("VISU_MEDConvertor::LoadField");
   //Check on loading already done
-  PUnstructuredGridIDMapperImpl anUnstructuredGridIDMapper = theValForTime->myUnstructuredGridIDMapper;
+  VISU::PUnstructuredGridIDMapperImpl anUnstructuredGridIDMapper = theValForTime->myUnstructuredGridIDMapper;
   if(anUnstructuredGridIDMapper->myIsVTKDone) 
     return 0;
   
-  PCProfile aProfile(new TCProfile());
+  VISU::PCProfile aProfile(new VISU::TCProfile());
   aProfile->myIsAll = true;
   theValForTime->myProfile = aProfile;
 
   SALOME_MED::FIELD_var aMEDField = theValForTime->myField;
+
+  SALOME_MED::SUPPORT_var aMEDSupport = aMEDField->getSupport();
+
+  if(aMEDSupport->isOnAllElements()) aProfile->myIsDone = true;
+  
   SALOME_MED::FIELDDOUBLE_ptr aFieldDouble = SALOME_MED::FIELDDOUBLE::_narrow(aMEDField);
   if(!aFieldDouble->_is_nil()){
     SALOME_MED::double_array_var anArray = aFieldDouble->getValue(SALOME_MED::MED_FULL_INTERLACE);
@@ -1354,5 +1863,6 @@ VISU_MEDConvertor
 
   anUnstructuredGridIDMapper->myIsVTKDone = true;
 
+  MESSAGE("VISU_MEDConvertor::LoadField done");
   return 1;
 }
index e51c580932e2263d3cd3aebe3068b9ff8e45b48f..9fc1c7765aefbe98f2feda76bbd7b6d7484ee31a 100644 (file)
 
 namespace VISU
 {
+  //---------------------------------------------------------------
+  typedef std::pair<int, int> TIndexAndSize; // 
+  typedef std::map<SALOME_MED::medGeometryElement, TIndexAndSize> TCellsFirstIndex; // key: SALOME_MED::medGeometryElement
+
   //---------------------------------------------------------------
   struct TCMEDCoordHolder: TCoordHolder<SALOME_MED::double_array_var>
   {
@@ -101,12 +105,35 @@ namespace VISU
   };
   typedef MED::SharedPtr<TCMesh> PCMesh;
 
+  //---------------------------------------------------------------
+  struct TCSubProfile: virtual TSubProfileImpl
+  {
+    SALOME_MED::medGeometryElement myMGeom;
+  };
+  typedef SharedPtr<TCSubProfile> PCSubProfile;
 
   //---------------------------------------------------------------
   struct TCProfile: virtual TProfileImpl
   {};
   typedef MED::SharedPtr<TCProfile> PCProfile;
 
+  //---------------------------------------------------------------
+  struct TCGauss: virtual TGaussImpl
+  {
+  };
+  typedef SharedPtr<TCGauss> PCGauss;
+  
+  struct TCGaussSubMesh: virtual TGaussSubMeshImpl
+  {
+  };
+  typedef SharedPtr<TCGaussSubMesh> PCGaussSubMesh;
+
+
+  //---------------------------------------------------------------
+  struct TCGaussMesh: virtual TGaussMeshImpl
+  {};
+  typedef SharedPtr<TCGaussMesh> PCGaussMesh;
+
 
   //---------------------------------------------------------------
   struct TCSubMesh: virtual TSubMeshImpl
@@ -118,8 +145,6 @@ namespace VISU
   struct TCMeshOnEntity: virtual TMeshOnEntityImpl
   {
     SALOME_MED::SUPPORT_var mySupport;
-    typedef std::pair<int,int> TIndexAndSize;
-    typedef std::map<int,TIndexAndSize> TCellsFirstIndex;
     TCellsFirstIndex myCellsFirstIndex;
   };
   typedef MED::SharedPtr<TCMeshOnEntity> PCMeshOnEntity;
index d09bc322d6bfdeb59fd3fe6c3ff72cc4028f4950..8bb713a66645ab7496d2f191b6d6a2eae1491230 100644 (file)
@@ -33,6 +33,7 @@
 #include "VISU_PipeLineUtils.hxx"
 
 #include "SUIT_ResourceMgr.h"
+#include "SALOME_Event.hxx"
 
 #include <vtkAppendPolyData.h>
 
@@ -136,6 +137,8 @@ VISU::CutLines_i
   SetOrientation2(CutPlanes::Orientation(VISU::Storable::FindValue(theMap,"myBasePlane[1]").toInt()),
                  Storable::FindValue(theMap,"aRot[1][0]").toDouble(),
                  Storable::FindValue(theMap,"aRot[1][1]").toDouble());
+  SetUseAbsoluteLength(VISU::Storable::FindValue(theMap,"myUseAbsLength").toInt());
+
   if (VISU::Storable::FindValue(theMap,"myBasePlaneCondition").toInt())
     SetDefault();
   else
@@ -191,8 +194,10 @@ VISU::CutLines_i
     aStrPos.append(QString::number(GetLinePosition(i)) + "|");
     aStrCon.append(QString::number(IsDefaultPosition(i)) + "|");
   }
+
   Storable::DataToStream( theStr, "myLinePosition",  aStrPos.latin1());
   Storable::DataToStream( theStr, "myLineCondition", aStrCon.latin1());
+  Storable::DataToStream( theStr,"myUseAbsLength", IsUseAbsoluteLength());
 
   // Storing the map - \a myMapCurvesInverted
   QString aStrCurvesInverted;
@@ -217,9 +222,33 @@ VISU::CutLines_i
                 CORBA::Double theXAngle, 
                 CORBA::Double theYAngle)
 {
-  myCutLinesPL->SetOrientation(VISU_CutPlanesPL::PlaneOrientation(theOrient),
-                              theXAngle,
-                              theYAngle);
+  struct TEvent: public SALOME_Event 
+  {
+    VISU_CutLinesPL* myCutLinesPL;
+    CORBA::Double myXAngle, myYAngle;
+    VISU::CutPlanes::Orientation myOrient;
+    TEvent(VISU_CutLinesPL* theCutLines, 
+          VISU::CutPlanes::Orientation theOrient,
+          CORBA::Double theXAngle, 
+          CORBA::Double theYAngle):
+      myCutLinesPL(theCutLines), 
+      myOrient(theOrient), 
+      myXAngle(theXAngle), 
+      myYAngle(theYAngle)
+    {}
+
+    virtual
+    void
+    Execute()
+    {
+      myCutLinesPL->SetOrientation(VISU_CutPlanesPL::PlaneOrientation(myOrient),
+                                  myXAngle, 
+                                  myYAngle);
+    }
+  };
+
+  ProcessVoidEvent(new TEvent(myCutLinesPL, theOrient, theXAngle, theYAngle));
+
 }
 
 //---------------------------------------------------------------
@@ -229,10 +258,33 @@ VISU::CutLines_i
                  CORBA::Double theXAngle, 
                  CORBA::Double theYAngle)
 {
-  myCutLinesPL->SetOrientation(VISU_CutPlanesPL::PlaneOrientation(theOrient),
-                              theXAngle,
-                              theYAngle,
-                              1);
+  struct TEvent: public SALOME_Event 
+  {
+    VISU_CutLinesPL* myCutLinesPL;
+    CORBA::Double myXAngle, myYAngle;
+    VISU::CutPlanes::Orientation myOrient;
+    TEvent(VISU_CutLinesPL* theCutLines, 
+          VISU::CutPlanes::Orientation theOrient,
+          CORBA::Double theXAngle, 
+          CORBA::Double theYAngle):
+      myCutLinesPL(theCutLines), 
+      myOrient(theOrient), 
+      myXAngle(theXAngle), 
+      myYAngle(theYAngle)
+    {}
+
+    virtual
+    void
+    Execute()
+    {
+      myCutLinesPL->SetOrientation(VISU_CutPlanesPL::PlaneOrientation(myOrient),
+                                  myXAngle, 
+                                  myYAngle,
+                                  1);
+    }
+  };
+
+  ProcessVoidEvent(new TEvent(myCutLinesPL, theOrient, theXAngle, theYAngle));
 }
 
 //---------------------------------------------------------------
@@ -385,6 +437,7 @@ VISU::CutLines_i
   return myCutLinesPL->IsPartDefault(thePlaneNumber);
 }
 
+//---------------------------------------------------------------
 /*! Invert all curves of corresponding table
  * see void VISU::CutLines_i::SetCurveInverted(CORBA::Long theCurveNumber,CORBA::Boolean theInvert)
  * \param theInvert - Invert all curves, if value is TRUE, else not.
@@ -393,9 +446,11 @@ void
 VISU::CutLines_i
 ::SetAllCurvesInverted(CORBA::Boolean theInvert)
 {
-  for (int i=0; i<GetNbLines(); i++) SetCurveInverted(i,theInvert);
+  for(int i=0; i<GetNbLines(); i++)
+    SetCurveInverted(i, theInvert);
 }
 
+//---------------------------------------------------------------
 /*! Checks the orientation of all curves
  * \retval TRUE - if all curves are inverted, else FALSE
  */
@@ -408,6 +463,7 @@ VISU::CutLines_i
   return true;
 }
 
+//---------------------------------------------------------------
 /*! Sets orientation of curve
  * \param theCurveNumber - integer value, number of cut line.
  * \param theInvert      - boolean value, TRUE or false.
@@ -419,6 +475,7 @@ VISU::CutLines_i
   myMapCurvesInverted[theCurveNumber] = theInvert;
 }
 
+//---------------------------------------------------------------
 /*! Checks orientation of curve.
  * \param theCurveNumber - integer value, number of cut line.
  * \retval TRUE - if line in the table is inverted, else FALSE.
@@ -430,6 +487,25 @@ VISU::CutLines_i
   return myMapCurvesInverted[theCurveNumber];
 }
 
+//---------------------------------------------------------------
+/*! It control the way the length of cutlines is shown: using aboslute or relative values
+* \param theAbsLength - boolean value, TRUE or false.
+*/
+void
+VISU::CutLines_i
+::SetUseAbsoluteLength(CORBA::Boolean theAbsLength)
+{
+  myUseAbsLength = theAbsLength;
+}
+
+//---------------------------------------------------------------
+CORBA::Boolean
+VISU::CutLines_i
+::IsUseAbsoluteLength()
+{
+  return myUseAbsLength;
+}
+
 //---------------------------------------------------------------
 void
 VISU::CutLines_i
@@ -508,7 +584,7 @@ VISU::CutLines_i
     aTitle = aTitle.simplifyWhiteSpace();
     aTableOfReal->SetTitle(aTitle.latin1());
     
-    int iLineEnd = myCutLinesPL->GetAppendPolyData()->GetNumberOfInputs();
+    int iLineEnd = myCutLinesPL->GetAppendPolyData()->GetNumberOfInputConnections(0);
     if(MYDEBUG) MESSAGE("CutPlanes_i::BuildTableOfReal iLineEnd = "<<iLineEnd);
     TXCont aXCont;
     TXYMapCont aXYMapCont; 
@@ -537,25 +613,32 @@ VISU::CutLines_i
       if(MYDEBUG) MESSAGE("CutPlanes_i::BuildTableOfReal iLine = "<<iLine<<"; aNbPoints = "<<aNbPoints);
       aLineIdCont[iLine] = jLine++;
       TXYMap& aXYMap = aXYMapCont[iLine];
-      vtkFloatingPointType aPnt[3], aVect[3], aDist;
+      vtkFloatingPointType aPnt[3], aVect[3], aDist, aTopBnd, aDivide;
+      aTopBnd = aBoundPrjLn[2];
+      aDivide = aBoundPrjLn[2];
+      if( !IsUseAbsoluteLength() ){
+        aTopBnd = 1.0;
+      }
+      else aDivide = 1.0;
+
       for(int i = 0; i < aNbPoints; i++){
        aDataSet->GetPoint(i,aPnt);
-       Sub(aPnt,aBasePnt,aVect);
+        for(int j = 0; j < 3; j++)
+          aVect[j] = aPnt[j] - aBasePnt[j];
+       //VISU::Sub(aPnt,aBasePnt,aVect);
        if ( fabs(aBoundPrjLn[2]) < EPS_machine )
          aDist = 0.5;
        else
          {
-           aDist = vtkMath::Dot(aVect,aDirLn) / aBoundPrjLn[2];
+           aDist = vtkMath::Dot(aVect,aDirLn)/aDivide; 
            // the workaround
            if(aDist < 0.0) aDist = 0.0; 
-           if(aDist > 1.0) aDist = 1.0;
+           if(aDist > aTopBnd) aDist = aTopBnd;
          }
        aXYMap[aDist] = aScalars->GetTuple1(i);
       }
-      if(aFilter){
-       aFilter->UnRegisterAllOutputs();
+      if(aFilter)
        aFilter->Delete();
-      }
     }
     if(aXYMapCont.size() == 0)
       throw std::runtime_error("CutPlanes_i::BuildTableOfReal aXYMapCont.size() == 0 !!!");
@@ -580,11 +663,15 @@ VISU::CutLines_i
            a_last_indx = tmp;
          }
          std::list<vtkFloatingPointType>::const_iterator aIter = XKeys.begin();
-         for (int k=0;k<XKeys.size() and aIter != XKeys.end();k++,aIter++){
+         for (int k=0;k<XKeys.size() && aIter != XKeys.end();k++,aIter++){
            // Warning: value '1.0' come from workaround:
            // see also aDist = vtkMath::Dot(aVect,aDirLn) / aBoundPrjLn[2];
            // aDist >= 0 and aDist<=1.0
-           aNewXYMap[1.0 - *aIter] = aXYMap[*aIter];
+           vtkFloatingPointType aTopBnd = aBoundPrjLn[2];
+           if( !IsUseAbsoluteLength() ){
+             aTopBnd = 1.0;
+           }
+           aNewXYMap[aTopBnd - *aIter] = aXYMap[*aIter];
          }
          TXYMap::const_iterator aNewXYMapIter = aNewXYMap.begin();
          aXYMap.clear();
index 216e7a664900126d2c3865765809128e1d8f231c..a4cc8999f7d68ba2d8c5a7aacb3e5c780991cd6d 100644 (file)
@@ -33,15 +33,17 @@ class VISU_CutLinesPL;
 
 namespace VISU
 {
+  //----------------------------------------------------------------------------
   class CutLines_i : public virtual POA_VISU::CutLines,
                      public virtual ScalarMap_i
   {
     static int myNbPresent;
-    CutLines_i();
     CutLines_i(const CutLines_i&);
 
   public:
+    //----------------------------------------------------------------------------
     typedef ScalarMap_i TSuperClass;
+    typedef VISU::CutLines TInterface;
 
     explicit
     CutLines_i(EPublishInStudyMode thePublishInStudyModep);
@@ -158,6 +160,14 @@ namespace VISU
     CORBA::Boolean
     IsCurveInverted(CORBA::Long theCurveNumber);
 
+    virtual
+    void
+    SetUseAbsoluteLength(CORBA::Boolean theAbsLength);
+
+    virtual
+    CORBA::Boolean 
+    IsUseAbsoluteLength();
+
     virtual 
     void 
     SetNbLines(CORBA::Long theNb);
@@ -176,8 +186,6 @@ namespace VISU
     void
     CopyCurvesInverted(const TCurvesInv& theCurves);
 
-    typedef VISU::CutLines TInterface;
-
     VISU_CutLinesPL* 
     GetSpecificPL() const
     { 
@@ -195,8 +203,13 @@ namespace VISU
     bool 
     CheckIsPossible();
 
+    virtual 
+    const char* 
+    GetIconName();
+
     VISU_CutLinesPL *myCutLinesPL;
     TCurvesInv myMapCurvesInverted;
+    CORBA::Boolean myUseAbsLength;
 
   public:
     //! Extends VISU_ColoredPrs3d_i::IsPossible
index a0fb3197da8e5afd14565d1383d32fa4f37353e3..0097b3f75833ecf80976c6d0daff42449e618308 100644 (file)
@@ -30,6 +30,7 @@
 #include "VISU_Actor.h"
 
 #include "SUIT_ResourceMgr.h"
+#include "SALOME_Event.hxx"
 
 #ifdef _DEBUG_
 static int MYDEBUG = 0;
@@ -75,6 +76,18 @@ VISU::CutPlanes_i
 }
 
 
+//----------------------------------------------------------------------------
+const char* 
+VISU::CutPlanes_i
+::GetIconName()
+{
+  if (!IsGroupsUsed())
+    return "ICON_TREE_CUT_PLANES";
+  else
+    return "ICON_TREE_CUT_PLANES_GROUPS";
+}
+
+
 //----------------------------------------------------------------------------
 VISU::CutPlanes_i
 ::CutPlanes_i(EPublishInStudyMode thePublishInStudyMode):
@@ -122,7 +135,7 @@ VISU::CutPlanes_i
 
 //----------------------------------------------------------------------------
 void VISU::CutPlanes_i::ToStream(std::ostringstream& theStr){
-  ScalarMap_i::ToStream(theStr);
+  TSuperClass::ToStream(theStr);
 
   Storable::DataToStream( theStr, "myNbPlanes", int(GetNbPlanes()));
   Storable::DataToStream( theStr, "myDisplacement", GetDisplacement());
index 6f58872d5d3add7761c7ca1db1774a66e2d8be47..6dc9c870c17b5983295f4727b65f4def7aeb7989 100644 (file)
@@ -33,15 +33,17 @@ class VISU_CutPlanesPL;
 
 namespace VISU
 {
-  class CutPlanes_i : public virtual POA_VISU::CutPlanes,
-                     public virtual ScalarMap_i
+  //----------------------------------------------------------------------------
+  class VISU_I_EXPORT CutPlanes_i : public virtual POA_VISU::CutPlanes,
+                                   public virtual ScalarMap_i
   {
     static int myNbPresent;
-    CutPlanes_i();
     CutPlanes_i(const CutPlanes_i&);
 
   public:
+    //----------------------------------------------------------------------------
     typedef ScalarMap_i TSuperClass;
+    typedef VISU::CutPlanes TInterface;
 
     explicit
     CutPlanes_i(EPublishInStudyMode thePublishInStudyModep);
@@ -106,8 +108,6 @@ namespace VISU
     CORBA::Long
     GetNbPlanes();
 
-    typedef VISU::CutPlanes TInterface;
-
     VISU_CutPlanesPL* 
     GetSpecificPL() const
     { 
@@ -173,6 +173,10 @@ namespace VISU
     virtual
     QString
     GenerateName();
+
+    virtual
+    const char* 
+    GetIconName();
   };
 }
 
index a41f512e0c3f3f6064c6aa7853636ad01e0bf293..f5f7cfd561667a4ed3276041c8962625baaeab05 100644 (file)
@@ -100,6 +100,18 @@ VISU::DeformedShape_i
 }
 
 
+//---------------------------------------------------------------
+const char*
+VISU::DeformedShape_i
+::GetIconName()
+{
+  if (!IsGroupsUsed())
+    return "ICON_TREE_DEFORMED_SHAPE";
+  else
+    return "ICON_TREE_DEFORMED_SHAPE_GROUPS";
+}  
+
+
 //---------------------------------------------------------------
 VISU::DeformedShape_i
 ::DeformedShape_i(EPublishInStudyMode thePublishInStudyMode):
@@ -125,7 +137,6 @@ VISU::DeformedShape_i
   }
 }
 
-
 //---------------------------------------------------------------
 VISU::Storable* 
 VISU::DeformedShape_i
@@ -262,15 +273,6 @@ VISU::DeformedShape_i
 }
 
 
-//---------------------------------------------------------------
-void 
-VISU::DeformedShape_i
-::SetMapScale(double theMapScale)
-{
-  myDeformedShapePL->SetMapScale(theMapScale);
-}
-
-
 //---------------------------------------------------------------
 VISU_Actor* 
 VISU::DeformedShape_i
index 5f3d79cd808ae4e070bb3aa012e112631aead667..e433be3e4cad0af292b9a23fbd9a141cb5281d9c 100644 (file)
@@ -33,15 +33,17 @@ class VISU_DeformedShapePL;
 
 namespace VISU
 {
+  //----------------------------------------------------------------------------
   class DeformedShape_i : public virtual POA_VISU::DeformedShape,
                          public virtual ScalarMap_i
   {
     static int myNbPresent;
-    DeformedShape_i();
     DeformedShape_i(const DeformedShape_i&);
 
   public:
+    //----------------------------------------------------------------------------
     typedef ScalarMap_i TSuperClass;
+    typedef VISU::DeformedShape TInterface;
 
     explicit
     DeformedShape_i(EPublishInStudyMode thePublishInStudyModep);
@@ -84,8 +86,6 @@ namespace VISU
     void
     SetColor(const SALOMEDS::Color& theColor);
 
-    typedef VISU::DeformedShape TInterface;
-
     VISU_DeformedShapePL* 
     GetSpecificPL() const
     { 
@@ -134,6 +134,10 @@ namespace VISU
     QString 
     GenerateName();
 
+    virtual
+    const char* 
+    GetIconName();
+
     virtual
     void
     ToStream(std::ostringstream& theStr);
index fe78c72aa1473e5cfa9a9dbdbbacec7010620159..275346075bedb93a5eff701f1fa22de829177983 100644 (file)
@@ -212,7 +212,7 @@ namespace VISU
     return thePrefix;
   }
 
-
+  //===========================================================================
   std::string
   ScalarMapToPython(SALOMEDS::SObject_ptr theSObject,
                    VISU::ScalarMap_i* theServant,
@@ -246,10 +246,17 @@ namespace VISU
     }
     theStr<<thePrefix<<theName<<".SetBarOrientation("<<aParam<<")"<<endl;
 
+    
+    std::string aMeshName = theServant->GetCMeshName();
+    const VISU::ScalarMap_i::TGroupNames aGroupNames = theServant->GetGroupNames();
+    VISU::ScalarMap_i::TGroupNames::const_iterator anIter = aGroupNames.begin();
+    for(; anIter != aGroupNames.end(); anIter++){
+      const std::string& aGroupName = *anIter;
+      theStr<<thePrefix<<theName<<".AddMeshOnGroup('"<<aMeshName<<"','"<<aGroupName<<"')"<<endl;
+    }
     return thePrefix;
   }
 
-
   //===========================================================================
   std::string
   DeformedShapeToPython(SALOMEDS::SObject_ptr theSObject,
@@ -299,9 +306,9 @@ namespace VISU
   {
     SALOMEDS::GenericAttribute_var anAttr;
     SALOMEDS::SObject_var aFatherSObject = theSObject->GetFather();
-    if(aFatherSObject->FindAttribute(anAttr,"AttributeComment")){
-      SALOMEDS::AttributeComment_var aComment =
-       SALOMEDS::AttributeComment::_narrow(anAttr);
+    if(aFatherSObject->FindAttribute(anAttr,"AttributeString")){
+      SALOMEDS::AttributeString_var aComment =
+       SALOMEDS::AttributeString::_narrow(anAttr);
       CORBA::String_var aValue = aComment->Value();
       Storable::TRestoringMap aMap;
       Storable::StrToMap(aValue.in(),aMap);
@@ -319,6 +326,7 @@ namespace VISU
     theStr<<thePrefix<<"if "<<aSObjectName<<":"<<endl;
     thePrefix += PREFIX;
 
+    theStr<<thePrefix<<"aBuilder.SetName("<<aSObjectName<<", \""<<theSObject->GetName()<<"\")"<<endl; // Fix for IPAL13165
     std::string aName = "aTableAttr";
     theStr<<thePrefix<<aName<<" = aBuilder.FindOrCreateAttribute("<<
       aSObjectName<<",'"<<theAttrName<<"')"<<endl;
@@ -716,6 +724,7 @@ namespace VISU
           }
           break;
         case VISU::TSCALARMAP:
+        case VISU::TPRSMERGER:
           if(ScalarMap_i* aServant = dynamic_cast<ScalarMap_i*>(GetServant(anObj).in())){
            thePrefix = ScalarMapToPython(theSObject,aServant,theStr,aName,"ScalarMapOnField",theArgumentName,thePrefix);
            theStr<<thePrefix<<"pass"<<endl<<endl;
@@ -793,10 +802,14 @@ namespace VISU
              break;
            }
 
+           CORBA::String_var aMeshName = aServant->GetScalarCMeshName();
+           CORBA::String_var aFieldName = aServant->GetScalarCFieldName();
+           CORBA::Long aTimeStampNumber = aServant->GetScalarLIteration();
+
            theStr<<thePrefix<<aName<<".SetScalarField("<<
-             "'"<<aServant->GetScalarMeshName()<<"',"<<
-             "'"<<aServant->GetScalarFieldName()<<"',"<<
-             aServant->GetScalarIteration()<<","<<
+             "'"<<aMeshName<<"',"<<
+             "'"<<aFieldName<<"',"<<
+             aTimeStampNumber<<","<<
              aParam<<
              ")"<<endl;
 
@@ -916,6 +929,9 @@ namespace VISU
            if(!aServant->IsDefault())
              theStr<<thePrefix<<aName<<".SetBasePlanePosition("<<aServant->GetBasePlanePosition()<<")"<<endl;
 
+            CORBA::Boolean aUseAbsLength = aServant->IsUseAbsoluteLength();
+           theStr<<thePrefix<<aName<<".SetUseAbsoluteLength("<<aUseAbsLength<<")"<<endl;
+           
            CORBA::Long aNbLines = aServant->GetNbLines();
            theStr<<thePrefix<<aName<<".SetNbLines("<<aNbLines<<")"<<endl;
            for(CORBA::Long anId = 0; anId < aNbLines; anId++){
@@ -1013,9 +1029,9 @@ namespace VISU
         case VISU::TTABLE:
           if(dynamic_cast<Table_i*>(GetServant(anObj).in())){
            SALOMEDS::GenericAttribute_var anAttr;
-           if(theSObject->FindAttribute(anAttr,"AttributeComment")){
+           if(theSObject->FindAttribute(anAttr,"AttributeString")){
              using namespace SALOMEDS;
-             AttributeComment_var aComment = AttributeComment::_narrow(anAttr);
+             AttributeString_var aComment = AttributeString::_narrow(anAttr);
              CORBA::String_var aValue = aComment->Value();
              Storable::TRestoringMap aMap;
              Storable::StrToMap(aValue.in(),aMap);
@@ -1100,9 +1116,9 @@ namespace VISU
       }
     } else { /*if(!CORBA::is_nil(anObj))*/
       SALOMEDS::GenericAttribute_var anAttr;
-      if (theSObject->FindAttribute(anAttr,"AttributeComment")) {
-       SALOMEDS::AttributeComment_var aComment =
-         SALOMEDS::AttributeComment::_narrow(anAttr);
+      if (theSObject->FindAttribute(anAttr,"AttributeString")) {
+       SALOMEDS::AttributeString_var aComment =
+         SALOMEDS::AttributeString::_narrow(anAttr);
        CORBA::String_var aValue = aComment->Value();
        Storable::TRestoringMap aMap;
        Storable::StrToMap(aValue.in(),aMap);
@@ -1141,7 +1157,7 @@ namespace VISU
            theStr<<thePrefix<<"anAttr = aBuilder.FindOrCreateAttribute("<<aName<<",'AttributeName')"<<endl;
            theStr<<thePrefix<<"anAttr.SetValue('"<<aName<<"')"<<endl;
 
-           theStr<<thePrefix<<"anAttr = aBuilder.FindOrCreateAttribute("<<aName<<",'AttributeComment')"<<endl;
+           theStr<<thePrefix<<"anAttr = aBuilder.FindOrCreateAttribute("<<aName<<",'AttributeString')"<<endl;
            theStr<<thePrefix<<"anAttr.SetValue('"<<aValue.in()<<"')"<<endl;
 
            theStr<<thePrefix<<"pass"<<endl<<endl;
@@ -1285,6 +1301,92 @@ namespace VISU
     }
   }
 
+  //===========================================================================
+  void
+  DumpAnimationsToPython(SALOMEDS::Study_ptr theStudy,
+                        CORBA::Boolean theIsPublished,
+                        CORBA::Boolean& theIsValidScript,
+                        SALOMEDS::SObject_ptr theSObject,
+                        std::ostream& theStr,
+                        std::string thePrefix)
+  {
+
+    if(!theIsPublished) return;
+
+    SALOMEDS::ChildIterator_var aChildItet = theStudy->NewChildIterator(theSObject);
+    for(aChildItet->InitEx(false); aChildItet->More(); aChildItet->Next()){
+      SALOMEDS::SObject_var aSObject = aChildItet->Value();
+          
+      SALOMEDS::GenericAttribute_var anAttr;
+      if (!aSObject->FindAttribute(anAttr, "AttributeString")) continue;
+      
+      SALOMEDS::AttributeString_var aStringAttr = SALOMEDS::AttributeString::_narrow(anAttr);
+      QString value (aStringAttr->Value());
+      if(value.isEmpty()) continue;
+
+      VISU::Storable::TRestoringMap aMap;
+      VISU::Storable::StrToMap(value, aMap);
+      bool isExist;
+      
+      QString aTypeName = VISU::Storable::FindValue(aMap,"myComment",&isExist);
+      if(!isExist || aTypeName != "ANIMATION") continue;
+
+      //ANIMATION
+      theStr<<endl;
+      QString animName = aSObject->GetName();
+      theStr<<thePrefix<<"#Animation: "<<animName<<endl;
+      theStr<<endl;
+      theStr<<thePrefix<<"animSO = aBuilder.NewObject(aSComponent)"<<endl;
+      theStr<<thePrefix<<"aBuilder.SetName(animSO, '"<<animName<<"')"<< endl;
+      theStr<<thePrefix<<"strAttr = aBuilder.FindOrCreateAttribute(animSO, 'AttributeString')"<< endl;
+      theStr<<thePrefix<<"strAttr.SetValue('"<<value<<"')"<< endl;
+
+
+    
+      SALOMEDS::ChildIterator_var anIter = theStudy->NewChildIterator(aSObject);
+      for (anIter->Init(); anIter->More(); anIter->Next()) {
+       SALOMEDS::SObject_var anObj = anIter->Value();
+
+       //FIELD
+       theStr<<thePrefix<<"fieldSO = aBuilder.NewObject(animSO)"<<endl;
+       if (anObj->FindAttribute(anAttr, "AttributeString")) {
+         aStringAttr = SALOMEDS::AttributeString::_narrow(anAttr);
+         theStr<<thePrefix<<"strAttr = aBuilder.FindOrCreateAttribute(fieldSO, 'AttributeString')"<< endl;
+         theStr<<thePrefix<<"strAttr.SetValue('"<<aStringAttr->Value()<<"')"<< endl;
+       }
+       
+       SALOMEDS::SObject_var refObj;
+       if(anObj->ReferencedObject(refObj)) {
+         SALOMEDS::SObject_var father = refObj->GetFather();
+         value = refObj->GetName();
+         QString path(theStudy->GetObjectPath(father));
+         //The following code requierd as a field name can contain '/' character
+         theStr<<thePrefix<<"aBuilder.Addreference(fieldSO,getSObjectByFatherPathAndName(theStudy,'"<<path<<"','"<<value<<"'))"<<endl;
+       }
+       value = anObj->GetName();
+       if(!value.isEmpty()) theStr<<thePrefix<<"aBuilder.SetName(fieldSO, '"<<value<<"')"<< endl;
+
+       //SCALARMAP,...
+       SALOMEDS::ChildIterator_var aSubIter = theStudy->NewChildIterator(anObj);
+       for (aSubIter->Init(); aSubIter->More(); aSubIter->Next()) {
+         SALOMEDS::SObject_var aSubObj = aSubIter->Value();
+         
+         theStr<<thePrefix<<"subSO = aBuilder.NewObject(fieldSO)"<<endl;
+         value = aSubObj->GetName();
+         if(!value.isEmpty()) theStr<<thePrefix<<"aBuilder.SetName(subSO, '"<<value<<"')"<< endl;
+         if (aSubObj->FindAttribute(anAttr, "AttributeString")) {
+           aStringAttr = SALOMEDS::AttributeString::_narrow(anAttr);
+           theStr<<thePrefix<<"strAttr = aBuilder.FindOrCreateAttribute(subSO, 'AttributeString')"<< endl;
+           theStr<<thePrefix<<"strAttr.SetValue('"<<aStringAttr->Value()<<"')"<< endl;
+         }
+       }
+
+      }
+      
+    }
+
+    theStr<<endl;
+  }
 
   //===========================================================================
   Engines::TMPFile*
@@ -1293,6 +1395,8 @@ namespace VISU
             CORBA::Boolean theIsPublished,
             CORBA::Boolean& theIsValidScript)
   {
+    theIsValidScript = false;
+
     SALOMEDS::Study_var aStudy = SALOMEDS::Study::_narrow(theStudy);
     if(CORBA::is_nil(aStudy))
       return new Engines::TMPFile(0);
@@ -1326,6 +1430,7 @@ namespace VISU
     SALOMEDS::SComponent_var aComponent = FindOrCreateVisuComponent(aStudy);
     VISU::DumpChildrenToPython(aStudy,theIsPublished,theIsValidScript,aComponent.in(),aStr,aName2EntryMap,aEntry2NameMap,"",aPrefix);
     VISU::DumpContainersToPython(aStudy,theIsPublished,theIsValidScript,aComponent.in(),aStr,aName2EntryMap,aEntry2NameMap,"",aPrefix);
+    VISU::DumpAnimationsToPython(aStudy,theIsPublished,theIsValidScript,aComponent.in(),aStr,aPrefix);
 
     //Output the script that sets up the visul parameters.
     if(theIsPublished) {
@@ -1338,6 +1443,30 @@ namespace VISU
 
     aStr<<aPrefix<<"pass"<<endl;
 
+    if(theIsPublished) { //SRN: define function for Animation
+
+      //Define a function that find a SObject by its father's path and its name
+      aStr<<endl;
+      aStr<<endl;
+
+      aStr<<"def getSObjectByFatherPathAndName(theStudy, thePath, theName):"<<endl;
+      aStr<<aPrefix<<"father = theStudy.FindObjectByPath(thePath)"<<endl;
+      aStr<<aPrefix<<"itr = theStudy.NewChildIterator(father)"<<endl;
+      aStr<<aPrefix<<"while itr.More():"<<endl;
+      aStr<<aPrefix<<aPrefix<<"so = itr.Value()"<<endl;
+      aStr<<aPrefix<<aPrefix<<"if so.GetName()==theName: return so"<<endl;
+      aStr<<aPrefix<<aPrefix<<"itr.Next()"<<endl;
+      aStr<<aPrefix<<aPrefix<<"pass"<<endl;
+      aStr<<aPrefix<<"return None"<<endl;
+
+      aStr<<endl;
+    }
+
+    // theIsValidScript currently is not used by internal dump methods (DumpChildrenToPython(), etc.)
+    // If the situation changes, then the following line should be removed, and theIsValidScript
+    // should be set properly by those internal methods
+    theIsValidScript = true;
+
 #ifndef COUT
     std::string aResult = aStr.str();
     //ofstream anFStream("/tmp/dump.py");
index b1e542337a16daa079302a8ab4d38f3693d11c24..986b5153e0f55aca8c7f93a298d66073f25388e9 100644 (file)
@@ -39,13 +39,12 @@ class VISU_GaussPointsPL;
 namespace VISU
 {
   //! Class of the Gauss Points presentation.
-  class GaussPoints_i : public virtual POA_VISU::GaussPoints,
+  class VISU_I_EXPORT GaussPoints_i : public virtual POA_VISU::GaussPoints,
                        public virtual VISU::TGaussPtsActorFactory,
                        public virtual MinMaxCunsomer,
                        public virtual ColoredPrs3d_i
   {
     static int myNbPresent;
-    GaussPoints_i();
     GaussPoints_i(const GaussPoints_i&);
 
   public:
@@ -278,6 +277,10 @@ namespace VISU
     bool 
     CheckIsPossible();
 
+    virtual 
+    const char* 
+    GetIconName() {return "ICON_TREE_GAUSS_POINTS";}
+
     virtual 
     VISU_PipeLine* 
     GetActorPipeLine();
index c2c6f8046748bcf076e9c9fb9612e091d8a99eb3..4a22d651e6f2c098ff5ae5f39372992204bd6eaf 100644 (file)
 #include <omnithread.h>
 #include CORBA_SERVER_HEADER(SALOME_Session)
 #include CORBA_SERVER_HEADER(SALOME_ModuleCatalog)
+#include CORBA_SERVER_HEADER(MED_Gen)
 
 // QT Includes
-#include <qstring.h>
+#include <qdir.h>
 #include <qfileinfo.h>
 #include <qregexp.h>
 
@@ -262,11 +263,25 @@ namespace VISU
 
   //----------------------------------------------------------------------------
   void
-  CorrectSObjectType(SALOMEDS::SObject_ptr theSObject)
+  CorrectSObjectType(SALOMEDS::SObject_ptr theSObject, 
+                    SALOMEDS::StudyBuilder_ptr theBuilder)
   {
     SALOMEDS::GenericAttribute_var anAttr;
-    if ( theSObject->FindAttribute(anAttr, "AttributeComment") ) {
-      SALOMEDS::AttributeComment_var aAttComment = SALOMEDS::AttributeComment::_narrow(anAttr);
+    bool isAttrStringFound = false;
+
+    if( theSObject->FindAttribute(anAttr, "AttributeComment") ) {
+      //SRN: Replace an AttributeComment with AttributeString
+      SALOMEDS::AttributeComment_var aComment = SALOMEDS::AttributeComment::_narrow(anAttr);
+      string aValue = aComment->Value();
+      theBuilder->RemoveAttribute(theSObject, "AttributeComment");
+      anAttr = theBuilder->FindOrCreateAttribute(theSObject, "AttributeString");
+      SALOMEDS::AttributeString_var aStringAttr = SALOMEDS::AttributeString::_narrow(anAttr);
+      aStringAttr->SetValue(aValue.c_str());
+      isAttrStringFound = true;
+    }
+
+    if ( isAttrStringFound || theSObject->FindAttribute(anAttr, "AttributeString") ) {
+      SALOMEDS::AttributeString_var aAttComment = SALOMEDS::AttributeString::_narrow(anAttr);
       if ( aAttComment ) {
        string aValue = aAttComment->Value();
        if ( aValue.compare("") ) {
@@ -286,6 +301,7 @@ namespace VISU
              else if ( !aComment.compare(QString("CONTAINER")) ) aVISUType = VISU::TCONTAINER;
              else if ( !aComment.compare(QString("MESH")) ) aVISUType = VISU::TMESH;
              else if ( !aComment.compare(QString("SCALARMAP")) ) aVISUType = VISU::TSCALARMAP;
+             else if ( !aComment.compare(QString("PRSMERGER")) ) aVISUType = VISU::TPRSMERGER;
              else if ( !aComment.compare(QString("ISOSURFACE")) ) aVISUType = VISU::TISOSURFACE;
              else if ( !aComment.compare(QString("DEFORMEDSHAPE")) ) aVISUType = VISU::TDEFORMEDSHAPE;
              else if ( !aComment.compare(QString("SCALARMAPONDEFORMEDSHAPE")) ) aVISUType = VISU::TSCALARMAPONDEFORMEDSHAPE;
@@ -334,12 +350,14 @@ namespace VISU
     SALOMEDS::Study_var aStudy = theComponent->GetStudy();
 
     SALOMEDS::ChildIterator_var anIter = aStudy->NewChildIterator(theComponent);
+    SALOMEDS::StudyBuilder_var  aStudyBuilder = aStudy->NewBuilder();
+
     for (anIter->InitEx(true); anIter->More(); anIter->Next()) {
       SALOMEDS::SObject_var aSObject = anIter->Value();
-      CorrectSObjectType(aSObject);      
+      CorrectSObjectType(aSObject, aStudyBuilder);      
     }
 
-    SALOMEDS::StudyBuilder_var  aStudyBuilder = aStudy->NewBuilder();
+   
     string aDir = isMultiFile ? theURL : SALOMEDS_Tool::GetTmpDir();
     TCollection_AsciiString aTmpDir (const_cast<char*>(aDir.c_str()));
     VisuTmpDir = aTmpDir.ToCString();
@@ -480,19 +498,22 @@ namespace VISU
          QString aPrefix("");
          if (isMultiFile) aPrefix = SALOMEDS_Tool::GetNameFromPath(aStudy->URL()).c_str();
          QString aFileName = aPrefix + "_" + (pResult->GetName()).c_str();
+               QString tmpDir = QDir::convertSeparators( QString(aTmpDir.ToCString()) );;
          static QString aCommand;
-         aCommand.sprintf("cp %s %s%s",aFileInfo.filePath().latin1(),aTmpDir.ToCString(),aFileName.latin1());
+    aCommand.sprintf(" %s %s%s",aFileInfo.filePath().latin1(),tmpDir.latin1(),aFileName.latin1());
+    aCommand = QDir::convertSeparators( aCommand );
+    aCommand.prepend( COPY_COMMAND );
 
-         int aRes = system(aCommand);
-         if(aRes){
+               if(system(aCommand.latin1())){
            if(MYDEBUG) MESSAGE("VISU_Gen_i::Save - Can't execute the command :"<<aCommand);
            continue;
          }else
            if(MYDEBUG) MESSAGE("VISU_Gen_i::Save - "<<aCommand);
 
-         TCollection_AsciiString aString(strdup(aFileName.latin1()));
+               QString studyPath = tmpDir.append(aFileName);
+         TCollection_AsciiString aString((char *)(aFileName.latin1()));
 
-         HDFascii::ConvertFromHDFToASCII(strdup((aTmpDir + aString).ToCString()), true);
+               HDFascii::ConvertFromHDFToASCII(strdup(studyPath.latin1()), true);
 
          aFileNames.Append(aString);
        }}
@@ -595,6 +616,26 @@ namespace VISU
       myStudyDocument = SALOMEDS::Study::_duplicate(theStudy);
 
       ProcessVoidEvent(new TEvent(aStudyName));
+
+      // Load MED component if necessary
+      if(!myStudyDocument->FindComponent("MED")->_is_nil())
+       {
+         SALOME_LifeCycleCORBA aLCC(SalomeApp_Application::namingService());
+         Engines::Component_var aComponent = aLCC.FindOrLoad_Component("FactoryServer","MED");
+         SALOME_MED::MED_Gen_var aMedEngine = SALOME_MED::MED_Gen::_narrow(aComponent);
+         
+         if(!CORBA::is_nil(aMedEngine))
+           {
+             SALOMEDS::StudyBuilder_var aStudyBuilder = myStudyDocument->NewBuilder();
+             try {
+               aStudyBuilder->LoadWith( myStudyDocument->FindComponent( "MED" ), aMedEngine );
+             }
+             catch( const SALOME::SALOME_Exception& ) {
+               // Oops, something went wrong while loading
+               // See also SalomeApp_Study::openDataModel()
+             }
+           }
+       }
     } else {
       INFOS("CORBA::is_nil(theStudy)");
     }
@@ -1055,17 +1096,41 @@ namespace VISU
                                          theIteration)._retn();
   }
 
-  Table_ptr VISU_Gen_i::CreateTable(const char* theTableEntry){
+  struct CreateTableEvent: public SALOME_Event
+  {
+    SALOMEDS::Study_var myStudyDocument;
+    const char* myTableEntry;
+    typedef Table_ptr TResult;
+    TResult myResult;
+    
+    CreateTableEvent(const SALOMEDS::Study_var& theStudy, const char* theTableEntry)
+    {
+      myStudyDocument = theStudy;
+      myTableEntry = theTableEntry;
+      myResult = Table::_nil();
+    }
+    
+    virtual
+    void
+    Execute()
+    {
+      Table_i* pPresent = new Table_i(myStudyDocument,myTableEntry);
+      if(pPresent->Create() != NULL)
+       myResult = pPresent->_this();
+      else{
+       pPresent->_remove_ref();
+       myResult = VISU::Table::_nil();
+      }
+    }
+  };
+
+
+  Table_ptr VISU_Gen_i::CreateTable(const char* theTableEntry)
+  {
     if(myStudyDocument->GetProperties()->IsLocked())
       return Table::_nil();
     Mutex mt(myMutex);
-    Table_i* pPresent = new Table_i(myStudyDocument,theTableEntry);
-    if(pPresent->Create() != NULL)
-      return pPresent->_this();
-    else{
-      pPresent->_remove_ref();
-      return VISU::Table::_nil();
-    }
+    return ProcessEvent(new CreateTableEvent(myStudyDocument, theTableEntry));
   }
 
   Curve_ptr VISU_Gen_i::CreateCurve(Table_ptr theTable,
@@ -1230,10 +1295,11 @@ namespace VISU
       aFileName += aFileInfo.fileName().latin1();
       static QString aCommand;
       string aFullFileName =  aTmpDir + aFileName;
-      aCommand.sprintf("cp %s %s",
-                      aFileInfo.filePath().latin1(),
-                      aFullFileName.c_str());
-      if(system(aCommand) == -1) {
+      aCommand.sprintf(" %s %s",aFileInfo.filePath().latin1(), aFullFileName.c_str() );
+      aCommand = QDir::convertSeparators( aCommand );
+      aCommand.prepend( COPY_COMMAND );
+
+      if(system(aCommand.latin1()) == -1) {
        if(MYDEBUG) MESSAGE("VISU_Gen_i::Copy - Cann't execute the command :"<<aCommand);
        return NULL;
       }
@@ -1281,6 +1347,7 @@ namespace VISU
     stmIn.seekg(0, ios::beg);
     char* aString = new char[aLength+1];
     stmIn.read(aString, aLength);
+    stmIn.close();
     aString[aLength] = 0;
     myIsMultiFile = false;
 
@@ -1302,7 +1369,7 @@ namespace VISU
       aResultSO = SALOMEDS::SObject::_duplicate(theObject);
 
     //Just for Result::Restore to find the Comment attribute :(
-    SALOMEDS::GenericAttribute_var anAttr = aStudyBuilder->FindOrCreateAttribute(aResultSO, "AttributeComment");
+    SALOMEDS::GenericAttribute_var anAttr = aStudyBuilder->FindOrCreateAttribute(aResultSO, "AttributeString");
 
     Storable* aStorable = Storable::Create(aResultSO,aFileName,aString);
 
index 3b8280b11a3d2237bce18758fa59e703db290f1f..25dfda980fca998465dd7c85ad9b87146fc134e4 100644 (file)
@@ -40,7 +40,6 @@ namespace VISU
                     public virtual Base_i
   {
     SALOMEDS::Study_var myStudyDocument;
-    VISU_Gen_i();
     VISU_Gen_i(const VISU::VISU_Gen_i &);
   public:
     VISU_Gen_i(CORBA::ORB_ptr theORB,
diff --git a/src/VISU_I/VISU_I.hxx b/src/VISU_I/VISU_I.hxx
new file mode 100755 (executable)
index 0000000..9da2805
--- /dev/null
@@ -0,0 +1,47 @@
+//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+// 
+//  This library is free software; you can redistribute it and/or 
+//  modify it under the terms of the GNU Lesser General Public 
+//  License as published by the Free Software Foundation; either 
+//  version 2.1 of the License. 
+// 
+//  This library is distributed in the hope that it will be useful, 
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+//  Lesser General Public License for more details. 
+// 
+//  You should have received a copy of the GNU Lesser General Public 
+//  License along with this library; if not, write to the Free Software 
+//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
+// 
+//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+//
+//
+//
+//  File   : VISU_I.hxx
+//  Author : Oleg UVAROV
+//  Module : VISU
+
+#ifndef _VISU_I_HXX_
+#define _VISU_I_HXX_
+
+#ifdef WNT
+# if defined VISU_I_EXPORTS
+#  define VISU_I_EXPORT __declspec( dllexport )
+# else
+#  define VISU_I_EXPORT __declspec( dllimport )
+# endif
+# define COPY_COMMAND           "copy /Y"
+# define MOVE_COMMAND           "move /Y"
+# define DELETE_COMMAND         "del /F"
+#else
+# define VISU_I_EXPORT
+# define COPY_COMMAND           "cp"
+# define MOVE_COMMAND           "mv"
+# define DELETE_COMMAND         "rm -f"
+#endif
+
+
+
+#endif
\ No newline at end of file
index b1e533e18c00ec9d956fd9ca0ce43f34224cadb7..c93c179fd1d463b3a522ee5f7e68d0cd1840fa70 100644 (file)
@@ -30,6 +30,7 @@
 #include "VISU_Actor.h"
 
 #include "SUIT_ResourceMgr.h"
+#include "SALOME_Event.hxx"
 
 #ifdef _DEBUG_
 static int MYDEBUG = 0;
@@ -75,6 +76,16 @@ VISU::IsoSurfaces_i
   return myComment.c_str();
 }
 
+//---------------------------------------------------------------
+const char*
+VISU::IsoSurfaces_i
+::GetIconName()
+{
+  if (!IsGroupsUsed())
+    return "ICON_TREE_ISO_SURFACES";
+  else
+    return "ICON_TREE_ISO_SURFACES_GROUPS";
+}
 
 //---------------------------------------------------------------
 VISU::IsoSurfaces_i
@@ -141,7 +152,27 @@ void
 VISU::IsoSurfaces_i
 ::SetNbSurfaces(CORBA::Long theNb)
 {
-  myIsoSurfacesPL->SetNbParts(theNb);
+
+  struct TEvent: public SALOME_Event
+  {
+    VISU_IsoSurfacesPL* myIsoSurfacesPL;
+    CORBA::Long myNb;
+
+    TEvent(VISU_IsoSurfacesPL* theIsoSurfacesPL, 
+          CORBA::Long theNb):
+      myIsoSurfacesPL(theIsoSurfacesPL), 
+      myNb(theNb)
+    {}
+
+    virtual
+    void
+    Execute()
+    {
+      myIsoSurfacesPL->SetNbParts(myNb);
+    }
+  };
+
+  ProcessVoidEvent(new TEvent(myIsoSurfacesPL, theNb));
 }
 
 //---------------------------------------------------------------
@@ -203,7 +234,6 @@ VISU::IsoSurfaces_i
     SetSubRange(GetSourceMin(), GetSourceMax());
 }
 
-
 //---------------------------------------------------------------
 bool
 VISU::IsoSurfaces_i
index 0daa2b2c003062fc73eb9121cf3d8f11a0e20b78..63dc9347ccf9f8ce7049cffb585c7b30a47d1aad 100644 (file)
@@ -33,15 +33,17 @@ class VISU_IsoSurfacesPL;
 
 namespace VISU
 {
+  //----------------------------------------------------------------------------
   class IsoSurfaces_i : public virtual POA_VISU::IsoSurfaces,
                        public virtual ScalarMap_i
   {
     static int myNbPresent;
-    IsoSurfaces_i();
     IsoSurfaces_i(const IsoSurfaces_i&);
 
   public:
+    //----------------------------------------------------------------------------
     typedef ScalarMap_i TSuperClass;
+    typedef VISU::IsoSurfaces TInterface;
 
     explicit
     IsoSurfaces_i(EPublishInStudyMode thePublishInStudyModep);
@@ -76,8 +78,6 @@ namespace VISU
     CORBA::Double 
     GetSubMax();
 
-    typedef VISU::IsoSurfaces TInterface;
-
     VISU_IsoSurfacesPL* 
     GetSpecificPL() const
     { 
@@ -129,6 +129,10 @@ namespace VISU
     QString
     GenerateName();
 
+    virtual
+    const char* 
+    GetIconName();
+
     virtual
     void
     ToStream(std::ostringstream& theStr);
index b23962687b465f2cc95e44132559440aced97eb6..3d7f8c04bfe709d63ca11231e8334ab9d5cc9e53 100644 (file)
@@ -250,6 +250,15 @@ VISU::Mesh_i
       CORBA::String_var aString = GetID();
       anIOR->SetValue(aString);
     }
+
+    // Set icon
+    SALOMEDS::GenericAttribute_var anAttr;
+    SALOMEDS::AttributePixMap_var  aPixmap;
+    
+    anAttr  = aStudyBuilder->FindOrCreateAttribute(GetSObject(), "AttributePixMap");
+    aPixmap = SALOMEDS::AttributePixMap::_narrow( anAttr );
+    aPixmap->SetPixMap("ICON_TREE_MESH");
+
   }catch(std::exception& exc){
     INFOS("Follow exception was occured :\n"<<exc.what());
     return NULL;
index fd1b2958ce0a30053df6eaf474607c72fa791817..27f3cc2045adb69515186e2ef12ed359a0d1ebd1 100644 (file)
@@ -33,7 +33,7 @@ class VISU_MeshPL;
 
 namespace VISU
 {
-  class Mesh_i : public virtual POA_VISU::Mesh,
+  class VISU_I_EXPORT Mesh_i : public virtual POA_VISU::Mesh,
                 public virtual Prs3d_i
   {
     static int myNbPresent;
index 205f9563a0e4a485de7815625bab7e2ddb2b0f84..0ec0e291e0e76a1e9e7561b86b7f55b0317a3e1c 100644 (file)
@@ -71,6 +71,16 @@ VISU::Plot3D_i
   return myComment.c_str(); 
 }
 
+//---------------------------------------------------------------
+const char*
+VISU::Plot3D_i
+::GetIconName()
+{
+  if (!IsGroupsUsed())
+    return "ICON_TREE_PLOT_3D";
+  else
+    return "ICON_TREE_PLOT_3D_GROUPS";
+}
 
 //---------------------------------------------------------------
 VISU::Plot3D_i
index e87571c14339160b122cccfa2a56b22ad535237b..fb6144955247bc61bef50a20a49dac9f3372bcfd 100644 (file)
@@ -27,15 +27,17 @@ class VISU_Plot3DPL;
 
 namespace VISU 
 {
-  class Plot3D_i : public virtual POA_VISU::Plot3D,
-                   public virtual ScalarMap_i
+  //----------------------------------------------------------------------------
+  class VISU_I_EXPORT Plot3D_i : public virtual POA_VISU::Plot3D,
+                                public virtual ScalarMap_i
   {
     static int myNbPresent;
-    Plot3D_i();
     Plot3D_i(const Plot3D_i&);
 
   public:
+    //----------------------------------------------------------------------------
     typedef ScalarMap_i TSuperClass;
+    typedef VISU::Plot3D TInterface;
 
     explicit
     Plot3D_i(EPublishInStudyMode thePublishInStudyModep);
@@ -104,8 +106,6 @@ namespace VISU
     CORBA::Long
     GetNbOfContours();
 
-    typedef VISU::Plot3D TInterface;
-
     VISU_Plot3DPL* 
     GetSpecificPL() const
     { 
@@ -164,6 +164,10 @@ namespace VISU
     virtual
     QString
     GenerateName();
+
+    virtual
+    const char* 
+    GetIconName();
     
     void
     SetMapScale(double theMapScale);
index 93a5f995353e53806b0bd008febc482f00b4e3a0..e9af3d5d0246ea7b5065b92c1c50e737b4300ef1 100644 (file)
@@ -72,12 +72,33 @@ VISU::Prs3d_i
 }
 
 
+//----------------------------------------------------------------------------
+namespace VISU
+{
+  struct TInvokeSignalEvent: public SALOME_Event
+  {
+    typedef boost::signal0<void> TSignal;
+    const TSignal& mySignal;
+    
+    TInvokeSignalEvent(const TSignal& theSignal):
+      mySignal(theSignal)
+    {}
+    
+    virtual
+    void
+    Execute()
+    {
+      mySignal();
+    }
+  };
+}
+
 //----------------------------------------------------------------------------
 VISU::Prs3d_i
-::~Prs3d_i() 
+::~Prs3d_i()
 {
   if(MYDEBUG) MESSAGE("Prs3d_i::~Prs3d_i - this = "<<this);
-  myRemoveActorsFromRendererSignal();
+  ProcessVoidEvent(new TInvokeSignalEvent(myRemoveActorsFromRendererSignal));
 }
 
 
@@ -304,7 +325,7 @@ VISU::Prs3d_i
 
 
 //----------------------------------------------------------------------------
-SALOMEDS::SObject_var 
+SALOMEDS::SObject_var
 VISU::Prs3d_i
 ::GetSObject()
 {
@@ -320,7 +341,7 @@ VISU::Prs3d_i
 //----------------------------------------------------------------------------
 void
 VISU::Prs3d_i
-::Update() 
+::Update()
 {
   if(GetMTime() < myUpdateTime.GetMTime())
     return;
@@ -341,7 +362,7 @@ VISU::Prs3d_i
 //----------------------------------------------------------------------------
 void
 VISU::Prs3d_i
-::CheckDataSet() 
+::CheckDataSet()
 {
   vtkMapper *aMapper = GetPipeLine()->GetMapper();
   vtkDataSet *aDataSet = aMapper->GetInput();
@@ -359,38 +380,36 @@ VISU::Prs3d_i
 
 
 //----------------------------------------------------------------------------
-struct TRemoveFromStudy: public SALOME_Event
+void
+VISU::Prs3d_i
+::RemoveFromStudy()
 {
-  VISU::Prs3d_i* myRemovable;
-  typedef boost::signal0<void> TRemoveFromStudySignal;
-  const TRemoveFromStudySignal& myRemoveFromStudySignal;
+  struct TEvent: public TInvokeSignalEvent
+  {
+    VISU::Prs3d_i* myRemovable;
   
-  TRemoveFromStudy(VISU::Prs3d_i* theRemovable,
-                  const TRemoveFromStudySignal& theRemoveFromStudySignal):
-    myRemovable(theRemovable),
-    myRemoveFromStudySignal(theRemoveFromStudySignal)
+    TEvent(const TSignal& theSignal,
+          VISU::Prs3d_i* theRemovable):
+      TInvokeSignalEvent(theSignal),
+      myRemovable(theRemovable)
   {}
   
   virtual
   void
   Execute()
   {
-    myRemoveFromStudySignal();
+    TInvokeSignalEvent::Execute();
     myRemovable->Destroy();
   }
 };
 
-//----------------------------------------------------------------------------
-void
-VISU::Prs3d_i
-::RemoveFromStudy() 
-{
-  ProcessVoidEvent(new TRemoveFromStudy(this,myRemoveActorsFromRendererSignal));
+
+  ProcessVoidEvent(new TEvent(myRemoveActorsFromRendererSignal, this));
 }
 
 
 //----------------------------------------------------------------------------
-VISU_PipeLine* 
+VISU_PipeLine*
 VISU::Prs3d_i
 ::GetPipeLine() const
 {
@@ -496,7 +515,7 @@ VISU::Prs3d_i
 //----------------------------------------------------------------------------
 void
 VISU::Prs3d_i
-::RemoveActor(VISU_Actor* theActor) 
+::RemoveActor(VISU_Actor* theActor)
 {
   if(MYDEBUG) MESSAGE("Prs3d_i::RemoveActor - this = "<<this<<"; theActor = "<<theActor<<"; "<<theActor->GetReferenceCount());
   myActorCollection->RemoveItem(theActor);
@@ -508,14 +527,14 @@ VISU::Prs3d_i
 ::RemoveActors()
 {
   if(MYDEBUG) MESSAGE("Prs3d_i::RemoveActors - this = "<<this);
-  myRemoveActorsFromRendererSignal();
+  ProcessVoidEvent(new TInvokeSignalEvent(myRemoveActorsFromRendererSignal));
   myActorCollection->RemoveAllItems();
 }
 
 //----------------------------------------------------------------------------
 void
 VISU::Prs3d_i
-::UpdateActor(VISU_Actor* theActor) 
+::UpdateActor(VISU_Actor* theActor)
 {
   if(MYDEBUG) MESSAGE("Prs3d_i::UpdateActor - this = "<<this<<"; theActor = "<<theActor);
   theActor->SetPosition(myOffset[0],myOffset[1],myOffset[2]);
@@ -529,7 +548,7 @@ VISU::Prs3d_i
   if(MYDEBUG) MESSAGE("Prs3d_i::UpdateActors - this = "<<this);
   Update();
   CheckDataSet();
-  myUpdateActorsSignal();
+  ProcessVoidEvent(new TInvokeSignalEvent(myUpdateActorsSignal));
 }
 
 
@@ -599,8 +618,8 @@ VISU::Prs3d_i
 //----------------------------------------------------------------------------
 void
 VISU::Prs3d_i
-::SetOffset(CORBA::Float theDx, 
-           CORBA::Float theDy, 
+::SetOffset(CORBA::Float theDx,
+           CORBA::Float theDy,
            CORBA::Float theDz)
 {
   myOffset[0] = theDx;
@@ -622,8 +641,8 @@ VISU::Prs3d_i
 //----------------------------------------------------------------------------
 void 
 VISU::Prs3d_i
-::GetOffset(CORBA::Float& theDx, 
-           CORBA::Float& theDy, 
+::GetOffset(CORBA::Float& theDx,
+           CORBA::Float& theDy,
            CORBA::Float& theDz)
 {
   theDx = myOffset[0];
index 22cdf4f893e7e06fa7b30dd49970c901237dd6b6..6ce9a3c9c130bf0956893ab766c6236312d30e59 100644 (file)
@@ -63,7 +63,7 @@ namespace VISU
     - implement basic actor management (CreateActor, UpdateActor, UpdateActors, RemoveActor and RemoveActors);
     - implement common 3D functionality like "clipping planes" and offset.
   */
-  class Prs3d_i :
+  class VISU_I_EXPORT Prs3d_i :
     public virtual POA_VISU::Prs3d,
     public virtual SALOME::GenericObj_i,
     public virtual TActorFactory,
diff --git a/src/VISU_I/VISU_PrsMerger_i.cc b/src/VISU_I/VISU_PrsMerger_i.cc
new file mode 100644 (file)
index 0000000..5672fc8
--- /dev/null
@@ -0,0 +1,580 @@
+//  VISU OBJECT : interactive object for VISU entities implementation
+//
+//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+//
+//  This library is free software; you can redistribute it and/or
+//  modify it under the terms of the GNU Lesser General Public
+//  License as published by the Free Software Foundation; either
+//  version 2.1 of the License.
+//
+//  This library is distributed in the hope that it will be useful,
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+//  Lesser General Public License for more details.
+//
+//  You should have received a copy of the GNU Lesser General Public
+//  License along with this library; if not, write to the Free Software
+//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+//
+//  File   : VISU_PrsMerger_i.cc
+//  Author : Eugeny Nikolaev
+//  Module : VISU
+
+#include "VISU_PrsMerger_i.hh"
+#include "VISU_PrsMergerPL.hxx"
+#include "VISU_MeshPL.hxx"
+#include "VISU_ScalarMapPL.hxx"
+#include "VISU_Convertor.hxx"
+
+#include "VISU_Result_i.hh"
+#include "VISU_ScalarMapAct.h"
+#include "VISU_ScalarMap_i.hh"
+#include "SUIT_ResourceMgr.h"
+
+#include "SUIT_Session.h"
+#include "SALOME_Event.hxx"
+#include "SalomeApp_Study.h"
+#include "SalomeApp_Application.h"
+
+#include <vtkUnstructuredGrid.h>
+#include <vtkCellType.h>
+#include <vtkProperty.h>
+#include <vtkMapper.h>
+
+using namespace VISU;
+using namespace std;
+
+#ifdef _DEBUG_
+static int MYDEBUG = 0;
+#else
+static int MYDEBUG = 0;
+#endif
+
+static int INCMEMORY = 4;
+
+int VISU::PrsMerger_i::IsPossible(Result_i* theResult, const char* theMeshName, VISU::Entity theEntity, 
+                                 const char* theFieldName, int theIteration, int isMemoryCheck)
+{
+  try{
+    float aSize = INCMEMORY*
+      theResult->GetInput()->GetTimeStampSize(theMeshName,(VISU::TEntity)theEntity,theFieldName,theIteration);
+    bool aResult = true;
+    if(isMemoryCheck){
+      aResult = VISU_PipeLine::CheckAvailableMemory(aSize);
+      MESSAGE("PrsMerger_i::IsPossible - CheckAvailableMemory = "<<float(aSize)<<"; aResult = "<<aResult);
+    }
+    return aResult;
+  }catch(std::exception& exc){
+    INFOS("Follow exception was occured :\n"<<exc.what());
+  }catch(...){
+    INFOS("Unknown exception was occured!");
+  }
+  return 0;
+}
+
+int VISU::PrsMerger_i::myNbPresent = 0;
+QString VISU::PrsMerger_i::GenerateName() { return VISU::GenerateName("ScalarMap",myNbPresent++);}
+
+const string VISU::PrsMerger_i::myComment = "PRSMERGER";
+const char* VISU::PrsMerger_i::GetComment() const { return myComment.c_str();}
+
+VISU::PrsMerger_i::
+PrsMerger_i(Result_i* theResult, 
+           bool theAddToStudy) : 
+  PrsObject_i(theResult->GetStudyDocument()), 
+  Prs3d_i(theResult,theAddToStudy),
+  ColoredPrs3d_i(theResult,theAddToStudy),
+  ScalarMap_i(theResult,theAddToStudy),
+  myPrsMergerPL(NULL),
+  myScalarsPL(VISU_ScalarMapPL::New())
+{
+}
+
+VISU::PrsMerger_i::
+PrsMerger_i(Result_i* theResult, 
+           SALOMEDS::SObject_ptr theSObject):
+  PrsObject_i(theResult->GetStudyDocument()), 
+  Prs3d_i(theResult,theSObject),
+  ColoredPrs3d_i(theResult,theSObject),
+  ScalarMap_i(theResult,theSObject),
+  myPrsMergerPL(NULL),
+  myScalarsPL(VISU_ScalarMapPL::New())
+{
+}
+
+VISU::Storable* VISU::PrsMerger_i::Create(const char* theMeshName, VISU::Entity theEntity, 
+                                         const char* theFieldName, int theIteration)
+{
+  if (MYDEBUG) MESSAGE("PrsMerger_i::Create");
+  myIsColored = true;
+  myColor.R = myColor.G = myColor.B = 0.5;
+  VISU::Storable* aRes = TSuperClass::Create(theMeshName,theEntity,theFieldName,theIteration);
+  this->SetScalarMap(theMeshName,theEntity,theFieldName,theIteration);
+
+  return aRes;
+}
+
+VISU::Storable* VISU::PrsMerger_i::Restore(const Storable::TRestoringMap& theMap)
+{
+  if (MYDEBUG) MESSAGE("VISU::PrsMerger_i::Restore");
+  
+  TSuperClass::Restore(theMap);
+  
+  SetScalarMap(myMeshName.c_str(),
+              VISU::Entity(myEntity),
+              myFieldName.c_str(),
+              myIteration);
+  //  myMeshName = VISU::Storable::FindValue(theMap,"myMeshName").latin1();
+  QStringList aStrSubMeshName = QStringList::split("|",VISU::Storable::FindValue(theMap,"myGeomNameList") );
+  QStringList aStrEntity      = QStringList::split("|",VISU::Storable::FindValue(theMap,"myGeomEntityList") );
+  int aC1 = aStrSubMeshName.count();
+  int aC2 = aStrEntity.count();
+  if(aC1 != aC2){
+    // warning situation
+    return this;
+  }
+  if(aC1 == 1)
+    if(aStrSubMeshName[0] == QString("NULL"))
+      return this;
+  
+  for(int i=0;i < aC2;i++){
+    std::string aSubMeshName = aStrSubMeshName[i];
+    int              aEntity = aStrEntity[i].toInt();
+    if(aEntity == -1){
+      // add group
+      AddMeshOnGroup(myMeshName.c_str(),
+                    aSubMeshName.c_str());
+    } else if (aEntity >= 0){
+      // entity and family
+      if(aSubMeshName == ""){
+       // entity
+       SetMeshOnEntity(myMeshName.c_str(),
+                       VISU::Entity(aEntity));
+      } else {
+       // family
+       SetFamilyOnEntity(myMeshName.c_str(),
+                         VISU::Entity(aEntity),
+                         aSubMeshName.c_str());
+      }
+      
+    }
+  }
+  
+  return this;
+}
+
+void
+VISU::PrsMerger_i
+::SetMapScale(double theMapScale)
+{
+  myPrsMergerPL->SetMapScale(theMapScale);
+}
+
+void VISU::PrsMerger_i::ToStream(std::ostringstream& theStr)
+{
+  if (MYDEBUG) MESSAGE("VISU::PrsMerger_i::ToStream:");
+  TSuperClass::ToStream(theStr);
+  
+  QString aStrSubMeshName,aStrEntity;
+  TNameAndEntityList::iterator aIter = myGeomNameEntityList.begin();
+  for(;aIter!=myGeomNameEntityList.end();aIter++){
+    std::string aStr = aIter->first + "|";
+    aStrSubMeshName.append(aStr.c_str());
+    aStrEntity.append(QString::number(aIter->second) + "|");
+  }
+
+  Storable::DataToStream( theStr, "myMeshName", myMeshName.c_str() );
+  Storable::DataToStream( theStr, "myGeomNameList",  aStrSubMeshName.latin1());
+  Storable::DataToStream( theStr, "myGeomEntityList",  aStrEntity.latin1());
+  
+}
+
+void VISU::PrsMerger_i::clearMeshList()
+{
+  VISU_PrsMergerPL::TPipeLines::const_iterator aIter = myMeshPLList.begin();
+  for(int i=0;aIter != myMeshPLList.end();aIter++,i++){
+    ((*aIter).GetPointer())->Delete();
+  }
+  myMeshPLList.clear();
+  myGeomNameEntityList.clear();
+}
+
+void VISU::PrsMerger_i::RemoveAllGeom()
+{
+  clearMeshList();
+  myPrsMergerPL->RemoveAllGeom();
+
+  UpdateIcon();
+}
+
+
+VISU::PrsMerger_i::~PrsMerger_i(){
+  if(MYDEBUG) if (MYDEBUG) MESSAGE("PrsMerger_i::~PrsMerger_i()");
+  this->clearMeshList();
+}
+
+void
+VISU::PrsMerger_i
+::SameAs(const Prs3d_i* theOrigin)
+{
+  if (MYDEBUG) MESSAGE("VISU::PrsMerger_i::SameAs: this="<<this);
+
+  TSuperClass::SameAs(theOrigin);
+
+  if(const PrsMerger_i* aPrs3d = dynamic_cast<const PrsMerger_i*>(theOrigin)){
+    PrsMerger_i* anOrigin = const_cast<PrsMerger_i*>(aPrs3d);
+    if (MYDEBUG) MESSAGE("VISU::PrsMerger_i::SameAs: theOrigin="<<anOrigin);
+    this->SetScalarMap(myMeshName.c_str(),VISU::Entity(myEntity),myFieldName.c_str(),myIteration);
+    string_array_var aGroupNames = anOrigin->getGroupNames();
+    RemoveAllGeom();
+    for(int i=0;i<aGroupNames->length();i++){
+      this->AddMeshOnGroup(myMeshName.c_str(),aGroupNames[i]);
+    }
+    Update();
+  }
+}
+
+void VISU::PrsMerger_i::Update()
+{
+  TSuperClass::Update();
+}
+
+VISU_Actor* 
+VISU::PrsMerger_i
+::CreateActor(const Handle(SALOME_InteractiveObject)& theIO, bool toSupressShrinking) 
+{
+  if (MYDEBUG) MESSAGE("VISU::PrsMerger_i::CreateActor this="<<this);
+  return VISU::ScalarMap_i::CreateActor(theIO, toSupressShrinking);
+}
+
+VISU_Actor* VISU::PrsMerger_i::CreateActor(const Handle(SALOME_InteractiveObject)& theIO) 
+{
+  return CreateActor(theIO, false);
+}
+
+void VISU::PrsMerger_i::UpdateActor(VISU_Actor* theActor) {
+  if (MYDEBUG) MESSAGE("VISU::PrsMerger_i::UpdateActor this="<<this);
+  
+  TSuperClass::UpdateActor(theActor);
+}
+
+void
+VISU::PrsMerger_i::
+SetMeshOnGroup(const char* theMeshName, 
+              const char* theGroupName)
+{
+  if (MYDEBUG) MESSAGE("VISU::PrsMerger_i::SetMeshOnGroup:");
+  VISU::PIDMapper anIDMapper;
+  anIDMapper = myResult->GetInput()->GetMeshOnGroup(theMeshName,theGroupName);
+
+  VISU_MeshPL* aTmpMesh = VISU_MeshPL::New();
+  aTmpMesh->SetIDMapper(anIDMapper);
+
+  if(myPrsMergerPL->SetGeometry(aTmpMesh)){
+    this->clearMeshList();
+    myMeshPLList.push_back(aTmpMesh);
+    TPairStringAndInt aPair((std::string)theGroupName,-1);
+    myGeomNameEntityList.push_back(aPair);
+  }
+  else
+    aTmpMesh->Delete();
+
+  UpdateIcon();
+}
+
+CORBA::Long
+VISU::PrsMerger_i::
+AddMeshOnGroup(const char* theMeshName, 
+              const char* theGroupName)
+{
+  if (MYDEBUG) MESSAGE("VISU::PrsMerger_i::AddMeshOnGroup |"<< theGroupName <<"| this="<<this);
+  CORBA::Long aRetVal = -1;
+  VISU::PIDMapper anIDMapper;
+  anIDMapper = myResult->GetInput()->GetMeshOnGroup(theMeshName,theGroupName);
+  if(!anIDMapper)
+    MESSAGE("Warning: There are no mesh with group=|"<<theGroupName<<"|");
+  if (MYDEBUG) MESSAGE("AddMeshOnGroup nbGeoms defore  ="<<myPrsMergerPL->GetNbGeometry());
+  
+  bool isGroupInList = false;
+  TNameAndEntityList::const_iterator aIter = myGeomNameEntityList.begin();
+  for(;aIter!=myGeomNameEntityList.end();aIter++){
+    if(aIter->first == std::string(theGroupName))
+      {
+       isGroupInList = true;
+       break;
+      }
+  }
+  
+  if(!isGroupInList){
+    VISU_MeshPL* aTmpMesh = VISU_MeshPL::New();
+    aTmpMesh->SetIDMapper(anIDMapper);
+    
+    aRetVal = myPrsMergerPL->AddBackGeometry(aTmpMesh);
+    
+    if(aRetVal >-1 ){
+      myMeshPLList.push_back(aTmpMesh);
+      TPairStringAndInt aPair((std::string)theGroupName,-1);
+      myGeomNameEntityList.push_back(aPair);
+    }
+    else
+      aTmpMesh->Delete();
+    
+    UpdateIcon();
+    
+  }
+  
+  if (MYDEBUG) MESSAGE("AddMeshOnGroup nbGeoms after  ="<<myPrsMergerPL->GetNbGeometry());
+
+  return aRetVal;
+}
+
+void
+VISU::PrsMerger_i::
+SetFamilyOnEntity(const char* theMeshName, 
+                 const VISU::Entity theEntity,
+                 const char* theFamilyName)
+{
+  VISU::PIDMapper anIDMapper;
+  anIDMapper = myResult->GetInput()->GetFamilyOnEntity(theMeshName,(VISU::TEntity)theEntity,theFamilyName);
+
+  
+  VISU_MeshPL* aTmpMesh = VISU_MeshPL::New();
+  aTmpMesh->SetIDMapper(anIDMapper);
+
+  if(myPrsMergerPL->SetGeometry(aTmpMesh)){
+    myMeshPLList.push_back(aTmpMesh);
+    TPairStringAndInt aPair((std::string)theFamilyName,(int)theEntity);
+    myGeomNameEntityList.push_back(aPair);
+  }
+  else
+    aTmpMesh->Delete();
+}
+
+void
+VISU::PrsMerger_i::
+SetMeshOnEntity(const char* theMeshName, 
+               const VISU::Entity theEntity)
+{
+  VISU::PIDMapper anIDMapper;
+  anIDMapper = myResult->GetInput()->GetMeshOnEntity(theMeshName,(VISU::TEntity)theEntity);
+  VISU_MeshPL* aTmpMesh = VISU_MeshPL::New();
+  aTmpMesh->SetIDMapper(anIDMapper);
+
+  if(myPrsMergerPL->SetGeometry(aTmpMesh)){
+    myMeshPLList.push_back(aTmpMesh);
+    TPairStringAndInt aPair("",(int)theEntity);
+    myGeomNameEntityList.push_back(aPair);
+  }
+  else
+    aTmpMesh->Delete();
+}
+
+void
+VISU::PrsMerger_i::
+SetScalarMap(const char* theMeshName, 
+            const VISU::Entity theEntity,
+            const char* theFieldName,
+            CORBA::Long theStampsNum)
+{
+  if (MYDEBUG) MESSAGE("VISU::PrsMerger_i::SetScalarMap this="<<this);
+  VISU::PIDMapper anIDMapper;
+  anIDMapper = myResult->GetInput()->GetTimeStampOnMesh(theMeshName,(VISU::TEntity)theEntity,theFieldName,int(theStampsNum));
+
+  myEntity    = (VISU::TEntity)theEntity;
+  myFieldName = theFieldName;
+  myIteration = theStampsNum;
+
+  myScalarsPL->SetIDMapper(anIDMapper);
+  myPrsMergerPL->SetScalars(myScalarsPL);
+}
+
+void
+VISU::PrsMerger_i::
+SetScalarMap(VISU_PipeLine* thePipeLine)
+{
+  if (MYDEBUG) MESSAGE("VISU::PrsMerger_i::SetScalarMap");
+  VISU_ScalarMapPL* aInputScalars = dynamic_cast<VISU_ScalarMapPL*>(thePipeLine);
+  VISU::PIDMapper anIDMapper = aInputScalars->GetIDMapper();
+  myScalarsPL->SetIDMapper(anIDMapper);
+  if(aInputScalars)
+    myPrsMergerPL->SetScalars(myScalarsPL);
+}
+
+void
+VISU::PrsMerger_i::
+RemoveGeometryByName(const char* theName)
+{
+  // not implemented yet.
+}
+
+void
+VISU::PrsMerger_i::
+RemoveGeometryById(CORBA::Long theId)
+{
+  if(myGeomNameEntityList.size() != myMeshPLList.size()){
+    // warning situation. Some information lost
+    // check myGeomNameEntityList and myMeshPLList
+  }
+    
+  if(theId >=0 && (int)theId < myMeshPLList.size()){
+    VISU_PrsMergerPL::TPipeLines::iterator aIter = myMeshPLList.begin();
+    for(;aIter != myMeshPLList.end();aIter++){
+      if( myMeshPLList[theId] == (*aIter)){
+       myMeshPLList.erase(aIter);
+       break;
+      }
+    }
+  }
+  if(theId >=0 && (int)theId < myGeomNameEntityList.size()){
+    TNameAndEntityList::iterator aIter = myGeomNameEntityList.begin();
+    for(;aIter != myGeomNameEntityList.end();aIter++){
+      if( myGeomNameEntityList[theId] == (*aIter) ){
+       myGeomNameEntityList.erase(aIter);
+       break;
+      }
+    }
+  }
+  myPrsMergerPL->RemoveGeometryById((int)theId);
+}
+
+void 
+VISU::PrsMerger_i
+::DoHook(){
+  if(!myPipeLine) myPipeLine = VISU_PrsMergerPL::New();
+  myPrsMergerPL = dynamic_cast<VISU_PrsMergerPL*>(myPipeLine);
+  myPipeLine->GetMapper()->SetScalarVisibility(IsColored());
+  TSuperClass::DoHook();
+}
+
+const char*
+VISU::PrsMerger_i
+::GetIconName()
+{
+  if (!IsGroupsUsed())
+    return "ICON_TREE_SCALAR_MAP";
+  else
+    return "ICON_TREE_SCALAR_MAP_GROUPS";
+}
+
+void VISU::PrsMerger_i
+::UpdateIcon()
+{
+  if (mySObject->_is_nil())
+    return;
+
+  SALOMEDS::StudyBuilder_var aStudyBuilder = myStudy->NewBuilder();
+
+  // Check if the icon needs to be updated, update if necessary
+  SALOMEDS::GenericAttribute_var anAttr;
+  SALOMEDS::AttributePixMap_var  aPixmap;
+
+  anAttr  = aStudyBuilder->FindOrCreateAttribute( mySObject, "AttributePixMap" );
+  aPixmap = SALOMEDS::AttributePixMap::_narrow( anAttr );
+
+  if ( aPixmap->GetPixMap() != (std::string)GetIconName() )
+    aPixmap->SetPixMap(GetIconName());
+
+  // Update Object Browser
+  SUIT_Session* aSession = SUIT_Session::session();
+  QPtrList<SUIT_Application> anApplications = aSession->applications();
+  QPtrListIterator<SUIT_Application> anIter (anApplications);
+  while (SUIT_Application* aSApp = anIter.current()) {
+    SalomeApp_Application* anApp = dynamic_cast<SalomeApp_Application*>(aSApp);
+    if (!anApp) return;
+    SalomeApp_Study* aStudy = dynamic_cast<SalomeApp_Study*>(anApp->activeStudy());
+    if (!aStudy) return;
+    if (_PTR(Study) aCStudy = aStudy->studyDS()) {
+      if (myStudy->StudyId() == aCStudy->StudyId()) {
+       anApp->updateObjectBrowser();
+       break;
+      }
+    }
+    ++anIter;
+  }
+}
+
+CORBA::Long
+VISU::PrsMerger_i
+::GetNumberOfGeom()
+{
+  if(myPrsMergerPL)
+    return myPrsMergerPL->GetNbGeometry();
+  else
+    return 0;
+}
+
+string_array*
+VISU::PrsMerger_i
+::getGroupNames()
+{
+  string_array_var myseq = new string_array;
+  if(myPrsMergerPL){
+    vector<string> aGroupNames;
+    TNameAndEntityList::const_iterator aIter = myGeomNameEntityList.begin();
+    for(;aIter!=myGeomNameEntityList.end();aIter++){
+      TPairStringAndInt aPair = (*aIter);
+      if(aPair.second == -1)
+       aGroupNames.push_back(aPair.first);
+    }
+    myseq->length(aGroupNames.size());
+    vector<string>::const_iterator aNamesIter = aGroupNames.begin();
+    for(int i=0;aNamesIter!=aGroupNames.end();i++,aNamesIter++){
+      myseq[i] = CORBA::string_dup((*aNamesIter).c_str());
+    }
+  }
+  return myseq._retn();
+}
+
+bool
+VISU::PrsMerger_i
+::CheckGroup(const char* theGroupName)
+{
+  if (MYDEBUG) MESSAGE("PrsMerger_i::CheckGroup :|"<<theGroupName<<"|");
+  string aMeshName  = myMeshName;
+  string aGroupName = theGroupName;
+
+  VISU::PIDMapper anIDMapper;
+  anIDMapper = myResult->GetInput()->GetMeshOnGroup(aMeshName,theGroupName);
+  if (MYDEBUG) MESSAGE("anIDMapper="<<anIDMapper);
+  if(!anIDMapper) return false;
+  
+  bool aAllPoints = true;
+  int aNbCellsInGeom     = anIDMapper->GetVTKOutput()->GetNumberOfCells();
+  if(aNbCellsInGeom>0){
+    int aVtkCellType = anIDMapper->GetVTKOutput()->GetCellType(0);
+    if (MYDEBUG) MESSAGE("CellType="<<aVtkCellType);
+    switch(myEntity){
+    case NODE_ENTITY:
+      // Warning. May be unstable. Created for NPAL15200
+      aAllPoints = false;
+      break;
+    case CELL_ENTITY:
+      if(aVtkCellType != VTK_LINE &&
+        aVtkCellType != VTK_POLY_LINE && 
+        aVtkCellType != VTK_VERTEX &&
+        aVtkCellType != VTK_PIXEL)
+       aAllPoints = false;
+      break;
+    case EDGE_ENTITY:
+      if(aVtkCellType == VTK_LINE ||
+        aVtkCellType == VTK_POLY_LINE)
+       aAllPoints = false;
+      break;
+    case FACE_ENTITY:
+      if(aVtkCellType == VTK_TRIANGLE ||
+        aVtkCellType == VTK_TRIANGLE_STRIP ||
+        aVtkCellType == VTK_POLYGON ||
+        aVtkCellType == VTK_QUAD)
+       aAllPoints = false;
+      break;
+    }
+  }
+
+  if (MYDEBUG) MESSAGE("return="<<!aAllPoints);
+  return (!aAllPoints);
+}
+
diff --git a/src/VISU_I/VISU_PrsMerger_i.hh b/src/VISU_I/VISU_PrsMerger_i.hh
new file mode 100644 (file)
index 0000000..b70d7ff
--- /dev/null
@@ -0,0 +1,221 @@
+//  VISU OBJECT : interactive object for VISU entities implementation
+//
+//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+//
+//  This library is free software; you can redistribute it and/or
+//  modify it under the terms of the GNU Lesser General Public
+//  License as published by the Free Software Foundation; either
+//  version 2.1 of the License.
+//
+//  This library is distributed in the hope that it will be useful,
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+//  Lesser General Public License for more details.
+//
+//  You should have received a copy of the GNU Lesser General Public
+//  License along with this library; if not, write to the Free Software
+//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+//
+//  File   : VISU_PrsMerger_i.hh
+//  Author : Eugeny Nikolaev
+//  Module : VISU
+
+#ifndef VISU_PrsMerger_i_HeaderFile
+#define VISU_PrsMerger_i_HeaderFile
+
+#include "VISU_I.hxx"
+
+#include "VISU_ScalarMap_i.hh"
+#include "VISU_PrsMergerPL.hxx"
+
+#include "VISUConfig.hh"
+
+class VISU_MeshPL;
+  
+namespace VISU{
+  
+  class VISU_I_EXPORT PrsMerger_i : public virtual POA_VISU::ScalarMap,
+                     public virtual ScalarMap_i
+  {
+
+    /*!
+     * eON_GROUP - mesh created on group
+     * eFAMILY_ON_ENTITY - mesh created on family on entity
+     * eON_ENTITY - mesh created on entity (default value)
+     */
+    enum EMeshGeomPlace {eON_GROUP=1,eFAMILY_ON_ENTITY=2,eON_ENTITY=3};
+    
+    static int myNbPresent;   
+    
+  public:
+    PrsMerger_i();
+    PrsMerger_i(const PrsMerger_i&);
+    
+    typedef ScalarMap_i TSuperClass;
+    typedef std::pair<std::string,int> TPairStringAndInt;
+    typedef std::vector<TPairStringAndInt> TNameAndEntityList;
+    
+    explicit
+    PrsMerger_i(Result_i* theResult,
+               bool theAddToStudy);
+    explicit
+    PrsMerger_i(Result_i* theResult,
+               SALOMEDS::SObject_ptr theSObject);
+    virtual void SameAs(const Prs3d_i* theOrigin);
+    virtual ~PrsMerger_i();
+
+    virtual VISU::VISUType GetType() { return VISU::TPRSMERGER;};
+
+    virtual CORBA::Boolean IsColored() { return myIsColored; }
+    virtual void ShowColored(CORBA::Boolean theColored) { myIsColored = theColored; }
+
+    virtual SALOMEDS::Color GetColor() { return myColor;}
+    virtual void SetColor(const SALOMEDS::Color& theColor) { myColor = theColor;}
+
+    VISU_PrsMergerPL* GetPrsMergerPL(){ return myPrsMergerPL;}
+
+    virtual void Update();
+    
+  protected:
+    virtual void DoHook();
+    virtual const char* GetIconName();
+    void UpdateIcon();
+    void clearMeshList();
+    
+    VISU_PrsMergerPL* myPrsMergerPL;
+    VISU_PrsMergerPL::TPipeLines  myMeshPLList;
+    VISU_ScalarMapPL* myScalarsPL;
+    
+    SALOMEDS::Color myColor;
+    bool myIsColored;
+
+    /*! Warning! This variable must be maked as list, if
+     * you we will need in different mesh entities (ENTITY,FAMILY,GROUP) as geometries.
+     */
+    TNameAndEntityList myGeomNameEntityList;
+    
+  public:
+    static int IsPossible(Result_i* theResult, const char* theMeshName, VISU::Entity theEntity,
+                         const char* theFieldName, int theIteration, int isMemoryCheck = true);
+    
+    virtual Storable* Create(const char* theMeshName, VISU::Entity theEntity,
+                            const char* theFieldName, int theIteration);
+
+    virtual void ToStream(std::ostringstream& theStr);
+
+    virtual Storable* Restore(const Storable::TRestoringMap& theMap);
+
+    virtual
+    void
+    SetMapScale(double theMapScale = 1.0);
+    
+    static const std::string myComment;
+    virtual const char* GetComment() const;
+    virtual QString GenerateName();
+
+    virtual 
+    VISU_Actor* 
+    CreateActor(const Handle(SALOME_InteractiveObject)& theIO = NULL);
+
+    virtual 
+    VISU_Actor* 
+    CreateActor(const Handle(SALOME_InteractiveObject)& theIO, bool toSupressShrinking);
+
+    virtual void UpdateActor(VISU_Actor* theActor) ;
+
+    /*!
+     * Sets geometry of mesh as group
+     */
+    virtual void SetMeshOnGroup(const char* theMeshName, 
+                               const char* theGroupName);
+
+    /*!
+     * Add geometry of mesh as group
+     * \retval the id of added group.
+     */
+    virtual CORBA::Long AddMeshOnGroup(const char* theMeshName, 
+                                      const char* theGroupName);
+    
+    /*!
+     * Remove geometry from list by Name
+     */
+    virtual void RemoveGeometryByName(const char* theName);
+
+    /*!
+     * Removes geometry from list by id
+     * Note: theId number in [0,...]
+     *
+     * Waring: if you delete not 0 element, others indexes will be increased.
+     * Example:
+     * 0,1,2,3,4 - indexes
+     * remove 2 index
+     * new sequence:
+     * 0,1,2,3,4 , where are 0 = 0, 1 = 1, 3 = 2, 4 = 3.
+     */
+    virtual void RemoveGeometryById(CORBA::Long theId);
+    
+    
+    /*!
+     * Sets geometry of mesh as family on entity
+     */
+    virtual void SetFamilyOnEntity(const char* theMeshName, 
+                                  const VISU::Entity theEntity,
+                                  const char* theFamilyName);
+
+    /*!
+     * Sets geometry of mesh as mesh on entity
+     */
+    virtual void SetMeshOnEntity(const char* theMeshName, 
+                                const VISU::Entity theEntity);
+
+    
+    /*!
+     * Sets scalars as scalar map
+     */
+    virtual void SetScalarMap(const char* theMeshName, 
+                             VISU::Entity theEntity,
+                             const char* theFieldName,
+                             CORBA::Long theStampsNum);
+
+    /*!
+     * Get number of geometries.
+     */
+    CORBA::Long GetNumberOfGeom();
+    
+
+    /*!
+     * Get group names.
+     */
+    string_array* getGroupNames();
+
+    /*!
+     * Sets scalars as scalar map
+     */
+    void SetScalarMap(VISU_PipeLine* thePipeLine);
+
+    /*!
+     * Removes all geometries.
+     */
+    virtual void RemoveAllGeom();
+
+
+    /*! Warning!
+     * see \a myGeomNameEntityList
+     */
+    virtual CORBA::Long GetMeshGeometryPlace(CORBA::Long theId){return CORBA::Long(1);};// must bee filled
+
+    /*!
+     * Return true, if group is good, esle false.
+     * May be used, if SetScalarMap(...) olready .
+     */
+    bool CheckGroup(const char* theGroupName);
+    
+  };
+  
+}
+
+#endif
index 86f12f432d85538987d70e0c2d378fc885fa226d..766130ecec67855411f30509c0be2036a6fb9443 100644 (file)
@@ -52,6 +52,7 @@
 #include <qfileinfo.h>
 #include <qsemaphore.h>
 #include <qthread.h>
+#include <qdir.h>
 
 // VTK Includes
 #include <vtkCell.h>
@@ -64,7 +65,7 @@ using namespace VISU;
 using namespace std;
 
 #ifdef _DEBUG_
-static int MYDEBUG = 0;
+static int MYDEBUG = 1;
 static int MYTIMEDEBUG = 0;
 #else
 static int MYDEBUG = 0;
@@ -261,8 +262,8 @@ namespace VISU
       aName->SetValue(theName);
     }
     if (theComment != "") {
-      anAttr = aStudyBuilder->FindOrCreateAttribute(aNewObj, "AttributeComment");
-      _PTR(AttributeComment) aCmnt (anAttr);
+      anAttr = aStudyBuilder->FindOrCreateAttribute(aNewObj, "AttributeString");
+      _PTR(AttributeString) aCmnt (anAttr);
       aCmnt->SetValue(theComment);
     }
     return aNewObj->GetID();
@@ -295,8 +296,8 @@ namespace VISU
       aName->SetValue(theName);
     }
     if (theComment != "") {
-      anAttr = aStudyBuilder->FindOrCreateAttribute(aSObject, "AttributeComment");
-      _PTR(AttributeComment) aCmnt (anAttr);
+      anAttr = aStudyBuilder->FindOrCreateAttribute(aSObject, "AttributeString");
+      _PTR(AttributeString) aCmnt (anAttr);
       aCmnt->SetValue(theComment);
     }
   }
@@ -1053,11 +1054,22 @@ VISU::Result_i
     theIsAtOnce = true;
 
   if(Build(SALOMEDS::SObject::_nil(),theIsAtOnce)){
+    
+    // Set icon
+    SALOMEDS::StudyBuilder_var aStudyBuilder = myStudyDocument->NewBuilder();
+
+    SALOMEDS::GenericAttribute_var anAttr;
+    SALOMEDS::AttributePixMap_var  aPixmap;
+    
+    anAttr  = aStudyBuilder->FindOrCreateAttribute( mySObject, "AttributePixMap" );
+    aPixmap = SALOMEDS::AttributePixMap::_narrow( anAttr );
+    aPixmap ->SetPixMap("ICON_TREE_RESULT");
+
     if(theIsBuildAll)
       return BuildAll();
     return true;
   }
-
+  
   return false;
 }
 
@@ -1180,8 +1192,11 @@ Create(const char* theFileName)
     if(mySourceId == eRestoredFile){
       std::string aTmpDir(SALOMEDS_Tool::GetTmpDir());
       static QString aCommand;
-      aCommand.sprintf("cp %s %s",myFileInfo.absFilePath().latin1(),aTmpDir.c_str());
-      if(system(aCommand) == -1){
+      aCommand.sprintf(" %s %s", myFileInfo.absFilePath().latin1(), aTmpDir.c_str() );
+      aCommand = QDir::convertSeparators( aCommand );
+      aCommand.prepend( COPY_COMMAND );
+
+      if(system(aCommand.latin1()) == -1){
        MESSAGE("Create - Can't execute the command :"<<aCommand);
        return NULL;
       }
@@ -1295,6 +1310,7 @@ Restore(SALOMEDS::SObject_ptr theSObject,
       SALOMEDS::StudyBuilder_var aStudyBuilder = myStudyDocument->NewBuilder();
       SALOMEDS::Driver_var aDriver = SALOMEDS::Driver::_narrow(aEngComp);
       aStudyBuilder->LoadWith(aCompRefSObj, aDriver);
+      /*
       if (strcmp(aDataType, "MED") == 0){
         // create field or MED converter
         CORBA::Object_var aMedObject = VISU::SObjectToObject(aTargetRefSObj);
@@ -1306,6 +1322,24 @@ Restore(SALOMEDS::SObject_ptr theSObject,
        myInput->Build();
       }else
        throw std::runtime_error("GetInput - There is no convertor for the aDataType !!!");
+      //*/
+
+      // create field or MED converter
+      CORBA::Object_var aMedObject = VISU::SObjectToObject(aTargetRefSObj);
+      SALOME_MED::FIELD_var aField = SALOME_MED::FIELD::_narrow(aMedObject);
+      if (!CORBA::is_nil(aField)) {
+        // create field converter
+       myInput = CreateMEDFieldConvertor(aField);
+       myInput->Build();
+      }
+      else if (strcmp(aDataType, "MED") == 0) {
+        // create MED converter
+       myInput = CreateMEDConvertor(aTargetRefSObj);
+       myInput->Build();
+      }
+      else {
+       throw std::runtime_error("GetInput - There is no convertor for the aDataType !!!");
+      }
     } else {
       myFileInfo.setFile(thePrefix.c_str());
 
@@ -1329,8 +1363,11 @@ Restore(SALOMEDS::SObject_ptr theSObject,
 
        if (IsMultifile()) { // set this file as new - temporary
          static QString aCommand;
-         aCommand.sprintf("mv %s %s%s",aHDFFileName, aResultPath, myFileInfo.baseName().latin1());
-         if (system(aCommand) == -1) {
+         aCommand.sprintf(" %s %s%s",aHDFFileName, aResultPath, myFileInfo.baseName().latin1());
+    aCommand = QDir::convertSeparators( aCommand );
+    aCommand.prepend( MOVE_COMMAND );
+
+         if (system(aCommand.latin1()) == -1) {
            if(MYDEBUG) MESSAGE("VISU::Result_i::Restore - Can't execute the command :" << aCommand);
            return NULL;
          } else {
@@ -1339,8 +1376,11 @@ Restore(SALOMEDS::SObject_ptr theSObject,
          myFileInfo.setFile(QString(aResultPath) + QString(myFileInfo.baseName().latin1()));
        } else { // change current temporary file to the new: with hdf-format
          static QString aCommand;
-         aCommand.sprintf("mv %s %s\0",aHDFFileName, myFileInfo.filePath().latin1());
-         if (system(aCommand.latin1()) == -1) {
+         aCommand.sprintf(" %s %s\0",aHDFFileName, myFileInfo.filePath().latin1());
+    aCommand = QDir::convertSeparators( aCommand );
+    aCommand.prepend( MOVE_COMMAND );
+
+    if (system(aCommand.latin1()) == -1) {
            if(MYDEBUG) MESSAGE("VISU::Result_i::Restore - Can't execute the command :" << aCommand);
            return NULL;
          } else {
@@ -1379,9 +1419,9 @@ Restore(SALOMEDS::SObject_ptr theSObject,
                       GetComment(), VISU::TRESULT, myFileInfo.filePath().latin1(),
                       myInitFileName.c_str()); // Restoring of Python dump
       SALOMEDS::GenericAttribute_var anAttr;
-      if (!theSObject->FindAttribute(anAttr, "AttributeComment"))
-       throw std::runtime_error("Build - There is no AttributeComment for the SObject !!!");
-      SALOMEDS::AttributeComment_var aCmnt = SALOMEDS::AttributeComment::_narrow(anAttr);
+      if (!theSObject->FindAttribute(anAttr, "AttributeString"))
+       throw std::runtime_error("Build - There is no AttributeString for the SObject !!!");
+      SALOMEDS::AttributeString_var aCmnt = SALOMEDS::AttributeString::_narrow(anAttr);
       aCmnt->SetValue(aComment.latin1());
     }
     bool anIsBuildAll = VISU::GetResourceMgr()->booleanValue("VISU", "full_med_loading", false);
@@ -1561,10 +1601,20 @@ VISU::Result_i
   MESSAGE("Result_i::~Result_i() - this = "<<this);
   if (mySourceId == eRestoredFile) {
     static QString aCommand;
+#ifndef WNT
     aCommand.sprintf("rm %s",myFileInfo.filePath().latin1());
+#else
+    aCommand.sprintf("del /F %s",myFileInfo.filePath().latin1());
+#endif
     int res = system(aCommand);
     MESSAGE("Result_i::~Result_i - system("<<aCommand<<") = "<<res);
+
+#ifndef WNT
     aCommand.sprintf("rmdir --ignore-fail-on-non-empty %s",myFileInfo.dirPath().latin1());
+#else
+    aCommand.sprintf("del /F %s",myFileInfo.dirPath().latin1());
+#endif
+
     res = system(aCommand);
     MESSAGE("Result_i::~Result_i - system("<<aCommand<<") = "<<res);
   }
@@ -1600,133 +1650,227 @@ Result_i
   {
     // check presence of theMeshName
     const VISU::TMeshMap& meshMap = myInput->GetMeshMap();
-    if ( meshMap.find( theMeshName ) == meshMap.end() ) {
+    PMesh theMesh;
+    VISU::TMeshMap::const_iterator aIter = meshMap.find( theMeshName );
+    if ( aIter == meshMap.end() ) {
       MESSAGE("No mesh named " << theMeshName );
       return components;
-    }
+    } else
+      theMesh = aIter->second;
 
     VISU::PUnstructuredGridIDMapper anIDMapper = myInput->GetMeshOnEntity(theMeshName,
                                                                          CELL_ENTITY);
     vtkUnstructuredGrid* aMesh = anIDMapper->GetUnstructuredGridOutput();
-
+    
     if ( !aMesh || aMesh->GetNumberOfCells() == 0 ) {
       MESSAGE( "No cells in the mesh: " << theMeshName );
       return components;
     }
-
-    // define axis directions and min cell size in each direction
-    const int nbAxes = 3;
-    int iAx;
-    gp_Vec axDirs[ nbAxes ];
-    float minSize[3] = { FLT_MAX, FLT_MAX, FLT_MAX };
-    bool axesComputed = false;
-    for ( vtkIdType iCell = 0; iCell < aMesh->GetNumberOfCells(); ++iCell )
-    {
-      vtkCell* cell = aMesh->GetCell( iCell );
-      int nbPnt = cell->GetNumberOfPoints();
-      if ( nbPnt != 8 )
-        continue;
-      vtkPoints * points = cell->GetPoints();
-      vtkFloatingPointType* coords[ 4 ];
-      coords[0] = points->GetPoint( 0 );
-      coords[1] = points->GetPoint( 1 );
-      coords[2] = points->GetPoint( 3 );
-      coords[3] = points->GetPoint( 4 );
-      gp_Pnt p0( coords[0][0], coords[0][1], coords[0][2] );
-      for ( iAx = 0; iAx < nbAxes; ++iAx )
-      {
-        vtkFloatingPointType* coo = coords[ iAx + 1 ];
-        gp_Pnt p( coo[0], coo[1], coo[2] );
-        // min size
-        vtkFloatingPointType size = p0.SquareDistance( p );
-        if ( size > FLT_MIN && size < minSize[ iAx ] )
-          minSize[ iAx ] = size;
-        // axis direction
-        if ( !axesComputed ) {
-          gp_Vec dir( p0, p );
-          if ( dir.SquareMagnitude() <= DBL_MIN )
-            break;
-          axDirs[ iAx ] = dir;
-        }
+      
+    if(!theMesh->IsStructured() || theMesh->myType){
+      // define axis directions and min cell size in each direction
+      const int nbAxes = 3;
+      int iAx;
+      gp_Vec axDirs[ nbAxes ];
+      float minSize[3] = { FLT_MAX, FLT_MAX, FLT_MAX };
+      bool axesComputed = false;
+      for ( vtkIdType iCell = 0; iCell < aMesh->GetNumberOfCells(); ++iCell )
+       {
+         vtkCell* cell = aMesh->GetCell( iCell );
+         int nbPnt = cell->GetNumberOfPoints();
+         if ( nbPnt != 8 )
+           continue;
+         vtkPoints * points = cell->GetPoints();
+         vtkFloatingPointType* coords[ 4 ];
+         coords[0] = points->GetPoint( 0 );
+         coords[1] = points->GetPoint( 1 );
+         coords[2] = points->GetPoint( 3 );
+         coords[3] = points->GetPoint( 4 );
+         gp_Pnt p0( coords[0][0], coords[0][1], coords[0][2] );
+         for ( iAx = 0; iAx < nbAxes; ++iAx )
+           {
+             vtkFloatingPointType* coo = coords[ iAx + 1 ];
+             gp_Pnt p( coo[0], coo[1], coo[2] );
+             // min size
+             vtkFloatingPointType size = p0.SquareDistance( p );
+             if ( size > FLT_MIN && size < minSize[ iAx ] )
+               minSize[ iAx ] = size;
+             // axis direction
+             if ( !axesComputed ) {
+               gp_Vec dir( p0, p );
+               if ( dir.SquareMagnitude() <= DBL_MIN )
+                 break;
+               axDirs[ iAx ] = dir;
+             }
+           }
+         if ( iAx == nbAxes )
+           axesComputed = true;
+       }
+      if ( !axesComputed ) {
+       MESSAGE("No good hexahedrons in the mesh: " << theMeshName );
+       return components;
       }
-      if ( iAx == nbAxes )
-        axesComputed = true;
-    }
-    if ( !axesComputed ) {
-      MESSAGE("No good hexahedrons in the mesh: " << theMeshName );
-      return components;
-    }
-
-    // compute axes dirs
-    gInfo = & myMeshName2GridInfoMap[ theMeshName ];
-    for ( iAx = 0; iAx < nbAxes; ++iAx )
-    {
-      int iPrev = ( iAx == 0 ) ? 2 : iAx - 1;
-      int iNext = ( iAx == 2 ) ? 0 : iAx + 1;
-      gInfo->myAxis[ iAx ] = axDirs[ iPrev ] ^ axDirs[ iNext ];
-    }
-
-    // get and sort intermediate component values - projections of nodes
-    // on axis direction; define bnd box
-    set< vtkFloatingPointType > comps[ 3 ];
-    Bnd_Box box;
-    vtkPoints * points = aMesh->GetPoints();
-    vtkIdType iP, nbP = aMesh->GetNumberOfPoints();
-    for ( iP = 0; iP < nbP; ++iP )
-    {
-      vtkFloatingPointType* coo = points->GetPoint( iP );
-      gp_Pnt p( coo[0], coo[1], coo[2] );
-      box.Add( p );
+      
+      // compute axes dirs
+      gInfo = & myMeshName2GridInfoMap[ theMeshName ];
+      for ( iAx = 0; iAx < nbAxes; ++iAx )
+       {
+         int iPrev = ( iAx == 0 ) ? 2 : iAx - 1;
+         int iNext = ( iAx == 2 ) ? 0 : iAx + 1;
+         gInfo->myAxis[ iAx ] = axDirs[ iPrev ] ^ axDirs[ iNext ];
+       }
+      
+      // get and sort intermediate component values - projections of nodes
+      // on axis direction; define bnd box
+      set< vtkFloatingPointType > comps[ 3 ];
+      Bnd_Box box;
+      vtkPoints * points = aMesh->GetPoints();
+      vtkIdType iP, nbP = aMesh->GetNumberOfPoints();
+      for ( iP = 0; iP < nbP; ++iP )
+       {
+         vtkFloatingPointType* coo = points->GetPoint( iP );
+         gp_Pnt p( coo[0], coo[1], coo[2] );
+         box.Add( p );
+         for ( iAx = 0; iAx < nbAxes; ++iAx ) {
+           const gp_Dir& dir = gInfo->myAxis[ iAx ];
+           vtkFloatingPointType dot = dir.XYZ() * p.XYZ();
+           comps[ iAx ].insert( dot );
+         }
+       }
+      
+      // find a range of projections of bnd box corners on each axis
+      vtkFloatingPointType range[3], firstValue[3];
+      double x[2],y[2],z[2];
+      box.Get(x[0],y[0],z[0],x[1],y[1],z[1]);
       for ( iAx = 0; iAx < nbAxes; ++iAx ) {
-        const gp_Dir& dir = gInfo->myAxis[ iAx ];
-        vtkFloatingPointType dot = dir.XYZ() * p.XYZ();
-        comps[ iAx ].insert( dot );
+       set< vtkFloatingPointType > bndComps;
+       const gp_Dir& dir = gInfo->myAxis[ iAx ];
+       for ( int iX = 0; iX < 2; ++iX ) {
+         for ( int iY = 0; iY < 2; ++iY ) {
+           for ( int iZ = 0; iZ < 2; ++iZ ) {
+             gp_Pnt p( x[ iX ], y[ iY ], z[ iZ ] );
+             vtkFloatingPointType dot = dir.XYZ() * p.XYZ();
+             bndComps.insert( dot );
+           }
+         }
+       }
+       firstValue[ iAx ] = *bndComps.begin();
+       range[ iAx ] = *bndComps.rbegin() - *bndComps.begin();
       }
+      
+      // compute component values
+      for ( iAx = 0; iAx < nbAxes; ++iAx )
+       {
+         list< vtkFloatingPointType > values;
+         int nbVals = 0;
+         set< vtkFloatingPointType >& comp = comps[ iAx ];
+         set< vtkFloatingPointType >::iterator val = comp.begin();
+         vtkFloatingPointType bnd = -1., rng = range[ iAx ], first = firstValue[ iAx ];
+         vtkFloatingPointType tol = 0.1 * sqrt( minSize[ iAx ]) / rng;
+         for ( ; val != comp.end(); ++val ) {
+           vtkFloatingPointType value = ( *val - first ) / rng;
+           if ( value > bnd ) {
+             values.push_back( value );
+             bnd = value + tol;
+             nbVals++;
+           }
+         }
+         // store values in gInfo
+         vector< vtkFloatingPointType >& myComp = gInfo->myComponets[ iAx ];
+         myComp.resize( nbVals );
+         list< vtkFloatingPointType >::iterator v = values.begin();
+         for ( int i = 0; v != values.end(); ++v ){
+           myComp[ i++ ] = *v;
+         }
+       }
     }
-
-    // find a range of projections of bnd box corners on each axis
-    vtkFloatingPointType range[3], firstValue[3];
-    double x[2],y[2],z[2];
-    box.Get(x[0],y[0],z[0],x[1],y[1],z[1]);
-    for ( iAx = 0; iAx < nbAxes; ++iAx ) {
-      set< vtkFloatingPointType > bndComps;
-      const gp_Dir& dir = gInfo->myAxis[ iAx ];
-      for ( int iX = 0; iX < 2; ++iX ) {
-        for ( int iY = 0; iY < 2; ++iY ) {
-          for ( int iZ = 0; iZ < 2; ++iZ ) {
-            gp_Pnt p( x[ iX ], y[ iY ], z[ iZ ] );
-            vtkFloatingPointType dot = dir.XYZ() * p.XYZ();
-            bndComps.insert( dot );
-          }
-        }
+    else {
+      //ENK: 23.11.2006 - PAL13176 - EDF228 VISU : Enhancement of structured datas processing
+      TIdTypeVector aIndexes = theMesh->GetStructure();
+
+      gInfo = & myMeshName2GridInfoMap[ theMeshName ];
+      switch(aIndexes.size()){
+      case 3:
+       {
+         gp_Dir aDir(0.0,0.0,1.0);
+         gInfo->myAxis[ 2 ] = aDir;
+       }
+      case 2:
+       {
+         gp_Dir aDir(0.0,1.0,0.0);
+         gInfo->myAxis[ 1 ] = aDir;
+       }
+      case 1:
+       {
+         gp_Dir aDir(1.0,0.0,0.0);
+         gInfo->myAxis[ 0 ] = aDir;
+       }
       }
-      firstValue[ iAx ] = *bndComps.begin();
-      range[ iAx ] = *bndComps.rbegin() - *bndComps.begin();
-    }
-
-    // compute component values
-    for ( iAx = 0; iAx < nbAxes; ++iAx )
-    {
-      list< vtkFloatingPointType > values;
-      int nbVals = 0;
-      set< vtkFloatingPointType >& comp = comps[ iAx ];
-      set< vtkFloatingPointType >::iterator val = comp.begin();
-      vtkFloatingPointType bnd = -1., rng = range[ iAx ], first = firstValue[ iAx ];
-      vtkFloatingPointType tol = 0.1 * sqrt( minSize[ iAx ]) / rng;
-      for ( ; val != comp.end(); ++val ) {
-        vtkFloatingPointType value = ( *val - first ) / rng;
-        if ( value > bnd ) {
-          values.push_back( value );
-          bnd = value + tol;
-          nbVals++;
-        }
+      
+      int nbPoints = aMesh->GetNumberOfPoints();
+      vtkFloatingPointType* coords[ 2 ];
+      if(nbPoints>1){
+       coords[0] = aMesh->GetPoints()->GetPoint(0);
+       coords[1] = aMesh->GetPoints()->GetPoint(nbPoints-1);
       }
-      // store values in gInfo
-      vector< vtkFloatingPointType >& myComp = gInfo->myComponets[ iAx ];
-      myComp.resize( nbVals );
-      list< vtkFloatingPointType >::iterator v = values.begin();
-      for ( int i = 0; v != values.end(); ++v )
-        myComp[ i++ ] = *v;
+      
+      vector<vtkFloatingPointType> PointsCoords[3];
+      TIdTypeVector aCoordIJK;
+      switch(aIndexes.size()){
+      case 3:
+       {
+         vtkIdType nbZ = aIndexes[2];
+         aCoordIJK.clear();
+         aCoordIJK.resize(aIndexes.size(),1);
+         for(int i=0;i<nbZ;i++){
+           aCoordIJK[2]=i+1;
+           vtkIdType aObjID = anIDMapper->GetObjectIDByIndexes(aCoordIJK);
+           vtkIdType aVTKID = anIDMapper->GetNodeVTKID(aObjID);
+           vtkFloatingPointType* aPCoord = aMesh->GetPoints()->GetPoint(aVTKID);
+           PointsCoords[2].push_back(aPCoord[2]);
+         }
+       }
+      case 2:
+       {
+         vtkIdType nbJ = aIndexes[1];
+         aCoordIJK.clear();
+         aCoordIJK.resize(aIndexes.size(),1);
+         for(int i=0;i<nbJ;i++){
+           aCoordIJK[1]=i+1;
+           vtkIdType aObjID = anIDMapper->GetObjectIDByIndexes(aCoordIJK);
+           vtkIdType aVTKID = anIDMapper->GetNodeVTKID(aObjID);
+           vtkFloatingPointType* aPCoord = aMesh->GetPoints()->GetPoint(aVTKID);
+           PointsCoords[1].push_back(aPCoord[1]);
+         }
+       }
+      case 1:
+       {
+         vtkIdType nbI = aIndexes[0];
+         aCoordIJK.clear();
+         aCoordIJK.resize(aIndexes.size(),1);
+         for(int i=0;i<nbI;i++){
+           aCoordIJK[0]=i+1;
+           vtkIdType aObjID = anIDMapper->GetObjectIDByIndexes(aCoordIJK);
+           vtkIdType aVTKID = anIDMapper->GetNodeVTKID(aObjID);
+           vtkFloatingPointType* aPCoord = aMesh->GetPoints()->GetPoint(aVTKID);
+           PointsCoords[0].push_back(aPCoord[0]);
+         }
+       }
+      }
+      for(int i=0;i<aIndexes.size();i++){
+       vector< vtkFloatingPointType >& myComp = gInfo->myComponets[ i ];
+       int aSize = PointsCoords[i].size();
+       if(aSize>0){
+         vtkFloatingPointType aLen = PointsCoords[i][aSize-1] - PointsCoords[i][0];
+         myComp.resize(aSize);
+         myComp[0] = 0;
+         for(int k=1;k<aSize;k++){
+           myComp[k]=myComp[k-1] + (PointsCoords[i][k]-PointsCoords[i][k-1])/aLen;
+         }
+       }
+      }
+      
+      //ENK: 23.11.2006
     }
   }
 
index c29903c2838c6e1fbdc2fac23df21fc5f178eff0..f96f017cb8376fc66060fe430526308647022953 100644 (file)
@@ -41,7 +41,12 @@ class VISU_Convertor;
 namespace VISU
 {
   //----------------------------------------------------------------------------
-  class MinMaxCunsomer: public virtual boost::signalslib::trackable
+  class VISU_I_EXPORT MinMaxCunsomer: public virtual
+#ifdef WNT
+                                 boost::bsignals::trackable
+#else
+                                 boost::signalslib::trackable
+#endif
   {
   protected:
     bool myMinMaxIsInitilized;
@@ -59,11 +64,10 @@ namespace VISU
 
 
   //----------------------------------------------------------------------------
-  class Result_i : public virtual POA_VISU::Result,
+  class VISU_I_EXPORT Result_i : public virtual POA_VISU::Result,
                    public virtual RemovableObject_i,
                   public virtual SALOME::GenericObj_i
   {
-    Result_i();
     Result_i(const Result_i &);
 
   public:
index 3a4d51dd0aa8ac7b21218e24b7a330467f7fc46f..fffd1ae11d2ae36a95ed2461277bc882e50b06aa 100644 (file)
 //  Author : Eugeny Nikolaev
 //  Module : VISU
 
-#include "VISU_ScalarMapOnDeformedShapePL.hxx"
-#include "VISU_Result_i.hh"
-#include "VISU_ScalarMap_i.hh"
 #include "VISU_ScalarMapOnDeformedShape_i.hh"
-#include "VISU_Convertor.hxx"
 #include "VISU_ScalarMapAct.h"
+#include "VISU_ScalarMapOnDeformedShapePL.hxx"
+#include "VISU_Convertor.hxx"
+#include "VISU_Result_i.hh"
 
 #include "SUIT_ResourceMgr.h"
 
@@ -37,9 +36,6 @@
 #include <vtkProperty.h>
 #include <vtkMapper.h>
 
-using namespace VISU;
-using namespace std;
-
 #ifdef _DEBUG_
 static int MYDEBUG = 0;
 #else
@@ -137,13 +133,14 @@ VISU::ScalarMapOnDeformedShape_i
 {
   myIsColored = true;
   myColor.R = myColor.G = myColor.B = 0.5;
-  VISU::Storable* aRes = TSuperClass::Create(theMeshName,theEntity,theFieldName,theTimeStampNumber);
-  SetScalarFieldName(theFieldName);
-  SetScalarIteration(theTimeStampNumber);
-  SetScalarMeshName(theMeshName);
-  int anEntity = theEntity;
-  SetScalarEntity(VISU::TEntity(anEntity));
-  SetCScalarField(myScalarMeshName,myScalarFieldName,myScalarIteration,myScalarEntity);
+  VISU::Storable* aRes = TSuperClass::Create(theMeshName,
+                                            theEntity,
+                                            theFieldName,
+                                            theTimeStampNumber);
+  SetScalarField(theMeshName.c_str(),
+                theFieldName.c_str(),
+                theTimeStampNumber,
+                theEntity);
   return aRes;
 }
 
@@ -157,14 +154,16 @@ VISU::ScalarMapOnDeformedShape_i
   if(!TSuperClass::Restore(theStudy, theMap))
     return NULL;
   
-  SetScalarFieldName(VISU::Storable::FindValue(theMap,"myScalarFieldName"));
-  SetScalarMeshName(VISU::Storable::FindValue(theMap,"myScalarMeshName"));
-  SetScalarIteration(VISU::Storable::FindValue(theMap,"myScalarIteration").toInt());
-  SetScalarEntity(VISU::TEntity(VISU::Storable::FindValue(theMap,"myScalarEntity").toInt()));
-  SetCScalarField(GetScalarMeshName(),
-                 GetScalarFieldName(),
-                 GetScalarIteration(),
-                 GetScalarEntity());
+  QString aMeshName = VISU::Storable::FindValue(theMap,"myScalarMeshName");
+  VISU::Entity anEntity = VISU::Entity(VISU::Storable::FindValue(theMap,"myScalarFieldName").toInt());
+
+  QString aFieldName = VISU::Storable::FindValue(theMap,"myScalarFieldName");
+  int aTimeStampNumber = VISU::Storable::FindValue(theMap,"myScalarFieldName").toInt();
+
+  SetScalarField(aMeshName,
+                 aFieldName,
+                 aTimeStampNumber,
+                 anEntity);
   
   SetScale(VISU::Storable::FindValue(theMap,"myFactor").toDouble());
   myIsColored = VISU::Storable::FindValue(theMap,"myIsColored").toInt();
@@ -185,7 +184,7 @@ VISU::ScalarMapOnDeformedShape_i
   
   Storable::DataToStream( theStr, "myScalarFieldName", myScalarFieldName.c_str());
   Storable::DataToStream( theStr, "myScalarMeshName",  myScalarMeshName.c_str());
-  Storable::DataToStream( theStr, "myScalarIteration", myScalarIteration);
+  Storable::DataToStream( theStr, "myScalarIteration", int(myScalarIteration));
   Storable::DataToStream( theStr, "myScalarEntity",    int(myScalarEntity));
 
   Storable::DataToStream( theStr, "myFactor", GetScale() );
@@ -209,19 +208,17 @@ void
 VISU::ScalarMapOnDeformedShape_i
 ::SameAs(const Prs3d_i* theOrigin)
 {
-  int theScalarIter = this->GetScalarIteration();
-  string theScalarMeshName = this->GetScalarMeshName();
-  string theScalarFieldName = this->GetScalarFieldName();
-
   TSuperClass::SameAs(theOrigin);
   
   if(const ScalarMapOnDeformedShape_i* aPrs3d = dynamic_cast<const ScalarMapOnDeformedShape_i*>(theOrigin)){
     ScalarMapOnDeformedShape_i* anOrigin = const_cast<ScalarMapOnDeformedShape_i*>(aPrs3d);
+    CORBA::String_var aMeshName = anOrigin->GetScalarCMeshName();
+    CORBA::String_var aFieldName = anOrigin->GetScalarCFieldName();
     
-    this->SetCScalarField(anOrigin->GetScalarMeshName(),
-                         anOrigin->GetScalarFieldName(),
-                         theScalarIter,
-                         anOrigin->GetScalarEntity());
+    SetScalarField(aMeshName,
+                  aFieldName,
+                  anOrigin->GetScalarLIteration(),
+                  anOrigin->GetScalarEEntity());
     Update();
   }
 }
@@ -346,136 +343,84 @@ VISU::ScalarMapOnDeformedShape_i
 //---------------------------------------------------------------
 void
 VISU::ScalarMapOnDeformedShape_i
-::SetCScalarField(const std::string& theMeshName,
-                 const std::string& theFieldName,
-                 int   theIteration,
-                 VISU::TEntity  theEntity)
+::SetScalarField(const char* theMeshName,
+                const char* theFieldName,
+                CORBA::Long theTimeStampNumber,
+                VISU::Entity theEntity)
 {
+  bool anIsModified = false;
+
+  if(!anIsModified)
+    anIsModified |= myScalarMeshName != theMeshName;
+
+  if(!anIsModified)
+    anIsModified |= myScalarEntity != theEntity;
+
+  if(!anIsModified)
+    anIsModified |= myScalarFieldName != theFieldName;
+
+  if(!anIsModified)
+    anIsModified |= myScalarIteration != theTimeStampNumber;
+  
+  if(!anIsModified)
+    return;
+
+  VISU::TEntity aEntity = VISU::TEntity(theEntity);
   VISU::Result_i::TInput* anInput = GetCResult()->GetInput();
-  SetField(anInput->GetField(theMeshName,theEntity,theFieldName));
+  SetField(anInput->GetField(theMeshName, aEntity, theFieldName));
 
   VISU::PUnstructuredGridIDMapper anIDMapper = 
     anInput->GetTimeStampOnMesh(theMeshName,
-                               theEntity,
+                               aEntity,
                                theFieldName,
-                               theIteration);
+                               theTimeStampNumber);
 
   vtkUnstructuredGrid* anOutput = anIDMapper->GetUnstructuredGridOutput();
   if(myScalarMapOnDeformedShapePL && anOutput)
     myScalarMapOnDeformedShapePL->SetScalars(anOutput);
 
-  this->SetScalarMeshName(theMeshName);
-  this->SetScalarFieldName(theFieldName);
-  this->SetScalarIteration(theIteration);
-  this->SetScalarEntity(theEntity);
+  myScalarMeshName = theMeshName;
+  myScalarEntity = theEntity;
+  myScalarFieldName = theFieldName;
+  myScalarIteration = theTimeStampNumber;
+  myParamsTime.Modified();
 }
 
 
 //---------------------------------------------------------------
-void
+char* 
 VISU::ScalarMapOnDeformedShape_i
-::SetScalarField(const char* theMeshName,
-                const char* theFieldName,
-                CORBA::Long  theIteration,
-                VISU::Entity  theEntity)
+::GetScalarCMeshName()
 {
-  this->SetCScalarField(theMeshName,theFieldName,(int)theIteration,VISU::TEntity(theEntity));
+  return CORBA::string_dup(myScalarMeshName.c_str());
 }
 
 
 //---------------------------------------------------------------
-void
-VISU::ScalarMapOnDeformedShape_i
-::SetScalarMeshName(const std::string& theName)
-{
-  if(myScalarMeshName != theName){
-    myScalarMeshName = theName;
-    myParamsTime.Modified();
-  }
-}
-
-//---------------------------------------------------------------
-std::string 
+VISU::Entity 
 VISU::ScalarMapOnDeformedShape_i
-::GetScalarMeshName()
-{
-  return myScalarMeshName;
-}
-
-//---------------------------------------------------------------
-void 
-VISU::ScalarMapOnDeformedShape_i
-::SetScalarFieldName(const std::string& theName)
+::GetScalarEEntity()
 {
-  if(myScalarFieldName != theName){
-    myScalarFieldName = theName;
-    myParamsTime.Modified();
-  }
+  return myScalarEntity;
 }
 
-//---------------------------------------------------------------
-std::string
-VISU::ScalarMapOnDeformedShape_i
-::GetScalarFieldName()
-{
-  return myScalarFieldName;
-}
 
 //---------------------------------------------------------------
-void
+char* 
 VISU::ScalarMapOnDeformedShape_i
-::SetScalarIteration(const int theValue)
+::GetScalarCFieldName()
 {
-  if(myScalarIteration != theValue){
-    myScalarIteration = theValue;
-    myParamsTime.Modified();
-  }
+  return CORBA::string_dup(myScalarFieldName.c_str());
 }
 
 
 //---------------------------------------------------------------
-int
+CORBA::Long 
 VISU::ScalarMapOnDeformedShape_i
-::GetScalarIteration()
+::GetScalarLIteration()
 {
   return myScalarIteration;
 }
 
-//---------------------------------------------------------------
-void
-VISU::ScalarMapOnDeformedShape_i
-::SetScalarEntity(const VISU::TEntity theValue)
-{
-  if(myScalarEntity != theValue){
-    myScalarEntity = theValue;
-    myParamsTime.Modified();
-  }
-}
-
-//---------------------------------------------------------------
-VISU::TEntity
-VISU::ScalarMapOnDeformedShape_i
-::GetScalarEntity()
-{
-  return myScalarEntity;
-}
-
-//---------------------------------------------------------------
-void 
-VISU::ScalarMapOnDeformedShape_i
-::SetScalarEEntity(const VISU::Entity theValue)
-{
-  VISU::TEntity anEntity = VISU::TEntity(theValue);
-  if(myScalarEntity != anEntity){
-    myScalarEntity = anEntity;
-    myParamsTime.Modified();
-  }
-}
 
 //---------------------------------------------------------------
-VISU::Entity
-VISU::ScalarMapOnDeformedShape_i
-::GetScalarEEntity()
-{
-  return VISU::Entity(myScalarEntity);
-}
index 8be0305f1ea26e698bd2b2acdfe6ae5617633e66..b5a8a056b9db7a3b3a75873c0bda9adb12bce836 100644 (file)
@@ -33,19 +33,19 @@ class VISU_ScalarMapOnDeformedShapePL;
 
 namespace VISU
 {
-  
+  //----------------------------------------------------------------------------  
   //! Class of Scalar Map on Deformed Shape presentation.
-  class ScalarMapOnDeformedShape_i : public virtual POA_VISU::ScalarMapOnDeformedShape,
-                                    public virtual ScalarMap_i
+  class VISU_I_EXPORT ScalarMapOnDeformedShape_i : public virtual POA_VISU::ScalarMapOnDeformedShape,
+                                                  public virtual ScalarMap_i
   {
     static int myNbPresent;
-    ScalarMapOnDeformedShape_i();
     ScalarMapOnDeformedShape_i(const ScalarMapOnDeformedShape_i&);
     
   public:
-    
+    //----------------------------------------------------------------------------     
     typedef ScalarMap_i TSuperClass;
-    
+    typedef VISU::ScalarMapOnDeformedShape TInterface;
+        
     explicit
     ScalarMapOnDeformedShape_i(EPublishInStudyMode thePublishInStudyModep);
     
@@ -87,8 +87,6 @@ namespace VISU
     void
     SameAs(const Prs3d_i* theOrigin);
 
-    typedef VISU::ScalarMapOnDeformedShape TInterface;
-    
     VISU_ScalarMapOnDeformedShapePL* 
     GetSpecificPL()
     { 
@@ -111,8 +109,8 @@ namespace VISU
     bool myIsColored;
     std::string myScalarMeshName;
     std::string myScalarFieldName;
-    VISU::TEntity myScalarEntity;
-    int myScalarIteration;
+    VISU::Entity myScalarEntity;
+    CORBA::Long myScalarIteration;
 
   public:
     //! Redefines VISU_ColoredPrs3d_i::IsPossible
@@ -154,6 +152,10 @@ namespace VISU
     QString 
     GenerateName();
 
+    virtual
+    const char* 
+    GetIconName();
+    
     virtual
     VISU_Actor* 
     CreateActor();
@@ -162,59 +164,28 @@ namespace VISU
     void
     UpdateActor(VISU_Actor* theActor) ;
 
-    virtual
-    void
-    SetCScalarField(const std::string& theMeshName,
-                   const std::string& theFieldName,
-                   int   theIteration,
-                   VISU::TEntity  theEntity);
-    
     virtual 
     void
     SetScalarField(const char* theMeshName,
                   const char* theFieldName,
-                  CORBA::Long  theIteration,
-                  VISU::Entity  theEntity);
-
-    virtual 
-    void
-    SetScalarFieldName(const std::string& theName);
-
-    virtual
-    std::string 
-    GetScalarFieldName();
+                  CORBA::Long theTimeStampNumber,
+                  VISU::Entity theEntity);
 
     virtual
-    void 
-    SetScalarIteration(const int theValue);
+    char* 
+    GetScalarCMeshName();
 
     virtual
-    int
-    GetScalarIteration();
-
-    virtual
-    void
-    SetScalarMeshName(const std::string& theName);
-
-    virtual
-    std::string
-    GetScalarMeshName();
-
-    virtual
-    void
-    SetScalarEntity(const VISU::TEntity theValue);
+    VISU::Entity
+    GetScalarEEntity();
 
     virtual
-    VISU::TEntity
-    GetScalarEntity();
+    char* 
+    GetScalarCFieldName();
 
     virtual
-    void
-    SetScalarEEntity(const VISU::Entity theValue);
-
-    virtual
-    VISU::Entity
-    GetScalarEEntity();
+    CORBA::Long
+    GetScalarLIteration();
   };
 }
 #endif
index a2c568595c95cf7f9609194786a96c235958c111..995c7aa97366e0098a6eadfe980dd3a8f788b4bc 100644 (file)
 
 #include "SUIT_ResourceMgr.h"
 
+#include "SUIT_Session.h"
+#include "SALOME_Event.hxx"
+#include "SalomeApp_Study.h"
+#include "SalomeApp_Application.h"
+
 #include <vtkDataSetMapper.h>
 #include <vtkTextProperty.h>
 
@@ -107,6 +112,54 @@ VISU::ScalarMap_i
   return myComment.c_str();
 }
 
+//----------------------------------------------------------------------------
+const char*
+VISU::ScalarMap_i
+::GetIconName()
+{
+  if (!IsGroupsUsed())
+    return "ICON_TREE_SCALAR_MAP";
+  else
+    return "ICON_TREE_SCALAR_MAP_GROUPS";
+}
+
+//----------------------------------------------------------------------------
+void
+VISU::ScalarMap_i
+::UpdateIcon()
+{
+  SALOMEDS::Study_var aStudyDocument = GetStudyDocument();
+  SALOMEDS::StudyBuilder_var aStudyBuilder = aStudyDocument->NewBuilder();
+
+  // Check if the icon needs to be updated, update if necessary
+  SALOMEDS::SObject_var aSObject = GetSObject();
+
+  SALOMEDS::GenericAttribute_var anAttr = 
+    aStudyBuilder->FindOrCreateAttribute(aSObject, "AttributePixMap");
+  SALOMEDS::AttributePixMap_var aPixmap = SALOMEDS::AttributePixMap::_narrow( anAttr );
+
+  CORBA::String_var aPixMapName = aPixmap->GetPixMap();
+  if(strcmp(GetIconName(), aPixMapName.in()) != 0)
+    aPixmap->SetPixMap(GetIconName());
+
+  // Update Object Browser
+  SUIT_Session* aSession = SUIT_Session::session();
+  QPtrList<SUIT_Application> anApplications = aSession->applications();
+  QPtrListIterator<SUIT_Application> anIter(anApplications);
+  while(SUIT_Application* aSApp = anIter.current()){
+    if(SalomeApp_Application* anApp = dynamic_cast<SalomeApp_Application*>(aSApp)){
+      if(SalomeApp_Study* aStudy = dynamic_cast<SalomeApp_Study*>(anApp->activeStudy())){
+       if(_PTR(Study) aCStudy = aStudy->studyDS()){
+         if(aStudyDocument->StudyId() == aCStudy->StudyId()){
+           anApp->updateObjectBrowser();
+           break;
+         }
+       }
+      }
+    }
+    ++anIter;
+  }
+}
 
 //----------------------------------------------------------------------------
 VISU::ScalarMap_i::
@@ -264,6 +317,56 @@ VISU::ScalarMap_i
   TSuperClass::SetSourceRange();
 }
 
+//----------------------------------------------------------------------------
+const VISU::ScalarMap_i::TGroupNames&
+VISU::ScalarMap_i
+::GetGroupNames()
+{
+  return myGroupNames;
+}
+
+//----------------------------------------------------------------------------
+bool
+VISU::ScalarMap_i
+::IsGroupsUsed()
+{
+  return !myGroupNames.empty();
+}
+
+//----------------------------------------------------------------------------
+void
+VISU::ScalarMap_i::
+AddMeshOnGroup(const char* theMeshName, 
+              const char* theGroupName)
+{
+  VISU::Result_i::TInput* anInput = GetCResult()->GetInput();
+  VISU::PUnstructuredGridIDMapper anIDMapper = anInput->GetMeshOnGroup(theMeshName, theGroupName);
+  if(anIDMapper){
+    int aNbGroups  = myGroupNames.size();
+    if(myGroupNames.find(theGroupName) != myGroupNames.end()){
+      GetSpecificPL()->AddGeometry(anIDMapper->GetOutput());
+      myGroupNames.insert(theGroupName);
+      if(aNbGroups == 0)
+       UpdateIcon();
+    }
+  }
+}
+
+
+//----------------------------------------------------------------------------
+void
+VISU::ScalarMap_i
+::RemoveAllGeom()
+{
+  int aNbGroups  = myGroupNames.size();
+  if(aNbGroups != 0){
+    GetSpecificPL()->ClearGeometry();
+    myGroupNames.clear();
+    UpdateIcon();
+  }
+}
+
+
 //----------------------------------------------------------------------------
 void 
 VISU::ScalarMap_i
index 992e16268bb65c1bf416109df7db760e1220965c..a258a799059c6391a6175c8fed3401064cb11044 100644 (file)
 
 #include "VISU_ColoredPrs3d_i.hh"
 
+#include <string>
+#include <set>
+
 class VISU_ScalarMapPL;
 
 namespace VISU
 {
   //============================================================================
-  class ScalarMap_i : public virtual POA_VISU::ScalarMap,
+  class VISU_I_EXPORT ScalarMap_i : public virtual POA_VISU::ScalarMap,
                      public virtual ColoredPrs3d_i
   {
     static int myNbPresent;
-    ScalarMap_i();
     ScalarMap_i(const ScalarMap_i&);
 
   public:
-    //----------------------------------------------------------------------------
+       //----------------------------------------------------------------------------
     typedef ColoredPrs3d_i TSuperClass;
     typedef VISU::ScalarMap TInterface;
 
@@ -91,6 +93,24 @@ namespace VISU
     VISU::ScalarMap::Orientation 
     GetBarOrientation();
 
+    //----------------------------------------------------------------------------
+    //! Sets geometry of mesh as group
+    virtual
+    void
+    SetMeshOnGroup(const char* theMeshName, 
+                  const char* theGroupName);
+
+    //! Add geometry of mesh as group. \retval the id of added group.
+    virtual 
+    void
+    AddMeshOnGroup(const char* theMeshName, 
+                  const char* theGroupName);
+    
+    //! Removes all geometries.
+    virtual
+    void
+    RemoveAllGeom();
+
     //----------------------------------------------------------------------------
     VISU_ScalarMapPL* 
     GetSpecificPL() const
@@ -150,6 +170,13 @@ namespace VISU
     QString
     GenerateName();
 
+    virtual
+    const char* 
+    GetIconName();
+
+    void
+    UpdateIcon();
+
     virtual 
     Storable* 
     Restore(SALOMEDS::Study_ptr theStudy,
@@ -175,8 +202,19 @@ namespace VISU
     void
     UpdateActor(VISU_Actor* theActor);
 
+    typedef std::string TGroupName;
+    typedef std::set<TGroupName> TGroupNames;
+    
+    const TGroupNames&
+    GetGroupNames();
+
+    //! Gets number of geometries
+    bool 
+    IsGroupsUsed();
+
   private:
     VISU_ScalarMapPL* myScalarMapPL;
+    TGroupNames myGroupNames;
   };
 }
 
index 2bb2c7462b0130e4f6bcacb50093cc63e24bf697..9725d8238ee7a94832fe4f00d9924f2463bba5c3 100644 (file)
@@ -99,6 +99,16 @@ VISU::StreamLines_i
   return myComment.c_str();
 }
 
+//---------------------------------------------------------------
+const char*
+VISU::StreamLines_i
+::GetIconName()
+{
+  if (!IsGroupsUsed())
+    return "ICON_TREE_STREAM_LINES";
+  else
+    return "ICON_TREE_STREAM_LINES_GROUPS";
+}
 
 //---------------------------------------------------------------
 VISU::StreamLines_i
@@ -186,7 +196,6 @@ VISU::StreamLines_i
 ::~StreamLines_i()
 {
   if(MYDEBUG) MESSAGE("StreamLines_i::~StreamLines_i()");
-  myAppendFilter->UnRegisterAllOutputs();
   myAppendFilter->Delete();
 }
 
@@ -205,8 +214,7 @@ VISU::StreamLines_i
   vtkPointSet* aSource = NULL;
   if(!thePrs3d->_is_nil())
     if((aPrs3d = dynamic_cast<VISU::Prs3d_i*>(VISU::GetServant(thePrs3d).in()))){
-      for(int i = myAppendFilter->GetNumberOfInputs()-1; i >= 0; i--)
-       myAppendFilter->RemoveInput(myAppendFilter->GetInput(i));
+      myAppendFilter->RemoveAllInputs();
       myAppendFilter->AddInput(aPrs3d->GetPipeLine()->GetMapper()->GetInput());
       aSource = myAppendFilter->GetOutput();
     }
@@ -346,7 +354,6 @@ VISU::StreamLines_i
   return IsPossible(GetCResult(),GetCMeshName(),GetEntity(),GetCFieldName(),GetTimeStampNumber(),true);
 }
 
-
 //---------------------------------------------------------------
 void
 VISU::StreamLines_i
index 8815eaf7109f8763b2c0d33200414b54c402a8c4..2b6635ba8defecff4385a598aa77e9c5e0a0827e 100644 (file)
@@ -34,15 +34,17 @@ class vtkAppendFilter;
 
 namespace VISU
 {
-  class StreamLines_i : public virtual POA_VISU::StreamLines,
-                       public virtual DeformedShape_i
+  //----------------------------------------------------------------------------
+  class VISU_I_EXPORT StreamLines_i : public virtual POA_VISU::StreamLines,
+                                     public virtual DeformedShape_i
   {
     static int myNbPresent;
-    StreamLines_i();
     StreamLines_i(const StreamLines_i&);
 
   public:
+    //----------------------------------------------------------------------------
     typedef DeformedShape_i TSuperClass;
+    typedef VISU::StreamLines TInterface;
 
     explicit
     StreamLines_i(EPublishInStudyMode thePublishInStudyModep);
@@ -93,8 +95,6 @@ namespace VISU
     VISU::StreamLines::Direction 
     GetDirection();
 
-    typedef VISU::StreamLines TInterface;
-
     VISU_StreamLinesPL* 
     GetSpecificPL() const
     { 
@@ -162,6 +162,10 @@ namespace VISU
     QString 
     GenerateName();
 
+    virtual
+    const char* 
+    GetIconName();
+
     //! Extends VISU_ColoredPrs3d_i::Restore
     virtual 
     Storable* 
index cc62432e2172bf7064e57ca51b8fe731ce085ae5..190a0642ed5c6c399f5107f39212289066b5d757 100644 (file)
@@ -230,9 +230,9 @@ VISU::Storable* VISU::Table_i::Build( int theRestoring )
        else{
          aComment.sprintf("myComment=%s;myType=%d;mySourceId=TableAttr",GetComment(),VISU::TTABLE);
          SALOMEDS::SObject_var aFatherSObject = SO->GetFather();
-         if(aFatherSObject->FindAttribute(anAttr,"AttributeComment")){
-           SALOMEDS::AttributeComment_var aCommentAttr =
-             SALOMEDS::AttributeComment::_narrow(anAttr);
+         if(aFatherSObject->FindAttribute(anAttr,"AttributeString")){
+           SALOMEDS::AttributeString_var aCommentAttr =
+             SALOMEDS::AttributeString::_narrow(anAttr);
            CORBA::String_var aValue = aCommentAttr->Value();
            Storable::TRestoringMap aMap;
            Storable::StrToMap(aValue.in(),aMap);
@@ -262,7 +262,15 @@ VISU::Storable* VISU::Table_i::Build( int theRestoring )
        // mpv (PAL5357): reference attributes are unnecessary now
        //SALOMEDS::SObject_var refSO = Builder->NewObject( mySObj );
        //Builder->Addreference( refSO, SO );
-      }
+    }
+
+    // Set icon
+    SALOMEDS::AttributePixMap_var  aPixmap;
+
+    anAttr  = Builder->FindOrCreateAttribute( mySObj, "AttributePixMap" );
+    aPixmap = SALOMEDS::AttributePixMap::_narrow( anAttr );
+    aPixmap->SetPixMap("ICON_TREE_TABLE");
+
     return this;
   }
   return NULL;
@@ -1377,8 +1385,8 @@ SALOMEDS::SObject_var VISU::ImportTables(const char* theFileName, SALOMEDS::Stud
   SALOMEDS::AttributeName_var aName = SALOMEDS::AttributeName::_narrow(anAttr);
   QFileInfo aFileInfo(theFileName);
   aName->SetValue(aFileInfo.fileName().latin1());
-  anAttr = aStudyBuilder->FindOrCreateAttribute(aFileObject, "AttributeComment");
-  SALOMEDS::AttributeComment_var aComment = SALOMEDS::AttributeComment::_narrow(anAttr);
+  anAttr = aStudyBuilder->FindOrCreateAttribute(aFileObject, "AttributeString");
+  SALOMEDS::AttributeString_var aComment = SALOMEDS::AttributeString::_narrow(anAttr);
   QString aString;
   aString.sprintf("myComment=ImportTables;myFileName=%s",
                  aFileInfo.absFilePath().latin1());
index 86f8715a51d72264ee89cc78d92b66c15f401e6c..b241a6b9a5649bd09895538eaf6de77db9010fc8 100644 (file)
@@ -35,11 +35,10 @@ class SPlot2d_Curve;
 
 namespace VISU{
   //==============================================================================
-  class Table_i : public virtual POA_VISU::Table,
+  class VISU_I_EXPORT Table_i : public virtual POA_VISU::Table,
                   public virtual PrsObject_i
   {
     static int myNbPresent;
-    Table_i();
     Table_i( const Table_i& );
   public:
     Table_i( SALOMEDS::Study_ptr theStudy, const char* theObject );
@@ -87,7 +86,7 @@ namespace VISU{
   SALOMEDS::SObject_var ImportTables(const char* theFileName, SALOMEDS::Study_ptr theStudy);
   bool ExportTableToFile(SALOMEDS::SObject_ptr theTable, const char* theFileName);
   //==============================================================================
-  class Curve_i : public virtual POA_VISU::Curve,
+  class VISU_I_EXPORT Curve_i : public virtual POA_VISU::Curve,
                   public virtual PrsObject_i
   {
     static int myNbPresent;
@@ -163,7 +162,7 @@ namespace VISU{
   };
 
   //==============================================================================
-  class Container_i : public virtual POA_VISU::Container,
+  class VISU_I_EXPORT Container_i : public virtual POA_VISU::Container,
                       public virtual PrsObject_i
   {
     static int myNbPresent;
index 0f59e786f210db4c0f5a3ae59944d1f114d4a87a..b2df6051d4ade5a7b8cfe16b847854beaa6990e5 100644 (file)
 
 #include "VISU_TimeAnimation.h"
 
+#ifdef WNT
+#include <windows.h>
+#include <vfw.h>
+#include <qmessagebox.h>
+#endif
+
 #include "VISUConfig.hh"
 
 #include "VISU_Result_i.hh"
 #include "VISU_Prs3d_i.hh"
 #include "VISU_Mesh_i.hh"
-#include "VISU_ScalarMap_i.hh"
 #include "VISU_IsoSurfaces_i.hh"
 #include "VISU_DeformedShape_i.hh"
 #include "VISU_ScalarMapOnDeformedShape_i.hh"
@@ -55,8 +60,9 @@
 #include "SUIT_Session.h"
 #include "SUIT_Study.h"
 
-#include "SALOMEDSClient_AttributeComment.hxx"
+#include "SALOMEDSClient_AttributeString.hxx"
 #include "SALOMEDSClient_AttributeName.hxx"
+#include "CASCatch.hxx"
 
 #include <qpixmap.h>
 #include <qimage.h>
 
 using namespace std;
 
+namespace VISU {
+  class ExecutionState {
+    bool myIsActive;
+    QMutex myIsActiveMutex;
+  public:
+    ExecutionState(bool isActive = false)
+      : myIsActive(isActive) {}
+
+    bool IsActive() {
+      bool state;
+      myIsActiveMutex.lock();
+      state = myIsActive;
+      myIsActiveMutex.unlock();
+      return state;
+    }
+    bool SetActive(bool isActive) {
+      bool state;
+      myIsActiveMutex.lock();
+      state = myIsActive;
+      myIsActive = isActive;
+      myIsActiveMutex.unlock();
+      return state;
+    }
+  };
+}
 
 //------------------------------------------------------------------------
 VISU_TimeAnimation::VISU_TimeAnimation (_PTR(Study) theStudy,
                                         VISU::View3D_ptr theView3D)
 {
   myStudy = theStudy;
-  myIsActive = false;
+  myExecutionState = new VISU::ExecutionState(false);
   myFrame = 0;
-  mySpeed = 1;
-  myProportional = false;
+  mySpeed = VISU::GetResourceMgr()->integerValue("VISU", "speed", 1);
+  myProportional = VISU::GetResourceMgr()->booleanValue("VISU", "use_proportional_timing", false);
   myView = 0;
 
   if (!CORBA::is_nil(theView3D)) {
@@ -96,12 +127,14 @@ VISU_TimeAnimation::VISU_TimeAnimation (_PTR(Study) theStudy,
     connect( myView, SIGNAL( destroyed() ), this, SLOT( onViewDeleted() ) );
   }
 
+  myAnimationMode = 0;
   myTimeMinVal = 0;
   myTimeMaxVal = 0;
   myTimeMin = 0;
   myTimeMax = 0;
   myLastError = "";
-  myCycling = false;
+  myCycling = VISU::GetResourceMgr()->booleanValue("VISU", "cycled_animation", false);
+  myCleaningMemoryAtEachFrame = VISU::GetResourceMgr()->booleanValue("VISU", "clean_memory_at_each_frame", false);
 
   myAnimEntry = "";
 
@@ -118,9 +151,23 @@ VISU_TimeAnimation::~VISU_TimeAnimation()
     return;
   }
 
+  if (QThread::running() && !QThread::finished()) {
+    //myExecutionState->SetActive(false);
+    stopAnimation();
+    QThread::wait(500);
+    if (QThread::running() && !QThread::finished()) {
+      QThread::terminate();
+    }
+  }
+
   for (int i = 0; i < getNbFields(); i++) {
     clearData(myFieldsLst[i]);
   }
+  clearFieldData();
+
+  delete myExecutionState;
+
+  myDumpPath = "";
 
   /* Terminates the execution of the thread. 
    * The thread may or may not be terminated immediately, 
@@ -136,47 +183,84 @@ VISU_TimeAnimation::~VISU_TimeAnimation()
    * There is no chance for the thread to cleanup after itself, 
    * unlock any held mutexes, etc. In short, use this function only if absolutely necessary. 
    */
-  myDumpPath = "";
-  QThread::wait(100);
-  QThread::terminate();
-  QThread::wait(400);
+  //QThread::wait(100);
+  //QThread::terminate();
+  //QThread::wait(400);
 }
 
 
 //------------------------------------------------------------------------
-void VISU_TimeAnimation::addField (_PTR(SObject) theField)
+bool VISU_TimeAnimation::addField (_PTR(SObject) theField)
 {
+  if (!theField) return false;
+
   FieldData aNewData;
   aNewData.myField = theField;
   aNewData.myNbFrames = 0;
-  aNewData.myPrsType = VISU::TSCALARMAP;
+  aNewData.myPrsType = VISU::TPRSMERGER;
   aNewData.myOffset[0] = aNewData.myOffset[1] = aNewData.myOffset[2] = 0;
   VISU::Storable::TRestoringMap aMap = getMapOfValue(aNewData.myField);
+  if(VISU::Storable::FindValue(aMap,"myComment") != QString("FIELD"))
+    return false;
+
   aNewData.myNbTimes = VISU::Storable::FindValue(aMap,"myNbTimeStamps").toLong();
-  myFieldsLst.append(aNewData);
 
+  if ( myAnimationMode == 0 ) { // parallel animation mode
+    if ( aNewData.myNbTimes < 2 )
+      return false;
+    if ( !myFieldsLst.isEmpty() && myFieldsLst.first().myNbTimes != aNewData.myNbTimes )
+      return false;
+    if ( myFieldsLst.isEmpty() )
+      myFieldsAbsFrames.push_back(aNewData.myNbTimes);
+  }
+  else { // succcessive animation mode
+    if ( aNewData.myNbTimes < 1 )
+      return false;
+
+    long aNumCompCurr = VISU::Storable::FindValue(aMap, "myNumComponent").toLong();
+    if ( !myFieldsLst.isEmpty() ) {
+      VISU::Storable::TRestoringMap aFMap = getMapOfValue(myFieldsLst.first().myField);
+      long aNumComp = VISU::Storable::FindValue(aFMap, "myNumComponent").toLong();
+      if ( aNumCompCurr != aNumComp )
+       return false;
+    }
+
+    if ( !myFieldsLst.isEmpty() )
+      myFieldsAbsFrames.push_back(myFieldsAbsFrames.back() + aNewData.myNbTimes);
+    else
+      myFieldsAbsFrames.push_back(aNewData.myNbTimes);
+  }
+    
+  myFieldsLst.append(aNewData);
+  
   //find Min/Max timestamps
-  if ((myTimeMin == 0) && (myTimeMax == 0)) {
-    _PTR(ChildIterator) anIter = myStudy->NewChildIterator(theField);
-    anIter->Next(); // First is reference on support
+  _PTR(ChildIterator) anIter = myStudy->NewChildIterator(theField);
+  anIter->Next(); // First is reference on support
+  if ( myFieldsLst.size() == 1 ) { // the first field
     myTimeMin = getTimeValue(anIter->Value());
-    for(; anIter->More(); anIter->Next()) {
+    myTimeMax = getTimeValue(anIter->Value());
+  }
+  for(; anIter->More(); anIter->Next()) {
+    if ( myTimeMin > getTimeValue(anIter->Value()) )
+      myTimeMin = getTimeValue(anIter->Value());
+    if ( myTimeMax < getTimeValue(anIter->Value()) )
       myTimeMax = getTimeValue(anIter->Value());
-    }
   }
+  
+  return true;
 }
 
 //------------------------------------------------------------------------
-void VISU_TimeAnimation::addField (SALOMEDS::SObject_ptr theField)
+bool VISU_TimeAnimation::addField (SALOMEDS::SObject_ptr theField)
 {
   SALOMEDS::SObject_var theFieldDup = SALOMEDS::SObject::_duplicate(theField);
   _PTR(SObject) aField = VISU::GetClientSObject(theFieldDup, myStudy);
-  addField(aField);
+  return addField(aField);
 }
 
 
 //------------------------------------------------------------------------
-void VISU_TimeAnimation::clearData(FieldData& theData) {
+void VISU_TimeAnimation::_clearData(FieldData& theData) {
   if (!myView) {
     MESSAGE("Viewer is not defined for animation");
     return;
@@ -202,6 +286,11 @@ void VISU_TimeAnimation::clearData(FieldData& theData) {
   myView->update();
 }
 
+//------------------------------------------------------------------------
+void VISU_TimeAnimation::clearData(FieldData& theData) {
+  ProcessVoidEvent(new TVoidMemFun1ArgEvent<VISU_TimeAnimation,FieldData&>
+                   (this,&VISU_TimeAnimation::_clearData,theData));
+}
 
 namespace
 {
@@ -306,7 +395,43 @@ namespace
     }
   }
 }
-  
+
+double getMinFieldsValue( QValueList<FieldData>& theFieldsLst )
+{
+  // for succcessive animation mode only
+  double aRes;
+  for (int i = 0; i < theFieldsLst.count(); i++) {
+    if ( theFieldsLst[i].myPrs[0] ) {
+      aRes = theFieldsLst[i].myPrs[0]->GetMin();
+      break;
+    }
+  }
+
+  for (int i = 1; i < theFieldsLst.count() && theFieldsLst[i].myPrs[0]; i++) {
+    if ( aRes > theFieldsLst[i].myPrs[0]->GetMin() )
+      aRes = theFieldsLst[i].myPrs[0]->GetMin();    
+  }
+  return aRes;
+}
+
+double getMaxFieldsValue( QValueList<FieldData>& theFieldsLst )
+{
+  // for succcessive animation mode only
+  double aRes;
+  for (int i = 0; i < theFieldsLst.count(); i++) {
+    if ( theFieldsLst[i].myPrs[0] ) {
+      aRes = theFieldsLst[i].myPrs[0]->GetMax();
+      break;
+    }
+  }
+
+  for (int i = 1; i < theFieldsLst.count() && theFieldsLst[i].myPrs[0]; i++) {
+    if ( aRes < theFieldsLst[i].myPrs[0]->GetMax() )
+      aRes = theFieldsLst[i].myPrs[0]->GetMax();    
+  }
+  return aRes;
+}
+
 void VISU_TimeAnimation::generatePresentations(CORBA::Long theFieldNum) {
   FieldData& aData = myFieldsLst[theFieldNum];
 
@@ -323,7 +448,8 @@ void VISU_TimeAnimation::generatePresentations(CORBA::Long theFieldNum) {
 
   using namespace VISU;
   switch (aData.myPrsType) {
-  case VISU::TSCALARMAP: // ScalarMap
+  case VISU::TSCALARMAP:
+  case VISU::TPRSMERGER: // ScalarMap
     GeneratePresentations<ScalarMap_i>(myStudy,
                                       aData,
                                       aResult,
@@ -407,11 +533,35 @@ void VISU_TimeAnimation::generatePresentations(CORBA::Long theFieldNum) {
     MESSAGE("Not implemented for this presentation type: " << aData.myPrsType);
     return;
   }
+  
+  if ( myAnimationMode == 1 ) { // succcessive animation mode
+    if ( isRangeDefined() ) {
+      if ( myFieldsAbsFrames.size() == getNbFields() ) 
+       myFieldsAbsFrames.clear();
+      if ( theFieldNum > 0 )
+       myFieldsAbsFrames.push_back(myFieldsAbsFrames.back() + aData.myNbFrames);      
+      else
+       myFieldsAbsFrames.push_back(aData.myNbFrames);
+    }
+    if ((theFieldNum == getNbFields() - 1) && aData.myPrsType != VISU::TGAUSSPOINTS){
+      double aMin = getMinFieldsValue(myFieldsLst);
+      double aMax = getMaxFieldsValue(myFieldsLst);
+      for (int i = 0; i < getNbFields(); i++)
+       for(long aFrameId = 0; aFrameId < myFieldsLst[i].myNbFrames; aFrameId++)
+         if (aData.myPrsType == VISU::TISOSURFACE) {
+           if (VISU::IsoSurfaces_i* aPrs = dynamic_cast<VISU::IsoSurfaces_i*>(myFieldsLst[i].myPrs[aFrameId]))
+           aPrs->SetSubRange(aMin, aMax);
+         }
+         else
+           if (VISU::ScalarMap_i* aPrs = dynamic_cast<VISU::ScalarMap_i*>(myFieldsLst[i].myPrs[aFrameId]))
+             aPrs->SetRange(aMin, aMax);
+    }
+  }
 }
 
 
 //------------------------------------------------------------------------
-CORBA::Boolean VISU_TimeAnimation::generateFrames() {
+CORBA::Boolean VISU_TimeAnimation::_generateFrames() {
   if (!myView) {
     MESSAGE("Viewer is not defined for animation");
     return false;
@@ -431,7 +581,8 @@ CORBA::Boolean VISU_TimeAnimation::generateFrames() {
        aData.myPrs[j]->SetOffset(aData.myOffset);
        aActor = aData.myPrs[j]->CreateActor();
        myView->AddActor(aActor);
-       if(j == 0)
+       bool condition = ( myAnimationMode == 0 ) ? (j == 0) : (j == 0 && i == 0);
+       if(condition)
          aActor->VisibilityOn();
        else
          aActor->VisibilityOff();
@@ -444,13 +595,21 @@ CORBA::Boolean VISU_TimeAnimation::generateFrames() {
   }
   myFrame = 0;
   myLastError += QString(" timestamp(s) cannot be created.");
-  emit frameChanged(myFrame, myFieldsLst[0].myTiming[myFrame]);
+  ProcessVoidEvent(new TVoidMemFun2ArgEvent<VISU_TimeAnimation,long,double>(this, &VISU_TimeAnimation::_emitFrameChanged,
+                                                                           myFrame, myFieldsLst[0].myTiming[myFrame]));
   myView->Repaint();
   return aNoError;
 }
 
 //------------------------------------------------------------------------
-void VISU_TimeAnimation::clearView() {
+CORBA::Boolean VISU_TimeAnimation::generateFrames()
+{
+  return ProcessEvent(new TMemFunEvent<VISU_TimeAnimation,bool>
+                      (this,&VISU_TimeAnimation::_generateFrames));
+}
+
+//------------------------------------------------------------------------
+void VISU_TimeAnimation::_clearView() {
   if (!myView) {
     MESSAGE("Viewer is not defined for animation");
     return;
@@ -471,43 +630,134 @@ void VISU_TimeAnimation::clearView() {
 }
 
 //------------------------------------------------------------------------
-void VISU_TimeAnimation::stopAnimation() {
-  myIsActive = false;
+void VISU_TimeAnimation::clearView()
+{
+  ProcessVoidEvent(new TVoidMemFunEvent<VISU_TimeAnimation>
+                   (this,&VISU_TimeAnimation::_clearView));
+}
+
+//------------------------------------------------------------------------
+void VISU_TimeAnimation::_visibilityOff(int num_field, int num_frame) {
+  if ( num_field < 0 || num_frame < 0 ) return;
+  FieldData& aData = myFieldsLst[num_field];
+  if ( aData.myActors.empty() ) return;
+  VISU_Actor* aActor = aData.myActors[num_frame];
+  if (! myCleaningMemoryAtEachFrame) {
+    //
+    // Usual behaviour : VisibilityOff()
+    // Problem : It don't clean the memory so if there is
+    //           a lot of frames, the memory grows dramatically
+    //
+    aActor->VisibilityOff();
+  } else {
+    //
+    // myCleaningMemoryAtEachFrame behaviour:
+    // Delete the actor and re-creation it with VisibilityOff()
+    // since it takes memory only at VisibilityOn()
+    //
+    // Delete the actor
+    aActor->RemoveFromRender(myView->getRenderer());
+    // Re-create the actor
+    aActor = aData.myPrs[num_frame]->CreateActor();
+    myView->AddActor(aActor);
+    aActor->VisibilityOff();
+    aData.myActors[num_frame] = aActor;
+  }
+}
+
+//------------------------------------------------------------------------
+void VISU_TimeAnimation::visibilityOff(int num_field, int num_frame)
+{
+  ProcessVoidEvent(new TVoidMemFun2ArgEvent<VISU_TimeAnimation,int,int>
+                   (this,&VISU_TimeAnimation::_visibilityOff,num_field,num_frame));
+}
+
+//------------------------------------------------------------------------
+void VISU_TimeAnimation::stopAnimation()
+{
+  myExecutionState->SetActive(false);
 }
 
 //------------------------------------------------------------------------
-void VISU_TimeAnimation::startAnimation() {
-  if (!myIsActive) {
-    myIsActive = true;
+void VISU_TimeAnimation::_startAnimation() {
+  if (!myExecutionState->IsActive()) {
+    myExecutionState->SetActive(true);
     QThread::start();
   }
 }
 
 //------------------------------------------------------------------------
-void VISU_TimeAnimation::nextFrame() {
+void VISU_TimeAnimation::startAnimation()
+{
+  ProcessVoidEvent(new TVoidMemFunEvent<VISU_TimeAnimation>
+                   (this,&VISU_TimeAnimation::_startAnimation));
+}
+
+//------------------------------------------------------------------------
+CORBA::Boolean VISU_TimeAnimation::isRunning()
+{
+  return myExecutionState->IsActive();
+}
+
+//------------------------------------------------------------------------
+void VISU_TimeAnimation::_nextFrame() {
   if (!myView) {
     MESSAGE("Viewer is not defined for animation");
     return;
   }
   stopAnimation();
-  if (myFrame < (myFieldsLst[0].myNbFrames-1)) {
+  if (myFrame < getNbFrames() - 1 ) { //(myFieldsLst[0].myNbFrames-1)) {
     int i;
-    for (i = 0; i < getNbFields(); i++)
-      if (myFieldsLst[i].myActors[myFrame] != 0)
-       myFieldsLst[i].myActors[myFrame]->VisibilityOff();
+    std::pair<int,long> aPair;
+    int aFieldId;
+    long aFrameId;
+
+    if ( myAnimationMode == 0 ) { // parallel animation mode
+      for (i = 0; i < getNbFields(); i++)
+       if (myFieldsLst[i].myActors[myFrame] != 0)
+         visibilityOff(i, myFrame);
+    }
+    else { //succcessive animation mode
+      aPair = getRelativeFrameNumber(myFrame);
+      aFieldId = aPair.first;
+      aFrameId = aPair.second;
+      if (myFieldsLst[aFieldId].myActors[aFrameId] != 0)
+       visibilityOff(aFieldId, aFrameId);
+    }
 
     myFrame++;
-    for (i = 0; i < getNbFields(); i++)
-      if (myFieldsLst[i].myActors[myFrame] != 0)
-       myFieldsLst[i].myActors[myFrame]->VisibilityOn();
 
-    emit frameChanged(myFrame, myFieldsLst[0].myTiming[myFrame]);
+    if ( myAnimationMode == 0 ) { // parallel animation mode
+      for (i = 0; i < getNbFields(); i++)
+       if (myFieldsLst[i].myActors[myFrame] != 0)
+         myFieldsLst[i].myActors[myFrame]->VisibilityOn();
+
+      ProcessVoidEvent(new TVoidMemFun2ArgEvent<VISU_TimeAnimation,long,double>(this, &VISU_TimeAnimation::_emitFrameChanged,
+                                                                               myFrame, myFieldsLst[0].myTiming[myFrame]));
+    }
+    else { //succcessive animation mode
+      aPair = getRelativeFrameNumber(myFrame);
+      aFieldId = aPair.first;
+      aFrameId = aPair.second;
+      if (myFieldsLst[aFieldId].myActors[aFrameId] != 0)
+       myFieldsLst[aFieldId].myActors[aFrameId]->VisibilityOn();
+
+      ProcessVoidEvent(new TVoidMemFun2ArgEvent<VISU_TimeAnimation,long,double>(this, &VISU_TimeAnimation::_emitFrameChanged,
+                                                                               myFrame, myFieldsLst[aFieldId].myTiming[aFrameId]));
+    }
     myView->Repaint();
   }
 }
 
 //------------------------------------------------------------------------
-void VISU_TimeAnimation::prevFrame() {
+void VISU_TimeAnimation::nextFrame()
+{
+  ProcessVoidEvent(new TVoidMemFunEvent<VISU_TimeAnimation>
+                   (this,&VISU_TimeAnimation::_nextFrame));
+}
+
+//------------------------------------------------------------------------
+void VISU_TimeAnimation::_prevFrame() {
   if (!myView) {
     MESSAGE("Viewer is not defined for animation");
     return;
@@ -515,68 +765,163 @@ void VISU_TimeAnimation::prevFrame() {
   stopAnimation();
   if (myFrame > 0) {
     int i;
-    for (i = 0; i < getNbFields(); i++)
-      if (myFieldsLst[i].myActors[myFrame] != 0)
-       myFieldsLst[i].myActors[myFrame]->VisibilityOff();
+    std::pair<int,long> aPair;
+    int aFieldId;
+    long aFrameId;
+
+    if ( myAnimationMode == 0 ) { // parallel animation mode
+      for (i = 0; i < getNbFields(); i++)
+       if (myFieldsLst[i].myActors[myFrame] != 0)
+         visibilityOff(i, myFrame);
+    }
+    else { //succcessive animation mode
+      aPair = getRelativeFrameNumber(myFrame);
+      aFieldId = aPair.first;
+      aFrameId = aPair.second;
+      if (myFieldsLst[aFieldId].myActors[aFrameId] != 0)
+         visibilityOff(aFieldId, aFrameId);
+    }
 
     myFrame--;
-    for (i = 0; i < getNbFields(); i++)
-      if (myFieldsLst[i].myActors[myFrame] != 0)
-       myFieldsLst[i].myActors[myFrame]->VisibilityOn();
 
-    emit frameChanged(myFrame, myFieldsLst[0].myTiming[myFrame]);
+    if ( myAnimationMode == 0 ) { // parallel animation mode
+      for (i = 0; i < getNbFields(); i++)
+       if (myFieldsLst[i].myActors[myFrame] != 0)
+         myFieldsLst[i].myActors[myFrame]->VisibilityOn();
+
+      ProcessVoidEvent(new TVoidMemFun2ArgEvent<VISU_TimeAnimation,long,double>(this, &VISU_TimeAnimation::_emitFrameChanged,
+                                                                               myFrame, myFieldsLst[0].myTiming[myFrame]));
+    }
+    else { //succcessive animation mode
+      aPair = getRelativeFrameNumber(myFrame);
+      aFieldId = aPair.first;
+      aFrameId = aPair.second;
+      if (myFieldsLst[aFieldId].myActors[aFrameId] != 0)
+         myFieldsLst[aFieldId].myActors[aFrameId]->VisibilityOn();
+
+      ProcessVoidEvent(new TVoidMemFun2ArgEvent<VISU_TimeAnimation,long,double>(this, &VISU_TimeAnimation::_emitFrameChanged,
+                                                                               myFrame, myFieldsLst[aFieldId].myTiming[aFrameId]));
+    }
     myView->Repaint();
   }
 }
 
 //------------------------------------------------------------------------
-void VISU_TimeAnimation::firstFrame() {
+void VISU_TimeAnimation::prevFrame()
+{
+  ProcessVoidEvent(new TVoidMemFunEvent<VISU_TimeAnimation>
+                   (this,&VISU_TimeAnimation::_prevFrame));
+}
+
+//------------------------------------------------------------------------
+void VISU_TimeAnimation::_firstFrame() {
   if (!myView) {
     MESSAGE("Viewer is not defined for animation");
     return;
   }
   stopAnimation();
   int i;
-  for (i = 0; i < getNbFields(); i++)
-    if(!myFieldsLst[i].myActors.empty())
-      if (myFieldsLst[i].myActors[myFrame] != 0)
-       myFieldsLst[i].myActors[myFrame]->VisibilityOff();
+  if ( myAnimationMode == 0 ) { // parallel animation mode
+    for (i = 0; i < getNbFields(); i++)
+      if(!myFieldsLst[i].myActors.empty())
+       if (myFieldsLst[i].myActors[myFrame] != 0)
+         visibilityOff(i, myFrame);
+    }
+  else { //succcessive animation mode
+    std::pair<int,long> aPair = getRelativeFrameNumber(myFrame);
+    int aFieldId = aPair.first;
+    long aFrameId = aPair.second;
+    if(!myFieldsLst[aFieldId].myActors.empty())
+      if (myFieldsLst[aFieldId].myActors[aFrameId] != 0)
+       visibilityOff(aFieldId, aFrameId);
+  }
   myFrame = 0;
-  for (i = 0; i < getNbFields(); i++)
+
+  int imax;
+  if ( myAnimationMode == 0 ) // parallel animation mode 
+    imax = getNbFields();
+  else //succcessive animation mode
+    imax = 1;
+
+  for (i = 0; i < imax; i++)
     if(!myFieldsLst[i].myActors.empty())
       if (myFieldsLst[i].myActors[myFrame] != 0)
        myFieldsLst[i].myActors[myFrame]->VisibilityOn();
+
   if(!myFieldsLst[0].myTiming.empty()){
-    emit frameChanged(myFrame, myFieldsLst[0].myTiming[myFrame]);
+    ProcessVoidEvent(new TVoidMemFun2ArgEvent<VISU_TimeAnimation,long,double>(this, &VISU_TimeAnimation::_emitFrameChanged,
+                                                                             myFrame, myFieldsLst[0].myTiming[myFrame]));
     myView->Repaint();
   }
 }
 
 //------------------------------------------------------------------------
-void VISU_TimeAnimation::lastFrame() {
+void VISU_TimeAnimation::firstFrame()
+{
+  ProcessVoidEvent(new TVoidMemFunEvent<VISU_TimeAnimation>
+                   (this,&VISU_TimeAnimation::_firstFrame));
+}
+
+//------------------------------------------------------------------------
+void VISU_TimeAnimation::_lastFrame() {
   if (!myView) {
     MESSAGE("Viewer is not defined for animation");
     return;
   }
   stopAnimation();
   int i;
-  for (i = 0; i < getNbFields(); i++)
-   if (myFieldsLst[i].myActors[myFrame] != 0)
-      myFieldsLst[i].myActors[myFrame]->VisibilityOff();
+  std::pair<int,long> aPair;
+  int aFieldId;
+  long aFrameId;
+
+  if ( myAnimationMode == 0 ) { // parallel animation mode
+    for (i = 0; i < getNbFields(); i++)
+      if (myFieldsLst[i].myActors[myFrame] != 0)
+       visibilityOff(i, myFrame);
+  }
+  else { //succcessive animation mode
+    aPair = getRelativeFrameNumber(myFrame);
+    aFieldId = aPair.first;
+    aFrameId = aPair.second;
+    if (myFieldsLst[aFieldId].myActors[aFrameId] != 0)
+      visibilityOff(aFieldId, aFrameId);
+  }
 
-  myFrame = myFieldsLst[0].myNbFrames-1;
-  for (i = 0; i < getNbFields(); i++)
-    if (myFieldsLst[i].myActors[myFrame] != 0)
-      myFieldsLst[i].myActors[myFrame]->VisibilityOn();
+  myFrame = getNbFrames() - 1; //myFieldsLst[0].myNbFrames-1;
+
+  if ( myAnimationMode == 0 ) { // parallel animation mode
+    for (i = 0; i < getNbFields(); i++)
+      if (myFieldsLst[i].myActors[myFrame] != 0)
+       myFieldsLst[i].myActors[myFrame]->VisibilityOn();
+    
+    ProcessVoidEvent(new TVoidMemFun2ArgEvent<VISU_TimeAnimation,long,double>(this, &VISU_TimeAnimation::_emitFrameChanged,
+                                                                             myFrame, myFieldsLst[0].myTiming[myFrame]));
+  }
+  else { //succcessive animation mode
+    aPair = getRelativeFrameNumber(myFrame);
+    aFieldId = aPair.first;
+    aFrameId = aPair.second;
+    if (myFieldsLst[aFieldId].myActors[aFrameId] != 0)
+       myFieldsLst[aFieldId].myActors[aFrameId]->VisibilityOn();
+
+    ProcessVoidEvent(new TVoidMemFun2ArgEvent<VISU_TimeAnimation,long,double>(this, &VISU_TimeAnimation::_emitFrameChanged,
+                                                                             myFrame, myFieldsLst[aFieldId].myTiming[aFrameId]));
+  }
 
-  emit frameChanged(myFrame, myFieldsLst[0].myTiming[myFrame]);
   myView->Repaint();
 }
 
+//------------------------------------------------------------------------
+void VISU_TimeAnimation::lastFrame()
+{
+  ProcessVoidEvent(new TVoidMemFunEvent<VISU_TimeAnimation>
+                   (this,&VISU_TimeAnimation::_lastFrame));
+}
+
 
 //------------------------------------------------------------------------
 // For Batchmode using
-void VISU_TimeAnimation::gotoFrame(CORBA::Long theFrame) {
+void VISU_TimeAnimation::_gotoFrame(CORBA::Long theFrame) {
   if (!myView) {
     MESSAGE("Viewer is not defined for animation");
     return;
@@ -584,25 +929,66 @@ void VISU_TimeAnimation::gotoFrame(CORBA::Long theFrame) {
   if ((theFrame < 0) || (theFrame > (getNbFrames()-1)))
     return;
   stopAnimation();
-  qApp->lock();
-  qApp->syncX();
   int i;
-  for (i = 0; i < getNbFields(); i++)
-    if (myFieldsLst[i].myActors[myFrame] != 0)
-      myFieldsLst[i].myActors[myFrame]->VisibilityOff();
+  std::pair<int,long> aPair;
+  int aFieldId;
+  long aFrameId;
+  
+  if ( myAnimationMode == 0 ) { // parallel animation mode
+    for (i = 0; i < getNbFields(); i++)
+      if (myFieldsLst[i].myActors[myFrame] != 0)
+       visibilityOff(i, myFrame);
+  }
+  else { //succcessive animation mode
+    aPair = getRelativeFrameNumber(myFrame);
+    aFieldId = aPair.first;
+    aFrameId = aPair.second;
+    if (myFieldsLst[aFieldId].myActors[aFrameId] != 0)
+       visibilityOff(aFieldId, aFrameId);
+  }
 
   myFrame = theFrame;
-  for (i = 0; i < getNbFields(); i++)
-    if (myFieldsLst[i].myActors[myFrame] != 0)
-      myFieldsLst[i].myActors[myFrame]->VisibilityOn();
 
-  emit frameChanged(myFrame, myFieldsLst[0].myTiming[myFrame]);
+  if ( myAnimationMode == 0 ) { // parallel animation mode
+    for (i = 0; i < getNbFields(); i++)
+      if (myFieldsLst[i].myActors[myFrame] != 0)
+       myFieldsLst[i].myActors[myFrame]->VisibilityOn();
+
+    ProcessVoidEvent(new TVoidMemFun2ArgEvent<VISU_TimeAnimation,long,double>(this, &VISU_TimeAnimation::_emitFrameChanged,
+                                                                             myFrame, myFieldsLst[0].myTiming[myFrame]));
+  }
+  else { //succcessive animation mode
+    aPair = getRelativeFrameNumber(myFrame);
+    aFieldId = aPair.first;
+    aFrameId = aPair.second;
+    if (myFieldsLst[aFieldId].myActors[aFrameId] != 0)
+       myFieldsLst[aFieldId].myActors[aFrameId]->VisibilityOn();
+
+    ProcessVoidEvent(new TVoidMemFun2ArgEvent<VISU_TimeAnimation,long,double>(this, &VISU_TimeAnimation::_emitFrameChanged,
+                                                                             myFrame, myFieldsLst[aFieldId].myTiming[aFrameId]));
+  }
+
   myView->Repaint();
-  qApp->flushX();
-  qApp->processEvents(3);
-  qApp->unlock();
 }
 
+//------------------------------------------------------------------------
+void VISU_TimeAnimation::gotoFrame(CORBA::Long theFrame)
+{
+  ProcessVoidEvent(new TVoidMemFun1ArgEvent<VISU_TimeAnimation,CORBA::Long>
+                   (this,&VISU_TimeAnimation::_gotoFrame,theFrame));
+}
+
+//------------------------------------------------------------------------
+void VISU_TimeAnimation::_emitFrameChanged(long theNewFrame, double theTime)
+{
+  emit frameChanged(theNewFrame, theTime);
+}
+
+//------------------------------------------------------------------------
+void VISU_TimeAnimation::_emitStopped()
+{
+  emit stopped();
+}
 
 //------------------------------------------------------------------------
 VISU::ColoredPrs3d_ptr VISU_TimeAnimation::getPresentation(CORBA::Long theField, CORBA::Long theFrame) {
@@ -616,45 +1002,94 @@ VISU::ColoredPrs3d_ptr VISU_TimeAnimation::getPresentation(CORBA::Long theField,
 
 //------------------------------------------------------------------------
 CORBA::Long VISU_TimeAnimation::getNbFrames() {
-  return (getNbFields() > 0)? myFieldsLst[0].myNbFrames : 0;
+  if ( myAnimationMode == 0 ) // parallel animation mode
+    return (getNbFields() > 0)? myFieldsLst[0].myNbFrames : 0;
+  else //succcessive animation mode
+    return (getNbFields() > 0 && !myFieldsAbsFrames.empty()) ? myFieldsAbsFrames[myFieldsAbsFrames.size()-1] : 0;
 }
 
+//------------------------------------------------------------------------
+long VISU_TimeAnimation::getAbsoluteFrameNumber(std::pair<int,long> theFieldTimeStamp)
+{
+  long aRes = -1;
+  if ( getNbFields() > 0 ) {
+    int aFieldId = theFieldTimeStamp.first;
+    long aFrameNum = theFieldTimeStamp.second + 1;
+    if ( myAnimationMode == 0 ) { // parallel animation mode
+      if ( aFrameNum <= myFieldsAbsFrames[0] )
+        aRes = aFrameNum;
+    }
+    else { //succcessive animation mode
+      if ( aFieldId == 0 && aFrameNum <= myFieldsAbsFrames[aFieldId] )
+       aRes = aFrameNum;
+      else if ( aFieldId && aFrameNum <= myFieldsAbsFrames[aFieldId] - myFieldsAbsFrames[aFieldId-1] )
+       aRes = myFieldsAbsFrames[aFieldId-1] + aFrameNum;
+    }
+  }
+  return aRes - 1;
+}
 
 //------------------------------------------------------------------------
-void VISU_TimeAnimation::run()
+std::pair<int,long> VISU_TimeAnimation::getRelativeFrameNumber(long theFrame)
 {
-  if (!myView) {
-    MESSAGE("Viewer is not defined for animation");
-    return;
+  std::pair<int,long> aRes;
+  if ( getNbFields() > 0 && theFrame < getNbFrames() ) {
+    theFrame = theFrame + 1;
+    if ( myAnimationMode == 0 ) { // parallel animation mode
+      aRes.first = 0;
+      aRes.second = theFrame - 1;
+    }
+    else { //succcessive animation mode
+      for (int i = 0, iEnd = myFieldsAbsFrames.size(); i < iEnd; i++)
+       if ( myFieldsAbsFrames[i] >= theFrame ) {
+         aRes.first = i;
+         if ( i == 0 )
+           aRes.second = theFrame - 1;
+         else
+           aRes.second = theFrame-myFieldsAbsFrames[i-1] - 1;
+         break;
+       }
+    }
   }
+  return aRes;
+}
+
+//------------------------------------------------------------------------
+void VISU_TimeAnimation::parallelAnimation( bool& theIsDumping, QValueList<int>& theIndexList )
+{
   double k = 1;
-  bool   isDumping = !myDumpPath.isEmpty();
   double aOneVal = 1;
   if (myFieldsLst[0].myNbFrames > 2)
-    aOneVal = myFieldsLst[0].myTiming[1] - myFieldsLst[0].myTiming[0];
-  myFileIndex = 0;
+    aOneVal = ( myTimeMax - myTimeMin ) / getNbFrames();
   int aNbFiles = 0;
-  QValueList<int> anIndexList;
 
-  qApp->lock();
-  while (myIsActive) {
-    emit frameChanged(myFrame, myFieldsLst[0].myTiming[myFrame]);
-    if(!(myFieldsLst[0].myField))
-      break;
-    for (int i = 0; i < getNbFields(); i++) {
-      FieldData& aData = myFieldsLst[i];
-      if (myFrame > 0) {
-       if (aData.myActors[myFrame-1] != 0)
-         aData.myActors[myFrame-1]->VisibilityOff();
-      } else {
-       if (aData.myActors[aData.myNbFrames-1] != 0)
-         aData.myActors[aData.myNbFrames-1]->VisibilityOff();
-      }
-      if (aData.myActors[myFrame] != 0) {
-       aData.myActors[myFrame]->VisibilityOn();
+  bool hasHextFrame = true;
+  while (hasHextFrame && myExecutionState->IsActive()) {
+    ProcessVoidEvent(new TVoidMemFun2ArgEvent<VISU_TimeAnimation,long,double>
+                     (this, &VISU_TimeAnimation::_emitFrameChanged,
+                      myFrame, myFieldsLst[0].myTiming[myFrame]));
+    if (myExecutionState->IsActive()) {
+      if (!(myFieldsLst[0].myField))
+        break;
+      for (int i = 0; i < getNbFields(); i++) {
+        FieldData& aData = myFieldsLst[i];
+        if (myFrame > 0) {
+          if (aData.myActors[myFrame-1] != 0)
+            visibilityOff(i, myFrame-1);
+        } else {
+          if (aData.myActors[aData.myNbFrames-1] != 0)
+            visibilityOff(i, aData.myNbFrames-1);
+        }
+        if (aData.myActors[myFrame] != 0) {
+          ProcessVoidEvent(new TVoidMemFunEvent<VISU_Actor>(aData.myActors[myFrame],
+                                                            &VISU_Actor::VisibilityOn));
+        }
       }
+      bool repainArg = false;
+      ProcessVoidEvent(new TVoidMemFun1ArgEvent<SVTK_ViewWindow,bool>(myView,
+                                                                      &SVTK_ViewWindow::Repaint,
+                                                                      repainArg));
     }
-    myView->Repaint(false);
 
     k = 1;
     if (myProportional) {
@@ -673,90 +1108,234 @@ void VISU_TimeAnimation::run()
       }
     }
     int delay = (int)(1000. * k / mySpeed);
-    isDumping = !myDumpPath.isEmpty();
-    if (delay < 1 && isDumping) {
+    theIsDumping = !myDumpPath.isEmpty();
+    if (delay < 1 && theIsDumping) {
       // We must unlock mutex for some time before grabbing to allow view updating
       delay = 1;
     }
-    qApp->unlock();
     msleep(delay);
-    qApp->lock();
+    if (!myExecutionState->IsActive()) return;
 
-    if (isDumping) {
+    if (theIsDumping) {
       // We must unlock mutex for some time before grabbing to allow view updating
-      qApp->unlock();
       msleep(delay);
-      qApp->lock();
-      if(!(myFieldsLst[0].myField)) // break, if field was deleted.
-       break;
-      if (myDumpFormat.compare("AVI") != 0) {
-       QString aFile(myDumpPath);
-       QString aName = QString("%1").arg(myFieldsLst[0].myTiming[myFrame]);
-       int aPos = -1;
-       while ((aPos = aName.find(".")) > -1 )
-         aName.replace(aPos, 1, "_");
-       aFile += aName;
-       aFile += ".";
-       aFile += myDumpFormat.lower();
-       myView->dumpViewToFormat(aFile,myDumpFormat);
-      } else {
-       QFileInfo aFileInfo(myDumpPath);
-       QString aDirPath = aFileInfo.dirPath(true);
-       QString aBaseName = aFileInfo.fileName();
+      if (!myExecutionState->IsActive()) return;
 
-       switch (myFrame) {
-       case 0: 
-         break;
-       case 1:
-         myFileIndex += 5;
-         break;
-       default:
-         if (myProportional) {
-           double p = (myFieldsLst[0].myTiming[myFrame] -
-                       myFieldsLst[0].myTiming[myFrame-1]) / aOneVal;
-           myFileIndex += (long) (5*p);
-         } else {
-           myFileIndex += 5;
-         }
-       }
+      if (!(myFieldsLst[0].myField)) // break, if field was deleted.
+       break;
 
-       QString aFile = aDirPath + QDir::separator() + aBaseName;
-       aFile += "_";
-       aFile += QString("%1").arg(myFileIndex).rightJustify(8, '0');
-       aFile += ".jpeg";
-
-       /* check image size is divisable 16
-       myView->dumpViewToFormat(aFile,"JPEG");
-       */
-       SUIT_ViewWindow* aView = myView;
-       QImage img = aView->dumpView();
-       if (!img.isNull()) {
-         int width = img.width(); width = (width/16)*16;
-         int height = img.height(); height = (height/16)*16;
-         QImage copy = img.copy(0, 0, width, height);
-         if (copy.save(aFile, "JPEG")) {
-           anIndexList.append(myFileIndex);
-           aNbFiles++;
-         }
-       }
-      }
+      saveImages( 0, aOneVal, aNbFiles, theIndexList );
     }
 
-    if (!myIsActive) break;
+    if (!myExecutionState->IsActive()) break;
 
     myFrame++;
     if (myFrame == myFieldsLst[0].myNbFrames) {
       if (!myCycling) {
-       myIsActive = false;
+        hasHextFrame = false;
        myFrame--;
-       break;
-      else
+      }
+      else
        myFrame = 0;
     }
+  } // while (hasHextFrame && myExecutionState->IsActive())
+}
+
+//------------------------------------------------------------------------
+void VISU_TimeAnimation::succcessiveAnimation( bool& theIsDumping, QValueList<int>& theIndexList )
+{
+  if (myFrame >= getNbFrames() - 1)
+  {
+    myExecutionState->SetActive(false);
+    return;
+  }
+
+  double k = 1;
+  double aOneVal = 1;
+  if (myFieldsLst[0].myNbFrames > 2)
+    aOneVal = ( myTimeMax - myTimeMin ) / getNbFrames();
+  int aNbFiles = 0;
+  long aFrame = myFrame;
+
+  bool hasHextFrame = true;
+  while (hasHextFrame && myExecutionState->IsActive())
+  {
+    for (int aFieldId = 0;
+         (aFieldId < getNbFields()) && (myFieldsLst[aFieldId].myField);
+         aFieldId++, aFrame = 0)
+    {
+      if (!myExecutionState->IsActive()) break;
+
+      FieldData& aData = myFieldsLst[aFieldId];
+      if ( !aData.myPrs[0] ) continue;
+      for (; aFrame < aData.myNbFrames && myExecutionState->IsActive(); aFrame++, myFrame++)
+      {
+       ProcessVoidEvent(new TVoidMemFun2ArgEvent<VISU_TimeAnimation,long,double>
+                         (this, &VISU_TimeAnimation::_emitFrameChanged,
+                          myFrame, myFieldsLst[aFieldId].myTiming[aFrame]));
+
+       if (myExecutionState->IsActive()) {
+          if (aFrame > 0) {
+            if (aData.myActors[aFrame-1] != 0)
+              visibilityOff(aFieldId, aFrame-1);
+          } else if ( myFrame > 0) {
+            if (myFieldsLst[aFieldId-1].myActors[myFieldsLst[aFieldId-1].myNbFrames-1] != 0)
+              visibilityOff(aFieldId-1, myFieldsLst[aFieldId-1].myNbFrames-1);
+          } else if ( myCycling ) {
+            if (myFieldsLst[getNbFields()-1].myActors[myFieldsLst[getNbFields()-1].myNbFrames-1] != 0)
+              visibilityOff(getNbFields()-1, myFieldsLst[getNbFields()-1].myNbFrames-1);
+          } else {
+            if (aData.myActors[aData.myNbFrames-1] != 0)
+              visibilityOff(aFieldId, aData.myNbFrames-1);
+          }
+          if (aData.myActors[aFrame] != 0) {
+            ProcessVoidEvent(new TVoidMemFunEvent<VISU_Actor>(aData.myActors[aFrame],
+                                                              &VISU_Actor::VisibilityOn));
+          }
+
+          bool repainArg = false;
+          ProcessVoidEvent(new TVoidMemFun1ArgEvent<SVTK_ViewWindow,bool>(myView,
+                                                                          &SVTK_ViewWindow::Repaint,
+                                                                          repainArg));
+       }
+
+       k = 1;
+       if (myProportional) {
+         switch (aFrame) {
+         case 0:
+           break;
+         case 1:
+           if (myFieldsLst[0].myNbFrames > 2)
+             k = (myFieldsLst[0].myTiming[aFrame+1] -
+                  myFieldsLst[0].myTiming[aFrame]) / aOneVal;
+           break;
+         default:
+           if (aFrame < (myFieldsLst[0].myNbFrames - 1))
+             k = (myFieldsLst[0].myTiming[aFrame+1] -
+                  myFieldsLst[0].myTiming[aFrame]) / aOneVal;
+         }
+       }
+       int delay = (int)(1000. * k / mySpeed);
+       theIsDumping = !myDumpPath.isEmpty();
+       if (delay < 1 && theIsDumping) {
+         // We must unlock mutex for some time before grabbing to allow view updating
+         delay = 1;
+       }
+       msleep(delay);
+
+       if (!myExecutionState->IsActive()) return;
+
+       if (theIsDumping) {
+         // We must unlock mutex for some time before grabbing to allow view updating
+         msleep(delay);
+         if (!myExecutionState->IsActive()) return;
+
+         if (!(myFieldsLst[aFieldId].myField)) // break, if field was deleted.
+           break;
+
+         saveImages( aFieldId, aOneVal, aNbFiles, theIndexList );
+       }
+      } // for (; aFrame < aData.myNbFrames && myExecutionState->IsActive(); aFrame++, myFrame++)
+    } // for (int aFieldId = 0;
+
+    if (!myCycling) {
+      hasHextFrame = false;
+      myFrame--;
+    }
+    else {
+      myFrame = 0;
+      aFrame = myFrame;
+    }
+  } // while (hasHextFrame && myExecutionState->IsActive())
+}
+
+//------------------------------------------------------------------------
+void VISU_TimeAnimation::saveImages( int theFieldId, 
+                                    double& theOneVal, int& theNbFiles, 
+                                    QValueList<int>& theIndexList )
+{
+  if (myDumpFormat.compare("AVI") != 0) {
+    QString aFile(myDumpPath);
+
+    QString aName;
+    if ( myAnimationMode == 0 ) // parallel animation mode
+      aName = QString("%1").arg(myFieldsLst[theFieldId].myTiming[myFrame]);
+    else // successive animation mode
+      aName = QString("%1").arg(myFieldsLst[theFieldId].myTiming[getRelativeFrameNumber(myFrame).second]);
+
+    int aPos = -1;
+    while ((aPos = aName.find(".")) > -1 )
+      aName.replace(aPos, 1, "_");
+    aFile += aName;
+    aFile += ".";
+    aFile += myDumpFormat.lower();
+    ProcessVoidEvent(new TVoidMemFunEvent<SVTK_ViewWindow>
+                    (myView,&SVTK_ViewWindow::RefreshDumpImage)); // IPAL13602
+    ProcessEvent(new TMemFun2ArgEvent<SVTK_ViewWindow,bool,const QString&,const QString&>
+                (myView,&SVTK_ViewWindow::dumpViewToFormat,aFile,myDumpFormat));
+  } else {
+    QFileInfo aFileInfo(myDumpPath);
+    QString aDirPath = aFileInfo.dirPath(true);
+    QString aBaseName = aFileInfo.fileName();
+    
+    switch (myFrame) {
+    case 0: 
+      break;
+    case 1:
+      myFileIndex += 5;
+      break;
+    default:
+      if (myProportional) {
+       double p = (myFieldsLst[0].myTiming[myFrame] -
+                   myFieldsLst[0].myTiming[myFrame-1]) / theOneVal;
+       myFileIndex += (long) (5*p);
+      } else {
+       myFileIndex += 5;
+      }
+    }
+    
+    QString aFile = aDirPath + QDir::separator() + aBaseName;
+    aFile += "_";
+    aFile += QString("%1").arg(myFileIndex).rightJustify(8, '0');
+    aFile += ".jpeg";
+    
+    /* check image size is divisable 16
+       myView->dumpViewToFormat(aFile,"JPEG");
+    */
+    SUIT_ViewWindow* aView = myView;
+    ProcessVoidEvent(new TVoidMemFunEvent<SVTK_ViewWindow>(myView,&SVTK_ViewWindow::RefreshDumpImage)); // IPAL13602
+    QImage img = ProcessEvent(new TMemFunEvent<SUIT_ViewWindow,QImage>(aView,&SUIT_ViewWindow::dumpView));
+    if (!img.isNull()) {
+      int width = img.width(); width = (width/16)*16;
+      int height = img.height(); height = (height/16)*16;
+      QImage copy = img.copy(0, 0, width, height);
+      if (copy.save(aFile, "JPEG")) {
+       theIndexList.append(myFileIndex);
+       theNbFiles++;
+      }
+    }
+  }
+}
+
+//------------------------------------------------------------------------
+void VISU_TimeAnimation::run()
+{
+  if (!myView) {
+    MESSAGE("Viewer is not defined for animation");
+    return;
   }
 
+  bool isDumping = !myDumpPath.isEmpty();
+  myFileIndex = 0;
+  QValueList<int> anIndexList;
+
+  if ( myAnimationMode == 0 ) // parallel animation mode
+    parallelAnimation( isDumping, anIndexList );
+  else //succcessive animation mode
+    succcessiveAnimation( isDumping, anIndexList );
+
   // make AVI file if need
-  if (isDumping && myDumpFormat.compare("AVI") == 0) {
+  if (isDumping && myDumpFormat.compare("AVI") == 0 && myExecutionState->IsActive()) {
     double aFPS = 17.3 * mySpeed;
 
     QFileInfo aFileInfo(myDumpPath);
@@ -806,9 +1385,9 @@ void VISU_TimeAnimation::run()
     system(aCmd.latin1());
   }
 
-  emit stopped();
-  qApp->unlock();
-  QThread::exit();
+  if (myExecutionState->IsActive())
+    ProcessVoidEvent(new TVoidMemFunEvent<VISU_TimeAnimation>(this,&VISU_TimeAnimation::_emitStopped));
+  myExecutionState->SetActive(false);
 }
 
 //------------------------------------------------------------------------
@@ -828,8 +1407,8 @@ VISU::Storable::TRestoringMap VISU_TimeAnimation::getMapOfValue (_PTR(SObject) t
   VISU::Storable::TRestoringMap aMap;
   if (theSObject) {
     _PTR(GenericAttribute) anAttr;
-    if (theSObject->FindAttribute(anAttr, "AttributeComment")) {
-      _PTR(AttributeComment) aComment (anAttr);
+    if (theSObject->FindAttribute(anAttr, "AttributeString")) {
+      _PTR(AttributeString) aComment (anAttr);
       std::string aString = aComment->Value();
       QString strIn (aString.c_str());
       VISU::Storable::StrToMap(strIn, aMap);
@@ -900,6 +1479,7 @@ std::string GetPresentationComment (VISU::VISUType thePrsType)
   std::string aPrsCmt;
   switch (thePrsType) {
   case VISU::TSCALARMAP:
+  case VISU::TPRSMERGER:
     aPrsCmt = VISU::ScalarMap_i::myComment;
     break;
   case VISU::TISOSURFACE:
@@ -948,8 +1528,8 @@ SALOMEDS::SObject_ptr VISU_TimeAnimation::publishInStudy()
   std::string aSComponentEntry = aSComponent->GetID();
 
   QString aComment;
-  aComment.sprintf("myComment=ANIMATION;myType=%d;myTimeMinVal=%g;myTimeMaxVal=%g",
-                   VISU::TANIMATION,myTimeMinVal,myTimeMaxVal);
+  aComment.sprintf("myComment=ANIMATION;myType=%d;myTimeMinVal=%g;myTimeMaxVal=%g;myMode=%d",
+                   VISU::TANIMATION,myTimeMinVal,myTimeMaxVal,myAnimationMode);
 
   string anEntry = VISU::CreateAttributes(myStudy,aSComponentEntry.c_str(),"","",
                                           GenerateName(),"",aComment,true);
@@ -958,18 +1538,22 @@ SALOMEDS::SObject_ptr VISU_TimeAnimation::publishInStudy()
 
   for (int i = 0; i < getNbFields(); i++) {
     FieldData& aData = myFieldsLst[i];
-
-    _PTR(SObject) newObj = aStudyBuilder->NewObject(aAnimSObject);
-    aStudyBuilder->Addreference(newObj, aData.myField);
-
-    if (aData.myPrs.empty()) {
-      generatePresentations(i);
+    if ( aData.myPrs.front() ) {
+      _PTR(SObject) newObj = aStudyBuilder->NewObject(aAnimSObject);
+      aStudyBuilder->Addreference(newObj, aData.myField);
+      
+      if (aData.myPrs.empty()) {
+       generatePresentations(i);
+      }
+      ostringstream strOut;
+      aData.myPrs[0]->ToStream(strOut);
+      string aPrsComment = strOut.str();
+      string aPrsMyComment = aData.myPrs[0]->GetComment();
+      if(aPrsMyComment == "PRSMERGER")
+       aPrsMyComment = "SCALARMAP";
+      VISU::CreateAttributes(myStudy, newObj->GetID().c_str(),"","",
+                            aPrsMyComment.c_str(),"",aPrsComment.c_str(),true);
     }
-    ostringstream strOut;
-    aData.myPrs[0]->ToStream(strOut);
-    string aPrsComment = strOut.str();
-    VISU::CreateAttributes(myStudy, newObj->GetID().c_str(),"","",
-                           aData.myPrs[0]->GetComment(),"",aPrsComment.c_str(),true);
   }
   aStudyBuilder->CommitCommand();
 
@@ -991,12 +1575,12 @@ void VISU_TimeAnimation::saveAnimation()
   std::string aSComponentEntry = aSComponent->GetID();
 
   QString aComment;
-  aComment.sprintf("myComment=ANIMATION;myType=%d;myTimeMinVal=%g;myTimeMaxVal=%g",
-                   VISU::TANIMATION,myTimeMinVal,myTimeMaxVal);
+  aComment.sprintf("myComment=ANIMATION;myType=%d;myTimeMinVal=%g;myTimeMaxVal=%g;myMode=%d",
+                   VISU::TANIMATION,myTimeMinVal,myTimeMaxVal,myAnimationMode);
 
   _PTR(GenericAttribute) anAttr;
-  anAttr = aStudyBuilder->FindOrCreateAttribute(aAnimSObject, "AttributeComment");
-  _PTR(AttributeComment) aCmnt (anAttr);
+  anAttr = aStudyBuilder->FindOrCreateAttribute(aAnimSObject, "AttributeString");
+  _PTR(AttributeString) aCmnt (anAttr);
   aCmnt->SetValue(aComment.latin1());
 
   _PTR(ChildIterator) anIter = myStudy->NewChildIterator(aAnimSObject);
@@ -1013,7 +1597,8 @@ void VISU_TimeAnimation::saveAnimation()
     aData.myPrs[0]->ToStream(strOut);
     string aPrsComment = strOut.str();
     string aPrsNameTxt = aData.myPrs[0]->GetComment();
-
+    if(aPrsNameTxt == "PRSMERGER")
+      aPrsNameTxt = "SCALARMAP";
     // Save in study
     _PTR(SObject) aRefObj = anIter->Value();
     _PTR(ChildIterator) anPrsIter = myStudy->NewChildIterator(aRefObj);
@@ -1021,8 +1606,8 @@ void VISU_TimeAnimation::saveAnimation()
 
     if (anPrsIter->More()) {
       _PTR(SObject) aPrsObj = anPrsIter->Value();
-      anAttr = aStudyBuilder->FindOrCreateAttribute(aPrsObj, "AttributeComment");
-      aCmnt = _PTR(AttributeComment)(anAttr);
+      anAttr = aStudyBuilder->FindOrCreateAttribute(aPrsObj, "AttributeString");
+      aCmnt = _PTR(AttributeString)(anAttr);
       aCmnt->SetValue(aPrsComment.c_str());
 
       anAttr = aStudyBuilder->FindOrCreateAttribute(aPrsObj, "AttributeName");
@@ -1050,9 +1635,9 @@ void VISU_TimeAnimation::restoreFromStudy(_PTR(SObject) theField)
 
   VISU::Storable::TRestoringMap aMap;
   _PTR(GenericAttribute) anAttr;
-  if (!aAnimSObject->FindAttribute(anAttr, "AttributeComment")) return;
+  if (!aAnimSObject->FindAttribute(anAttr, "AttributeString")) return;
 
-  _PTR(AttributeComment) aComment (anAttr);
+  _PTR(AttributeString) aComment (anAttr);
   string aComm = aComment->Value();
   QString strIn (aComm.c_str());
   VISU::Storable::StrToMap(strIn,aMap);
@@ -1060,15 +1645,19 @@ void VISU_TimeAnimation::restoreFromStudy(_PTR(SObject) theField)
 
   myTimeMinVal = VISU::Storable::FindValue(aMap,"myTimeMinVal",&isExist).toDouble();
   myTimeMaxVal = VISU::Storable::FindValue(aMap,"myTimeMaxVal",&isExist).toDouble();
+  myAnimationMode = VISU::Storable::FindValue(aMap,"myMode",&isExist).toInt();
 
   _PTR(ChildIterator) anIter = myStudy->NewChildIterator(aAnimSObject);
   for (anIter->Init(); anIter->More(); anIter->Next()) {
     _PTR(SObject) aRefObj = anIter->Value();
     _PTR(SObject) aFieldObj;
     if (!aRefObj->ReferencedObject(aFieldObj) ) continue;
+
     addField(aFieldObj);
-    FieldData& aData = getFieldData(getNbFields()-1);
+    if ( isRangeDefined() ) myFieldsAbsFrames.pop_back();
 
+    FieldData& aData = getFieldData(getNbFields()-1);
+    
     // Get Presentation object
     _PTR(ChildIterator) anPrsIter = myStudy->NewChildIterator(aRefObj);
     anPrsIter->Init();
@@ -1080,7 +1669,7 @@ void VISU_TimeAnimation::restoreFromStudy(_PTR(SObject) theField)
     QString strName (aStr.c_str());
 
     if (strName == VISU::ScalarMap_i::myComment.c_str())
-      aData.myPrsType = VISU::TSCALARMAP;
+      aData.myPrsType = VISU::TPRSMERGER;
     else if (strName == VISU::IsoSurfaces_i::myComment.c_str())
       aData.myPrsType = VISU::TISOSURFACE;
     else if (strName == VISU::CutPlanes_i::myComment.c_str())
@@ -1103,8 +1692,8 @@ void VISU_TimeAnimation::restoreFromStudy(_PTR(SObject) theField)
       continue;
     generatePresentations(getNbFields()-1);
 
-    if (!aPrsObj->FindAttribute(anAttr, "AttributeComment")) continue;
-    _PTR(AttributeComment) aPrsComment (anAttr);
+    if (!aPrsObj->FindAttribute(anAttr, "AttributeString")) continue;
+    _PTR(AttributeString) aPrsComment (anAttr);
     string aPrsComm = aPrsComment->Value();
     if (aPrsComm.length() > 0) {
       QString strPrsIn (aPrsComm.c_str());
@@ -1115,6 +1704,11 @@ void VISU_TimeAnimation::restoreFromStudy(_PTR(SObject) theField)
     }
     aData.myPrs[0]->GetOffset(aData.myOffset);
     for (int i = 1; i < aData.myNbFrames; i++) {
+      bool anIsFixedRange = false;
+      if (aData.myPrsType != VISU::TGAUSSPOINTS) {
+       if (VISU::ScalarMap_i* aPrs = dynamic_cast<VISU::ScalarMap_i*>(aData.myPrs[i]))
+         anIsFixedRange = aPrs->IsRangeFixed();
+      }
       //jfa 03.08.2005:aData.myPrs[i]->SameAs(aData.myPrs[0]);
       aData.myPrs[i]->SameAs(aData.myPrs[0]);//jfa 03.08.2005
     }
@@ -1128,6 +1722,45 @@ void VISU_TimeAnimation::onViewDeleted()
   myView = 0;
 }
 
+void VISU_TimeAnimation::ApplyProperties(CORBA::Long theFieldNum, VISU::ColoredPrs3d_ptr thePrs)
+  throw (SALOME::SALOME_Exception)
+{
+  VISU::ColoredPrs3d_i* aPrs_i = dynamic_cast<VISU::ColoredPrs3d_i*>(GetServant(thePrs).in());
+
+  if ( !aPrs_i ) 
+    throw SALOME_Exception(LOCALIZED("Error : invalid dynamic cast of the given presentation to VISU::ColoredPrs3d_i"));
+  
+  if ( myAnimationMode == 0 ) { // parallel animation mode
+    FieldData& aData = myFieldsLst[theFieldNum];
+    
+    if ( aData.myPrs.empty() )
+      throw SALOME_Exception(LOCALIZED("Error : presentations for the given field is not yet created!"));
+    
+    if ( aPrs_i->GetCResult() != aData.myPrs[0]->GetCResult() )
+      throw SALOME_Exception(LOCALIZED("Error : the MED file is not the same!"));
+    
+    for (int i = 0; i < aData.myNbFrames; i++) {
+      bool anIsFixedRange = false;
+      if (aData.myPrsType != VISU::TGAUSSPOINTS) {
+       if (VISU::ScalarMap_i* aPrs = dynamic_cast<VISU::ScalarMap_i*>(aData.myPrs[i]))
+         anIsFixedRange = aPrs->IsRangeFixed();
+      }
+      aData.myPrs[i]->SameAs(aPrs_i);
+    }
+  }
+  else if ( myAnimationMode == 1 ) { // successive animation mode
+    for (int f = 0; f < getNbFields(); f++) {
+      FieldData& aData = myFieldsLst[f];
+      
+      if ( aData.myPrs.empty() )
+       throw SALOME_Exception(LOCALIZED("Error : presentations for the given field is not yet created!"));
+      
+      for (int i = 0; i < aData.myNbFrames; i++) {
+       aData.myPrs[i]->SameAs(aPrs_i);
+      }
+    }
+  }
+}
 
 //========================================================================
 //========================================================================
@@ -1181,15 +1814,24 @@ VISU_TimeAnimation_i::~VISU_TimeAnimation_i()
   delete myAnim;
 }
 
-void VISU_TimeAnimation_i::addField (SALOMEDS::SObject_ptr theField)
+bool VISU_TimeAnimation_i::addField (SALOMEDS::SObject_ptr theField)
+{
+  return myAnim->addField(theField);
+}
+
+void VISU_TimeAnimation_i::clearFields ()
 {
-  myAnim->addField(theField);
+  for (int i = 0; i < myAnim->getNbFields(); i++) {
+    myAnim->clearData(myAnim->getFieldData(i));
+  }
+  myAnim->clearFieldData();
 }
 
 CORBA::Boolean VISU_TimeAnimation_i::generateFrames()
 {
-  return ProcessEvent(new TMemFunEvent<VISU_TimeAnimation,bool>
-                      (myAnim,&VISU_TimeAnimation::generateFrames));
+  //return ProcessEvent(new TMemFunEvent<VISU_TimeAnimation,bool>
+  //                    (myAnim,&VISU_TimeAnimation::generateFrames));
+  return myAnim->generateFrames();
 }
 
 void VISU_TimeAnimation_i::generatePresentations (CORBA::Long theFieldNum)
@@ -1199,50 +1841,58 @@ void VISU_TimeAnimation_i::generatePresentations (CORBA::Long theFieldNum)
 
 void VISU_TimeAnimation_i::clearView()
 {
-  ProcessVoidEvent(new TVoidMemFunEvent<VISU_TimeAnimation>
-                   (myAnim,&VISU_TimeAnimation::clearView));
+  //ProcessVoidEvent(new TVoidMemFunEvent<VISU_TimeAnimation>
+  //                 (myAnim,&VISU_TimeAnimation::clearView));
+  myAnim->clearView();
 }
 
 void VISU_TimeAnimation_i::stopAnimation()
 {
-  ProcessVoidEvent(new TVoidMemFunEvent<VISU_TimeAnimation>
-                   (myAnim,&VISU_TimeAnimation::stopAnimation));
+  //ProcessVoidEvent(new TVoidMemFunEvent<VISU_TimeAnimation>
+  //                 (myAnim,&VISU_TimeAnimation::stopAnimation));
+  myAnim->stopAnimation();
 }
 
 void VISU_TimeAnimation_i::startAnimation()
 {
-  ProcessVoidEvent(new TVoidMemFunEvent<VISU_TimeAnimation>
-                   (myAnim,&VISU_TimeAnimation::startAnimation));
+  //ProcessVoidEvent(new TVoidMemFunEvent<VISU_TimeAnimation>
+  //                 (myAnim,&VISU_TimeAnimation::startAnimation));
+  myAnim->startAnimation();
 }
 
 void VISU_TimeAnimation_i::nextFrame()
 {
-  ProcessVoidEvent(new TVoidMemFunEvent<VISU_TimeAnimation>
-                   (myAnim,&VISU_TimeAnimation::nextFrame));
+  //ProcessVoidEvent(new TVoidMemFunEvent<VISU_TimeAnimation>
+  //                 (myAnim,&VISU_TimeAnimation::nextFrame));
+  myAnim->nextFrame();
 }
 
 void VISU_TimeAnimation_i::prevFrame()
 {
-  ProcessVoidEvent(new TVoidMemFunEvent<VISU_TimeAnimation>
-                   (myAnim,&VISU_TimeAnimation::prevFrame));
+  //ProcessVoidEvent(new TVoidMemFunEvent<VISU_TimeAnimation>
+  //                 (myAnim,&VISU_TimeAnimation::prevFrame));
+  myAnim->prevFrame();
 }
 
 void VISU_TimeAnimation_i::firstFrame()
 {
-  ProcessVoidEvent(new TVoidMemFunEvent<VISU_TimeAnimation>
-                   (myAnim,&VISU_TimeAnimation::firstFrame));
+  //ProcessVoidEvent(new TVoidMemFunEvent<VISU_TimeAnimation>
+  //                 (myAnim,&VISU_TimeAnimation::firstFrame));
+  myAnim->firstFrame();
 }
 
 void VISU_TimeAnimation_i::lastFrame()
 {
-  ProcessVoidEvent(new TVoidMemFunEvent<VISU_TimeAnimation>
-                   (myAnim,&VISU_TimeAnimation::lastFrame));
+  //ProcessVoidEvent(new TVoidMemFunEvent<VISU_TimeAnimation>
+  //                 (myAnim,&VISU_TimeAnimation::lastFrame));
+  myAnim->lastFrame();
 }
 
 void VISU_TimeAnimation_i::gotoFrame(CORBA::Long theFrame)
 {
-  ProcessVoidEvent(new TVoidMemFun1ArgEvent<VISU_TimeAnimation,CORBA::Long>
-                   (myAnim,&VISU_TimeAnimation::gotoFrame,theFrame));
+  //ProcessVoidEvent(new TVoidMemFun1ArgEvent<VISU_TimeAnimation,CORBA::Long>
+  //                 (myAnim,&VISU_TimeAnimation::gotoFrame,theFrame));
+  myAnim->gotoFrame(theFrame);
 }
 
 CORBA::Long VISU_TimeAnimation_i::getNbFields()
@@ -1334,6 +1984,10 @@ CORBA::Boolean VISU_TimeAnimation_i::isCycling()
   return myAnim->isCycling();
 }
 
+CORBA::Boolean VISU_TimeAnimation_i::isCleaningMemoryAtEachFrame(){
+  return myAnim->isCleaningMemoryAtEachFrame();
+}
+
 CORBA::Double VISU_TimeAnimation_i::getMinTime()
 {
   return myAnim->getMinTime();
@@ -1354,6 +2008,10 @@ void VISU_TimeAnimation_i::setCycling (CORBA::Boolean theCycle)
   myAnim->setCycling(theCycle);
 }
 
+void VISU_TimeAnimation_i::setCleaningMemoryAtEachFrame(CORBA::Boolean theCycle){
+  myAnim->setCleaningMemoryAtEachFrame(theCycle);
+}
+
 SALOMEDS::SObject_ptr VISU_TimeAnimation_i::publishInStudy()
 {
   return myAnim->publishInStudy();
@@ -1373,3 +2031,19 @@ void VISU_TimeAnimation_i::saveAnimation()
 {
   myAnim->saveAnimation();
 }
+
+void VISU_TimeAnimation_i::setAnimationMode(VISU::Animation::AnimationMode theMode)
+{
+  myAnim->setAnimationMode(theMode);
+}
+
+VISU::Animation::AnimationMode VISU_TimeAnimation_i::getAnimationMode()
+{
+  return VISU::Animation::AnimationMode(myAnim->getAnimationMode());
+}
+
+void VISU_TimeAnimation_i::ApplyProperties(CORBA::Long theFieldNum, VISU::ColoredPrs3d_ptr thePrs)
+  throw (SALOME::SALOME_Exception)
+{
+  myAnim->ApplyProperties(theFieldNum, thePrs);
+}
index d2da49a4c4bcae61918a3aada2dd7ac6534c6c60..1cee7a313eb3081588ce6d4d40f6377c74154716 100644 (file)
@@ -39,6 +39,7 @@ namespace VISU
 {
   class Result_i;
   class ColoredPrs3d_i;
+  class ExecutionState;
 }
 
 struct FieldData
@@ -54,9 +55,29 @@ struct FieldData
 };
 
 
-class VISU_TimeAnimation: public QObject, public QThread
+class VISU_I_EXPORT VISU_TimeAnimation: public QObject, public QThread
 {
   Q_OBJECT;
+
+ protected:
+  CORBA::Boolean _generateFrames();
+  void _visibilityOff(int num_field, int num_frame);
+  void _clearView();
+  void _clearData(FieldData& theData);
+  void _startAnimation();
+  void _nextFrame();
+  void _prevFrame();
+  void _firstFrame();
+  void _lastFrame();
+  void _gotoFrame(CORBA::Long theFrame);
+
+  void _emitFrameChanged(long theNewFrame, double theTime);
+  void _emitStopped();
+
+  void parallelAnimation( bool& theIsDumping, QValueList<int>& theIndexList );
+  void succcessiveAnimation( bool& theIsDumping, QValueList<int>& theIndexList );
+  void saveImages( int theFieldId, double& theOneVal, int& theNbFiles, QValueList<int>& theIndexList );
+
  public:
   //static VISU::Result_i* createPresent (SALOMEDS::SObject_var theField);
   //static VISU::Storable::TRestoringMap getMapOfValue (SALOMEDS::SObject_var theSObject);
@@ -72,8 +93,8 @@ class VISU_TimeAnimation: public QObject, public QThread
 
   virtual VISU::VISUType GetType() { return VISU::TNONE;};
 
-  void addField (_PTR(SObject) theField);
-  void addField (SALOMEDS::SObject_ptr theField);
+  bool addField (_PTR(SObject) theField);
+  bool addField (SALOMEDS::SObject_ptr theField);
   FieldData& getFieldData (int theNum) { return myFieldsLst[theNum]; }
 
   CORBA::Boolean generateFrames();
@@ -84,6 +105,7 @@ class VISU_TimeAnimation: public QObject, public QThread
   void clearData(FieldData& theData);
   void clearFieldData() { myFieldsLst.clear();};
 
+  void visibilityOff(int num_field, int num_frame);
   void stopAnimation();
   void startAnimation();
   void nextFrame();
@@ -94,9 +116,12 @@ class VISU_TimeAnimation: public QObject, public QThread
 
   CORBA::Long getNbFields() { return myFieldsLst.size(); }
   CORBA::Long getNbFrames();
-  CORBA::Boolean isRunning() { return myIsActive; }
+  CORBA::Boolean isRunning();
   CORBA::Long getCurrentFrame() { return myFrame; }
 
+  long getAbsoluteFrameNumber(std::pair<int,long> theFieldTimeStamp);
+  std::pair<int,long> getRelativeFrameNumber(long theFrame);
+
   VISU::ColoredPrs3d_ptr getPresentation(CORBA::Long theField, CORBA::Long theFrame);
 
   void setPresentationType(CORBA::Long theFieldNum, VISU::VISUType theType)
@@ -123,12 +148,14 @@ class VISU_TimeAnimation: public QObject, public QThread
   QString getLastErrorMsg() { return myLastError; }
 
   CORBA::Boolean isCycling() { return myCycling; }
+  CORBA::Boolean isCleaningMemoryAtEachFrame() { return myCleaningMemoryAtEachFrame; }
 
   CORBA::Double getMinTime() { return myTimeMin;}
   CORBA::Double getMaxTime() { return myTimeMax;}
 
   void setProportional(CORBA::Boolean theProp) { myProportional = theProp; }
   void setCycling(CORBA::Boolean theCycle) { myCycling = theCycle; }
+  void setCleaningMemoryAtEachFrame(CORBA::Boolean theCycle) { myCleaningMemoryAtEachFrame = theCycle; }
 
   SALOMEDS::SObject_ptr publishInStudy();
   void restoreFromStudy(SALOMEDS::SObject_ptr theField);
@@ -136,9 +163,15 @@ class VISU_TimeAnimation: public QObject, public QThread
   void saveAnimation();
   bool isSavedInStudy() const { return !myAnimEntry.isEmpty(); }
 
+  void setAnimationMode(int theMode) { myAnimationMode = theMode; }
+  int  getAnimationMode() { return myAnimationMode; }
+
+  void ApplyProperties(CORBA::Long theFieldNum, VISU::ColoredPrs3d_ptr thePrs) throw (SALOME::SALOME_Exception);
+
  public slots:
   void setProportionalSlot(bool theProp) { myProportional = theProp; }
   void setCyclingSlot(bool theCycle) { myCycling = theCycle; }
+  void setCleaningMemoryAtEachFrameSlot(bool theCycle) { myCleaningMemoryAtEachFrame = theCycle; }
 
  signals:
   void frameChanged(long theNewFrame, double theTime);
@@ -155,13 +188,16 @@ class VISU_TimeAnimation: public QObject, public QThread
   QString myLastError;
 
   QValueList<FieldData> myFieldsLst;
-  bool myIsActive;
+  VISU::ExecutionState* myExecutionState;
   long myFrame;
+  std::vector<long> myFieldsAbsFrames;
   int mySpeed;
   bool myProportional;
   bool myCycling;
+  bool myCleaningMemoryAtEachFrame;
   _PTR(Study) myStudy;
 
+  int myAnimationMode;
   double myTimeMinVal, myTimeMaxVal; //!< Range of time stams, set by user
   double myTimeMin   , myTimeMax   ; //!< Range of time stams, available for animation
   QString myDumpPath;
@@ -176,7 +212,7 @@ class VISU_TimeAnimation: public QObject, public QThread
 };
 
 
-class VISU_TimeAnimation_i: public virtual POA_VISU::Animation,
+class VISU_I_EXPORT VISU_TimeAnimation_i: public virtual POA_VISU::Animation,
                             public virtual VISU::Base_i
 {
   VISU_TimeAnimation* myAnim;
@@ -188,7 +224,8 @@ public:
   virtual VISU::VISUType GetType() { return VISU::TANIMATION; }
   //virtual VISU::VISUType GetType() { return VISU::TNONE; }
 
-  virtual void addField(SALOMEDS::SObject_ptr theField);
+  virtual bool addField(SALOMEDS::SObject_ptr theField);
+  virtual void clearFields();
 
   virtual CORBA::Boolean generateFrames();
   virtual void generatePresentations(CORBA::Long theFieldNum);
@@ -228,17 +265,24 @@ public:
   virtual char* setDumpFormat(const char* theFormat);
 
   virtual CORBA::Boolean isCycling();
+  virtual CORBA::Boolean isCleaningMemoryAtEachFrame();
 
   virtual CORBA::Double getMinTime();
   virtual CORBA::Double getMaxTime();
 
   virtual void setProportional(CORBA::Boolean theProp);
   virtual void setCycling(CORBA::Boolean theCycle);
+  virtual void setCleaningMemoryAtEachFrame(CORBA::Boolean theCycle);
 
   virtual SALOMEDS::SObject_ptr publishInStudy();
   virtual void restoreFromStudy(SALOMEDS::SObject_ptr theField);
   virtual CORBA::Boolean isSavedInStudy();
   virtual void saveAnimation();
+
+  virtual void setAnimationMode(VISU::Animation::AnimationMode theMode);
+  virtual VISU::Animation::AnimationMode getAnimationMode();
+
+  virtual void ApplyProperties(CORBA::Long theFieldNum, VISU::ColoredPrs3d_ptr thePrs) throw (SALOME::SALOME_Exception);
 };
 
 #endif  //VISU_TIMEANIMATION_H
index e39def962171de2ebf51b674d1d6265643d5851d..cf04e4fecda14388cc76c760164dac6a5aaf15af 100644 (file)
@@ -107,6 +107,17 @@ VISU::Vectors_i
 }
 
 
+//---------------------------------------------------------------
+const char*
+VISU::Vectors_i
+::GetIconName()
+{
+  if (!IsGroupsUsed())
+    return "ICON_TREE_VECTORS";
+  else
+    return "ICON_TREE_VECTORS_GROUPS";
+}
+
 //---------------------------------------------------------------
 VISU::Vectors_i
 ::Vectors_i(EPublishInStudyMode thePublishInStudyMode) :
index f37080cedd3a77587821cb605e8931c49691e802..083452cc7e0ac6160cd9549b863e8cb2e40a08f3 100644 (file)
@@ -33,15 +33,17 @@ class VISU_VectorsPL;
 
 namespace VISU
 {
-  class Vectors_i : public virtual POA_VISU::Vectors,
-                   public virtual DeformedShape_i
+  //----------------------------------------------------------------------------
+  class VISU_I_EXPORT Vectors_i : public virtual POA_VISU::Vectors,
+                                 public virtual DeformedShape_i
   {
     static int myNbPresent;
-    Vectors_i();
     Vectors_i(const Vectors_i&);
 
   public:
+    //----------------------------------------------------------------------------
     typedef DeformedShape_i TSuperClass;
+    typedef VISU::Vectors TInterface;
 
     explicit
     Vectors_i(EPublishInStudyMode thePublishInStudyModep);
@@ -84,8 +86,6 @@ namespace VISU
     VISU::Vectors::GlyphPos 
     GetGlyphPos();
 
-    typedef VISU::Vectors TInterface;
-
     VISU_VectorsPL* 
     GetSpecificPL() const
     { 
@@ -152,6 +152,10 @@ namespace VISU
     QString
     GenerateName();
 
+    virtual
+    const char* 
+    GetIconName();
+
     //! Redefines VISU_ColoredPrs3d_i::CreateActor
     virtual
     VISU_Actor* 
index 2d489972b81d4318e7bc08ccbd84c0093dfad82e..fef5890bef2809b399e870b59941b8cb2144171b 100644 (file)
@@ -46,7 +46,7 @@ namespace VISU {
   class Prs3d_i;
   class Curve_i;
 
-  class ViewManager_i : public virtual POA_VISU::ViewManager,
+  class VISU_I_EXPORT ViewManager_i : public virtual POA_VISU::ViewManager,
                         public virtual Base_i
   {
   public:
@@ -73,7 +73,7 @@ namespace VISU {
   VISU_Actor* UpdateViewer (SUIT_ViewWindow* theViewWindow, int theDisplaing, Prs3d_i* thePrs = NULL);
   void UpdatePlot2d (Plot2d_ViewFrame *theView, int theDisplaying, Curve_i* theCurve);
 
-  VISU_Actor* FindActor(SVTK_ViewWindow* theViewWindow, VISU::Prs3d_i* thePrs3d);
+  VISU_Actor* VISU_I_EXPORT FindActor(SVTK_ViewWindow* theViewWindow, VISU::Prs3d_i* thePrs3d);
 
   void DeleteActors (VISU::Prs3d_i* thePrs);
   void DeleteActors (VISU::Curve_i* thePrs);
index 7b03bad4bc3400edbf98557d0d77560c14d0c151..5f04b6ff2f8574d747a1be839a0337ed11b811cf 100644 (file)
@@ -201,8 +201,16 @@ namespace VISU {
        break;
       case VISU::View::VIEWER:{
        ViewManagerList aViewManagerList = myApplication->viewManagers();
-       // to do something
-       // ...
+       ViewManagerList::const_iterator anIt = aViewManagerList.begin();
+       for( ; anIt != aViewManagerList.end(); anIt++ )
+       {
+         const QPtrVector<SUIT_ViewWindow>& views = (*anIt)->getViews();
+         for( int i=0; i<views.count(); i++ ) {
+           myResult = views[i]->isShown();
+           return;
+         }
+       }
+       myResult = false;
        break;
       }}
     }
@@ -1135,18 +1143,25 @@ namespace VISU {
                              CORBA::Boolean theMinor, CORBA::Long theNumMinor)
   {
     if (GetViewWindow())
-      ProcessVoidEvent(new TEnableGridEvent(myView,&Plot2d_ViewFrame::setXGrid,
-                                           theMajor,theNumMajor,theMinor,theNumMinor));
+      myView->setXGrid(theMajor,theNumMajor,theMinor,theNumMinor);
   }
   void XYPlot_i::EnableYGrid(CORBA::Boolean theMajor, CORBA::Long theNumMajor,
                             CORBA::Boolean theMinor, CORBA::Long theNumMinor)
   {
-    //asl: Plot2d_ViewFrame::setYGrid has more parameters
-    //if (GetViewWindow())
-    //  ProcessVoidEvent(new TEnableGridEvent(myView,&Plot2d_ViewFrame::setYGrid,
-    //                  theMajor,theNumMajor,theMinor,theNumMinor));
+    this->EnableYGrid(theMajor,theNumMajor,theMinor,theNumMinor,
+                     false,0,false,0);
   }
 
+  void XYPlot_i::EnableYGrid(CORBA::Boolean theMajor, CORBA::Long theNumMajor,
+                            CORBA::Boolean theMinor, CORBA::Long theNumMinor,
+                            CORBA::Boolean the2Major, CORBA::Long the2NumMajor,
+                            CORBA::Boolean the2Minor, CORBA::Long the2NumMinor)
+  {
+    if (GetViewWindow())
+      myView->setYGrid(theMajor,theNumMajor,theMinor,theNumMinor,
+                       the2Major,the2NumMajor,the2Minor,the2NumMinor);
+  }
+  
   class TSetScaleModeEvent: public SALOME_Event
   {
   public:
@@ -1606,8 +1621,8 @@ namespace VISU {
        _PTR(SObject) anObj = aList[i];
        string anEntry = anObj->GetID();
        if(MYDEBUG) MESSAGE("View3D_i::SaveViewParams - anEntry = " << anEntry);
-       if (anObj->FindAttribute(anAttr, "AttributeComment")) {
-         _PTR(AttributeComment) aCmnt (anAttr);
+       if (anObj->FindAttribute(anAttr, "AttributeString")) {
+         _PTR(AttributeString) aCmnt (anAttr);
          string aComm (aCmnt->Value());
          if (MYDEBUG) MESSAGE("View3D_i::SaveViewPoint - aComm = " << aComm);
          if (aComm.compare(View3D_i::myComment) >= 0) {
@@ -1672,8 +1687,8 @@ namespace VISU {
       _PTR(SObject) anObj = aList[i];
       string anEntry = anObj->GetID();
       if (MYDEBUG) MESSAGE("View3D_i::RestoreViewPoint - anEntry = " << anEntry);
-      if (anObj->FindAttribute(anAttr, "AttributeComment")) {
-       _PTR(AttributeComment) aCmnt (anAttr);
+      if (anObj->FindAttribute(anAttr, "AttributeString")) {
+       _PTR(AttributeString) aCmnt (anAttr);
        QString strIn(aCmnt->Value().c_str());
        Storable::TRestoringMap aMap;
        Storable::StrToMap(strIn, aMap);
@@ -2002,7 +2017,7 @@ namespace VISU {
     if(MYDEBUG) MESSAGE("View3D_i::SetPointOfView");
     SUIT_ViewWindow* aVW = GetViewWindow();
     if (aVW)
-      ProcessVoidEvent(new TSet3DViewParamEvent(&SetPointOfView,aVW,thePosition));
+      ProcessVoidEvent(new TSet3DViewParamEvent(&View3D_i::SetPointOfView,aVW,thePosition));
   }
 
   void View3D_i::GetPointOfView (SUIT_ViewWindow* theViewWindow,
@@ -2032,7 +2047,7 @@ namespace VISU {
     if(MYDEBUG) MESSAGE("View3D_i::SetViewUp");
     SUIT_ViewWindow* aVW = GetViewWindow();
     if (aVW)
-      ProcessVoidEvent(new TSet3DViewParamEvent(&SetViewUp,aVW,theViewUp));
+      ProcessVoidEvent(new TSet3DViewParamEvent(&View3D_i::SetViewUp,aVW,theViewUp));
   }
 
   void View3D_i::GetViewUp (SUIT_ViewWindow* theViewWindow,
@@ -2062,7 +2077,7 @@ namespace VISU {
     if(MYDEBUG) MESSAGE("View3D_i::SetFocalPoint");
     SUIT_ViewWindow* aVW = GetViewWindow();
     if (aVW)
-      ProcessVoidEvent(new TSet3DViewParamEvent(&SetFocalPoint,aVW,theCoord));
+      ProcessVoidEvent(new TSet3DViewParamEvent(&View3D_i::SetFocalPoint,aVW,theCoord));
   }
 
 
@@ -2114,7 +2129,7 @@ namespace VISU {
     if(MYDEBUG) MESSAGE("View3D_i::SetParallelScale");
     SUIT_ViewWindow* aVW = GetViewWindow();
     if (aVW)
-      ProcessVoidEvent(new TSetViewParamEvent(&SetParallelScale,aVW,theScale));
+      ProcessVoidEvent(new TSetViewParamEvent(&View3D_i::SetParallelScale,aVW,theScale));
   }
 
   CORBA::Double View3D_i::GetParallelScale (SUIT_ViewWindow* theViewWindow)
@@ -2295,6 +2310,7 @@ namespace VISU {
        {
          VISU::VISUType aType = myPrs->GetType();
          if (aType != VISU::TSCALARMAP &&
+             aType != VISU::TPRSMERGER &&
              aType != VISU::TDEFORMEDSHAPE &&
              aType != VISU::TSCALARMAPONDEFORMEDSHAPE) {
            myResult = "Insideframe representation is not available for this type of presentations.";
index 0c1cf1f0398deaf704dc975a7fd91ef1a2692660..c388740b97160ecc9c86c5b3aea591e1bb323d5c 100644 (file)
@@ -45,7 +45,7 @@ namespace VISU
   class Prs3d_i;
   class Curve_i;
 
-  class View_i : public virtual POA_VISU::View,
+  class VISU_I_EXPORT View_i : public virtual POA_VISU::View,
                  public virtual Storable
   {
   public:
@@ -124,7 +124,7 @@ namespace VISU
 
 
   //===========================================================================
-  class XYPlot_i : public virtual POA_VISU::XYPlot,
+  class VISU_I_EXPORT XYPlot_i : public virtual POA_VISU::XYPlot,
                    public virtual View_i
   {
   public:
@@ -152,6 +152,11 @@ namespace VISU
     virtual void EnableYGrid (CORBA::Boolean theMajor, CORBA::Long theNumMajor,
                               CORBA::Boolean theMinor, CORBA::Long theNumMinor);
 
+    virtual void EnableYGrid (CORBA::Boolean theMajor, CORBA::Long theNumMajor,
+                              CORBA::Boolean theMinor, CORBA::Long theNumMinor,
+                             CORBA::Boolean the2Major, CORBA::Long the2NumMajor,
+                              CORBA::Boolean the2Minor, CORBA::Long the2NumMinor);
+                             
     virtual void SetHorScaling (VISU::Scaling theScaling);
     virtual VISU::Scaling GetHorScaling();
     virtual void SetVerScaling (VISU::Scaling theScaling);
@@ -172,10 +177,10 @@ namespace VISU
     virtual void Update();
 
     virtual void FitAll();
-    virtual void FitXRange(const CORBA::Double xMin,const CORBA::Double xMax);
-    virtual void FitYRange(const CORBA::Double yMin,const CORBA::Double yMax);
-    virtual void FitRange(const CORBA::Double xMin,const CORBA::Double xMax,
-                         const CORBA::Double yMin,const CORBA::Double yMax);
+    virtual void FitXRange(CORBA::Double xMin, CORBA::Double xMax);
+    virtual void FitYRange(CORBA::Double yMin, CORBA::Double yMax);
+    virtual void FitRange(CORBA::Double xMin, CORBA::Double xMax,
+                                     CORBA::Double yMin, CORBA::Double yMax);
     virtual void GetFitRanges(double& xMin, double& xMax, double& yMin, double& yMax);
 
     virtual void Close();
@@ -187,7 +192,7 @@ namespace VISU
 
 
   //===========================================================================
-  class TableView_i : public virtual POA_VISU::TableView,
+  class VISU_I_EXPORT TableView_i : public virtual POA_VISU::TableView,
                       public virtual View_i
   {
   public:
@@ -210,7 +215,7 @@ namespace VISU
 
 
   //===========================================================================
-  class View3D_i : public virtual POA_VISU::View3D,
+  class VISU_I_EXPORT View3D_i : public virtual POA_VISU::View3D,
                    public virtual View_i
   {
   public:
@@ -259,7 +264,7 @@ namespace VISU
     static  void SetFocalPoint (SUIT_ViewWindow* theViewWindow, const CORBA::Double theFocalPnt[3]);
     virtual void SetFocalPoint (const VISU::View3D::XYZ theCoord);
 
-    static  void View3D_i::GetFocalPoint (SUIT_ViewWindow* theViewWindow, CORBA::Double theFocalPnt[3]);
+    static  void GetFocalPoint (SUIT_ViewWindow* theViewWindow, CORBA::Double theFocalPnt[3]);
     virtual VISU::View3D::XYZ_slice* GetFocalPoint();
 
     static  void SetParallelScale (SUIT_ViewWindow* theViewWindow, CORBA::Double theScale);