]> SALOME platform Git repositories - modules/kernel.git/commitdiff
Salome HOME
import SalomePro v1.2c
authorprascle <prascle>
Mon, 13 Oct 2003 16:48:48 +0000 (16:48 +0000)
committerprascle <prascle>
Mon, 13 Oct 2003 16:48:48 +0000 (16:48 +0000)
70 files changed:
src/Container/Component_i.cxx
src/Container/Container_i.cxx
src/Container/SALOME_ComponentPy.py
src/Container/SALOME_Component_i.hxx
src/Container/SALOME_Container.cxx
src/DataTypeCatalog/SALOME_DataTypeCatalog_Server.cxx
src/HDFPersist/HDFattrCreate.c
src/HDFPersist/HDFattrRead.c
src/HDFPersist/HDFattrWrite.c
src/HDFPersist/HDFdatasetCreate.c
src/HDFPersist/HDFdatasetGetType.c
src/HDFPersist/HDFdatasetRead.c
src/HDFPersist/HDFdatasetWrite.c
src/HDFPersist/Makefile.in
src/Logger/SALOME_Logger_Server.cxx
src/Logger/SALOME_Logger_Server.hxx
src/Logger/SALOME_Trace.cxx
src/Makefile.in
src/ModuleCatalog/SALOME_ModuleCatalog_Server.cxx
src/NamingService/SALOME_NamingServicePy.py
src/OBJECT/Makefile.in
src/OBJECT/SALOME_Actor.cxx
src/OBJECT/SALOME_Actor.h
src/OCCViewer/Makefile.in
src/Plot2d/Makefile.in
src/Plot2d/Plot2d_ViewFrame.cxx
src/Registry/SALOME_Registry_Server.cxx
src/RessourcesCatalog/SALOME_RessourcesCatalog_Server.cxx
src/SALOMEDS/Makefile.in
src/SALOMEDS/SALOMEDS_Server.cxx
src/SALOMEGUI/CLIENT_msg_en.po
src/SALOMEGUI/Makefile.in
src/SALOMEGUI/QAD_Desktop.cxx
src/SALOMEGUI/QAD_Desktop.h
src/SALOMEGUI/QAD_Message.cxx
src/SALOMEGUI/QAD_PyEditor.cxx
src/SALOMEGUI/QAD_msg_en.po
src/SALOMEGUI/SALOMEGUI_ActivateComponentDlg.cxx [new file with mode: 0644]
src/SALOMEGUI/SALOMEGUI_ActivateComponentDlg.h [new file with mode: 0644]
src/SALOMEGUI/SALOMEGUI_ExternalBrowserDlg.cxx [new file with mode: 0644]
src/SALOMEGUI/SALOMEGUI_ExternalBrowserDlg.h [new file with mode: 0644]
src/SALOMEGUI/SALOMEGUI_msg_en.po
src/SALOME_PY/Makefile.in
src/SALOME_PYQT/Makefile.in
src/SALOME_SWIG/batchmode_salome.py
src/SALOME_SWIG/salome_test.py
src/SUPERVGraph/Makefile.in
src/Session/Makefile.in
src/Session/SALOME_Session_Server.cxx
src/TOOLSDS/Makefile.in
src/TOOLSGUI/Makefile.in
src/TestContainer/TestContainer.cxx
src/Utils/Utils_Timer.hxx
src/VTKFilter/Makefile.in [new file with mode: 0644]
src/VTKFilter/SALOME_GeometryFilter.cxx [new file with mode: 0644]
src/VTKFilter/SALOME_GeometryFilter.h [new file with mode: 0644]
src/VTKFilter/SALOME_PassThroughFilter.cxx [new file with mode: 0644]
src/VTKFilter/SALOME_PassThroughFilter.h [new file with mode: 0644]
src/VTKFilter/SALOME_Transform.cxx [new file with mode: 0644]
src/VTKFilter/SALOME_Transform.h [new file with mode: 0644]
src/VTKFilter/SALOME_TransformFilter.cxx [new file with mode: 0644]
src/VTKFilter/SALOME_TransformFilter.h [new file with mode: 0644]
src/VTKViewer/Makefile.in
src/VTKViewer/VTKViewer_InteractorStyleSALOME.cxx
src/VTKViewer/VTKViewer_InteractorStyleSALOME.h
src/VTKViewer/VTKViewer_RenderWindow.cxx
src/VTKViewer/VTKViewer_RenderWindowInteractor.cxx
src/VTKViewer/VTKViewer_VectorText.cxx [new file with mode: 0644]
src/VTKViewer/VTKViewer_VectorText.h [new file with mode: 0644]
src/VTKViewer/VTKViewer_ViewFrame.cxx

index 400072d0f32a15650fa51c36ca632881427d6104..09d463416e59a143acb2e0ed96544e6453dd044d 100644 (file)
@@ -35,6 +35,7 @@ using namespace std;
 #include "utilities.h"
 
 extern bool _Sleeping ;
+static Engines_Component_i * theEngines_Component ;
 
 Engines_Component_i::Engines_Component_i()
 {
@@ -47,8 +48,10 @@ Engines_Component_i::Engines_Component_i(CORBA::ORB_ptr orb,
                                         const char *instanceName,
                                         const char *interfaceName,
                                          bool notif) :
-  _instanceName(instanceName), _interfaceName(interfaceName),
-  _myConnexionToRegistry(0), _ThreadId(0) , _graphName("") , _nodeName("") {
+  _instanceName(instanceName),
+  _interfaceName(interfaceName),
+  _myConnexionToRegistry(0),
+  _ThreadId(0) , _ThreadCpuUsed(0) , _Executed(false) , _graphName("") , _nodeName("") {
   MESSAGE("Component constructor with instanceName "<< _instanceName);
   _orb = CORBA::ORB::_duplicate(orb);
   _poa = PortableServer::POA::_duplicate(poa);
@@ -71,8 +74,7 @@ Engines_Component_i::Engines_Component_i(CORBA::ORB_ptr orb,
   : _instanceName(instanceName),
     _interfaceName(interfaceName),
     _myConnexionToRegistry(0),
-    _ThreadId(0)
-{
+    _ThreadId(0) , _ThreadCpuUsed(0) , _Executed(false) , _graphName("") , _nodeName("") {
 //  MESSAGE("Component constructor with instanceName "<< _instanceName);
   _orb = CORBA::ORB::_duplicate(orb);
   _poa = PortableServer::POA::_duplicate(poa);
@@ -134,11 +136,13 @@ PortableServer::ObjectId * Engines_Component_i::getId()
 
 void Engines_Component_i::beginService(const char *serviceName)
 {
-  MESSAGE("Send BeginService notification for " << serviceName << endl
+  MESSAGE(pthread_self() << "Send BeginService notification for " << serviceName << endl
          << "Component instance : " << _instanceName << endl << endl);
   _ThreadId = pthread_self() ;
   _StartUsed = 0 ;
   _StartUsed = CpuUsed_impl() ;
+  _ThreadCpuUsed = 0 ;
+  _Executed = true ;
   _serviceName = serviceName ;
   if ( pthread_setcanceltype( PTHREAD_CANCEL_ASYNCHRONOUS , NULL ) ) {
     perror("pthread_setcanceltype ") ;
@@ -148,15 +152,17 @@ void Engines_Component_i::beginService(const char *serviceName)
     perror("pthread_setcancelstate ") ;
     exit(0) ;
   }
-  MESSAGE("Return from BeginService for " << serviceName
-          << " ThreadId " << _ThreadId
-          << " _graphName " << _graphName << " _nodeName " << _nodeName );
+//  MESSAGE(pthread_self() << " Return from BeginService for " << serviceName
+//          << " ThreadId " << _ThreadId << " StartUsed " << _StartUsed
+//          << " _graphName " << _graphName << " _nodeName " << _nodeName );
 }
 
 void Engines_Component_i::endService(const char *serviceName)
 {
-  MESSAGE("Send EndService notification for " << serviceName << endl
-         << "Component instance : " << _instanceName << endl << endl);
+  _ThreadCpuUsed = CpuUsed_impl() ;
+  MESSAGE(pthread_self() << " Send EndService notification for " << serviceName << endl
+         << " Component instance : " << _instanceName << " StartUsed " << _StartUsed << " _ThreadCpuUsed "
+          << _ThreadCpuUsed << endl << endl);
   _ThreadId = 0 ;
 }
 
@@ -176,7 +182,7 @@ char* Engines_Component_i::nodeName() {
   return CORBA::string_dup( _nodeName.c_str() ) ;
 }
 
-bool Killer( int ThreadId , int signum ) {
+bool Engines_Component_i::Killer( int ThreadId , int signum ) {
   if ( ThreadId ) {
     if ( signum == 0 ) {
       if ( pthread_cancel( ThreadId ) ) {
@@ -184,7 +190,7 @@ bool Killer( int ThreadId , int signum ) {
         return false ;
       }
       else {
-        MESSAGE("Killer : ThreadId " << ThreadId << " pthread_canceled") ;
+        MESSAGE(pthread_self() << "Killer : ThreadId " << ThreadId << " pthread_canceled") ;
       }
     }
     else {
@@ -193,7 +199,7 @@ bool Killer( int ThreadId , int signum ) {
         return false ;
       }
       else {
-        MESSAGE("Killer : ThreadId " << ThreadId << " pthread_killed("
+        MESSAGE(pthread_self() << "Killer : ThreadId " << ThreadId << " pthread_killed("
                 << signum << ")") ;
       }
     }
@@ -202,12 +208,12 @@ bool Killer( int ThreadId , int signum ) {
 }
 
 bool Engines_Component_i::Kill_impl() {
-  MESSAGE("Engines_Component_i::Kill_i() pthread_t "<< pthread_self()
-          << " pid " << getpid() << " instanceName "
-          << _instanceName.c_str() << " interface " << _interfaceName.c_str()
-          << " machineName " << GetHostname().c_str()<< " _id " << hex << _id
-          << dec << " _ThreadId " << _ThreadId << " this " << hex << this
-          << dec ) ;
+//  MESSAGE("Engines_Component_i::Kill_i() pthread_t "<< pthread_self()
+//          << " pid " << getpid() << " instanceName "
+//          << _instanceName.c_str() << " interface " << _interfaceName.c_str()
+//          << " machineName " << GetHostname().c_str()<< " _id " << hex << _id
+//          << dec << " _ThreadId " << _ThreadId << " this " << hex << this
+//          << dec ) ;
   bool RetVal = false ;
   if ( _ThreadId > 0 && pthread_self() != _ThreadId ) {
     RetVal = Killer( _ThreadId , 0 ) ;
@@ -268,21 +274,68 @@ bool Engines_Component_i::Resume_impl() {
 
 }
 
+void SetCpuUsed() {
+  theEngines_Component->SetCurCpu() ;
+}
+void Engines_Component_i::SetCurCpu() {
+  _ThreadCpuUsed =  CpuUsed() ;
+//  MESSAGE(pthread_self() << " Engines_Component_i::SetCurCpu() _ThreadCpuUsed " << _ThreadCpuUsed) ;
+}
+
 #include <sys/time.h>
 #include <sys/resource.h>
 #include <unistd.h>
 
-long Engines_Component_i::CpuUsed_impl() {
+long Engines_Component_i::CpuUsed() {
+  long cpu = 0 ;
   struct rusage usage ;
-  long cpu ;
-  if ( getrusage( RUSAGE_SELF , &usage ) == -1 ) {
-    perror("GraphBase::CpuUsed") ;
-    return 0 ;
+  if ( _ThreadId || _Executed ) {
+    if ( getrusage( RUSAGE_SELF , &usage ) == -1 ) {
+      perror("Engines_Component_i::CpuUsed") ;
+      return 0 ;
+    }
+    cpu = usage.ru_utime.tv_sec - _StartUsed ;
+//    cout << pthread_self() << " Engines_Component_i::CpuUsed " << " " << _serviceName
+//         << usage.ru_utime.tv_sec << " - " << _StartUsed << " = " << cpu << endl ;
+  }
+  else {
+//    cout << pthread_self() << "Engines_Component_i::CpuUsed _ThreadId " << _ThreadId << " " << _serviceName
+//         << " _StartUsed " << _StartUsed << endl ;
+  }
+  return cpu ;
+}
+
+long Engines_Component_i::CpuUsed_impl() {
+  long cpu = 0 ;
+  if ( _ThreadId || _Executed ) {
+    if ( _ThreadId > 0 ) {
+      if ( pthread_self() != _ThreadId ) {
+        if ( _Sleeping ) {
+        }
+        else {
+// Get Cpu in the appropriate thread with that object !...
+          theEngines_Component = this ;
+          Killer( _ThreadId ,SIGUSR1 ) ;
+        }
+        cpu = _ThreadCpuUsed ;
+      }
+      else {
+        _ThreadCpuUsed = CpuUsed() ;
+        cpu = _ThreadCpuUsed ;
+//        cout << pthread_self() << " Engines_Component_i::CpuUsed_impl " << _serviceName << " " << cpu
+//             << endl ;
+      }
+    }
+    else {
+      cpu = _ThreadCpuUsed ;
+//      cout << pthread_self() << " Engines_Component_i::CpuUsed_impl " << _serviceName << " " << cpu
+//           << endl ;
+    }
+  }
+  else {
+//    cout << pthread_self() << "Engines_Component_i::CpuUsed_impl _ThreadId " << _ThreadId << " "
+//         << _serviceName << " _StartUsed " << _StartUsed << endl ;
   }
-//  return usage.ru_utime.__time_t tv_sec ;
-  cout << "CpuUsed " << usage.ru_utime.tv_sec << " " << usage.ru_utime.tv_usec << " "
-       << usage.ru_stime.tv_sec << " " << usage.ru_stime.tv_usec << endl ;
-  cpu = usage.ru_utime.tv_sec - _StartUsed ;
   return cpu ;
 }
 
index 9cef646b8b75c5fe20e401c937d31be7d8d69cc7..05f7c84f8bd39602717fe45a2f742ada8b3cbbd1 100644 (file)
@@ -296,16 +296,14 @@ Engines::Container_ptr Engines_Container_i::start_impl(
   return Engines::Container::_nil() ;
 }
 
-Engines::Component_ptr Engines_Container_i::load_impl
-         (const char* nameToRegister,
-         const char* componentName)
-{
-  BEGIN_OF("Container_i::load_impl");
+Engines::Component_ptr Engines_Container_i::load_impl( const char* nameToRegister,
+                                                      const char* componentName ) {
 
   _numInstanceMutex.lock() ; // lock on the instance number
+  BEGIN_OF( "Container_i::load_impl " << componentName ) ;
   _numInstance++ ;
   char _aNumI[12];
-  sprintf(_aNumI,"%d",_numInstance) ;
+  sprintf( _aNumI , "%d" , _numInstance ) ;
 
   string _impl_name = componentName;
   string _nameToRegister = nameToRegister;
@@ -313,17 +311,16 @@ Engines::Component_ptr Engines_Container_i::load_impl
   //SCRUTE(instanceName);
 
   //string absolute_impl_name = _library_path + "lib" + _impl_name + ".so";
-  string absolute_impl_name(_impl_name);
-  //  SCRUTE(absolute_impl_name);
+  string absolute_impl_name( _impl_name ) ;
+  SCRUTE(absolute_impl_name);
   void* handle;
-  handle = dlopen(absolute_impl_name.c_str(), RTLD_LAZY);
-  if (!handle)
-    {
-      INFOS("Can't load shared library : " << absolute_impl_name);
-      INFOS("error dlopen: " << dlerror());
-      _numInstanceMutex.unlock() ;
-      return Engines::Component::_nil() ;
-    }
+  handle = dlopen( absolute_impl_name.c_str() , RTLD_LAZY ) ;
+  if ( !handle ) {
+    INFOS("Can't load shared library : " << absolute_impl_name);
+    INFOS("error dlopen: " << dlerror());
+    _numInstanceMutex.unlock() ;
+    return Engines::Component::_nil() ;
+  }
   
   string factory_name = _nameToRegister + string("Engine_factory");
   //  SCRUTE(factory_name) ;
@@ -334,61 +331,47 @@ Engines::Component_ptr Engines_Container_i::load_impl
                             PortableServer::ObjectId *, 
                             const char *, 
                             const char *) ; 
-//  typedef  PortableServer::ObjectId * (*FACTORY_FUNCTION_SUPERV)
-//                            (CORBA::ORB_ptr,
-//                          PortableServer::POA_ptr, 
-//                          PortableServer::ObjectId *, 
-//                          const char *, 
-//                          const char * ,
-//                             int , char ** ) ; 
-
   FACTORY_FUNCTION Component_factory = (FACTORY_FUNCTION) dlsym(handle, factory_name.c_str());
-//  FACTORY_FUNCTION_SUPERV Component_factory_superv = (FACTORY_FUNCTION_SUPERV) Component_factory ;
-
-//   PortableServer::ObjectId * (*Component_factory) (CORBA::ORB_ptr,
-//                                                PortableServer::POA_ptr,
-//                                                PortableServer::ObjectId *,
-//                                                const char *,
-//                                                const char *) =
-//     (PortableServer::ObjectId * (*) (CORBA::ORB_ptr,
-//                                  PortableServer::POA_ptr, 
-//                                  PortableServer::ObjectId *, 
-//                                  const char *, 
-//                                  const char *)) 
-//     dlsym(handle, factory_name.c_str());
 
   char *error ;
-  if ((error = dlerror()) != NULL)
-    {
+  if ( (error = dlerror() ) != NULL) {
       INFOS("Can't resolve symbol: " + factory_name);
       SCRUTE(error);
       _numInstanceMutex.unlock() ;
       return Engines::Component::_nil() ;
     }
 
-  // Instanciate required CORBA object
-  PortableServer::ObjectId * id ;
-//  if ( factory_name == "SupervisionEngine_factory" ) { // for Python ...
-//    id = (Component_factory_superv) (_orb, _poa, _id, instanceName.c_str(),
-//                                     _nameToRegister.c_str(), _argc , _argv );
-//  }
-//  else {
-    id = (Component_factory) (_orb, _poa, _id, instanceName.c_str(),
-                              _nameToRegister.c_str());
-//  }
+  string component_registerName = _containerName + "/" + _nameToRegister;
+  Engines::Component_var iobject = Engines::Component::_nil() ;
+  try {
+    CORBA::Object_var obj = _NS->Resolve( component_registerName.c_str() ) ;
+    if ( CORBA::is_nil( obj ) ) {
+// Instanciate required CORBA object
+      PortableServer::ObjectId * id ;
+      id = (Component_factory) ( _orb, _poa, _id, instanceName.c_str() ,
+                                 _nameToRegister.c_str() ) ;
   // get reference from id
-  CORBA::Object_var o = _poa->id_to_reference(*id);
-  Engines::Component_var iobject = Engines::Component::_narrow(o) ;
+      obj = _poa->id_to_reference(*id);
+      iobject = Engines::Component::_narrow( obj ) ;
 
 //  _numInstanceMutex.lock() ; // lock on the add on handle_map (necessary ?)
   // register the engine under the name containerName.dir/nameToRegister.object
-  string component_registerName = _containerName + "/" + _nameToRegister;
-  _NS->Register(iobject, component_registerName.c_str()) ;
+      _NS->Register( iobject , component_registerName.c_str() ) ;
+      MESSAGE( "Container_i::load_impl " << component_registerName.c_str() << " bound" ) ;
+    }
+    else { // JR : No ReBind !!!
+      MESSAGE( "Container_i::load_impl " << component_registerName.c_str() << " already bound" ) ;
+      iobject = Engines::Component::_narrow( obj ) ;
+    }
+  }
+  catch (...) {
+    MESSAGE( "Container_i::load_impl catched" ) ;
+  }
 
 //Jr  _numInstanceMutex.lock() ; // lock on the add on handle_map (necessary ?)
   handle_map[instanceName] = handle;
+  END_OF("Container_i::load_impl");
   _numInstanceMutex.unlock() ;
-//  END_OF("Container_i::load_impl");
   return Engines::Component::_duplicate(iobject);
 }
 
@@ -435,18 +418,20 @@ void ActSigIntHandler() {
   struct sigaction SigIntAct ;
   SigIntAct.sa_sigaction = &SigIntHandler ;
   SigIntAct.sa_flags = SA_SIGINFO ;
-  if ( sigaction( SIGINT , &SigIntAct, NULL ) ) {
+  if ( sigaction( SIGINT | SIGUSR1 , &SigIntAct, NULL ) ) {
     perror("SALOME_Container main ") ;
     exit(0) ;
   }
   else {
-    INFOS("SigIntHandler activated") ;
+    INFOS(pthread_self() << "SigIntHandler activated") ;
   }
 }
 
+void SetCpuUsed() ;
+
 void SigIntHandler(int what , siginfo_t * siginfo ,
                                         void * toto ) {
-  MESSAGE("SigIntHandler what     " << what << endl
+  MESSAGE(pthread_self() << "SigIntHandler what     " << what << endl
           << "              si_signo " << siginfo->si_signo << endl
           << "              si_code  " << siginfo->si_code << endl
           << "              si_pid   " << siginfo->si_pid) ;
@@ -458,16 +443,21 @@ void SigIntHandler(int what , siginfo_t * siginfo ,
   }
   else {
     ActSigIntHandler() ;
-    _Sleeping = true ;
-    INFOS("SigIntHandler BEGIN sleeping.")
-    MESSAGE("SigIntHandler BEGIN sleeping.") ;
-    int count = 0 ;
-    while( _Sleeping ) {
-      sleep( 1 ) ;
-      count += 1 ;
+    if ( siginfo->si_signo == SIGUSR1 ) {
+      SetCpuUsed() ;
+    }
+    else {
+      _Sleeping = true ;
+      INFOS("SigIntHandler BEGIN sleeping.")
+      MESSAGE("SigIntHandler BEGIN sleeping.") ;
+      int count = 0 ;
+      while( _Sleeping ) {
+        sleep( 1 ) ;
+        count += 1 ;
+      }
+      INFOS("SigIntHandler LEAVE sleeping after " << count << " s.")
+      MESSAGE("SigIntHandler LEAVE sleeping after " << count << " s.") ;
     }
-    INFOS("SigIntHandler LEAVE sleeping after " << count << " s.")
-    MESSAGE("SigIntHandler LEAVE sleeping after " << count << " s.") ;
     return ;
   }
 }
index 1ac2e3cfc11d678d80149042e27d7cb8d5a4868c..004d6ededc699551b7832e1fe58bc96043c36041 100755 (executable)
@@ -40,6 +40,8 @@ from libNOTIFICATION import *
 
 from SALOME_utilities import *
 
+from thread import *
+
 #=============================================================================
 
 #define an implementation of the component interface
@@ -66,6 +68,8 @@ class SALOME_ComponentPy_i (Engines__POA.Component):
         self._nodeName = ''
         self._ThreadId = 0
         self._StartUsed = 0
+        self._ThreadCpuUsed = 0
+        self._Executed = 0
 
         naming_service = SALOME_NamingServicePy_i(self._orb)
         Component_path = "/Containers/" +  os.getenv( "HOSTNAME" ) + "/" + self._containerName + "/" + self._interfaceName
@@ -127,15 +131,21 @@ class SALOME_ComponentPy_i (Engines__POA.Component):
     #-------------------------------------------------------------------------
 
     def beginService(self , serviceName ):
-        MESSAGE(  "Send BeginService notification for " + str(serviceName) + "for graph/node" + str(self._graphName) + str(self._nodeName) )
+        MESSAGE(  "Send BeginService notification for " + str(serviceName) + " for graph/node " + str(self._graphName) + " " + str(self._nodeName) )
         MESSAGE(  "Component instance : " + str ( self._instanceName ) )
+        self._serviceName = str(serviceName)
+        self._ThreadId = get_ident()
         self._StartUsed = 0
         self._StartUsed = self.CpuUsed_impl()
+        self._ThreadCpuUsed = 0
+        self._Executed = 1
+        MESSAGE( "SALOME_ComponentPy_i::beginService _StartUsed " + str( self._ThreadId ) + " " + str( self._StartUsed ) )
+        
 
     #-------------------------------------------------------------------------
 
     def endService(self , serviceName ):
-        MESSAGE(  "Send EndService notification for " + str(serviceName) + "for graph/node" + str(self._graphName) + str(self._nodeName) )
+        MESSAGE(  "Send EndService notification for " + str( self._ThreadId ) + " " + str(serviceName) + " for graph/node " + str(self._graphName) + " " + str(self._nodeName) + " CpuUsed " + str( self.CpuUsed_impl() ) )
         MESSAGE(  "Component instance : " + str(self._instanceName) )
 
     #-------------------------------------------------------------------------
@@ -183,10 +193,16 @@ class SALOME_ComponentPy_i (Engines__POA.Component):
     #-------------------------------------------------------------------------
 
     def CpuUsed_impl(self):
-        cpu = time.clock()
-        cpuL = int(cpu) - self._StartUsed
-        print "SALOME_ComponentPy_i::CpuUsed_impl ",cpuL,type(cpuL)
-        return cpuL
+        if ( self._ThreadId | self._Executed ) :
+            if self._ThreadId == get_ident() :
+                cpu = time.clock()
+                self._ThreadCpuUsed = int(cpu) - self._StartUsed
+                MESSAGE( "SALOME_ComponentPy_i::CpuUsed_impl " + self._serviceName + " " + str( int(cpu) ) + " - " + str( self._StartUsed ) + " = " + str( self._ThreadCpuUsed ) )
+                return self._ThreadCpuUsed
+            MESSAGE( "SALOME_ComponentPy_i::CpuUsed_impl " + self._serviceName + " " + str( self._ThreadCpuUsed ) )
+            return self._ThreadCpuUsed
+        MESSAGE( "SALOME_ComponentPy_i::CpuUsed_impl self._StartUsed " + self._serviceName + " " + str(self._StartUsed) )
+        return 0
 
     #-------------------------------------------------------------------------
 
index a5d462b6542c97dec3d334f638f600d14a077c1c..fc537d1c84880778e7c08c8230fbbde4f00040db 100644 (file)
@@ -79,10 +79,13 @@ public:
   void Names( const char * graphName , const char * nodeName ) ;
   char * graphName() ;
   char * nodeName() ;
+  bool Killer( int ThreadId , int signum );
   bool Kill_impl();
   bool Stop_impl();
   bool Suspend_impl();
   bool Resume_impl();
+  void SetCurCpu() ;
+  long CpuUsed() ;
   long CpuUsed_impl() ;
 
 protected:
@@ -102,6 +105,8 @@ protected:
 private:
   pthread_t _ThreadId ;
   long      _StartUsed ;
+  long      _ThreadCpuUsed ;
+  bool      _Executed ;
 };
 
 #endif
index 3914a57f383c9cbb44860161bc223e859c9d1f7e..ce8c05628e828dd287590121683474295a4cec21 100644 (file)
@@ -32,7 +32,7 @@ using namespace std;
 
 # include "Utils_ORB_INIT.hxx"
 # include "Utils_SINGLETON.hxx"
-
+#include "SALOME_NamingService.hxx"
 #include "SALOME_Container_i.hxx"
 #include <iostream>
 #include <string>
@@ -67,21 +67,87 @@ int main(int argc, char* argv[])
     CORBA::ORB_var &orb = init( argc , argv ) ;
  
     // Obtain a reference to the root POA.
-    CORBA::Object_var obj = orb->resolve_initial_references("RootPOA");
-    PortableServer::POA_var root_poa = PortableServer::POA::_narrow(obj);
-
     // obtain the root poa manager
-    PortableServer::POAManager_var pman = root_poa->the_POAManager();
-
+    //
+    long TIMESleep = 250000000;
+    int NumberOfTries = 40;
+    int a;
+    timespec ts_req;
+    ts_req.tv_nsec=TIMESleep;
+    ts_req.tv_sec=0;
+    timespec ts_rem;
+    ts_rem.tv_nsec=0;
+    ts_rem.tv_sec=0;
+    CosNaming::NamingContext_var inc;
+    PortableServer::POA_var root_poa;
+    CORBA::Object_var theObj;
+    CORBA::Object_var obj;
+    CORBA::Object_var object;
+    SALOME_Logger::Logger_var log;
+    SALOME_NamingService &naming = *SINGLETON_<SALOME_NamingService>::Instance() ;
+    int CONTAINER=0;
+    const char * Env = getenv("USE_LOGGER");
+    int EnvL =0;
+    if ((Env!=NULL) && (strlen(Env)))
+      EnvL=1;
+
+    CosNaming::Name name;
+    name.length(1);
+    name[0].id=CORBA::string_dup("Logger");    
+    PortableServer::POAManager_var pman; 
+    for (int i = 1; i<=NumberOfTries; i++){
+      if (i!=1) 
+       a=nanosleep(&ts_req,&ts_rem);
+      try{ 
+       obj = orb->resolve_initial_references("RootPOA");
+       if(!CORBA::is_nil(obj))
+         root_poa = PortableServer::POA::_narrow(obj);
+       if(!CORBA::is_nil(root_poa))
+         pman = root_poa->the_POAManager();
+       if(!CORBA::is_nil(orb)) 
+         theObj = orb->resolve_initial_references("NameService");
+       if (!CORBA::is_nil(theObj))
+         inc = CosNaming::NamingContext::_narrow(theObj);
+      }
+      catch( CORBA::COMM_FAILURE& )
+       {
+         MESSAGE( "Container: CORBA::COMM_FAILURE: Unable to contact the Naming Service" )
+           }
+      if(!CORBA::is_nil(inc)) {
+       MESSAGE( "Container: Naming Service was found" )
+         if(EnvL==1){
+           for(int j=1; j<=NumberOfTries; j++){
+             if (j!=1) 
+               a=nanosleep(&ts_req, &ts_rem);
+             try{
+                   object = inc->resolve(name);
+                 }
+                 catch(CosNaming::NamingContext::NotFound){ MESSAGE( "Container: Logger Server wasn't found" ) }
+                 catch(...){ MESSAGE( "Container: Unknown exception" ) }
+                 if (!CORBA::is_nil(object))
+                   log = SALOME_Logger::Logger::_narrow(object);
+                 if (!CORBA::is_nil(log)){
+                   MESSAGE( "Container: Logger Server was found" )
+                     log->ping();
+                    CONTAINER=1;
+                   break;
+                 }
+               }}
+         }
+      if ((CONTAINER==1)||((EnvL==0)&&(!CORBA::is_nil(inc))))
+            break;
+             }    
+
+     // 
     // define policy objects     
     PortableServer::ImplicitActivationPolicy_var implicitActivation =
       root_poa->create_implicit_activation_policy(PortableServer::NO_IMPLICIT_ACTIVATION) ;
 
-      // default = NO_IMPLICIT_ACTIVATION
+    // default = NO_IMPLICIT_ACTIVATION
     PortableServer::ThreadPolicy_var threadPolicy =
       root_poa->create_thread_policy(PortableServer::ORB_CTRL_MODEL) ;
-      // default = ORB_CTRL_MODEL, other choice SINGLE_THREAD_MODEL
-
+    // default = ORB_CTRL_MODEL, other choice SINGLE_THREAD_MODEL
+    
     // create policy list
     CORBA::PolicyList policyList;
     policyList.length(2);
index e9b4de72f8d758721143625f406bd13c89f90e1b..95c4ce6a1fb1e47842998e0ce8e1a79de28d1fbf 100644 (file)
@@ -31,23 +31,86 @@ using namespace std;
 #include "SALOME_NamingService.hxx"
 #include "SALOME_DataTypeCatalog_impl.hxx"
 #include "utilities.h"
-
+# include "Utils_SINGLETON.hxx"
 int main(int argc,char **argv)
 {
   try {
   CosNaming::NamingContext_var _rootContext, catalogContext;
-
   // initialize the ORB
-
   CORBA::ORB_ptr orb = CORBA::ORB_init (argc, argv);
-
   // initialize POA
+  //
+  long TIMESleep = 250000000;
+  int NumberOfTries = 40;
+  int a;
+  timespec ts_req;
+  ts_req.tv_nsec=TIMESleep;
+  ts_req.tv_sec=0;
+  timespec ts_rem;
+  ts_rem.tv_nsec=0;
+  ts_rem.tv_sec=0;
+  CosNaming::NamingContext_var inc;
+  PortableServer::POA_var poa;
+  CORBA::Object_var theObj;
+  CORBA::Object_var obj;
+  CORBA::Object_var object;
+  SALOME_Logger::Logger_var log;
+  int DATA_TYPE_CATALOG=0;
+  const char * Env = getenv("USE_LOGGER"); 
+  int EnvL =0;
+  if ((Env!=NULL) && (strlen(Env)))
+    EnvL=1;  
+  CosNaming::Name name;
+  name.length(1);
+  name[0].id=CORBA::string_dup("Logger");    
+  PortableServer::POAManager_var mgr; 
+  for (int i = 1; i<=NumberOfTries; i++){
+    if (i!=1) 
+      a=nanosleep(&ts_req,&ts_rem);
+    try{ 
+      obj = orb->resolve_initial_references("RootPOA");
+      if(!CORBA::is_nil(obj))
+       poa = PortableServer::POA::_narrow(obj);
+      if(!CORBA::is_nil(poa))
+       mgr = poa->the_POAManager();
+      if(!CORBA::is_nil(orb)) 
+       theObj = orb->resolve_initial_references("NameService");
+      if (!CORBA::is_nil(theObj))
+       inc = CosNaming::NamingContext::_narrow(theObj);}
+    catch( CORBA::COMM_FAILURE& )
+      {
+       MESSAGE( "Data Type Catalog: CORBA::COMM_FAILURE: Unable to contact the Naming Service" )
+         }
+    if(!CORBA::is_nil(inc)) {
+      MESSAGE( "Data Type Catalog: Naming Service was found" )
+       if(EnvL==1){
+         CORBA::ORB_var orb1 = CORBA::ORB_init(argc,argv) ;
+         SALOME_NamingService &NS = *SINGLETON_<SALOME_NamingService>::Instance() ;
+         NS.init_orb( orb1 ) ;
+         for(int j=1; j<=NumberOfTries; j++){
+           if (j!=1) 
+                 a=nanosleep(&ts_req, &ts_rem);
+           try{
+             object = inc->resolve(name);}
+           catch(CosNaming::NamingContext::NotFound){ MESSAGE( "Data Type Catalog: Logger Server wasn't found" ) }
+           catch(...){ MESSAGE( "Data Type Catalog: Unknown exception" ) }
+           if (!CORBA::is_nil(object))
+             log = SALOME_Logger::Logger::_narrow(object);
+           if (!CORBA::is_nil(log)){
+             MESSAGE( "Data Type Catalog: Logger Server was found" )
+               log->ping();
+             DATA_TYPE_CATALOG=1;
+                 break;
+           }
+           
+         }}
+    }
+    if ((DATA_TYPE_CATALOG==1)||((EnvL==0)&&(!CORBA::is_nil(inc))))
+      break;
+           }
 
-  CORBA::Object_var poaobj = orb->resolve_initial_references ("RootPOA");
-
-  PortableServer::POA_var poa = PortableServer::POA::_narrow (poaobj);
-  PortableServer::POAManager_var mgr = poa->the_POAManager(); 
-
+  //
   // Active catalog
 
   SALOME_DataTypeCatalogImpl* Catalogue_i = new SALOME_DataTypeCatalogImpl(argc, argv);
@@ -70,7 +133,7 @@ int main(int argc,char **argv)
  
   poa->destroy(1,1);
  
 }
+ }
     catch(CORBA::SystemException&) {
     INFOS("Caught CORBA::SystemException.")
   }
index 9d4b3dc5410c27eb3995b3bdc4647fb91871d3ed..e3e176b66a4e9800507c1314130686c4316b2bdb 100644 (file)
@@ -55,7 +55,11 @@ hdf_idt HDFattrCreate(hdf_idt pid,char *name,hdf_type type, size_t size)
     break;
     
   case HDF_INT32 :
+#ifdef PCLINUX
+    type_hdf = H5T_STD_I32BE;  
+#else
     type_hdf = H5T_NATIVE_INT;
+#endif
     break;
     
   case HDF_INT64 :
index 464e9c2a96d351b6658f37f4779b2a1521d346b8..25474b9a73774dd666c65289c7260683b2b95acb 100644 (file)
@@ -42,8 +42,12 @@ hdf_err HDFattrRead(hdf_idt id,void *val)
 {
   hdf_err ret = -1;
   hdf_idt type_hdf;
-
+  
   if ((type_hdf = H5Aget_type(id)) >= 0) {
+#ifdef PCLINUX    
+    if ((H5Tget_class(type_hdf) == H5T_INTEGER) && (H5Tget_size(type_hdf) == 4)) 
+      type_hdf = H5T_NATIVE_INT;
+#endif 
     ret = H5Aread(id, type_hdf, val);
   }
 
index b1dbea58844e473d2f53616106f2d5a81ae2c1e9..61d378427b3b46523592906a96c7a5a3ad697fdb 100644 (file)
@@ -41,15 +41,30 @@ Module : SALOME
 hdf_err HDFattrWrite(hdf_idt id, void *val)
 {
   hdf_idt type_id;
-  hdf_type type;
-  hdf_class_type hdf_type;
   int ret = 0;
+#ifdef PCLINUX
+  int isI32BE = 0;
+#endif
 
   if ((type_id = H5Aget_type(id)) < 0)
     return -1;
 
+#ifdef PCLINUX
+  if((H5Tget_class(type_id) == H5T_INTEGER) && (H5Tget_size(type_id) == 4)) {
+    isI32BE = 1; /* See HDFattrCreate */
+    if (H5Tconvert(H5T_NATIVE_INT,H5T_STD_I32BE,1,(void *)val,NULL,NULL) < 0)
+      return -1;
+  }
+#endif
+
   ret = H5Awrite(id,type_id, val);
 
+
+#ifdef PCLINUX
+  if (isI32BE && (H5Tconvert(H5T_STD_I32BE,H5T_NATIVE_INT,1,(void *)val,NULL,NULL) < 0)) 
+    return -1;
+#endif
+
   H5Tclose(type_id);
 
   return ret;
index dd4772525973d5ff4f1a85ef35d73b2aeafd0714..70e8ddd503597d89e043f4c5a8d5effd14dc07c8 100644 (file)
@@ -59,7 +59,11 @@ hdf_idt HDFdatasetCreate(hdf_idt pid,char *name,hdf_type type,
       break;
 
     case HDF_INT32 :
+#ifdef PCLINUX
+      type_hdf = H5T_STD_I32BE;  
+#else
       type_hdf = H5T_NATIVE_INT;
+#endif
       break;
  
     case HDF_INT64 :
index 9cc4bbd6a8c53e571777813d7fac9b86631bc19a..722849d1a025789ec18524ff5f682c56bdf39686 100644 (file)
@@ -34,14 +34,12 @@ HDFdatasetGetType(hdf_idt id)
 {
   hdf_idt type_id;
   hdf_type type;
-  hdf_class_type hdf_type;
   hdf_size_type size;
 
   if ((type_id = H5Dget_type(id)) < 0)
     return HDF_NONE;
 
-  hdf_type = H5Tget_class(type_id);
-  switch (hdf_type)
+  switch (H5Tget_class(type_id))
     {
     case H5T_INTEGER :
       size = H5Tget_size(type_id);
index 7cb951b8d6dfc533f7842a32e56e061d79f56f42..0c89c3902439aaecb622c38805353f8e262a1c12 100644 (file)
@@ -46,8 +46,12 @@ hdf_err HDFdatasetRead(hdf_idt id, void *val)
   if ((datatype = H5Dget_type(id)) < 0)
     return -1;
 
-  if ((ret = H5Dread(id,datatype,H5S_ALL,H5S_ALL,
-                     H5P_DEFAULT, val)) < 0)
+#ifdef PCLINUX    
+  if ((H5Tget_class(datatype) == H5T_INTEGER) && (H5Tget_size(datatype) == 4)) 
+    datatype = H5T_NATIVE_INT;
+#endif 
+
+  if ((ret = H5Dread(id,datatype,H5S_ALL,H5S_ALL,H5P_DEFAULT, val)) < 0)
     return -1;
 
   return 0;
index f48c6a27c10df14346bf4e4f9bdf322d96b09004..07dbefdd9dd64d1e0e5ac3e3503fcb31859cba90 100644 (file)
@@ -42,13 +42,32 @@ hdf_err HDFdatasetWrite(hdf_idt id, void *val)
 {
   hdf_idt datatype;
   hdf_err ret;
+#ifdef PCLINUX
+  int isI32BE = 0;
+  int size;
+#endif
 
   if ((datatype = H5Dget_type(id)) < 0)
     return -1;
 
-  if ((ret = H5Dwrite(id,datatype,H5S_ALL,H5S_ALL,
-                     H5P_DEFAULT, val)) < 0)
+#ifdef PCLINUX
+  if((H5Tget_class(datatype) == H5T_INTEGER) && (H5Tget_size(datatype) == 4)) {
+    isI32BE = 1; /* See HDFdatasetCreate */
+    size = (int)HDFdatasetGetSize(id) / 4;
+    if(size == 0) 
+      return -1;
+    if(H5Tconvert(H5T_NATIVE_INT, H5T_STD_I32BE, size, (void *)val, NULL, NULL) < 0) 
+      return -1;
+  }
+#endif
+
+  if ((ret = H5Dwrite(id, datatype, H5S_ALL, H5S_ALL, H5P_DEFAULT, val)) < 0) 
+    return -1;
+
+#ifdef PCLINUX
+  if (isI32BE && (H5Tconvert(H5T_STD_I32BE, H5T_NATIVE_INT, size, (void *)val, NULL, NULL) < 0)) 
     return -1;
+#endif
 
   return 0;
 }
index b00d8b2c9e8417d79a53d5b74a5f74e6dbef9555..84212da676e63f7bc48c8362b92ec1e4e802659d 100644 (file)
@@ -96,7 +96,7 @@ LIB_SRC =  \
 #BIN = test9 test8
 
 CPPFLAGS+=$(OCC_INCLUDES) $(HDF5_INCLUDES) -DPCLINUX
-LDFLAGS+= $(OCC_LIBS) $(HDF5_LIBS)
+LDFLAGS+= $(CAS_LDPATH) -lTKernel $(HDF5_LIBS)
 
 
 @CONCLUDE@
index 3d40b45f72d2633d6d28059cf6d57e7b678198d1..c3f7acce130c8aaa2e9052a581823d2fac008483 100644 (file)
@@ -11,7 +11,9 @@
 using namespace std;
 #include <iostream>
 #include "SALOME_Logger_Server.hxx"
-
+#include <SALOMEconfig.h>
+#include <sys/types.h>
+#include <unistd.h>
 omni_mutex Logger::myLock;
 
 /////////////////////////////////////////////////////////////////////
@@ -49,6 +51,11 @@ void Logger::putMessage(const char* message)
   myLock.unlock();
 }
 
+void Logger::ping()
+{
+  cout<<" Logger::ping() pid "<< getpid()<<endl;
+}
+
 int main(int argc, char **argv)
 {
   if (argc > 2)
@@ -59,51 +66,73 @@ int main(int argc, char **argv)
   try
     {
       //Initialize the ORB
-      CORBA::ORB_var orb = CORBA::ORB_init(argc,argv) ;
-
-      CORBA::Object_var obj = orb->resolve_initial_references("RootPOA") ;
-      PortableServer::POA_var poa = PortableServer::POA::_narrow(obj) ;
-
-      // NB. You can activate the POA before or after
-      // activating objects in that POA.
-      PortableServer::POAManager_var pman = poa->the_POAManager();
-      pman->activate();
-
+      long TIMESleep = 250000000;
+      int NumberOfTries = 40;
+      int a;
+      timespec ts_req;
+      ts_req.tv_nsec=TIMESleep;
+      ts_req.tv_sec=0;
+      timespec ts_rem;
+      ts_rem.tv_nsec=0;
+      ts_rem.tv_sec=0;
+      CosNaming::NamingContext_var inc;
+      CORBA::ORB_var orb; 
+      SALOME_Logger::Logger_var myLoggerRef;
+      CORBA::Object_var theObj;
       Logger* myLogger;
+      CORBA::Object_var obj;
+      PortableServer::POA_var poa;
+      PortableServer::POAManager_var pman;   
+      orb = CORBA::ORB_init(argc,argv) ;     
+      for (int i = 1; i<=NumberOfTries; i++){        
+       if (i!=1) 
+         a=nanosleep(&ts_req,&ts_rem);  
+       obj = orb->resolve_initial_references("RootPOA") ;
+       if(!CORBA::is_nil(obj))
+         poa = PortableServer::POA::_narrow(obj) ;
+       pman = poa->the_POAManager();
+       // NB. You can activate the POA before or after
+       // activating objects in that POA.
+       
+       // This activates the object in the root POA (by default), and
+       // returns a reference to it.
+       //NB. You can't use SALOME_NamingService class because it uses MESSAGE macro
+       //Otherwise, you will get segmentation fault.   
+       //Get initial naming context
+       try{
+      if(!CORBA::is_nil(orb)) 
+       theObj = orb->resolve_initial_references("NameService");
+      //Narrow to NamingContext
+      if (!CORBA::is_nil(theObj)){
+       inc = CosNaming::NamingContext::_narrow(theObj);
+      }
+      }catch(CORBA::COMM_FAILURE&)
+       {
+        cout<<"Logger Server: CORBA::COMM_FAILURE: Unable to contact the Naming Service"<<endl;
+          }
+      catch(...){ cout<<"Logger Server: Unknown exception dealed with Naming Service" <<endl; } 
+       if (!CORBA::is_nil(inc)){
+         cout<<"Logger Server: Naming Service was found"<<endl; 
+         break;}
+      }
       if (argc == 1)
        myLogger = new Logger();
       else
        myLogger = new Logger(argv[1]);
-
-
-      // This activates the object in the root POA (by default), and
-      // returns a reference to it.
-      SALOME_Logger::Logger_var myLoggerRef = myLogger->_this();
-
-       //NB. You can't use SALOME_NamingService class because it uses MESSAGE macro
-      //Otherwise, you will get segmentation fault.   
-
-      //Get initial naming context
-      CORBA::Object_var theObj = orb->resolve_initial_references("NameService");
-      //Narrow to NamingContext
-      CosNaming::NamingContext_var inc = CosNaming::NamingContext::_narrow(theObj);
-
+      myLoggerRef = myLogger->_this();
       CosNaming::Name name;
       name.length(1);
       name[0].id = CORBA::string_dup("Logger");
-      
       inc->bind(name,myLoggerRef);
-
       myLogger->_remove_ref();
-
+      pman->activate();   
       orb->run() ;
-
       orb->destroy() ;
     }
   catch(CORBA::COMM_FAILURE& ex) 
     {
       cerr << "Caught system exception COMM_FAILURE -- unable to contact the "
-       << "object." << endl;
+          << "object." << endl;
     }
   catch(CORBA::SystemException&) 
     {
index 4b000c50ca742362ab66eb6a3e5b165dce61bf2e..4b1441bd119b05858b699ee307e1b8e560461018 100644 (file)
@@ -29,6 +29,7 @@ public:
        virtual ~Logger();
        //put message into one special place for all servers
        void putMessage(const char* message);
+        void ping();
 private:
        //if m_putIntoFile is true all messages will be put into special 
        //otherwise all messages will be put into terminal via cout 
index ab5abd2b2e747a1049813193ab9121e7b7e2170d..e3185daf6120a226e3b6a7515fd74b359d65b650 100644 (file)
@@ -34,28 +34,54 @@ SALOME_Trace::SALOME_Trace()
 
       //Initialize the ORB
       CORBA::ORB_var orb = CORBA::ORB_init(argc,argv) ;
-      //Get initial naming context
-      CORBA::Object_var theObj = orb->resolve_initial_references("NameService");
-      //Narrow to NamingContext
-      CosNaming::NamingContext_var inc = CosNaming::NamingContext::_narrow(theObj);
-
+      long TIMESleep = 250000000;
+      int NumberOfTries = 40;
+      int a;
+      timespec ts_req;
+      ts_req.tv_nsec=TIMESleep;
+      ts_req.tv_sec=0;
+      timespec ts_rem;
+      ts_rem.tv_nsec=0;
+      ts_rem.tv_sec=0;
+      CosNaming::NamingContext_var inc;
+      CORBA::Object_var theObj;
+      CORBA::Object_var obj;
       CosNaming::Name name;
       name.length(1);
       name[0].id = CORBA::string_dup("Logger");
-      
-      CORBA::Object_var obj;
-      obj = inc->resolve(name);
-      
-      m_pInterfaceLogger = SALOME_Logger::Logger::_narrow(obj) ;
-
+      for (int i = 1; i<=NumberOfTries; i++){
+       if (i!=1) 
+           a=nanosleep(&ts_req,&ts_rem);
+         try{ 
+           if(!CORBA::is_nil(orb)) 
+             theObj = orb->resolve_initial_references("NameService");
+           if (!CORBA::is_nil(theObj))
+             inc = CosNaming::NamingContext::_narrow(theObj);
+         }  
+         catch( CORBA::COMM_FAILURE& )
+           {
+             cout<<"SALOME_TRACE: CORBA::COMM_FAILURE: Unable to contact the Naming Service" <<endl;
+           }
+          catch(...){ cout<< "SALOME_TRACE: Unknown exception dealed with Naming Service" <<endl; }
+         
+         if(!CORBA::is_nil(inc)) {
+           obj = inc->resolve(name);
+           m_pInterfaceLogger = SALOME_Logger::Logger::_narrow(obj);
+           if (!CORBA::is_nil(m_pInterfaceLogger))
+             cout<<"SALOME_TRACE: Logger Server was found"<<endl;
+           break;
+           
+         }
+      }
+          
     }
-  catch (const CosNaming::NamingContext::NotFound&)
-    {
-//       cout << "Caught exception: Naming Service can't found Logger";
-    }
-  catch (CORBA::COMM_FAILURE&)
-    {
-//       cout << "Caught CORBA::SystemException CommFailure.";
+      catch (const CosNaming::NamingContext::NotFound&)
+       {
+         //       cout << "Caught exception: Naming Service can't found Logger";
+       }
+      catch (CORBA::COMM_FAILURE&)
+       {
+         //       cout << "Caught CORBA::SystemException CommFailure.";
     }
   catch (CORBA::SystemException&)
     {
index e3694451242e9dee870c0cca7e3c16b4a5e2e9f7..44e371730504c8f8b29e12104413955ad67dc78c 100644 (file)
@@ -34,9 +34,8 @@ VPATH=.:@srcdir@
 
 SUBDIRS = MSG2QM Logger Utils PatchQt NamingService Registry ModuleCatalog DataTypeCatalog \
          RessourcesCatalog Notification NOTIFICATION_SWIG Container TestContainer LifeCycleCORBA \
-          HDFPersist OBJECT TOOLSDS SALOMEDS SALOMEGUI Plot2d VTKViewer OCCViewer SUPERVGraph Session \
-         SALOME_SWIG TOOLSGUI SALOME_PY RegistryDisplay ModuleGenerator \
-         SALOME_PYQT Loader
+          HDFPersist VTKFilter OBJECT TOOLSDS SALOMEDS SALOMEGUI Plot2d VTKViewer OCCViewer SUPERVGraph \
+         Session SALOME_SWIG TOOLSGUI SALOME_PY RegistryDisplay ModuleGenerator SALOME_PYQT Loader
 
 ifeq (@WITHMPICH@,yes)
   SUBDIRS+= MPIContainer
index 817f31b9357c0e0199afe00955dd6843e0e5b43b..c76af7d3ce49ed82ed149129f61f7aed3ce4f76d 100644 (file)
@@ -30,6 +30,7 @@ using namespace std;
 #include "SALOME_NamingService.hxx"
 #include "SALOME_ModuleCatalog_impl.hxx"
 #include "utilities.h"
+# include "Utils_SINGLETON.hxx"
 
 //#define CHECKTIME
 #ifdef CHECKTIME
@@ -46,12 +47,77 @@ int main(int argc,char **argv)
   CORBA::ORB_ptr orb = CORBA::ORB_init (argc, argv);
 
   // initialize POA
-
-  CORBA::Object_var poaobj = orb->resolve_initial_references ("RootPOA");
-
-  PortableServer::POA_var poa = PortableServer::POA::_narrow (poaobj);
-  PortableServer::POAManager_var mgr = poa->the_POAManager(); 
-
+  //
+   long TIMESleep = 250000000;
+   int NumberOfTries = 40;
+   int a;
+   timespec ts_req;
+   ts_req.tv_nsec=TIMESleep;
+   ts_req.tv_sec=0;
+   timespec ts_rem;
+   ts_rem.tv_nsec=0;
+   ts_rem.tv_sec=0;
+   CosNaming::NamingContext_var inc;
+   PortableServer::POA_var poa;
+   CORBA::Object_var theObj;
+   CORBA::Object_var obj;
+   CORBA::Object_var object;
+   SALOME_Logger::Logger_var log;
+   int MODULE_CATALOG=0;
+   const char * Env = getenv("USE_LOGGER");
+   int EnvL =0;
+   if ((Env!=NULL) && (strlen(Env)))
+     EnvL=1;
+   CosNaming::Name name;
+   name.length(1);
+   name[0].id=CORBA::string_dup("Logger");    
+   PortableServer::POAManager_var mgr; 
+   for (int i = 1; i<=NumberOfTries; i++){
+     if (i!=1) 
+       a=nanosleep(&ts_req,&ts_rem);
+     try{ 
+       obj = orb->resolve_initial_references("RootPOA");
+       if(!CORBA::is_nil(obj))
+        poa = PortableServer::POA::_narrow(obj);
+       if(!CORBA::is_nil(poa))
+           mgr = poa->the_POAManager();
+       if(!CORBA::is_nil(orb)) 
+        theObj = orb->resolve_initial_references("NameService"); 
+     }
+     catch( CORBA::COMM_FAILURE& )
+       {
+        MESSAGE( "Module Catalog Server: CORBA::COMM_FAILURE: Unable to contact the Naming Service" )
+          }
+     if (!CORBA::is_nil(theObj)){
+       inc = CosNaming::NamingContext::_narrow(theObj);
+       if(!CORBA::is_nil(inc)) {
+        MESSAGE( "Module Catalog Server: Naming Service was found" )
+        if(EnvL==1){
+          CORBA::ORB_var orb1 = CORBA::ORB_init(argc,argv) ;
+          SALOME_NamingService &NS = *SINGLETON_<SALOME_NamingService>::Instance() ;
+          NS.init_orb( orb1 ) ;
+          for(int j=1; j<=NumberOfTries; j++){
+            if (j!=1) 
+              a=nanosleep(&ts_req, &ts_rem);
+            try{
+              object = inc->resolve(name);}
+            catch(CosNaming::NamingContext::NotFound){ MESSAGE( "Logger Server wasn't found" ) }
+            catch(...){ MESSAGE( "Module Catalog Server: Unknown exception" ) }
+            if (!CORBA::is_nil(object))
+              log = SALOME_Logger::Logger::_narrow(object);
+            if (!CORBA::is_nil(log)){
+              MESSAGE( "Module Catalog Server: Logger Server was found" )
+              log->ping();
+              MODULE_CATALOG=1;
+              break;
+            }
+                }}
+       }}
+     if ((MODULE_CATALOG==1)||((EnvL==0)&&(!CORBA::is_nil(inc))))
+       break;
+        }
+  
+   //
   // Active catalog
 
   SALOME_ModuleCatalogImpl* Catalogue_i = new SALOME_ModuleCatalogImpl(argc, argv);
index db2d7563314cce3fbed3d706f1c853dd3c7613c8..8b41f25bed92501afef8dd5c8c0c570bda57dcc5 100644 (file)
@@ -29,6 +29,7 @@
 #  $Header$
 
 import sys
+import time
 from omniORB import CORBA
 import CosNaming
 from string import *
@@ -48,15 +49,28 @@ class SALOME_NamingServicePy_i:
         MESSAGE ( "SALOME_NamingServicePy_i::__init__" )
         self._orb = orb
         # initialize root context and current context
-        obj =self._orb.resolve_initial_references("NameService")
-        self._root_context =obj._narrow(CosNaming.NamingContext)
-        self._current_context = self._root_context
+       ok = 0
+       steps = 40
+       while steps > 0 and ok == 0:
+         try:
+            obj =self._orb.resolve_initial_references("NameService")
+            self._root_context =obj._narrow(CosNaming.NamingContext)
+            self._current_context = self._root_context
 
         
-        if self._root_context is None :
-            MESSAGE ( "Name Service Reference is invalid" )
-            sys.exit(1)
+            if self._root_context is None :
+              #MESSAGE ( "Name Service Reference is invalid" )
+              #sys.exit(1)
+             MESSAGE(" Name service not found")
+           else:
+             ok = 1
+         except CORBA.COMM_FAILURE, ex:
+           MESSAGE(" Name service not found")
+         time.sleep(0.25)
+         steps = steps - 1
+        if steps == 0: 
+          MESSAGE ( "Name Service Reference is invalid" )
+          sys.exit(1)
     #-------------------------------------------------------------------------
     def Register(self,ObjRef, Path):
         MESSAGE ( "SALOME_NamingServicePy_i::Register" )
index 45d8270d7c53c053f68ae7fcf3f34f1e063073e8..f881efad695ee01accc105f0b0efdc4187846b17 100644 (file)
@@ -35,7 +35,6 @@ VPATH=.:@srcdir@:@top_srcdir@/idl
 EXPORT_HEADERS = SALOME_InteractiveObject.hxx \
                 Handle_SALOME_InteractiveObject.hxx \
                 SALOME_Actor.h \
-                SALOME_Transform.h \
                 SALOME_AISShape.hxx \
                 Handle_SALOME_AISShape.hxx \
                 SALOME_AISObject.hxx \
@@ -47,7 +46,6 @@ EXPORT_HEADERS = SALOME_InteractiveObject.hxx \
 LIB = libSalomeObject.la
 LIB_SRC =       SALOME_InteractiveObject.cxx \
                 SALOME_Actor.cxx \
-                SALOME_Transform.cxx \
                 SALOME_AISShape.cxx\
                 SALOME_AISObject.cxx
 
@@ -58,7 +56,7 @@ BIN =
 BIN_SRC        =
 
 CPPFLAGS+=$(PYTHON_INCLUDES) $(OCC_INCLUDES) $(VTK_INCLUDES) $(OGL_INCLUDES)
-LDFLAGS+=$(OCC_LIBS) $(VTK_LIBS) $(OGL_LIBS) $(PYTHON_LIBS)
+LDFLAGS+= $(VTK_LIBS) $(OGL_LIBS) $(PYTHON_LIBS) $(CAS_LDPATH) -lTKV3d -lSalomeVTKFilter
 
 
 @CONCLUDE@
index 38f46f8be3b9b39fb10ccd603151919f242efafb..8029335ebb34d14f9bc34070c70f7f264e6d56dc 100644 (file)
 //  Module : SALOME
 //  $Header$
 
-using namespace std;
 /*!
   \class SALOME_Actor SALOME_Actor.h
   \brief Abstract class of SALOME Objects in VTK.
 */
 
 #include "SALOME_Actor.h"
+#include "SALOME_Transform.h"
+#include "SALOME_TransformFilter.h"
+#include "SALOME_PassThroughFilter.h"
+#include "SALOME_GeometryFilter.h"
  
 // SALOME Includes
 #include "utilities.h"
@@ -41,9 +44,12 @@ using namespace std;
 #include <vtkObjectFactory.h>
 #include <vtkDataSetMapper.h>
 #include <vtkPolyDataMapper.h>
-#include <vtkGeometryFilter.h>
 #include <vtkTransformPolyDataFilter.h>
 
+using namespace std;
+
+int SALOME_POINT_SIZE = 3;
+
 void SALOME_Actor::Render(vtkRenderer *ren, vtkMapper *Mapper )
 {
   if (this->Mapper == NULL) {
@@ -122,14 +128,15 @@ void SALOME_Actor::ReleaseGraphicsResources(vtkWindow *renWin)
   this->Mapper->ReleaseGraphicsResources(renWin);
 }
 
+
 void SALOME_Actor::AddToRender(vtkRenderer* theRenderer){
   theRenderer->AddActor(this);
 }
-
 void SALOME_Actor::RemoveFromRender(vtkRenderer* theRenderer){
   theRenderer->RemoveActor(this);
 }
 
+
 vtkPolyData* SALOME_Actor::GetPolyDataInput(){
   return myPassFilter[3]->GetPolyDataOutput();
 }
@@ -137,16 +144,12 @@ vtkPolyData* SALOME_Actor::GetPolyDataInput(){
 void SALOME_Actor::SetMapper(vtkMapper* theMapper){
   if(theMapper){
     myPassFilter[0]->SetInput(theMapper->GetInput());
-    myPassFilter[0]->Update();
     myPassFilter[1]->SetInput(myPassFilter[0]->GetPolyDataOutput());
-    myPassFilter[1]->Update();
     myTransformFilter->SetInput(myPassFilter[1]->GetPolyDataOutput());
     myPassFilter[2]->SetInput(myTransformFilter->GetOutput());
-    myPassFilter[2]->Update();
     myPassFilter[3]->SetInput(myPassFilter[2]->GetPolyDataOutput());
-    myPassFilter[3]->Update();
     if(vtkDataSetMapper* aMapper = dynamic_cast<vtkDataSetMapper*>(theMapper))
-      aMapper->SetInput(myPassFilter[3]->GetOutput());
+      aMapper->SetInput(myPassFilter[3]->GetPolyDataOutput());
     else if(vtkPolyDataMapper* aMapper = dynamic_cast<vtkPolyDataMapper*>(theMapper))
       aMapper->SetInput(myPassFilter[3]->GetPolyDataOutput());
   }
@@ -158,8 +161,29 @@ void SALOME_Actor::SetTransform(SALOME_Transform* theTransform){
   myTransformFilter->Modified();
 }
 
+
+void SALOME_Actor::SetRepresentation(int theMode) { 
+  myRepresentation = theMode;
+  switch(theMode){
+  case 3 : 
+    myPassFilter[0]->SetInside(true);
+    GetProperty()->SetRepresentation(1);
+    break;
+  case 0 : 
+    GetProperty()->SetPointSize(SALOME_POINT_SIZE);  
+  default :
+    GetProperty()->SetRepresentation(myRepresentation);
+    myPassFilter[0]->SetInside(false);
+  }
+}
+int SALOME_Actor::GetRepresentation(){ 
+  return myRepresentation;
+}
+
+
 SALOME_Actor::SALOME_Actor(){
   PreviewProperty = NULL;
+  myRepresentation = 2;
   myTransformFilter = SALOME_TransformFilter::New();
   myPassFilter.push_back(SALOME_PassThroughFilter::New());
   myPassFilter.push_back(SALOME_PassThroughFilter::New());
@@ -168,6 +192,7 @@ SALOME_Actor::SALOME_Actor(){
 }
 
 SALOME_Actor::~SALOME_Actor(){
+  myTransformFilter->Delete();
   SetPreviewProperty(NULL);
   for(int i = 0, iEnd = myPassFilter.size(); i < iEnd; i++)
     if(myPassFilter[i] != NULL) 
index 0a994e6160239a947201ed1cf227e3fd044cff8e..ea35d47ef07d50a14ed8021b8927b7cc39b60a5e 100644 (file)
 #define SALOME_ACTOR_H
 
 // SALOME Includes
-#include "SALOME_Transform.h"
+#include "VTKViewer_Common.h"
 #include "SALOME_InteractiveObject.hxx"
 #ifndef _Handle_SALOME_InteractiveObject_HeaderFile
 #include "Handle_SALOME_InteractiveObject.hxx"
 #endif
-
 #include <vector.h>
-#include "VTKViewer_Common.h"
 
-class SALOME_Actor : public vtkLODActor 
-{
+class SALOME_Transform;
+class SALOME_TransformFilter;
+class SALOME_PassThroughFilter;
+
+extern int SALOME_POINT_SIZE;
+
+class SALOME_Actor : public vtkLODActor{
  protected:
   //constructor should be protected due to first implementation of this class
   //it was abstract class
@@ -102,6 +105,9 @@ class SALOME_Actor : public vtkLODActor
   virtual void SetMapper(vtkMapper* theMapper); 
   virtual void SetTransform(SALOME_Transform* theTransform); 
 
+  virtual void SetRepresentation(int theMode);
+  virtual int GetRepresentation();
+    
  protected:
   vtkProperty         *PreviewProperty;
   Standard_Boolean    ispreselected;
@@ -116,5 +122,7 @@ class SALOME_Actor : public vtkLODActor
   SALOME_Transform *myTransform;
   std::vector<SALOME_PassThroughFilter*> myPassFilter;
   SALOME_TransformFilter *myTransformFilter;
+  int myRepresentation;
 };
+
 #endif // SALOME_ACTOR_H
index 8295107ee4639fe6ae0de5b1d136830776548544..42fe2c55c53fb20e8726a296a65e19ce023400b6 100644 (file)
@@ -69,7 +69,7 @@ LIB_CLIENT_IDL = SALOMEDS.idl \
 
 
 CPPFLAGS+=$(QT_INCLUDES) $(OCC_INCLUDES) $(OGL_INCLUDES) $(PYTHON_INCLUDES)
-LDFLAGS+=$(QT_MT_LIBS) $(OCC_LIBS) $(OGL_LIBS)
+LDFLAGS+=$(QT_MT_LIBS) $(OGL_LIBS) -lSalomeGUI
 
 
 @CONCLUDE@
index c13d335c50d1dd072a9f6eaa6c9bcecc1f9ef3f4..3cf0eb4e89507871a66d807c76cbe8f19d5006d3 100644 (file)
@@ -57,7 +57,7 @@ LIB_CLIENT_IDL = SALOMEDS.idl \
 #LDFLAGS+=$(QT_MT_LIBS) $(QWT_LIBS)
 
 CPPFLAGS+=$(QT_INCLUDES) $(OCC_INCLUDES) $(OGL_INCLUDES) $(PYTHON_INCLUDES) $(QWT_INCLUDES) 
-LDFLAGS+=$(QT_MT_LIBS) $(OCC_LIBS) $(OGL_LIBS) $(QWT_LIBS)
+LDFLAGS+=$(QT_MT_LIBS) $(OGL_LIBS) $(QWT_LIBS) -lSalomeGUI
 
 
 @CONCLUDE@
index 2c9c8d7488d950e4e10ae735602376d28eeb2891..b5d094b9fa131ba1c3b581e6b707b465b8d32e8d 100644 (file)
@@ -299,7 +299,17 @@ void Plot2d_ViewFrame::rename( const Handle(SALOME_InteractiveObject)& IObject,
 */
 bool Plot2d_ViewFrame::isInViewer( const Handle(SALOME_InteractiveObject)& IObject ) 
 {
-  return ( getCurveByIO( IObject ) != NULL );
+  if( getCurveByIO( IObject ) != NULL )
+    return 1;
+  else{
+    if(!IObject.IsNull()){
+      QIntDictIterator<Plot2d_Curve> it(myCurves);
+      for(; it.current();++it){
+       if(it.current()->hasIO() && it.current()->getTableIO()->isSame(IObject))
+         return 1;
+      }}
+  }
+  return 0;
 }
 /*!
   Returns true if interactive object is presented in the viewer and displayed
index 6cba1c7d8c2374c90d80cc302a21ca43862864e3..e4aee0f7d45e78ad97e6260f224cb071bab5cba0 100644 (file)
@@ -74,76 +74,133 @@ int main( int argc , char **argv )
        ASSERT(ptrSessionName) ;
        ASSERT(strlen( ptrSessionName )>0) ;
        const char *registryName = "Registry" ;
-
-
-       try
-       {
-               ORB_INIT &init = *SINGLETON_<ORB_INIT>::Instance() ;
-               CORBA::ORB_var &orb = init( argc , argv ) ;
-
-
-               SALOME_NamingService &naming = *SINGLETON_<SALOME_NamingService>::Instance() ;
-               naming.init_orb( orb ) ;
-
-               RegistryService *ptrRegistry = SINGLETON_<RegistryService>::Instance() ;
-               ptrRegistry->SessionName( ptrSessionName ) ;
-               Registry::Components_var varComponents = ptrRegistry->_this() ;
-
-               // The RegistryService must not already exist.
-
-               try
-               {
-                       CORBA::Object_var pipo = naming.Resolve( registryName ) ;
-                       if (CORBA::is_nil(pipo) )  throw ServiceUnreachable() ;
-                       MESSAGE("RegistryService servant already existing" ) ;
-                       exit( EXIT_FAILURE ) ;
-               }
-               catch( const ServiceUnreachable &ex )
-               {
+        ORB_INIT &init = *SINGLETON_<ORB_INIT>::Instance() ;
+       CORBA::ORB_var &orb = init( argc , argv ) ;
+       //
+       long TIMESleep = 250000000;
+       int NumberOfTries = 40;
+       int a;
+       timespec ts_req;
+       ts_req.tv_nsec=TIMESleep;
+       ts_req.tv_sec=0;
+       timespec ts_rem;
+       ts_rem.tv_nsec=0;
+       ts_rem.tv_sec=0;
+       CosNaming::NamingContext_var inc;
+       PortableServer::POA_var poa;
+       CORBA::Object_var theObj;
+       CORBA::Object_var obj;
+       CORBA::Object_var object;
+       SALOME_Logger::Logger_var log;
+       SALOME_NamingService &naming = *SINGLETON_<SALOME_NamingService>::Instance() ;
+       Registry::Components_var varComponents;
+       int REGISTRY=0;
+       const char * Env = getenv("USE_LOGGER");
+        int EnvL =0;
+       if ((Env!=NULL) && (strlen(Env)))
+         EnvL=1;
+       CosNaming::Name name;
+       name.length(1);
+       name[0].id=CORBA::string_dup("Logger");  
+       PortableServer::POAManager_var manager; 
+       for (int i = 1; i<=NumberOfTries; i++){
+         if (i!=1) 
+           a=nanosleep(&ts_req,&ts_rem);
+         try{ 
+           obj = orb->resolve_initial_references("RootPOA");
+           if(!CORBA::is_nil(obj))
+             poa = PortableServer::POA::_narrow(obj);
+           if(!CORBA::is_nil(poa))
+             manager = poa->the_POAManager();
+           if(!CORBA::is_nil(orb)) 
+             theObj = orb->resolve_initial_references("NameService");
+           if (!CORBA::is_nil(theObj))
+             inc = CosNaming::NamingContext::_narrow(theObj);
+           }
+         catch( CORBA::COMM_FAILURE& )
+           {
+             MESSAGE( "Registry Server: CORBA::COMM_FAILURE: Unable to contact the Naming Service" )
                }
-               catch( const CORBA::Exception &exx )
-               {
-               }
-               string absoluteName = string("/") + registryName;
-               naming.Register( varComponents , absoluteName.c_str() ) ;
-
-
-               CORBA::Object_var poaObj = orb->resolve_initial_references( "RootPOA" ) ;
-               PortableServer::POA_var poa = PortableServer::POA::_narrow(poaObj) ;
-               PortableServer::POAManager_var manager = poa->the_POAManager() ;
-
-
-               MESSAGE("On attend les requetes des clients") ;
-               try
-               {
-                       // Activation du POA
-                       MESSAGE("Activation du POA") ;
-                       manager->activate() ;
-
-                       // Lancement de l'ORB
-                       MESSAGE("Lancement de l'ORB") ;
+         if(!CORBA::is_nil(inc)) {
+           MESSAGE( "Registry Server: Naming Service was found" )
+             if(EnvL==1){
+               for(int j=1; j<=NumberOfTries; j++){
+                 if (j!=1) 
+                   a=nanosleep(&ts_req, &ts_rem);
+                 try{
+                   object = inc->resolve(name);
+                 }
+                 catch(CosNaming::NamingContext::NotFound){ MESSAGE( "Registry Server: Logger Server wasn't found" ) }
+                 catch(...){ MESSAGE( "Registry Server: Unknown exception" ) }
+                 
+                 if (!CORBA::is_nil(object))
+                   log = SALOME_Logger::Logger::_narrow(object);
+                 if (!CORBA::is_nil(log)){
+                   MESSAGE( "Registry Server: Logger Server was found" )
+                     log->ping();
+                    REGISTRY=1;
+                   break;
+                 }
+               }}
+         }
+         if ((REGISTRY==1)||((EnvL==0)&&(!CORBA::is_nil(inc))))
+            break;
+             }
+        //
+       try
+         {
+           naming.init_orb( orb ) ;
+           RegistryService *ptrRegistry = SINGLETON_<RegistryService>::Instance() ;
+           ptrRegistry->SessionName( ptrSessionName ) ;
+           varComponents = ptrRegistry->_this() ;
+           // The RegistryService must not already exist.
+           
+           try
+             {
+               CORBA::Object_var pipo = naming.Resolve( registryName ) ;
+               if (CORBA::is_nil(pipo) )  throw ServiceUnreachable() ;
+               MESSAGE("RegistryService servant already existing" ) ;
+               exit( EXIT_FAILURE ) ;
+             }
+           catch( const ServiceUnreachable &ex )
+             {
+             }
+           catch( const CORBA::Exception &exx )
+             {
+             }
+           string absoluteName = string("/") + registryName;
+           naming.Register( varComponents , absoluteName.c_str() ) ;
+           MESSAGE("On attend les requetes des clients") ;
+           try
+             {
+               // Activation du POA
+               MESSAGE("Activation du POA") ;
+               manager->activate() ;
+               
+               // Lancement de l'ORB
+               MESSAGE("Lancement de l'ORB") ;
 #ifdef CHECKTIME
-                       Utils_Timer timer;
-                       timer.Start();
-                       timer.Stop();
-                       MESSAGE("SALOME_Registry_Server.cxx - orb->run()");
-                       timer.ShowAbsolute();
+               Utils_Timer timer;
+               timer.Start();
+               timer.Stop();
+               MESSAGE("SALOME_Registry_Server.cxx - orb->run()");
+               timer.ShowAbsolute();
 #endif
-                       orb->run() ;
-               }
-               catch( const CORBA::Exception &ex )
-               {
-                       MESSAGE("Erreur systeme") ;
-                       return EXIT_FAILURE ;
-               }
-
-       }
-       catch( const SALOME_Exception &ex )
-       {
-               MESSAGE( "Communication Error : " << ex.what() )
+               orb->run() ;
+             }
+           catch( const CORBA::Exception &ex )
+             {
+               MESSAGE("Erreur systeme") ;
                return EXIT_FAILURE ;
-       }
-
+             }
+           
+         }
+       catch( const SALOME_Exception &ex )
+         {
+           MESSAGE( "Communication Error : " << ex.what() )
+             return EXIT_FAILURE ;
+         }
+       
        END_OF( argv[0] ) ;
        return 0 ;
 }
index 519f0b8453835f1b42505d28ce5424fcf9750fc9..827efd482290070a410eb27e229409b79de5bdf5 100644 (file)
@@ -31,7 +31,7 @@ using namespace std;
 #include "SALOME_NamingService.hxx"
 #include "SALOME_RessourcesCatalog_impl.hxx"
 #include "utilities.h"
-
+# include "Utils_SINGLETON.hxx"
 int main(int argc,char **argv)
 {
   try {
@@ -42,20 +42,80 @@ int main(int argc,char **argv)
   CORBA::ORB_ptr orb = CORBA::ORB_init (argc, argv);
 
   // initialize POA
-
-  CORBA::Object_var poaobj = orb->resolve_initial_references ("RootPOA");
-
-  PortableServer::POA_var poa = PortableServer::POA::_narrow (poaobj);
-  PortableServer::POAManager_var mgr = poa->the_POAManager(); 
-
+  //
+  long TIMESleep = 250000000;
+       int NumberOfTries = 40;
+       int a;
+       timespec ts_req;
+       ts_req.tv_nsec=TIMESleep;
+       ts_req.tv_sec=0;
+       timespec ts_rem;
+       ts_rem.tv_nsec=0;
+       ts_rem.tv_sec=0;
+       CosNaming::NamingContext_var inc;
+       PortableServer::POA_var poa;
+       CORBA::Object_var theObj;
+       CORBA::Object_var obj;
+       CORBA::Object_var object;
+       SALOME_Logger::Logger_var log;
+       SALOME_NamingService &naming = *SINGLETON_<SALOME_NamingService>::Instance() ;
+       int RESSOURCES_CATALOG=0;
+       const char * Env = getenv("USE_LOGGER");
+        int EnvL =0;
+       if ((Env!=NULL) && (strlen(Env)))
+         EnvL=1;
+       CosNaming::Name name;
+       name.length(1);
+       name[0].id=CORBA::string_dup("Logger");    
+       PortableServer::POAManager_var mgr; 
+       for (int i = 1; i<=NumberOfTries; i++){
+         if (i!=1) 
+           a=nanosleep(&ts_req,&ts_rem);
+         try{ 
+           obj = orb->resolve_initial_references("RootPOA");
+           if(!CORBA::is_nil(obj))
+             poa = PortableServer::POA::_narrow(obj);
+           if(!CORBA::is_nil(poa))
+             mgr = poa->the_POAManager();
+           if(!CORBA::is_nil(orb)) 
+         theObj = orb->resolve_initial_references("NameService");
+           if (!CORBA::is_nil(theObj))
+             inc = CosNaming::NamingContext::_narrow(theObj);
+           }
+         catch( CORBA::COMM_FAILURE& )
+           {
+             MESSAGE( "Ressources Catalog: CORBA::COMM_FAILURE: Unable to contact the Naming Service" )
+               }
+         if(!CORBA::is_nil(inc)) {
+           MESSAGE( "Ressources Catalog: Naming Service was found" )
+             if(EnvL==1){
+               for(int j=1; j<=NumberOfTries; j++){
+                 if (j!=1) 
+                   a=nanosleep(&ts_req, &ts_rem);
+                 try{
+                   object = inc->resolve(name);
+                 }
+                 catch(CosNaming::NamingContext::NotFound){ MESSAGE( "Ressources Catalog: Logger Server wasn't found" ) }
+                 catch(...){ MESSAGE( "Ressources Catalog: Unknown exception" ) }
+                 if (!CORBA::is_nil(object))
+                   log = SALOME_Logger::Logger::_narrow(object);
+                 if (!CORBA::is_nil(log)){
+                   MESSAGE( "Ressources Catalog: Loger Server was found" )
+                     log->ping();
+                    RESSOURCES_CATALOG=1;
+                   break;
+                 }
+               }}
+         }
+         if ((RESSOURCES_CATALOG==1)||((EnvL==0)&&(!CORBA::is_nil(inc))))
+            break;
+             }
+  //
   // Active catalog
-
+  
   SALOME_RessourcesCatalogImpl* Catalogue_i = new SALOME_RessourcesCatalogImpl(argc, argv);
   poa->activate_object (Catalogue_i);
-
   mgr->activate();
-
-  
   CORBA::Object_ptr myCata = Catalogue_i->_this();
 
   // initialise Naming Service
index b8eebee5bd9fe1d50718544e617fedfa4017ce41..69af4214b051f39e6e1ac62131e65e7d161373c3 100644 (file)
@@ -107,7 +107,7 @@ BIN_CLIENT_IDL =
 
 CPPFLAGS+=$(OCC_INCLUDES) $(HDF5_INCLUDES)
 CXXFLAGS+=$(OCC_CXXFLAGS)
-LDFLAGS+=$(CAS_KERNEL) $(CAS_OCAF) $(CAS_VIEWER) $(CAS_MODELER) $(HDF5_LIBS) -lTOOLSDS -lSalomeNS -lSalomeHDFPersist -lOpUtil -lSalomeLoggerServer
+LDFLAGS+= $(HDF5_LIBS) -lTOOLSDS -lSalomeNS -lSalomeHDFPersist -lOpUtil -lSalomeLoggerServer $(CAS_LDPATH) -lTKCAF
 # -L/opt/ccmalloc/lib -lccmalloc -ldl
 # -L/opt/efence/lib -lefence
 
index 087ef8ff5a06ac52e0ab1665fcad202977879394..238dd2450a4b23314595a8de31c1ba9e2f82f953 100644 (file)
@@ -31,7 +31,8 @@ using namespace std;
 #include CORBA_SERVER_HEADER(SALOMEDS)
 #include "SALOMEDS_StudyManager_i.hxx"
 #include "utilities.h"
-
+# include "Utils_SINGLETON.hxx"
+#include "SALOME_NamingService.hxx"
 //#define CHECKTIME
 #ifdef CHECKTIME
 #include <Utils_Timer.hxx>
@@ -53,12 +54,80 @@ int main(int argc, char** argv)
     // Initialise the ORB.
     CORBA::ORB_var orb = CORBA::ORB_init(argc, argv, "omniORB3");
     omniORB::MaxMessageSize(100 * 1024 * 1024);
-    
     // Obtain a reference to the root POA.
-    CORBA::Object_var obj = orb->resolve_initial_references("RootPOA");
-    PortableServer::POA_var poa = PortableServer::POA::_narrow(obj);
-
-
+    //
+    long TIMESleep = 250000000;
+    int NumberOfTries = 40;
+    int a;
+    timespec ts_req;
+    ts_req.tv_nsec=TIMESleep;
+    ts_req.tv_sec=0;
+    timespec ts_rem;
+    ts_rem.tv_nsec=0;
+    ts_rem.tv_sec=0;
+    CosNaming::NamingContext_var inc;
+    PortableServer::POA_var poa;
+    CORBA::Object_var theObj;
+    CORBA::Object_var obj;
+    CORBA::Object_var object;
+    SALOME_Logger::Logger_var log;
+    int SALOMEDS=0;
+    const char * Env = getenv("USE_LOGGER");
+    int EnvL =0;
+    if ((Env!=NULL) && (strlen(Env)))
+      EnvL=1;
+    CosNaming::Name name;
+    name.length(1);
+    name[0].id=CORBA::string_dup("Logger");    
+    PortableServer::POAManager_var pman; 
+    for (int i = 1; i<=NumberOfTries; i++){
+      if (i!=1) 
+       a=nanosleep(&ts_req,&ts_rem);
+      try{ 
+        obj = orb->resolve_initial_references("RootPOA");
+       if(!CORBA::is_nil(obj))
+         poa = PortableServer::POA::_narrow(obj);
+       if(!CORBA::is_nil(poa))
+         pman = poa->the_POAManager();
+       if(!CORBA::is_nil(orb)) 
+         theObj = orb->resolve_initial_references("NameService"); 
+       if (!CORBA::is_nil(theObj)){
+         inc = CosNaming::NamingContext::_narrow(theObj);
+         if(!CORBA::is_nil(inc)) {
+           MESSAGE( "SalomeDS Server: Naming Service was found" )
+           if(EnvL==1){
+             CORBA::ORB_var orb1 = CORBA::ORB_init(argc,argv) ;
+             SALOME_NamingService &NS = *SINGLETON_<SALOME_NamingService>::Instance() ;
+             NS.init_orb( orb1 ) ;
+             for(int j=1; j<=NumberOfTries; j++){
+               if (j!=1) 
+                 a=nanosleep(&ts_req, &ts_rem);
+               try{
+                 object = inc->resolve(name);}
+                catch(CosNaming::NamingContext::NotFound){ MESSAGE( "SalomeDS Server: Logger Server wasn't found" ) }
+               catch(...){ MESSAGE( "SalomeDS Server: Unknown exception" ) }
+               if (!CORBA::is_nil(object))
+                 log = SALOME_Logger::Logger::_narrow(object);
+               if (!CORBA::is_nil(log)){
+                 MESSAGE( "SalomeDS Server: Logger Server was found" )
+                 log->ping();
+                 SALOMEDS=1;
+                 break;
+               }
+             }}
+         }}
+       
+      }
+      catch( const SALOME_Exception &ex )
+       {
+         MESSAGE( "Communication Error : " << ex.what() )
+           return EXIT_FAILURE ;
+       }
+      if ((SALOMEDS==1)||((EnvL==0)&&(!CORBA::is_nil(inc))))
+       break;
+         }
+    //    
+    
     // We allocate the objects on the heap.  Since these are reference
     // counted objects, they will be deleted by the POA when they are no
     // longer needed.    
@@ -71,7 +140,7 @@ int main(int argc, char** argv)
        
     // Obtain a POAManager, and tell the POA to start accepting
     // requests on its objects.
-    PortableServer::POAManager_var pman = poa->the_POAManager();
+    pman = poa->the_POAManager();
     pman->activate();
 
 #ifdef CHECKTIME
index 2fd8dacdf8c4b765b2cc99ea785df98cafb86edf..0634892d90cc7b4a3079308090ee6cd077a3e09a 100644 (file)
@@ -20,10 +20,10 @@ msgstr ""
 #---------------
 
 msgid "INF_VERSION"
-msgstr "Version 1.2"
+msgstr "Version 1.2c"
 
 msgid "INF_COPYRIGHT"
-msgstr "Copyright (C) 2002, OPEN CASCADE"
+msgstr "Copyright (C) 2003, CEA/DEN, EDF R&D"
 
 msgid "INF_LICENSE"
 msgstr "All rights reserved"
@@ -38,8 +38,8 @@ msgstr "salome"
 
 #: QAD_Application.cxx:133
 msgid "QAD_Application::APP_DEFAULTTITLE"
-msgstr "SALOME Professional 1.2"
+msgstr "SALOME Professional 1.2c"
 
 #: QAD_Desktop.cxx:424
 msgid "QAD_Desktop::DESK_DEFAULTTITLE"
-msgstr "SALOME Professional 1.2"
\ No newline at end of file
+msgstr "SALOME Professional 1.2c"
\ No newline at end of file
index dcc2aa67af1cac3d910703d31e2d11cf316a82cb..0c513016ac4a32a89aecb57e788521e038e0aa6b 100644 (file)
@@ -175,13 +175,14 @@ LIB_SRC =           \
                  SALOME_DataMapNodeOfDataMapOfIOMapOfInteger_0.cxx \
                  SALOME_DataMapIteratorOfDataMapOfIOMapOfInteger_0.cxx \
                  SALOMEGUI_TrihedronSizeDlg.cxx \
-                 SALOMEGUI_LoadStudiesDlg.cxx \
+                 SALOMEGUI_ExternalBrowserDlg.cxx \
+                 SALOMEGUI_LoadStudiesDlg.cxx \
                   SALOMEGUI_TableDlg.cxx \
                   SALOMEGUI_NameDlg.cxx \
                   SALOMEGUI_SetValueDlg.cxx \
                   SALOMEGUI_SetupCurveDlg.cxx \
-                  SALOMEGUI_CloseDlg.cxx
-
+                  SALOMEGUI_CloseDlg.cxx \
+                 SALOMEGUI_ActivateComponentDlg.cxx    
 LIB_MOC = \
                  SALOMEGUI_Application.h \
                  SALOMEGUI_Desktop.h \
@@ -204,14 +205,15 @@ LIB_MOC = \
                  SALOMEGUI_OpenWith.h \
                  SALOMEGUI_StudyPropertiesDlg.h \
                  SALOMEGUI_TrihedronSizeDlg.h  \
+                 SALOMEGUI_ExternalBrowserDlg.h \
                  SALOME_Selection.h \
                  SALOMEGUI_LoadStudiesDlg.h \
                  SALOMEGUI_ViewChoiceDlg.h \
                   SALOMEGUI_TableDlg.h \
                   SALOMEGUI_NameDlg.h \
                   SALOMEGUI_SetupCurveDlg.h \
-                  SALOMEGUI_CloseDlg.h
-
+                  SALOMEGUI_CloseDlg.h \
+                  SALOMEGUI_ActivateComponentDlg.h    
 LIB_CLIENT_IDL = SALOMEDS.idl \
                  SALOMEDS_Attributes.idl \
                 SALOME_ModuleCatalog.idl \
@@ -219,7 +221,7 @@ LIB_CLIENT_IDL = SALOMEDS.idl \
                 SALOME_Exception.idl
 
 CPPFLAGS+=$(QT_INCLUDES) $(PYTHON_INCLUDES) $(OCC_INCLUDES)
-LDFLAGS+=$(QT_MT_LIBS) $(OCC_LIBS) -lSalomeNS -lqsplitterP -lSalomeLifeCycleCORBA -lOpUtil -lSalomeObject
+LDFLAGS+=$(QT_MT_LIBS) -lSalomeNS -lqsplitterP -lSalomeLifeCycleCORBA -lOpUtil -lSalomeObject
 
 LIBS+= $(PYTHON_LIBS)
 
index c4d0c8cad4886c885a4550b6408c2c7bdc3612d7..3703c9d4c7ac496b65e01e3c6f61cee3dc443a0c 100644 (file)
@@ -35,6 +35,8 @@ using namespace std;
 # include "Utils_SINGLETON.hxx"
 
 #define         INCLUDE_MENUITEM_DEF
+#define  DEFAULT_BROWSER "mozilla"
+
 
 #include "QAD.h"
 #include "QAD_Help.h"
@@ -57,6 +59,7 @@ using namespace std;
 #include "SALOMEGUI_OpenWith.h"
 #include "SALOMEGUI_StudyPropertiesDlg.h"
 #include "SALOMEGUI_TrihedronSizeDlg.h"
+#include "SALOMEGUI_ExternalBrowserDlg.h"
 #include "SALOMEGUI_LoadStudiesDlg.h"
 #include "SALOME_Selection.h"
 #include "SALOME_InteractiveObject.hxx"
@@ -66,6 +69,7 @@ using namespace std;
 #include "utilities.h"
 
 #include "SALOMEGUI_CloseDlg.h"
+#include "SALOMEGUI_ActivateComponentDlg.h"
 
 // QT Includes
 #include <qlabel.h>
@@ -87,6 +91,7 @@ using namespace std;
 #include <qfontdialog.h>
 #include <qlineedit.h>
 #include <qdatetime.h>
+#include <qthread.h>
 
 #if QT_VERSION > 300
   #include <qlistbox.h>
@@ -349,9 +354,17 @@ const int IdSelectAll = 1004;
 */
 bool QAD_Desktop::eventFilter( QObject* o, QEvent* e )
 {
-  if ( e->type() == QEvent::ContextMenu ) {
-    QContextMenuEvent* ce = (QContextMenuEvent*)e;
-    if ( o->inherits("QRenameEdit") ) {
+  if (e->type() == 2000   ) {
+    QMessageBox::information (this, tr ( "Help Information" ), tr ( "Can't run choosen browser.\nRunning default browser (Mozilla). "));
+    return TRUE;
+  }
+  else if (e->type() == 2001 ) {
+    QMessageBox::critical(this, tr ( "Help Error" ), tr ( "Can't run the default browser.") );
+    return TRUE;
+  }
+    else if ( e->type() == QEvent::ContextMenu ) {
+      QContextMenuEvent* ce = (QContextMenuEvent*)e;
+      if ( o->inherits("QRenameEdit") ) {
       return TRUE;
     }
     else if ( o->inherits("QLineEdit") ) {
@@ -730,6 +743,13 @@ void QAD_Desktop::createActions()
 
     myPrefPopup.insertSeparator();
     
+    /* External Browser */
+    QActionP* externalBrowserAction = new QActionP( "", tr("MEN_DESK_PREF_EXTERNAL_BROWSER"), 0, this );
+    QAD_ASSERT(connect( externalBrowserAction, SIGNAL(activated()), this, SLOT(onExternalBrowser() )));
+    externalBrowserAction->addTo( &myPrefPopup );
+    myStdActions.insert( PrefExternalBrowserId, externalBrowserAction );
+        
+    myPrefPopup.insertSeparator();
     /* BrowserPopup */
     myPrefPopup.insertItem( tr("MEN_DESK_PREF_OBJECTBROWSER"), &myObjBrowserPopup );
     
@@ -856,6 +876,24 @@ void QAD_Desktop::createActions()
                        this, SLOT( onHelpContents() )));
     helpContentsAction->addTo( &myHelpPopup );
     myStdActions.insert( HelpContentsId , helpContentsAction );
+                               
+    id = myHelpPopup.insertSeparator();
+                                                  
+    /* GUI contents */
+    QActionP* helpContentsActionGUI = new QActionP( "", tr("MEN_DESK_HELP_GUICONTENTS"), 0, this );
+    helpContentsActionGUI->setStatusTip ( tr("PRP_DESK_HELP_GUICONTENTS") );
+    QAD_ASSERT(connect( helpContentsActionGUI, SIGNAL(activated()),
+                       this, SLOT( onHelpContentsGUI() )));
+    helpContentsActionGUI->addTo( &myHelpPopup );
+    myStdActions.insert( HelpContentsId , helpContentsActionGUI );
+
+    /* TUI contents */
+    QActionP* helpContentsActionTUI = new QActionP( "", tr("MEN_DESK_HELP_TUICONTENTS"), 0, this );
+    helpContentsActionTUI->setStatusTip ( tr("PRP_DESK_HELP_TUICONTENTS") );
+    QAD_ASSERT(connect( helpContentsActionTUI, SIGNAL(activated()),
+                       this, SLOT( onHelpContentsTUI() )));
+    helpContentsActionTUI->addTo( &myHelpPopup );
+    myStdActions.insert( HelpContentsId , helpContentsActionTUI );                                                
 
     /* search */
 //    QActionP* helpSearchAction = new QActionP( "", tr("MEN_DESK_HELP_SEARCH"), 0, this );
@@ -986,6 +1024,7 @@ void QAD_Desktop::updateCaption( UpdateCommand cmd )
     else
     {  /* default icon and title */
        setIcon( myDefaultIcon );
+       qApp->processEvents();
        setCaption( myDefaultTitle );
     }
 }
@@ -1921,15 +1960,179 @@ void QAD_Desktop::onNewWindow3d()
   //NRI : SAL2214
 }
 
+// Helps to execute command
+class RunBrowser: public QThread {
+public:
+  
+  RunBrowser(QString theApp, QString theParams, QString theHelpFile): 
+    myApp(theApp), myParams(theParams), myHelpFile(theHelpFile), myStatus(0) {};
+  virtual void run()
+  {
+    QString aCommand;
+    
+    if ( !myApp.isEmpty())
+      {
+       aCommand.sprintf("%s %s %s",myApp.latin1(),myParams.latin1(),myHelpFile.latin1());
+       myStatus = system(aCommand);
+       if(myStatus != 0)
+         {
+           QCustomEvent* ce2000 = new QCustomEvent (2000);
+           postEvent (qApp, ce2000);
+         }
+      }
+    
+    if( myStatus != 0 || myApp.isEmpty())
+      {
+       myParams = "";
+       aCommand.sprintf("%s %s %s", QString(DEFAULT_BROWSER).latin1(),myParams.latin1(), myHelpFile.latin1()); 
+       myStatus = system(aCommand);
+       if(myStatus != 0)
+         {
+           QCustomEvent* ce2001 = new QCustomEvent (2001);
+           postEvent (qApp, ce2001);
+         }
+      }
+  }
+
+private:
+  QString myApp;
+  QString myParams;
+  QString myHelpFile;
+  int myStatus;
+  
+};
+
 /*!
     Called on 'help\contents'
 */
 void QAD_Desktop::onHelpContents()
 {
-  if (myActiveApp)
-    myActiveApp->helpContents();
-  else
-    helpContents();
+
+  // look for main.html and set homeDir
+  // 1. $(SALOME_ROOT_DIR)/doc/main.html
+  // 2. $(SALOME_ROOT_DIR)/doc/html/main.html
+  // 3. $(SALOME_ROOT_DIR)/doc/html/html/main.html
+  // 4. /usr/local/doc/html/main.html
+  
+  QCString dir;
+  QString root;
+  QString homeDir;
+  
+  if ( (dir = getenv("SALOME_ROOT_DIR")) ) {
+    root = QAD_Tools::addSlash( QAD_Tools::addSlash(dir) + "doc" );
+    if ( QFileInfo( root + "main.html" ).exists() ) {
+      homeDir = root;
+    }
+    else {
+      root = QAD_Tools::addSlash( root + "html" );
+      if ( QFileInfo( root + "main.html" ).exists() ) {
+       homeDir = root;
+      }
+      else {
+       root = QAD_Tools::addSlash( root + "html" );
+       if ( QFileInfo( root + "main.html" ).exists() ) {
+         homeDir = root;
+       }
+      }
+    }
+  }
+  if ( root.isEmpty() ) {
+    if ( QFileInfo( "/usr/local/doc/html/main.html" ).exists() ) {
+      homeDir = "/usr/local/doc/html/";
+    }
+  }
+  if ( root.isEmpty() ) 
+    root = "./doc/";
+  
+  QString helpFile = QFileInfo( homeDir + "main.html" ).absFilePath(); 
+  
+  QString anApp = QAD_CONFIG->getSetting("ExternalBrowser:Application");
+  QString aParams = QAD_CONFIG->getSetting("ExternalBrowser:Parameters");
+   
+  RunBrowser* rs = new RunBrowser(anApp, aParams, helpFile);
+  rs->start();
+    
+}
+
+/*!
+    Called on 'help\GUI Reference'
+*/
+void QAD_Desktop::onHelpContentsGUI()
+{
+
+  // look for main.html and set homeDir
+  // 1. $(SALOME_ROOT_DIR)/doc/guihtml/guihtml/salomedoc.html
+  // 2. /usr/local/doc/guihtml/salomedoc.html
+  
+  QCString dir;
+  QString root;
+  QString homeDir;
+  
+  if ( (dir = getenv("SALOME_ROOT_DIR")) ) {
+    root = QAD_Tools::addSlash( QAD_Tools::addSlash(dir) + "doc" );
+    root = QAD_Tools::addSlash( root + "guihtml" );
+    root = QAD_Tools::addSlash( root + "guihtml" );
+    if ( QFileInfo( root + "salomedoc.html" ).exists() ) {
+      homeDir = root;
+    }
+  }
+  if ( root.isEmpty() ) {
+    if ( QFileInfo( "/usr/local/doc/guihtml/salomedoc.html" ).exists() ) {
+      homeDir = "/usr/local/doc/guihtml/";
+    }
+  }
+  if ( root.isEmpty() ) 
+    root = "./doc/";
+  
+  QString helpFile = QFileInfo( homeDir + "salomedoc.html" ).absFilePath(); 
+  
+  QString anApp = QAD_CONFIG->getSetting("ExternalBrowser:Application");
+  QString aParams = QAD_CONFIG->getSetting("ExternalBrowser:Parameters");
+   
+  RunBrowser* rs = new RunBrowser(anApp, aParams, helpFile);
+  rs->start();
+    
+}
+
+/*!
+    Called on 'help\TUI Reference'
+*/
+void QAD_Desktop::onHelpContentsTUI()
+{
+
+  // look for main.html and set homeDir
+  // 1. $(SALOME_ROOT_DIR)/doc/html/html/index.html
+  // 2. /usr/local/doc/html/index.html
+  
+  QCString dir;
+  QString root;
+  QString homeDir;
+  
+  if ( (dir = getenv("SALOME_ROOT_DIR")) ) {
+    root = QAD_Tools::addSlash( QAD_Tools::addSlash(dir) + "doc" );
+    root = QAD_Tools::addSlash( root + "html" );
+    root = QAD_Tools::addSlash( root + "html" );
+    if ( QFileInfo( root + "index.html" ).exists() ) {
+      homeDir = root;
+    }
+  }
+  if ( root.isEmpty() ) {
+    if ( QFileInfo( "/usr/local/doc/html/index.html" ).exists() ) {
+      homeDir = "/usr/local/doc/html/";
+    }
+  }
+  if ( root.isEmpty() ) 
+    root = "./doc/";
+  
+  QString helpFile = QFileInfo( homeDir + "index.html" ).absFilePath(); 
+  
+  QString anApp = QAD_CONFIG->getSetting("ExternalBrowser:Application");
+  QString aParams = QAD_CONFIG->getSetting("ExternalBrowser:Parameters");
+   
+  RunBrowser* rs = new RunBrowser(anApp, aParams, helpFile);
+  rs->start();
+    
 }
 
 /*!
@@ -2648,15 +2851,35 @@ void QAD_Desktop::onComboActiveComponent( const QString & component, bool isLoad
          aButton->setOn(true);
       }
     }
-  } else {
-    QMessageBox::critical( 0,
-                          tr( "ERR_ERROR" ),
-                          tr( "WRN_LOAD_COMPONENT" ) );
-    myCombo->setCurrentItem (0);       
-    for ( QToolButton* aButton=myComponentButton.first(); aButton; aButton=myComponentButton.next() ) {
-      aButton->setOn(false);
-    }
-  }
+  } else if (component.compare(QString("Salome"))!= 0) {
+  
+      SALOMEGUI_ActivateComponentDlg aDlg( this );
+      int res = aDlg.exec();
+      
+      switch ( res )
+       {
+       case 1:
+         onNewStudy();
+         onComboActiveComponent(component,true);                 
+         break;
+       case 2:
+          onOpenStudy();       
+         onComboActiveComponent(component,true);
+         break;
+       case 3:
+         onLoadStudy();
+         onComboActiveComponent(component,true);;
+         break;
+       case 0:
+       default:
+         putInfo( tr("INF_CANCELLED") );
+         myCombo->setCurrentItem (0);  
+         for ( QToolButton* aButton=myComponentButton.first(); aButton; aButton=myComponentButton.next() ) {
+          aButton->setOn(false);
+          // return;
+         }
+       }
+      }
 }
 
 /*!
@@ -3003,6 +3226,33 @@ void QAD_Desktop::onViewerTrihedron()
   }
 }
 
+void QAD_Desktop::onExternalBrowser()
+{
+  QString theApp = QAD_CONFIG->getSetting("ExternalBrowser:Application");
+  QString theParams = QAD_CONFIG->getSetting("ExternalBrowser:Parameters");
+   
+  SALOMEGUI_ExternalBrowserDlg *Dlg = new SALOMEGUI_ExternalBrowserDlg(this);
+  
+  if (!theApp.isEmpty())
+    {
+      QString theParams = QAD_CONFIG->getSetting("ExternalBrowser:Parameters");
+      Dlg->setSettings(theApp, theParams);
+    }
+  int r = Dlg->exec();
+  QString theAppFromDialog = Dlg->getApp();
+  QString theParamsFromDialog = Dlg->getParams();
+  delete Dlg;
+  
+  if (r == QDialog::Accepted) 
+    {
+      QAD_CONFIG->addSetting("ExternalBrowser:Application", theAppFromDialog );
+      QAD_CONFIG->addSetting("ExternalBrowser:Parameters", theParamsFromDialog );
+    }
+  
+}
+
+
 void QAD_Desktop::onDirList() 
 {
   // getting dir list from settings
index f283e1c86de9c79d8ec25338b430a4062eac872c..4223b4fa3f826e08b8007fad0979fead3c8b5a2d 100644 (file)
@@ -80,7 +80,7 @@ protected:
          //VRV: T2.5 - add default viewer
          PrefViewerTrihedronId, PrefConsoleFontId, PrefObjectBrowserEntryId, 
          PrefObjectBrowserIAPPId, PrefObjectBrowserValueId, PrefObjectBrowserCHRONO_SORTId, 
-         PrefDirsId, PrefMultiFileSave, PrefASCIISave, PrefSaveId,
+         PrefDirsId, PrefMultiFileSave, PrefASCIISave, PrefExternalBrowserId, PrefSaveId,
          //NRI : SAL2214
          WindowNew3dId, ViewOCCId, ViewVTKId, ViewPlot2dId,
          //NRI : SAL2214
@@ -233,11 +233,14 @@ protected slots:
     void             onObjectBrowser();
     void              onMultiFileSave();
     void              onASCIISave();
+    void             onExternalBrowser();      
 
     void             onActivateApp(QAD_Application* app);
     void             onDeactivateApp(QAD_Application* app);
 
     void             onHelpContents();
+    void             onHelpContentsGUI();
+    void             onHelpContentsTUI();
     void             onHelpSearch();
     void             onHelpAbout();
 
index a932028e29f0f370025fb58813ef5114c23a753f..4730b1ee8149727ac2802de760bc015fd8dfb91f 100644 (file)
@@ -111,9 +111,9 @@ void QAD_Message::mousePressEvent(QMouseEvent* event)
     id = popup->insertItem( tr( "EDIT_SELECTALL_CMD" ) );
     idMap.insert(IdSelectAll, id);
     popup->setItemEnabled( idMap[ IdCopy ], hasMarkedText() );
-    popup->setItemEnabled( idMap[ IdSelectAll ],
-                         (bool)text().length() && !allSelected );
-    
+    popup->setItemEnabled( idMap[ IdSelectAll ], !allSelected );
+    popup->setItemEnabled( idMap[ IdClear ], textLine(1)!=myPrompt );
+        
     int r = popup->exec( event->globalPos() );
     delete popup;
     
index 58407f6a054a28425b0c21e8841b987d805ede98..4dd3aa333701ef2d3f0601943dcab112beaeb1f1 100644 (file)
@@ -278,9 +278,17 @@ void QAD_PyEditor::keyPressEvent( QKeyEvent *e )
       }
     case Key_Up:
       {
-       // if Cntr+Key_Up event then scroll the commands stack up
+       // if Cntr+Key_Up event then move cursor up
        if (ctrlPressed) {
-         QString histLine = _currentPrompt;
+         QMultiLineEdit::cursorUp( );
+        }
+       // if Shift+Key_Up event then move cursor up and select the text
+       else if ( shftPressed && curLine > 0 ){
+          setCursorPosition(curLine-1, curCol, true);
+       }
+       // scroll the commands stack up
+       else { 
+          QString histLine = _currentPrompt;
          if (! _isInHistory)
            {
              _isInHistory = true;
@@ -297,19 +305,21 @@ void QAD_PyEditor::keyPressEvent( QKeyEvent *e )
          endLine = numLines() -1;
          setCursorPosition(endLine, lineLength(endLine));
        }
-       // if Shift+Key_Up event then move cursor up and select the text
-       else if ( shftPressed && curLine > 0 ){
-          setCursorPosition(curLine-1, curCol, true);
-       }
-       // move cursor up
-       else { QMultiLineEdit::keyPressEvent( e ); }
        break;
       }
     case Key_Down:
       {
-       // if Cntr+Key_Down event then scroll the commands stack down
+       // if Cntr+Key_Down event then move cursor down
        if (ctrlPressed) {
-         QString histLine = _currentPrompt;
+         QMultiLineEdit::cursorDown( );
+       }
+       // if Shift+Key_Down event then move cursor down and select the text
+       else if ( shftPressed && curLine < endLine ) {
+          setCursorPosition(curLine+1, curCol, true);
+       }
+       // scroll the commands stack down
+       else {
+       QString histLine = _currentPrompt;
          QString nextCommand = _interp->getNext();
          if (nextCommand.compare(TOP_HISTORY_PY) != 0)
            {
@@ -328,13 +338,6 @@ void QAD_PyEditor::keyPressEvent( QKeyEvent *e )
          endLine = numLines() -1;
          setCursorPosition(endLine, lineLength(endLine));
        }
-       // if Shift+Key_Down event then move cursor down and select the text
-       else if ( shftPressed && curLine < endLine ) {
-          setCursorPosition(curLine+1, curCol, true);
-       }
-       //move cursor down
-       else { QMultiLineEdit::keyPressEvent( e ); }
-
        break;
       }
     case Key_Left:
index 0d8180117c468ff4d4b839a2073b68ce0d015f0b..a2afaf3b501886efef1d7ac63a5bc7f6fa37a77d 100644 (file)
@@ -175,6 +175,14 @@ msgstr "&About ..."
 msgid "QAD_Desktop::MEN_DESK_HELP_CONTENTS"
 msgstr "&Contents"
 
+#: QAD_Desktop.cxx:265
+msgid "QAD_Desktop::MEN_DESK_HELP_GUICONTENTS"
+msgstr "&GUI Reference"
+
+#: QAD_Desktop.cxx:265
+msgid "QAD_Desktop::MEN_DESK_HELP_TUICONTENTS"
+msgstr "&TUI Reference"
+
 #: QAD_Desktop.cxx:273
 msgid "QAD_Desktop::MEN_DESK_HELP_SEARCH"
 msgstr "&Search ..."
@@ -203,6 +211,10 @@ msgstr "Viewer background"
 msgid "MEN_DESK_PREF_VIEWER_TRIHEDRON"
 msgstr "Trihedron size"
 
+#: QAD_Desktop.cxx:747
+msgid "MEN_DESK_PREF_EXTERNAL_BROWSER"
+msgstr "External browser"
+
 msgid "MEN_DESK_PREF_DEFAULT_VIEWER"
 msgstr "Default viewer"
 
@@ -364,6 +376,14 @@ msgstr "Shows \'About\' dialog"
 msgid "QAD_Desktop::PRP_DESK_HELP_CONTENTS"
 msgstr "Shows the whole help contents"
 
+#: QAD_Desktop.cxx:266
+msgid "QAD_Desktop::PRP_DESK_HELP_GUICONTENTS"
+msgstr "Shows the GUI help contents"
+
+#: QAD_Desktop.cxx:266
+msgid "QAD_Desktop::PRP_DESK_HELP_TUICONTENTS"
+msgstr "Shows the TUI help contents"
+
 #: QAD_Desktop.cxx:274
 msgid "QAD_Desktop::PRP_DESK_HELP_SEARCH"
 msgstr "Searches help for a topic"
@@ -540,10 +560,6 @@ msgstr "The study %1 is not saved.\nDo you want to save it ?"
 msgid "WRN_WARNING"
 msgstr "Warning"
 
-#: QAD_Desktop.cxx:1072
-msgid "QAD_Desktop::WRN_LOAD_COMPONENT"
-msgstr "Creates or opens before a study"
-
 msgid "WRN_STUDY_LOCKED"
 msgstr "This study is locked and therefore cannot be modified"
 
diff --git a/src/SALOMEGUI/SALOMEGUI_ActivateComponentDlg.cxx b/src/SALOMEGUI/SALOMEGUI_ActivateComponentDlg.cxx
new file mode 100644 (file)
index 0000000..7e326d0
--- /dev/null
@@ -0,0 +1,79 @@
+//  SALOME SALOMEGUI : implementation of desktop and GUI kernel
+//
+//  Copyright (C) 2003  CEA/DEN, EDF R&D
+//
+//
+//
+//  File   : SALOMEGUI_ActivateComponentDlg.cxx
+//  Author : Michael Zorin (mzn)
+//  Module : SALOME
+
+using namespace std;
+#include "SALOMEGUI_ActivateComponentDlg.h"
+
+#include <qpushbutton.h>
+#include <qhbuttongroup.h>
+#include <qlayout.h> 
+#include <qlabel.h> 
+#include <qmessagebox.h>
+
+
+SALOMEGUI_ActivateComponentDlg::SALOMEGUI_ActivateComponentDlg ( QWidget * parent, const char * name, bool modal, WFlags f )
+     : QDialog ( parent, "", TRUE,  WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu )
+{
+  setSizeGripEnabled ( TRUE ) ;
+  setCaption( tr( "CAPTION" ) );
+
+  QVBoxLayout* m_vbL = new QVBoxLayout( this );
+  m_vbL->setMargin( 11 ); m_vbL->setSpacing( 6 );
+
+  QLabel* m_lIcon  = new QLabel (this, "m_lDescr");
+  QPixmap pm = QMessageBox::standardIcon( QMessageBox::Information );
+  m_lIcon->setPixmap( pm );
+  m_lIcon->setScaledContents( false );
+  m_lIcon->setAlignment( Qt::AlignCenter );
+
+  QLabel* m_lDescr = new QLabel (this, "m_lDescr");
+  m_lDescr->setText ( tr ("ActivateComponent_DESCRIPTION") );
+  m_lDescr->setAlignment( Qt::AlignCenter );
+  m_lDescr->setMinimumHeight( m_lDescr->sizeHint().height()*5 );
+  m_lDescr->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Expanding ) );
+
+  QHBoxLayout* m_hl1 = new QHBoxLayout();
+  m_hl1->setMargin( 0 ); m_hl1->setSpacing( 6 );
+  m_hl1->addWidget( m_lIcon );
+  m_hl1->addWidget( m_lDescr );
+
+  m_pb1 = new QPushButton( tr ("NEW"), this );
+  m_pb2 = new QPushButton( tr ("OPEN"),      this );
+  m_pb3 = new QPushButton( tr ("LOAD"),     this );
+  m_pb4 = new QPushButton( tr ("CANCEL"),     this );
+
+  QGridLayout* m_hl2 = new QGridLayout();
+  m_hl2->setMargin( 0 ); m_hl2->setSpacing( 6 );
+  m_hl2->addWidget( m_pb1, 0, 0 );
+  m_hl2->addWidget( m_pb2, 0, 1 );
+  m_hl2->addWidget( m_pb3, 0, 2 );
+  m_hl2->addColSpacing( 3, 10 );
+  m_hl2->setColStretch( 3, 5 );
+  m_hl2->addWidget( m_pb4, 0, 4 );
+  
+  m_vbL->addLayout( m_hl1 );
+  m_vbL->addLayout( m_hl2 );
+
+  connect( m_pb1, SIGNAL( clicked() ), this, SLOT( onButtonClicked() ) );
+  connect( m_pb2, SIGNAL( clicked() ), this, SLOT( onButtonClicked() ) );
+  connect( m_pb3, SIGNAL( clicked() ), this, SLOT( onButtonClicked() ) );
+  connect( m_pb4, SIGNAL( clicked() ), this, SLOT( reject() ) );
+}
+
+void SALOMEGUI_ActivateComponentDlg::onButtonClicked()
+{
+  QPushButton* btn = ( QPushButton* )sender();
+  if ( btn == m_pb1 )
+    done( 1 );
+  if ( btn == m_pb2 )
+    done( 2 );
+  if ( btn == m_pb3 )
+    done( 3 );
+}
diff --git a/src/SALOMEGUI/SALOMEGUI_ActivateComponentDlg.h b/src/SALOMEGUI/SALOMEGUI_ActivateComponentDlg.h
new file mode 100644 (file)
index 0000000..17544d0
--- /dev/null
@@ -0,0 +1,35 @@
+//  SALOME SALOMEGUI : implementation of desktop and GUI kernel
+//
+//  Copyright (C) 2003  CEA/DEN, EDF R&D
+//
+//
+//
+//  File   : SALOMEGUI_ActivateComponentDlg.h
+//  Author : Michael ZORIN (mzn)
+//  Module : SALOME
+
+#ifndef SALOMEGUI_ActivateComponentDlg_H
+#define SALOMEGUI_ActivateComponentDlg_H
+
+#include <qdialog.h> 
+
+class SALOMEGUI_ActivateComponentDlg: public QDialog
+{
+  Q_OBJECT
+
+public:
+  SALOMEGUI_ActivateComponentDlg ( QWidget * parent = 0, const char * name = 0, bool modal = FALSE, WFlags f = 0 ) ;
+  ~SALOMEGUI_ActivateComponentDlg ( ) { };
+
+private slots:
+  void onButtonClicked();
+
+private:
+  QPushButton* m_pb1;
+  QPushButton *m_pb2;
+  QPushButton *m_pb3;
+  QPushButton *m_pb4;
+};
+
+#endif
+
diff --git a/src/SALOMEGUI/SALOMEGUI_ExternalBrowserDlg.cxx b/src/SALOMEGUI/SALOMEGUI_ExternalBrowserDlg.cxx
new file mode 100644 (file)
index 0000000..9ad17dd
--- /dev/null
@@ -0,0 +1,134 @@
+//  File   : SALOMEGUI_ExternalBrowserDlg.cxx
+//  Author : Nichael ZORIN
+//  Module : SALOME
+//  $Header: /dn05/salome/CVS/SALOME_ROOT/SALOME/src/SALOMEGUI/SALOMEGUI_ExternalBrowserDlg.cxx
+
+using namespace std;
+#include "SALOMEGUI_ExternalBrowserDlg.h"
+
+#include <qbuttongroup.h>
+#include <qlabel.h>
+#include <qpushbutton.h>
+#include <qmessagebox.h>
+#include <qlayout.h>
+
+#include "QAD_FileDlg.h"
+#include "QAD_Tools.h"
+
+/* 
+ *  Constructs a modal SALOMEGUI_ExternalBowserDlg which is a child of 'parent'
+ *
+ */
+
+SALOMEGUI_ExternalBrowserDlg::SALOMEGUI_ExternalBrowserDlg( QWidget* parent )
+  : QDialog( parent, "SALOMEGUI_ExternalBrowserDlg", true, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu )
+{
+  setCaption( tr( "MEN_EXTERNAL_BROWSER"  ) );
+  setSizeGripEnabled( true );
+  QGridLayout* TopLayout = new QGridLayout( this ); 
+  TopLayout->setSpacing( 6 );
+  TopLayout->setMargin( 11 );
+  
+  QGroupBox* TopGroup = new QGroupBox( this, "TopGroup" );
+  TopGroup->setColumnLayout(0, Qt::Vertical );
+  TopGroup->layout()->setSpacing( 0 );
+  TopGroup->layout()->setMargin( 0 );
+  QGridLayout* TopGroupLayout = new QGridLayout( TopGroup->layout() );
+  TopGroupLayout->setAlignment( Qt::AlignTop );
+  TopGroupLayout->setSpacing( 6 );
+  TopGroupLayout->setMargin( 11 );
+  
+  QLabel* LabelApp = new QLabel( tr( "MEN_EXTERNAL_BROWSER_APP" ), TopGroup, "LabelApp" );
+  TopGroupLayout->addWidget( LabelApp, 0, 0 );
+  ApplicationLine = new QLineEdit( TopGroup );
+  ApplicationLine->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) );
+  ApplicationLine->setMinimumSize( 250, 0 );
+  LabelApp->setBuddy(ApplicationLine);
+  TopGroupLayout->addWidget( ApplicationLine, 0, 1 );
+  
+  QLabel* LabelParams = new QLabel( tr( "MEN_EXTERNAL_BROWSER_PARAMS" ), TopGroup, "LabelParams" );
+  TopGroupLayout->addWidget( LabelParams, 1, 0 );
+  ParametersLine = new QLineEdit( TopGroup );
+  ParametersLine->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) );
+  ParametersLine->setMinimumSize( 250, 0 );
+  LabelParams->setBuddy(ParametersLine);
+  TopGroupLayout->addWidget( ParametersLine, 1, 1 );
+  
+  browseButton = new QPushButton( tr( "MEN_EXTERNAL_BROWSER_BROWSE" ) , TopGroup, "browseButton" );
+  TopGroupLayout->addWidget( browseButton, 0, 2 );
+  
+  QGroupBox* GroupButtons = new QGroupBox( this, "GroupButtons" );
+  GroupButtons->setGeometry( QRect( 10, 10, 381, 48 ) ); 
+  GroupButtons->setColumnLayout(0, Qt::Vertical );
+  GroupButtons->layout()->setSpacing( 0 );
+  GroupButtons->layout()->setMargin( 0 );
+  QGridLayout* GroupButtonsLayout = new QGridLayout( GroupButtons->layout() );
+  GroupButtonsLayout->setAlignment( Qt::AlignTop );
+  GroupButtonsLayout->setSpacing( 6 );
+  GroupButtonsLayout->setMargin( 11 );
+  
+  QPushButton* buttonOk = new QPushButton( tr( "BUT_OK" ), GroupButtons, "buttonOk" );
+  buttonOk->setAutoDefault( TRUE );
+  buttonOk->setDefault( TRUE );
+  GroupButtonsLayout->addWidget( buttonOk, 0, 0 );
+  GroupButtonsLayout->addItem( new QSpacerItem( 5, 5, QSizePolicy::Expanding, QSizePolicy::Minimum ), 0, 1 );
+  QPushButton* buttonCancel = new QPushButton( tr( "BUT_CANCEL" ) , GroupButtons, "buttonCancel" );
+  buttonCancel->setAutoDefault( TRUE );
+  GroupButtonsLayout->addWidget( buttonCancel, 0, 2 );
+  
+  TopLayout->addWidget( TopGroup,     0, 0 );
+  TopLayout->addWidget( GroupButtons, 1, 0 );
+  
+  // signals and slots connections
+  connect( browseButton, SIGNAL( clicked() ), this, SLOT( onButtonClicked() ) );
+  connect( buttonOk,     SIGNAL( clicked() ), this, SLOT( accept() ) );
+  connect( buttonCancel, SIGNAL( clicked() ), this, SLOT( reject() ) );
+  
+}
+
+void SALOMEGUI_ExternalBrowserDlg::onButtonClicked()
+{
+  QStringList flt;
+  flt.append( "ALL Files(*)" );
+  QString aDir = QAD_Tools::getDirFromPath ( ApplicationLine->text() );
+  QFileInfo aFileInfo = QAD_FileDlg::getFileName (this, aDir, flt, tr( "MEN_EXTERNAL_BROWSER_CHOOSEAPP" ), true);
+  if(aFileInfo.exists())
+    ApplicationLine->setText(aFileInfo.filePath());
+}
+
+void SALOMEGUI_ExternalBrowserDlg::setSettings(const QString& AppString, const QString& ParamsString)
+{
+  ApplicationLine->setText(AppString);
+  ParametersLine->setText(ParamsString);
+}
+
+QString SALOMEGUI_ExternalBrowserDlg::getApp()
+{
+  return ApplicationLine->text();
+}
+
+QString SALOMEGUI_ExternalBrowserDlg::getParams()
+{
+  return ParametersLine->text();
+}
+
+void SALOMEGUI_ExternalBrowserDlg::accept() {
+
+  QFileInfo aFile = QFileInfo(ApplicationLine->text());
+   
+  if (aFile.isFile() && !aFile.isExecutable())
+    QMessageBox::warning ( this, tr( "Error" ) , tr ( "MEN_EXTERNAL_BROWSER_NOTEXECUTABLE" ));
+  else
+    QDialog::accept();
+}
+
+/*  
+ *  Destroys the object and frees any allocated resources
+ */
+SALOMEGUI_ExternalBrowserDlg::~SALOMEGUI_ExternalBrowserDlg()
+{
+    // no need to delete child widgets, Qt does it all for us
+}
+
+
diff --git a/src/SALOMEGUI/SALOMEGUI_ExternalBrowserDlg.h b/src/SALOMEGUI/SALOMEGUI_ExternalBrowserDlg.h
new file mode 100644 (file)
index 0000000..9515699
--- /dev/null
@@ -0,0 +1,36 @@
+//  File   : SALOMEGUI_ExternalBrowserDlg.h
+//  Author : Michael Zorin
+//  Module : SALOME
+//  $Header: /dn05/salome/CVS/SALOME_ROOT/SALOME/src/SALOMEGUI/SALOMEGUI_ExternalBrowserDlg.h
+
+#ifndef SALOMEGUI_EXTERNAL_BROWSER_DLG_H
+#define SALOMEGUI_EXTERNAL_BROWSER_DLG_H
+
+#include <qdialog.h>
+#include <qlineedit.h>
+
+class SALOMEGUI_ExternalBrowserDlg : public QDialog
+{ 
+  Q_OBJECT
+    
+    public:
+  
+  SALOMEGUI_ExternalBrowserDlg( QWidget* parent = 0 );
+  ~SALOMEGUI_ExternalBrowserDlg();
+  void setSettings(const QString& AppString, const QString& ParamsString);
+  QString getApp();
+  QString getParams();
+  
+  private slots:
+
+    void onButtonClicked();
+    void accept(); 
+  
+ private:
+    
+    QPushButton* browseButton;
+    QLineEdit* ApplicationLine;
+    QLineEdit* ParametersLine;
+};
+
+#endif // SALOMEGUI_EXTERNAL_BROWSER_DLG_H
index 4a15b95a31a971c9480bf848e2f48f686b9324dd..02e1c0bca7411c485278f7fb6581fb731b554248 100644 (file)
@@ -73,6 +73,32 @@ msgstr "Size :"
 msgid "SALOMEGUI_TrihedronSizeDlg::MEN_TRIHEDRON"
 msgstr "Trihedron"
 
+#: SALOMEGUI_ExternalBrowserDlg.cxx:26
+msgid "SALOMEGUI_ExternalBrowserDlg::MEN_EXTERNAL_BROWSER"
+msgstr "Choose external browser"
+
+#: SALOMEGUI_ExternalBrowserDlg.cxx:42
+msgid "SALOMEGUI_ExternalBrowserDlg::MEN_EXTERNAL_BROWSER_APP"
+msgstr "Application:"
+
+#: SALOMEGUI_ExternalBrowserDlg.cxx:50
+msgid "SALOMEGUI_ExternalBrowserDlg::MEN_EXTERNAL_BROWSER_PARAMS"
+msgstr "Parameters:"
+
+#: SALOMEGUI_ExternalBrowserDlg.cxx:58
+msgid "SALOMEGUI_ExternalBrowserDlg::MEN_EXTERNAL_BROWSER_BROWSE"
+msgstr "&Browse"
+
+#: SALOMEGUI_ExternalBrowserDlg.cxx:95
+msgid "SALOMEGUI_ExternalBrowserDlg::MEN_EXTERNAL_BROWSER_CHOOSEAPP"
+msgstr "Choose application"
+
+#: SALOMEGUI_ExternalBrowserDlg.cxx:126
+msgid "SALOMEGUI_ExternalBrowserDlg::MEN_EXTERNAL_BROWSER_NOTEXECUTABLE"
+msgstr "The file is not executable!"
+
+
+
 #: SALOMEGUI_OpenWith.cxx:37
 msgid "SALOMEGUI_OpenWith::MEN_COMPONENT_CHOICE1"
 msgstr "Always use this component to open this type of object"
@@ -652,6 +678,24 @@ msgstr "&Cancel"
 msgid "SALOMEGUI_CloseDlg::CLOSE_DESCRIPTION"
 msgstr "Do you want to close or only unload the study ?"
 
+msgid "SALOMEGUI_ActivateComponentDlg::CAPTION"
+msgstr "Activate module"
+
+msgid "SALOMEGUI_ActivateComponentDlg::NEW"
+msgstr "&New"
+
+msgid "SALOMEGUI_ActivateComponentDlg::OPEN"
+msgstr "&Open"
+
+msgid "SALOMEGUI_ActivateComponentDlg::LOAD"
+msgstr "&Load"
+
+msgid "SALOMEGUI_ActivateComponentDlg::CANCEL"
+msgstr "&Cancel"
+
+msgid "SALOMEGUI_ActivateComponentDlg::ActivateComponent_DESCRIPTION"
+msgstr "You need to create, open or load study before."
+
 msgid "SALOMEGUI_HELP_TITLE"
 msgstr "SALOME Professional Help"
 
index 8e0989d5d74ae26909155682240d090e3a073909..4803f6e936e6f0858c5477d99f0bc2583b58dacc 100644 (file)
@@ -44,7 +44,7 @@ LIB_CLIENT_IDL = SALOMEDS.idl \
                 SALOME_Exception.idl
 
 CPPFLAGS+=$(QT_INCLUDES) $(PYTHON_INCLUDES) $(VTK_INCLUDES) $(OGL_INCLUDES) $(OCC_INCLUDES) -DHAVE_CONFIG_H
-LDFLAGS+= $(PYTHON_LIBS) $(QT_MT_LIBS) $(OCC_LIBS) $(VTK_LIBS) $(OGL_LIBS) -lSalomeGUI -lvtkCommonPython -lvtkGraphicsPython -lvtkImagingPython -lVTKViewer
+LDFLAGS+= $(PYTHON_LIBS) $(QT_MT_LIBS) $(VTK_LIBS) $(OGL_LIBS) -lSalomeGUI -lvtkCommonPython -lvtkGraphicsPython -lvtkImagingPython -lVTKViewer
 
 
 @CONCLUDE@
index ed6bcf93c52c5213e89e493fe8ab26dd9da98598..56f7d5c63d03144d4833d6a6c718211b40888900 100644 (file)
@@ -49,7 +49,7 @@ EXPORT_SHAREDPYSCRIPTS = SalomePyQt.py
 LIB_CLIENT_IDL = SALOME_Exception.idl
 
 CPPFLAGS+=$(QT_INCLUDES) $(PYTHON_INCLUDES) $(SIP_INCLUDES) $(OCC_INCLUDES) $(VTK_INCLUDES) $(OGL_INCLUDES)
-LIBS+= $(PYTHON_LIBS) $(SIP_LIBS) $(PYQT_LIBS) $(OCC_LIBS) $(VTK_LIBS) $(OGL_LIBS)
+LIBS+= $(PYTHON_LIBS) $(SIP_LIBS) $(PYQT_LIBS) $(VTK_LIBS) $(OGL_LIBS)
 LDFLAGS+= -lSalomeGUI -lqtcmodule
 
 
index f3a61bc760addae0414bdad473f0d146785577c2..5ad16f16553922614625fef2e530fe78bd4ba7ed 100644 (file)
@@ -68,8 +68,133 @@ def IDToObject(id):
 def IDToSObject(id):
     mySO = myStudy.FindObjectID(id);
     return mySO
+
+    #--------------------------------------------------------------------------
+
+def PersistentPresentation(theStudy, theSO, theWithID):
+    # put the sobject's content (with subchildren) to the string
+    aResult = ""
+    attrs = theSO.GetAllAttributes()
+    aLen = len(attrs)
+    anUncopied = 0
+    for a in range(0,aLen):
+        attr = attrs[a]
+        if isinstance(attr,SALOMEDS._objref_AttributeTreeNode):
+            anUncopied += 1
+        elif isinstance(attr,SALOMEDS._objref_AttributeTarget):
+            anUncopied += 1
+        elif isinstance(attr,SALOMEDS._objref_AttributeReal) or \
+             isinstance(attr,SALOMEDS._objref_AttributeInteger) or \
+             isinstance(attr,SALOMEDS._objref_AttributeName) or \
+             isinstance(attr,SALOMEDS._objref_AttributeComment) or \
+             isinstance(attr,SALOMEDS._objref_AttributePersistentRef) or \
+             isinstance(attr,SALOMEDS._objref_AttributeLocalID) or \
+             isinstance(attr,SALOMEDS._objref_AttributeUserID):
+            aResult += " attribute value: " + str(attr.Value())
+        elif isinstance(attr,SALOMEDS._objref_AttributeIOR):
+            aResult += " attribute: IOR"
+        elif isinstance(attr,SALOMEDS._objref_AttributeSequenceOfReal) or \
+             isinstance(attr,SALOMEDS._objref_AttributeSequenceOfInteger):
+            aResult += " Sequence: " + str(attr.CorbaSequence())
+        elif isinstance(attr,SALOMEDS._objref_AttributeDrawable):
+            aResult += " Drawable: " + str(attr.IsDrawable())
+        elif isinstance(attr,SALOMEDS._objref_AttributeSelectable):
+            aResult += " Selectable: " + str(attr.IsSelectable())
+        elif isinstance(attr,SALOMEDS._objref_AttributeExpandable):
+            aResult += " Expandable: " + str(attr.IsExpandable())
+        elif isinstance(attr,SALOMEDS._objref_AttributeOpened):
+            aResult += " Opened: " + str(attr.IsOpened())
+        elif isinstance(attr,SALOMEDS._objref_AttributeTextColor):
+            aResult += " TextColor: " + str(attr.TextColor())
+        elif isinstance(attr,SALOMEDS._objref_AttributeTextHighlightColor):
+            aResult += " TextHighlightColor: " + str(attr.TextHighlightColor())
+        elif isinstance(attr,SALOMEDS._objref_AttributePixMap):
+            aResult += " PixMap: " + str(attr.GetPixMap())
+        elif isinstance(attr,SALOMEDS._objref_AttributeTableOfInteger) or \
+             isinstance(attr,SALOMEDS._objref_AttributeTableOfReal):
+            aResult += " Table with title: " + attr.GetTitle()
+        elif isinstance(attr,SALOMEDS._objref_AttributePythonObject):
+            aResult += " PythonObject: " + attr.GetObject()
+
+    if theWithID:
+        aResult = "sobject: " + theSO.GetID() + " nbattrs: " + str(aLen - anUncopied) + aResult + '\n'
+    else:
+        aResult = " nbattrs: " + str(aLen - anUncopied) + aResult + '\n'
+    anIter = theStudy.NewChildIterator(theSO)
+    while anIter.More():
+        aResult += PersistentPresentation(theStudy, anIter.Value(), theWithID)
+        anIter.Next()
+    return aResult
+
     #--------------------------------------------------------------------------
 
+def GetTree(theSO):
+    # returns the document list tree (as list)
+    aResult = [theSO.GetID()]
+    anIter = myStudy.NewChildIterator(theSO)
+    while anIter.More():
+        aResult += GetTree(anIter.Value())
+        anIter.Next()
+    return aResult
+
+    #--------------------------------------------------------------------------
+
+def CheckCopyPaste(theSO, theInfo ,theComponentPaste):
+    aRoot = theSO
+    while aRoot.GetID() != "0:":
+        aRoot = aRoot.GetFather()
+    aTree = GetTree(aRoot)
+    aStudyPersist = PersistentPresentation(myStudy, aRoot, 1)
+
+    if not myStudyManager.CanCopy(theSO):
+        raise RuntimeError, "<CanCopy> for "+theInfo+" returns false"
+    
+    if not myStudyManager.Copy(theSO):
+        raise RuntimeError, "<Copy> for "+theInfo+" returns false"
+
+    
+    if not myStudyManager.CanPaste(theSO):
+        raise RuntimeError, "<CanPaste> for "+theInfo+" returns false"
+
+    # check: before paste study is not changed check
+    if aStudyPersist != PersistentPresentation(myStudy, aRoot, 1):
+        raise RuntimeError, "Study is changed before Paste calling for "+theInfo
+    
+    aSObj = theSO
+    if theComponentPaste:
+        aSObj = theSO.GetFatherComponent()
+        theInfo = theInfo + "(paste for component)"
+    if not myStudyManager.Paste(aSObj):
+        raise RuntimeError, "<Paste> for "+theInfo+" returns false"
+    aNewTree = GetTree(aRoot)
+    aLen = len(aTree)
+    for a in range(0,aLen):
+        if aTree[a] != aNewTree[a]:
+            return myStudy.FindObjectID(aNewTree[a])
+        
+    if aLen < len(aNewTree):
+        return myStudy.FindObjectID(aNewTree[aLen])
+    
+    raise RuntimeError, "After Copy calling the tree is not changed"
+    
+    #--------------------------------------------------------------------------
+def FindFileInDataDir(filename):
+    import os
+    datadir = os.getenv("DATA_DIR")
+    if datadir is not None:
+        import string
+        dirs = string.split(datadir, ":")
+        for dir in dirs:
+            file = dir + "/" + filename
+            if os.path.exists(file):
+                return file;
+    datadir = os.getenv("SALOME_ROOT_DIR") + "/data/"
+    file = datadir + filename
+    if os.path.exists(file):
+        return file;
+
+    return None
+        
 #--------------------------------------------------------------------------
 # initialise the ORB
 orb = CORBA.ORB_init([''], CORBA.ORB_ID)
index 8550a196a829eee6821b08ab311d5daebe632aab..6b056326db2dd2aa6bad3be33a159f829e556ebf 100644 (file)
@@ -280,7 +280,7 @@ import os
 dir= os.getenv("SALOME_ROOT_DIR")
 if dir == None:
        raise RuntimeError, "SALOME_ROOT_DIR is not defined"
-xmlfile = dir +"/../SALOME_ROOT/SuperVisionTest/resources/GraphEssai.xml"
+xmlfile = dir +"/data/GraphEssai.xml"
 print "Load dataflow from the file : "
 print xmlfile
 print
@@ -418,7 +418,7 @@ import VISU
 import visu_gui
 
 medFile = "pointe.med"
-medFile = os.getenv('SALOME_ROOT_DIR') + '/../SALOME_ROOT/data/' + medFile
+medFile = os.getenv('SALOME_ROOT_DIR') + '/data/' + medFile
 print "Load ", medFile
 
 studyCurrent = salome.myStudyName
@@ -433,28 +433,23 @@ try:
            med_obj = visu_gui.visu.getMedObjectFromStudy()
            print "med_obj - ", med_obj
 
-           myField = visu_gui.visu.getFieldObjectFromStudy(2,1)
-           aMeshName = "FILED_DOUBLE_MESH"
+           myField1 = visu_gui.visu.getFieldObjectFromStudy(2,1)
+           aMeshName = "maa1"
            anEntity = VISU.NODE
-           aTimeStampId = 0
-           
-           myResult1 = myVisu.ImportMedField(myField)
+          aTimeStampId = -1
+                  
+           myResult1 = myVisu.ImportMedField(myField1)
            aMesh1 = myVisu.MeshOnEntity(myResult1, aMeshName, anEntity);
            
-           aScalarMap1= myVisu.ScalarMapOnField(myResult1, aMeshName, anEntity, myField.getName(), aTimeStampId)
-           if(myField.getNumberOfComponents() > 1) :
-               aVectors = myVisu.VectorsOnField(myResult1, aMeshName, anEntity, myField.getName(), aTimeStampId)
-
-           myResult2 = myVisu.ImportFile(medFile)
-           aMeshName = "maa1"
-           anEntity = VISU.NODE
-           aMesh2 = myVisu.MeshOnEntity(myResult2, aMeshName, anEntity)
-
-           aScalarMap2 = myVisu.ScalarMapOnField(myResult2, aMeshName, anEntity, myField.getName(), aTimeStampId)
-           if(myField.getNumberOfComponents() > 1) :
-             aCutPlanes = myVisu.CutPlanesOnField(myResult2, aMeshName, anEntity, myField.getName(), aTimeStampId)
-
-           sg.updateObjBrowser(0)
+          aScalarMap1= myVisu.ScalarMapOnField(myResult1, aMeshName, anEntity, myField1.getName(), aTimeStampId)
+          
+          myResult2 = myVisu.ImportFile(medFile);
+          aMesh2 = myVisu.MeshOnEntity(myResult2, aMeshName, anEntity);
+           
+          aTimeStampId = 3
+          aScalarMap2= myVisu.ScalarMapOnField(myResult2, aMeshName, anEntity, myField1.getName(), aTimeStampId)
+                  
+          sg.updateObjBrowser(0)
        else :  print "We have no permission to rewrite medFile, so readStructFileWithFieldType can't open this file";
     else :  print  "We have no permission to read medFile, it will not be opened"; 
 
index 52d9231a2a41300c553540cdc902726761ad8a01..d8f6325cc7eff6500839901a996508d59fe39728 100644 (file)
@@ -51,7 +51,7 @@ LIB_CLIENT_IDL = SALOMEDS.idl \
 
 
 CPPFLAGS+=$(QT_INCLUDES) $(OCC_INCLUDES) $(PYTHON_INCLUDES) 
-LDFLAGS+=$(QT_MT_LIBS) $(OCC_LIBS) -L$(top_builddir)/lib -lSalomeGUI
+LDFLAGS+=$(QT_MT_LIBS) -L$(top_builddir)/lib -lSalomeGUI
 
 
 @CONCLUDE@
index 2448c8e778ba200a29f9ad1fecd9a43a9937a6c6..f92f5031d3660779501d97dd24e966aafc74b240 100644 (file)
@@ -51,7 +51,7 @@ BIN_CLIENT_IDL = SALOMEDS.idl SALOMEDS_Attributes.idl SALOME_Component.idl SALOM
 
 CPPFLAGS+=$(QT_MT_INCLUDES) $(OCC_INCLUDES) $(PYTHON_INCLUDES)
 CXXFLAGS+=$(OCC_CXXFLAGS)
-LDFLAGS+=$(QT_MT_LIBS) $(CAS_KERNEL) $(CAS_OCAF) $(CAS_VIEWER) $(CAS_MODELER) -lSalomeNS -lSalomeGUI -lSalomeObject -lSalomeLifeCycleCORBA -lqsplitterP -lOpUtil -lSalomeLoggerServer -lPlot2d
+LDFLAGS+=$(QT_MT_LIBS)  -lSalomeNS -lSalomeGUI -lSalomeObject -lSalomeLifeCycleCORBA -lqsplitterP -lOpUtil -lSalomeLoggerServer -lPlot2d
 
 
 @CONCLUDE@
index 5701871995cdd764c84a903f13ec2f3e4532901f..68c6689278d822c0c9d1fe23bbd476618e60aa94 100644 (file)
@@ -28,7 +28,7 @@
 
 # include "Utils_ORB_INIT.hxx"
 # include "Utils_SINGLETON.hxx"
-
+# include "SALOME_NamingService.hxx"
 #include <iostream>
 #include <unistd.h>
 using namespace std;
@@ -64,11 +64,76 @@ int main(int argc, char **argv)
     ASSERT(SINGLETON_<ORB_INIT>::IsAlreadyExisting()) ;
     CORBA::ORB_var &orb = init( argc , argv ) ;
 
-    CORBA::Object_var obj =orb->resolve_initial_references("RootPOA") ;
-    //MESSAGE("orb->resolve_initial_references('Root_POA')")
-    PortableServer::POA_var poa = PortableServer::POA::_narrow(obj) ;
-    //MESSAGE("POA::_narrow(obj)")
-
+    //
+    long TIMESleep = 250000000;
+       int NumberOfTries = 40;
+       int a;
+       timespec ts_req;
+       ts_req.tv_nsec=TIMESleep;
+       ts_req.tv_sec=0;
+       timespec ts_rem;
+       ts_rem.tv_nsec=0;
+       ts_rem.tv_sec=0;
+       CosNaming::NamingContext_var inc;
+       PortableServer::POA_var poa;
+       CORBA::Object_var theObj;
+       CORBA::Object_var obj;
+       CORBA::Object_var object;
+       SALOME_Logger::Logger_var log;
+       SALOME_NamingService &naming = *SINGLETON_<SALOME_NamingService>::Instance() ;
+       int SESSION=0;
+       const char * Env = getenv("USE_LOGGER"); 
+        int EnvL =0;
+       if ((Env!=NULL) && (strlen(Env)))
+         EnvL=1;
+       CosNaming::Name name;
+       name.length(1);
+       name[0].id=CORBA::string_dup("Logger");    
+       PortableServer::POAManager_var pman; 
+       for (int i = 1; i<=NumberOfTries; i++){
+         if (i!=1) 
+           a=nanosleep(&ts_req,&ts_rem);
+         try{ 
+           obj = orb->resolve_initial_references("RootPOA");
+            if(!CORBA::is_nil(obj))
+           poa = PortableServer::POA::_narrow(obj);
+            if(!CORBA::is_nil(poa))
+           pman = poa->the_POAManager();
+             if(!CORBA::is_nil(orb)) 
+           theObj = orb->resolve_initial_references("NameService");
+           if (!CORBA::is_nil(theObj))
+             inc = CosNaming::NamingContext::_narrow(theObj);
+           }
+         catch( CORBA::COMM_FAILURE& )
+           {
+             MESSAGE( "Session Server: CORBA::COMM_FAILURE: Unable to contact the Naming Service" )
+               }
+         if(!CORBA::is_nil(inc)) {
+           MESSAGE( "Session Server: Naming Service was found" )
+             if(EnvL==1){
+               for(int j=1; j<=NumberOfTries; j++){
+                 if (j!=1) 
+                   a=nanosleep(&ts_req, &ts_rem);
+                 try{
+                   object = inc->resolve(name);
+                 }
+                 catch(CosNaming::NamingContext::NotFound){ MESSAGE( "Session Server: Logger Server wasn't found" ) }
+                 catch(...){ MESSAGE( "Session Server: Unknown exception" ) }
+                 if (!CORBA::is_nil(object))
+                   log = SALOME_Logger::Logger::_narrow(object);
+                 if (!CORBA::is_nil(log)){
+                   MESSAGE( "Session Server: Loger Server was found" )
+                     log->ping();
+                    SESSION=1;
+                   break;
+                 }
+               }}
+         }
+         if ((SESSION==1)||((EnvL==0)&&(!CORBA::is_nil(inc))))
+            break;
+             }
+    //
+   
     // servant
 
     SALOME_Session_i * mySALOME_Session = new SALOME_Session_i(argc, argv, orb, poa) ;
@@ -85,7 +150,7 @@ int main(int argc, char **argv)
     mySALOME_Session->_remove_ref() ;
     //MESSAGE("mySALOME_Session->_remove_ref()")
 
-    PortableServer::POAManager_var pman = poa->the_POAManager() ;
+    //DECOMMENT PortableServer::POAManager_var pman = poa->the_POAManager() ;
     pman->activate() ;
     MESSAGE("pman->activate()")
 
index e4e5fc028b7fda05b45d8b6c03b18bd261d6c7c4..12cc0042606cb9dead259c74a6caf0bec2e277af 100644 (file)
@@ -29,7 +29,7 @@ BIN_CLIENT_IDL =
 
 CPPFLAGS+=$(OCC_INCLUDES) $(HDF5_INCLUDES)
 CXXFLAGS+=$(OCC_CXXFLAGS)
-LDFLAGS+=$(CAS_KERNEL) -lOpUtil -lSalomeLoggerServer
+LDFLAGS+= -lOpUtil -lSalomeLoggerServer $(CAS_LDPATH) -lTKernel
 # -L/opt/ccmalloc/lib -lccmalloc -ldl
 # -L/opt/efence/lib -lefence
 
index 9a7e68bebe05585f7e10bb7f0c4c8f3b4daa163f..1df235d252eed00edba6259c9b92f613b4fc1f7d 100644 (file)
@@ -58,7 +58,7 @@ LIB_CLIENT_IDL = SALOME_Exception.idl
 CPPFLAGS += $(QT_INCLUDES) $(OCC_INCLUDES) $(PYTHON_INCLUDES)
 CXXFLAGS += $(OCC_CXXFLAGS)
 
-LDFLAGS += -lSalomeGUI $(OCC_LIBS)
+LDFLAGS += -lSalomeGUI 
 
 
 @CONCLUDE@
index 8e7ffe1bc930e52158c2c39a87c4c7f857e9de38..12e9dae83b89e6a6cd6f74006f80b25da074882b 100644 (file)
@@ -36,7 +36,10 @@ using namespace std;
 
 #include "SALOME_NamingService.hxx"
 #include "OpUtil.hxx"
-
+# include "Utils_ORB_INIT.hxx"
+# include "Utils_SINGLETON.hxx"
+# include "Utils_SALOME_Exception.hxx"
+# include "Utils_CommException.hxx"
 int main (int argc, char * argv[])
 {
 
@@ -51,9 +54,75 @@ int main (int argc, char * argv[])
       //Engines::Container_var iGenFact = Engines::Container::_narrow(obj);
 
       // Obtain a reference to the root POA
-      CORBA::Object_var obj = orb->resolve_initial_references("RootPOA") ;
-      PortableServer::POA_var poa = PortableServer::POA::_narrow(obj) ;
-    
+      //
+     long TIMESleep = 250000000;
+     int NumberOfTries = 40;
+     int a;
+     timespec ts_req;
+     ts_req.tv_nsec=TIMESleep;
+     ts_req.tv_sec=0;
+     timespec ts_rem;
+     ts_rem.tv_nsec=0;
+     ts_rem.tv_sec=0;
+     CosNaming::NamingContext_var inc;
+     PortableServer::POA_var poa;
+     CORBA::Object_var theObj;
+     CORBA::Object_var obj;
+     CORBA::Object_var object;
+     SALOME_Logger::Logger_var log;
+     SALOME_NamingService &naming = *SINGLETON_<SALOME_NamingService>::Instance() ;
+     int TEST_CONTAINER=0;
+     const char * Env = getenv("USE_LOGGER"); 
+      int EnvL =0;
+      if ((Env!=NULL) && (strlen(Env)))
+       EnvL=1;
+      CosNaming::Name name;
+      name.length(1);
+      name[0].id=CORBA::string_dup("Logger");    
+     PortableServer::POAManager_var manager; 
+     for (int i = 1; i<=NumberOfTries; i++){
+       if (i!=1) 
+        a=nanosleep(&ts_req,&ts_rem);
+       try{ 
+        obj = orb->resolve_initial_references("RootPOA");
+        if(!CORBA::is_nil(obj))
+          poa = PortableServer::POA::_narrow(obj);
+        if(!CORBA::is_nil(poa))
+          manager = poa->the_POAManager();
+        if(!CORBA::is_nil(orb)) 
+          theObj = orb->resolve_initial_references("NameService");
+        if (!CORBA::is_nil(theObj))
+          inc = CosNaming::NamingContext::_narrow(theObj);
+       }
+       catch( CORBA::COMM_FAILURE& )
+        {
+          MESSAGE( "Test Container: CORBA::COMM_FAILURE: Unable to contact the Naming Service" )
+            }
+       if(!CORBA::is_nil(inc)) {
+        MESSAGE( "Test Container: Naming Service was found" )
+          if(EnvL==1){
+            for(int j=1; j<=NumberOfTries; j++){
+              if (j!=1) 
+                a=nanosleep(&ts_req, &ts_rem);
+              try{
+                object = inc->resolve(name);
+              }
+              catch(CosNaming::NamingContext::NotFound){ MESSAGE( "Test Container: Logger Server wasn't found" ) }
+              catch(...){ MESSAGE( "Test Container: Unknown exception" ) }
+              if (!CORBA::is_nil(object))
+                log = SALOME_Logger::Logger::_narrow(object);
+              if (!CORBA::is_nil(log)){
+                MESSAGE( "Test Container: Loger Server was found" )
+                  log->ping();
+                TEST_CONTAINER=1;
+                break;
+                 }
+               }}
+         }
+         if ((TEST_CONTAINER==1)||((EnvL==0)&&(!CORBA::is_nil(inc))))
+            break;
+             }
+      //
       // Use Name Service to find container
       SALOME_NamingService _NS(orb) ;
       string containerName = "/Containers/" ;
index a35afb6ad95e2ffda23dfdf7f95da2c5159385b5..06e10671bf589b5650dcceabb8706702c8400576 100644 (file)
@@ -24,6 +24,9 @@
 //  File   : Utils_Timer.hxx
 //  Module : SALOME
 
+#include <stdlib.h>
+#include <time.h>
+
 # include <sys/times.h>
 # include <sys/time.h>
 # include <unistd.h>
diff --git a/src/VTKFilter/Makefile.in b/src/VTKFilter/Makefile.in
new file mode 100644 (file)
index 0000000..27fede9
--- /dev/null
@@ -0,0 +1,56 @@
+#  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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+#
+#
+#
+#  File   : Makefile.in
+#  Module : VISU
+
+top_srcdir=@top_srcdir@
+top_builddir=../../..
+srcdir=@srcdir@
+VPATH=.:@srcdir@:@top_srcdir@/idl
+
+
+@COMMENCE@
+
+EXPORT_HEADERS = SALOME_Transform.h \
+                SALOME_TransformFilter.h \
+                SALOME_PassThroughFilter.h \
+                SALOME_GeometryFilter.h
+
+# Libraries targets
+
+LIB = libSalomeVTKFilter.la
+LIB_SRC = SALOME_Transform.cxx \
+          SALOME_TransformFilter.cxx \
+         SALOME_PassThroughFilter.cxx \
+         SALOME_GeometryFilter.cxx
+
+# Executables targets
+
+BIN = 
+BIN_SRC        = 
+
+CPPFLAGS+= $(VTK_INCLUDES)
+LDFLAGS+= $(VTK_LIBS)
+
+@CONCLUDE@
\ No newline at end of file
diff --git a/src/VTKFilter/SALOME_GeometryFilter.cxx b/src/VTKFilter/SALOME_GeometryFilter.cxx
new file mode 100644 (file)
index 0000000..1bf6904
--- /dev/null
@@ -0,0 +1,485 @@
+//  SALOME OBJECT : kernel of SALOME component
+//
+//  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   : SALOME_GeometryFilter.cxx
+//  Author : Michael ZORIN
+//  Module : SALOME
+//  $Header: /dn05/salome/CVS/SALOME_ROOT/SALOME/src/OBJECT/SALOME_GeometryFilter.cxx
+
+#include "SALOME_GeometryFilter.h"
+
+#include <vtkCellArray.h>
+#include <vtkCellData.h>
+#include <vtkGenericCell.h>
+#include <vtkHexahedron.h>
+#include <vtkMergePoints.h>
+#include <vtkObjectFactory.h>
+#include <vtkPointData.h>
+#include <vtkPolyData.h>
+#include <vtkPyramid.h>
+#include <vtkStructuredGrid.h>
+#include <vtkTetra.h>
+#include <vtkUnsignedCharArray.h>
+#include <vtkUnstructuredGrid.h>
+#include <vtkVoxel.h>
+#include <vtkWedge.h>
+
+vtkCxxRevisionMacro(SALOME_GeometryFilter, "$Revision$");
+vtkStandardNewMacro(SALOME_GeometryFilter);
+
+
+SALOME_GeometryFilter::SALOME_GeometryFilter(): myShowInside(0)
+{}
+
+SALOME_GeometryFilter::~SALOME_GeometryFilter()
+{}
+
+void SALOME_GeometryFilter::Execute()
+{
+  vtkDataSet *input= this->GetInput();
+  vtkIdType numCells=input->GetNumberOfCells();
+
+  if (numCells == 0)
+    {
+      return;
+    }
+  
+  if (input->GetDataObjectType() == VTK_UNSTRUCTURED_GRID){
+    this->UnstructuredGridExecute();
+    return;
+  }else
+    vtkGeometryFilter::Execute();
+}
+
+void SALOME_GeometryFilter::UnstructuredGridExecute()
+{
+  vtkUnstructuredGrid *input= (vtkUnstructuredGrid *)this->GetInput();
+  vtkCellArray *Connectivity = input->GetCells();
+  if (Connectivity == NULL) {return;}
+  vtkIdType cellId;
+  int i;
+  int allVisible;
+  vtkIdType npts = 0;
+  vtkIdType *pts = 0;
+  vtkPoints *p = input->GetPoints();
+  vtkIdType numCells=input->GetNumberOfCells();
+  vtkPointData *pd = input->GetPointData();
+  vtkCellData *cd = input->GetCellData();
+  vtkPolyData *output = this->GetOutput();
+  vtkPointData *outputPD = output->GetPointData();
+  
+  vtkCellData *outputCD = output->GetCellData();
+  vtkCellArray *Verts, *Lines, *Polys, *Strips;
+  vtkIdList *cellIds, *faceIds;
+  char *cellVis;
+  vtkIdType newCellId;
+  int faceId, *faceVerts, numFacePts;
+  float *x;
+  int PixelConvert[4];
+  // ghost cell stuff
+  unsigned char  updateLevel = (unsigned char)(output->GetUpdateGhostLevel());
+  unsigned char  *cellGhostLevels = 0;  
+  
+  PixelConvert[0] = 0;
+  PixelConvert[1] = 1;
+  PixelConvert[2] = 3;
+  PixelConvert[3] = 2;
+  
+  vtkDebugMacro(<<"Executing geometry filter for unstructured grid input");
+
+  vtkDataArray* temp = 0;
+  if (cd)
+    {
+    temp = cd->GetArray("vtkGhostLevels");
+    }
+  if ( (!temp) || (temp->GetDataType() != VTK_UNSIGNED_CHAR)
+    || (temp->GetNumberOfComponents() != 1))
+    {
+    vtkDebugMacro("No appropriate ghost levels field available.");
+    }
+  else
+    {
+    cellGhostLevels = ((vtkUnsignedCharArray*)temp)->GetPointer(0);
+    }
+  
+  // Check input
+  if ( Connectivity == NULL )
+    {
+    vtkDebugMacro(<<"Nothing to extract");
+    return;
+    }
+
+  // Determine nature of what we have to do
+  cellIds = vtkIdList::New();
+  faceIds = vtkIdList::New();
+  if ( (!this->CellClipping) && (!this->PointClipping) &&
+       (!this->ExtentClipping) )
+    {
+    allVisible = 1;
+    cellVis = NULL;
+    }
+  else
+    {
+    allVisible = 0;
+    cellVis = new char[numCells];
+    }
+
+  // Just pass points through, never merge
+  output->SetPoints(input->GetPoints());
+  outputPD->PassData(pd);
+
+  outputCD->CopyAllocate(cd,numCells,numCells/2);
+
+  Verts = vtkCellArray::New();
+  Verts->Allocate(numCells/4+1,numCells);
+  Lines = vtkCellArray::New();
+  Lines->Allocate(numCells/4+1,numCells);
+  Polys = vtkCellArray::New();
+  Polys->Allocate(numCells/4+1,numCells);
+  Strips = vtkCellArray::New();
+  Strips->Allocate(numCells/4+1,numCells);
+  
+  // Loop over the cells determining what's visible
+  if (!allVisible)
+    {
+    for (cellId=0, Connectivity->InitTraversal(); 
+         Connectivity->GetNextCell(npts,pts); 
+         cellId++)
+      {
+      cellVis[cellId] = 1;
+      if ( this->CellClipping && cellId < this->CellMinimum ||
+           cellId > this->CellMaximum )
+        {
+        cellVis[cellId] = 0;
+        }
+      else
+        {
+        for (i=0; i < npts; i++) 
+          {
+          x = p->GetPoint(pts[i]);
+          if ( (this->PointClipping && (pts[i] < this->PointMinimum ||
+                                        pts[i] > this->PointMaximum) ) ||
+               (this->ExtentClipping && 
+                (x[0] < this->Extent[0] || x[0] > this->Extent[1] ||
+                 x[1] < this->Extent[2] || x[1] > this->Extent[3] ||
+                 x[2] < this->Extent[4] || x[2] > this->Extent[5] )) )
+            {
+            cellVis[cellId] = 0;
+            break;
+            }//point/extent clipping
+          }//for each point
+        }//if point clipping needs checking
+      }//for all cells
+    }//if not all visible
+  
+  // Loop over all cells now that visibility is known
+  // (Have to compute visibility first for 3D cell boundarys)
+  int progressInterval = numCells/20 + 1;
+  for (cellId=0, Connectivity->InitTraversal(); 
+       Connectivity->GetNextCell(npts,pts); 
+       cellId++)
+    {
+    //Progress and abort method support
+    if ( !(cellId % progressInterval) )
+      {
+      vtkDebugMacro(<<"Process cell #" << cellId);
+      this->UpdateProgress ((float)cellId/numCells);
+      }
+
+    // Handle ghost cells here.  Another option was used cellVis array.
+    if (cellGhostLevels && cellGhostLevels[cellId] > updateLevel)
+      { // Do not create surfaces in outer ghost cells.
+      continue;
+      }
+    
+    if (allVisible || cellVis[cellId])  //now if visible extract geometry
+      {
+      //special code for nonlinear cells - rarely occurs, so right now it
+      //is slow.
+      switch (input->GetCellType(cellId))
+        {
+        case VTK_EMPTY_CELL:
+          break;
+
+        case VTK_VERTEX:
+        case VTK_POLY_VERTEX:
+          newCellId = Verts->InsertNextCell(npts,pts);
+          outputCD->CopyData(cd,cellId,newCellId);
+          break;
+
+        case VTK_LINE: 
+        case VTK_POLY_LINE:
+          newCellId = Lines->InsertNextCell(npts,pts);
+          outputCD->CopyData(cd,cellId,newCellId);
+          break;
+
+        case VTK_TRIANGLE:
+        case VTK_QUAD:
+        case VTK_POLYGON:
+          newCellId = Polys->InsertNextCell(npts,pts);
+          outputCD->CopyData(cd,cellId,newCellId);
+          break;
+
+        case VTK_TRIANGLE_STRIP:
+          newCellId = Strips->InsertNextCell(npts,pts);
+          outputCD->CopyData(cd,cellId,newCellId);
+          break;
+
+        case VTK_PIXEL:
+          newCellId = Polys->InsertNextCell(npts);
+          for ( i=0; i < npts; i++)
+            {
+            Polys->InsertCellPoint(pts[PixelConvert[i]]);
+            }
+          outputCD->CopyData(cd,cellId,newCellId);
+          break;
+
+        case VTK_TETRA:
+          for (faceId = 0; faceId < 4; faceId++)
+            {
+            faceIds->Reset();
+            faceVerts = vtkTetra::GetFaceArray(faceId);
+            faceIds->InsertNextId(pts[faceVerts[0]]);
+            faceIds->InsertNextId(pts[faceVerts[1]]);
+            faceIds->InsertNextId(pts[faceVerts[2]]);
+            numFacePts = 3;
+            input->GetCellNeighbors(cellId, faceIds, cellIds);
+            if ( cellIds->GetNumberOfIds() <= 0 || myShowInside == 1 ||
+                 (!allVisible && !cellVis[cellIds->GetId(0)]) )
+              {
+              newCellId = Polys->InsertNextCell(numFacePts);
+              for ( i=0; i < numFacePts; i++)
+                {
+                Polys->InsertCellPoint(pts[faceVerts[i]]);
+                }
+              outputCD->CopyData(cd,cellId,newCellId);
+              }
+            }
+          break;
+
+        case VTK_VOXEL:
+          for (faceId = 0; faceId < 6; faceId++)
+            {
+            faceIds->Reset();
+            faceVerts = vtkVoxel::GetFaceArray(faceId);
+            faceIds->InsertNextId(pts[faceVerts[0]]);
+            faceIds->InsertNextId(pts[faceVerts[1]]);
+            faceIds->InsertNextId(pts[faceVerts[2]]);
+            faceIds->InsertNextId(pts[faceVerts[3]]);
+            numFacePts = 4;
+            input->GetCellNeighbors(cellId, faceIds, cellIds);
+            if ( cellIds->GetNumberOfIds() <= 0 || myShowInside == 1 || 
+                 (!allVisible && !cellVis[cellIds->GetId(0)]) )
+              {
+              newCellId = Polys->InsertNextCell(numFacePts);
+              for ( i=0; i < numFacePts; i++)
+                {
+                Polys->InsertCellPoint(pts[faceVerts[PixelConvert[i]]]);
+                }
+              outputCD->CopyData(cd,cellId,newCellId);
+              }
+            }
+          break;
+
+        case VTK_HEXAHEDRON:
+          for (faceId = 0; faceId < 6; faceId++)
+            {
+            faceIds->Reset();
+            faceVerts = vtkHexahedron::GetFaceArray(faceId);
+            faceIds->InsertNextId(pts[faceVerts[0]]);
+            faceIds->InsertNextId(pts[faceVerts[1]]);
+            faceIds->InsertNextId(pts[faceVerts[2]]);
+            faceIds->InsertNextId(pts[faceVerts[3]]);
+            numFacePts = 4;
+            input->GetCellNeighbors(cellId, faceIds, cellIds);
+            if ( cellIds->GetNumberOfIds() <= 0 || myShowInside == 1 ||
+                 (!allVisible && !cellVis[cellIds->GetId(0)]) )
+              {
+              newCellId = Polys->InsertNextCell(numFacePts);
+              for ( i=0; i < numFacePts; i++)
+                {
+                Polys->InsertCellPoint(pts[faceVerts[i]]);
+                }
+              outputCD->CopyData(cd,cellId,newCellId);
+              }
+            }
+          break;
+
+        case VTK_WEDGE:
+          for (faceId = 0; faceId < 5; faceId++)
+            {
+            faceIds->Reset();
+            faceVerts = vtkWedge::GetFaceArray(faceId);
+            faceIds->InsertNextId(pts[faceVerts[0]]);
+            faceIds->InsertNextId(pts[faceVerts[1]]);
+            faceIds->InsertNextId(pts[faceVerts[2]]);
+            numFacePts = 3;
+            if (faceVerts[3] >= 0)
+              {
+              faceIds->InsertNextId(pts[faceVerts[3]]);
+              numFacePts = 4;
+              }
+            input->GetCellNeighbors(cellId, faceIds, cellIds);
+            if ( cellIds->GetNumberOfIds() <= 0 || myShowInside == 1 || 
+                 (!allVisible && !cellVis[cellIds->GetId(0)]) )
+              {
+              newCellId = Polys->InsertNextCell(numFacePts);
+              for ( i=0; i < numFacePts; i++)
+                {
+                Polys->InsertCellPoint(pts[faceVerts[i]]);
+                }
+              outputCD->CopyData(cd,cellId,newCellId);
+              }
+            }
+          break;
+
+        case VTK_PYRAMID:
+          for (faceId = 0; faceId < 5; faceId++)
+            {
+            faceIds->Reset();
+            faceVerts = vtkPyramid::GetFaceArray(faceId);
+            faceIds->InsertNextId(pts[faceVerts[0]]);
+            faceIds->InsertNextId(pts[faceVerts[1]]);
+            faceIds->InsertNextId(pts[faceVerts[2]]);
+            numFacePts = 3;
+            if (faceVerts[3] >= 0)
+              {
+              faceIds->InsertNextId(pts[faceVerts[3]]);
+              numFacePts = 4;
+              }
+            input->GetCellNeighbors(cellId, faceIds, cellIds);
+            if ( cellIds->GetNumberOfIds() <= 0 || myShowInside == 1 || 
+                 (!allVisible && !cellVis[cellIds->GetId(0)]) )
+              {
+              newCellId = Polys->InsertNextCell(numFacePts);
+              for ( i=0; i < numFacePts; i++)
+                {
+                Polys->InsertCellPoint(pts[faceVerts[i]]);
+                }
+              outputCD->CopyData(cd,cellId,newCellId);
+              }
+            }
+          break;
+
+        //Quadratic cells
+        case VTK_QUADRATIC_EDGE:
+        case VTK_QUADRATIC_TRIANGLE:
+        case VTK_QUADRATIC_QUAD:
+        case VTK_QUADRATIC_TETRA:
+        case VTK_QUADRATIC_HEXAHEDRON:
+          {
+          vtkGenericCell *cell = vtkGenericCell::New();
+          input->GetCell(cellId,cell);
+          vtkIdList *pts = vtkIdList::New();  
+          vtkPoints *coords = vtkPoints::New();
+          vtkIdList *cellIds = vtkIdList::New();
+          vtkIdType newCellId;
+
+          if ( cell->GetCellDimension() == 1 )
+            {
+            cell->Triangulate(0,pts,coords);
+            for (i=0; i < pts->GetNumberOfIds(); i+=2)
+              {
+              newCellId = Lines->InsertNextCell(2);
+              Lines->InsertCellPoint(pts->GetId(i));
+              Lines->InsertCellPoint(pts->GetId(i+1));
+              outputCD->CopyData(cd,cellId,newCellId);
+              }
+            }
+          else if ( cell->GetCellDimension() == 2 )
+            {
+            cell->Triangulate(0,pts,coords);
+            for (i=0; i < pts->GetNumberOfIds(); i+=3)
+              {
+              newCellId = Lines->InsertNextCell(2);
+              Polys->InsertCellPoint(pts->GetId(i));
+              Polys->InsertCellPoint(pts->GetId(i+1));
+              Polys->InsertCellPoint(pts->GetId(i+2));
+              outputCD->CopyData(cd,cellId,newCellId);
+              }
+            } 
+          else //3D nonlinear cell
+            {
+            vtkCell *face;
+            for (int j=0; j < cell->GetNumberOfFaces(); j++)
+              {
+              face = cell->GetFace(j);
+              input->GetCellNeighbors(cellId, face->PointIds, cellIds);
+              if ( cellIds->GetNumberOfIds() <= 0)
+                {
+                face->Triangulate(0,pts,coords);
+                for (i=0; i < pts->GetNumberOfIds(); i+=3)
+                  {
+                  newCellId = Lines->InsertNextCell(2);
+                  Polys->InsertCellPoint(pts->GetId(i));
+                  Polys->InsertCellPoint(pts->GetId(i+1));
+                  Polys->InsertCellPoint(pts->GetId(i+2));
+                  outputCD->CopyData(cd,cellId,newCellId);
+                  }
+                }
+              }
+            } //3d cell
+          cellIds->Delete();
+          coords->Delete();
+          pts->Delete();
+          cell->Delete();
+          }
+          break; //done with quadratic cells
+          
+        } //switch
+      } //if visible
+    } //for all cells
+  
+  // Update ourselves and release memory
+  //
+  output->SetVerts(Verts);
+  Verts->Delete();
+  output->SetLines(Lines);
+  Lines->Delete();
+  output->SetPolys(Polys);
+  Polys->Delete();
+  output->SetStrips(Strips);
+  Strips->Delete();
+  
+  output->Squeeze();
+
+  vtkDebugMacro(<<"Extracted " << input->GetNumberOfPoints() << " points,"
+  << output->GetNumberOfCells() << " cells.");
+
+  cellIds->Delete();
+  faceIds->Delete();
+  if ( cellVis )
+    {
+    delete [] cellVis;
+    }
+}
+
+
+void SALOME_GeometryFilter::SetInside(int theShowInside){
+  if(myShowInside == theShowInside) return;
+  myShowInside = theShowInside;
+  this->Modified();
+}
+int SALOME_GeometryFilter::GetInside(){
+  return myShowInside;
+}
diff --git a/src/VTKFilter/SALOME_GeometryFilter.h b/src/VTKFilter/SALOME_GeometryFilter.h
new file mode 100644 (file)
index 0000000..f6edf6b
--- /dev/null
@@ -0,0 +1,54 @@
+//  SALOME OBJECT : kernel of SALOME component
+//
+//  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   : SALOME_GeometryFilter.h
+//  Author : Michael ZORIN
+//  Module : SALOME
+//  $Header: /dn05/salome/CVS/SALOME_ROOT/SALOME/src/OBJECT/SALOME_GeometryFilter.h
+
+
+#ifndef __SALOME_GeometryFilter_h
+#define __SALOME_GeometryFilter_h
+
+#include <vtkGeometryFilter.h>
+
+class SALOME_GeometryFilter : public vtkGeometryFilter 
+{
+public:
+  static SALOME_GeometryFilter *New();
+  vtkTypeRevisionMacro(SALOME_GeometryFilter, vtkGeometryFilter);
+  void SetInside(int theShowInside);
+  int GetInside();
+
+protected:
+  SALOME_GeometryFilter();
+  ~SALOME_GeometryFilter();
+  
+  void Execute();
+  void UnstructuredGridExecute();
+    
+private:
+  int myShowInside;      
+};
+
+#endif
diff --git a/src/VTKFilter/SALOME_PassThroughFilter.cxx b/src/VTKFilter/SALOME_PassThroughFilter.cxx
new file mode 100644 (file)
index 0000000..3557b62
--- /dev/null
@@ -0,0 +1,91 @@
+//  SALOME FILTER : 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+//
+//
+//
+//  File   : SALOME_PassThroughFilter.cxx
+//  Author : Laurent CORNABE with help of Nicolas REJNERI
+//  Module : SALOME
+
+
+#include "SALOME_PassThroughFilter.h"
+#include "SALOME_GeometryFilter.h"
+
+#include <vtkObjectFactory.h>
+#include <vtkPointSet.h>
+#include <vtkPointData.h>
+#include <vtkCellData.h>
+#include <vtkPoints.h>
+#include <vtkMatrix4x4.h>
+
+using namespace std;
+
+vtkStandardNewMacro(SALOME_PassThroughFilter);
+
+SALOME_PassThroughFilter::SALOME_PassThroughFilter(){
+  this->vtkProcessObject::SetNthInput(0, NULL);
+  myGeomFilter = SALOME_GeometryFilter::New();
+}
+
+SALOME_PassThroughFilter::~SALOME_PassThroughFilter(){
+  myGeomFilter->Delete();
+}
+
+void SALOME_PassThroughFilter::Execute(){
+  vtkDataSet *input = static_cast<vtkDataSet*>(this->GetInput());
+  vtkDataSet *output = static_cast<vtkDataSet*>(this->GetOutput());
+  output->CopyStructure( input );
+  output->GetPointData()->PassData( input->GetPointData() );
+  output->GetCellData()->PassData( input->GetCellData() );
+}
+
+
+void SALOME_PassThroughFilter::SetInput(vtkDataSet *input){
+  myGeomFilter->SetInput(input);
+  vtkDataSet *oldInput = this->GetInput();
+  if(oldInput != NULL)
+    if(input == NULL || oldInput->GetDataObjectType() != input->GetDataObjectType()){
+      vtkWarningMacro("Changing input type.  Deleting output");
+      this->SetOutput(NULL);
+    }
+  if (input != NULL && this->vtkSource::GetOutput(0) == NULL){
+    this->vtkSource::SetNthOutput(0, input->NewInstance());
+    this->Outputs[0]->ReleaseData();
+    this->Outputs[0]->Delete();
+  }
+  this->vtkProcessObject::SetNthInput(0, input);
+}
+vtkPolyData *SALOME_PassThroughFilter::GetPolyDataOutput() {
+  vtkDataSet *ds = this->GetOutput();
+  if(!ds) return NULL;
+  if(ds->GetDataObjectType() == VTK_POLY_DATA) return (vtkPolyData *)ds;
+  myGeomFilter->SetInput(this->GetOutput());
+  return myGeomFilter->GetOutput();
+}
+
+
+void SALOME_PassThroughFilter::SetInside(int theShowInside){
+  myGeomFilter->SetInside(theShowInside);
+  Modified();
+}
+int SALOME_PassThroughFilter::GetInside(){
+  return myGeomFilter->GetInside();
+}
diff --git a/src/VTKFilter/SALOME_PassThroughFilter.h b/src/VTKFilter/SALOME_PassThroughFilter.h
new file mode 100644 (file)
index 0000000..51e1124
--- /dev/null
@@ -0,0 +1,59 @@
+//  SALOME FILTER : 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+//
+//
+//
+//  File   : SALOME_PassThroughFilter.h
+//  Author : Laurent CORNABE with help of Nicolas REJNERI
+//  Module : SALOME
+
+
+#ifndef SALOME_PassThroughFilter_HeaderFile
+#define SALOME_PassThroughFilter_HeaderFile
+
+#include <vtkDataSetToDataSetFilter.h>
+
+class SALOME_GeometryFilter;
+
+class SALOME_PassThroughFilter : public vtkDataSetToDataSetFilter{
+ public:
+  vtkTypeMacro(SALOME_PassThroughFilter,vtkDataSetToDataSetFilter);
+  static SALOME_PassThroughFilter *New();
+
+  void SetInput(vtkDataSet *input);
+  vtkPolyData *GetPolyDataOutput();
+
+  void SetInside(int theShowInside);
+  int GetInside();
+
+ protected:
+  SALOME_PassThroughFilter();
+  virtual ~SALOME_PassThroughFilter();
+  void Execute();
+
+  SALOME_GeometryFilter* myGeomFilter;
+
+ private:
+  SALOME_PassThroughFilter(const SALOME_PassThroughFilter&);  // Not implemented.
+  void operator=(const SALOME_PassThroughFilter&);  // Not implemented.
+};
+
+#endif
diff --git a/src/VTKFilter/SALOME_Transform.cxx b/src/VTKFilter/SALOME_Transform.cxx
new file mode 100644 (file)
index 0000000..7700215
--- /dev/null
@@ -0,0 +1,49 @@
+//  SALOME FILTER : 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+//
+//
+//
+//  File   : SALOME_Transform.cxx
+//  Author : Laurent CORNABE with help of Nicolas REJNERI
+//  Module : SALOME
+
+
+#include "SALOME_Transform.h"
+
+#include <vtkObjectFactory.h>
+#include <vtkMatrix4x4.h>
+
+using namespace std;
+
+vtkStandardNewMacro(SALOME_Transform);
+
+void SALOME_Transform::SetScale(float theScaleX, float theScaleY, float theScaleZ){ 
+  double aMatrix[16] = {theScaleX,0,0,0, 
+                        0,theScaleY,0,0, 
+                        0,0,theScaleZ,0, 
+                        0,0,0,1.0000000};
+  vtkTransform::SetMatrix(aMatrix);
+}
+
+int SALOME_Transform::IsIdentity(){ 
+  float* aScale = GetScale();
+  return (aScale[0] == 1.0 && aScale[1] == 1.0 && aScale[2] == 1.0);
+}
diff --git a/src/VTKFilter/SALOME_Transform.h b/src/VTKFilter/SALOME_Transform.h
new file mode 100644 (file)
index 0000000..fe9231a
--- /dev/null
@@ -0,0 +1,49 @@
+//  SALOME FILTER : 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+//
+//
+//
+//  File   : SALOME_Transform.h
+//  Author : Laurent CORNABE with help of Nicolas REJNERI
+//  Module : SALOME
+
+
+#ifndef SALOME_Transform_HeaderFile
+#define SALOME_Transform_HeaderFile
+
+#include <vtkTransform.h>
+
+class VTK_EXPORT SALOME_Transform : public vtkTransform{
+ public:
+  static SALOME_Transform *New();
+  vtkTypeMacro(SALOME_Transform,vtkTransform);
+
+  void SetScale(float theScaleX, float theScaleY, float theScaleZ);
+  int IsIdentity();
+
+protected:
+  SALOME_Transform() {}
+  ~SALOME_Transform() {}
+  SALOME_Transform(const SALOME_Transform&) {}
+  void operator=(const SALOME_Transform&) {}
+};
+
+#endif
diff --git a/src/VTKFilter/SALOME_TransformFilter.cxx b/src/VTKFilter/SALOME_TransformFilter.cxx
new file mode 100644 (file)
index 0000000..de14593
--- /dev/null
@@ -0,0 +1,72 @@
+//  SALOME FILTER : 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+//
+//
+//
+//  File   : SALOME_TransformFilter.h
+//  Author : Laurent CORNABE with help of Nicolas REJNERI
+//  Module : SALOME
+
+
+#include "SALOME_TransformFilter.h"
+#include "SALOME_Transform.h"
+
+#include <vtkObjectFactory.h>
+#include <vtkPointSet.h>
+#include <vtkPointData.h>
+#include <vtkCellData.h>
+#include <vtkPoints.h>
+
+using namespace std;
+
+vtkStandardNewMacro(SALOME_TransformFilter);
+
+void SALOME_TransformFilter::Execute(){
+  vtkPoints *inPts;
+  vtkPoints *newPts;
+  int numPts, numCells;
+  vtkPointSet *input = this->GetInput();
+  vtkPointSet *output = this->GetOutput();
+  vtkPointData *pd=input->GetPointData(), *outPD=output->GetPointData();
+  vtkCellData *cd=input->GetCellData(), *outCD=output->GetCellData();
+  output->CopyStructure( input );
+  int anIdentity = 0;
+  if(SALOME_Transform* aTransform = dynamic_cast<SALOME_Transform*>(this->Transform))
+    anIdentity = aTransform->IsIdentity();
+  if(!anIdentity && this->Transform != NULL){
+    inPts = input->GetPoints();
+    if(!inPts){
+      vtkErrorMacro(<<"No input data");
+      return;
+    }
+    numPts = inPts->GetNumberOfPoints();
+    numCells = input->GetNumberOfCells();
+    newPts = vtkPoints::New();
+    newPts->Allocate(numPts);
+    this->UpdateProgress(.2);
+    this->Transform->TransformPoints(inPts,newPts);
+    this->UpdateProgress(.8);
+    output->SetPoints(newPts);
+    newPts->Delete();
+  }
+  outPD->PassData(pd);
+  outCD->PassData(cd);
+}
diff --git a/src/VTKFilter/SALOME_TransformFilter.h b/src/VTKFilter/SALOME_TransformFilter.h
new file mode 100644 (file)
index 0000000..7094984
--- /dev/null
@@ -0,0 +1,47 @@
+//  SALOME FILTER : 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+//
+//
+//
+//  File   : SALOME_TransformFilter.h
+//  Author : Laurent CORNABE with help of Nicolas REJNERI
+//  Module : SALOME
+
+
+#ifndef SALOME_TransformFilter_HeaderFile
+#define SALOME_TransformFilter_HeaderFile
+
+#include <vtkTransformFilter.h>
+
+class VTK_EXPORT SALOME_TransformFilter : public vtkTransformFilter{
+ public:
+  static SALOME_TransformFilter *New();
+  vtkTypeMacro(SALOME_TransformFilter,vtkTransformFilter);
+
+protected:
+  SALOME_TransformFilter() {}
+  ~SALOME_TransformFilter() {}
+  SALOME_TransformFilter(const SALOME_TransformFilter&) {}
+  void operator=(const SALOME_TransformFilter&) {}
+  void Execute();
+};
+
+#endif
index eef9d3fd77de962e4486871692eef7740cc28265..46736101621830e419cac2fcd59f386e8da52571 100644 (file)
@@ -38,23 +38,23 @@ VPATH=.:@srcdir@:$(top_builddir)/inc:$(top_builddir)/idl
 EXPORT_HEADERS=  VTKViewer_RenderWindow.h \
                 VTKViewer_ViewFrame.h \
                 VTKViewer_RenderWindowInteractor.h \
-                VTKViewer_InteractorStyleSALOME.h
-
+                VTKViewer_InteractorStyleSALOME.h 
+                    
 # Libraries targets
 LIB = libVTKViewer.la
 LIB_SRC= VTKViewer.cxx \
         VTKViewer_ViewFrame.cxx \
         VTKViewer_RenderWindow.cxx \
         VTKViewer_RenderWindowInteractor.cxx \
-        VTKViewer_InteractorStyleSALOME.cxx 
+        VTKViewer_InteractorStyleSALOME.cxx \
+        VTKViewer_VectorText.cxx
 
 LIB_MOC = \
         VTKViewer.h \
         VTKViewer_ViewFrame.h \
         VTKViewer_RenderWindowInteractor.h \
         VTKViewer_RenderWindow.h 
-
-
+        
 LIB_CLIENT_IDL = SALOMEDS.idl \
                 SALOME_ModuleCatalog.idl \
                 SALOME_Component.idl \
@@ -62,7 +62,7 @@ LIB_CLIENT_IDL = SALOMEDS.idl \
 
 CPPFLAGS+=$(QT_INCLUDES) $(OGL_INCLUDES) $(VTK_INCLUDES) $(OCC_INCLUDES) $(PYTHON_INCLUDES)
 CXXFLAGS+=
-LDFLAGS+=$(VTK_LIBS) $(OGL_LIBS) $(QT_MT_LIBS)
+LDFLAGS+=$(VTK_LIBS) $(OGL_LIBS) $(QT_MT_LIBS) -lSalomeGUI
 
 @CONCLUDE@
 
index d9eb3a75c5b24879222f9f0b458514a4dbf8c951..b0cfe0abb33102f28d92d11dc6214ce37e6c9295 100644 (file)
@@ -31,6 +31,7 @@ using namespace std;
 #include "VTKViewer_RenderWindow.h"
 
 #include <qapplication.h>
+#include "QAD_Config.h"
 #include "QAD_Application.h"
 #include "QAD_Desktop.h"
 
@@ -51,6 +52,7 @@ using namespace std;
 #include <vtkPolyDataMapper.h>
 #include <vtkDataSetCollection.h>
 #include <vtkImageData.h>
+#include <vtkFollower.h>
 
 
 //VRV: porting on Qt 3.0.5
@@ -144,6 +146,71 @@ void VTKViewer_InteractorStyleSALOME::PanXY(int x, int y, int oldX, int oldY)
   this->Interactor->Render();
 }
 
+//----------------------------------------------------------------------------
+void VTKViewer_InteractorStyleSALOME::ControlLblSize(double aOldScale, double aNewScale) {
+  m_Triedron->InitTraversal();
+  vtkActor *ac = m_Triedron->GetNextActor();
+  bool IsConeActor = true;
+  while(!(ac==NULL)) {
+    float aMaxXRange;
+    float aMaxYRange;
+    float aMaxZRange;
+    if(ac->IsA("vtkFollower")) {
+      float aScale[3];
+      ac->GetScale(aScale);
+      
+      float aPosition[3];
+      ac->GetPosition(aPosition);
+      
+      float aPercent = (aOldScale-aNewScale)/aOldScale;
+      ac->SetScale(aScale[0]*(1-aPercent),aScale[1]*(1-aPercent),aScale[2]*(1-aPercent));
+           
+      //Set new position
+      float aLength = ac->GetLength();
+      if (aPosition[0]!=0) {
+       //x
+       aPosition[0] = aMaxXRange;
+      } else if (aPosition[1]!=0) {
+       //y
+       aPosition[1] = aMaxYRange;
+      } else if (aPosition[2]!=0) {
+       //z
+       aPosition[2] = aMaxZRange;
+      }
+      ac->SetPosition(aPosition);
+      
+      IsConeActor = true;
+    }
+    else {
+      if (IsConeActor) {
+       //coneActor is the first in the list (see m_Triedron->AddItem(...) in VTKViewer_ViewFrame::AddVector(...))
+       IsConeActor = false;
+       
+       float aPosition[3];
+       ac->GetPosition(aPosition);
+       
+       if (aPosition[0]!=0) {
+         //x
+         float* aXRange = ac->GetXRange();
+         if (aXRange[0] < aXRange[1]) aMaxXRange = aXRange[1];
+         else aMaxXRange = aXRange[0];
+       } else if (aPosition[1]!=0) {
+         //y
+         float* aYRange = ac->GetYRange();
+         if (aYRange[0] < aYRange[1]) aMaxYRange = aYRange[1];
+         else aMaxYRange = aYRange[0];
+       } else if (aPosition[2]!=0) {
+         //z
+         float* aZRange = ac->GetZRange();
+         if (aZRange[0] < aZRange[1]) aMaxZRange = aZRange[1];
+         else aMaxZRange = aZRange[0];
+       }
+      } 
+    }
+    ac = m_Triedron->GetNextActor();
+  }
+}
+
 //----------------------------------------------------------------------------
 void VTKViewer_InteractorStyleSALOME::DollyXY(int dx, int dy)
 {
@@ -161,9 +228,14 @@ void VTKViewer_InteractorStyleSALOME::DollyXY(int dx, int dy)
   cam = this->CurrentRenderer->GetActiveCamera();
     if (cam->GetParallelProjection())
     {
+      double aOldScale = cam->GetParallelScale();
       cam->SetParallelScale(cam->GetParallelScale()/zoomFactor);
+      double aNewScale = cam->GetParallelScale();
+
+      // for controlling label size
+      ControlLblSize(aOldScale,aNewScale);
     }
-  else
+    else
     {
       cam->Dolly(zoomFactor);
       this->CurrentRenderer->ResetCameraClippingRange();
@@ -1318,6 +1390,7 @@ void VTKViewer_InteractorStyleSALOME::Place(const int theX, const int theY)
     }*/
   //VTKViewer_RenderWindow* aRW = dynamic_cast<VTKViewer_RenderWindow*>(this->Interactor->GetRenderWindow());
   if (myGUIWindow) myGUIWindow->update();
+
 }
 
 
index 5102249979fe4e6a777cda5d189dae24e41e5c8a..a8a9aa206359329d28f5ab9676bdddb99d3edb84 100644 (file)
@@ -99,6 +99,7 @@ class VTKViewer_InteractorStyleSALOME : public QObject, public vtkInteractorStyl
 
 public:
   bool eventFilter(QObject* object, QEvent* event);
+  void ControlLblSize(double aOldScale, double aNewScale);
   void startZoom();
   void startPan();
   void startGlobalPan();
index 3ae42c55b30e9c1a6e1eecf4c0914030524a7e72..6072e344b883f9302822b24ca45bada172a5e646 100644 (file)
@@ -67,7 +67,8 @@ VTKViewer_RenderWindow::VTKViewer_RenderWindow(QWidget *parent, const char *name
 }
 
 VTKViewer_RenderWindow::~VTKViewer_RenderWindow() {
-  //myRW->Delete(); //BUG SAL2954, Commented by SRN, to avoid problems when using rlogin
+  myRW->Delete(); //BUG SAL2954, Commented by SRN, to avoid problems when using rlogin
+  // Uncommented because of bug SAL3913
 }
 
 void VTKViewer_RenderWindow::paintEvent(QPaintEvent* theEvent) {
index 6d049b67ecd2a5cfcbaaae353bce438362f8fefa..4099a3fcd19ae5e7d7031a9897ad43e519170c58 100644 (file)
@@ -156,14 +156,14 @@ void VTKViewer_RenderWindowInteractor::Initialize() {
   Edge_Actor = vtkActor::New(); 
   Edge_Actor->PickableOff();
   Edge_Actor->GetProperty()->SetColor(1,0,0);
-  Edge_Actor->GetProperty()->SetRepresentationToSurface();
   Edge_Actor->GetProperty()->SetLineWidth(5);
+  Edge_Actor->GetProperty()->SetRepresentationToWireframe();
 
   Point_Actor = vtkActor::New(); 
   Point_Actor->PickableOff();
   Point_Actor->GetProperty()->SetColor(1,1,0);
-  Point_Actor->GetProperty()->SetRepresentationToSurface();
   Point_Actor->GetProperty()->SetPointSize(5);
+  Point_Actor->GetProperty()->SetRepresentationToPoints();
 
   return ;
 }
@@ -912,12 +912,12 @@ QColor VTKViewer_RenderWindowInteractor::GetColor(const Handle(SALOME_Interactiv
              // GEOM actor
              float r,g,b;
              anActor->GetColor(r,g,b);
-             return QColor(r*255,g*255,b*255);
+             return QColor(int(r*255),int(g*255),int(b*255));
            }
            else {
              float color[3];
              anActor->GetProperty()->GetColor(color);   
-             return QColor(color[0]*255,color[1]*255,color[2]*255);
+             return QColor(int(color[0]*255),int(color[1]*255),int(color[2]*255));
            }
          }
        }
@@ -1063,7 +1063,12 @@ static void CellCreateMapper(vtkPolyData *theSourcePolyData, vtkPolyDataMapper*
     int aPartId = ite.Key();
     if(0 > aPartId || aPartId >= aNbOfParts) break;
     theSourcePolyData->GetCellPoints(aPartId,ptIds);
-    aPolyData->InsertNextCell(theSourcePolyData->GetCellType(aPartId),ptIds);
+    vtkCell* aCell = theSourcePolyData->GetCell(aPartId);
+    aPolyData->InsertNextCell(aCell->GetCellType(),ptIds);
+    for (int i = 0, iEnd = aCell->GetNumberOfEdges(); i < iEnd; i++){
+      vtkCell* anEdgeCell = aCell->GetEdge(i);
+      aPolyData->InsertNextCell(VTK_LINE,anEdgeCell->GetPointIds());
+    }
   }
   ptIds->Delete();
   theMapper->SetInput(aPolyData);  
diff --git a/src/VTKViewer/VTKViewer_VectorText.cxx b/src/VTKViewer/VTKViewer_VectorText.cxx
new file mode 100644 (file)
index 0000000..ae19d94
--- /dev/null
@@ -0,0 +1,1747 @@
+/*=========================================================================
+
+  Program:   Visualization Toolkit
+  Module:    $RCSfile$
+  Language:  C++
+  Date:      $Date$
+  Version:   $Revision$
+
+  Copyright (c) 1993-2002 Ken Martin, Will Schroeder, Bill Lorensen 
+  All rights reserved.
+  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
+
+     This software is distributed WITHOUT ANY WARRANTY; without even 
+     the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
+     PURPOSE.  See the above copyright notice for more information.
+
+=========================================================================*/
+// VTKViewer_VectorText.cxx is a copy of vtkVectorText.cxx file.
+// Purpose of copying:  to remove linking to libHybrid.so VTK library 
+
+#include "VTKViewer_VectorText.h"
+
+#include "vtkCellArray.h"
+#include "vtkObjectFactory.h"
+#include "vtkPoints.h"
+#include "vtkPolyData.h"
+
+vtkCxxRevisionMacro(VTKViewer_VectorText, "$Revision$");
+vtkStandardNewMacro(VTKViewer_VectorText);
+
+char *VTK_VECTOR_TEXT_33 = (char *) "11 0.438482 "
+"0.28000 -0.07186 0.43164 -0.07143 0.27689 0.07714 0.43472 0.07714 0.32000 0.20134 "
+"0.40000 0.20243 0.31429 0.20550 0.27277 0.76857 0.43848 0.76857 0.27693 1.02571 "
+"0.43429 1.02615 7 2 1 3 2 0 1 7 6 5 6 4 5 8 "
+"7 5 7 8 9 10 9 8 "
+;
+
+char *VTK_VECTOR_TEXT_34 = (char *) "21 0.615625 "
+"0.25714 0.63563 0.32571 0.63563 0.50286 0.63642 0.25143 0.63946 0.33143 0.63840 "
+"0.33462 0.64286 0.49673 0.64286 0.57714 0.63757 0.58093 0.64286 0.21335 0.84286 "
+"0.36680 0.84286 0.46177 0.84286 0.61522 0.84286 0.21295 1.02000 0.46134 1.02000 "
+"0.61563 1.02000 0.36571 1.02307 0.46550 1.02571 0.21714 1.02615 0.36000 1.02723 "
+"0.61143 1.02615 17 3 5 9 7 6 2 4 5 1 6 8 12 0 1 5 6 "
+"12 11 3 0 5 7 8 6 11 12 14 13 9 10 10 9 5 15 14 12 19 "
+"18 10 18 13 10 17 14 20 14 15 20 16 19 10 "
+;
+
+char *VTK_VECTOR_TEXT_35 = (char *) "43 0.974539 "
+"0.22286 -0.09100 0.32571 -0.09236 0.56832 -0.08857 0.67429 -0.09201 0.28193 0.22000 "
+"0.39470 0.22000 0.63009 0.22000 0.15385 0.23143 0.27429 0.22723 0.40571 0.22723 "
+"0.62286 0.22723 0.74857 0.22680 0.97454 0.23143 0.15385 0.33429 0.97454 0.33429 "
+"0.30344 0.34000 0.65201 0.34000 0.77084 0.34000 0.42286 0.34010 0.42034 0.34571 "
+"0.36041 0.60286 0.70748 0.60286 0.82034 0.60286 0.47429 0.60626 0.15385 0.61429 "
+"0.35429 0.61009 0.70286 0.60951 0.82857 0.61009 0.97454 0.61429 0.15385 0.71714 "
+"0.37714 0.72134 0.50286 0.72191 0.72571 0.72134 0.85143 0.72156 0.97143 0.72025 "
+"0.38605 0.72857 0.49823 0.72857 0.73335 0.72857 0.84613 0.72857 0.45143 1.04160 "
+"0.55735 1.04286 0.80000 1.04243 0.90521 1.04286 43 6 2 3 5 0 1 0 5 4 18 "
+"9 10 11 6 3 4 9 8 13 8 15 17 6 11 9 4 5 13 7 8 17 "
+"12 14 8 9 15 15 19 20 16 6 17 12 17 11 18 10 16 10 6 16 21 "
+"16 17 18 19 9 15 9 19 20 30 25 23 20 19 34 33 28 29 24 25 29 "
+"25 30 27 21 22 33 21 27 20 23 30 22 21 17 33 27 28 31 26 32 35 "
+"30 23 32 38 37 31 35 23 21 32 26 26 31 23 32 21 38 41 37 38 36 "
+"35 31 38 21 33 40 39 36 42 41 38 39 35 36 "
+;
+
+char *VTK_VECTOR_TEXT_36 = (char *) "73 0.921518 "
+"0.52571 -0.22882 0.59429 -0.22991 0.52000 -0.09942 0.60571 -0.09385 0.40571 -0.07057 "
+"0.72730 -0.06571 0.33143 -0.03465 0.80571 -0.01813 0.51429 0.01891 0.52152 0.02571 "
+"0.60571 0.02014 0.84571 0.02168 0.25669 0.04286 0.66857 0.03800 0.44571 0.04535 "
+"0.70984 0.06571 0.74535 0.10571 0.74857 0.11079 0.74902 0.11143 0.37057 0.12857 "
+"0.90538 0.12857 0.20823 0.15143 0.35748 0.16286 0.77395 0.16857 0.35429 0.17310 "
+"0.35177 0.18000 0.78134 0.21429 0.92152 0.21429 0.19580 0.22571 0.33480 0.25429 "
+"0.77395 0.29429 0.91177 0.32286 0.76000 0.32921 0.72571 0.36972 0.89355 0.37429 "
+"0.64690 0.40857 0.65143 0.40706 0.64000 0.41109 0.60571 0.41986 0.52109 0.43714 "
+"0.85714 0.43270 0.38857 0.49216 0.79429 0.48902 0.72571 0.52437 0.30454 0.54571 "
+"0.60260 0.56286 0.52043 0.58571 0.26286 0.59570 0.46857 0.59800 0.39429 0.65095 "
+"0.22857 0.67295 0.36823 0.70000 0.75429 0.77624 0.21907 0.78571 0.35891 0.78571 "
+"0.89184 0.79714 0.37714 0.85001 0.72571 0.86144 0.87470 0.86571 0.24571 0.89016 "
+"0.68571 0.90956 0.44000 0.92036 0.60571 0.94469 0.83179 0.94571 0.28000 0.94629 "
+"0.51429 0.94891 0.34286 1.00607 0.75429 1.01579 0.38286 1.02784 0.52043 1.06571 "
+"0.60260 1.06571 0.52260 1.12286 0.60043 1.12286 75 3 8 2 2 8 4 19 12 6 13 11 15 9 8 10 3 2 1 8 "
+"3 10 5 13 10 15 11 16 7 13 5 4 14 6 2 0 1 5 10 3 12 "
+"22 21 14 4 8 13 7 11 11 18 16 20 23 18 18 17 16 20 18 11 19 "
+"6 14 28 21 29 26 23 20 12 19 22 25 22 24 21 22 25 21 25 29 26 "
+"27 30 27 26 20 31 32 30 31 30 27 40 33 32 37 43 38 34 32 31 38 "
+"39 9 40 32 34 38 9 10 43 33 42 37 36 43 39 38 43 42 33 40 35 "
+"36 37 33 43 36 39 45 46 48 41 39 45 39 43 41 48 44 47 51 50 46 "
+"62 65 48 39 46 44 49 47 49 44 48 54 53 50 51 47 49 53 56 59 53 "
+"54 56 66 64 56 55 58 52 58 57 52 54 50 51 59 56 64 67 60 63 60 "
+"57 63 66 61 68 61 66 56 68 65 69 65 62 69 62 46 45 63 57 58 62 "
+"60 67 68 61 65 71 70 72 70 62 67 62 70 69 71 69 70 "
+;
+
+char *VTK_VECTOR_TEXT_37 = (char *) "81 1.409911 "
+"0.46713 -0.11143 0.57143 -0.11215 1.19429 -0.11252 1.10286 -0.10252 1.26444 -0.09429 "
+"1.05143 -0.07759 1.31429 -0.06384 1.14857 -0.01538 1.18857 -0.01807 0.98857 -0.01364 "
+"1.22286 -0.00771 1.36784 -0.00286 1.11302 0.00286 1.26436 0.03143 1.07787 0.04857 "
+"0.95748 0.05429 1.39681 0.06571 1.28680 0.09429 1.05866 0.14000 1.40991 0.14571 "
+"0.94134 0.15143 0.94134 0.21429 1.29295 0.21429 1.06134 0.23714 1.40723 0.23714 "
+"0.95748 0.30000 1.39387 0.30000 1.07787 0.30571 1.27429 0.30371 1.09561 0.33429 "
+"1.23429 0.35465 1.36616 0.36286 1.13143 0.36327 1.16571 0.37277 1.20571 0.36899 "
+"1.00045 0.38571 1.32000 0.41543 1.06857 0.44498 1.24571 0.45681 0.48000 0.46420 "
+"1.15429 0.46723 0.38857 0.47462 0.55016 0.48286 0.60000 0.51330 0.30286 0.52704 "
+"0.43429 0.56177 0.47429 0.55907 0.26857 0.57284 0.50857 0.56943 0.65355 0.57429 "
+"0.39873 0.58000 0.55007 0.60857 0.24530 0.62571 0.36359 0.62571 0.68252 0.64286 "
+"0.56680 0.64857 0.23050 0.69429 0.34437 0.71714 0.57866 0.72286 0.69563 0.72286 "
+"0.22705 0.79143 0.34705 0.81429 0.69295 0.81429 0.56891 0.85429 0.67959 0.87714 "
+"0.24530 0.88286 0.36359 0.88286 0.38132 0.91143 0.54286 0.90975 0.52000 0.93179 "
+"0.65465 0.93429 0.41714 0.94041 0.47429 0.94950 0.29143 0.96914 0.60571 0.99258 "
+"0.32000 0.99868 0.38286 1.03395 0.53714 1.03184 1.06857 1.04249 1.17287 1.04286 "
+"0.48000 1.04395 79 0 1 78 10 4 6 2 8 3 9 14 15 4 "
+"10 8 3 7 5 7 3 8 10 6 13 12 5 7 5 12 9 4 8 2 13 "
+"16 17 17 19 22 14 9 12 15 18 20 11 13 6 13 11 16 17 16 19 18 "
+"15 14 21 20 18 21 23 25 22 26 28 23 21 18 24 22 19 25 27 35 35 "
+"29 37 22 24 26 28 31 30 27 25 23 31 28 26 27 29 35 36 30 31 38 "
+"34 30 38 33 34 37 32 40 32 33 40 38 30 36 32 37 29 40 33 38 42 "
+"46 39 47 53 52 48 43 51 39 46 41 41 50 44 56 57 60 45 41 46 42 "
+"48 46 48 42 43 50 41 45 53 47 44 51 49 55 54 55 49 53 44 50 49 "
+"51 43 55 54 58 59 58 54 57 56 52 57 52 53 60 61 65 58 62 63 57 "
+"61 60 62 64 63 65 66 73 66 65 61 73 66 75 58 59 62 63 64 68 70 "
+"69 68 67 75 66 70 68 64 76 71 72 75 67 76 74 69 70 71 76 67 69 "
+"77 72 72 77 80 77 69 74 76 72 80 79 78 1 "
+;
+
+char *VTK_VECTOR_TEXT_38 = (char *) "76 1.126291 "
+"0.58857 -0.08966 1.03429 -0.09235 0.48000 -0.08395 0.66286 -0.07673 0.40000 -0.05914 "
+"0.72000 -0.05641 0.98286 -0.05473 0.35429 -0.03393 0.78857 -0.01678 1.12629 0.00857 "
+"0.29143 0.02168 0.52571 0.02991 0.57714 0.02764 0.62286 0.03756 0.46857 0.04645 "
+"0.87429 0.05495 0.69714 0.07393 0.42132 0.08286 1.04571 0.07868 0.24486 0.08857 "
+"0.75011 0.11714 0.22327 0.14000 0.37927 0.14571 0.78349 0.16286 0.96893 0.16286 "
+"0.96571 0.16717 0.96457 0.16857 0.95937 0.18000 0.35580 0.22571 0.20991 0.25429 "
+"0.36319 0.28857 0.86286 0.29600 1.02437 0.31143 0.22645 0.32857 0.40418 0.36286 "
+"0.40571 0.36454 0.41330 0.37429 1.05421 0.40857 0.28418 0.42571 0.92000 0.44119 "
+"0.53714 0.46770 0.37143 0.50250 0.66758 0.54000 0.46406 0.55714 0.78704 0.62571 "
+"0.59429 0.63146 0.37714 0.68444 0.69296 0.70000 0.85355 0.71714 0.35681 0.73429 "
+"0.50200 0.75143 0.49756 0.76286 0.49502 0.76857 0.72891 0.76857 0.86966 0.76857 "
+"0.34748 0.82000 0.73295 0.82000 0.48764 0.82571 0.87236 0.83143 0.49714 0.86089 "
+"0.35849 0.87143 0.71429 0.87650 0.52000 0.89555 0.69714 0.89846 0.37964 0.91714 "
+"0.84657 0.91714 0.55429 0.92073 0.65714 0.92498 0.60000 0.93277 0.81868 0.95714 "
+"0.42857 0.97582 0.76571 1.00436 0.51429 1.02723 0.72000 1.02723 0.59429 1.04437 "
+"0.64571 1.04395 78 7 17 10 3 13 0 "
+"2 14 4 6 18 15 17 7 4 9 18 "
+"6 9 6 1 8 16 5 0 12 2 "
+"17 4 14 2 11 14 12 0 13 13 5 "
+"16 15 24 20 16 8 20 13 3 5 "
+"2 12 11 10 17 19 21 28 29 15 20 "
+"8 20 24 23 40 23 31 24 25 26 "
+"19 22 21 31 23 27 22 19 17 18 24 "
+"15 28 21 22 29 30 33 31 32 39 "
+"23 24 26 30 29 28 23 26 27 33 30 "
+"38 32 31 27 38 36 41 38 34 36 "
+"34 38 30 36 34 35 39 32 37 42 40 "
+"31 40 41 36 42 44 47 45 43 40 "
+"40 43 41 50 46 43 50 49 46 45 40 "
+"42 48 53 47 45 42 47 49 52 55 "
+"53 48 56 50 43 45 57 60 55 52 50 "
+"51 49 50 52 48 47 44 54 56 48 "
+"56 65 61 60 59 64 59 60 57 65 56 "
+"58 52 57 55 64 59 70 58 56 54 "
+"59 62 70 68 74 72 65 69 61 70 66 "
+"72 63 71 67 63 61 69 70 62 66 "
+"67 73 68 71 63 69 73 67 71 68 72 "
+"66 74 68 75 75 68 73 "
+;
+
+char *VTK_VECTOR_TEXT_39 = (char *) "10 0.364197 "
+"0.25143 0.63563 0.24571 0.63946 0.32571 0.63757 0.32950 0.64286 0.21034 0.83714 "
+"0.36379 0.83714 0.20991 1.02000 0.36420 1.02000 0.21408 1.02571 0.36000 1.02615 8 1 0 3 "
+"2 3 0 1 3 4 7 6 4 5 4 "
+"3 7 4 5 8 6 9 6 7 9 "
+;
+
+char *VTK_VECTOR_TEXT_40 = (char *) "19 0.595731 "
+"0.50857 -0.39522 0.59429 -0.39447 0.44000 -0.30784 0.51787 -0.24857 0.32530 -0.09429 "
+"0.43748 -0.05429 0.26899 0.06571 0.38134 0.20286 0.23580 0.27714 0.37605 0.38000 "
+"0.23848 0.41429 0.39320 0.53429 0.27177 0.59714 0.43748 0.71143 0.47216 0.80286 "
+"0.36086 0.82000 0.45714 0.97936 0.59573 1.04286 0.50857 1.04395 17 2 3 4 0 3 2 3 "
+"0 1 6 4 5 3 5 4 6 7 8 7 6 5 9 10 8 9 8 7 10 "
+"11 12 10 9 11 12 13 15 12 11 13 14 15 13 16 15 14 17 18 16 17 "
+"16 14 "
+;
+
+char *VTK_VECTOR_TEXT_41 = (char *) "19 0.598482 "
+"0.24000 -0.39447 0.33143 -0.39258 0.40616 -0.28857 0.31641 -0.24857 0.48784 -0.14000 "
+"0.39681 -0.05429 0.55538 0.03143 0.45295 0.20286 0.59580 0.23714 0.59848 0.37429 "
+"0.45823 0.38000 0.44723 0.49429 0.56252 0.59714 0.41714 0.64134 0.47343 0.82000 "
+"0.34857 0.83301 0.37714 0.97936 0.23855 1.04286 0.32571 1.04395 17 0 1 3 2 3 1 3 "
+"4 5 3 2 4 5 6 7 6 5 4 7 8 10 8 9 10 11 10 9 8 "
+"7 6 11 12 13 13 14 15 12 11 9 14 13 12 15 16 17 16 15 14 16 "
+"18 17 "
+;
+
+char *VTK_VECTOR_TEXT_42 = (char *) "34 0.685300 "
+"0.33143 0.58250 0.33714 0.58223 0.53714 0.58250 0.54286 0.58194 0.36213 0.61429 "
+"0.25587 0.63714 0.25266 0.64286 0.62655 0.64286 0.25393 0.64857 0.43429 0.73293 "
+"0.44000 0.73049 0.36715 0.78000 0.50714 0.78000 0.35429 0.78613 0.63429 0.80816 "
+"0.19309 0.82571 0.68389 0.82571 0.19177 0.83143 0.68530 0.83143 0.38857 0.86213 "
+"0.39523 0.86571 0.48000 0.86242 0.47660 0.86571 0.34657 0.88286 0.58857 0.90823 "
+"0.22286 0.92522 0.22857 0.92848 0.64571 0.92816 0.65143 0.92675 0.49295 1.02000 "
+"0.38134 1.03714 0.38550 1.04286 0.49143 1.04021 0.48571 1.04437 32 2 12 10 8 4 11 "
+"8 5 4 8 6 5 4 0 1 2 3 "
+"12 0 4 5 12 9 10 9 11 4 "
+"19 11 21 14 24 12 26 25 17 16 18 "
+"14 13 23 15 19 21 20 11 19 13 "
+"33 31 30 24 21 12 12 21 9 21 11 "
+"9 26 17 23 12 3 7 27 24 18 "
+"13 19 23 23 17 15 20 21 22 18 24 "
+"14 28 27 18 33 30 20 29 20 22 "
+"29 33 20 32 33 29 "
+;
+
+char *VTK_VECTOR_TEXT_43 = (char *) "20 0.952768 "
+"0.52836 0.10571 0.64878 0.10571 0.52420 0.11143 0.65295 0.11143 0.52420 0.39714 "
+"0.65295 0.39714 0.22857 0.40546 0.52000 0.40329 0.66286 0.40437 0.95168 0.40857 "
+"0.22437 0.52286 0.95277 0.52286 0.22857 0.52900 0.52311 0.53429 0.65403 0.53429 "
+"0.94857 0.52900 0.52528 0.82571 0.65186 0.82571 0.53143 0.82991 0.64571 0.82991 18 1 2 0 1 3 2 "
+"4 2 3 5 4 3 12 6 7 14 4 "
+"8 9 15 8 8 4 5 9 11 15 "
+"12 7 13 6 12 10 7 4 13 14 8 "
+"15 17 19 18 14 13 4 17 18 16 "
+"17 16 13 17 13 14 "
+;
+
+char *VTK_VECTOR_TEXT_44 = (char *) "23 0.432768 "
+"0.30286 -0.28607 0.30857 -0.28726 0.33714 -0.27355 0.36571 -0.25275 0.27329 -0.23714 "
+"0.38670 -0.23143 0.30286 -0.21582 0.39914 -0.21429 0.32115 -0.19714 0.41355 -0.18571 "
+"0.33800 -0.16857 0.42327 -0.15714 0.34605 -0.14571 0.43277 -0.10000 0.35580 -0.08286 "
+"0.35472 -0.07714 0.28571 -0.07295 0.34857 -0.07295 0.28000 -0.06878 0.27957 0.07714 "
+"0.43168 0.07714 0.28571 0.08134 0.42857 0.08025 21 0 6 4 0 "
+"1 2 0 2 6 3 6 2 8 5 10 5 7 10 6 5 8 5 6 3 10 "
+"7 12 9 12 7 12 13 14 11 12 9 12 11 13 18 17 19 17 21 19 15 "
+"14 13 15 13 17 21 17 22 17 20 22 18 16 17 20 17 13 "
+;
+
+char *VTK_VECTOR_TEXT_45 = (char *) "8 0.606146 "
+"0.19118 0.26000 0.19429 0.25689 0.60000 0.25580 0.60615 0.26000 0.19118 0.38571 "
+"0.60615 0.38571 0.19429 0.38882 0.60000 0.38991 6 6 1 2 6 0 "
+"1 6 2 7 6 4 0 7 2 3 "
+"5 7 3 "
+;
+
+char *VTK_VECTOR_TEXT_46 = (char *) "13 0.432768 "
+"0.28571 -0.07295 0.42286 -0.07295 0.42857 -0.07186 0.27848 -0.06571 0.28000 -0.06878 "
+"0.43277 -0.06571 0.27848 0.07143 0.43277 0.07143 0.27957 0.07714 0.43168 0.07714 "
+"0.28571 0.08134 0.42286 0.08134 0.42857 0.08025 11 0 "
+"3 4 3 0 1 8 6 10 5 1 2 3 1 5 6 3 5 6 7 11 6 "
+"5 7 10 6 11 9 12 11 9 11 7 "
+;
+
+char *VTK_VECTOR_TEXT_47 = (char *) "5 0.562348 "
+"0.14389 -0.08857 0.14857 -0.09256 0.25004 -0.08857 0.56235 1.04286 0.46286 1.04358 3 2 0 1 4 0 2 3 "
+"4 2 "
+;
+
+char *VTK_VECTOR_TEXT_48 = (char *) "53 0.926804 "
+"0.53714 -0.09009 0.59429 -0.09009 0.66857 -0.07673 0.43429 -0.06723 0.73143 -0.05070 "
+"0.34286 -0.00972 0.80571 0.01025 0.54857 0.02152 0.61714 0.02891 0.30241 0.03714 "
+"0.65714 0.04645 0.46857 0.05007 0.42473 0.08857 0.70286 0.08454 0.26645 0.10000 "
+"0.86943 0.11143 0.39955 0.12286 0.73800 0.13429 0.23748 0.18000 0.37034 0.19714 "
+"0.76252 0.20286 0.91236 0.26000 0.21866 0.26571 0.35621 0.26571 0.77823 0.28857 "
+"0.34437 0.40286 0.92680 0.40286 0.20420 0.40857 0.78705 0.54000 0.20723 0.58000 "
+"0.92420 0.58571 0.35277 0.64286 0.22177 0.69429 0.76571 0.72437 0.89966 0.74000 "
+"0.37756 0.76286 0.74498 0.79143 0.26073 0.82571 0.85927 0.84857 0.42473 0.85429 "
+"0.70439 0.85429 0.46286 0.88902 0.66286 0.89007 0.30241 0.90000 0.51009 0.91143 "
+"0.58286 0.91823 0.80725 0.92857 0.77714 0.95829 0.38350 0.98000 0.71429 0.99927 "
+"0.46286 1.01681 0.65714 1.01959 0.53714 1.02991 53 2 8 1 0 7 3 5 16 9 2 10 8 0 "
+"1 8 7 0 8 12 16 5 11 3 7 3 12 5 15 20 17 11 12 3 13 "
+"6 17 6 13 4 9 16 14 10 4 13 14 19 18 4 10 2 15 17 6 19 "
+"14 16 21 24 20 23 18 19 22 25 27 24 26 28 23 22 18 21 20 15 26 "
+"24 21 22 23 25 29 27 25 29 31 32 28 30 33 31 29 25 30 28 26 32 "
+"35 37 46 40 36 30 34 33 32 31 35 43 39 48 43 37 35 38 36 33 38 "
+"33 34 42 40 49 48 41 50 39 43 35 47 40 46 46 36 38 41 44 50 45 "
+"52 44 42 51 45 41 48 39 49 40 47 50 44 52 52 45 51 42 49 51 "
+;
+
+char *VTK_VECTOR_TEXT_49 = (char *) "11 0.708571 "
+"0.58286 -0.07186 0.70857 -0.07186 0.30857 0.62908 0.31429 0.62657 0.38286 0.65641 "
+"0.30785 0.75143 0.57714 0.77731 0.47429 0.85616 0.56384 0.94000 0.62857 1.02915 "
+"0.70857 1.02882 9 6 0 1 2 4 5 7 5 4 2 3 4 6 "
+"8 7 6 7 4 10 8 6 10 6 1 10 9 8 "
+;
+
+char *VTK_VECTOR_TEXT_50 = (char *) "43 0.914286 "
+"0.18857 -0.06878 0.91429 -0.06878 0.18748 -0.04286 0.19849 0.00857 0.91429 0.05164 "
+"0.38142 0.06000 0.22943 0.07714 0.46286 0.15868 0.30286 0.17832 0.38286 0.25813 "
+"0.58413 0.43143 0.78286 0.44454 0.67543 0.52286 0.85355 0.53429 0.72045 0.58000 "
+"0.89756 0.62571 0.75470 0.64286 0.35168 0.70000 0.91236 0.70000 0.77295 0.71143 "
+"0.21403 0.71714 0.77295 0.74571 0.22605 0.79143 0.37143 0.79804 0.90244 0.80857 "
+"0.75429 0.81228 0.38902 0.83143 0.24359 0.84286 0.73143 0.84689 0.42454 0.87143 "
+"0.86607 0.88857 0.68000 0.89070 0.28000 0.90629 0.49143 0.90823 0.58857 0.91866 "
+"0.82857 0.93555 0.31597 0.94571 0.37714 0.98784 0.76000 0.98657 0.44571 1.01470 "
+"0.69143 1.01470 0.53714 1.02991 0.62857 1.02723 41 3 2 0 3 5 6 1 5 0 5 "
+"3 0 1 4 5 6 5 8 7 8 5 9 8 7 9 7 10 11 10 7 10 "
+"11 12 12 11 14 16 15 18 16 18 19 13 14 11 14 13 16 21 24 25 15 "
+"16 13 21 19 18 23 27 22 17 23 22 24 21 18 27 23 32 17 22 20 31 "
+"42 34 30 28 25 26 32 23 40 31 38 35 28 30 36 32 26 29 36 26 34 "
+"41 33 33 37 29 36 29 37 33 39 37 30 25 24 28 38 31 38 28 35 39 "
+"33 41 31 40 42 41 34 42 "
+;
+
+char *VTK_VECTOR_TEXT_51 = (char *) "68 0.927232 "
+"0.52571 -0.09009 0.63429 -0.08395 0.45143 -0.07756 0.37143 -0.04498 0.74286 -0.04771 "
+"0.30857 0.00132 0.81714 0.00439 0.54286 0.02152 0.60000 0.02420 0.64661 0.03714 "
+"0.27429 0.03952 0.46857 0.04073 0.42857 0.06759 0.70857 0.07561 0.88213 0.08286 "
+"0.23429 0.10772 0.38812 0.11714 0.74535 0.11714 0.91109 0.14571 0.77823 0.19143 "
+"0.20764 0.20857 0.92723 0.22571 0.34286 0.23215 0.78437 0.27143 0.92723 0.27714 "
+"0.75429 0.36430 0.89927 0.38571 0.72571 0.40132 0.86857 0.43270 0.67429 0.43927 "
+"0.48000 0.45284 0.48571 0.44966 0.54857 0.46152 0.60000 0.46109 0.83429 0.46686 "
+"0.72693 0.52286 0.49034 0.55714 0.49714 0.56395 0.78857 0.56473 0.58286 0.57109 "
+"0.82857 0.60921 0.67429 0.61616 0.70400 0.64857 0.85294 0.65429 0.72680 0.70571 "
+"0.87009 0.72286 0.35429 0.72298 0.22175 0.74571 0.72991 0.76286 0.72151 0.80286 "
+"0.86244 0.80857 0.38857 0.82064 0.69143 0.85832 0.84571 0.85587 0.26241 0.87143 "
+"0.43429 0.87829 0.64571 0.89641 0.48571 0.90723 0.29330 0.91714 0.60571 0.91252 "
+"0.53143 0.91823 0.80384 0.92286 0.36000 0.97750 0.73143 0.98213 0.44571 1.01681 "
+"0.65714 1.01470 0.52000 1.02991 0.60000 1.02723 66 3 11 "
+"5 9 8 1 1 8 0 4 9 1 "
+"9 4 13 7 0 8 6 13 4 17 13 "
+"6 2 11 3 2 0 7 5 16 10 "
+"12 5 11 10 16 15 11 2 7 16 5 "
+"12 17 14 19 14 17 6 20 15 22 "
+"19 18 23 22 15 16 14 18 19 21 23 "
+"18 23 26 25 23 21 24 26 28 25 "
+"30 32 36 25 34 27 35 32 33 35 29 "
+"27 25 28 34 29 35 33 26 23 24 "
+"37 36 32 39 32 35 35 27 34 37 32 "
+"39 30 31 32 39 35 41 38 41 35 "
+"38 42 41 40 42 38 42 40 44 40 43 "
+"44 44 43 48 45 48 43 47 46 54 "
+"49 48 50 50 48 45 49 53 52 63 52 "
+"61 53 49 50 46 51 54 58 54 51 "
+"58 55 62 62 55 64 66 57 60 61 52 "
+"53 55 58 51 59 67 60 52 63 56 "
+"56 65 59 55 57 64 64 57 66 65 56 "
+"63 67 66 60 67 59 65 "
+;
+
+char *VTK_VECTOR_TEXT_52 = (char *) "18 0.920000 "
+"0.64571 -0.07295 0.64000 -0.06878 0.77143 -0.06878 0.77403 0.18571 0.16265 0.19143 "
+"0.63429 0.18882 0.92000 0.19408 0.15891 0.31143 0.91735 0.31143 0.29653 0.31714 "
+"0.63740 0.31714 0.77714 0.31403 0.16571 0.32228 0.16616 0.32286 0.63429 0.79380 "
+"0.77186 1.02000 0.66857 1.02282 0.76571 1.02420 18 2 1 0 1 3 5 1 2 "
+"3 3 10 5 9 4 5 4 9 7 "
+"6 11 3 8 11 6 7 9 13 15 16 "
+"14 9 5 10 7 13 12 13 14 16 "
+"11 10 3 14 13 9 14 10 11 15 17 "
+"16 15 14 11 "
+;
+
+char *VTK_VECTOR_TEXT_53 = (char *) "54 0.932946 "
+"0.52571 -0.09009 0.61714 -0.08665 0.44571 -0.07673 0.73143 -0.05179 0.35429 -0.03759 "
+"0.78914 -0.01429 0.30286 0.00241 0.53714 0.02152 0.62857 0.03184 0.84115 0.03714 "
+"0.46857 0.03927 0.66286 0.04645 0.26286 0.04921 0.42286 0.06759 0.71429 0.08439 "
+"0.88045 0.09429 0.23343 0.10000 0.38812 0.10571 0.74535 0.12286 0.35748 0.16857 "
+"0.77294 0.18000 0.91681 0.18000 0.20420 0.20857 0.34286 0.22376 0.78705 0.23714 "
+"0.93295 0.27143 0.79009 0.31714 0.93252 0.33429 0.77714 0.38420 0.91681 0.42000 "
+"0.34857 0.43034 0.75641 0.43143 0.23088 0.44857 0.72000 0.47868 0.40000 0.48400 "
+"0.68000 0.50784 0.86902 0.51714 0.46857 0.52437 0.53143 0.53848 0.57714 0.53848 "
+"0.58857 0.53621 0.60000 0.53580 0.82286 0.56972 0.38494 0.59714 0.77714 0.60535 "
+"0.48571 0.64244 0.69714 0.64327 0.56571 0.65848 0.61714 0.65848 0.43891 0.87714 "
+"0.44571 0.88395 0.88043 0.88857 0.88043 1.00857 0.33714 1.01182 52 7 1 "
+"8 7 0 1 7 2 0 2 10 4 "
+"6 13 12 3 8 1 3 11 8 10 2 "
+"7 4 13 6 11 3 14 19 16 12 "
+"3 5 14 9 14 5 10 13 4 22 19 "
+"23 18 15 20 17 12 13 15 14 9 "
+"14 15 18 19 12 17 25 26 24 20 21 "
+"24 21 20 15 22 16 19 25 24 21 "
+"26 25 27 29 28 26 29 26 27 43 37 "
+"45 36 31 29 34 32 30 31 36 33 "
+"31 28 29 32 34 43 48 47 41 45 38 "
+"47 42 33 36 41 39 40 38 39 47 "
+"37 38 45 47 39 41 44 33 42 43 34 "
+"37 46 33 44 35 46 41 33 46 35 "
+"46 48 41 32 43 53 43 49 53 49 50 "
+"53 53 50 52 50 51 52 "
+;
+
+char *VTK_VECTOR_TEXT_54 = (char *) "70 0.927232 "
+"0.55429 -0.09009 0.66857 -0.08034 0.43429 -0.06213 0.75429 -0.04607 0.34857 -0.00972 "
+"0.81143 -0.00439 0.59429 0.02152 0.51339 0.03143 0.85188 0.04286 0.67429 0.04645 "
+"0.46286 0.05579 0.27384 0.07714 0.41714 0.09597 0.73143 0.09597 0.89355 0.11714 "
+"0.38771 0.14000 0.91177 0.16857 0.77294 0.17429 0.22816 0.18571 0.36530 0.19714 "
+"0.78705 0.24857 0.92680 0.25429 0.35320 0.26000 0.78665 0.30571 0.20420 0.31143 "
+"0.35320 0.31143 0.92723 0.31714 0.36657 0.37429 0.77395 0.37429 0.75429 0.41841 "
+"0.39179 0.42571 0.89756 0.44286 0.72000 0.46418 0.43429 0.47258 0.19891 0.50571 "
+"0.33714 0.50495 0.48000 0.50213 0.66857 0.50086 0.86241 0.50571 0.55429 0.52134 "
+"0.61143 0.51866 0.80403 0.56857 0.42286 0.58821 0.74286 0.60943 0.34134 0.63143 "
+"0.50857 0.62823 0.68000 0.63252 0.57714 0.64134 0.21563 0.66000 0.77714 0.74697 "
+"0.37502 0.75714 0.90966 0.76286 0.25673 0.80286 0.41901 0.83143 0.73143 0.85191 "
+"0.45143 0.86686 0.87343 0.87714 0.30036 0.88286 0.68000 0.89514 0.50286 0.90086 "
+"0.51429 0.90530 0.52000 0.90784 0.60571 0.91866 0.83846 0.92857 0.35429 0.94384 "
+"0.40571 0.98150 0.76000 0.99229 0.49143 1.01748 0.68571 1.02041 0.56571 1.02991 70 "
+"2 10 4 6 1 9 3 5 13 0 7 "
+"2 3 9 1 1 6 0 9 3 13 "
+"7 0 6 10 2 7 20 26 23 4 12 "
+"11 13 8 17 4 10 12 11 19 18 "
+"17 21 20 15 11 12 11 15 19 16 17 "
+"14 18 22 24 8 14 17 8 13 5 "
+"24 35 34 22 18 19 20 21 26 28 23 "
+"26 21 17 16 24 27 35 24 22 25 "
+"28 31 29 31 28 26 24 25 27 32 41 "
+"37 30 35 27 34 44 48 35 33 42 "
+"43 37 41 46 39 40 32 29 38 38 29 "
+"31 33 35 30 33 36 42 42 36 45 "
+"45 39 47 36 39 45 37 46 40 41 32 "
+"38 46 37 43 47 39 46 44 34 35 "
+"48 50 52 48 44 50 49 56 54 57 53 "
+"64 57 52 50 54 66 58 51 56 49 "
+"62 69 61 53 57 50 61 59 60 59 65 "
+"55 65 64 55 58 68 62 55 64 53 "
+"66 54 63 63 54 56 65 59 67 69 62 "
+"68 67 59 61 69 67 61 68 58 66 "
+;
+
+char *VTK_VECTOR_TEXT_55 = (char *) "17 0.923788 "
+"0.37143 -0.07186 0.50286 -0.07186 0.36723 -0.06571 0.37335 0.02000 0.52991 0.11143 "
+"0.40379 0.18571 0.59787 0.35143 0.47387 0.41429 0.66857 0.51873 0.53355 0.55143 "
+"0.63384 0.72857 0.80893 0.76286 0.74359 0.88286 0.21714 0.88546 0.92379 0.91143 "
+"0.21403 1.00857 0.92311 1.00857 15 3 0 1 2 0 3 3 4 5 4 3 1 6 7 5 6 5 4 9 "
+"7 6 10 9 8 8 9 6 10 11 12 11 10 8 15 13 12 12 14 16 15 "
+"12 16 11 14 12 "
+;
+
+char *VTK_VECTOR_TEXT_56 = (char *) "83 0.926804 "
+"0.53143 -0.08966 0.62857 -0.08665 0.45143 -0.07605 0.73714 -0.05641 0.38857 -0.05343 "
+"0.34286 -0.02616 0.79429 -0.02250 0.28571 0.02445 0.58857 0.02152 0.50857 0.02823 "
+"0.85258 0.03143 0.66937 0.04286 0.45143 0.05070 0.71429 0.07296 0.41143 0.07868 "
+"0.24000 0.09016 0.89927 0.10571 0.37669 0.12286 0.76613 0.14000 0.21462 0.15714 "
+"0.35849 0.16286 0.92109 0.17429 0.78705 0.22000 0.34437 0.22571 0.20420 0.27143 "
+"0.92680 0.27143 0.78437 0.28286 0.34748 0.28857 0.77143 0.32947 0.91470 0.33429 "
+"0.21714 0.34118 0.37502 0.36286 0.73296 0.39143 0.89057 0.39143 0.24359 0.40286 "
+"0.41883 0.41429 0.69143 0.42722 0.27275 0.44286 0.85714 0.43841 0.46286 0.44371 "
+"0.50286 0.45748 0.63429 0.45470 0.58286 0.46420 0.80507 0.48286 0.33143 0.49007 "
+"0.40456 0.52286 0.72693 0.52286 0.32000 0.57616 0.54857 0.57580 0.62286 0.58319 "
+"0.82082 0.58571 0.49714 0.58657 0.66286 0.60073 0.28527 0.61429 0.44571 0.61582 "
+"0.70439 0.63714 0.85759 0.63714 0.25756 0.67143 0.72657 0.67143 0.39849 0.68286 "
+"0.87470 0.68286 0.74134 0.72857 0.38705 0.73429 0.88109 0.76857 0.24764 0.77429 "
+"0.73395 0.79714 0.39470 0.80286 0.87177 0.82000 0.71641 0.83714 0.27216 0.86571 "
+"0.44000 0.87296 0.84486 0.88286 0.66286 0.89179 0.48000 0.90086 0.61714 0.91184 "
+"0.54286 0.91823 0.31846 0.93429 0.80571 0.93555 0.38286 0.98616 0.72000 0.99800 "
+"0.43429 1.01008 0.53143 1.02991 0.61714 1.02723 85 0 "
+"9 2 12 4 2 1 8 0 6 11 3 5 14 7 9 0 8 8 1 11 4 "
+"12 5 13 11 6 1 3 11 12 2 9 5 12 14 13 10 18 7 17 15 10 "
+"13 6 15 20 19 7 14 17 18 16 22 16 18 10 20 15 17 19 23 24 16 "
+"21 22 22 25 26 23 19 20 24 27 30 25 22 21 27 24 23 31 34 30 31 "
+"37 34 29 28 26 31 30 27 29 26 25 33 28 29 28 33 32 36 32 43 37 "
+"31 44 40 45 39 44 39 45 43 32 38 35 44 31 42 48 40 44 35 39 41 "
+"46 42 36 46 41 32 33 38 48 42 49 46 36 43 48 45 40 42 46 49 51 "
+"45 48 49 46 52 47 54 53 52 46 55 53 59 57 45 54 47 45 51 54 50 "
+"55 46 59 53 54 50 58 55 58 50 61 57 62 64 61 63 65 56 61 50 57 "
+"59 62 60 61 56 64 66 69 63 67 65 64 62 66 63 61 60 71 68 65 76 "
+"69 66 72 68 77 71 65 67 76 70 78 70 76 66 74 82 75 80 78 70 79 "
+"72 77 74 72 79 80 73 75 80 75 81 68 71 77 73 80 70 82 81 75 82 "
+"74 79 "
+;
+
+char *VTK_VECTOR_TEXT_57 = (char *) "72 0.927232 "
+"0.50286 -0.09009 0.56000 -0.09009 0.42857 -0.07673 0.64571 -0.07395 0.36000 -0.04771 "
+"0.74286 -0.02616 0.28759 0.01429 0.51429 0.02152 0.57143 0.02420 0.80115 0.02571 "
+"0.47429 0.02891 0.42857 0.05007 0.64000 0.04943 0.24930 0.07714 0.39314 0.08286 "
+"0.85229 0.10000 0.70902 0.11143 0.37057 0.12286 0.22177 0.17429 0.34857 0.18947 "
+"0.75109 0.19714 0.89395 0.20286 0.75429 0.20739 0.75681 0.21429 0.90966 0.27143 "
+"0.50286 0.30152 0.42857 0.31605 0.61714 0.31462 0.37714 0.33787 0.70286 0.35759 "
+"0.78705 0.37429 0.32000 0.37846 0.58286 0.42152 0.50286 0.42891 0.63429 0.43184 "
+"0.78286 0.43630 0.92723 0.43714 0.26286 0.44350 0.45143 0.45107 0.68571 0.45750 "
+"0.41587 0.47714 0.23787 0.48857 0.74498 0.52286 0.36359 0.55143 0.21522 0.55714 "
+"0.92680 0.56286 0.76571 0.57009 0.34437 0.63143 0.77823 0.63714 0.20462 0.69429 "
+"0.77866 0.69429 0.91236 0.70000 0.35429 0.74118 0.76571 0.76404 0.21756 0.77429 "
+"0.38286 0.80921 0.87343 0.82571 0.40759 0.84286 0.72571 0.84118 0.24527 0.84857 "
+"0.69143 0.87527 0.84000 0.88221 0.47429 0.89641 0.28571 0.90975 0.63429 0.90784 "
+"0.54857 0.91866 0.33143 0.95527 0.76000 0.96331 0.39629 0.99714 0.68571 1.00437 "
+"0.49714 1.02723 0.57714 1.02991 72 3 8 1 2 11 4 0 7 2 "
+"8 3 12 4 14 6 0 1 8 6 17 "
+"13 10 2 7 7 0 8 5 12 3 "
+"12 5 16 2 10 11 4 11 14 5 9 "
+"16 18 13 19 16 15 20 15 23 20 "
+"6 14 17 13 17 19 21 23 15 22 20 "
+"23 23 24 30 16 9 15 23 21 24 "
+"25 32 26 27 32 25 38 28 26 43 41 "
+"37 34 29 39 33 26 32 29 34 27 "
+"30 36 35 34 32 27 36 30 24 28 38 "
+"31 31 38 37 35 39 29 38 26 33 "
+"39 35 42 42 35 36 40 37 38 44 41 "
+"43 42 36 46 44 47 49 43 37 40 "
+"48 46 45 36 45 46 51 50 48 52 54 "
+"49 47 44 43 50 51 53 51 48 45 "
+"59 54 52 59 55 63 52 49 47 53 61 "
+"58 56 53 51 55 59 52 53 56 61 "
+"66 63 57 55 57 63 62 68 57 58 67 "
+"60 67 58 61 68 66 57 60 69 64 "
+"68 62 70 60 67 69 64 71 65 65 70 "
+"62 70 65 71 64 69 71 "
+;
+
+char *VTK_VECTOR_TEXT_58 = (char *) "14 0.432768 "
+"0.28571 -0.07295 0.42857 -0.07186 0.28000 -0.06878 0.43277 -0.06571 0.27957 0.07714 "
+"0.28571 0.08134 0.42857 0.08025 0.27957 0.57429 0.28571 0.57009 0.43168 0.57429 "
+"0.27848 0.71714 0.43277 0.71714 0.28265 0.72286 0.42857 0.72329 10 "
+"2 5 4 2 0 5 0 3 5 6 5 "
+"3 0 1 3 7 8 10 10 11 13 "
+"9 10 8 12 10 13 11 10 9 "
+;
+
+char *VTK_VECTOR_TEXT_59 = (char *) "18 0.432768 "
+"0.30857 -0.28726 0.36571 -0.25275 0.27323 -0.23714 0.39543 -0.22000 0.32384 -0.19143 "
+"0.33756 -0.16857 0.42327 -0.15714 0.43277 -0.10000 0.35472 -0.07714 0.28571 -0.07295 "
+"0.34857 -0.07295 0.28000 -0.06878 0.27957 0.07714 0.43168 0.07714 0.27957 0.57429 "
+"0.43168 0.57429 0.28265 0.72286 0.42857 0.72329 14 2 1 4 5 4 3 0 1 "
+"2 5 6 8 3 4 1 6 5 3 "
+"6 7 8 11 10 12 12 10 13 8 7 "
+"10 11 9 10 13 10 7 17 16 15 "
+"15 16 14 "
+;
+
+char *VTK_VECTOR_TEXT_60 = (char *) "11 0.952690 "
+"0.94857 0.09939 0.95269 0.10571 0.95236 0.22571 0.22894 0.40857 0.38919 0.46571 "
+"0.38919 0.47143 0.22748 0.52857 0.23192 0.53429 0.95098 0.70571 0.95216 0.83143 "
+"0.94857 0.83523 9 4 0 2 5 7 6 4 3 0 0 1 2 7 "
+"8 10 4 5 3 5 6 3 8 9 10 7 5 8 "
+;
+
+char *VTK_VECTOR_TEXT_61 = (char *) "12 0.952768 "
+"0.22857 0.23975 0.94857 0.23975 0.22437 0.35714 0.95277 0.35714 0.22857 0.36329 "
+"0.94857 0.36329 0.22857 0.57385 0.94857 0.57385 0.22437 0.58000 0.95277 0.58000 "
+"0.22857 0.69740 0.94857 0.69740 8 0 4 "
+"2 0 1 5 4 0 5 3 5 1 "
+"11 7 9 10 6 7 10 7 11 8 6 "
+"10 "
+;
+
+char *VTK_VECTOR_TEXT_62 = (char *) "11 0.952360 "
+"0.23429 0.09914 0.22857 0.10169 0.22748 0.22571 0.23192 0.23143 0.95116 0.40857 "
+"0.79073 0.46571 0.79073 0.47143 0.95236 0.52857 0.22897 0.70571 0.22857 0.83287 "
+"0.23429 0.83563 9 1 0 2 3 2 0 3 0 5 4 7 5 4 "
+"5 0 6 5 7 6 10 8 8 10 9 10 6 7 "
+;
+
+char *VTK_VECTOR_TEXT_63 = (char *) "45 0.918074 "
+"0.47429 -0.07186 0.62021 -0.07143 0.47118 0.07714 0.62329 0.07714 0.49979 0.19714 "
+"0.62021 0.19714 0.49563 0.20286 0.49563 0.27714 0.63681 0.31714 0.50816 0.34571 "
+"0.65714 0.36350 0.53669 0.41429 0.70857 0.42384 0.57868 0.47143 0.82857 0.53597 "
+"0.86902 0.58571 0.73258 0.62000 0.90437 0.65429 0.76086 0.66000 0.77522 0.70000 "
+"0.91580 0.70000 0.34857 0.71338 0.21034 0.73429 0.77866 0.75143 0.91807 0.76857 "
+"0.22605 0.80857 0.76571 0.80375 0.38286 0.82144 0.73714 0.85191 0.25098 0.87143 "
+"0.89143 0.86730 0.43597 0.88857 0.86812 0.90571 0.67429 0.90616 0.48571 0.91800 "
+"0.62857 0.92538 0.29296 0.93429 0.54857 0.93277 0.81143 0.96670 0.35429 0.98821 "
+"0.76571 0.99800 0.44571 1.02891 0.69714 1.02680 0.53143 1.04395 0.60000 1.04437 41 2 1 3 2 0 1 7 6 4 7 4 5 8 9 7 11 10 13 8 "
+"7 5 8 10 11 9 8 11 13 12 16 12 13 10 14 16 12 14 15 16 16 "
+"15 18 17 18 15 17 23 19 17 19 18 20 23 17 29 27 36 26 32 28 21 "
+"25 22 26 23 24 27 29 25 24 23 20 36 31 39 28 40 33 30 26 24 35 "
+"44 37 31 36 27 27 25 21 31 34 41 42 33 40 28 38 40 39 31 41 38 "
+"28 32 26 30 32 42 35 33 41 34 43 43 37 44 34 37 43 44 35 42 "
+;
+
+char *VTK_VECTOR_TEXT_64 = (char *) "114 1.632597 "
+"0.92571 -0.39563 1.16571 -0.38109 0.74857 -0.37236 0.65143 -0.34613 1.33143 -0.33070 "
+"0.54286 -0.29914 0.86286 -0.27866 1.06286 -0.28134 1.45650 -0.26000 0.73714 -0.25387 "
+"1.21143 -0.25387 0.43429 -0.22384 0.62286 -0.21216 1.32144 -0.20857 1.55582 -0.17429 "
+"0.53714 -0.16099 0.52571 -0.15258 0.53143 -0.15669 0.33714 -0.11650 1.45143 -0.11561 "
+"0.46286 -0.09260 0.80000 -0.07295 1.20571 -0.07252 1.09714 -0.06891 0.71429 -0.06252 "
+"1.49714 -0.06187 1.63260 -0.06000 0.29629 -0.04857 1.29714 -0.04498 0.90857 -0.03629 "
+"1.03384 -0.02571 0.62857 -0.01582 0.40486 -0.00857 0.59429 0.01873 1.41143 0.03296 "
+"0.82857 0.03907 0.77714 0.04327 1.01143 0.04414 1.20000 0.05050 1.16989 0.06571 "
+"1.25143 0.06086 0.90857 0.06821 0.72000 0.07561 0.54771 0.09429 1.15580 0.09429 "
+"0.24420 0.10000 0.35748 0.11143 0.96000 0.10725 0.68527 0.11714 1.33841 0.11714 "
+"1.51579 0.15714 0.66177 0.17429 1.41355 0.20286 1.03514 0.20857 0.65295 0.23143 "
+"0.22437 0.23714 0.51277 0.23714 0.33563 0.24857 1.45355 0.27714 1.07177 0.31143 "
+"1.58478 0.31143 0.65966 0.32857 1.48319 0.36857 0.53184 0.39714 0.23277 0.40286 "
+"0.34478 0.40857 1.60420 0.42571 1.08420 0.44286 0.71514 0.48857 0.25184 0.49429 "
+"1.49295 0.49429 0.57229 0.50000 1.60109 0.52857 1.05714 0.54144 0.75846 0.55143 "
+"0.38645 0.55714 1.47681 0.58571 1.01143 0.59527 0.81714 0.60331 1.58605 0.60857 "
+"1.12878 0.61429 0.65714 0.62418 0.86286 0.62319 0.96571 0.62151 0.92571 0.62991 "
+"0.42857 0.64350 1.44571 0.66730 0.32359 0.67714 1.06048 0.68286 0.74857 0.69641 "
+"1.15429 0.71588 1.28235 0.71714 1.00571 0.71800 0.82857 0.73109 0.92000 0.74152 "
+"1.52657 0.75143 0.51275 0.75714 0.37669 0.76286 1.38286 0.76132 0.59493 0.82571 "
+"1.30857 0.82821 1.45561 0.84857 0.47429 0.87296 0.73143 0.89681 1.18286 0.89580 "
+"1.08571 0.92395 1.37143 0.92400 0.92000 0.93580 0.58286 0.95188 1.30857 0.96371 "
+"0.71429 1.00899 1.18286 1.01470 0.92000 1.04437 1.01143 1.04395 114 0 6 2 1 7 0 6 0 7 "
+"7 1 10 2 9 3 3 12 5 9 2 "
+"6 10 4 13 4 10 1 15 5 12 "
+"5 15 11 13 8 19 12 3 9 8 13 "
+"4 11 20 18 11 15 16 17 16 15 "
+"14 19 8 26 25 14 20 11 16 22 38 "
+"23 25 19 14 23 39 30 30 39 37 "
+"27 46 45 18 32 27 32 18 20 21 36 "
+"24 35 29 41 24 42 31 29 35 21 "
+"22 28 40 38 22 40 34 49 40 33 31 "
+"48 36 21 35 37 47 41 33 48 43 "
+"43 51 56 44 37 39 34 40 28 47 37 "
+"53 50 52 34 38 39 23 52 49 34 "
+"37 44 53 27 32 46 42 24 36 48 31 "
+"42 37 41 29 45 57 55 53 44 59 "
+"51 54 56 52 50 58 58 60 62 43 48 "
+"51 45 46 57 56 61 63 64 55 57 "
+"91 80 44 60 58 50 62 66 70 56 54 "
+"61 44 80 67 59 44 67 71 63 61 "
+"64 65 69 67 80 73 65 64 57 66 62 "
+"60 68 71 61 71 68 81 69 75 87 "
+"72 70 66 74 81 68 77 73 80 70 79 "
+"76 75 69 65 83 77 88 87 85 97 "
+"81 74 89 89 78 93 86 76 79 70 72 "
+"79 74 78 89 88 77 80 75 85 87 "
+"82 84 94 91 90 80 86 95 98 78 82 "
+"93 92 83 88 93 82 94 84 83 92 "
+"94 84 92 97 96 102 95 86 79 102 99 "
+"108 95 101 98 96 97 85 96 99 102 "
+"98 101 100 103 108 99 100 109 104 106 100 "
+"101 108 103 110 105 113 107 100 106 109 "
+"104 111 105 107 112 110 111 104 109 113 105 "
+"111 112 107 113 107 110 103 "
+;
+
+char *VTK_VECTOR_TEXT_65 = (char *) "13 1.155731 "
+"0.14455 -0.07143 1.00000 -0.07252 1.15573 -0.07143 0.29143 -0.07103 0.40981 0.25429 "
+"0.86857 0.25754 0.45714 0.37713 0.82478 0.38000 0.45462 0.38571 0.58538 0.73429 "
+"0.63429 0.90068 0.56000 1.02454 0.71429 1.02644 13 5 "
+"1 2 0 8 11 6 4 5 12 10 7 0 3 4 0 4 8 6 5 7 6 "
+"8 4 7 5 2 8 9 11 9 10 11 12 7 2 11 10 12 "
+;
+
+char *VTK_VECTOR_TEXT_66 = (char *) "48 1.081090 "
+"0.25714 -0.07186 0.78286 -0.06723 0.86857 -0.04899 0.93714 -0.02045 1.00725 0.03714 "
+"0.39957 0.06000 0.73143 0.05621 0.80571 0.06891 1.04213 0.08857 0.87555 0.10571 "
+"1.06437 0.14000 0.91070 0.15143 1.08109 0.22000 0.93295 0.22571 0.93252 0.26571 "
+"1.07177 0.32286 0.90857 0.34064 1.04616 0.38571 0.86857 0.38686 0.79429 0.42252 "
+"0.39957 0.43143 1.01296 0.43143 0.69714 0.43563 0.97143 0.46686 0.88197 0.51143 "
+"0.40571 0.56437 0.72000 0.56705 0.39848 0.57429 0.96956 0.58571 0.80571 0.58930 "
+"0.84686 0.62000 0.99641 0.62571 0.86943 0.65429 1.02437 0.70571 0.88420 0.71143 "
+"1.02665 0.76857 0.87429 0.79232 1.01673 0.82000 0.84000 0.84984 0.77714 0.88538 "
+"0.98607 0.88857 0.39957 0.89429 0.71429 0.89580 0.93143 0.95296 0.85714 0.99756 "
+"0.80000 1.01470 0.25714 1.02615 0.70857 1.02680 50 1 6 0 2 7 1 "
+"0 20 46 7 2 9 1 7 6 20 27 "
+"46 9 4 11 4 9 3 2 3 9 "
+"11 10 13 8 11 4 10 11 8 12 13 "
+"10 14 17 16 14 15 17 16 21 18 "
+"14 13 12 15 14 12 23 18 21 5 0 "
+"6 19 26 22 18 24 19 16 17 21 "
+"24 18 23 26 19 29 19 24 29 25 22 "
+"26 22 25 20 30 29 24 32 28 31 "
+"28 32 30 32 31 34 0 5 20 34 35 "
+"36 33 34 31 28 30 24 36 40 38 "
+"38 44 39 35 37 36 34 33 35 25 27 "
+"20 27 41 46 40 36 37 43 38 40 "
+"39 45 42 42 47 41 38 43 44 45 39 "
+"44 47 46 41 47 42 45 "
+;
+
+char *VTK_VECTOR_TEXT_67 = (char *) "56 1.186046 "
+"0.69143 -0.08966 0.80000 -0.08705 0.60000 -0.07823 0.50857 -0.05070 0.93143 -0.05216 "
+"0.45714 -0.02486 1.00000 -0.01473 0.39597 0.02000 0.69714 0.03563 0.74857 0.03563 "
+"0.62286 0.04899 0.82286 0.04899 1.08000 0.05597 0.57143 0.06784 0.88000 0.07229 "
+"0.32571 0.10064 0.93143 0.10759 0.49143 0.11901 1.13800 0.14000 0.45600 0.15714 "
+"0.28930 0.16286 0.99641 0.18571 0.41502 0.22571 1.18605 0.27714 0.24319 0.28857 "
+"1.04571 0.31105 0.38244 0.32857 0.22748 0.36286 0.36723 0.44286 0.21866 0.52857 "
+"0.36991 0.55714 0.22705 0.60857 1.02857 0.69469 0.40657 0.71143 1.16694 0.72857 "
+"0.26286 0.74089 0.44187 0.78000 1.13927 0.80857 0.97143 0.80914 0.48000 0.82725 "
+"0.31750 0.84286 0.93714 0.85011 0.53143 0.86784 0.89143 0.88331 1.07582 0.90571 "
+"0.64000 0.91252 0.64571 0.91335 0.65714 0.91563 0.38286 0.91868 0.78857 0.91823 "
+"1.00571 0.96902 0.50286 0.99756 0.93143 1.01070 0.58286 1.02680 0.70286 1.04705 "
+"0.80000 1.04437 54 "
+"1 9 0 0 8 2 14 6 16 4 14 "
+"11 24 20 22 7 17 15 2 10 3 "
+"8 10 2 9 1 11 0 9 8 4 11 "
+"1 3 13 5 12 16 6 10 13 3 "
+"5 13 7 7 13 17 22 20 15 16 12 "
+"21 14 4 6 19 15 17 23 25 18 "
+"22 15 19 25 21 18 18 21 12 27 28 "
+"29 27 24 26 26 24 22 28 27 26 "
+"29 30 31 30 29 28 33 35 31 35 33 "
+"40 33 31 30 34 37 32 48 42 51 "
+"36 40 33 40 36 48 38 44 41 44 38 "
+"37 32 37 38 48 39 42 36 39 48 "
+"54 53 47 45 51 42 49 43 52 50 41 "
+"44 47 45 46 41 50 43 45 53 51 "
+"49 54 47 53 45 47 49 55 54 55 49 "
+"52 52 43 50 "
+;
+
+char *VTK_VECTOR_TEXT_68 = (char *) "34 1.167232 "
+"0.26286 -0.07186 0.70286 -0.07252 0.80000 -0.06109 0.89714 -0.03355 0.99555 0.02571 "
+"0.40528 0.06000 0.72571 0.05891 1.03582 0.06571 0.79547 0.07143 0.88000 0.10893 "
+"1.08150 0.12857 0.92115 0.14571 0.96657 0.21429 1.13966 0.26571 0.99470 0.28857 "
+"1.16420 0.39714 1.01823 0.43714 1.16723 0.52857 1.01823 0.53429 1.15277 0.64286 "
+"1.00000 0.65848 0.97714 0.72375 1.11216 0.77429 0.94286 0.78057 0.87429 0.84902 "
+"1.06607 0.85429 0.81714 0.87865 0.40528 0.89429 0.69143 0.89807 0.97714 0.94616 "
+"0.90857 0.98657 0.81143 1.01580 0.26286 1.02615 0.70286 1.02680 34 2 6 1 5 0 1 "
+"8 3 9 3 8 2 0 27 32 6 2 "
+"8 5 1 6 4 7 11 4 9 3 "
+"9 4 11 11 10 12 11 7 10 13 14 "
+"12 14 15 16 13 12 10 16 17 18 "
+"14 13 15 18 19 20 17 16 15 18 17 "
+"19 22 21 20 21 22 23 29 24 23 "
+"22 20 19 26 24 30 0 5 27 25 23 "
+"22 29 23 25 30 24 29 26 31 28 "
+"31 26 30 33 32 27 28 33 27 33 28 "
+"31 "
+;
+
+char *VTK_VECTOR_TEXT_69 = (char *) "15 1.080000 "
+"0.26857 -0.07186 1.08000 -0.06878 1.08000 0.05164 0.41100 0.06000 0.41100 0.42571 "
+"1.01143 0.43100 1.01563 0.55143 0.41714 0.55866 1.01143 0.55757 0.40991 0.56857 "
+"0.41100 0.89429 1.05143 0.89957 1.05563 1.02000 0.26857 1.02615 1.05143 1.02615 13 0 4 13 1 3 0 1 2 3 0 "
+"3 4 7 5 8 5 7 4 6 8 5 4 9 13 7 9 4 9 10 13 11 "
+"14 10 14 13 10 12 14 11 "
+;
+
+char *VTK_VECTOR_TEXT_70 = (char *) "12 1.005714 "
+"0.26857 -0.07186 0.40571 -0.07186 0.40991 0.42000 0.41714 0.42723 0.92615 0.43143 "
+"0.92615 0.55143 0.41714 0.55563 0.40991 0.56286 0.41100 0.89429 1.00571 0.90265 "
+"1.00571 1.02307 0.26857 1.02615 10 0 2 "
+"11 2 7 11 2 0 1 6 4 5 "
+"4 6 3 3 6 2 7 2 6 7 8 "
+"11 11 8 10 8 9 10 "
+;
+
+char *VTK_VECTOR_TEXT_71 = (char *) "60 1.234286 "
+"0.82286 -0.08966 0.65714 -0.07866 0.93143 -0.07335 0.56571 -0.05387 1.05143 -0.03355 "
+"0.48000 -0.01514 1.12000 0.00073 0.74286 0.03866 0.83429 0.04177 0.38857 0.05044 "
+"0.65143 0.05470 0.92571 0.06319 1.23260 0.07714 0.34857 0.09302 0.54286 0.10150 "
+"1.03429 0.11229 0.50286 0.13044 1.09252 0.15714 0.44421 0.19714 0.27429 0.21629 "
+"0.24252 0.31143 0.39320 0.31143 0.77714 0.36243 1.09143 0.35773 0.22748 0.39714 "
+"0.37605 0.40286 0.77295 0.48286 0.77714 0.48900 1.23429 0.48900 0.22437 0.51143 "
+"0.37295 0.51714 0.23320 0.59143 0.39748 0.65429 1.09143 0.68617 1.08571 0.69099 "
+"0.42073 0.71714 1.21977 0.72286 0.27387 0.73429 1.06286 0.75301 0.30645 0.80286 "
+"0.47616 0.80286 1.02286 0.82127 1.18498 0.82571 0.54286 0.86150 0.34857 0.86629 "
+"0.94286 0.88371 1.14857 0.88793 0.61143 0.89580 0.86286 0.91184 0.40168 0.92286 "
+"0.70857 0.91866 0.80000 0.92134 1.09714 0.94384 0.45714 0.96436 0.53714 1.00498 "
+"1.00000 1.00371 0.93714 1.02613 0.62857 1.03252 0.73714 1.04705 0.84571 1.04395 58 0 7 1 14 5 3 5 14 "
+"9 2 8 0 1 10 3 0 8 7 "
+"8 2 11 18 13 9 17 6 12 10 1 "
+"7 4 11 2 13 18 19 23 17 12 "
+"15 6 17 4 6 15 16 9 14 11 4 "
+"15 14 3 10 19 21 20 18 9 16 "
+"30 31 29 23 27 22 25 24 20 22 27 "
+"26 21 19 18 25 20 21 23 28 27 "
+"28 23 12 29 24 25 30 29 25 31 32 "
+"37 38 33 36 37 32 39 32 31 30 "
+"35 39 32 34 33 38 39 40 44 38 46 "
+"41 38 42 46 40 39 35 44 40 49 "
+"53 43 54 43 49 40 42 38 36 43 47 "
+"54 52 41 46 41 52 45 43 53 49 "
+"54 47 57 50 57 47 45 56 48 55 45 "
+"52 48 59 51 57 50 58 50 51 58 "
+"56 45 55 58 51 59 59 48 56 "
+;
+
+char *VTK_VECTOR_TEXT_72 = (char *) "16 1.125714 "
+"0.26857 -0.07186 0.40571 -0.07186 0.98857 -0.07295 0.98286 -0.06878 1.12571 -0.06878 "
+"0.40991 0.43714 0.41714 0.44437 0.97714 0.44329 0.41714 0.57277 0.97714 0.57385 "
+"0.40991 0.58000 0.98550 1.02571 1.12571 1.02307 0.26857 1.02615 0.40571 1.02615 "
+"1.12000 1.02723 14 4 9 7 0 5 13 5 10 13 "
+"5 0 1 8 7 9 9 4 11 10 5 "
+"8 6 8 5 4 3 2 7 8 6 "
+"14 13 10 12 15 11 3 4 7 4 12 "
+"11 "
+;
+
+char *VTK_VECTOR_TEXT_73 = (char *) "4 0.428571 "
+"0.42592 -0.07143 0.28571 -0.06878 0.28836 1.02571 0.42857 1.02307 2 1 3 2 3 1 0 "
+;
+
+char *VTK_VECTOR_TEXT_74 = (char *) "27 0.790089 "
+"0.45143 -0.09009 0.50857 -0.09009 0.37714 -0.07756 0.58404 -0.07714 0.33143 -0.06086 "
+"0.64000 -0.05641 0.26489 -0.01429 0.71429 -0.00117 0.46286 0.03866 0.53714 0.04706 "
+"0.74902 0.04857 0.41714 0.04899 0.57772 0.06571 0.21143 0.06772 0.37016 0.07714 "
+"0.34498 0.11143 0.77252 0.11143 0.62371 0.11714 0.18705 0.16286 0.32462 0.17429 "
+"0.64420 0.22571 0.79009 0.23143 0.18546 0.23714 0.31472 0.25429 0.64836 1.02571 "
+"0.78857 1.02307 0.78286 1.02723 25 10 "
+"12 7 4 2 11 0 1 8 3 8 1 11 2 8 0 8 2 8 3 9 9 "
+"3 12 4 14 6 7 12 5 3 5 12 6 15 13 12 10 17 14 4 11 13 "
+"19 18 6 14 15 22 19 23 17 16 20 13 15 19 16 17 10 22 18 19 21 "
+"20 16 20 21 24 25 26 24 21 25 24 "
+;
+
+char *VTK_VECTOR_TEXT_75 = (char *) "17 1.155019 "
+"0.25714 -0.07186 0.39429 -0.07186 1.15502 -0.07143 0.97143 -0.07140 0.89527 0.28857 "
+"0.89143 0.29371 0.89098 0.29429 0.39848 0.30000 0.57714 0.47913 0.40000 0.49126 "
+"0.68956 0.56857 0.68571 0.57371 0.68527 0.57429 1.13216 1.02571 0.25714 1.02615 "
+"0.39429 1.02615 0.94857 1.02680 15 0 9 14 0 7 9 3 10 8 3 6 10 9 8 16 4 5 6 7 "
+"0 1 3 4 6 16 8 12 10 11 12 4 3 2 8 10 12 9 7 8 13 "
+"16 12 15 14 9 "
+;
+
+char *VTK_VECTOR_TEXT_76 = (char *) "7 0.941339 "
+"0.25714 -0.07186 0.93714 -0.07186 0.94134 0.04857 0.39957 0.06000 0.93714 0.05472 "
+"0.25714 1.02615 0.39429 1.02615 5 3 0 1 0 3 5 2 4 1 3 1 4 6 5 3 "
+;
+
+char *VTK_VECTOR_TEXT_77 = (char *) "19 1.302857 "
+"0.39164 -0.07143 0.71429 -0.07186 1.17143 -0.07295 0.25714 -0.06878 0.84000 -0.06947 "
+"1.16571 -0.06878 1.30286 -0.06878 0.78286 0.09751 0.78857 0.09751 1.16000 0.83018 "
+"0.40000 0.84467 0.52151 0.88286 0.52000 0.88739 0.51748 0.89429 0.47580 1.02000 "
+"0.25979 1.02571 1.11429 1.02285 1.30286 1.02307 0.46857 1.02680 17 3 10 15 5 6 9 6 "
+"5 2 1 11 10 4 8 1 1 7 11 9 16 8 1 8 7 9 8 4 10 "
+"18 15 13 11 12 10 3 0 10 13 18 16 9 17 10 11 13 13 14 18 6 "
+"17 9 "
+;
+
+char *VTK_VECTOR_TEXT_78 = (char *) "14 1.125714 "
+"0.26286 -0.07186 0.39429 -0.07186 0.98286 -0.07295 1.12571 -0.06878 0.98286 0.17231 "
+"0.72045 0.31143 0.71678 0.31714 0.72000 0.31207 0.40000 0.78092 0.99122 1.02571 "
+"1.12571 1.02307 0.26286 1.02615 0.40571 1.02644 1.12000 1.02723 12 "
+"0 8 11 8 0 1 4 3 9 3 4 "
+"2 4 5 2 6 7 5 12 6 4 "
+"4 6 5 6 12 8 10 13 9 8 12 "
+"11 3 10 9 "
+;
+
+char *VTK_VECTOR_TEXT_79 = (char *) "63 1.267054 "
+"0.70286 -0.08966 0.77714 -0.08966 0.61143 -0.07605 0.89714 -0.06823 0.97143 -0.04073 "
+"0.49143 -0.03229 1.05650 0.00857 0.42286 0.01107 0.70857 0.03605 0.77143 0.03605 "
+"0.63429 0.04899 0.84571 0.04899 1.12725 0.07143 0.35044 0.07714 0.92716 0.08286 "
+"0.54857 0.08535 0.49143 0.12704 1.17465 0.13429 1.01296 0.15143 0.28571 0.17016 "
+"0.43955 0.18571 1.21184 0.20286 0.40784 0.23714 1.08086 0.26000 1.24613 0.30000 "
+"0.23109 0.31143 1.10665 0.34571 0.36764 0.36857 0.21295 0.43143 1.11848 0.43714 "
+"1.26705 0.43714 0.36193 0.51143 1.11848 0.51714 0.21563 0.54571 0.36991 0.59143 "
+"1.25522 0.61429 1.09966 0.63714 0.23236 0.64857 1.23681 0.68857 1.07070 0.71714 "
+"0.41143 0.73016 0.26645 0.75143 1.20486 0.76857 0.45561 0.79714 1.02286 0.79270 "
+"0.98857 0.82956 0.31429 0.83650 1.16045 0.84286 0.53143 0.86150 0.92000 0.87800 "
+"0.35582 0.88857 0.63429 0.90764 0.85143 0.90613 1.10286 0.90956 0.71429 0.92134 "
+"0.79429 0.91866 0.43493 0.95714 1.04000 0.95964 0.52000 1.00498 0.96000 1.00327 "
+"0.89714 1.02613 0.63429 1.03866 0.77714 1.04705 63 0 8 2 1 9 0 8 10 2 2 10 5 9 1 11 5 "
+"16 7 11 3 14 3 11 1 3 4 14 6 14 4 7 16 13 10 15 5 0 "
+"9 8 16 5 15 14 6 18 13 20 19 12 18 6 18 17 23 17 21 23 20 "
+"22 19 18 12 17 23 21 26 25 19 22 13 16 20 25 27 28 27 25 22 21 "
+"24 26 30 29 26 32 35 36 30 26 24 33 34 37 32 29 30 28 31 33 31 "
+"28 27 34 33 31 36 38 39 35 32 30 41 37 34 38 42 39 41 40 46 35 "
+"38 36 39 47 44 40 43 46 53 45 44 46 43 50 45 57 49 40 41 34 56 "
+"50 43 49 59 52 48 56 43 57 45 53 53 44 47 56 48 58 39 42 47 58 "
+"51 61 59 49 57 51 58 48 55 52 60 62 54 55 59 60 52 61 54 62 54 "
+"61 51 62 55 60 "
+;
+
+char *VTK_VECTOR_TEXT_80 = (char *) "31 1.098661 "
+"0.26286 -0.07186 0.40000 -0.07186 0.40420 0.36857 0.41143 0.37580 0.73714 0.37621 "
+"0.88571 0.40034 0.98343 0.44857 0.41143 0.50420 0.72571 0.50420 0.40420 0.51143 "
+"1.04045 0.51143 0.82947 0.52286 0.88571 0.55296 0.91678 0.58571 1.08252 0.59714 "
+"0.93966 0.63143 1.09866 0.68286 0.94966 0.72857 0.93355 0.79143 1.08530 0.80857 "
+"0.90857 0.83270 0.86857 0.86893 1.05927 0.87143 0.40528 0.89429 0.82286 0.88899 "
+"0.74857 0.89807 1.02439 0.92286 0.96000 0.97641 0.89143 1.00538 0.26286 1.02615 "
+"0.74286 1.02680 31 0 9 29 0 2 9 2 7 9 7 3 8 12 11 5 5 11 4 4 "
+"8 3 3 7 2 2 0 1 11 8 4 13 12 6 10 13 6 6 12 5 14 "
+"15 10 15 14 17 13 10 15 16 17 14 17 19 18 19 17 16 18 19 20 20 "
+"27 21 22 20 19 9 23 29 30 25 24 25 30 23 27 20 26 20 22 26 28 "
+"24 21 28 21 27 30 29 23 30 24 28 "
+;
+
+char *VTK_VECTOR_TEXT_81 = (char *) "66 1.276398 "
+"1.23429 -0.15444 1.13714 -0.11188 0.76571 -0.09009 0.64571 -0.08437 0.84000 -0.08034 "
+"0.58286 -0.07034 1.27640 -0.06000 0.93143 -0.05470 0.46857 -0.02322 1.00000 -0.02293 "
+"0.38857 0.03330 0.76000 0.03563 0.68000 0.03866 0.83547 0.04857 1.09814 0.04857 "
+"0.61714 0.05177 0.87591 0.06571 0.55429 0.07800 0.80000 0.10784 0.49143 0.12132 "
+"0.30857 0.12350 0.74115 0.12857 0.98286 0.13189 1.17355 0.14571 0.42857 0.19207 "
+"0.86857 0.19927 0.26286 0.20486 1.05355 0.22000 0.77714 0.23134 0.39277 0.26000 "
+"1.23177 0.27714 0.23387 0.28286 1.08823 0.30571 0.36420 0.36286 0.20991 0.40286 "
+"0.35580 0.43714 1.25866 0.43714 1.11009 0.44286 0.20723 0.51714 1.25252 0.58000 "
+"0.36420 0.59714 1.09823 0.60857 0.23470 0.67714 0.38857 0.68947 1.21184 0.73429 "
+"1.05143 0.73841 0.42902 0.76857 0.28821 0.80286 1.00571 0.80413 1.17188 0.81429 "
+"0.96000 0.84670 0.51429 0.85473 0.34473 0.88286 1.12000 0.88413 0.57714 0.89070 "
+"0.88571 0.89070 0.64571 0.91252 0.76571 0.92093 0.42857 0.95759 1.03429 0.95864 "
+"0.50286 0.99927 0.96571 0.99800 0.60000 1.03252 0.86857 1.03184 0.69714 1.04705 "
+"0.77143 1.04665 66 0 6 1 "
+"13 7 16 14 9 1 9 16 7 3 15 "
+"5 16 9 14 11 4 13 11 2 4 "
+"7 13 4 12 3 11 2 11 3 15 3 "
+"12 5 17 8 8 19 10 10 19 20 "
+"14 1 6 5 15 17 20 29 26 19 8 "
+"17 21 18 28 22 16 14 16 25 18 "
+"22 14 27 24 20 19 16 22 25 26 29 "
+"31 18 25 28 14 23 27 27 30 32 "
+"30 27 23 31 33 34 20 24 29 37 32 "
+"30 33 31 29 34 33 38 36 37 30 "
+"35 38 33 37 39 41 38 40 42 37 36 "
+"39 41 44 45 40 38 35 42 43 47 "
+"44 41 39 46 47 43 43 42 40 47 46 "
+"52 45 49 48 59 50 48 52 51 58 "
+"53 48 49 61 50 59 50 61 55 58 51 "
+"60 51 52 46 49 45 44 59 48 53 "
+"57 64 56 60 54 62 55 63 57 51 54 "
+"60 54 56 62 62 56 64 63 55 61 "
+"63 65 57 57 65 64 "
+;
+
+char *VTK_VECTOR_TEXT_82 = (char *) "46 1.225355 "
+"0.26857 -0.07186 0.40571 -0.07186 1.05143 -0.07215 1.22359 -0.07143 1.22535 -0.06571 "
+"1.17465 0.01429 1.17143 0.01936 1.17098 0.02000 0.84571 0.24343 1.00571 0.27650 "
+"0.76571 0.34698 0.91832 0.37429 0.73143 0.37678 0.40991 0.40857 0.68000 0.40437 "
+"0.41714 0.41580 0.62286 0.41538 0.84226 0.42571 0.92571 0.44706 0.99429 0.47502 "
+"1.07582 0.54000 0.41714 0.54420 0.40991 0.55143 0.80000 0.54764 0.88000 0.56538 "
+"1.11641 0.60286 0.94286 0.60439 0.96784 0.63714 1.13823 0.67714 0.98966 0.69429 "
+"0.99277 0.74571 1.14134 0.75143 0.97143 0.81493 1.12823 0.82000 0.93143 0.86115 "
+"1.10498 0.87714 0.89143 0.88498 0.40991 0.90000 0.41714 0.90723 0.78857 0.90723 "
+"1.07011 0.92857 1.01714 0.97579 0.97143 0.99865 0.87429 1.02109 0.26857 1.02615 "
+"0.80571 1.02723 46 2 9 8 3 5 2 0 37 "
+"44 5 7 2 5 6 7 3 4 5 "
+"2 7 9 18 23 17 11 8 9 8 11 "
+"10 0 22 37 11 17 10 21 16 23 "
+"21 15 16 23 10 17 19 24 18 23 18 "
+"24 23 12 10 15 21 13 0 21 22 "
+"16 14 23 23 14 12 20 26 19 26 20 "
+"27 24 19 26 27 25 29 28 30 29 "
+"31 30 28 25 27 20 30 33 32 28 29 "
+"25 33 30 31 32 40 34 35 32 33 "
+"0 1 13 0 13 21 41 34 40 43 36 "
+"42 38 39 45 32 35 40 42 34 41 "
+"34 42 36 36 43 39 44 38 45 43 45 "
+"39 37 38 44 "
+;
+
+char *VTK_VECTOR_TEXT_83 = (char *) "69 1.081090 "
+"0.71429 -0.08966 0.53714 -0.07866 0.82286 -0.07101 0.46286 -0.05959 0.38857 -0.02616 "
+"0.94286 -0.01678 0.33714 0.01044 0.64000 0.03866 0.73143 0.04177 1.00571 0.03883 "
+"0.56000 0.05177 0.28527 0.06571 0.50857 0.06930 0.83587 0.07143 1.04086 0.08857 "
+"0.88127 0.10000 0.43429 0.11330 0.24486 0.13429 0.92613 0.15714 1.07177 0.16286 "
+"0.38771 0.16857 0.94134 0.21429 0.36319 0.22571 0.21563 0.23714 1.08109 0.26571 "
+"0.21403 0.27714 0.93294 0.27714 0.34857 0.28916 0.91011 0.31714 1.06816 0.32857 "
+"0.84000 0.36943 1.04486 0.38000 0.76571 0.39673 0.98286 0.45241 0.53143 0.45748 "
+"0.42857 0.49343 0.92571 0.49070 0.37143 0.52535 0.82857 0.53109 0.31044 0.58000 "
+"0.53143 0.60899 0.43429 0.65616 0.26244 0.67143 0.39891 0.71143 0.90857 0.71084 "
+"0.25295 0.72286 1.04615 0.72286 0.39320 0.76857 0.40359 0.80857 1.03109 0.81429 "
+"0.26327 0.82000 0.87429 0.81493 0.45143 0.86956 0.82286 0.87258 0.28930 0.88286 "
+"0.98812 0.90000 0.50857 0.90041 0.76571 0.90151 0.57714 0.91563 0.67429 0.91866 "
+"0.95443 0.94000 0.35429 0.96099 0.89143 0.98784 0.40000 0.99188 0.83429 1.01470 "
+"0.50286 1.03184 0.74857 1.03823 0.57143 1.04437 0.67429 1.04705 67 2 "
+"8 0 0 7 1 6 4 16 6 16 11 0 8 7 7 10 1 8 2 13 5 "
+"15 13 1 10 3 10 12 3 9 15 5 4 3 12 15 14 18 5 13 2 14 "
+"15 9 16 4 12 21 24 26 18 19 21 11 20 17 20 11 16 17 22 23 19 "
+"18 14 22 17 20 25 23 27 23 22 27 24 21 19 26 31 28 28 33 30 24 "
+"29 26 30 38 32 26 29 31 34 32 38 33 28 31 34 40 35 33 36 30 39 "
+"43 42 38 30 36 41 37 35 40 34 38 37 41 39 41 35 40 50 48 54 39 "
+"41 43 44 46 49 45 42 43 45 47 50 48 50 47 60 51 55 47 45 43 51 "
+"60 53 54 48 61 44 49 51 55 51 49 48 52 61 56 63 52 57 66 59 61 "
+"52 63 63 56 65 62 53 60 53 64 57 53 62 64 59 66 58 65 58 67 58 "
+"65 56 66 57 64 67 58 68 68 58 66 "
+;
+
+char *VTK_VECTOR_TEXT_84 = (char *) "8 1.045714 "
+"0.54286 -0.07186 0.68000 -0.07186 0.53757 0.89429 0.68528 0.89429 0.17714 0.90265 "
+"1.04571 0.90265 0.17979 1.02571 1.04571 1.02307 6 0 3 2 3 0 "
+"1 6 4 2 6 3 7 6 2 3 "
+"3 5 7 "
+;
+
+char *VTK_VECTOR_TEXT_85 = (char *) "32 1.126804 "
+"0.65714 -0.09009 0.77143 -0.08705 0.53143 -0.07034 0.85714 -0.07101 0.47429 -0.05070 "
+"0.94286 -0.03629 0.38286 0.00704 1.02286 0.02445 0.65714 0.04437 0.78857 0.05320 "
+"0.33669 0.06000 0.58286 0.05748 0.84000 0.06823 0.52000 0.08535 1.07070 0.08857 "
+"0.89714 0.10154 0.46857 0.13025 1.09966 0.15714 0.29143 0.15866 0.94899 0.17429 "
+"0.43177 0.19714 0.27320 0.24286 0.97252 0.26000 1.12680 0.33429 0.26437 0.34000 "
+"0.40991 0.34000 0.98134 0.34571 0.98550 1.02571 1.12571 1.02307 0.26857 1.02615 "
+"0.40571 1.02615 1.12000 1.02723 30 3 9 1 10 20 18 8 0 "
+"1 0 11 2 7 15 5 0 8 11 "
+"8 1 9 9 3 12 13 4 2 5 12 "
+"3 15 7 19 16 10 6 12 5 15 "
+"4 13 6 13 2 11 21 18 20 13 16 "
+"6 19 17 22 17 19 14 7 14 19 "
+"10 16 20 25 24 21 23 26 22 23 22 "
+"17 25 21 20 24 25 29 30 29 25 "
+"28 31 27 26 23 27 23 28 27 "
+;
+
+char *VTK_VECTOR_TEXT_86 = (char *) "8 1.148571 "
+"0.57714 -0.07025 0.72571 -0.06947 0.64571 0.06079 0.65143 0.06062 0.15429 1.02560 "
+"0.30286 1.02531 1.00571 1.02531 1.14857 1.02560 6 0 2 4 3 2 "
+"0 3 7 6 1 3 0 3 1 7 "
+"2 5 4 "
+;
+
+char *VTK_VECTOR_TEXT_87 = (char *) "14 1.568063 "
+"0.45143 -0.07186 0.60000 -0.07017 1.13143 -0.06912 1.27429 -0.06912 0.52571 0.09707 "
+"1.20000 0.09787 1.13673 0.38000 0.86857 0.88103 0.16571 1.02562 0.78286 1.02446 "
+"1.42857 1.02446 1.56806 1.02571 0.30857 1.02615 0.95429 1.02615 12 "
+"2 6 7 6 2 5 1 4 0 7 9 "
+"4 11 10 5 3 5 2 8 0 4 "
+"13 7 6 9 7 13 7 4 1 11 5 "
+"3 12 8 4 "
+;
+
+char *VTK_VECTOR_TEXT_88 = (char *) "14 1.141168 "
+"0.15194 -0.07143 1.14117 -0.07143 0.32000 -0.07106 0.97143 -0.07140 0.65143 0.37795 "
+"0.74607 0.49429 0.56517 0.50000 0.74286 0.49909 0.74219 0.50000 0.65714 0.61727 "
+"0.20016 1.02571 0.96000 1.02568 1.11260 1.02571 0.36571 1.02644 12 "
+"0 2 6 3 5 4 5 6 4 5 8 "
+"6 5 3 1 5 7 8 4 6 2 "
+"9 6 8 12 11 8 6 13 10 13 6 "
+"9 11 9 8 "
+;
+
+char *VTK_VECTOR_TEXT_89 = (char *) "12 1.145205 "
+"0.71164 -0.07143 0.57143 -0.06878 0.56891 0.39143 0.71787 0.39714 0.65143 0.51441 "
+"0.43179 0.85429 0.42857 0.85936 0.42812 0.86000 0.15284 1.02571 0.32000 1.02535 "
+"0.98286 1.02464 1.14521 1.02571 10 3 2 "
+"1 3 1 0 4 2 3 2 9 8 "
+"11 10 4 5 2 4 5 6 7 2 7 "
+"9 2 5 7 11 4 3 "
+;
+
+char *VTK_VECTOR_TEXT_90 = (char *) "11 1.040000 "
+"0.17714 -0.07186 1.04000 -0.06878 1.04000 0.05164 0.17395 0.06000 0.34602 0.06000 "
+"0.84777 0.89429 0.24000 0.89957 1.02395 0.90000 0.23580 1.02000 1.02286 1.02307 "
+"0.24000 1.02615 9 0 4 3 1 4 0 1 2 4 3 4 5 5 "
+"7 9 4 7 5 5 10 6 10 5 9 6 10 8 "
+;
+
+char *VTK_VECTOR_TEXT_91 = (char *) "8 0.541339 "
+"0.24528 -0.37429 0.54025 -0.37429 0.54025 -0.27143 0.38227 -0.26571 0.38286 0.91454 "
+"0.54134 0.92286 0.24836 1.02571 0.53714 1.02615 6 0 4 6 3 1 "
+"2 1 3 0 0 3 4 5 7 4 "
+"6 4 7 "
+;
+
+char *VTK_VECTOR_TEXT_92 = (char *) "5 0.564685 "
+"0.46286 -0.09182 0.56000 -0.09256 0.56469 -0.08857 0.14713 1.04286 0.24571 1.04358 3 0 4 3 0 2 4 0 "
+"1 2 "
+;
+
+char *VTK_VECTOR_TEXT_93 = (char *) "9 0.465968 "
+"0.17100 -0.37429 0.46597 -0.37429 0.17100 -0.27143 0.32571 -0.26723 0.33295 -0.26000 "
+"0.33143 0.91201 0.17143 0.91979 0.16991 1.02000 0.46286 1.02615 7 2 0 3 1 "
+"3 0 1 4 3 5 4 1 7 6 8 5 8 6 8 5 1 "
+;
+
+char *VTK_VECTOR_TEXT_94 = (char *) "11 0.817005 "
+"0.18389 0.44857 0.18857 0.44458 0.32000 0.44686 0.68571 0.44746 0.81143 0.44445 "
+"0.81700 0.44857 0.49714 0.88224 0.50286 0.88224 0.44571 1.04090 0.55429 1.04168 "
+"0.45143 1.04437 9 0 2 6 0 6 8 7 3 5 4 5 3 2 "
+"0 1 10 7 9 10 8 6 10 6 7 9 7 5 "
+;
+
+char *VTK_VECTOR_TEXT_95 = (char *) "4 1.011860 "
+"0.11957 -0.37429 1.01186 -0.37429 0.11957 -0.28857 1.01186 -0.28857 2 2 1 3 2 0 1 "
+;
+
+char *VTK_VECTOR_TEXT_96 = (char *) "11 0.486571 "
+"0.38857 0.82420 0.48000 0.82420 0.48403 0.82571 0.37714 0.82989 0.38286 0.82575 "
+"0.48657 0.83143 0.21296 1.02571 0.38771 1.02571 0.21412 1.03143 0.38286 1.03106 "
+"0.37714 1.03295 9 5 1 2 0 3 4 3 10 6 0 1 5 7 "
+"3 0 8 6 10 7 0 5 3 7 10 10 7 9 "
+;
+
+char *VTK_VECTOR_TEXT_97 = (char *) "70 0.929303 "
+"0.44000 -0.09009 0.50286 -0.08966 0.36571 -0.07756 0.57143 -0.07907 0.92716 -0.07143 "
+"0.79429 -0.07106 0.92930 -0.06571 0.62857 -0.06151 0.30857 -0.05514 0.27429 -0.03258 "
+"0.68000 -0.03629 0.90748 -0.00857 0.48000 0.01580 0.53143 0.01621 0.42768 0.02571 "
+"0.76571 0.02129 0.22073 0.03143 0.61804 0.03714 0.89866 0.03714 0.37130 0.06000 "
+"0.20613 0.06571 0.68000 0.07330 0.34538 0.10000 0.71429 0.10809 0.19580 0.11714 "
+"0.89295 0.13429 0.33907 0.15714 0.74538 0.16857 0.20319 0.19714 0.36000 0.20914 "
+"0.75580 0.22000 0.40000 0.24371 0.22812 0.25429 0.44571 0.26041 0.66286 0.29891 "
+"0.28000 0.31258 0.75848 0.31714 0.75429 0.32399 0.33714 0.34657 0.38857 0.36538 "
+"0.68571 0.41320 0.75772 0.43714 0.35289 0.48286 0.22093 0.50000 0.22857 0.49470 "
+"0.89252 0.50571 0.75580 0.51143 0.22857 0.53547 0.37800 0.54571 0.74286 0.55301 "
+"0.88680 0.56286 0.71429 0.58893 0.41714 0.59330 0.42228 0.59714 0.25800 0.60286 "
+"0.42286 0.59759 0.65143 0.61959 0.48000 0.62193 0.86498 0.62571 0.53143 0.62950 "
+"0.59429 0.62950 0.28187 0.63714 0.84571 0.65486 0.33714 0.68436 0.80571 0.69007 "
+"0.37915 0.70571 0.72571 0.72538 0.45714 0.72966 0.54286 0.74152 0.62286 0.74152 70 "
+"3 13 1 5 4 15 4 11 15 19 8 "
+"2 13 3 7 13 0 1 14 0 12 "
+"20 22 24 0 14 2 12 0 13 13 7 "
+"17 11 4 6 19 2 14 17 10 21 "
+"7 10 17 11 18 15 16 22 20 8 19 "
+"9 15 23 21 15 21 10 23 25 27 "
+"9 19 16 19 22 16 23 15 25 24 26 "
+"28 27 25 30 25 15 18 30 25 36 "
+"32 28 26 26 24 22 29 32 26 39 38 "
+"31 38 35 29 32 29 35 31 38 29 "
+"39 34 40 33 39 31 39 33 34 36 41 "
+"37 40 37 41 37 40 34 41 36 25 "
+"41 45 46 43 44 47 47 48 54 48 47 "
+"44 50 49 46 41 25 45 50 46 45 "
+"42 48 44 49 64 51 52 53 55 52 65 "
+"63 65 52 55 52 61 48 52 63 61 "
+"58 49 50 49 58 62 69 60 56 49 62 "
+"64 54 48 61 57 67 65 57 65 55 "
+"51 66 56 69 59 60 66 51 64 68 67 "
+"57 59 69 57 69 68 57 69 56 66 "
+;
+
+char *VTK_VECTOR_TEXT_98 = (char *) "49 0.932518 "
+"0.61143 -0.09009 0.50286 -0.07823 0.36000 -0.07186 0.24000 -0.06878 0.72000 -0.06213 "
+"0.45714 -0.05914 0.77143 -0.03188 0.36571 0.01806 0.59429 0.02193 0.83543 0.02571 "
+"0.52000 0.02823 0.66857 0.04645 0.46857 0.05179 0.42704 0.08857 0.72956 0.10000 "
+"0.88784 0.10571 0.39216 0.14000 0.75641 0.14000 0.91470 0.18000 0.37462 0.19143 "
+"0.78665 0.23714 0.36152 0.28857 0.93252 0.29429 0.79236 0.36857 0.93252 0.37429 "
+"0.36420 0.38000 0.77294 0.47714 0.39216 0.50000 0.90899 0.50000 0.42473 0.55143 "
+"0.73143 0.55546 0.88657 0.55714 0.45883 0.58571 0.67429 0.60498 0.50857 0.61641 "
+"0.63429 0.62252 0.56571 0.62991 0.37714 0.64118 0.83429 0.63841 0.37315 0.64857 "
+"0.80571 0.66686 0.74286 0.70784 0.46857 0.71355 0.68571 0.72899 0.56571 0.74109 "
+"0.61714 0.74152 0.24265 1.02571 0.37143 1.02307 0.36571 1.02723 49 3 25 46 5 1 10 5 12 7 8 0 4 11 6 14 11 "
+"4 6 0 8 1 2 7 3 8 4 11 10 1 8 21 3 19 12 13 7 12 "
+"5 10 14 9 17 9 14 6 17 15 20 16 7 13 15 18 20 15 17 9 3 "
+"7 19 22 20 18 20 22 23 28 26 23 22 24 23 25 3 21 30 43 33 39 "
+"46 25 28 23 24 27 39 25 26 31 30 7 16 19 31 26 28 37 32 42 39 "
+"27 37 40 30 38 29 37 27 38 30 31 35 33 43 32 34 42 35 45 36 37 "
+"29 32 42 34 36 45 35 43 43 30 41 41 30 40 36 45 44 42 36 44 47 "
+"48 46 39 47 46 "
+;
+
+char *VTK_VECTOR_TEXT_99 = (char *) "58 0.894057 "
+"0.53143 -0.08966 0.59429 -0.08966 0.45714 -0.07673 0.68000 -0.07294 0.72571 -0.05343 "
+"0.37714 -0.04331 0.33714 -0.01543 0.78857 -0.01011 0.58286 0.02152 0.29143 0.03016 "
+"0.49625 0.03143 0.62857 0.03034 0.83107 0.03714 0.45714 0.04943 0.69270 0.06571 "
+"0.26241 0.07143 0.85714 0.07873 0.40457 0.09429 0.72722 0.10571 0.37629 0.14000 "
+"0.74437 0.14000 0.22899 0.14571 0.37184 0.15143 0.36930 0.15714 0.88571 0.15295 "
+"0.89406 0.19714 0.76571 0.21540 0.21034 0.22571 0.34705 0.25429 0.20420 0.36286 "
+"0.34478 0.36857 0.21673 0.45429 0.36252 0.47143 0.75429 0.47269 0.88058 0.48857 "
+"0.88319 0.49429 0.38371 0.52286 0.23849 0.52857 0.72000 0.55200 0.86437 0.55714 "
+"0.43025 0.58000 0.69714 0.58127 0.28527 0.61429 0.47429 0.60943 0.48571 0.61387 "
+"0.83473 0.61429 0.49143 0.61641 0.63429 0.62041 0.54857 0.62950 0.58857 0.62991 "
+"0.81296 0.64286 0.32168 0.65429 0.35429 0.67964 0.76571 0.68535 0.44571 0.72327 "
+"0.67429 0.72816 0.53714 0.74109 0.60000 0.74109 56 2 13 5 0 8 2 11 4 14 "
+"1 8 0 3 11 1 15 23 21 2 10 "
+"13 11 8 1 11 3 4 7 14 4 "
+"10 2 8 14 7 18 17 6 13 6 5 "
+"13 17 15 9 18 12 20 7 12 18 "
+"17 9 6 16 20 12 24 20 16 19 15 "
+"17 15 19 23 23 19 22 27 28 29 "
+"26 20 24 26 24 25 21 28 27 28 21 "
+"23 29 30 31 28 30 29 31 32 37 "
+"39 38 33 34 39 33 32 31 30 37 32 "
+"36 55 49 47 37 36 42 51 42 36 "
+"34 35 39 45 41 38 52 40 43 46 43 "
+"44 50 41 45 56 49 57 40 51 36 "
+"51 40 52 45 38 39 52 43 54 47 41 "
+"53 54 46 48 56 48 49 53 41 50 "
+"54 48 56 54 43 46 57 49 55 55 47 "
+"53 "
+;
+
+char *VTK_VECTOR_TEXT_100 = (char *) "48 0.885714 "
+"0.51429 -0.09009 0.56571 -0.08966 0.62857 -0.07673 0.76571 -0.07186 0.88571 -0.06878 "
+"0.41143 -0.06486 0.67429 -0.05641 0.36000 -0.03669 0.30286 0.01025 0.76000 0.01806 "
+"0.53714 0.02152 0.49714 0.02891 0.60571 0.02891 0.68127 0.07143 0.41714 0.07561 "
+"0.23787 0.10571 0.71579 0.11143 0.38241 0.11714 0.74135 0.16286 0.21395 0.16857 "
+"0.74286 0.16739 0.74538 0.17429 0.34605 0.20286 0.76420 0.27714 0.19277 0.28857 "
+"0.33295 0.28857 0.19277 0.36286 0.76152 0.38571 0.33563 0.39714 0.73355 0.50000 "
+"0.22135 0.51143 0.36784 0.51714 0.69714 0.55841 0.42286 0.58686 0.26857 0.60793 "
+"0.63429 0.60943 0.48571 0.62151 0.56571 0.62950 0.74857 0.64048 0.75269 0.64857 "
+"0.30857 0.65582 0.65714 0.71355 0.40571 0.71756 0.50286 0.74109 0.55429 0.74152 "
+"0.75693 1.02571 0.88571 1.02307 0.88000 1.02723 48 0 11 5 12 6 13 "
+"1 2 12 7 14 8 10 0 1 14 7 "
+"5 10 1 12 6 12 2 0 10 11 "
+"8 17 15 9 16 13 14 5 11 4 9 "
+"3 6 9 13 9 4 18 16 9 18 "
+"15 22 19 17 8 14 22 15 17 20 18 "
+"21 21 18 4 19 25 24 21 4 23 "
+"25 19 22 26 24 25 26 28 30 39 27 "
+"4 26 25 28 39 38 29 29 38 32 "
+"27 39 29 30 31 34 32 38 35 31 30 "
+"28 40 34 31 36 42 33 23 4 27 "
+"35 41 37 33 40 31 40 33 42 41 35 "
+"38 42 36 43 37 43 36 44 37 41 "
+"37 44 43 46 47 45 39 4 45 4 46 "
+"45 "
+;
+
+char *VTK_VECTOR_TEXT_101 = (char *) "65 0.934539 "
+"0.54857 -0.09009 0.61143 -0.09009 0.45714 -0.07462 0.71429 -0.07101 0.40571 -0.05641 "
+"0.77714 -0.04331 0.33714 -0.01543 0.82857 -0.00670 0.29714 0.02154 0.56000 0.02152 "
+"0.60571 0.02193 0.49714 0.03563 0.68159 0.04286 0.88150 0.05429 0.45714 0.05514 "
+"0.26286 0.06636 0.72000 0.06759 0.40457 0.10000 0.91216 0.11143 0.77229 0.13429 "
+"0.37057 0.15143 0.22034 0.15714 0.36613 0.16286 0.92834 0.16286 0.36359 0.16857 "
+"0.91429 0.16966 0.79429 0.18111 0.35177 0.20286 0.20462 0.22571 0.33866 0.28286 "
+"0.34286 0.28900 0.93454 0.29429 0.19848 0.35714 0.93295 0.39714 0.34857 0.40134 "
+"0.78857 0.40134 0.34134 0.40857 0.79580 0.40857 0.20462 0.41429 0.35429 0.47261 "
+"0.22327 0.49429 0.91429 0.48975 0.77143 0.50661 0.38857 0.54057 0.74857 0.54629 "
+"0.40725 0.56286 0.25714 0.57001 0.71429 0.58154 0.87070 0.58571 0.45143 0.59759 "
+"0.68000 0.60498 0.29296 0.62000 0.49143 0.61681 0.63429 0.62252 0.54857 0.62950 "
+"0.59429 0.62991 0.33311 0.66000 0.81143 0.65543 0.77143 0.68607 0.41143 0.70930 "
+"0.72000 0.71355 0.45714 0.72605 0.66857 0.73050 0.54286 0.74152 0.60000 0.74152 65 0 9 11 10 "
+"1 3 10 3 12 5 12 3 17 8 6 10 0 1 0 11 2 4 14 6 0 "
+"10 9 7 16 5 5 16 12 14 2 11 16 7 19 14 4 2 15 8 17 26 "
+"18 25 17 6 14 15 27 21 7 13 19 23 25 18 20 15 17 26 19 18 18 "
+"19 13 24 20 22 15 20 24 15 24 27 21 27 28 28 29 32 33 37 35 29 "
+"28 27 32 29 38 35 34 30 40 39 46 33 35 30 31 33 30 36 38 29 36 "
+"29 34 37 41 42 40 38 36 30 34 29 39 40 36 41 37 33 46 43 51 51 "
+"49 56 42 48 44 48 42 41 44 48 47 49 51 45 43 46 39 56 49 59 50 "
+"62 53 57 47 48 64 55 53 45 51 43 55 63 54 58 47 57 62 50 60 59 "
+"52 61 59 49 52 47 60 50 61 54 63 60 47 58 61 52 54 64 53 62 55 "
+"64 63 "
+;
+
+char *VTK_VECTOR_TEXT_102 = (char *) "24 0.617143 "
+"0.28000 -0.07186 0.40571 -0.07186 0.27472 0.61429 0.41100 0.61429 0.16571 0.61957 "
+"0.56000 0.61957 0.56420 0.71714 0.16571 0.72329 0.27472 0.72857 0.41100 0.72857 "
+"0.56000 0.72329 0.41034 0.83143 0.27580 0.86000 0.43429 0.89555 0.28613 0.91714 "
+"0.46286 0.91294 0.50286 0.92134 0.60000 0.91830 0.31107 0.96857 0.34286 1.00099 "
+"0.38857 1.02784 0.61714 1.03086 0.46286 1.04395 0.52571 1.04437 22 0 3 2 "
+"3 0 1 4 8 7 9 3 5 2 3 "
+"8 5 6 10 4 2 8 9 8 3 "
+"8 11 12 11 8 9 12 11 14 9 5 "
+"10 13 19 18 13 18 14 13 14 11 "
+"23 15 16 15 23 22 21 23 17 15 20 "
+"13 19 13 20 20 15 22 23 16 17 "
+;
+
+char *VTK_VECTOR_TEXT_103 = (char *) "71 0.892518 "
+"0.46857 -0.39295 0.56571 -0.39563 0.66286 -0.37959 0.35429 -0.36200 0.74286 -0.34616 "
+"0.28571 -0.31868 0.80368 -0.30000 0.50857 -0.28437 0.62286 -0.27395 0.44571 -0.27101 "
+"0.23387 -0.24286 0.84657 -0.24286 0.69200 -0.23714 0.38171 -0.23143 0.72150 -0.20286 "
+"0.87177 -0.18000 0.34916 -0.15714 0.74899 -0.14000 0.22286 -0.13957 0.50857 -0.07295 "
+"0.56000 -0.07295 0.43429 -0.05959 0.65143 -0.05070 0.37143 -0.03355 0.69714 -0.02527 "
+"0.89252 -0.00857 0.74857 0.01873 0.75042 0.02000 0.75756 0.02000 0.75429 0.02333 "
+"0.29143 0.03381 0.53143 0.03866 0.57143 0.03907 0.47429 0.05216 0.64000 0.05787 "
+"0.41714 0.08704 0.68000 0.08439 0.23216 0.12857 0.38036 0.12857 0.72784 0.14000 "
+"0.35277 0.18571 0.20530 0.20857 0.75538 0.20857 0.19320 0.28286 0.33295 0.29429 "
+"0.76991 0.35714 0.19277 0.37429 0.33563 0.40857 0.75109 0.47143 0.35109 0.47714 "
+"0.21143 0.47832 0.72784 0.52286 0.23787 0.55143 0.39044 0.55143 0.69868 0.56286 "
+"0.66286 0.59393 0.27107 0.60857 0.45143 0.60498 0.48571 0.62041 0.56571 0.62991 "
+"0.57714 0.62764 0.58286 0.62723 0.76571 0.63477 0.32000 0.66384 0.68571 0.70213 "
+"0.39429 0.71229 0.77408 0.72286 0.88878 0.72286 0.62857 0.72816 0.46857 0.73580 "
+"0.56000 0.74152 71 1 7 0 8 4 12 2 8 1 0 "
+"9 3 7 1 8 5 13 10 9 0 7 13 5 3 8 2 4 6 14 12 6 "
+"12 4 11 15 17 11 14 6 13 3 9 14 11 17 10 16 18 16 10 13 17 "
+"25 28 23 21 33 22 32 20 32 19 20 35 23 33 19 31 21 23 35 30 31 "
+"19 32 32 22 34 26 29 36 17 15 25 33 21 31 26 36 24 24 34 22 26 "
+"27 29 36 34 24 36 29 39 30 38 37 39 28 25 39 29 28 37 40 41 38 "
+"40 37 30 35 38 39 25 42 44 46 43 44 43 41 44 41 40 42 25 45 67 "
+"51 48 46 47 50 67 48 45 47 46 44 50 49 52 49 50 47 67 62 51 62 "
+"54 51 56 52 49 54 62 55 55 64 61 60 61 59 53 56 49 56 53 63 63 "
+"57 65 65 58 69 65 57 58 70 59 61 59 69 58 64 55 62 67 45 25 67 "
+"66 62 63 53 57 68 70 61 59 70 69 64 68 61 "
+;
+
+char *VTK_VECTOR_TEXT_104 = (char *) "27 0.889502 "
+"0.24571 -0.07186 0.37143 -0.07186 0.76000 -0.07186 0.88571 -0.07186 0.37605 0.40286 "
+"0.37756 0.40857 0.75538 0.46000 0.88950 0.47714 0.38899 0.48286 0.74538 0.51714 "
+"0.88152 0.54571 0.42439 0.55143 0.72000 0.56914 0.47429 0.59355 0.68000 0.60331 "
+"0.85996 0.61429 0.53143 0.61748 0.61143 0.62379 0.37714 0.63983 0.81714 0.67296 "
+"0.45714 0.70045 0.77714 0.70213 0.50857 0.72437 0.68571 0.73538 0.58857 0.74152 "
+"0.24571 1.02615 0.37143 1.02615 25 0 "
+"4 25 4 18 25 6 2 3 9 6 7 7 6 3 18 8 11 18 11 13 9 "
+"15 12 12 19 14 10 9 7 18 13 20 8 4 5 15 9 10 4 0 1 18 "
+"4 8 17 24 16 19 21 14 14 23 17 20 16 22 16 20 13 19 12 15 17 "
+"23 24 23 14 21 24 22 16 18 26 25 "
+;
+
+char *VTK_VECTOR_TEXT_105 = (char *) "8 0.377143 "
+"0.25143 -0.07186 0.37714 -0.07186 0.25143 0.72329 0.37714 0.72329 0.25143 0.87403 "
+"0.37714 0.87403 0.25143 1.02615 0.37714 1.02615 4 3 2 0 3 0 "
+"1 4 5 6 7 6 5 "
+;
+
+char *VTK_VECTOR_TEXT_106 = (char *) "18 0.375625 "
+"0.14857 -0.39563 0.22286 -0.39252 0.07383 -0.38000 0.26857 -0.37914 0.31429 -0.34989 "
+"0.34036 -0.31714 0.18857 -0.27462 0.10286 -0.26950 0.36109 -0.26571 0.22331 -0.24857 "
+"0.37563 -0.16857 0.24152 -0.16286 0.24571 0.72329 0.37143 0.72329 0.24571 0.87403 "
+"0.37143 0.87403 0.24571 1.02615 0.37143 1.02615 14 1 6 0 3 6 1 4 6 "
+"3 9 10 11 7 0 6 7 2 0 "
+"9 5 8 5 9 4 6 4 9 9 8 "
+"10 11 10 12 13 12 10 14 15 16 "
+"17 16 15 "
+;
+
+char *VTK_VECTOR_TEXT_107 = (char *) "15 0.897876 "
+"0.37450 -0.07143 0.89788 -0.07143 0.24571 -0.06878 0.73714 -0.07035 0.38004 0.24286 "
+"0.68421 0.25429 0.68045 0.26000 0.68000 0.26064 0.46857 0.32924 0.38286 0.40888 "
+"0.57152 0.42571 0.69714 0.72283 0.86359 0.72286 0.24836 1.02571 0.37714 1.02307 13 2 9 13 4 2 0 5 8 3 5 "
+"3 1 5 6 7 9 14 13 11 9 10 5 7 8 7 10 8 8 9 4 12 "
+"11 10 9 8 10 2 4 9 "
+;
+
+char *VTK_VECTOR_TEXT_108 = (char *) "4 0.371429 "
+"0.36878 -0.07143 0.24000 -0.06878 0.24265 1.02571 0.37143 1.02307 2 1 3 2 3 1 0 "
+;
+
+char *VTK_VECTOR_TEXT_109 = (char *) "45 1.318074 "
+"0.24571 -0.07186 0.37143 -0.07186 0.72000 -0.07295 1.18857 -0.07186 1.31429 -0.07186 "
+"0.71429 -0.06878 0.84571 -0.06878 0.37866 0.37429 0.84723 0.40286 0.85335 0.46000 "
+"0.39109 0.48286 0.71277 0.48286 1.18437 0.48286 1.31807 0.52286 0.87787 0.53429 "
+"0.41143 0.53493 1.17395 0.54000 0.43582 0.56857 0.68784 0.56857 1.14857 0.58403 "
+"0.93143 0.59188 0.66286 0.59829 0.82857 0.60801 0.51009 0.61429 0.36571 0.61924 "
+"0.63429 0.61470 1.09714 0.61580 1.29355 0.62000 0.56000 0.62420 1.00571 0.62152 "
+"1.06286 0.62379 0.41311 0.67143 0.78857 0.66975 1.25561 0.67714 0.90857 0.68902 "
+"0.74286 0.70784 1.20571 0.71355 0.35735 0.72286 0.24571 0.72329 0.50286 0.72498 "
+"0.99429 0.73109 1.16000 0.73109 0.67429 0.73470 0.57714 0.74109 1.05143 0.74152 43 6 5 2 0 7 38 8 11 5 7 0 1 8 5 6 12 3 4 12 "
+"13 16 9 11 8 15 17 24 11 22 18 22 20 34 11 9 22 14 22 9 13 "
+"12 4 24 17 31 7 10 38 10 15 24 16 27 19 32 21 18 24 37 38 20 "
+"22 14 10 24 38 27 16 13 31 23 39 26 41 30 30 40 29 32 18 22 41 "
+"19 36 34 29 40 19 41 26 36 19 33 23 31 17 35 21 32 29 34 20 39 "
+"28 43 33 19 27 43 28 42 25 42 28 28 39 23 42 25 21 42 21 35 44 "
+"30 41 30 44 40 "
+;
+
+char *VTK_VECTOR_TEXT_110 = (char *) "38 0.889911 "
+"0.24571 -0.07186 0.37143 -0.07186 0.75429 -0.07186 0.88571 -0.07186 0.24152 -0.06571 "
+"0.37563 -0.06571 0.75009 -0.06571 0.88991 -0.06571 0.37605 0.40286 0.37866 0.41429 "
+"0.38134 0.44857 0.74665 0.48286 0.88950 0.48286 0.39849 0.51143 0.73229 0.54000 "
+"0.88420 0.54000 0.43011 0.56286 0.46286 0.58893 0.69714 0.58725 0.87008 0.59143 "
+"0.51580 0.61429 0.65143 0.61343 0.36571 0.62031 0.56571 0.62420 0.60571 0.62379 "
+"0.61714 0.62152 0.62286 0.62109 0.83955 0.64857 0.40725 0.66571 0.79429 0.69179 "
+"0.45714 0.70213 0.24152 0.71714 0.75429 0.71355 0.35735 0.72286 0.24571 0.72329 "
+"0.52571 0.73050 0.68571 0.73538 0.58857 0.74152 36 1 4 0 "
+"3 6 2 1 5 4 3 7 6 6 12 "
+"11 11 15 14 6 7 12 22 16 28 "
+"10 8 9 13 22 10 10 22 8 8 4 "
+"5 15 11 12 8 22 4 14 15 19 "
+"14 19 18 25 26 24 16 22 13 16 17 "
+"28 30 28 17 27 18 19 32 23 24 "
+"29 18 27 30 20 35 18 32 21 31 4 "
+"22 20 30 17 32 26 21 32 24 26 "
+"32 18 29 34 31 33 33 31 22 35 23 "
+"37 23 35 20 36 23 32 37 23 36 "
+;
+
+char *VTK_VECTOR_TEXT_111 = (char *) "65 0.938661 "
+"0.53143 -0.08966 0.59429 -0.09009 0.69143 -0.07101 0.41143 -0.06213 0.76571 -0.03759 "
+"0.34857 -0.02821 0.81714 -0.00099 0.29143 0.02154 0.54286 0.02193 0.60571 0.02420 "
+"0.50857 0.02823 0.64571 0.03563 0.86331 0.04857 0.45143 0.05216 0.25714 0.06636 "
+"0.70857 0.07330 0.89229 0.09429 0.40000 0.09597 0.22771 0.12286 0.38036 0.12286 "
+"0.37714 0.12793 0.37669 0.12857 0.75473 0.12857 0.76657 0.15143 0.77101 0.16286 "
+"0.77355 0.16857 0.92319 0.18000 0.20764 0.18571 0.34816 0.19714 0.78605 0.20857 "
+"0.33563 0.26000 0.19320 0.28286 0.93823 0.28857 0.79848 0.29429 0.33295 0.36286 "
+"0.93866 0.37429 0.19580 0.39714 0.79538 0.39714 0.35277 0.47143 0.92319 0.47143 "
+"0.21184 0.48286 0.77143 0.48947 0.23216 0.54000 0.38742 0.54000 0.89927 0.54000 "
+"0.74286 0.54057 0.71429 0.57275 0.42286 0.57813 0.87678 0.58000 0.27429 0.60984 "
+"0.48571 0.61580 0.64571 0.61580 0.54286 0.62950 0.58857 0.62950 0.60000 0.62723 "
+"0.60571 0.62680 0.83225 0.63714 0.31025 0.64857 0.34857 0.67864 0.75429 0.69641 "
+"0.40000 0.70784 0.45143 0.72605 0.68571 0.72538 0.53714 0.74152 0.60000 0.74109 65 11 4 15 8 "
+"0 1 17 7 5 11 2 4 2 9 1 8 1 9 0 8 10 0 10 3 2 "
+"11 9 3 13 5 10 13 3 6 12 22 6 15 4 15 6 22 18 28 27 17 "
+"5 13 14 19 18 16 23 22 19 7 17 7 19 14 18 19 21 24 23 25 25 "
+"23 16 19 20 21 16 22 12 26 29 25 27 30 31 26 25 16 28 18 21 29 "
+"26 33 30 27 28 31 34 36 33 32 35 26 32 33 34 31 30 33 35 37 40 "
+"36 34 37 39 41 40 38 42 39 37 35 47 57 43 38 40 34 43 49 42 46 "
+"45 56 39 44 41 41 48 45 43 57 49 41 44 48 43 42 38 57 47 58 54 "
+"55 53 56 45 48 50 60 47 64 63 53 64 55 62 53 63 52 59 62 51 61 "
+"60 50 64 53 55 51 62 55 52 61 50 59 46 56 61 52 63 46 59 51 58 "
+"47 60 "
+;
+
+char *VTK_VECTOR_TEXT_112 = (char *) "49 0.935625 "
+"0.24571 -0.37740 0.37454 -0.37429 0.56000 -0.08966 0.66857 -0.07966 0.47429 -0.06657 "
+"0.75429 -0.04331 0.37584 -0.00286 0.80571 -0.00704 0.38286 0.00159 0.59429 0.02152 "
+"0.52000 0.02891 0.63429 0.02992 0.85964 0.05429 0.45143 0.06725 0.70857 0.07330 "
+"0.39787 0.13429 0.39514 0.14000 0.39216 0.14571 0.76213 0.14571 0.90538 0.14571 "
+"0.37462 0.19714 0.78327 0.20857 0.92680 0.22571 0.36379 0.27143 0.36152 0.28286 "
+"0.79580 0.29429 0.93563 0.30000 0.36379 0.36857 0.79580 0.36857 0.92680 0.43714 "
+"0.78286 0.45547 0.38286 0.47232 0.75429 0.52921 0.41714 0.54057 0.88571 0.56444 "
+"0.44571 0.57582 0.69143 0.59964 0.51429 0.62213 0.65143 0.62213 0.36571 0.63051 "
+"0.56571 0.63563 0.82704 0.64857 0.45714 0.70784 0.74857 0.70657 0.24571 0.72329 "
+"0.36000 0.72329 0.51429 0.73177 0.69143 0.72899 0.62286 0.74152 49 0 1 6 0 24 44 3 9 2 2 10 4 3 11 9 4 "
+"13 8 10 2 9 11 5 14 11 3 5 7 14 5 4 10 13 14 12 18 14 "
+"7 12 0 20 24 15 8 13 8 15 6 19 18 12 18 19 21 21 22 25 24 "
+"27 44 17 15 16 22 21 19 28 25 26 22 26 25 6 15 17 29 30 28 23 "
+"24 20 20 6 17 29 28 26 30 34 32 27 31 44 0 6 20 31 39 44 32 "
+"41 36 41 32 34 31 33 39 42 37 46 39 35 42 34 30 29 39 33 35 38 "
+"47 40 35 37 42 47 38 43 40 46 37 43 36 41 39 45 44 46 40 48 48 "
+"40 47 38 36 43 "
+;
+
+char *VTK_VECTOR_TEXT_113 = (char *) "52 0.885714 "
+"0.76000 -0.37740 0.88571 -0.37740 0.56571 -0.09009 0.45143 -0.07673 0.65143 -0.06784 "
+"0.36000 -0.03188 0.70857 -0.03465 0.75580 -0.00286 0.74857 0.00454 0.29714 0.02418 "
+"0.54286 0.02152 0.57714 0.02193 0.58857 0.02420 0.59429 0.02462 0.47429 0.03927 "
+"0.64571 0.04371 0.43302 0.06571 0.70670 0.09429 0.23914 0.11143 0.38607 0.11714 "
+"0.38286 0.12221 0.38241 0.12286 0.75008 0.17429 0.21101 0.19143 0.34748 0.20857 "
+"0.76723 0.25429 0.19848 0.26000 0.76723 0.27143 0.33605 0.28286 0.76991 0.28857 "
+"0.19580 0.37429 0.33866 0.40286 0.75429 0.45277 0.21101 0.47143 0.35429 0.47832 "
+"0.73143 0.51301 0.39846 0.56286 0.69296 0.56857 0.25669 0.58571 0.45143 0.60902 "
+"0.61714 0.62213 0.49143 0.62723 0.76571 0.62602 0.29330 0.63714 0.56571 0.63522 "
+"0.72403 0.67143 0.36571 0.69641 0.66286 0.71355 0.77408 0.72286 0.88571 0.72329 "
+"0.44571 0.72966 0.56000 0.74152 52 29 27 25 "
+"49 42 32 22 7 25 3 13 11 2 13 "
+"3 4 13 2 6 15 4 11 13 12 "
+"3 14 5 13 4 15 10 3 11 15 6 "
+"8 14 3 10 15 8 17 24 23 18 "
+"5 16 9 17 8 22 14 16 5 9 19 "
+"18 19 20 21 18 19 21 42 35 32 "
+"7 22 8 16 19 9 49 48 42 7 0 "
+"1 24 18 21 23 24 26 26 28 30 "
+"28 26 24 30 31 33 34 33 31 31 30 "
+"28 33 34 38 49 29 25 36 43 38 "
+"49 25 7 35 42 37 37 45 40 45 37 "
+"42 29 49 32 45 47 40 39 43 36 "
+"46 39 50 40 47 44 43 39 46 36 38 "
+"34 41 44 51 41 50 39 49 7 1 "
+"50 41 51 51 44 47 "
+;
+
+char *VTK_VECTOR_TEXT_114 = (char *) "24 0.667686 "
+"0.24571 -0.07186 0.37143 -0.07186 0.24152 -0.06571 0.37563 -0.06571 0.37563 0.38000 "
+"0.39748 0.50000 0.41964 0.54571 0.44740 0.57429 0.61714 0.57787 0.62286 0.57880 "
+"0.48000 0.59294 0.57714 0.59395 0.51429 0.60134 0.36571 0.61385 0.41868 0.68857 "
+"0.66769 0.69429 0.66542 0.70000 0.24152 0.71714 0.35735 0.72286 0.24571 0.72329 "
+"0.46286 0.72436 0.60000 0.73109 0.51429 0.74109 0.55429 0.74109 22 1 2 0 "
+"1 3 2 4 2 3 5 6 13 5 13 "
+"17 21 11 15 2 4 17 4 5 17 "
+"6 7 13 18 17 13 7 10 14 13 7 "
+"14 14 12 20 11 21 12 9 15 11 "
+"12 14 10 19 17 18 20 12 22 8 9 "
+"11 21 15 16 22 12 23 23 12 21 "
+;
+
+char *VTK_VECTOR_TEXT_115 = (char *) "63 0.849502 "
+"0.56000 -0.09009 0.46286 -0.08705 0.65143 -0.07395 0.37143 -0.06723 0.70444 -0.05429 "
+"0.33143 -0.04943 0.76057 -0.02000 0.28571 -0.01813 0.79582 0.01429 0.50286 0.02152 "
+"0.55429 0.02152 0.56571 0.02379 0.57714 0.02420 0.24571 0.02636 0.64000 0.04200 "
+"0.41714 0.04371 0.22200 0.06571 0.38286 0.06725 0.68384 0.07714 0.83580 0.08286 "
+"0.69927 0.10000 0.34200 0.12286 0.84950 0.14000 0.71009 0.15714 0.19109 0.16286 "
+"0.19370 0.16857 0.32000 0.18615 0.69864 0.19143 0.84723 0.20286 0.65714 0.22784 "
+"0.83641 0.24286 0.80956 0.28857 0.34286 0.32371 0.75429 0.33641 0.30286 0.34421 "
+"0.69143 0.36327 0.25714 0.38445 0.22645 0.43714 0.41143 0.44538 0.37587 0.46571 "
+"0.35885 0.48286 0.21295 0.49429 0.69143 0.50460 0.34478 0.51714 0.81977 0.52286 "
+"0.67514 0.55143 0.35216 0.56286 0.22034 0.56857 0.64000 0.59465 0.38286 0.59829 "
+"0.79429 0.61016 0.24000 0.61573 0.42857 0.62041 0.58286 0.62252 0.48571 0.62991 "
+"0.74689 0.67143 0.28571 0.67258 0.70286 0.70045 0.33714 0.70613 0.38857 0.72538 "
+"0.61714 0.73050 0.47429 0.74109 0.54286 0.74109 61 2 12 0 10 1 12 12 2 14 14 4 6 7 17 13 0 "
+"12 1 4 14 2 11 10 12 15 3 1 3 15 5 9 1 10 14 6 18 15 "
+"1 9 17 5 15 6 8 18 5 17 7 21 16 13 16 21 24 18 8 20 23 "
+"28 27 21 13 17 19 22 23 26 25 21 21 25 24 20 19 23 19 20 8 28 "
+"23 22 27 33 29 28 30 27 31 27 30 27 31 33 29 38 32 35 29 33 29 "
+"35 38 34 38 36 32 38 34 36 40 37 39 36 38 41 43 47 43 41 37 36 "
+"39 40 50 45 42 43 37 40 47 46 51 46 47 43 53 60 54 45 57 48 52 "
+"58 49 45 55 57 51 49 56 49 51 46 50 42 44 48 57 53 56 49 58 55 "
+"45 50 52 59 58 59 52 61 52 54 61 60 53 57 61 54 62 62 54 60 "
+;
+
+char *VTK_VECTOR_TEXT_116 = (char *) "24 0.551972 "
+"0.42286 -0.08395 0.48000 -0.08437 0.55197 -0.07143 0.33714 -0.05914 0.29901 -0.02571 "
+"0.28041 0.00857 0.44571 0.04816 0.44453 0.04857 0.53714 0.04344 0.44000 0.05008 "
+"0.41057 0.07714 0.26748 0.10000 0.40152 0.11714 0.26597 0.61429 0.40260 0.61429 "
+"0.17143 0.61957 0.53450 0.62000 0.53866 0.71714 0.53450 0.72286 0.17143 0.72329 "
+"0.26597 0.72857 0.40260 0.72857 0.26748 0.91714 0.40000 0.99545 22 10 5 4 "
+"6 7 9 10 4 3 10 3 9 8 6 "
+"1 6 9 1 5 10 11 8 1 2 "
+"0 9 3 11 12 13 0 1 9 10 12 "
+"11 17 18 16 14 13 12 21 14 16 "
+"18 21 16 22 20 23 20 13 14 15 20 "
+"19 15 13 20 20 14 21 23 20 21 "
+;
+
+char *VTK_VECTOR_TEXT_117 = (char *) "38 0.884197 "
+"0.48571 -0.09009 0.53714 -0.09009 0.41714 -0.07673 0.77143 -0.07295 0.88000 -0.07186 "
+"0.63518 -0.06571 0.76571 -0.06878 0.88420 -0.06571 0.34857 -0.04771 0.70857 -0.01846 "
+"0.29901 -0.00857 0.27429 0.02730 0.52000 0.02723 0.56000 0.02764 0.47339 0.03714 "
+"0.76000 0.03684 0.61714 0.04135 0.43943 0.05429 0.65143 0.05787 0.41330 0.07714 "
+"0.25143 0.08437 0.69143 0.08704 0.39343 0.10571 0.38899 0.11714 0.71473 0.11714 "
+"0.38645 0.12286 0.73294 0.15714 0.23848 0.17429 0.37563 0.17429 0.75009 0.26000 "
+"0.23848 0.71714 0.37295 0.71714 0.75009 0.71714 0.88420 0.71714 0.24265 0.72286 "
+"0.36878 0.72286 0.75429 0.72329 0.88000 0.72329 36 6 3 15 "
+"3 7 15 3 4 7 8 17 10 2 14 "
+"17 2 17 8 5 13 1 19 11 10 "
+"9 16 5 12 1 13 0 12 2 12 0 "
+"1 9 18 16 13 5 16 14 2 12 "
+"11 22 20 21 18 9 15 21 9 21 15 "
+"24 20 28 27 11 19 22 24 7 26 "
+"19 10 17 24 15 7 25 22 23 20 22 "
+"25 20 25 28 26 7 29 31 30 27 "
+"33 29 7 34 31 35 34 30 31 31 27 "
+"28 36 33 37 32 29 33 36 32 33 "
+;
+
+char *VTK_VECTOR_TEXT_118 = (char *) "12 0.884203 "
+"0.45714 -0.06947 0.58857 -0.07103 0.52000 0.09808 0.52571 0.09808 0.47580 0.23714 "
+"0.16151 0.71714 0.88420 0.71714 0.16427 0.72286 0.30286 0.71951 0.74857 0.72090 "
+"0.88145 0.72286 0.29714 0.72395 10 4 0 "
+"2 0 4 5 3 2 0 1 3 0 "
+"3 6 9 8 11 5 9 6 10 7 5 "
+"11 8 5 4 3 1 6 "
+;
+
+char *VTK_VECTOR_TEXT_119 = (char *) "14 1.231638 "
+"0.39429 -0.07215 0.52571 -0.07215 0.97714 -0.07252 0.84571 -0.06947 0.45714 0.10650 "
+"0.46286 0.10650 0.92000 0.12073 0.69143 0.52785 0.15122 0.72286 0.28571 0.72090 "
+"0.62857 0.72243 0.76193 0.72286 1.23164 0.72286 1.10857 0.72329 12 "
+"2 6 3 0 4 8 3 6 7 5 0 "
+"1 12 13 6 5 4 0 7 10 5 "
+"11 10 7 7 5 1 11 7 6 4 9 "
+"8 12 6 2 "
+;
+
+char *VTK_VECTOR_TEXT_120 = (char *) "17 0.882498 "
+"0.15697 -0.07143 0.88073 -0.07143 0.15473 -0.06571 0.31429 -0.07035 0.72571 -0.07140 "
+"0.88250 -0.06571 0.52000 0.22529 0.52571 0.22529 0.60332 0.33429 0.43534 0.34000 "
+"0.51429 0.45005 0.17188 0.71714 0.86812 0.71714 0.17412 0.72286 0.86588 0.72286 "
+"0.32571 0.72395 0.71429 0.72395 15 1 5 4 2 6 9 8 6 7 3 2 0 4 8 7 6 2 3 4 "
+"5 8 8 10 6 10 9 6 15 11 9 16 10 8 15 9 10 12 16 8 13 "
+"11 15 16 12 14 "
+;
+
+char *VTK_VECTOR_TEXT_121 = (char *) "16 0.888063 "
+"0.34286 -0.39563 0.24000 -0.38043 0.41714 -0.37641 0.45714 -0.34956 0.50436 -0.29429 "
+"0.32000 -0.26680 0.22286 -0.25766 0.36652 -0.25429 0.54371 -0.22000 0.41293 -0.21429 "
+"0.46848 -0.07714 0.53714 0.09292 0.16998 0.72286 0.30857 0.71999 0.76000 0.72246 "
+"0.88806 0.72286 14 2 7 0 0 5 1 5 0 7 "
+"6 1 5 3 7 2 7 3 9 3 4 "
+"9 9 8 10 9 4 8 10 11 12 "
+"11 15 14 11 8 15 11 10 8 11 13 "
+"12 "
+;
+
+char *VTK_VECTOR_TEXT_122 = (char *) "17 0.872768 "
+"0.17714 -0.07295 0.86857 -0.07186 0.17143 -0.06878 0.87277 -0.06571 0.17146 0.03714 "
+"0.34212 0.03714 0.87277 0.03714 0.34132 0.04286 0.44000 0.04327 0.86857 0.04329 "
+"0.20571 0.61689 0.67062 0.62000 0.84991 0.64286 0.20152 0.71714 0.84991 0.71714 "
+"0.20571 0.72329 0.84571 0.72329 15 2 0 4 0 1 9 0 5 4 1 3 9 5 0 8 5 7 4 0 "
+"9 8 3 6 9 12 14 11 11 14 16 11 16 10 12 11 7 11 4 7 10 "
+"15 13 15 10 16 "
+;
+
+char *VTK_VECTOR_TEXT_123 = (char *) "39 0.611429 "
+"0.61143 -0.39454 0.46857 -0.38420 0.40000 -0.34154 0.61143 -0.27975 0.35748 -0.27143 "
+"0.52000 -0.26992 0.47787 -0.23143 0.46748 -0.19143 0.34134 -0.18000 0.46395 0.04286 "
+"0.33563 0.05429 0.45184 0.14571 0.32109 0.16286 0.29143 0.21832 0.42286 0.22716 "
+"0.25143 0.24943 0.18857 0.26528 0.39429 0.26698 0.31413 0.32286 0.18857 0.38615 "
+"0.25143 0.40073 0.41188 0.40286 0.29143 0.42775 0.43514 0.44286 0.32823 0.49429 "
+"0.45866 0.52286 0.34134 0.60286 0.46705 0.80857 0.34478 0.84857 0.47748 0.87143 "
+"0.35748 0.91143 0.50286 0.90821 0.50793 0.91143 0.50857 0.91188 0.61143 0.92814 "
+"0.40571 0.99511 0.46857 1.03294 0.53143 1.04437 0.61143 1.04329 37 0 3 5 6 2 5 2 6 4 0 5 1 2 "
+"1 5 4 7 8 7 4 6 8 9 10 10 11 12 9 8 7 11 10 9 12 "
+"17 13 12 14 17 14 12 11 18 15 13 16 15 20 18 13 17 16 20 19 15 "
+"18 20 21 22 18 22 21 24 22 20 18 24 25 26 23 24 21 25 24 23 26 "
+"27 28 27 26 25 28 29 30 29 28 27 30 29 35 31 32 33 36 31 33 31 "
+"36 29 36 33 37 34 38 37 35 29 36 34 37 33 "
+;
+
+char *VTK_VECTOR_TEXT_124 = (char *) "4 0.388571 "
+"0.28571 -0.39454 0.38857 -0.39563 0.28571 1.04329 0.38857 1.04437 2 3 2 0 3 0 1 "
+;
+
+char *VTK_VECTOR_TEXT_125 = (char *) "35 0.606299 "
+"0.17714 -0.39454 0.31429 -0.38613 0.39429 -0.33832 0.17714 -0.27975 0.27429 -0.26784 "
+"0.43681 -0.26000 0.31070 -0.23714 0.44950 -0.19714 0.32723 -0.15714 0.45295 0.04857 "
+"0.33295 0.11714 0.46857 0.16404 0.35387 0.19714 0.51429 0.23258 0.56000 0.25681 "
+"0.39429 0.26403 0.60630 0.26571 0.47702 0.32857 0.41714 0.36742 0.60571 0.38615 "
+"0.54857 0.39927 0.50171 0.43143 0.36086 0.43714 0.46748 0.50000 0.32991 0.56857 "
+"0.45252 0.78571 0.32723 0.80286 0.31748 0.87143 0.29143 0.90893 0.43470 0.91714 "
+"0.17714 0.92814 0.41629 0.95714 0.36571 1.01107 0.32000 1.03294 0.17714 1.04329 33 4 3 0 2 4 1 6 7 8 1 4 0 2 6 4 5 "
+"6 2 6 5 7 8 9 10 9 8 7 10 11 12 15 13 17 11 10 9 12 "
+"11 15 13 14 17 13 15 11 20 17 14 20 14 16 19 20 16 21 17 20 17 "
+"21 18 22 23 24 22 18 21 23 22 21 25 26 24 25 24 23 29 27 26 29 "
+"26 25 27 31 28 31 27 29 32 28 31 28 33 30 33 34 30 33 28 32 "
+;
+
+char *VTK_VECTOR_TEXT_126 = (char *) "25 0.971429 "
+"0.73714 0.34462 0.20759 0.35143 0.21143 0.34662 0.81143 0.34723 0.66857 0.35756 "
+"0.86857 0.36135 0.25143 0.38115 0.90857 0.38086 0.52000 0.41580 0.32571 0.42723 "
+"0.97140 0.43143 0.37143 0.43866 0.42286 0.44093 0.79429 0.49009 0.21028 0.50000 "
+"0.72571 0.49681 0.86286 0.50930 0.25714 0.54115 0.92571 0.54759 0.32571 0.57470 "
+"0.50286 0.57621 0.96571 0.58154 0.97143 0.58073 0.38857 0.58680 0.44000 0.58723 23 1 17 14 8 4 15 13 5 7 6 1 2 5 "
+"13 3 1 6 17 3 13 0 16 10 18 15 4 0 13 7 16 15 0 13 8 "
+"20 12 12 20 11 9 17 6 10 16 7 17 9 19 22 21 18 11 20 24 11 "
+"19 9 20 8 15 11 24 23 22 18 10 11 23 19 "
+;
+
+
+// Construct object with no string set and backing enabled.
+VTKViewer_VectorText::VTKViewer_VectorText()
+{
+  this->Text = NULL;
+
+  this->Letters[33] = VTK_VECTOR_TEXT_33;
+  this->Letters[34] = VTK_VECTOR_TEXT_34;
+  this->Letters[35] = VTK_VECTOR_TEXT_35;
+  this->Letters[36] = VTK_VECTOR_TEXT_36;
+  this->Letters[37] = VTK_VECTOR_TEXT_37;
+  this->Letters[38] = VTK_VECTOR_TEXT_38;
+  this->Letters[39] = VTK_VECTOR_TEXT_39;
+  this->Letters[40] = VTK_VECTOR_TEXT_40;
+  this->Letters[41] = VTK_VECTOR_TEXT_41;
+  this->Letters[42] = VTK_VECTOR_TEXT_42;
+  this->Letters[43] = VTK_VECTOR_TEXT_43;
+  this->Letters[44] = VTK_VECTOR_TEXT_44;
+  this->Letters[45] = VTK_VECTOR_TEXT_45;
+  this->Letters[46] = VTK_VECTOR_TEXT_46;
+  this->Letters[47] = VTK_VECTOR_TEXT_47;
+  this->Letters[48] = VTK_VECTOR_TEXT_48;
+  this->Letters[49] = VTK_VECTOR_TEXT_49;
+  this->Letters[50] = VTK_VECTOR_TEXT_50;
+  this->Letters[51] = VTK_VECTOR_TEXT_51;
+  this->Letters[52] = VTK_VECTOR_TEXT_52;
+  this->Letters[53] = VTK_VECTOR_TEXT_53;
+  this->Letters[54] = VTK_VECTOR_TEXT_54;
+  this->Letters[55] = VTK_VECTOR_TEXT_55;
+  this->Letters[56] = VTK_VECTOR_TEXT_56;
+  this->Letters[57] = VTK_VECTOR_TEXT_57;
+  this->Letters[58] = VTK_VECTOR_TEXT_58;
+  this->Letters[59] = VTK_VECTOR_TEXT_59;
+  this->Letters[60] = VTK_VECTOR_TEXT_60;
+  this->Letters[61] = VTK_VECTOR_TEXT_61;
+  this->Letters[62] = VTK_VECTOR_TEXT_62;
+  this->Letters[63] = VTK_VECTOR_TEXT_63;
+  this->Letters[64] = VTK_VECTOR_TEXT_64;
+  this->Letters[65] = VTK_VECTOR_TEXT_65;
+  this->Letters[66] = VTK_VECTOR_TEXT_66;
+  this->Letters[67] = VTK_VECTOR_TEXT_67;
+  this->Letters[68] = VTK_VECTOR_TEXT_68;
+  this->Letters[69] = VTK_VECTOR_TEXT_69;
+  this->Letters[70] = VTK_VECTOR_TEXT_70;
+  this->Letters[71] = VTK_VECTOR_TEXT_71;
+  this->Letters[72] = VTK_VECTOR_TEXT_72;
+  this->Letters[73] = VTK_VECTOR_TEXT_73;
+  this->Letters[74] = VTK_VECTOR_TEXT_74;
+  this->Letters[75] = VTK_VECTOR_TEXT_75;
+  this->Letters[76] = VTK_VECTOR_TEXT_76;
+  this->Letters[77] = VTK_VECTOR_TEXT_77;
+  this->Letters[78] = VTK_VECTOR_TEXT_78;
+  this->Letters[79] = VTK_VECTOR_TEXT_79;
+  this->Letters[80] = VTK_VECTOR_TEXT_80;
+  this->Letters[81] = VTK_VECTOR_TEXT_81;
+  this->Letters[82] = VTK_VECTOR_TEXT_82;
+  this->Letters[83] = VTK_VECTOR_TEXT_83;
+  this->Letters[84] = VTK_VECTOR_TEXT_84;
+  this->Letters[85] = VTK_VECTOR_TEXT_85;
+  this->Letters[86] = VTK_VECTOR_TEXT_86;
+  this->Letters[87] = VTK_VECTOR_TEXT_87;
+  this->Letters[88] = VTK_VECTOR_TEXT_88;
+  this->Letters[89] = VTK_VECTOR_TEXT_89;
+  this->Letters[90] = VTK_VECTOR_TEXT_90;
+  this->Letters[91] = VTK_VECTOR_TEXT_91;
+  this->Letters[92] = VTK_VECTOR_TEXT_92;
+  this->Letters[93] = VTK_VECTOR_TEXT_93;
+  this->Letters[94] = VTK_VECTOR_TEXT_94;
+  this->Letters[95] = VTK_VECTOR_TEXT_95;
+  this->Letters[96] = VTK_VECTOR_TEXT_96;
+  this->Letters[97] = VTK_VECTOR_TEXT_97;
+  this->Letters[98] = VTK_VECTOR_TEXT_98;
+  this->Letters[99] = VTK_VECTOR_TEXT_99;
+  this->Letters[100] = VTK_VECTOR_TEXT_100;
+  this->Letters[101] = VTK_VECTOR_TEXT_101;
+  this->Letters[102] = VTK_VECTOR_TEXT_102;
+  this->Letters[103] = VTK_VECTOR_TEXT_103;
+  this->Letters[104] = VTK_VECTOR_TEXT_104;
+  this->Letters[105] = VTK_VECTOR_TEXT_105;
+  this->Letters[106] = VTK_VECTOR_TEXT_106;
+  this->Letters[107] = VTK_VECTOR_TEXT_107;
+  this->Letters[108] = VTK_VECTOR_TEXT_108;
+  this->Letters[109] = VTK_VECTOR_TEXT_109;
+  this->Letters[110] = VTK_VECTOR_TEXT_110;
+  this->Letters[111] = VTK_VECTOR_TEXT_111;
+  this->Letters[112] = VTK_VECTOR_TEXT_112;
+  this->Letters[113] = VTK_VECTOR_TEXT_113;
+  this->Letters[114] = VTK_VECTOR_TEXT_114;
+  this->Letters[115] = VTK_VECTOR_TEXT_115;
+  this->Letters[116] = VTK_VECTOR_TEXT_116;
+  this->Letters[117] = VTK_VECTOR_TEXT_117;
+  this->Letters[118] = VTK_VECTOR_TEXT_118;
+  this->Letters[119] = VTK_VECTOR_TEXT_119;
+  this->Letters[120] = VTK_VECTOR_TEXT_120;
+  this->Letters[121] = VTK_VECTOR_TEXT_121;
+  this->Letters[122] = VTK_VECTOR_TEXT_122;
+  this->Letters[123] = VTK_VECTOR_TEXT_123;
+  this->Letters[124] = VTK_VECTOR_TEXT_124;
+  this->Letters[125] = VTK_VECTOR_TEXT_125;
+  this->Letters[126] = VTK_VECTOR_TEXT_126;
+  
+}
+
+void VTKViewer_VectorText::Execute()
+{
+  vtkPolyData *output = this->GetOutput();
+  vtkPoints *newPoints;
+  vtkCellArray *newPolys;
+  int ptOffset = 0;
+  int aPoint, i;
+  int pos = 0;
+  float xpos = 0;
+  float ypos = 0;
+  int ptCount, triCount;
+  char *aLetter;
+  float width;
+  float ftmp[3];
+  
+  if (this->Text == NULL)
+    {
+    vtkErrorMacro (<< "Text is not set!");
+    return;
+    }
+
+  // Set things up; allocate memory
+  newPoints = vtkPoints::New();
+  newPolys = vtkCellArray::New();
+  ftmp[2] = 0.0;
+  
+  // Create Text
+  while (this->Text[pos])
+    {
+    switch (this->Text[pos])
+      {
+      case 32: 
+        xpos += 0.4;
+        break;
+        
+      case 10:
+        ypos -= 1.4;
+        xpos = 0;
+        break;
+        
+      default:
+        // if we have a valid character
+        if ((this->Text[pos] > 32)&&(this->Text[pos] < 127))
+          {
+          // add the result to our output
+          aLetter = this->Letters[this->Text[pos]];
+          ptCount = strtol(aLetter,&aLetter,10);
+          width = strtod(aLetter,&aLetter);
+          for (i = 0; i < ptCount; i++)
+            {
+            ftmp[0] = strtod(aLetter,&aLetter);
+            ftmp[1] = strtod(aLetter,&aLetter);
+            ftmp[0] += xpos;
+            ftmp[1] += ypos;
+            newPoints->InsertNextPoint(ftmp);
+            }
+          triCount = strtol(aLetter,&aLetter,10);
+          for (i = 0; i < triCount; i++)
+            {
+            newPolys->InsertNextCell(3);
+            aPoint = strtol(aLetter,&aLetter,10); 
+            newPolys->InsertCellPoint(aPoint + ptOffset);
+            aPoint = strtol(aLetter,&aLetter,10); 
+            newPolys->InsertCellPoint(aPoint + ptOffset);
+            aPoint = strtol(aLetter,&aLetter,10); 
+            newPolys->InsertCellPoint(aPoint + ptOffset);
+            }
+          ptOffset += ptCount;
+          xpos += width;
+          }
+        break;
+      }
+    pos++;
+    }
+  
+  //
+  // Update ourselves and release memory
+  //
+  output->SetPoints(newPoints);
+  newPoints->Delete();
+  
+  output->SetPolys(newPolys);
+  newPolys->Delete();
+}
+  
+void VTKViewer_VectorText::PrintSelf(ostream& os, vtkIndent indent)
+{
+  this->Superclass::PrintSelf(os,indent);
+
+  os << indent << "Text: " << (this->Text ? this->Text : "(none)") << "\n";
+}
+
+VTKViewer_VectorText::~VTKViewer_VectorText()
+{
+  if (this->Text)
+    {
+    delete [] this->Text;
+    }
+}
diff --git a/src/VTKViewer/VTKViewer_VectorText.h b/src/VTKViewer/VTKViewer_VectorText.h
new file mode 100644 (file)
index 0000000..660257a
--- /dev/null
@@ -0,0 +1,67 @@
+/*=========================================================================
+
+  Program:   Visualization Toolkit
+  Module:    $RCSfile$
+  Language:  C++
+  Date:      $Date$
+  Version:   $Revision$
+
+  Copyright (c) 1993-2002 Ken Martin, Will Schroeder, Bill Lorensen 
+  All rights reserved.
+  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
+
+     This software is distributed WITHOUT ANY WARRANTY; without even 
+     the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
+     PURPOSE.  See the above copyright notice for more information.
+
+=========================================================================*/
+// .NAME vtkVectorText - create polygonal text
+// .SECTION Description
+
+// vtkVectorText generates vtkPolyData from an input text string. Besides the
+// ASCII alphanumeric characters a-z, A-Z, 0-9, vtkVectorText also supports
+// ASCII punctuation marks. (The supported ASCII character set are the codes
+// (33-126) inclusive.) The only control character supported is the line feed
+// character "\n", which advances to a new line.
+//
+// To use thie class, you normally couple it with a vtkPolyDataMapper and a
+// vtkActor. In this case you would use the vtkActor's transformation methods
+// to position, orient, and scale the text. You may also wish to use a
+// vtkFollower to orient the text so that it always faces the camera.
+
+// .SECTION See Also
+// vtkTextMapper vtkCaptionActor2D
+
+// VTKViewer_VectorText.h is a copy of vtkVectorText.h file.
+// Purpose of copying: to remove linking to libHybrid.so VTK library 
+
+#ifndef __VTKViewer_VectorText_h
+#define __VTKViewer_VectorText_h
+
+#include "vtkPolyDataSource.h"
+
+class VTKViewer_VectorText : public vtkPolyDataSource 
+{
+public:
+  static VTKViewer_VectorText *New();
+  vtkTypeRevisionMacro(VTKViewer_VectorText,vtkPolyDataSource);
+  void PrintSelf(ostream& os, vtkIndent indent);
+
+  // Description:
+  // Set/Get the text to be drawn.
+  vtkSetStringMacro(Text);
+  vtkGetStringMacro(Text);
+
+protected:
+  VTKViewer_VectorText();
+  ~VTKViewer_VectorText();
+
+  void Execute();
+  char *Text;
+  char *Letters[127];
+
+};
+
+#endif
+
+
index ae35016b9deb87044fd24857003be06a02a6473b..b54107cd51a135e34e560f9f8579df89af503a09 100644 (file)
 //  Module : SALOME
 //  $Header$
 
-using namespace std;
 #include "VTKViewer_ViewFrame.h"
 #include "VTKViewer_RenderWindow.h"
-//#include "VTKViewer_InteractorStyleSALOME.h"
+
+#include "SALOME_Transform.h"
+#include "SALOME_TransformFilter.h"
+#include "SALOME_PassThroughFilter.h"
+#include "SALOME_GeometryFilter.h"
 
 #include "QAD_Settings.h"
 #include "QAD_Config.h"
@@ -38,6 +41,7 @@ using namespace std;
 #include "SALOME_Selection.h"
 #include "SALOME_InteractiveObject.hxx"
 #include "VTKViewer_InteractorStyleSALOME.h"
+#include "VTKViewer_VectorText.h"
 
 #include "utilities.h"
 
@@ -50,21 +54,14 @@ using namespace std;
 // VTK Includes
 #include <vtkActor.h>
 #include <vtkRenderer.h>
-#include <vtkTransform.h>
 #include <vtkPolyDataMapper.h> 
 
 #include <vtkMath.h>
-#include <vtkTextSource.h>
 #include <vtkLine.h>
 #include <vtkConeSource.h>
-#include <vtkTextMapper.h>
-#include <vtkMapper2D.h>
-#include <vtkActor2D.h>
-#include <vtkWindowToImageFilter.h>
-#include <vtkTIFFWriter.h>
-#include <vtkVectorText.h>
 #include <vtkFollower.h>
 
+using namespace std;
 /*!
     Constructor
 */
@@ -81,13 +78,13 @@ VTKViewer_ViewFrame::VTKViewer_ViewFrame(QWidget* parent, const char* name)
 
 
 vtkFollower* CreateTextActor(char *text, float aSize) {
-  vtkVectorText* aTxt = vtkVectorText::New();
+  VTKViewer_VectorText* aTxt = VTKViewer_VectorText::New();
   aTxt->SetText(text);
   vtkPolyDataMapper* textMapper = vtkPolyDataMapper::New();
   textMapper->SetInput(aTxt->GetOutput());
   vtkFollower* textActor = vtkFollower::New();
   textActor->SetMapper(textMapper);
-  float aScale = 6 * aSize/100;
+  float aScale = 17 * aSize/100;
   textActor->SetScale(aScale, aScale, aScale);
   return textActor;
 }
@@ -258,6 +255,7 @@ void VTKViewer_ViewFrame::InitialSetup() {
 
   m_Renderer->GetActiveCamera()->ParallelProjectionOn();
   m_Renderer->LightFollowCameraOn();
+  m_Renderer->TwoSidedLightingOn();
 
   // Set BackgroundColor
   QString BgrColorRed   = QAD_CONFIG->getSetting("VTKViewer:BackgroundColorRed");
@@ -426,7 +424,38 @@ void VTKViewer_ViewFrame::onViewReset()
   camera->SetFocalPoint(0,0,0);
   camera->SetViewUp(0,0,1);
   m_Renderer->ResetCamera();  
+  
+  double aOldScale = camera->GetParallelScale();
   camera->SetParallelScale(500);
+  double aNewScale = camera->GetParallelScale();
+  
+  //for controlling labels scale after reset
+  float dim;
+  QString Size = QAD_CONFIG->getSetting("Viewer:TrihedronSize");
+  if( Size.isEmpty() ){
+    dim = 100;
+  } else {
+    dim = Size.toFloat();
+  }
+  float aScale = 17 * dim/100;
+
+  m_Triedron->InitTraversal();
+  vtkActor *ac = m_Triedron->GetNextActor();
+  bool IsConeActor = true;
+  while(!(ac==NULL)) {
+    if(ac->IsA("vtkFollower")) {
+      ac->SetScale(aScale, aScale, aScale);
+      IsConeActor = true;
+    }
+    else {
+      if (IsConeActor) {
+       //coneActor is the first in the list (see m_Triedron->AddItem(...) in VTKViewer_ViewFrame::AddVector(...))
+       IsConeActor = false;
+      } 
+    }
+    ac = m_Triedron->GetNextActor();
+  }
+
   m_Renderer->ResetCameraClippingRange();
   m_RW->update();
 }
@@ -572,7 +601,7 @@ static void ResetCameraClippingRange(vtkRenderer* theRenderer, float bounds[6] )
   anActiveCamera->SetClippingRange( range );
 }
 
-static void ResetCamera(vtkRenderer* theRenderer){  
+static void ResetCamera(vtkRenderer* theRenderer, vtkActorCollection* theTriedron, VTKViewer_RenderWindowInteractor* theRWInteractor){  
   //see vtkRenderer::ResetCamera(float bounds[6]) method
   float      bounds[6];
   if(!theRenderer) return;
@@ -582,6 +611,7 @@ static void ResetCamera(vtkRenderer* theRenderer){
   float distance;
   float width;
   double vn[3], *vup;
+  int* winsize;
   
   if ( theRenderer->GetActiveCamera() != NULL )
     {
@@ -601,6 +631,10 @@ static void ResetCamera(vtkRenderer* theRenderer){
               (bounds[5]-bounds[4])*(bounds[5]-bounds[4]));
   double ang = theRenderer->GetActiveCamera()->GetViewAngle();
   distance = 2.0*width/tan(ang*vtkMath::Pi()/360.0);
+  
+  // find size of the window
+  winsize = theRenderer->GetSize();
+  
   // check view-up vector against view plane normal
   vup = theRenderer->GetActiveCamera()->GetViewUp();
   if ( fabs(vtkMath::Dot(vup,vn)) > 0.999 )
@@ -611,11 +645,25 @@ static void ResetCamera(vtkRenderer* theRenderer){
 
   // update the camera
   theRenderer->GetActiveCamera()->SetFocalPoint(center[0],center[1],center[2]);
- theRenderer->GetActiveCamera()->SetPosition(center[0]+distance*vn[0],
 theRenderer->GetActiveCamera()->SetPosition(center[0]+distance*vn[0],
                                   center[1]+distance*vn[1],
                                   center[2]+distance*vn[2]);
   // setup default parallel scale
+  double aOldScale = theRenderer->GetActiveCamera()->GetParallelScale();
+  
+  if(winsize[0]<winsize[1] )
+    width=width*(float(winsize[1])/float(winsize[0]));
+  
   theRenderer->GetActiveCamera()->SetParallelScale(width/2.0);
+  double aNewScale = theRenderer->GetActiveCamera()->GetParallelScale();
+  
+  // for controlling label size 
+  VTKViewer_InteractorStyleSALOME* Style = 0;
+  if (theRWInteractor->GetInteractorStyle()->IsA("VTKViewer_InteractorStyleSALOME")) {
+    Style = VTKViewer_InteractorStyleSALOME::SafeDownCast(theRWInteractor->GetInteractorStyle());
+    Style->ControlLblSize(aOldScale,aNewScale);
+  }
   //workaround on VTK
   //theRenderer->ResetCameraClippingRange(bounds);
   ResetCameraClippingRange(theRenderer,bounds);
@@ -634,8 +682,9 @@ void VTKViewer_ViewFrame::onViewFitAll()
     TriedronWasVisible = true;
   }
   bool hasVisibleActors = m_Renderer->VisibleActorCount() > 0;
-  if ( hasVisibleActors )    // if there are visible actors, not to take into account Trihedron
-    ResetCamera(m_Renderer); 
+  if ( hasVisibleActors ) {   // if there are visible actors, not to take into account Trihedron
+    ResetCamera(m_Renderer,m_Triedron,m_RWInteractor);
+  } 
   if(TriedronWasVisible) {
     m_Triedron->InitTraversal();
     vtkActor *ac = m_Triedron->GetNextActor();
@@ -643,8 +692,9 @@ void VTKViewer_ViewFrame::onViewFitAll()
       ac->VisibilityOn();
       ac = m_Triedron->GetNextActor();
     }
-    if ( !hasVisibleActors ) // if there are NO visible actors, fit view to see only Trihedron
-      ResetCamera(m_Renderer); 
+    if ( !hasVisibleActors ) { // if there are NO visible actors, fit view to see only Trihedron
+      ResetCamera(m_Renderer,m_Triedron,m_RWInteractor);
+    } 
   }
   //m_Renderer->ResetCameraClippingRange();
   m_RW->update();
@@ -930,6 +980,11 @@ void VTKViewer_ViewFrame::GetScale(double theScale[3]){
 void VTKViewer_ViewFrame::SetScale(double theScale[3]){
   m_Transform->SetScale(theScale[0], theScale[1], theScale[2]);
   m_Transform->Modified();
+  vtkActorCollection* theActors = m_Renderer->GetActors();
+  theActors->InitTraversal();
+  vtkActor *anActor;
+  while(anActor = theActors->GetNextActor())
+    anActor->GetMapper()->Update();
   Repaint();
 }